@alfresco/adf-process-services-cloud 8.1.0-15070800207 → 8.1.0-15113180840

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 (173) hide show
  1. package/fesm2022/adf-process-services-cloud.mjs +347 -348
  2. package/fesm2022/adf-process-services-cloud.mjs.map +1 -1
  3. package/lib/form/components/form-cloud.component.scss +2 -9
  4. package/lib/task/task-filters/components/base-task-filters-cloud.component.d.ts +1 -1
  5. package/lib/task/task-filters/components/edit-task-filters/base-edit-task-filter-cloud.component.d.ts +1 -1
  6. package/lib/task/task-list/components/base-task-list-cloud.component.d.ts +1 -1
  7. package/package.json +4 -6
  8. package/esm2022/adf-process-services-cloud.mjs +0 -5
  9. package/esm2022/lib/app/app-list-cloud.module.mjs +0 -20
  10. package/esm2022/lib/app/components/app-details-cloud/app-details-cloud.component.mjs +0 -67
  11. package/esm2022/lib/app/components/app-list-cloud/app-list-cloud.component.mjs +0 -126
  12. package/esm2022/lib/app/models/application-instance.model.mjs +0 -24
  13. package/esm2022/lib/app/public-api.mjs +0 -22
  14. package/esm2022/lib/app/services/apps-process-cloud.service.mjs +0 -97
  15. package/esm2022/lib/common/date-range-filter/date-range-filter.component.mjs +0 -164
  16. package/esm2022/lib/common/date-range-filter/date-range-filter.service.mjs +0 -97
  17. package/esm2022/lib/common/index.mjs +0 -18
  18. package/esm2022/lib/common/interface/environment.interface.mjs +0 -18
  19. package/esm2022/lib/common/interface/index.mjs +0 -18
  20. package/esm2022/lib/common/interface/public-api.mjs +0 -18
  21. package/esm2022/lib/common/public-api.mjs +0 -19
  22. package/esm2022/lib/form/components/cloud-form-rendering.service.mjs +0 -57
  23. package/esm2022/lib/form/components/form-cloud-custom-outcomes.component.mjs +0 -31
  24. package/esm2022/lib/form/components/form-cloud.component.mjs +0 -416
  25. package/esm2022/lib/form/components/form-definition-selector-cloud.component.mjs +0 -54
  26. package/esm2022/lib/form/components/spinner/form-spinner.component.mjs +0 -36
  27. package/esm2022/lib/form/components/widgets/attach-file/attach-file-cloud-widget.component.mjs +0 -250
  28. package/esm2022/lib/form/components/widgets/attach-file/file-properties-table/file-properties-table-cloud.component.mjs +0 -137
  29. package/esm2022/lib/form/components/widgets/data-table/data-table-adapter.widget.mjs +0 -107
  30. package/esm2022/lib/form/components/widgets/data-table/data-table.widget.mjs +0 -121
  31. package/esm2022/lib/form/components/widgets/data-table/helpers/data-table-path-parser.helper.mjs +0 -122
  32. package/esm2022/lib/form/components/widgets/date/date-cloud.widget.mjs +0 -190
  33. package/esm2022/lib/form/components/widgets/display-external-property/display-external-property.widget.mjs +0 -86
  34. package/esm2022/lib/form/components/widgets/display-rich-text/display-rich-text.widget.mjs +0 -80
  35. package/esm2022/lib/form/components/widgets/dropdown/dropdown-cloud.widget.mjs +0 -464
  36. package/esm2022/lib/form/components/widgets/dropdown/validators.mjs +0 -29
  37. package/esm2022/lib/form/components/widgets/file-viewer/file-viewer.widget.mjs +0 -47
  38. package/esm2022/lib/form/components/widgets/group/group-cloud.widget.mjs +0 -83
  39. package/esm2022/lib/form/components/widgets/people/people-cloud.widget.mjs +0 -91
  40. package/esm2022/lib/form/components/widgets/properties-viewer/properties-viewer-wrapper/properties-viewer-wrapper.component.mjs +0 -81
  41. package/esm2022/lib/form/components/widgets/properties-viewer/properties-viewer.widget.mjs +0 -54
  42. package/esm2022/lib/form/components/widgets/radio-buttons/radio-buttons-cloud.schema.mjs +0 -86
  43. package/esm2022/lib/form/components/widgets/radio-buttons/radio-buttons-cloud.widget.mjs +0 -117
  44. package/esm2022/lib/form/components/widgets/upload/upload-cloud.widget.mjs +0 -188
  45. package/esm2022/lib/form/form-cloud.module.mjs +0 -103
  46. package/esm2022/lib/form/models/form-cloud-representation.model.mjs +0 -48
  47. package/esm2022/lib/form/models/task-variable-cloud.model.mjs +0 -28
  48. package/esm2022/lib/form/public-api.mjs +0 -44
  49. package/esm2022/lib/form/services/content-cloud-node-selector.service.mjs +0 -120
  50. package/esm2022/lib/form/services/display-mode.service.mjs +0 -146
  51. package/esm2022/lib/form/services/form-cloud.service.interface.mjs +0 -18
  52. package/esm2022/lib/form/services/form-cloud.service.mjs +0 -201
  53. package/esm2022/lib/form/services/form-definition-selector-cloud.service.interface.mjs +0 -18
  54. package/esm2022/lib/form/services/form-definition-selector-cloud.service.mjs +0 -51
  55. package/esm2022/lib/form/services/form-utils.service.mjs +0 -37
  56. package/esm2022/lib/form/services/process-cloud-content.service.mjs +0 -71
  57. package/esm2022/lib/form/services/spinner/form-cloud-spinner.service.mjs +0 -52
  58. package/esm2022/lib/group/components/group-cloud.component.mjs +0 -422
  59. package/esm2022/lib/group/group-cloud.module.mjs +0 -33
  60. package/esm2022/lib/group/models/identity-group.model.mjs +0 -18
  61. package/esm2022/lib/group/public-api.mjs +0 -21
  62. package/esm2022/lib/group/services/identity-group.service.mjs +0 -89
  63. package/esm2022/lib/models/application-version.model.mjs +0 -21
  64. package/esm2022/lib/models/constant-values.type.mjs +0 -18
  65. package/esm2022/lib/models/data-column-custom-data.mjs +0 -18
  66. package/esm2022/lib/models/date-cloud-filter.model.mjs +0 -31
  67. package/esm2022/lib/models/date-format-cloud.model.mjs +0 -18
  68. package/esm2022/lib/models/engine-event-cloud.model.mjs +0 -18
  69. package/esm2022/lib/models/filter-cloud-model.mjs +0 -128
  70. package/esm2022/lib/models/process-definition-cloud.model.mjs +0 -32
  71. package/esm2022/lib/models/process-instance-variable.model.mjs +0 -18
  72. package/esm2022/lib/models/process-variable-filter.model.mjs +0 -18
  73. package/esm2022/lib/models/task-cloud.model.mjs +0 -23
  74. package/esm2022/lib/models/task-list-sorting.model.mjs +0 -40
  75. package/esm2022/lib/models/variable-definition.mjs +0 -18
  76. package/esm2022/lib/people/components/people-cloud.component.mjs +0 -497
  77. package/esm2022/lib/people/models/identity-user.model.mjs +0 -18
  78. package/esm2022/lib/people/people-cloud.module.mjs +0 -33
  79. package/esm2022/lib/people/public-api.mjs +0 -21
  80. package/esm2022/lib/people/services/identity-user.service.mjs +0 -119
  81. package/esm2022/lib/process/process-cloud.module.mjs +0 -40
  82. package/esm2022/lib/process/process-filters/components/edit-process-filter/edit-process-filter-cloud.component.mjs +0 -802
  83. package/esm2022/lib/process/process-filters/components/process-filter-dialog/process-filter-dialog-cloud.component.mjs +0 -59
  84. package/esm2022/lib/process/process-filters/components/process-filters/process-filters-cloud.component.mjs +0 -290
  85. package/esm2022/lib/process/process-filters/models/process-filter-cloud.model.mjs +0 -169
  86. package/esm2022/lib/process/process-filters/process-filters-cloud.module.mjs +0 -44
  87. package/esm2022/lib/process/process-filters/public-api.mjs +0 -23
  88. package/esm2022/lib/process/process-filters/services/process-filter-cloud.service.mjs +0 -405
  89. package/esm2022/lib/process/process-header/components/process-header-cloud.component.mjs +0 -137
  90. package/esm2022/lib/process/process-header/process-header-cloud.module.mjs +0 -33
  91. package/esm2022/lib/process/process-header/public-api.mjs +0 -19
  92. package/esm2022/lib/process/process-list/components/process-list-cloud.component.mjs +0 -594
  93. package/esm2022/lib/process/process-list/datatable/process-list-datatable-adapter.mjs +0 -31
  94. package/esm2022/lib/process/process-list/models/perocess-instance-cloud-view.model.mjs +0 -18
  95. package/esm2022/lib/process/process-list/models/process-cloud-preferences.mjs +0 -24
  96. package/esm2022/lib/process/process-list/models/process-cloud-preset.model.mjs +0 -37
  97. package/esm2022/lib/process/process-list/models/process-cloud-query-request.model.mjs +0 -107
  98. package/esm2022/lib/process/process-list/models/process-list-sorting.model.mjs +0 -40
  99. package/esm2022/lib/process/process-list/process-list-cloud.module.mjs +0 -45
  100. package/esm2022/lib/process/process-list/public-api.mjs +0 -25
  101. package/esm2022/lib/process/process-list/services/process-list-cloud.service.mjs +0 -253
  102. package/esm2022/lib/process/process-list/services/process-task-list-cloud.service.mjs +0 -109
  103. package/esm2022/lib/process/public-api.mjs +0 -23
  104. package/esm2022/lib/process/services/process-cloud.service.mjs +0 -105
  105. package/esm2022/lib/process/start-process/components/start-process-cloud.component.mjs +0 -479
  106. package/esm2022/lib/process/start-process/models/process-instance-cloud.model.mjs +0 -18
  107. package/esm2022/lib/process/start-process/models/process-payload-cloud.model.mjs +0 -26
  108. package/esm2022/lib/process/start-process/models/process-with-form-payload-cloud.model.mjs +0 -26
  109. package/esm2022/lib/process/start-process/public-api.mjs +0 -21
  110. package/esm2022/lib/process/start-process/services/start-process-cloud.service.mjs +0 -125
  111. package/esm2022/lib/process-services-cloud.module.mjs +0 -91
  112. package/esm2022/lib/rich-text-editor/editorjs-config.mjs +0 -101
  113. package/esm2022/lib/rich-text-editor/index.mjs +0 -18
  114. package/esm2022/lib/rich-text-editor/public-api.mjs +0 -19
  115. package/esm2022/lib/rich-text-editor/rich-text-editor.component.mjs +0 -80
  116. package/esm2022/lib/rich-text-editor/rich-text-editor.module.mjs +0 -33
  117. package/esm2022/lib/screen/components/screen-cloud/screen-cloud.component.mjs +0 -161
  118. package/esm2022/lib/screen/models/screen-cloud.model.mjs +0 -18
  119. package/esm2022/lib/screen/public-api.mjs +0 -18
  120. package/esm2022/lib/services/base-cloud.service.mjs +0 -83
  121. package/esm2022/lib/services/cloud-token.service.mjs +0 -23
  122. package/esm2022/lib/services/form-fields.interfaces.mjs +0 -55
  123. package/esm2022/lib/services/local-preference-cloud.service.mjs +0 -122
  124. package/esm2022/lib/services/notification-cloud.service.mjs +0 -45
  125. package/esm2022/lib/services/preference-cloud.interface.mjs +0 -18
  126. package/esm2022/lib/services/public-api.mjs +0 -28
  127. package/esm2022/lib/services/screen-rendering.service.mjs +0 -30
  128. package/esm2022/lib/services/task-list-cloud.service.interface.mjs +0 -18
  129. package/esm2022/lib/services/user-preference-cloud.service.mjs +0 -105
  130. package/esm2022/lib/services/variable-mapper.sevice.mjs +0 -77
  131. package/esm2022/lib/services/web-socket.service.mjs +0 -146
  132. package/esm2022/lib/task/models/start-task-cloud-request.model.mjs +0 -32
  133. package/esm2022/lib/task/models/task-details-cloud.model.mjs +0 -26
  134. package/esm2022/lib/task/models/task.model.mjs +0 -23
  135. package/esm2022/lib/task/public-api.mjs +0 -26
  136. package/esm2022/lib/task/services/task-cloud.service.mjs +0 -272
  137. package/esm2022/lib/task/task-cloud.module.mjs +0 -45
  138. package/esm2022/lib/task/task-filters/components/base-task-filters-cloud.component.mjs +0 -59
  139. package/esm2022/lib/task/task-filters/components/edit-task-filters/base-edit-task-filter-cloud.component.mjs +0 -467
  140. package/esm2022/lib/task/task-filters/components/edit-task-filters/edit-service-task-filter/edit-service-task-filter-cloud.component.mjs +0 -206
  141. package/esm2022/lib/task/task-filters/components/edit-task-filters/edit-task-filter/edit-task-filter-cloud.component.mjs +0 -318
  142. package/esm2022/lib/task/task-filters/components/service-task-filters/service-task-filters-cloud.component.mjs +0 -147
  143. package/esm2022/lib/task/task-filters/components/task-assignment-filter/task-assignment-filter.component.mjs +0 -143
  144. package/esm2022/lib/task/task-filters/components/task-filter-dialog/task-filter-dialog-cloud.component.mjs +0 -73
  145. package/esm2022/lib/task/task-filters/components/task-filters/task-filters-cloud.component.mjs +0 -256
  146. package/esm2022/lib/task/task-filters/models/filter-cloud.model.mjs +0 -207
  147. package/esm2022/lib/task/task-filters/public-api.mjs +0 -27
  148. package/esm2022/lib/task/task-filters/services/service-task-filter-cloud.service.mjs +0 -283
  149. package/esm2022/lib/task/task-filters/services/task-filter-cloud.service.mjs +0 -392
  150. package/esm2022/lib/task/task-filters/task-filters-cloud.module.mjs +0 -56
  151. package/esm2022/lib/task/task-form/components/task-form-cloud/task-form-cloud.component.mjs +0 -214
  152. package/esm2022/lib/task/task-form/components/user-task-cloud/complete-task/complete-task.directive.mjs +0 -89
  153. package/esm2022/lib/task/task-form/components/user-task-cloud/user-task-cloud.component.mjs +0 -284
  154. package/esm2022/lib/task/task-form/components/user-task-cloud-buttons/claim-task/claim-task-cloud.directive.mjs +0 -101
  155. package/esm2022/lib/task/task-form/components/user-task-cloud-buttons/unclaim-task/unclaim-task-cloud.directive.mjs +0 -87
  156. package/esm2022/lib/task/task-form/components/user-task-cloud-buttons/user-task-cloud-buttons.component.mjs +0 -79
  157. package/esm2022/lib/task/task-form/public-api.mjs +0 -21
  158. package/esm2022/lib/task/task-form/task-form.module.mjs +0 -36
  159. package/esm2022/lib/task/task-header/components/task-header-cloud.component.mjs +0 -280
  160. package/esm2022/lib/task/task-header/public-api.mjs +0 -19
  161. package/esm2022/lib/task/task-header/task-header-cloud.module.mjs +0 -33
  162. package/esm2022/lib/task/task-list/components/base-task-list-cloud.component.mjs +0 -331
  163. package/esm2022/lib/task/task-list/components/service-task-list/service-task-list-cloud.component.mjs +0 -116
  164. package/esm2022/lib/task/task-list/components/task-list/datatable/task-list-datatable-adapter.mjs +0 -31
  165. package/esm2022/lib/task/task-list/components/task-list/task-list-cloud.component.mjs +0 -390
  166. package/esm2022/lib/task/task-list/models/service-task-cloud.model.mjs +0 -18
  167. package/esm2022/lib/task/task-list/models/task-cloud-view.model.mjs +0 -18
  168. package/esm2022/lib/task/task-list/public-api.mjs +0 -23
  169. package/esm2022/lib/task/task-list/services/service-task-list-cloud.service.mjs +0 -115
  170. package/esm2022/lib/task/task-list/services/task-list-cloud.service.mjs +0 -178
  171. package/esm2022/lib/task/task-list/task-list-cloud.module.mjs +0 -57
  172. package/esm2022/lib/types.mjs +0 -18
  173. package/esm2022/public-api.mjs +0 -40
@@ -1,318 +0,0 @@
1
- /*!
2
- * @license
3
- * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
4
- *
5
- * Licensed under the Apache License, Version 2.0 (the "License");
6
- * you may not use this file except in compliance with the License.
7
- * You may obtain a copy of the License at
8
- *
9
- * http://www.apache.org/licenses/LICENSE-2.0
10
- *
11
- * Unless required by applicable law or agreed to in writing, software
12
- * distributed under the License is distributed on an "AS IS" BASIS,
13
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- * See the License for the specific language governing permissions and
15
- * limitations under the License.
16
- */
17
- import { Component, inject, ViewEncapsulation } from '@angular/core';
18
- import { map } from 'rxjs/operators';
19
- import { TaskFilterCloudModel, TaskStatusFilter } from '../../../models/filter-cloud.model';
20
- import { TaskFilterCloudService } from '../../../services/task-filter-cloud.service';
21
- import { DateCloudFilterType } from '../../../../../models/date-cloud-filter.model';
22
- import { BaseEditTaskFilterCloudComponent } from '../base-edit-task-filter-cloud.component';
23
- import { set } from 'date-fns';
24
- import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
25
- import { CommonModule } from '@angular/common';
26
- import { TranslateModule } from '@ngx-translate/core';
27
- import { MatExpansionModule } from '@angular/material/expansion';
28
- import { MatButtonModule } from '@angular/material/button';
29
- import { IconComponent } from '@alfresco/adf-core';
30
- import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
31
- import { MatFormFieldModule } from '@angular/material/form-field';
32
- import { ReactiveFormsModule } from '@angular/forms';
33
- import { MatSelectModule } from '@angular/material/select';
34
- import { MatInputModule } from '@angular/material/input';
35
- import { MatDatepickerModule } from '@angular/material/datepicker';
36
- import { MatIconModule } from '@angular/material/icon';
37
- import { MatCheckboxModule } from '@angular/material/checkbox';
38
- import { DateRangeFilterComponent } from '../../../../../common/date-range-filter/date-range-filter.component';
39
- import { PeopleCloudComponent } from '../../../../../people/components/people-cloud.component';
40
- import { TaskAssignmentFilterCloudComponent } from '../../task-assignment-filter/task-assignment-filter.component';
41
- import * as i0 from "@angular/core";
42
- import * as i1 from "@angular/common";
43
- import * as i2 from "@ngx-translate/core";
44
- import * as i3 from "@angular/material/expansion";
45
- import * as i4 from "@angular/material/button";
46
- import * as i5 from "@angular/material/progress-spinner";
47
- import * as i6 from "@angular/material/form-field";
48
- import * as i7 from "@angular/forms";
49
- import * as i8 from "@angular/material/select";
50
- import * as i9 from "@angular/material/core";
51
- import * as i10 from "@angular/material/input";
52
- import * as i11 from "@angular/material/datepicker";
53
- import * as i12 from "@angular/material/icon";
54
- import * as i13 from "@angular/material/checkbox";
55
- export class EditTaskFilterCloudComponent extends BaseEditTaskFilterCloudComponent {
56
- constructor() {
57
- super();
58
- this.taskFilterCloudService = inject(TaskFilterCloudService);
59
- }
60
- assignNewFilter(model) {
61
- this.setLastModifiedToFilter(model);
62
- this.changedTaskFilter = new TaskFilterCloudModel(Object.assign({}, this.taskFilter, model));
63
- this.formHasBeenChanged = !this.deepCompare(this.changedTaskFilter, this.taskFilter);
64
- this.filterChange.emit(this.changedTaskFilter);
65
- }
66
- getTaskFilterById(appName, id) {
67
- return this.taskFilterCloudService.getTaskFilterById(appName, id).pipe(map((response) => new TaskFilterCloudModel(response)));
68
- }
69
- createAndFilterProperties() {
70
- const result = super.createAndFilterProperties();
71
- if (this.hasLastModifiedProperty()) {
72
- return [...result, ...this.createLastModifiedProperty()];
73
- }
74
- return result;
75
- }
76
- getDefaultFilterProperties() {
77
- return ['status', 'assignee', 'sort', 'order'];
78
- }
79
- getDefaultSortProperties() {
80
- return ['id', 'name', 'createdDate', 'priority'];
81
- }
82
- setLastModifiedToFilter(formValues) {
83
- if (formValues.lastModifiedTo && Date.parse(formValues.lastModifiedTo.toString())) {
84
- const lastModifiedToFilterValue = set(new Date(formValues.lastModifiedTo), {
85
- hours: 23,
86
- minutes: 59,
87
- seconds: 59
88
- });
89
- formValues.lastModifiedTo = lastModifiedToFilterValue.toISOString();
90
- }
91
- }
92
- updateFilter(filterToUpdate) {
93
- return this.taskFilterCloudService.updateFilter(filterToUpdate);
94
- }
95
- deleteFilter(filterToDelete) {
96
- return this.taskFilterCloudService.deleteFilter(filterToDelete);
97
- }
98
- addFilter(filterToAdd) {
99
- return this.taskFilterCloudService.addFilter(filterToAdd).pipe(takeUntilDestroyed(this.destroyRef));
100
- }
101
- isDisabledForDefaultFilters(action) {
102
- return (this.taskFilterCloudService.isDefaultFilter(this.taskFilter.name) &&
103
- EditTaskFilterCloudComponent.ACTIONS_DISABLED_BY_DEFAULT.includes(action.actionType));
104
- }
105
- restoreDefaultTaskFilters() {
106
- return this.taskFilterCloudService.getTaskListFilters(this.appName);
107
- }
108
- createLastModifiedProperty() {
109
- return [
110
- {
111
- label: 'ADF_CLOUD_EDIT_TASK_FILTER.LABEL.LAST_MODIFIED_FROM',
112
- type: 'date',
113
- key: 'lastModifiedFrom',
114
- value: ''
115
- },
116
- {
117
- label: 'ADF_CLOUD_EDIT_TASK_FILTER.LABEL.LAST_MODIFIED_TO',
118
- type: 'date',
119
- key: 'lastModifiedTo',
120
- value: ''
121
- }
122
- ];
123
- }
124
- getStatusOptions() {
125
- return [
126
- { value: TaskStatusFilter.ALL, label: 'ADF_CLOUD_TASK_FILTERS.STATUS.ALL' },
127
- { value: TaskStatusFilter.CREATED, label: 'ADF_CLOUD_TASK_FILTERS.STATUS.CREATED' },
128
- { value: TaskStatusFilter.ASSIGNED, label: 'ADF_CLOUD_TASK_FILTERS.STATUS.ASSIGNED' },
129
- { value: TaskStatusFilter.SUSPENDED, label: 'ADF_CLOUD_TASK_FILTERS.STATUS.SUSPENDED' },
130
- { value: TaskStatusFilter.CANCELLED, label: 'ADF_CLOUD_TASK_FILTERS.STATUS.CANCELLED' },
131
- { value: TaskStatusFilter.COMPLETED, label: 'ADF_CLOUD_TASK_FILTERS.STATUS.COMPLETED' }
132
- ];
133
- }
134
- createTaskFilterProperties() {
135
- const statusOptions = this.getStatusOptions();
136
- const sortProperties = this.createSortProperties;
137
- return [
138
- {
139
- label: 'ADF_CLOUD_EDIT_TASK_FILTER.LABEL.APP_NAME',
140
- type: 'select',
141
- key: 'appName',
142
- value: this.taskFilter.appName || '',
143
- options: this.applicationNames
144
- },
145
- {
146
- label: 'ADF_CLOUD_EDIT_TASK_FILTER.LABEL.TASK_ID',
147
- type: 'text',
148
- key: 'taskId',
149
- value: ''
150
- },
151
- {
152
- label: 'ADF_CLOUD_EDIT_TASK_FILTER.LABEL.STATUS',
153
- type: 'select',
154
- key: 'status',
155
- value: this.taskFilter.status || statusOptions[0].value,
156
- options: statusOptions
157
- },
158
- {
159
- label: 'ADF_CLOUD_EDIT_TASK_FILTER.LABEL.ASSIGNMENT',
160
- type: 'text',
161
- key: 'assignee',
162
- value: this.taskFilter.assignee || ''
163
- },
164
- {
165
- label: 'ADF_CLOUD_EDIT_TASK_FILTER.LABEL.PROCESS_DEF_NAME',
166
- type: 'select',
167
- key: 'processDefinitionName',
168
- value: this.taskFilter.processDefinitionName || '',
169
- options: this.processDefinitionNames
170
- },
171
- {
172
- label: 'ADF_CLOUD_EDIT_TASK_FILTER.LABEL.PROCESS_INSTANCE_ID',
173
- type: 'text',
174
- key: 'processInstanceId',
175
- value: this.processInstanceId || this.taskFilter.processInstanceId || ''
176
- },
177
- {
178
- label: 'ADF_CLOUD_EDIT_TASK_FILTER.LABEL.PROCESS_DEF_ID',
179
- type: 'text',
180
- key: 'processDefinitionId',
181
- value: this.taskFilter.processDefinitionId || ''
182
- },
183
- {
184
- label: 'ADF_CLOUD_EDIT_TASK_FILTER.LABEL.TASK_NAME',
185
- type: 'text',
186
- key: 'taskName',
187
- value: this.taskFilter.taskName || ''
188
- },
189
- {
190
- label: 'ADF_CLOUD_EDIT_TASK_FILTER.LABEL.PARENT_TASK_ID',
191
- type: 'text',
192
- key: 'parentTaskId',
193
- value: this.taskFilter.parentTaskId || ''
194
- },
195
- {
196
- label: 'ADF_CLOUD_EDIT_TASK_FILTER.LABEL.PRIORITY',
197
- type: 'select',
198
- key: 'priority',
199
- value: this.taskFilter.priority || '',
200
- options: this.taskCloudService.priorities
201
- },
202
- {
203
- label: 'ADF_CLOUD_EDIT_TASK_FILTER.LABEL.OWNER',
204
- type: 'text',
205
- key: 'owner',
206
- value: this.taskFilter.owner || ''
207
- },
208
- {
209
- label: 'ADF_CLOUD_EDIT_TASK_FILTER.LABEL.CREATED_DATE',
210
- type: 'date',
211
- key: 'createdDate',
212
- value: ''
213
- },
214
- {
215
- label: 'ADF_CLOUD_EDIT_TASK_FILTER.LABEL.SORT',
216
- type: 'select',
217
- key: 'sort',
218
- value: this.taskFilter.sort || sortProperties[0].value,
219
- options: sortProperties
220
- },
221
- {
222
- label: 'ADF_CLOUD_EDIT_TASK_FILTER.LABEL.DIRECTION',
223
- type: 'select',
224
- key: 'order',
225
- value: this.taskFilter.order || this.sortDirections[0].value,
226
- options: [...this.sortDirections]
227
- },
228
- {
229
- label: 'ADF_CLOUD_EDIT_TASK_FILTER.LABEL.STAND_ALONE',
230
- type: 'checkbox',
231
- key: 'standalone',
232
- value: this.taskFilter.standalone || false
233
- },
234
- {
235
- label: 'ADF_CLOUD_EDIT_TASK_FILTER.LABEL.DUE_DATE',
236
- type: 'date-range',
237
- key: 'dueDateRange',
238
- attributes: { dateType: 'dueDateType', from: '_dueDateFrom', to: '_dueDateTo' },
239
- value: {
240
- dueDateType: this.taskFilter.dueDateType || null,
241
- _dueDateFrom: this.taskFilter.dueDateFrom || null,
242
- _dueDateTo: this.taskFilter.dueDateTo || null
243
- },
244
- dateFilterOptions: [
245
- DateCloudFilterType.NO_DATE,
246
- DateCloudFilterType.TODAY,
247
- DateCloudFilterType.TOMORROW,
248
- DateCloudFilterType.NEXT_7_DAYS,
249
- DateCloudFilterType.RANGE
250
- ]
251
- },
252
- {
253
- label: 'ADF_CLOUD_EDIT_TASK_FILTER.LABEL.COMPLETED_DATE',
254
- type: 'date-range',
255
- key: 'completedDateRange',
256
- attributes: { dateType: 'completedDateType', from: '_completedFrom', to: '_completedTo' },
257
- value: {
258
- completedDateType: this.taskFilter.completedDateType || null,
259
- _completedFrom: this.taskFilter.completedFrom || null,
260
- _completedTo: this.taskFilter.completedTo || null
261
- }
262
- },
263
- {
264
- label: 'ADF_CLOUD_EDIT_TASK_FILTER.LABEL.CREATED_DATE',
265
- type: 'date-range',
266
- key: 'createdDateRange',
267
- attributes: { dateType: 'createdDateType', from: '_createdFrom', to: '_createdTo' },
268
- value: {
269
- createdDateType: this.taskFilter.createdDateType || null,
270
- _createdFrom: this.taskFilter.createdFrom || null,
271
- _createdTo: this.taskFilter.createdTo || null
272
- }
273
- },
274
- {
275
- label: 'ADF_CLOUD_EDIT_TASK_FILTER.LABEL.COMPLETED_BY',
276
- type: 'people',
277
- key: 'completedBy',
278
- value: this.taskFilter.completedBy ? [this.taskFilter.completedBy] : null,
279
- selectionMode: 'single'
280
- },
281
- {
282
- label: 'ADF_CLOUD_EDIT_TASK_FILTER.LABEL.ASSIGNMENT',
283
- type: 'assignment',
284
- key: 'assignment',
285
- attributes: { assignedUsers: 'assignedUsers', candidateGroups: 'candidateGroups' },
286
- value: {
287
- assignedUsers: this.taskFilter.assignedUsers || [],
288
- candidateGroups: this.taskFilter.candidateGroups || []
289
- },
290
- selectionMode: 'multiple'
291
- }
292
- ];
293
- }
294
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: EditTaskFilterCloudComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
295
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: EditTaskFilterCloudComponent, isStandalone: true, selector: "adf-cloud-edit-task-filter", usesInheritance: true, ngImport: i0, template: "<mat-accordion [hideToggle]=\"isLoading\" class=\"adf-edit-task-filter\">\n <mat-expansion-panel (afterExpand)=\"onExpand()\" (closed)=\"onClose()\">\n <mat-expansion-panel-header *ngIf=\"taskFilter\" id=\"adf-edit-task-filter-expansion-header\" class=\"adf-edit-task-filter-header\">\n <ng-container *ngIf=\"!isLoading; else loadingTemplate\">\n <mat-panel-title *ngIf=\"showTaskFilterName\" id=\"adf-edit-task-filter-title-id\" class=\"adf-edit-task-filter-header__title\"\n >{{taskFilter.name | translate}}</mat-panel-title>\n <mat-panel-description class=\"adf-edit-task-filter-header__description\" id=\"adf-edit-task-filter-sub-title-id\">\n <span *ngIf=\"showTitle\">{{ 'ADF_CLOUD_EDIT_TASK_FILTER.TITLE' | translate}}</span>\n <div *ngIf=\"showFilterActions\" class=\"adf-cloud-edit-task-filter-actions\">\n <ng-container *ngIf=\"toggleFilterActions\">\n <button *ngFor=\"let filterAction of taskFilterActions\"\n mat-icon-button\n [title]=\"filterAction.tooltip | translate\"\n [attr.data-automation-id]=\"'adf-filter-action-' + filterAction.actionType\"\n [disabled]=\"isDisabledAction(filterAction)\"\n (click)=\"executeFilterActions(filterAction)\">\n <adf-icon [value]=\"filterAction.icon\" />\n </button>\n </ng-container>\n </div>\n </mat-panel-description>\n </ng-container>\n <ng-template #loadingTemplate>\n <div class=\"adf-cloud-edit-task-filter-loading-margin\">\n <mat-progress-spinner mode=\"indeterminate\" [diameter]=\"30\" />\n </div>\n </ng-template>\n </mat-expansion-panel-header>\n <ng-container *ngIf=\"!isLoading;\">\n <form *ngIf=\"editTaskFilterForm\" [formGroup]=\"editTaskFilterForm\" class=\"adf-edit-task-filter-content\">\n <div class=\"adf-edit-task-filter-form\">\n <ng-container *ngFor=\"let taskFilterProperty of taskFilterProperties\">\n <mat-form-field [floatLabel]=\"'auto'\"\n *ngIf=\"taskFilterProperty.type === 'select'\"\n [attr.data-automation-id]=\"taskFilterProperty.key\">\n <mat-label class=\"adf-edit-task-filter-content__select-label\">{{taskFilterProperty.label | translate}}</mat-label>\n <mat-select\n [formControlName]=\"taskFilterProperty.key\"\n [attr.data-automation-id]=\"'adf-cloud-edit-task-property-' + taskFilterProperty.key\"\n (selectionChange)=\"onStatusChange($event)\">\n <mat-option *ngFor=\"let propertyOption of taskFilterProperty.options\"\n [value]=\"propertyOption.value\"\n [attr.data-automation-id]=\"'adf-cloud-edit-task-property-options-' + taskFilterProperty.key\">\n {{ propertyOption.label | translate }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n <mat-form-field [floatLabel]=\"'auto'\"\n *ngIf=\"taskFilterProperty.type === 'text'\"\n [attr.data-automation-id]=\"taskFilterProperty.key\">\n <mat-label class=\"adf-edit-task-filter-content__text-label\">{{taskFilterProperty.label | translate}}</mat-label>\n <input matInput\n [formControlName]=\"taskFilterProperty.key\"\n type=\"text\"\n [attr.data-automation-id]=\"'adf-cloud-edit-task-property-' + taskFilterProperty.key\" />\n </mat-form-field>\n <mat-form-field [floatLabel]=\"'auto'\"\n *ngIf=\"taskFilterProperty.type === 'date'\"\n [attr.data-automation-id]=\"taskFilterProperty.key\">\n <mat-label>{{taskFilterProperty.label | translate}}</mat-label>\n <input matInput\n (keyup)=\"onDateChanged($any($event).target.value, taskFilterProperty)\"\n (dateChange)=\"onDateChanged($event.value, taskFilterProperty)\"\n [matDatepicker]=\"dateController\"\n [placeholder]=\"taskFilterProperty.label | translate\"\n [attr.data-automation-id]=\"'adf-cloud-edit-task-property-' + taskFilterProperty.key\">\n <mat-datepicker-toggle matSuffix\n [for]=\"dateController\"\n [attr.data-automation-id]=\"'adf-cloud-edit-task-property-date-toggle-' + taskFilterProperty.key\" />\n <mat-datepicker #dateController\n [attr.data-automation-id]=\"'adf-cloud-edit-task-property-date-picker-' + taskFilterProperty.key\" />\n <div class=\"adf-edit-task-filter-date-error-container\">\n <div *ngIf=\"hasError(taskFilterProperty)\">\n <div class=\"adf-error-text\">{{'ADF_TASK_LIST.START_TASK.FORM.ERROR.DATE'|translate}}</div>\n <mat-icon class=\"adf-error-icon\">warning</mat-icon>\n </div>\n </div>\n </mat-form-field>\n <div class=\"adf-edit-task-filter-checkbox\"\n *ngIf=\"taskFilterProperty.type === 'checkbox'\">\n <mat-checkbox color=\"primary\"\n [formControlName]=\"taskFilterProperty.key\"\n [attr.data-automation-id]=\"taskFilterProperty.key\"\n >{{taskFilterProperty.label | translate}}</mat-checkbox>\n </div>\n\n <adf-cloud-date-range-filter #dateRange\n *ngIf=\"taskFilterProperty.type === 'date-range'\"\n [processFilterProperty]=\"taskFilterProperty\"\n [options]=\"taskFilterProperty.dateFilterOptions\"\n (dateTypeChange)=\"onDateTypeChange($event, taskFilterProperty)\"\n (dateChanged)=\"onDateRangeFilterChanged($event, taskFilterProperty)\" />\n <adf-cloud-people\n class=\"{{ 'adf-edit-task-filter-' + taskFilterProperty.key }}\"\n *ngIf=\"taskFilterProperty.type === 'people'\"\n [preSelectUsers]=\"taskFilterProperty.value\"\n [title]=\"taskFilterProperty.label\"\n [validate]=\"true\"\n [appName]=\"appName\"\n [mode]=\"taskFilterProperty.selectionMode\"\n (changedUsers)=\"onChangedUser($event, taskFilterProperty)\" />\n\n <adf-cloud-task-assignment-filter\n *ngIf=\"taskFilterProperty.type === 'assignment'\"\n [taskFilterProperty]=\"taskFilterProperty\"\n [status]=\"selectedStatus\"\n [appName]=\"appName\"\n (assignedUsersChange)=\"onAssignedUsersChange($event)\"\n (assignedGroupsChange)=\"onAssignedGroupsChange($event)\"\n (assignmentTypeChange)=\"onAssignmentTypeChange($event)\" />\n\n </ng-container>\n </div>\n </form>\n </ng-container>\n </mat-expansion-panel>\n</mat-accordion>\n", styles: [".adf-edit-task-filter-checkbox{font-size:var(--theme-subheading-2-font-size);padding-top:10px;text-align:center;flex:1 23%}.adf-edit-task-filter-date-error-container{position:absolute;height:20px;margin-top:12px;width:100%}.adf-edit-task-filter-date-error-container>div{display:flex;flex-flow:row;justify-content:flex-start}.adf-edit-task-filter-date-error-container .adf-error-text{padding-right:8px;height:16px;font-size:10px;line-height:1.33;color:var(--theme-warn-color);width:auto}.adf-edit-task-filter-date-error-container .adf-error-icon{font-size:16px;color:var(--theme-warn-color)}.adf-edit-task-filter-dateRange mat-grid-list{width:450px}.adf-cloud-edit-task-filter-loading-margin{margin-left:calc((100% - 100px)/2);margin-right:calc((100% - 100px)/2)}.adf-edit-task-filter-form{flex-flow:row wrap;display:flex;place-content:center flex-start;align-items:center}.adf-edit-task-filter-form :not(:last-child){margin-right:10px}.adf-edit-task-filter-form mat-form-field,.adf-edit-task-filter-form adf-cloud-people,.adf-edit-task-filter-form adf-cloud-task-assignment-filter{flex:1 1 23%}@media (max-width: 599.9px){.adf-edit-task-filter-form{flex-flow:column}.adf-edit-task-filter-form :not(:last-child){margin-bottom:10px;margin-right:0}}.adf-edit-task-filter-header{height:48px}.adf-edit-task-filter-header__title{color:var(--adf-theme-foreground-text-color)}.adf-edit-task-filter-header__description{color:var(--adf-theme-foreground-secondary-text-color);place-content:center space-between}.adf-edit-task-filter-content__text-label,.adf-edit-task-filter-content__select-label{color:var(--adf-theme-foreground-secondary-text-color)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatExpansionModule }, { kind: "directive", type: i3.MatAccordion, selector: "mat-accordion", inputs: ["hideToggle", "displayMode", "togglePosition"], exportAs: ["matAccordion"] }, { kind: "component", type: i3.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i3.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "directive", type: i3.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "directive", type: i3.MatExpansionPanelDescription, selector: "mat-panel-description" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: IconComponent, selector: "adf-icon", inputs: ["color", "fontSet", "value"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i5.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatLabel, selector: "mat-label" }, { kind: "directive", type: i6.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i7.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i7.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i7.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i8.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i9.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i10.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i11.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i11.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i11.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i12.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i13.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: DateRangeFilterComponent, selector: "adf-cloud-date-range-filter", inputs: ["processFilterProperty", "options"], outputs: ["dateChanged", "dateTypeChange"] }, { kind: "component", type: PeopleCloudComponent, selector: "adf-cloud-people", inputs: ["appName", "mode", "roles", "validate", "readOnly", "required", "preSelectUsers", "excludedUsers", "groupsRestriction", "userChipsCtrl", "searchUserCtrl", "title", "placeholder", "hideInputOnSingleSelection", "formFieldAppearance", "formFieldSubscriptSizing", "showErrors", "showFullNameOnHover"], outputs: ["selectUser", "removeUser", "changedUsers", "warning"] }, { kind: "component", type: TaskAssignmentFilterCloudComponent, selector: "adf-cloud-task-assignment-filter", inputs: ["appName", "taskFilterProperty", "status"], outputs: ["assignedUsersChange", "assignedGroupsChange", "assignmentTypeChange"] }], encapsulation: i0.ViewEncapsulation.None }); }
296
- }
297
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: EditTaskFilterCloudComponent, decorators: [{
298
- type: Component,
299
- args: [{ selector: 'adf-cloud-edit-task-filter', standalone: true, imports: [
300
- CommonModule,
301
- TranslateModule,
302
- MatExpansionModule,
303
- MatButtonModule,
304
- IconComponent,
305
- MatProgressSpinnerModule,
306
- MatFormFieldModule,
307
- ReactiveFormsModule,
308
- MatSelectModule,
309
- MatInputModule,
310
- MatDatepickerModule,
311
- MatIconModule,
312
- MatCheckboxModule,
313
- DateRangeFilterComponent,
314
- PeopleCloudComponent,
315
- TaskAssignmentFilterCloudComponent
316
- ], encapsulation: ViewEncapsulation.None, template: "<mat-accordion [hideToggle]=\"isLoading\" class=\"adf-edit-task-filter\">\n <mat-expansion-panel (afterExpand)=\"onExpand()\" (closed)=\"onClose()\">\n <mat-expansion-panel-header *ngIf=\"taskFilter\" id=\"adf-edit-task-filter-expansion-header\" class=\"adf-edit-task-filter-header\">\n <ng-container *ngIf=\"!isLoading; else loadingTemplate\">\n <mat-panel-title *ngIf=\"showTaskFilterName\" id=\"adf-edit-task-filter-title-id\" class=\"adf-edit-task-filter-header__title\"\n >{{taskFilter.name | translate}}</mat-panel-title>\n <mat-panel-description class=\"adf-edit-task-filter-header__description\" id=\"adf-edit-task-filter-sub-title-id\">\n <span *ngIf=\"showTitle\">{{ 'ADF_CLOUD_EDIT_TASK_FILTER.TITLE' | translate}}</span>\n <div *ngIf=\"showFilterActions\" class=\"adf-cloud-edit-task-filter-actions\">\n <ng-container *ngIf=\"toggleFilterActions\">\n <button *ngFor=\"let filterAction of taskFilterActions\"\n mat-icon-button\n [title]=\"filterAction.tooltip | translate\"\n [attr.data-automation-id]=\"'adf-filter-action-' + filterAction.actionType\"\n [disabled]=\"isDisabledAction(filterAction)\"\n (click)=\"executeFilterActions(filterAction)\">\n <adf-icon [value]=\"filterAction.icon\" />\n </button>\n </ng-container>\n </div>\n </mat-panel-description>\n </ng-container>\n <ng-template #loadingTemplate>\n <div class=\"adf-cloud-edit-task-filter-loading-margin\">\n <mat-progress-spinner mode=\"indeterminate\" [diameter]=\"30\" />\n </div>\n </ng-template>\n </mat-expansion-panel-header>\n <ng-container *ngIf=\"!isLoading;\">\n <form *ngIf=\"editTaskFilterForm\" [formGroup]=\"editTaskFilterForm\" class=\"adf-edit-task-filter-content\">\n <div class=\"adf-edit-task-filter-form\">\n <ng-container *ngFor=\"let taskFilterProperty of taskFilterProperties\">\n <mat-form-field [floatLabel]=\"'auto'\"\n *ngIf=\"taskFilterProperty.type === 'select'\"\n [attr.data-automation-id]=\"taskFilterProperty.key\">\n <mat-label class=\"adf-edit-task-filter-content__select-label\">{{taskFilterProperty.label | translate}}</mat-label>\n <mat-select\n [formControlName]=\"taskFilterProperty.key\"\n [attr.data-automation-id]=\"'adf-cloud-edit-task-property-' + taskFilterProperty.key\"\n (selectionChange)=\"onStatusChange($event)\">\n <mat-option *ngFor=\"let propertyOption of taskFilterProperty.options\"\n [value]=\"propertyOption.value\"\n [attr.data-automation-id]=\"'adf-cloud-edit-task-property-options-' + taskFilterProperty.key\">\n {{ propertyOption.label | translate }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n <mat-form-field [floatLabel]=\"'auto'\"\n *ngIf=\"taskFilterProperty.type === 'text'\"\n [attr.data-automation-id]=\"taskFilterProperty.key\">\n <mat-label class=\"adf-edit-task-filter-content__text-label\">{{taskFilterProperty.label | translate}}</mat-label>\n <input matInput\n [formControlName]=\"taskFilterProperty.key\"\n type=\"text\"\n [attr.data-automation-id]=\"'adf-cloud-edit-task-property-' + taskFilterProperty.key\" />\n </mat-form-field>\n <mat-form-field [floatLabel]=\"'auto'\"\n *ngIf=\"taskFilterProperty.type === 'date'\"\n [attr.data-automation-id]=\"taskFilterProperty.key\">\n <mat-label>{{taskFilterProperty.label | translate}}</mat-label>\n <input matInput\n (keyup)=\"onDateChanged($any($event).target.value, taskFilterProperty)\"\n (dateChange)=\"onDateChanged($event.value, taskFilterProperty)\"\n [matDatepicker]=\"dateController\"\n [placeholder]=\"taskFilterProperty.label | translate\"\n [attr.data-automation-id]=\"'adf-cloud-edit-task-property-' + taskFilterProperty.key\">\n <mat-datepicker-toggle matSuffix\n [for]=\"dateController\"\n [attr.data-automation-id]=\"'adf-cloud-edit-task-property-date-toggle-' + taskFilterProperty.key\" />\n <mat-datepicker #dateController\n [attr.data-automation-id]=\"'adf-cloud-edit-task-property-date-picker-' + taskFilterProperty.key\" />\n <div class=\"adf-edit-task-filter-date-error-container\">\n <div *ngIf=\"hasError(taskFilterProperty)\">\n <div class=\"adf-error-text\">{{'ADF_TASK_LIST.START_TASK.FORM.ERROR.DATE'|translate}}</div>\n <mat-icon class=\"adf-error-icon\">warning</mat-icon>\n </div>\n </div>\n </mat-form-field>\n <div class=\"adf-edit-task-filter-checkbox\"\n *ngIf=\"taskFilterProperty.type === 'checkbox'\">\n <mat-checkbox color=\"primary\"\n [formControlName]=\"taskFilterProperty.key\"\n [attr.data-automation-id]=\"taskFilterProperty.key\"\n >{{taskFilterProperty.label | translate}}</mat-checkbox>\n </div>\n\n <adf-cloud-date-range-filter #dateRange\n *ngIf=\"taskFilterProperty.type === 'date-range'\"\n [processFilterProperty]=\"taskFilterProperty\"\n [options]=\"taskFilterProperty.dateFilterOptions\"\n (dateTypeChange)=\"onDateTypeChange($event, taskFilterProperty)\"\n (dateChanged)=\"onDateRangeFilterChanged($event, taskFilterProperty)\" />\n <adf-cloud-people\n class=\"{{ 'adf-edit-task-filter-' + taskFilterProperty.key }}\"\n *ngIf=\"taskFilterProperty.type === 'people'\"\n [preSelectUsers]=\"taskFilterProperty.value\"\n [title]=\"taskFilterProperty.label\"\n [validate]=\"true\"\n [appName]=\"appName\"\n [mode]=\"taskFilterProperty.selectionMode\"\n (changedUsers)=\"onChangedUser($event, taskFilterProperty)\" />\n\n <adf-cloud-task-assignment-filter\n *ngIf=\"taskFilterProperty.type === 'assignment'\"\n [taskFilterProperty]=\"taskFilterProperty\"\n [status]=\"selectedStatus\"\n [appName]=\"appName\"\n (assignedUsersChange)=\"onAssignedUsersChange($event)\"\n (assignedGroupsChange)=\"onAssignedGroupsChange($event)\"\n (assignmentTypeChange)=\"onAssignmentTypeChange($event)\" />\n\n </ng-container>\n </div>\n </form>\n </ng-container>\n </mat-expansion-panel>\n</mat-accordion>\n", styles: [".adf-edit-task-filter-checkbox{font-size:var(--theme-subheading-2-font-size);padding-top:10px;text-align:center;flex:1 23%}.adf-edit-task-filter-date-error-container{position:absolute;height:20px;margin-top:12px;width:100%}.adf-edit-task-filter-date-error-container>div{display:flex;flex-flow:row;justify-content:flex-start}.adf-edit-task-filter-date-error-container .adf-error-text{padding-right:8px;height:16px;font-size:10px;line-height:1.33;color:var(--theme-warn-color);width:auto}.adf-edit-task-filter-date-error-container .adf-error-icon{font-size:16px;color:var(--theme-warn-color)}.adf-edit-task-filter-dateRange mat-grid-list{width:450px}.adf-cloud-edit-task-filter-loading-margin{margin-left:calc((100% - 100px)/2);margin-right:calc((100% - 100px)/2)}.adf-edit-task-filter-form{flex-flow:row wrap;display:flex;place-content:center flex-start;align-items:center}.adf-edit-task-filter-form :not(:last-child){margin-right:10px}.adf-edit-task-filter-form mat-form-field,.adf-edit-task-filter-form adf-cloud-people,.adf-edit-task-filter-form adf-cloud-task-assignment-filter{flex:1 1 23%}@media (max-width: 599.9px){.adf-edit-task-filter-form{flex-flow:column}.adf-edit-task-filter-form :not(:last-child){margin-bottom:10px;margin-right:0}}.adf-edit-task-filter-header{height:48px}.adf-edit-task-filter-header__title{color:var(--adf-theme-foreground-text-color)}.adf-edit-task-filter-header__description{color:var(--adf-theme-foreground-secondary-text-color);place-content:center space-between}.adf-edit-task-filter-content__text-label,.adf-edit-task-filter-content__select-label{color:var(--adf-theme-foreground-secondary-text-color)}\n"] }]
317
- }], ctorParameters: () => [] });
318
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdC10YXNrLWZpbHRlci1jbG91ZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvcHJvY2Vzcy1zZXJ2aWNlcy1jbG91ZC9zcmMvbGliL3Rhc2svdGFzay1maWx0ZXJzL2NvbXBvbmVudHMvZWRpdC10YXNrLWZpbHRlcnMvZWRpdC10YXNrLWZpbHRlci9lZGl0LXRhc2stZmlsdGVyLWNsb3VkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9wcm9jZXNzLXNlcnZpY2VzLWNsb3VkL3NyYy9saWIvdGFzay90YXNrLWZpbHRlcnMvY29tcG9uZW50cy9lZGl0LXRhc2stZmlsdGVycy9lZGl0LXRhc2stZmlsdGVyL2VkaXQtdGFzay1maWx0ZXItY2xvdWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUgsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXJDLE9BQU8sRUFBb0Isb0JBQW9CLEVBQXdCLGdCQUFnQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDcEksT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDckYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDcEYsT0FBTyxFQUFFLGdDQUFnQyxFQUFrQixNQUFNLDBDQUEwQyxDQUFDO0FBQzVHLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDL0IsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FB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LENBQUMsVUFBVSxDQUFDLGFBQWEsSUFBSSxFQUFFO29CQUNsRCxlQUFlLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLElBQUksRUFBRTtpQkFDekQ7Z0JBQ0QsYUFBYSxFQUFFLFVBQVU7YUFDNUI7U0FDSixDQUFDO0lBQ04sQ0FBQzsrR0FqUVEsNEJBQTRCO21HQUE1Qiw0QkFBNEIsNkdDcEV6Qyx1M1FBcUhBLG9xRER0RVEsWUFBWSwrUEFDWixlQUFlLDJGQUNmLGtCQUFrQix3dEJBQ2xCLGVBQWUsNElBQ2YsYUFBYSwyRkFDYix3QkFBd0Isa09BQ3hCLGtCQUFrQiwyYUFDbEIsbUJBQW1CLDQ4QkFDbkIsZUFBZSxtckJBQ2YsY0FBYywyV0FDZCxtQkFBbUIsb2dCQUNuQixhQUFhLG9MQUNiLGlCQUFpQixzWUFDakIsd0JBQXdCLGtLQUN4QixvQkFBb0Isa2JBQ3BCLGtDQUFrQzs7NEZBTTdCLDRCQUE0QjtrQkF6QnhDLFNBQVM7K0JBQ0ksNEJBQTRCLGNBQzFCLElBQUksV0FDUDt3QkFDTCxZQUFZO3dCQUNaLGVBQWU7d0JBQ2Ysa0JBQWtCO3dCQUNsQixlQUFlO3dCQUNmLGFBQWE7d0JBQ2Isd0JBQXdCO3dCQUN4QixrQkFBa0I7d0JBQ2xCLG1CQUFtQjt3QkFDbkIsZUFBZTt3QkFDZixjQUFjO3dCQUNkLG1CQUFtQjt3QkFDbkIsYUFBYTt3QkFDYixpQkFBaUI7d0JBQ2pCLHdCQUF3Qjt3QkFDeEIsb0JBQW9CO3dCQUNwQixrQ0FBa0M7cUJBQ3JDLGlCQUdjLGlCQUFpQixDQUFDLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI1IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IENvbXBvbmVudCwgaW5qZWN0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVGFza0ZpbHRlckFjdGlvbiwgVGFza0ZpbHRlckNsb3VkTW9kZWwsIFRhc2tGaWx0ZXJQcm9wZXJ0aWVzLCBUYXNrU3RhdHVzRmlsdGVyIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2ZpbHRlci1jbG91ZC5tb2RlbCc7XG5pbXBvcnQgeyBUYXNrRmlsdGVyQ2xvdWRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdGFzay1maWx0ZXItY2xvdWQuc2VydmljZSc7XG5pbXBvcnQgeyBEYXRlQ2xvdWRGaWx0ZXJUeXBlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vbW9kZWxzL2RhdGUtY2xvdWQtZmlsdGVyLm1vZGVsJztcbmltcG9ydCB7IEJhc2VFZGl0VGFza0ZpbHRlckNsb3VkQ29tcG9uZW50LCBEcm9wZG93bk9wdGlvbiB9IGZyb20gJy4uL2Jhc2UtZWRpdC10YXNrLWZpbHRlci1jbG91ZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgc2V0IH0gZnJvbSAnZGF0ZS1mbnMnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgTWF0RXhwYW5zaW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZXhwYW5zaW9uJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBJY29uQ29tcG9uZW50IH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb3JlJztcbmltcG9ydCB7IE1hdFByb2dyZXNzU3Bpbm5lck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLXNwaW5uZXInO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0U2VsZWN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuaW1wb3J0IHsgTWF0RGF0ZXBpY2tlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RhdGVwaWNrZXInO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0Q2hlY2tib3hNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XG5pbXBvcnQgeyBEYXRlUmFuZ2VGaWx0ZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9jb21tb24vZGF0ZS1yYW5nZS1maWx0ZXIvZGF0ZS1yYW5nZS1maWx0ZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFBlb3BsZUNsb3VkQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vcGVvcGxlL2NvbXBvbmVudHMvcGVvcGxlLWNsb3VkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUYXNrQXNzaWdubWVudEZpbHRlckNsb3VkQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vdGFzay1hc3NpZ25tZW50LWZpbHRlci90YXNrLWFzc2lnbm1lbnQtZmlsdGVyLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYWRmLWNsb3VkLWVkaXQtdGFzay1maWx0ZXInLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICAgICAgTWF0RXhwYW5zaW9uTW9kdWxlLFxuICAgICAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgICAgIEljb25Db21wb25lbnQsXG4gICAgICAgIE1hdFByb2dyZXNzU3Bpbm5lck1vZHVsZSxcbiAgICAgICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxuICAgICAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgICAgICBNYXRTZWxlY3RNb2R1bGUsXG4gICAgICAgIE1hdElucHV0TW9kdWxlLFxuICAgICAgICBNYXREYXRlcGlja2VyTW9kdWxlLFxuICAgICAgICBNYXRJY29uTW9kdWxlLFxuICAgICAgICBNYXRDaGVja2JveE1vZHVsZSxcbiAgICAgICAgRGF0ZVJhbmdlRmlsdGVyQ29tcG9uZW50LFxuICAgICAgICBQZW9wbGVDbG91ZENvbXBvbmVudCxcbiAgICAgICAgVGFza0Fzc2lnbm1lbnRGaWx0ZXJDbG91ZENvbXBvbmVudFxuICAgIF0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL2VkaXQtdGFzay1maWx0ZXItY2xvdWQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2VkaXQtdGFzay1maWx0ZXItY2xvdWQuY29tcG9uZW50LnNjc3MnXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIEVkaXRUYXNrRmlsdGVyQ2xvdWRDb21wb25lbnQgZXh0ZW5kcyBCYXNlRWRpdFRhc2tGaWx0ZXJDbG91ZENvbXBvbmVudDxUYXNrRmlsdGVyQ2xvdWRNb2RlbD4ge1xuICAgIHByaXZhdGUgdGFza0ZpbHRlckNsb3VkU2VydmljZSA9IGluamVjdChUYXNrRmlsdGVyQ2xvdWRTZXJ2aWNlKTtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIGFzc2lnbk5ld0ZpbHRlcihtb2RlbDogVGFza0ZpbHRlckNsb3VkTW9kZWwpIHtcbiAgICAgICAgdGhpcy5zZXRMYXN0TW9kaWZpZWRUb0ZpbHRlcihtb2RlbCk7XG4gICAgICAgIHRoaXMuY2hhbmdlZFRhc2tGaWx0ZXIgPSBuZXcgVGFza0ZpbHRlckNsb3VkTW9kZWwoT2JqZWN0LmFzc2lnbih7fSwgdGhpcy50YXNrRmlsdGVyLCBtb2RlbCkpO1xuICAgICAgICB0aGlzLmZvcm1IYXNCZWVuQ2hhbmdlZCA9ICF0aGlzLmRlZXBDb21wYXJlKHRoaXMuY2hhbmdlZFRhc2tGaWx0ZXIsIHRoaXMudGFza0ZpbHRlcik7XG4gICAgICAgIHRoaXMuZmlsdGVyQ2hhbmdlLmVtaXQodGhpcy5jaGFuZ2VkVGFza0ZpbHRlcik7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldFRhc2tGaWx0ZXJCeUlkKGFwcE5hbWU6IHN0cmluZywgaWQ6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gdGhpcy50YXNrRmlsdGVyQ2xvdWRTZXJ2aWNlLmdldFRhc2tGaWx0ZXJCeUlkKGFwcE5hbWUsIGlkKS5waXBlKG1hcCgocmVzcG9uc2UpID0+IG5ldyBUYXNrRmlsdGVyQ2xvdWRNb2RlbChyZXNwb25zZSkpKTtcbiAgICB9XG5cbiAgICBjcmVhdGVBbmRGaWx0ZXJQcm9wZXJ0aWVzKCkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBzdXBlci5jcmVhdGVBbmRGaWx0ZXJQcm9wZXJ0aWVzKCk7XG5cbiAgICAgICAgaWYgKHRoaXMuaGFzTGFzdE1vZGlmaWVkUHJvcGVydHkoKSkge1xuICAgICAgICAgICAgcmV0dXJuIFsuLi5yZXN1bHQsIC4uLnRoaXMuY3JlYXRlTGFzdE1vZGlmaWVkUHJvcGVydHkoKV07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIGdldERlZmF1bHRGaWx0ZXJQcm9wZXJ0aWVzKCk6IHN0cmluZ1tdIHtcbiAgICAgICAgcmV0dXJuIFsnc3RhdHVzJywgJ2Fzc2lnbmVlJywgJ3NvcnQnLCAnb3JkZXInXTtcbiAgICB9XG5cbiAgICBnZXREZWZhdWx0U29ydFByb3BlcnRpZXMoKTogc3RyaW5nW10ge1xuICAgICAgICByZXR1cm4gWydpZCcsICduYW1lJywgJ2NyZWF0ZWREYXRlJywgJ3ByaW9yaXR5J107XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRMYXN0TW9kaWZpZWRUb0ZpbHRlcihmb3JtVmFsdWVzOiBUYXNrRmlsdGVyQ2xvdWRNb2RlbCkge1xuICAgICAgICBpZiAoZm9ybVZhbHVlcy5sYXN0TW9kaWZpZWRUbyAmJiBEYXRlLnBhcnNlKGZvcm1WYWx1ZXMubGFzdE1vZGlmaWVkVG8udG9TdHJpbmcoKSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGxhc3RNb2RpZmllZFRvRmlsdGVyVmFsdWUgPSBzZXQobmV3IERhdGUoZm9ybVZhbHVlcy5sYXN0TW9kaWZpZWRUbyksIHtcbiAgICAgICAgICAgICAgICBob3VyczogMjMsXG4gICAgICAgICAgICAgICAgbWludXRlczogNTksXG4gICAgICAgICAgICAgICAgc2Vjb25kczogNTlcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZm9ybVZhbHVlcy5sYXN0TW9kaWZpZWRUbyA9IGxhc3RNb2RpZmllZFRvRmlsdGVyVmFsdWUudG9JU09TdHJpbmcoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCB1cGRhdGVGaWx0ZXIoZmlsdGVyVG9VcGRhdGU6IFRhc2tGaWx0ZXJDbG91ZE1vZGVsKTogT2JzZXJ2YWJsZTxUYXNrRmlsdGVyQ2xvdWRNb2RlbFtdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLnRhc2tGaWx0ZXJDbG91ZFNlcnZpY2UudXBkYXRlRmlsdGVyKGZpbHRlclRvVXBkYXRlKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZGVsZXRlRmlsdGVyKGZpbHRlclRvRGVsZXRlOiBUYXNrRmlsdGVyQ2xvdWRNb2RlbCk6IE9ic2VydmFibGU8VGFza0ZpbHRlckNsb3VkTW9kZWxbXT4ge1xuICAgICAgICByZXR1cm4gdGhpcy50YXNrRmlsdGVyQ2xvdWRTZXJ2aWNlLmRlbGV0ZUZpbHRlcihmaWx0ZXJUb0RlbGV0ZSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGFkZEZpbHRlcihmaWx0ZXJUb0FkZDogVGFza0ZpbHRlckNsb3VkTW9kZWwpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICByZXR1cm4gdGhpcy50YXNrRmlsdGVyQ2xvdWRTZXJ2aWNlLmFkZEZpbHRlcihmaWx0ZXJUb0FkZCkucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSk7XG4gICAgfVxuXG4gICAgaXNEaXNhYmxlZEZvckRlZmF1bHRGaWx0ZXJzKGFjdGlvbjogVGFza0ZpbHRlckFjdGlvbik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy50YXNrRmlsdGVyQ2xvdWRTZXJ2aWNlLmlzRGVmYXVsdEZpbHRlcih0aGlzLnRhc2tGaWx0ZXIubmFtZSkgJiZcbiAgICAgICAgICAgIEVkaXRUYXNrRmlsdGVyQ2xvdWRDb21wb25lbnQuQUNUSU9OU19ESVNBQkxFRF9CWV9ERUZBVUxULmluY2x1ZGVzKGFjdGlvbi5hY3Rpb25UeXBlKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHJlc3RvcmVEZWZhdWx0VGFza0ZpbHRlcnMoKTogT2JzZXJ2YWJsZTxUYXNrRmlsdGVyQ2xvdWRNb2RlbFtdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLnRhc2tGaWx0ZXJDbG91ZFNlcnZpY2UuZ2V0VGFza0xpc3RGaWx0ZXJzKHRoaXMuYXBwTmFtZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVMYXN0TW9kaWZpZWRQcm9wZXJ0eSgpOiBUYXNrRmlsdGVyUHJvcGVydGllc1tdIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJ0FERl9DTE9VRF9FRElUX1RBU0tfRklMVEVSLkxBQkVMLkxBU1RfTU9ESUZJRURfRlJPTScsXG4gICAgICAgICAgICAgICAgdHlwZTogJ2RhdGUnLFxuICAgICAgICAgICAgICAgIGtleTogJ2xhc3RNb2RpZmllZEZyb20nLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJ1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJ0FERl9DTE9VRF9FRElUX1RBU0tfRklMVEVSLkxBQkVMLkxBU1RfTU9ESUZJRURfVE8nLFxuICAgICAgICAgICAgICAgIHR5cGU6ICdkYXRlJyxcbiAgICAgICAgICAgICAgICBrZXk6ICdsYXN0TW9kaWZpZWRUbycsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnXG4gICAgICAgICAgICB9XG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRTdGF0dXNPcHRpb25zKCk6IERyb3Bkb3duT3B0aW9uW10ge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgeyB2YWx1ZTogVGFza1N0YXR1c0ZpbHRlci5BTEwsIGxhYmVsOiAnQURGX0NMT1VEX1RBU0tfRklMVEVSUy5TVEFUVVMuQUxMJyB9LFxuICAgICAgICAgICAgeyB2YWx1ZTogVGFza1N0YXR1c0ZpbHRlci5DUkVBVEVELCBsYWJlbDogJ0FERl9DTE9VRF9UQVNLX0ZJTFRFUlMuU1RBVFVTLkNSRUFURUQnIH0sXG4gICAgICAgICAgICB7IHZhbHVlOiBUYXNrU3RhdHVzRmlsdGVyLkFTU0lHTkVELCBsYWJlbDogJ0FERl9DTE9VRF9UQVNLX0ZJTFRFUlMuU1RBVFVTLkFTU0lHTkVEJyB9LFxuICAgICAgICAgICAgeyB2YWx1ZTogVGFza1N0YXR1c0ZpbHRlci5TVVNQRU5ERUQsIGxhYmVsOiAnQURGX0NMT1VEX1RBU0tfRklMVEVSUy5TVEFUVVMuU1VTUEVOREVEJyB9LFxuICAgICAgICAgICAgeyB2YWx1ZTogVGFza1N0YXR1c0ZpbHRlci5DQU5DRUxMRUQsIGxhYmVsOiAnQURGX0NMT1VEX1RBU0tfRklMVEVSUy5TVEFUVVMuQ0FOQ0VMTEVEJyB9LFxuICAgICAgICAgICAgeyB2YWx1ZTogVGFza1N0YXR1c0ZpbHRlci5DT01QTEVURUQsIGxhYmVsOiAnQURGX0NMT1VEX1RBU0tfRklMVEVSUy5TVEFUVVMuQ09NUExFVEVEJyB9XG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgY3JlYXRlVGFza0ZpbHRlclByb3BlcnRpZXMoKTogVGFza0ZpbHRlclByb3BlcnRpZXNbXSB7XG4gICAgICAgIGNvbnN0IHN0YXR1c09wdGlvbnMgPSB0aGlzLmdldFN0YXR1c09wdGlvbnMoKTtcbiAgICAgICAgY29uc3Qgc29ydFByb3BlcnRpZXMgPSB0aGlzLmNyZWF0ZVNvcnRQcm9wZXJ0aWVzO1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnQURGX0NMT1VEX0VESVRfVEFTS19GSUxURVIuTEFCRUwuQVBQX05BTUUnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICdzZWxlY3QnLFxuICAgICAgICAgICAgICAgIGtleTogJ2FwcE5hbWUnLFxuICAgICAgICAgICAgICAgIHZhbHVlOiB0aGlzLnRhc2tGaWx0ZXIuYXBwTmFtZSB8fCAnJyxcbiAgICAgICAgICAgICAgICBvcHRpb25zOiB0aGlzLmFwcGxpY2F0aW9uTmFtZXNcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICdBREZfQ0xPVURfRURJVF9UQVNLX0ZJTFRFUi5MQUJFTC5UQVNLX0lEJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAga2V5OiAndGFza0lkJyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJydcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICdBREZfQ0xPVURfRURJVF9UQVNLX0ZJTFRFUi5MQUJFTC5TVEFUVVMnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICdzZWxlY3QnLFxuICAgICAgICAgICAgICAgIGtleTogJ3N0YXR1cycsXG4gICAgICAgICAgICAgICAgdmFsdWU6IHRoaXMudGFza0ZpbHRlci5zdGF0dXMgfHwgc3RhdHVzT3B0aW9uc1swXS52YWx1ZSxcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBzdGF0dXNPcHRpb25zXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnQURGX0NMT1VEX0VESVRfVEFTS19GSUxURVIuTEFCRUwuQVNTSUdOTUVOVCcsXG4gICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgIGtleTogJ2Fzc2lnbmVlJyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogdGhpcy50YXNrRmlsdGVyLmFzc2lnbmVlIHx8ICcnXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnQURGX0NMT1VEX0VESVRfVEFTS19GSUxURVIuTEFCRUwuUFJPQ0VTU19ERUZfTkFNRScsXG4gICAgICAgICAgICAgICAgdHlwZTogJ3NlbGVjdCcsXG4gICAgICAgICAgICAgICAga2V5OiAncHJvY2Vzc0RlZmluaXRpb25OYW1lJyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogdGhpcy50YXNrRmlsdGVyLnByb2Nlc3NEZWZpbml0aW9uTmFtZSB8fCAnJyxcbiAgICAgICAgICAgICAgICBvcHRpb25zOiB0aGlzLnByb2Nlc3NEZWZpbml0aW9uTmFtZXNcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICdBREZfQ0xPVURfRURJVF9UQVNLX0ZJTFRFUi5MQUJFTC5QUk9DRVNTX0lOU1RBTkNFX0lEJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAga2V5OiAncHJvY2Vzc0luc3RhbmNlSWQnLFxuICAgICAgICAgICAgICAgIHZhbHVlOiB0aGlzLnByb2Nlc3NJbnN0YW5jZUlkIHx8IHRoaXMudGFza0ZpbHRlci5wcm9jZXNzSW5zdGFuY2VJZCB8fCAnJ1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJ0FERl9DTE9VRF9FRElUX1RBU0tfRklMVEVSLkxBQkVMLlBST0NFU1NfREVGX0lEJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAga2V5OiAncHJvY2Vzc0RlZmluaXRpb25JZCcsXG4gICAgICAgICAgICAgICAgdmFsdWU6IHRoaXMudGFza0ZpbHRlci5wcm9jZXNzRGVmaW5pdGlvbklkIHx8ICcnXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnQURGX0NMT1VEX0VESVRfVEFTS19GSUxURVIuTEFCRUwuVEFTS19OQU1FJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAga2V5OiAndGFza05hbWUnLFxuICAgICAgICAgICAgICAgIHZhbHVlOiB0aGlzLnRhc2tGaWx0ZXIudGFza05hbWUgfHwgJydcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICdBREZfQ0xPVURfRURJVF9UQVNLX0ZJTFRFUi5MQUJFTC5QQVJFTlRfVEFTS19JRCcsXG4gICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgIGtleTogJ3BhcmVudFRhc2tJZCcsXG4gICAgICAgICAgICAgICAgdmFsdWU6IHRoaXMudGFza0ZpbHRlci5wYXJlbnRUYXNrSWQgfHwgJydcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICdBREZfQ0xPVURfRURJVF9UQVNLX0ZJTFRFUi5MQUJFTC5QUklPUklUWScsXG4gICAgICAgICAgICAgICAgdHlwZTogJ3NlbGVjdCcsXG4gICAgICAgICAgICAgICAga2V5OiAncHJpb3JpdHknLFxuICAgICAgICAgICAgICAgIHZhbHVlOiB0aGlzLnRhc2tGaWx0ZXIucHJpb3JpdHkgfHwgJycsXG4gICAgICAgICAgICAgICAgb3B0aW9uczogdGhpcy50YXNrQ2xvdWRTZXJ2aWNlLnByaW9yaXRpZXNcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICdBREZfQ0xPVURfRURJVF9UQVNLX0ZJTFRFUi5MQUJFTC5PV05FUicsXG4gICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgIGtleTogJ293bmVyJyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogdGhpcy50YXNrRmlsdGVyLm93bmVyIHx8ICcnXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnQURGX0NMT1VEX0VESVRfVEFTS19GSUxURVIuTEFCRUwuQ1JFQVRFRF9EQVRFJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAnZGF0ZScsXG4gICAgICAgICAgICAgICAga2V5OiAnY3JlYXRlZERhdGUnLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJ1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJ0FERl9DTE9VRF9FRElUX1RBU0tfRklMVEVSLkxBQkVMLlNPUlQnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICdzZWxlY3QnLFxuICAgICAgICAgICAgICAgIGtleTogJ3NvcnQnLFxuICAgICAgICAgICAgICAgIHZhbHVlOiB0aGlzLnRhc2tGaWx0ZXIuc29ydCB8fCBzb3J0UHJvcGVydGllc1swXS52YWx1ZSxcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBzb3J0UHJvcGVydGllc1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJ0FERl9DTE9VRF9FRElUX1RBU0tfRklMVEVSLkxBQkVMLkRJUkVDVElPTicsXG4gICAgICAgICAgICAgICAgdHlwZTogJ3NlbGVjdCcsXG4gICAgICAgICAgICAgICAga2V5OiAnb3JkZXInLFxuICAgICAgICAgICAgICAgIHZhbHVlOiB0aGlzLnRhc2tGaWx0ZXIub3JkZXIgfHwgdGhpcy5zb3J0RGlyZWN0aW9uc1swXS52YWx1ZSxcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBbLi4udGhpcy5zb3J0RGlyZWN0aW9uc11cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICdBREZfQ0xPVURfRURJVF9UQVNLX0ZJTFRFUi5MQUJFTC5TVEFORF9BTE9ORScsXG4gICAgICAgICAgICAgICAgdHlwZTogJ2NoZWNrYm94JyxcbiAgICAgICAgICAgICAgICBrZXk6ICdzdGFuZGFsb25lJyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogdGhpcy50YXNrRmlsdGVyLnN0YW5kYWxvbmUgfHwgZmFsc2VcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICdBREZfQ0xPVURfRURJVF9UQVNLX0ZJTFRFUi5MQUJFTC5EVUVfREFURScsXG4gICAgICAgICAgICAgICAgdHlwZTogJ2RhdGUtcmFuZ2UnLFxuICAgICAgICAgICAgICAgIGtleTogJ2R1ZURhdGVSYW5nZScsXG4gICAgICAgICAgICAgICAgYXR0cmlidXRlczogeyBkYXRlVHlwZTogJ2R1ZURhdGVUeXBlJywgZnJvbTogJ19kdWVEYXRlRnJvbScsIHRvOiAnX2R1ZURhdGVUbycgfSxcbiAgICAgICAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgICAgICAgICBkdWVEYXRlVHlwZTogdGhpcy50YXNrRmlsdGVyLmR1ZURhdGVUeXBlIHx8IG51bGwsXG4gICAgICAgICAgICAgICAgICAgIF9kdWVEYXRlRnJvbTogdGhpcy50YXNrRmlsdGVyLmR1ZURhdGVGcm9tIHx8IG51bGwsXG4gICAgICAgICAgICAgICAgICAgIF9kdWVEYXRlVG86IHRoaXMudGFza0ZpbHRlci5kdWVEYXRlVG8gfHwgbnVsbFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZGF0ZUZpbHRlck9wdGlvbnM6IFtcbiAgICAgICAgICAgICAgICAgICAgRGF0ZUNsb3VkRmlsdGVyVHlwZS5OT19EQVRFLFxuICAgICAgICAgICAgICAgICAgICBEYXRlQ2xvdWRGaWx0ZXJUeXBlLlRPREFZLFxuICAgICAgICAgICAgICAgICAgICBEYXRlQ2xvdWRGaWx0ZXJUeXBlLlRPTU9SUk9XLFxuICAgICAgICAgICAgICAgICAgICBEYXRlQ2xvdWRGaWx0ZXJUeXBlLk5FWFRfN19EQVlTLFxuICAgICAgICAgICAgICAgICAgICBEYXRlQ2xvdWRGaWx0ZXJUeXBlLlJBTkdFXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJ0FERl9DTE9VRF9FRElUX1RBU0tfRklMVEVSLkxBQkVMLkNPTVBMRVRFRF9EQVRFJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAnZGF0ZS1yYW5nZScsXG4gICAgICAgICAgICAgICAga2V5OiAnY29tcGxldGVkRGF0ZVJhbmdlJyxcbiAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzOiB7IGRhdGVUeXBlOiAnY29tcGxldGVkRGF0ZVR5cGUnLCBmcm9tOiAnX2NvbXBsZXRlZEZyb20nLCB0bzogJ19jb21wbGV0ZWRUbycgfSxcbiAgICAgICAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZWREYXRlVHlwZTogdGhpcy50YXNrRmlsdGVyLmNvbXBsZXRlZERhdGVUeXBlIHx8IG51bGwsXG4gICAgICAgICAgICAgICAgICAgIF9jb21wbGV0ZWRGcm9tOiB0aGlzLnRhc2tGaWx0ZXIuY29tcGxldGVkRnJvbSB8fCBudWxsLFxuICAgICAgICAgICAgICAgICAgICBfY29tcGxldGVkVG86IHRoaXMudGFza0ZpbHRlci5jb21wbGV0ZWRUbyB8fCBudWxsXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJ0FERl9DTE9VRF9FRElUX1RBU0tfRklMVEVSLkxBQkVMLkNSRUFURURfREFURScsXG4gICAgICAgICAgICAgICAgdHlwZTogJ2RhdGUtcmFuZ2UnLFxuICAgICAgICAgICAgICAgIGtleTogJ2NyZWF0ZWREYXRlUmFuZ2UnLFxuICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHsgZGF0ZVR5cGU6ICdjcmVhdGVkRGF0ZVR5cGUnLCBmcm9tOiAnX2NyZWF0ZWRGcm9tJywgdG86ICdfY3JlYXRlZFRvJyB9LFxuICAgICAgICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICAgICAgICAgIGNyZWF0ZWREYXRlVHlwZTogdGhpcy50YXNrRmlsdGVyLmNyZWF0ZWREYXRlVHlwZSB8fCBudWxsLFxuICAgICAgICAgICAgICAgICAgICBfY3JlYXRlZEZyb206IHRoaXMudGFza0ZpbHRlci5jcmVhdGVkRnJvbSB8fCBudWxsLFxuICAgICAgICAgICAgICAgICAgICBfY3JlYXRlZFRvOiB0aGlzLnRhc2tGaWx0ZXIuY3JlYXRlZFRvIHx8IG51bGxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnQURGX0NMT1VEX0VESVRfVEFTS19GSUxURVIuTEFCRUwuQ09NUExFVEVEX0JZJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAncGVvcGxlJyxcbiAgICAgICAgICAgICAgICBrZXk6ICdjb21wbGV0ZWRCeScsXG4gICAgICAgICAgICAgICAgdmFsdWU6IHRoaXMudGFza0ZpbHRlci5jb21wbGV0ZWRCeSA/IFt0aGlzLnRhc2tGaWx0ZXIuY29tcGxldGVkQnldIDogbnVsbCxcbiAgICAgICAgICAgICAgICBzZWxlY3Rpb25Nb2RlOiAnc2luZ2xlJ1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJ0FERl9DTE9VRF9FRElUX1RBU0tfRklMVEVSLkxBQkVMLkFTU0lHTk1FTlQnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICdhc3NpZ25tZW50JyxcbiAgICAgICAgICAgICAgICBrZXk6ICdhc3NpZ25tZW50JyxcbiAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzOiB7IGFzc2lnbmVkVXNlcnM6ICdhc3NpZ25lZFVzZXJzJywgY2FuZGlkYXRlR3JvdXBzOiAnY2FuZGlkYXRlR3JvdXBzJyB9LFxuICAgICAgICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICAgICAgICAgIGFzc2lnbmVkVXNlcnM6IHRoaXMudGFza0ZpbHRlci5hc3NpZ25lZFVzZXJzIHx8IFtdLFxuICAgICAgICAgICAgICAgICAgICBjYW5kaWRhdGVHcm91cHM6IHRoaXMudGFza0ZpbHRlci5jYW5kaWRhdGVHcm91cHMgfHwgW11cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHNlbGVjdGlvbk1vZGU6ICdtdWx0aXBsZSdcbiAgICAgICAgICAgIH1cbiAgICAgICAgXTtcbiAgICB9XG59XG4iLCI8bWF0LWFjY29yZGlvbiBbaGlkZVRvZ2dsZV09XCJpc0xvYWRpbmdcIiBjbGFzcz1cImFkZi1lZGl0LXRhc2stZmlsdGVyXCI+XG4gICAgPG1hdC1leHBhbnNpb24tcGFuZWwgKGFmdGVyRXhwYW5kKT1cIm9uRXhwYW5kKClcIiAoY2xvc2VkKT1cIm9uQ2xvc2UoKVwiPlxuICAgICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXIgKm5nSWY9XCJ0YXNrRmlsdGVyXCIgaWQ9XCJhZGYtZWRpdC10YXNrLWZpbHRlci1leHBhbnNpb24taGVhZGVyXCIgY2xhc3M9XCJhZGYtZWRpdC10YXNrLWZpbHRlci1oZWFkZXJcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNMb2FkaW5nOyBlbHNlIGxvYWRpbmdUZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgIDxtYXQtcGFuZWwtdGl0bGUgKm5nSWY9XCJzaG93VGFza0ZpbHRlck5hbWVcIiBpZD1cImFkZi1lZGl0LXRhc2stZmlsdGVyLXRpdGxlLWlkXCIgY2xhc3M9XCJhZGYtZWRpdC10YXNrLWZpbHRlci1oZWFkZXJfX3RpdGxlXCJcbiAgICAgICAgICAgICAgICAgICAgPnt7dGFza0ZpbHRlci5uYW1lIHwgdHJhbnNsYXRlfX08L21hdC1wYW5lbC10aXRsZT5cbiAgICAgICAgICAgICAgICA8bWF0LXBhbmVsLWRlc2NyaXB0aW9uIGNsYXNzPVwiYWRmLWVkaXQtdGFzay1maWx0ZXItaGVhZGVyX19kZXNjcmlwdGlvblwiIGlkPVwiYWRmLWVkaXQtdGFzay1maWx0ZXItc3ViLXRpdGxlLWlkXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2hvd1RpdGxlXCI+e3sgJ0FERl9DTE9VRF9FRElUX1RBU0tfRklMVEVSLlRJVExFJyB8IHRyYW5zbGF0ZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2hvd0ZpbHRlckFjdGlvbnNcIiBjbGFzcz1cImFkZi1jbG91ZC1lZGl0LXRhc2stZmlsdGVyLWFjdGlvbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0b2dnbGVGaWx0ZXJBY3Rpb25zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdGb3I9XCJsZXQgZmlsdGVyQWN0aW9uIG9mIHRhc2tGaWx0ZXJBY3Rpb25zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cImZpbHRlckFjdGlvbi50b29sdGlwIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtYXV0b21hdGlvbi1pZF09XCInYWRmLWZpbHRlci1hY3Rpb24tJyArIGZpbHRlckFjdGlvbi5hY3Rpb25UeXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkQWN0aW9uKGZpbHRlckFjdGlvbilcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImV4ZWN1dGVGaWx0ZXJBY3Rpb25zKGZpbHRlckFjdGlvbilcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFkZi1pY29uIFt2YWx1ZV09XCJmaWx0ZXJBY3Rpb24uaWNvblwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9tYXQtcGFuZWwtZGVzY3JpcHRpb24+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbG9hZGluZ1RlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhZGYtY2xvdWQtZWRpdC10YXNrLWZpbHRlci1sb2FkaW5nLW1hcmdpblwiPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LXByb2dyZXNzLXNwaW5uZXIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIiBbZGlhbWV0ZXJdPVwiMzBcIiAvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc0xvYWRpbmc7XCI+XG4gICAgICAgICAgICA8Zm9ybSAqbmdJZj1cImVkaXRUYXNrRmlsdGVyRm9ybVwiIFtmb3JtR3JvdXBdPVwiZWRpdFRhc2tGaWx0ZXJGb3JtXCIgY2xhc3M9XCJhZGYtZWRpdC10YXNrLWZpbHRlci1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFkZi1lZGl0LXRhc2stZmlsdGVyLWZvcm1cIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdGFza0ZpbHRlclByb3BlcnR5IG9mIHRhc2tGaWx0ZXJQcm9wZXJ0aWVzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgW2Zsb2F0TGFiZWxdPVwiJ2F1dG8nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInRhc2tGaWx0ZXJQcm9wZXJ0eS50eXBlID09PSAnc2VsZWN0J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1hdXRvbWF0aW9uLWlkXT1cInRhc2tGaWx0ZXJQcm9wZXJ0eS5rZXlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsIGNsYXNzPVwiYWRmLWVkaXQtdGFzay1maWx0ZXItY29udGVudF9fc2VsZWN0LWxhYmVsXCI+e3t0YXNrRmlsdGVyUHJvcGVydHkubGFiZWwgfCB0cmFuc2xhdGV9fTwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtc2VsZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwidGFza0ZpbHRlclByb3BlcnR5LmtleVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtYXV0b21hdGlvbi1pZF09XCInYWRmLWNsb3VkLWVkaXQtdGFzay1wcm9wZXJ0eS0nICsgdGFza0ZpbHRlclByb3BlcnR5LmtleVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwib25TdGF0dXNDaGFuZ2UoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IHByb3BlcnR5T3B0aW9uIG9mIHRhc2tGaWx0ZXJQcm9wZXJ0eS5vcHRpb25zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwicHJvcGVydHlPcHRpb24udmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtYXV0b21hdGlvbi1pZF09XCInYWRmLWNsb3VkLWVkaXQtdGFzay1wcm9wZXJ0eS1vcHRpb25zLScgKyB0YXNrRmlsdGVyUHJvcGVydHkua2V5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcHJvcGVydHlPcHRpb24ubGFiZWwgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIFtmbG9hdExhYmVsXT1cIidhdXRvJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJ0YXNrRmlsdGVyUHJvcGVydHkudHlwZSA9PT0gJ3RleHQnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWF1dG9tYXRpb24taWRdPVwidGFza0ZpbHRlclByb3BlcnR5LmtleVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWwgY2xhc3M9XCJhZGYtZWRpdC10YXNrLWZpbHRlci1jb250ZW50X190ZXh0LWxhYmVsXCI+e3t0YXNrRmlsdGVyUHJvcGVydHkubGFiZWwgfCB0cmFuc2xhdGV9fTwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cInRhc2tGaWx0ZXJQcm9wZXJ0eS5rZXlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtYXV0b21hdGlvbi1pZF09XCInYWRmLWNsb3VkLWVkaXQtdGFzay1wcm9wZXJ0eS0nICsgdGFza0ZpbHRlclByb3BlcnR5LmtleVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIFtmbG9hdExhYmVsXT1cIidhdXRvJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJ0YXNrRmlsdGVyUHJvcGVydHkudHlwZSA9PT0gJ2RhdGUnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWF1dG9tYXRpb24taWRdPVwidGFza0ZpbHRlclByb3BlcnR5LmtleVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+e3t0YXNrRmlsdGVyUHJvcGVydHkubGFiZWwgfCB0cmFuc2xhdGV9fTwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5dXApPVwib25EYXRlQ2hhbmdlZCgkYW55KCRldmVudCkudGFyZ2V0LnZhbHVlLCB0YXNrRmlsdGVyUHJvcGVydHkpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVDaGFuZ2UpPVwib25EYXRlQ2hhbmdlZCgkZXZlbnQudmFsdWUsIHRhc2tGaWx0ZXJQcm9wZXJ0eSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWF0RGF0ZXBpY2tlcl09XCJkYXRlQ29udHJvbGxlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJ0YXNrRmlsdGVyUHJvcGVydHkubGFiZWwgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWF1dG9tYXRpb24taWRdPVwiJ2FkZi1jbG91ZC1lZGl0LXRhc2stcHJvcGVydHktJyArIHRhc2tGaWx0ZXJQcm9wZXJ0eS5rZXlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWRhdGVwaWNrZXItdG9nZ2xlIG1hdFN1ZmZpeFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcl09XCJkYXRlQ29udHJvbGxlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWF1dG9tYXRpb24taWRdPVwiJ2FkZi1jbG91ZC1lZGl0LXRhc2stcHJvcGVydHktZGF0ZS10b2dnbGUtJyArIHRhc2tGaWx0ZXJQcm9wZXJ0eS5rZXlcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZGF0ZXBpY2tlciAjZGF0ZUNvbnRyb2xsZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1hdXRvbWF0aW9uLWlkXT1cIidhZGYtY2xvdWQtZWRpdC10YXNrLXByb3BlcnR5LWRhdGUtcGlja2VyLScgKyB0YXNrRmlsdGVyUHJvcGVydHkua2V5XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWRmLWVkaXQtdGFzay1maWx0ZXItZGF0ZS1lcnJvci1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImhhc0Vycm9yKHRhc2tGaWx0ZXJQcm9wZXJ0eSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhZGYtZXJyb3ItdGV4dFwiPnt7J0FERl9UQVNLX0xJU1QuU1RBUlRfVEFTSy5GT1JNLkVSUk9SLkRBVEUnfHRyYW5zbGF0ZX19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJhZGYtZXJyb3ItaWNvblwiPndhcm5pbmc8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWRmLWVkaXQtdGFzay1maWx0ZXItY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInRhc2tGaWx0ZXJQcm9wZXJ0eS50eXBlID09PSAnY2hlY2tib3gnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1jaGVja2JveCBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJ0YXNrRmlsdGVyUHJvcGVydHkua2V5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtYXV0b21hdGlvbi1pZF09XCJ0YXNrRmlsdGVyUHJvcGVydHkua2V5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+e3t0YXNrRmlsdGVyUHJvcGVydHkubGFiZWwgfCB0cmFuc2xhdGV9fTwvbWF0LWNoZWNrYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhZGYtY2xvdWQtZGF0ZS1yYW5nZS1maWx0ZXIgI2RhdGVSYW5nZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwidGFza0ZpbHRlclByb3BlcnR5LnR5cGUgPT09ICdkYXRlLXJhbmdlJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Byb2Nlc3NGaWx0ZXJQcm9wZXJ0eV09XCJ0YXNrRmlsdGVyUHJvcGVydHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cInRhc2tGaWx0ZXJQcm9wZXJ0eS5kYXRlRmlsdGVyT3B0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVUeXBlQ2hhbmdlKT1cIm9uRGF0ZVR5cGVDaGFuZ2UoJGV2ZW50LCB0YXNrRmlsdGVyUHJvcGVydHkpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZUNoYW5nZWQpPVwib25EYXRlUmFuZ2VGaWx0ZXJDaGFuZ2VkKCRldmVudCwgdGFza0ZpbHRlclByb3BlcnR5KVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YWRmLWNsb3VkLXBlb3BsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwie3sgJ2FkZi1lZGl0LXRhc2stZmlsdGVyLScgKyB0YXNrRmlsdGVyUHJvcGVydHkua2V5IH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInRhc2tGaWx0ZXJQcm9wZXJ0eS50eXBlID09PSAncGVvcGxlJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ByZVNlbGVjdFVzZXJzXT1cInRhc2tGaWx0ZXJQcm9wZXJ0eS52YWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cInRhc2tGaWx0ZXJQcm9wZXJ0eS5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbGlkYXRlXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcHBOYW1lXT1cImFwcE5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttb2RlXT1cInRhc2tGaWx0ZXJQcm9wZXJ0eS5zZWxlY3Rpb25Nb2RlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlZFVzZXJzKT1cIm9uQ2hhbmdlZFVzZXIoJGV2ZW50LCB0YXNrRmlsdGVyUHJvcGVydHkpXCIgLz5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGFkZi1jbG91ZC10YXNrLWFzc2lnbm1lbnQtZmlsdGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJ0YXNrRmlsdGVyUHJvcGVydHkudHlwZSA9PT0gJ2Fzc2lnbm1lbnQnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGFza0ZpbHRlclByb3BlcnR5XT1cInRhc2tGaWx0ZXJQcm9wZXJ0eVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0YXR1c109XCJzZWxlY3RlZFN0YXR1c1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FwcE5hbWVdPVwiYXBwTmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFzc2lnbmVkVXNlcnNDaGFuZ2UpPVwib25Bc3NpZ25lZFVzZXJzQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhc3NpZ25lZEdyb3Vwc0NoYW5nZSk9XCJvbkFzc2lnbmVkR3JvdXBzQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhc3NpZ25tZW50VHlwZUNoYW5nZSk9XCJvbkFzc2lnbm1lbnRUeXBlQ2hhbmdlKCRldmVudClcIiAvPlxuXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9mb3JtPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L21hdC1leHBhbnNpb24tcGFuZWw+XG48L21hdC1hY2NvcmRpb24+XG4iXX0=