bpm-core 0.0.105 → 0.0.107

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 (131) hide show
  1. package/fesm2022/bpm-core.mjs +249 -257
  2. package/fesm2022/bpm-core.mjs.map +1 -1
  3. package/lib/components/shared-components/form-field/checkbox/checkbox.component.d.ts +2 -1
  4. package/lib/components/shared-components/form-field/control-value-accessor.directive.d.ts +1 -1
  5. package/lib/components/shared-components/form-field/doc-uploader/docs-uploader.component.d.ts +2 -1
  6. package/lib/components/shared-components/form-field/shared-imports.d.ts +2 -2
  7. package/lib/components/shared-components/form-field/textarea/special-chars.directive.d.ts +1 -1
  8. package/lib/components/shared-components/title-section/title-section.component.d.ts +1 -1
  9. package/lib/pipes/currency.pipe.d.ts +1 -1
  10. package/lib/pipes/format-as-password.pipe.d.ts +1 -1
  11. package/lib/validators/string-to-boolean.pipe.d.ts +1 -1
  12. package/lib/validators/text.directive.d.ts +1 -1
  13. package/lib/validators/timer.pipe.d.ts +1 -1
  14. package/package.json +2 -4
  15. package/esm2022/bpm-core.mjs +0 -5
  16. package/esm2022/lib/app/app.component.mjs +0 -79
  17. package/esm2022/lib/classes/form-validation.mjs +0 -80
  18. package/esm2022/lib/classes/index.mjs +0 -2
  19. package/esm2022/lib/components/app-component-sections/activities/activities.component.mjs +0 -44
  20. package/esm2022/lib/components/app-component-sections/approvals/approvals.component.mjs +0 -23
  21. package/esm2022/lib/components/app-component-sections/approvals-workflow/approvals-workflow.component.mjs +0 -113
  22. package/esm2022/lib/components/app-component-sections/faq-sidenav/faq-sidenav.component.mjs +0 -25
  23. package/esm2022/lib/components/app-component-sections/faqs/faqs.component.mjs +0 -27
  24. package/esm2022/lib/components/app-component-sections/faqs/index.mjs +0 -2
  25. package/esm2022/lib/components/app-component-sections/feedback-section/feedback-section.component.mjs +0 -237
  26. package/esm2022/lib/components/app-component-sections/form-section/form-section.component.mjs +0 -255
  27. package/esm2022/lib/components/app-component-sections/index.mjs +0 -9
  28. package/esm2022/lib/components/app-component-sections/layout/header/header.component.mjs +0 -79
  29. package/esm2022/lib/components/app-component-sections/layout/layout.component.mjs +0 -89
  30. package/esm2022/lib/components/app-component-sections/layout/side-nav/side-nav.component.mjs +0 -158
  31. package/esm2022/lib/components/app-component-sections/main-request-details/main-request-details.component.mjs +0 -34
  32. package/esm2022/lib/components/app-component-sections/previous-requests/previous-requests.component.mjs +0 -345
  33. package/esm2022/lib/components/app-component-sections/profile-section/profile-section.component.mjs +0 -45
  34. package/esm2022/lib/components/app-component-sections/service-header/service-header.component.mjs +0 -271
  35. package/esm2022/lib/components/app-component-sections/status/status.component.mjs +0 -38
  36. package/esm2022/lib/components/app-component-sections/workflow-section/workflow-section.component.mjs +0 -164
  37. package/esm2022/lib/components/shared-components/action-buttons/action-buttons.component.mjs +0 -138
  38. package/esm2022/lib/components/shared-components/dialogs/confirm-dialog/confirm-dialog.component.mjs +0 -30
  39. package/esm2022/lib/components/shared-components/dialogs/delete-dialog/delete-dialog.component.mjs +0 -29
  40. package/esm2022/lib/components/shared-components/dialogs/submit-dialog/submit-dialog.component.mjs +0 -67
  41. package/esm2022/lib/components/shared-components/form-field/add-attachment-section/add-attachment-section.component.mjs +0 -138
  42. package/esm2022/lib/components/shared-components/form-field/attachment-section/attachment-section.component.mjs +0 -234
  43. package/esm2022/lib/components/shared-components/form-field/base-component/base-component.component.mjs +0 -198
  44. package/esm2022/lib/components/shared-components/form-field/checkbox/checkbox.component.mjs +0 -91
  45. package/esm2022/lib/components/shared-components/form-field/control-value-accessor.directive.mjs +0 -185
  46. package/esm2022/lib/components/shared-components/form-field/custom-searchable-autocomplete/custom-searchable.component.mjs +0 -131
  47. package/esm2022/lib/components/shared-components/form-field/date-picker/date-format.mjs +0 -31
  48. package/esm2022/lib/components/shared-components/form-field/date-picker/date-picker.component.mjs +0 -175
  49. package/esm2022/lib/components/shared-components/form-field/date-range-picker/date-range-picker.component.mjs +0 -186
  50. package/esm2022/lib/components/shared-components/form-field/doc-uploader/docs-uploader.component.mjs +0 -525
  51. package/esm2022/lib/components/shared-components/form-field/form-label/form-label.component.mjs +0 -33
  52. package/esm2022/lib/components/shared-components/form-field/index.mjs +0 -26
  53. package/esm2022/lib/components/shared-components/form-field/info-item/info-item.component.mjs +0 -76
  54. package/esm2022/lib/components/shared-components/form-field/input/input.component.mjs +0 -71
  55. package/esm2022/lib/components/shared-components/form-field/input-autocomplete/index.mjs +0 -3
  56. package/esm2022/lib/components/shared-components/form-field/input-autocomplete/input-autocomplete.model.mjs +0 -2
  57. package/esm2022/lib/components/shared-components/form-field/input-currency/input-currency.component.mjs +0 -73
  58. package/esm2022/lib/components/shared-components/form-field/input-email/input-email.component.mjs +0 -69
  59. package/esm2022/lib/components/shared-components/form-field/input-mask/input-mask.component.mjs +0 -61
  60. package/esm2022/lib/components/shared-components/form-field/input-number/input-number.component.mjs +0 -74
  61. package/esm2022/lib/components/shared-components/form-field/input-telephone/input-telephone.component.mjs +0 -85
  62. package/esm2022/lib/components/shared-components/form-field/radio/radio.component.mjs +0 -52
  63. package/esm2022/lib/components/shared-components/form-field/repeated-list/repeated-list.component.mjs +0 -32
  64. package/esm2022/lib/components/shared-components/form-field/search-employee/search-employee.component.mjs +0 -192
  65. package/esm2022/lib/components/shared-components/form-field/select/select.component.mjs +0 -191
  66. package/esm2022/lib/components/shared-components/form-field/shared-imports.mjs +0 -36
  67. package/esm2022/lib/components/shared-components/form-field/table-list/table-list.component.mjs +0 -116
  68. package/esm2022/lib/components/shared-components/form-field/textarea/special-chars.directive.mjs +0 -39
  69. package/esm2022/lib/components/shared-components/form-field/textarea/textarea.component.mjs +0 -57
  70. package/esm2022/lib/components/shared-components/form-field/toggle-button/toggle-button.component.mjs +0 -90
  71. package/esm2022/lib/components/shared-components/form-field/validation-errors/validation-errors.component.mjs +0 -43
  72. package/esm2022/lib/components/shared-components/index.mjs +0 -9
  73. package/esm2022/lib/components/shared-components/table/table.component.mjs +0 -243
  74. package/esm2022/lib/components/shared-components/terms-conditions/terms-conditions.component.mjs +0 -31
  75. package/esm2022/lib/components/shared-components/title-section/title-section.component.mjs +0 -31
  76. package/esm2022/lib/constants/constants.mjs +0 -149
  77. package/esm2022/lib/constants/index.mjs +0 -2
  78. package/esm2022/lib/directives/ar.directive.mjs +0 -54
  79. package/esm2022/lib/directives/currency.directive.mjs +0 -92
  80. package/esm2022/lib/directives/en.directive.mjs +0 -51
  81. package/esm2022/lib/directives/number.directive.mjs +0 -68
  82. package/esm2022/lib/directives/skip-location.directive.mjs +0 -28
  83. package/esm2022/lib/enums/actions.enum.mjs +0 -22
  84. package/esm2022/lib/enums/colors.enum.mjs +0 -6
  85. package/esm2022/lib/enums/events.enum.mjs +0 -6
  86. package/esm2022/lib/functions/data-to-blob.mjs +0 -12
  87. package/esm2022/lib/functions/encode-password.mjs +0 -14
  88. package/esm2022/lib/functions/handel-error-response.mjs +0 -12
  89. package/esm2022/lib/functions/index.mjs +0 -5
  90. package/esm2022/lib/functions/is-valid-data.mjs +0 -42
  91. package/esm2022/lib/helpers/shared.helper.mjs +0 -26
  92. package/esm2022/lib/hooks/index.mjs +0 -3
  93. package/esm2022/lib/hooks/load-form.mjs +0 -13
  94. package/esm2022/lib/hooks/save-form.mjs +0 -18
  95. package/esm2022/lib/i18n/ar.mjs +0 -200
  96. package/esm2022/lib/i18n/en.mjs +0 -204
  97. package/esm2022/lib/i18n/index.mjs +0 -3
  98. package/esm2022/lib/interfaces/action.interface.mjs +0 -2
  99. package/esm2022/lib/interfaces/api-response.interface.mjs +0 -2
  100. package/esm2022/lib/interfaces/document-file.interface.mjs +0 -2
  101. package/esm2022/lib/interfaces/form-items.interface.mjs +0 -2
  102. package/esm2022/lib/interfaces/form.interface.mjs +0 -150
  103. package/esm2022/lib/interfaces/igate-user.interface.mjs +0 -2
  104. package/esm2022/lib/interfaces/index.mjs +0 -8
  105. package/esm2022/lib/interfaces/lov-list.interface.mjs +0 -2
  106. package/esm2022/lib/interfaces/lov.interface.mjs +0 -2
  107. package/esm2022/lib/interfaces/shared.interface.mjs +0 -2
  108. package/esm2022/lib/pipes/currency.pipe.mjs +0 -66
  109. package/esm2022/lib/pipes/format-as-password.pipe.mjs +0 -19
  110. package/esm2022/lib/pipes/index.mjs +0 -3
  111. package/esm2022/lib/pipes/status-style.pipe.mjs +0 -57
  112. package/esm2022/lib/pipes/translate.pipe.mjs +0 -36
  113. package/esm2022/lib/regex/index.mjs +0 -2
  114. package/esm2022/lib/regex/regex-patterns.mjs +0 -4
  115. package/esm2022/lib/services/action.service.ts.mjs +0 -25
  116. package/esm2022/lib/services/core.service.ts.mjs +0 -527
  117. package/esm2022/lib/services/feedBack.service.mjs +0 -81
  118. package/esm2022/lib/services/i18n.service.mjs +0 -36
  119. package/esm2022/lib/services/index.mjs +0 -6
  120. package/esm2022/lib/services/sidenav.service.mjs +0 -36
  121. package/esm2022/lib/testComponent/config/segment-dynamic-loader.config.mjs +0 -8
  122. package/esm2022/lib/testComponent/general-approver-section/general-approver-section.component.mjs +0 -90
  123. package/esm2022/lib/testComponent/request-details-section/request-details-section.component.mjs +0 -482
  124. package/esm2022/lib/testComponent/services/i18n.service.mjs +0 -39
  125. package/esm2022/lib/testComponent/services/segment-dynamic-loader.service.mjs +0 -54
  126. package/esm2022/lib/validators/id.validator.mjs +0 -66
  127. package/esm2022/lib/validators/index.mjs +0 -8
  128. package/esm2022/lib/validators/string-to-boolean.pipe.mjs +0 -16
  129. package/esm2022/lib/validators/text.directive.mjs +0 -50
  130. package/esm2022/lib/validators/timer.pipe.mjs +0 -19
  131. package/esm2022/public-api.mjs +0 -19
@@ -1,482 +0,0 @@
1
- import { Component, CUSTOM_ELEMENTS_SCHEMA, DestroyRef, inject, Input, NO_ERRORS_SCHEMA } from '@angular/core';
2
- import { NgClass } from "@angular/common";
3
- import { ActionButtonsComponent, AttachmentSectionComponent, CheckBoxComponent, CustomSearchableComponent, DatePickerComponent, DateRangePickerComponent, InputComponent, InputCurrencyComponent, InputEmailComponent, InputNumberComponent, InputTelephoneComponent, RadioComponent, SearchEmployeeComponent, TextareaComponent } from '../../components/shared-components';
4
- import { ToggleButtonComponent } from "../../components/shared-components";
5
- import { TableComponent } from '../../components/shared-components/table/table.component';
6
- import { ReactiveFormsModule, Validators, FormControl } from "@angular/forms";
7
- import { DocsUploaderComponent } from "../../components/shared-components";
8
- import { TranslatePipe } from '../../pipes/translate.pipe';
9
- import * as i0 from "@angular/core";
10
- import * as i1 from "../../services";
11
- import * as i2 from "@angular/forms";
12
- // import { TranslatePipe } from '../../pipes/translate.pipe';
13
- export class RequestDetailsSectionComponent {
14
- i18n;
15
- fb;
16
- actionStateService;
17
- isReadOnly;
18
- section;
19
- form;
20
- lov;
21
- isLoading = false;
22
- className = "info-section";
23
- formGroup;
24
- options = ['Option 1', 'Option 2', 'Option 3'];
25
- DEFAULT_PAGE_SIZE = 10;
26
- DEFAULT_PAGE_NUMBER = 0;
27
- pageNumber = this.DEFAULT_PAGE_NUMBER;
28
- pageSize = this.DEFAULT_PAGE_SIZE;
29
- columnsConfig = [];
30
- columns = [];
31
- destroyRef = inject(DestroyRef);
32
- requiredSearchable;
33
- isError = false;
34
- categoryData = [
35
- {
36
- "assetDeviceType": null,
37
- "brand": "Benq",
38
- "colors": null,
39
- "assetCompanies": null,
40
- "descAr": null,
41
- "descEn": null,
42
- "estoreVisible": false,
43
- "id": "402",
44
- "model": "B400",
45
- "files": null,
46
- "vendors": [
47
- {
48
- "id": 71,
49
- "vendorName": null,
50
- "vendorNumber": "26",
51
- "__typename": "VendorDto"
52
- }
53
- ],
54
- "category": null,
55
- "assetType": "Scanner",
56
- "classifications": null,
57
- "consumedCount": 0,
58
- "consumedPercentage": 0,
59
- "specs": [
60
- "4GB"
61
- ],
62
- "sumQuantity": 1,
63
- "__typename": "AllAssetsDto"
64
- },
65
- {
66
- "assetDeviceType": null,
67
- "brand": "HP",
68
- "colors": null,
69
- "assetCompanies": null,
70
- "descAr": null,
71
- "descEn": null,
72
- "estoreVisible": false,
73
- "id": "403",
74
- "model": "EliteBook",
75
- "files": null,
76
- "vendors": [
77
- {
78
- "id": 71,
79
- "vendorName": null,
80
- "vendorNumber": "26",
81
- "__typename": "VendorDto"
82
- }
83
- ],
84
- "category": null,
85
- "assetType": "Laptop",
86
- "classifications": null,
87
- "consumedCount": 0,
88
- "consumedPercentage": 0,
89
- "specs": [
90
- "512GB"
91
- ],
92
- "sumQuantity": 1,
93
- "__typename": "AllAssetsDto"
94
- },
95
- {
96
- "assetDeviceType": null,
97
- "brand": "Hp",
98
- "colors": null,
99
- "assetCompanies": null,
100
- "descAr": null,
101
- "descEn": null,
102
- "estoreVisible": false,
103
- "id": "404",
104
- "model": "Laser",
105
- "files": null,
106
- "vendors": [
107
- {
108
- "id": 71,
109
- "vendorName": null,
110
- "vendorNumber": "26",
111
- "__typename": "VendorDto"
112
- }
113
- ],
114
- "category": null,
115
- "assetType": "Printer",
116
- "classifications": null,
117
- "consumedCount": 0,
118
- "consumedPercentage": 0,
119
- "specs": [
120
- "2GB"
121
- ],
122
- "sumQuantity": 1,
123
- "__typename": "AllAssetsDto"
124
- },
125
- {
126
- "assetDeviceType": null,
127
- "brand": "Asus",
128
- "colors": null,
129
- "assetCompanies": null,
130
- "descAr": null,
131
- "descEn": null,
132
- "estoreVisible": false,
133
- "id": "405",
134
- "model": "A500",
135
- "files": null,
136
- "vendors": [
137
- {
138
- "id": 71,
139
- "vendorName": null,
140
- "vendorNumber": "26",
141
- "__typename": "VendorDto"
142
- }
143
- ],
144
- "category": null,
145
- "assetType": "Laptop",
146
- "classifications": null,
147
- "consumedCount": 0,
148
- "consumedPercentage": 0,
149
- "specs": [
150
- "1TB"
151
- ],
152
- "sumQuantity": 1,
153
- "__typename": "AllAssetsDto"
154
- },
155
- {
156
- "assetDeviceType": null,
157
- "brand": "Dell",
158
- "colors": null,
159
- "assetCompanies": null,
160
- "descAr": null,
161
- "descEn": null,
162
- "estoreVisible": false,
163
- "id": "407",
164
- "model": "Latitude",
165
- "files": null,
166
- "vendors": [
167
- {
168
- "id": 71,
169
- "vendorName": null,
170
- "vendorNumber": "26",
171
- "__typename": "VendorDto"
172
- }
173
- ],
174
- "category": null,
175
- "assetType": "Laptop",
176
- "classifications": null,
177
- "consumedCount": 0,
178
- "consumedPercentage": 0,
179
- "specs": [
180
- "1TB"
181
- ],
182
- "sumQuantity": 4,
183
- "__typename": "AllAssetsDto"
184
- },
185
- {
186
- "assetDeviceType": null,
187
- "brand": "Samsung",
188
- "colors": null,
189
- "assetCompanies": null,
190
- "descAr": null,
191
- "descEn": null,
192
- "estoreVisible": false,
193
- "id": "408",
194
- "model": "Galaxy",
195
- "files": null,
196
- "vendors": [
197
- {
198
- "id": 71,
199
- "vendorName": null,
200
- "vendorNumber": "26",
201
- "__typename": "VendorDto"
202
- }
203
- ],
204
- "category": null,
205
- "assetType": "Tablet",
206
- "classifications": null,
207
- "consumedCount": 0,
208
- "consumedPercentage": 0,
209
- "specs": [
210
- "256GB"
211
- ],
212
- "sumQuantity": 1,
213
- "__typename": "AllAssetsDto"
214
- }
215
- ];
216
- totalElements = 6;
217
- constructor(i18n, fb, actionStateService) {
218
- this.i18n = i18n;
219
- this.fb = fb;
220
- this.actionStateService = actionStateService;
221
- }
222
- ngOnInit() {
223
- this.createForm();
224
- let data = this.section.body.details;
225
- for (const key in data) {
226
- if (key !== 'decision') {
227
- this.formGroup.patchValue({ [key]: data[key] });
228
- }
229
- }
230
- // this.initializeTableConfig()
231
- /* this.formGroup.get('checkbox').valueChanges.subscribe(res=> {
232
- if (res){
233
- this.formGroup.get('customSearchable').setValidators(Validators.required)
234
- this.requiredSearchable = true;
235
- console.log(this.requiredSearchable)
236
- }else {
237
- this.formGroup.get('customSearchable').clearValidators();
238
- this.requiredSearchable = false
239
- console.log(this.requiredSearchable)
240
- }
241
- this.formGroup.get('customSearchable').updateValueAndValidity();
242
-
243
- })*/
244
- }
245
- initializeTableConfig() {
246
- this.initializeColumns();
247
- this.initializeColumnConfig();
248
- }
249
- initializeColumns() {
250
- this.columns = ['id', 'assetType', 'brand', 'model', 'sumQuantity', 'specs', 'allocate'];
251
- }
252
- initializeColumnConfig() {
253
- this.columnsConfig = [
254
- {
255
- label: 'Id',
256
- type: 'text',
257
- },
258
- {
259
- label: 'Asset Type',
260
- type: 'text',
261
- },
262
- {
263
- label: 'Brand',
264
- type: 'text'
265
- },
266
- {
267
- label: 'Model',
268
- type: 'text'
269
- },
270
- {
271
- label: 'Quantity',
272
- type: 'formId'
273
- },
274
- {
275
- label: 'Capacity',
276
- type: 'specs',
277
- clickableText: 'View'
278
- },
279
- {
280
- label: 'Actions',
281
- type: 'actions',
282
- actions: [
283
- { viewMode: 'allocate', actionName: "Allocate", disabled: true },
284
- {
285
- viewMode: 'edit', actionName: "Edit", action: "edit", onClick: (asset) => {
286
- this.editAsset(asset);
287
- },
288
- },
289
- {
290
- viewMode: 'delete', actionName: "Delete", action: "delete", onClick: (asset) => {
291
- this.deleteAsset(asset);
292
- },
293
- },
294
- { viewMode: 'chart', actionName: "Chart", action: "chart" },
295
- ]
296
- },
297
- ];
298
- }
299
- createForm() {
300
- let newForm = {
301
- input1: ['', Validators.required]
302
- };
303
- this.lov?.['decision']?.options?.forEach(option => {
304
- newForm[option.value] = [''];
305
- });
306
- this.formGroup = this.fb.group({
307
- // input: new FormControl(null),
308
- // currencyInput: new FormControl(null, Validators.required),
309
- // emailInput: new FormControl({value: null, disabled: true}, Validators.required),
310
- // numberInput: new FormControl(null, Validators.required),
311
- // customSearchable: new FormControl(null, Validators.required),
312
- // checkbox: new FormControl(null, [Validators.requiredTrue, Validators.required]),
313
- // textArea: new FormControl(null, [Validators.required, Validators.maxLength(5)]),
314
- // datePicker: new FormControl(null, Validators.required),
315
- // datePickerRange: new FormControl(null, Validators.required),
316
- // radio: new FormControl(null, Validators.required),
317
- // toggle: new FormControl(null, Validators.required),
318
- // telephone: new FormControl(null, Validators.required),
319
- // searchEmployee: new FormControl(null, Validators.required),
320
- // // ...newForm,
321
- // attachment: new FormControl(null, Validators.required),
322
- attachmentSection: new FormControl([], Validators.required),
323
- });
324
- /* if(this.lov?.['decision']?.options?.length){
325
-
326
- }else{
327
-
328
- }*/
329
- this.lov?.['decision']?.options?.forEach(option => {
330
- let isActionValid = this.checkValidity(option.value);
331
- this.actionStateService.setActionValid(option.value, isActionValid);
332
- console.log('isActionValid', isActionValid);
333
- });
334
- // this.formGroup = this.fb.group({
335
- // input: new FormControl(null),
336
- // currencyInput: new FormControl(null),
337
- // emailInput: new FormControl({value: null,disabled: true}),
338
- // numberInput: new FormControl(null),
339
- // customSearchable: new FormControl(null),
340
- // checkbox: new FormControl(null),
341
- // textArea: new FormControl(null),
342
- // datePicker: new FormControl(null),
343
- // datePickerRange: new FormControl(null),
344
- // radio: new FormControl(null),
345
- // toggle: new FormControl(null),
346
- // telephone: new FormControl(null),
347
- // searchEmployee: new FormControl(null),
348
- // // ...newForm,
349
- // attachment: new FormControl(null),
350
- // attachmentSection: new FormControl([]),
351
- // });
352
- this.formGroup.setValue(this.section.body.details);
353
- // console.log(this.section.body.detils);
354
- // console.log(this.lov?.['approverActions']?.options)
355
- this.formGroup.valueChanges.subscribe(value => {
356
- this.lov?.['decision']?.options?.forEach(option => {
357
- let isActionValid = this.checkValidity(option.value);
358
- this.actionStateService.setActionValid(option.value, isActionValid);
359
- this.section.body.details = { ...this.section.body.details, ...this.formGroup.value };
360
- });
361
- });
362
- }
363
- // this.formGroup.valueChanges.subscribe(value => {
364
- // this.lov?.['decision']?.options?.forEach(option => {
365
- // let isActionValid = this.checkValidity(option.value);
366
- // this.actionStateService.setActionValid(option.value, isActionValid);
367
- // this.section.body.details = this.formGroup.value
368
- // /!*{
369
- // input1: this.fieldsForm.get('input1').value
370
- // }*!/
371
- // })
372
- // })
373
- // }
374
- // createForm() {
375
- // this.formGroup = this.fb.group({
376
- // customerName: new FormControl(null, [Validators.required]),
377
- // customerPhone: new FormControl(null, [Validators.required]),
378
- // reasonForRequest: new FormControl(null, [Validators.required]),
379
- // callType: new FormControl(null, [Validators.required]),
380
- // centerOfCalls: new FormControl(null, [Validators.required]),
381
- // callDate: new FormControl(null, [Validators.required]),
382
- // agreement: new FormControl(null, [Validators.required,Validators.requiredTrue]),
383
- // });
384
- // this.formGroup.valueChanges.pipe(
385
- // takeUntilDestroyed(this.destroyRef)
386
- // ).subscribe(value => {
387
- // this.lov?.['decision']?.options?.forEach(option => {
388
- // let isActionValid = this.checkValidity(option.value);
389
- // this.actionStateService.setActionValid(option.value, isActionValid);
390
- // this.section.body.details = this.formGroup.value
391
- // this.section.body.details.customerPhone = this.section.body.details.customerPhone?.e164Number
392
- // // this.section.body.details.agreement = (this.section.body.details.agreement).toString()
393
- // })
394
- // })
395
- // console.log(this.lov?.['decision']?.options)
396
- // console.log(this.section.body.details)
397
- // this.formGroup.setValue(this.section.body.details);
398
- // console.log('customCallSubmit', this.formGroup.value)
399
- // }
400
- editAsset(asset) {
401
- console.log(asset);
402
- }
403
- startsWithDMOEOrCR() {
404
- return (control) => {
405
- const value = control.value;
406
- if (value && (value.startsWith('DMOE-') || value.startsWith('CR-'))) {
407
- return null; // Valid
408
- }
409
- return { startsWithInvalid: true }; // Invalid
410
- };
411
- }
412
- deleteAsset(asset) {
413
- console.log(asset);
414
- }
415
- formValue(form) {
416
- console.log(form.value);
417
- }
418
- checkValidity(action) {
419
- switch (action) {
420
- case 'SUBMIT':
421
- return this.formGroup.valid;
422
- case 'APPROVE':
423
- return true;
424
- case 'REJECT':
425
- return this.formGroup.valid;
426
- case 'SENDBACK':
427
- return this.formGroup.valid;
428
- case 'SAVE_CHANGES':
429
- return true;
430
- default:
431
- return false;
432
- }
433
- }
434
- customCallSubmit(action) {
435
- console.log('customCallSubmit', action);
436
- }
437
- resetForm() {
438
- this.actionStateService.resetAction$.next();
439
- }
440
- pageChanged(event) {
441
- this.pageNumber = event.pageIndex;
442
- this.pageSize = event.pageSize;
443
- }
444
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: RequestDetailsSectionComponent, deps: [{ token: i1.CoreI18nService }, { token: i2.FormBuilder }, { token: i1.ActionStateService }], target: i0.ɵɵFactoryTarget.Component });
445
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.8", type: RequestDetailsSectionComponent, isStandalone: true, selector: "app-request-details-section", inputs: { isReadOnly: "isReadOnly", section: "section", form: "form", lov: "lov", className: "className" }, ngImport: i0, template: "<div>\r\n <form [ngClass]=\"{'form-section-divide form-section':!section?.header?.readOnly,'info-section':section?.header?.readOnly}\" [formGroup]=\"formGroup\">\r\n\r\n <app-attachment-section\r\n class=\"section-item full\"\r\n [descriptionRequired]=\"false\"\r\n label=\"Attachment section\"\r\n [commentsRequired]=\"false\"\r\n [isReadOnly]=\"isReadOnly\"\r\n formControlName=\"attachmentSection\"></app-attachment-section>\r\n\r\n<!-- {{formGroup.valid}}-->\r\n<!-- <app-input class=\"section-item full\" [isReadOnly]=\"false\" [mandatory]=\"true\" [loading]=\"true\" type=\"enOnly\" formControlName=\"input\" label=\"Input\"></app-input>-->\r\n<!-- <app-checkbox\r\n class=\"section-item full\"\r\n [isReadOnly]=\"isReadOnly\"\r\n formControlName=\"checkbox\"\r\n termsLabel=\"Terms and conditions\"\r\n label=\"check-box\"\r\n [containTerms]=\"true\"></app-checkbox>-->\r\n <!--\r\n <app-search-employee\r\n class=\"section-item full\"\r\n [multiple]=\"true\"\r\n [arrayList]=\"formGroup.get('searchEmployee').value\"\r\n [isReadOnly]=\"isReadOnly\"\r\n formControlName=\"searchEmployee\"\r\n label=\"Search-employee\"></app-search-employee>\r\n <app-input class=\"section-item full\" [isReadOnly]=\"isReadOnly\" [loading]=\"true\" type=\"enOnly\" formControlName=\"input\" label=\"Input\"></app-input>\r\n <app-input-currency class=\"section-item full\" [isReadOnly]=\"isReadOnly\" formControlName=\"currencyInput\" label=\"currency\"></app-input-currency>\r\n <app-input-email class=\"section-item full\" [isReadOnly]=\"isReadOnly\" formControlName=\"emailInput\" label=\"email\"></app-input-email>\r\n <app-input-number class=\"section-item full\" [isReadOnly]=\"isReadOnly\" formControlName=\"numberInput\" label=\"number\"></app-input-number>\r\n <app-custom-searchable\r\n class=\"section-item mb-0 full\"\r\n [isReadOnly]=\"isReadOnly\"\r\n formControlName=\"customSearchable\"\r\n label=\"Custom-searchable\"\r\n [options]=\"lov?.['approverActions']?.options\"\r\n [displayedLabel]=\"'name'\"\r\n [key]=\"'name'\"></app-custom-searchable>\r\n <app-checkbox\r\n class=\"section-item full\"\r\n [isReadOnly]=\"isReadOnly\"\r\n formControlName=\"checkbox\"\r\n termsLabel=\"Terms and conditions\"\r\n label=\"check-box\"\r\n [containTerms]=\"true\"></app-checkbox>\r\n <app-textarea class=\"section-item full\" [isReadOnly]=\"isReadOnly\" formControlName=\"textArea\" label=\"Text-area\"></app-textarea>\r\n\r\n <app-date-range-picker\r\n class=\"section-item full\"\r\n [isReadOnly]=\"isReadOnly\"\r\n formControlName=\"datePickerRange\"\r\n label=\"Date-picker-range\"\r\n [matSuffix]=\"true\"></app-date-range-picker>\r\n <app-radio class=\"section-item full\" [isReadOnly]=\"isReadOnly\" formControlName=\"radio\" [options]=\"options\" label=\"Radio\"></app-radio>-->\r\n <!-- <app-toggle-button\r\n class=\"section-item full\"\r\n [isReadOnly]=\"isReadOnly\"\r\n formControlName=\"toggle\"\r\n [options]=\"lov?.['decision']?.options\"\r\n label=\"Toggle-button\"\r\n [displayedLabel]=\"'description'\"\r\n [key]=\"'value'\"></app-toggle-button>-->\r\n <!--<app-input-telephone class=\"section-item full\" [isReadOnly]=\"isReadOnly\" formControlName=\"telephone\" label=\"Telephone\"></app-input-telephone>\r\n\r\n <app-file-uploader\r\n class=\"section-item full\"\r\n [callApi]=\"true\"\r\n [isReadOnly]=\"isReadOnly\"\r\n [multiple]=\"false\"\r\n label=\"attachment\"\r\n formControlName=\"attachment\"></app-file-uploader>\r\n\r\n <app-attachment-section\r\n class=\"section-item full\"\r\n [descriptionRequired]=\"false\"\r\n label=\"Attachment section\"\r\n [commentsRequired]=\"false\"\r\n [isReadOnly]=\"isReadOnly\"\r\n formControlName=\"attachmentSection\"></app-attachment-section>\r\n-->\r\n\r\n\r\n\r\n <!-- <app-table\r\n [columnsConfig]=\"columnsConfig\"\r\n [columns]=\"columns\"\r\n [isError]=\"isError\"\r\n [isLoading]=\"isLoading\"\r\n [rows]=\"categoryData\" [hasPaginator]=\"true\"\r\n [pageSize]=\"pageSize\" [currentPage]=\"pageNumber\"\r\n [totalElements]=\"totalElements\"\r\n (pageChange)=\"pageChanged($event)\"\r\n class=\"new-primary-table full\">\r\n </app-table> -->\r\n\r\n<!-- <app-datepicker\r\n class=\"section-item full\"\r\n [isReadOnly]=\"false\"\r\n formControlName=\"datePicker\"\r\n [matSuffix]=\"true\"\r\n label=\"Date-picker\"></app-datepicker>-->\r\n\r\n\r\n </form>\r\n\r\n\r\n</div>\r\n@if (!section?.header?.readOnly) {\r\n <div class=\"mt-4\">\r\n <lib-action-buttons\r\n [lovOptions]=\"lov?.['decision']?.options\"\r\n [lovType]=\"lov?.['decision']?.type\"\r\n [section]=\"section\"\r\n [form]=\"form\"\r\n [sections]=\"form.sections\"\r\n [showApprovalCycle]=\"true\"\r\n [customCall]=\"false\"\r\n [fieldsForm]=\"formGroup\"\r\n (customCallEmit)=\"customCallSubmit($event)\"\r\n (resetFormEmit)=\"resetForm()\"\r\n />\r\n </div>\r\n}\r\n", styles: [".form-section-divide{--form-section-columns: 1fr 1fr}@media (max-width: 756px){.form-section-divide{--form-section-columns: 100%}}.form-section-divide .full{grid-column:1/-1}.head-title{position:relative;margin-bottom:12px}.head-title h3{display:inline-block;color:#8e9aa0;font-size:14px;font-weight:500;background-color:#fff;padding-inline-end:20px;position:relative;z-index:2;margin:0}.head-title:after{content:\"\";position:absolute;width:100%;height:1px;background-color:#dee0e2;top:50%;left:0;right:0;transform:translateY(-50%);z-index:1}.chamber{margin-bottom:20px}.chamber .chamber-content{background-color:#f8f8f8;padding:20px}.chamber .chamber-content .chamber-select{display:flex}.chamber .chamber-content mat-checkbox{font-size:14px}.section-item{margin-bottom:20px}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: ActionButtonsComponent, selector: "lib-action-buttons", inputs: ["lovOptions", "lovType", "fieldsForm", "form", "section", "sections", "showApprovalCycle", "customCall"], outputs: ["resetFormEmit", "customCallEmit"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: AttachmentSectionComponent, selector: "app-attachment-section", inputs: ["className", "customDownload", "attachmentsMax", "isSortable", "downloadAll", "isRequired", "descriptionRequired", "commentsRequired", "allowedExtensions"], outputs: ["downloadActionClicked", "emitedValue"] }] });
446
- }
447
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: RequestDetailsSectionComponent, decorators: [{
448
- type: Component,
449
- args: [{ selector: 'app-request-details-section', standalone: true, schemas: [CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA], imports: [
450
- NgClass,
451
- InputComponent,
452
- ActionButtonsComponent,
453
- ReactiveFormsModule,
454
- CustomSearchableComponent,
455
- CheckBoxComponent,
456
- TextareaComponent,
457
- InputCurrencyComponent,
458
- DatePickerComponent,
459
- DateRangePickerComponent,
460
- InputEmailComponent,
461
- InputNumberComponent,
462
- RadioComponent,
463
- ToggleButtonComponent,
464
- InputTelephoneComponent,
465
- DocsUploaderComponent,
466
- SearchEmployeeComponent,
467
- AttachmentSectionComponent,
468
- TableComponent,
469
- TranslatePipe
470
- ], template: "<div>\r\n <form [ngClass]=\"{'form-section-divide form-section':!section?.header?.readOnly,'info-section':section?.header?.readOnly}\" [formGroup]=\"formGroup\">\r\n\r\n <app-attachment-section\r\n class=\"section-item full\"\r\n [descriptionRequired]=\"false\"\r\n label=\"Attachment section\"\r\n [commentsRequired]=\"false\"\r\n [isReadOnly]=\"isReadOnly\"\r\n formControlName=\"attachmentSection\"></app-attachment-section>\r\n\r\n<!-- {{formGroup.valid}}-->\r\n<!-- <app-input class=\"section-item full\" [isReadOnly]=\"false\" [mandatory]=\"true\" [loading]=\"true\" type=\"enOnly\" formControlName=\"input\" label=\"Input\"></app-input>-->\r\n<!-- <app-checkbox\r\n class=\"section-item full\"\r\n [isReadOnly]=\"isReadOnly\"\r\n formControlName=\"checkbox\"\r\n termsLabel=\"Terms and conditions\"\r\n label=\"check-box\"\r\n [containTerms]=\"true\"></app-checkbox>-->\r\n <!--\r\n <app-search-employee\r\n class=\"section-item full\"\r\n [multiple]=\"true\"\r\n [arrayList]=\"formGroup.get('searchEmployee').value\"\r\n [isReadOnly]=\"isReadOnly\"\r\n formControlName=\"searchEmployee\"\r\n label=\"Search-employee\"></app-search-employee>\r\n <app-input class=\"section-item full\" [isReadOnly]=\"isReadOnly\" [loading]=\"true\" type=\"enOnly\" formControlName=\"input\" label=\"Input\"></app-input>\r\n <app-input-currency class=\"section-item full\" [isReadOnly]=\"isReadOnly\" formControlName=\"currencyInput\" label=\"currency\"></app-input-currency>\r\n <app-input-email class=\"section-item full\" [isReadOnly]=\"isReadOnly\" formControlName=\"emailInput\" label=\"email\"></app-input-email>\r\n <app-input-number class=\"section-item full\" [isReadOnly]=\"isReadOnly\" formControlName=\"numberInput\" label=\"number\"></app-input-number>\r\n <app-custom-searchable\r\n class=\"section-item mb-0 full\"\r\n [isReadOnly]=\"isReadOnly\"\r\n formControlName=\"customSearchable\"\r\n label=\"Custom-searchable\"\r\n [options]=\"lov?.['approverActions']?.options\"\r\n [displayedLabel]=\"'name'\"\r\n [key]=\"'name'\"></app-custom-searchable>\r\n <app-checkbox\r\n class=\"section-item full\"\r\n [isReadOnly]=\"isReadOnly\"\r\n formControlName=\"checkbox\"\r\n termsLabel=\"Terms and conditions\"\r\n label=\"check-box\"\r\n [containTerms]=\"true\"></app-checkbox>\r\n <app-textarea class=\"section-item full\" [isReadOnly]=\"isReadOnly\" formControlName=\"textArea\" label=\"Text-area\"></app-textarea>\r\n\r\n <app-date-range-picker\r\n class=\"section-item full\"\r\n [isReadOnly]=\"isReadOnly\"\r\n formControlName=\"datePickerRange\"\r\n label=\"Date-picker-range\"\r\n [matSuffix]=\"true\"></app-date-range-picker>\r\n <app-radio class=\"section-item full\" [isReadOnly]=\"isReadOnly\" formControlName=\"radio\" [options]=\"options\" label=\"Radio\"></app-radio>-->\r\n <!-- <app-toggle-button\r\n class=\"section-item full\"\r\n [isReadOnly]=\"isReadOnly\"\r\n formControlName=\"toggle\"\r\n [options]=\"lov?.['decision']?.options\"\r\n label=\"Toggle-button\"\r\n [displayedLabel]=\"'description'\"\r\n [key]=\"'value'\"></app-toggle-button>-->\r\n <!--<app-input-telephone class=\"section-item full\" [isReadOnly]=\"isReadOnly\" formControlName=\"telephone\" label=\"Telephone\"></app-input-telephone>\r\n\r\n <app-file-uploader\r\n class=\"section-item full\"\r\n [callApi]=\"true\"\r\n [isReadOnly]=\"isReadOnly\"\r\n [multiple]=\"false\"\r\n label=\"attachment\"\r\n formControlName=\"attachment\"></app-file-uploader>\r\n\r\n <app-attachment-section\r\n class=\"section-item full\"\r\n [descriptionRequired]=\"false\"\r\n label=\"Attachment section\"\r\n [commentsRequired]=\"false\"\r\n [isReadOnly]=\"isReadOnly\"\r\n formControlName=\"attachmentSection\"></app-attachment-section>\r\n-->\r\n\r\n\r\n\r\n <!-- <app-table\r\n [columnsConfig]=\"columnsConfig\"\r\n [columns]=\"columns\"\r\n [isError]=\"isError\"\r\n [isLoading]=\"isLoading\"\r\n [rows]=\"categoryData\" [hasPaginator]=\"true\"\r\n [pageSize]=\"pageSize\" [currentPage]=\"pageNumber\"\r\n [totalElements]=\"totalElements\"\r\n (pageChange)=\"pageChanged($event)\"\r\n class=\"new-primary-table full\">\r\n </app-table> -->\r\n\r\n<!-- <app-datepicker\r\n class=\"section-item full\"\r\n [isReadOnly]=\"false\"\r\n formControlName=\"datePicker\"\r\n [matSuffix]=\"true\"\r\n label=\"Date-picker\"></app-datepicker>-->\r\n\r\n\r\n </form>\r\n\r\n\r\n</div>\r\n@if (!section?.header?.readOnly) {\r\n <div class=\"mt-4\">\r\n <lib-action-buttons\r\n [lovOptions]=\"lov?.['decision']?.options\"\r\n [lovType]=\"lov?.['decision']?.type\"\r\n [section]=\"section\"\r\n [form]=\"form\"\r\n [sections]=\"form.sections\"\r\n [showApprovalCycle]=\"true\"\r\n [customCall]=\"false\"\r\n [fieldsForm]=\"formGroup\"\r\n (customCallEmit)=\"customCallSubmit($event)\"\r\n (resetFormEmit)=\"resetForm()\"\r\n />\r\n </div>\r\n}\r\n", styles: [".form-section-divide{--form-section-columns: 1fr 1fr}@media (max-width: 756px){.form-section-divide{--form-section-columns: 100%}}.form-section-divide .full{grid-column:1/-1}.head-title{position:relative;margin-bottom:12px}.head-title h3{display:inline-block;color:#8e9aa0;font-size:14px;font-weight:500;background-color:#fff;padding-inline-end:20px;position:relative;z-index:2;margin:0}.head-title:after{content:\"\";position:absolute;width:100%;height:1px;background-color:#dee0e2;top:50%;left:0;right:0;transform:translateY(-50%);z-index:1}.chamber{margin-bottom:20px}.chamber .chamber-content{background-color:#f8f8f8;padding:20px}.chamber .chamber-content .chamber-select{display:flex}.chamber .chamber-content mat-checkbox{font-size:14px}.section-item{margin-bottom:20px}\n"] }]
471
- }], ctorParameters: () => [{ type: i1.CoreI18nService }, { type: i2.FormBuilder }, { type: i1.ActionStateService }], propDecorators: { isReadOnly: [{
472
- type: Input
473
- }], section: [{
474
- type: Input
475
- }], form: [{
476
- type: Input
477
- }], lov: [{
478
- type: Input
479
- }], className: [{
480
- type: Input
481
- }] } });
482
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC1kZXRhaWxzLXNlY3Rpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi90ZXN0Q29tcG9uZW50L3JlcXVlc3QtZGV0YWlscy1zZWN0aW9uL3JlcXVlc3QtZGV0YWlscy1zZWN0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JwbS1jb3JlL3NyYy9saWIvdGVzdENvbXBvbmVudC9yZXF1ZXN0LWRldGFpbHMtc2VjdGlvbi9yZXF1ZXN0LWRldGFpbHMtc2VjdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLHNCQUFzQixFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixFQUFTLE1BQU0sZUFBZSxDQUFDO0FBR3JILE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN4QyxPQUFPLEVBQ0wsc0JBQXNCLEVBQ3RCLDBCQUEwQixFQUMxQixpQkFBaUIsRUFDakIseUJBQXlCLEVBQ3pCLG1CQUFtQixFQUNuQix3QkFBd0IsRUFDeEIsY0FBYyxFQUNkLHNCQUFzQixFQUN0QixtQkFBbUIsRUFDbkIsb0JBQW9CLEVBQ3BCLHVCQUF1QixFQUN2QixjQUFjLEVBQ2QsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNsQixNQUFNLG9DQUFvQyxDQUFDO0FBRTVDLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLG9DQUFvQyxDQUFDO0FBQ3pFLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSwwREFBMEQsQ0FBQztBQUV4RixPQUFPLEVBQXlCLG1CQUFtQixFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQStCLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEksT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sb0NBQW9DLENBQUM7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QixvQkFBb0I7d0JBQ3BCLGNBQWM7d0JBQ2QscUJBQXFCO3dCQUNyQix1QkFBdUI7d0JBQ3ZCLHFCQUFxQjt3QkFDckIsdUJBQXVCO3dCQUN2QiwwQkFBMEI7d0JBQzFCLGNBQWM7d0JBQ2QsYUFBYTtxQkFDZDsrSUFNUSxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csR0FBRztzQkFBWCxLQUFLO2dCQUdHLFNBQVM7c0JBQWpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgRGVzdHJveVJlZiwgaW5qZWN0LCBJbnB1dCwgTk9fRVJST1JTX1NDSEVNQSwgT25Jbml0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtGb3JtLCBTZWN0aW9ufSBmcm9tIFwiLi4vLi4vaW50ZXJmYWNlc1wiO1xyXG5pbXBvcnQge0FjdGlvblN0YXRlU2VydmljZSwgQ29yZUkxOG5TZXJ2aWNlfSBmcm9tIFwiLi4vLi4vc2VydmljZXNcIjtcclxuaW1wb3J0IHtOZ0NsYXNzfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCB7XHJcbiAgQWN0aW9uQnV0dG9uc0NvbXBvbmVudCxcclxuICBBdHRhY2htZW50U2VjdGlvbkNvbXBvbmVudCxcclxuICBDaGVja0JveENvbXBvbmVudCxcclxuICBDdXN0b21TZWFyY2hhYmxlQ29tcG9uZW50LFxyXG4gIERhdGVQaWNrZXJDb21wb25lbnQsXHJcbiAgRGF0ZVJhbmdlUGlja2VyQ29tcG9uZW50LFxyXG4gIElucHV0Q29tcG9uZW50LFxyXG4gIElucHV0Q3VycmVuY3lDb21wb25lbnQsXHJcbiAgSW5wdXRFbWFpbENvbXBvbmVudCxcclxuICBJbnB1dE51bWJlckNvbXBvbmVudCxcclxuICBJbnB1dFRlbGVwaG9uZUNvbXBvbmVudCxcclxuICBSYWRpb0NvbXBvbmVudCxcclxuICBTZWFyY2hFbXBsb3llZUNvbXBvbmVudCxcclxuICBUZXh0YXJlYUNvbXBvbmVudFxyXG59IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvc2hhcmVkLWNvbXBvbmVudHMnO1xyXG5pbXBvcnQge1JlZ2V4UGF0dGVybnN9IGZyb20gJy4uLy4uL3JlZ2V4L3JlZ2V4LXBhdHRlcm5zJztcclxuaW1wb3J0IHtUb2dnbGVCdXR0b25Db21wb25lbnR9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3NoYXJlZC1jb21wb25lbnRzXCI7XHJcbmltcG9ydCB7VGFibGVDb21wb25lbnR9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvc2hhcmVkLWNvbXBvbmVudHMvdGFibGUvdGFibGUuY29tcG9uZW50JztcclxuaW1wb3J0IHt0YWtlVW50aWxEZXN0cm95ZWR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcclxuaW1wb3J0IHtGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBWYWxpZGF0b3JzLCBGb3JtQ29udHJvbCwgVmFsaWRhdG9yRm4sIEFic3RyYWN0Q29udHJvbH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7RG9jc1VwbG9hZGVyQ29tcG9uZW50fSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy9zaGFyZWQtY29tcG9uZW50c1wiO1xyXG5pbXBvcnQge1RyYW5zbGF0ZVBpcGV9IGZyb20gJy4uLy4uL3BpcGVzL3RyYW5zbGF0ZS5waXBlJztcclxuXHJcbi8vIGltcG9ydCB7IFRyYW5zbGF0ZVBpcGUgfSBmcm9tICcuLi8uLi9waXBlcy90cmFuc2xhdGUucGlwZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1yZXF1ZXN0LWRldGFpbHMtc2VjdGlvbicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3JlcXVlc3QtZGV0YWlscy1zZWN0aW9uLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9yZXF1ZXN0LWRldGFpbHMtc2VjdGlvbi5jb21wb25lbnQuc2NzcyddLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgc2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUEsIE5PX0VSUk9SU19TQ0hFTUFdLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIE5nQ2xhc3MsXHJcbiAgICBJbnB1dENvbXBvbmVudCxcclxuICAgIEFjdGlvbkJ1dHRvbnNDb21wb25lbnQsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgQ3VzdG9tU2VhcmNoYWJsZUNvbXBvbmVudCxcclxuICAgIENoZWNrQm94Q29tcG9uZW50LFxyXG4gICAgVGV4dGFyZWFDb21wb25lbnQsXHJcbiAgICBJbnB1dEN1cnJlbmN5Q29tcG9uZW50LFxyXG4gICAgRGF0ZVBpY2tlckNvbXBvbmVudCxcclxuICAgIERhdGVSYW5nZVBpY2tlckNvbXBvbmVudCxcclxuICAgIElucHV0RW1haWxDb21wb25lbnQsXHJcbiAgICBJbnB1dE51bWJlckNvbXBvbmVudCxcclxuICAgIFJhZGlvQ29tcG9uZW50LFxyXG4gICAgVG9nZ2xlQnV0dG9uQ29tcG9uZW50LFxyXG4gICAgSW5wdXRUZWxlcGhvbmVDb21wb25lbnQsXHJcbiAgICBEb2NzVXBsb2FkZXJDb21wb25lbnQsXHJcbiAgICBTZWFyY2hFbXBsb3llZUNvbXBvbmVudCxcclxuICAgIEF0dGFjaG1lbnRTZWN0aW9uQ29tcG9uZW50LFxyXG4gICAgVGFibGVDb21wb25lbnQsXHJcbiAgICBUcmFuc2xhdGVQaXBlXHJcbiAgXVxyXG59KVxyXG5cclxuXHJcbmV4cG9ydCBjbGFzcyBSZXF1ZXN0RGV0YWlsc1NlY3Rpb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBASW5wdXQoKSBpc1JlYWRPbmx5OiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIHNlY3Rpb246IFNlY3Rpb247XHJcbiAgQElucHV0KCkgZm9ybTogRm9ybTtcclxuICBASW5wdXQoKSBsb3Y6IGFueTtcclxuICBpc0xvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KCkgY2xhc3NOYW1lOiBzdHJpbmcgPSBcImluZm8tc2VjdGlvblwiO1xyXG4gIGZvcm1Hcm91cDogRm9ybUdyb3VwO1xyXG4gIG9wdGlvbnM6IHN0cmluZ1tdID0gWydPcHRpb24gMScsICdPcHRpb24gMicsICdPcHRpb24gMyddO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgREVGQVVMVF9QQUdFX1NJWkUgPSAxMDtcclxuICBwcml2YXRlIHJlYWRvbmx5IERFRkFVTFRfUEFHRV9OVU1CRVIgPSAwO1xyXG4gIHBhZ2VOdW1iZXI6IG51bWJlciA9IHRoaXMuREVGQVVMVF9QQUdFX05VTUJFUjtcclxuICBwYWdlU2l6ZTogbnVtYmVyID0gdGhpcy5ERUZBVUxUX1BBR0VfU0laRTtcclxuICBjb2x1bW5zQ29uZmlnOiBhbnlbXSA9IFtdO1xyXG4gIGNvbHVtbnM6IHN0cmluZ1tdID0gW107XHJcbiAgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcclxuICByZXF1aXJlZFNlYXJjaGFibGU6IGJvb2xlYW47XHJcblxyXG4gIGlzRXJyb3I6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBjYXRlZ29yeURhdGEgPSBbXHJcbiAgICB7XHJcbiAgICAgIFwiYXNzZXREZXZpY2VUeXBlXCI6IG51bGwsXHJcbiAgICAgIFwiYnJhbmRcIjogXCJCZW5xXCIsXHJcbiAgICAgIFwiY29sb3JzXCI6IG51bGwsXHJcbiAgICAgIFwiYXNzZXRDb21wYW5pZXNcIjogbnVsbCxcclxuICAgICAgXCJkZXNjQXJcIjogbnVsbCxcclxuICAgICAgXCJkZXNjRW5cIjogbnVsbCxcclxuICAgICAgXCJlc3RvcmVWaXNpYmxlXCI6IGZhbHNlLFxyXG4gICAgICBcImlkXCI6IFwiNDAyXCIsXHJcbiAgICAgIFwibW9kZWxcIjogXCJCNDAwXCIsXHJcbiAgICAgIFwiZmlsZXNcIjogbnVsbCxcclxuICAgICAgXCJ2ZW5kb3JzXCI6IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBcImlkXCI6IDcxLFxyXG4gICAgICAgICAgXCJ2ZW5kb3JOYW1lXCI6IG51bGwsXHJcbiAgICAgICAgICBcInZlbmRvck51bWJlclwiOiBcIjI2XCIsXHJcbiAgICAgICAgICBcIl9fdHlwZW5hbWVcIjogXCJWZW5kb3JEdG9cIlxyXG4gICAgICAgIH1cclxuICAgICAgXSxcclxuICAgICAgXCJjYXRlZ29yeVwiOiBudWxsLFxyXG4gICAgICBcImFzc2V0VHlwZVwiOiBcIlNjYW5uZXJcIixcclxuICAgICAgXCJjbGFzc2lmaWNhdGlvbnNcIjogbnVsbCxcclxuICAgICAgXCJjb25zdW1lZENvdW50XCI6IDAsXHJcbiAgICAgIFwiY29uc3VtZWRQZXJjZW50YWdlXCI6IDAsXHJcbiAgICAgIFwic3BlY3NcIjogW1xyXG4gICAgICAgIFwiNEdCXCJcclxuICAgICAgXSxcclxuICAgICAgXCJzdW1RdWFudGl0eVwiOiAxLFxyXG4gICAgICBcIl9fdHlwZW5hbWVcIjogXCJBbGxBc3NldHNEdG9cIlxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJhc3NldERldmljZVR5cGVcIjogbnVsbCxcclxuICAgICAgXCJicmFuZFwiOiBcIkhQXCIsXHJcbiAgICAgIFwiY29sb3JzXCI6IG51bGwsXHJcbiAgICAgIFwiYXNzZXRDb21wYW5pZXNcIjogbnVsbCxcclxuICAgICAgXCJkZXNjQXJcIjogbnVsbCxcclxuICAgICAgXCJkZXNjRW5cIjogbnVsbCxcclxuICAgICAgXCJlc3RvcmVWaXNpYmxlXCI6IGZhbHNlLFxyXG4gICAgICBcImlkXCI6IFwiNDAzXCIsXHJcbiAgICAgIFwibW9kZWxcIjogXCJFbGl0ZUJvb2tcIixcclxuICAgICAgXCJmaWxlc1wiOiBudWxsLFxyXG4gICAgICBcInZlbmRvcnNcIjogW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIFwiaWRcIjogNzEsXHJcbiAgICAgICAgICBcInZlbmRvck5hbWVcIjogbnVsbCxcclxuICAgICAgICAgIFwidmVuZG9yTnVtYmVyXCI6IFwiMjZcIixcclxuICAgICAgICAgIFwiX190eXBlbmFtZVwiOiBcIlZlbmRvckR0b1wiXHJcbiAgICAgICAgfVxyXG4gICAgICBdLFxyXG4gICAgICBcImNhdGVnb3J5XCI6IG51bGwsXHJcbiAgICAgIFwiYXNzZXRUeXBlXCI6IFwiTGFwdG9wXCIsXHJcbiAgICAgIFwiY2xhc3NpZmljYXRpb25zXCI6IG51bGwsXHJcbiAgICAgIFwiY29uc3VtZWRDb3VudFwiOiAwLFxyXG4gICAgICBcImNvbnN1bWVkUGVyY2VudGFnZVwiOiAwLFxyXG4gICAgICBcInNwZWNzXCI6IFtcclxuICAgICAgICBcIjUxMkdCXCJcclxuICAgICAgXSxcclxuICAgICAgXCJzdW1RdWFudGl0eVwiOiAxLFxyXG4gICAgICBcIl9fdHlwZW5hbWVcIjogXCJBbGxBc3NldHNEdG9cIlxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJhc3NldERldmljZVR5cGVcIjogbnVsbCxcclxuICAgICAgXCJicmFuZFwiOiBcIkhwXCIsXHJcbiAgICAgIFwiY29sb3JzXCI6IG51bGwsXHJcbiAgICAgIFwiYXNzZXRDb21wYW5pZXNcIjogbnVsbCxcclxuICAgICAgXCJkZXNjQXJcIjogbnVsbCxcclxuICAgICAgXCJkZXNjRW5cIjogbnVsbCxcclxuICAgICAgXCJlc3RvcmVWaXNpYmxlXCI6IGZhbHNlLFxyXG4gICAgICBcImlkXCI6IFwiNDA0XCIsXHJcbiAgICAgIFwibW9kZWxcIjogXCJMYXNlclwiLFxyXG4gICAgICBcImZpbGVzXCI6IG51bGwsXHJcbiAgICAgIFwidmVuZG9yc1wiOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgXCJpZFwiOiA3MSxcclxuICAgICAgICAgIFwidmVuZG9yTmFtZVwiOiBudWxsLFxyXG4gICAgICAgICAgXCJ2ZW5kb3JOdW1iZXJcIjogXCIyNlwiLFxyXG4gICAgICAgICAgXCJfX3R5cGVuYW1lXCI6IFwiVmVuZG9yRHRvXCJcclxuICAgICAgICB9XHJcbiAgICAgIF0sXHJcbiAgICAgIFwiY2F0ZWdvcnlcIjogbnVsbCxcclxuICAgICAgXCJhc3NldFR5cGVcIjogXCJQcmludGVyXCIsXHJcbiAgICAgIFwiY2xhc3NpZmljYXRpb25zXCI6IG51bGwsXHJcbiAgICAgIFwiY29uc3VtZWRDb3VudFwiOiAwLFxyXG4gICAgICBcImNvbnN1bWVkUGVyY2VudGFnZVwiOiAwLFxyXG4gICAgICBcInNwZWNzXCI6IFtcclxuICAgICAgICBcIjJHQlwiXHJcbiAgICAgIF0sXHJcbiAgICAgIFwic3VtUXVhbnRpdHlcIjogMSxcclxuICAgICAgXCJfX3R5cGVuYW1lXCI6IFwiQWxsQXNzZXRzRHRvXCJcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiYXNzZXREZXZpY2VUeXBlXCI6IG51bGwsXHJcbiAgICAgIFwiYnJhbmRcIjogXCJBc3VzXCIsXHJcbiAgICAgIFwiY29sb3JzXCI6IG51bGwsXHJcbiAgICAgIFwiYXNzZXRDb21wYW5pZXNcIjogbnVsbCxcclxuICAgICAgXCJkZXNjQXJcIjogbnVsbCxcclxuICAgICAgXCJkZXNjRW5cIjogbnVsbCxcclxuICAgICAgXCJlc3RvcmVWaXNpYmxlXCI6IGZhbHNlLFxyXG4gICAgICBcImlkXCI6IFwiNDA1XCIsXHJcbiAgICAgIFwibW9kZWxcIjogXCJBNTAwXCIsXHJcbiAgICAgIFwiZmlsZXNcIjogbnVsbCxcclxuICAgICAgXCJ2ZW5kb3JzXCI6IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBcImlkXCI6IDcxLFxyXG4gICAgICAgICAgXCJ2ZW5kb3JOYW1lXCI6IG51bGwsXHJcbiAgICAgICAgICBcInZlbmRvck51bWJlclwiOiBcIjI2XCIsXHJcbiAgICAgICAgICBcIl9fdHlwZW5hbWVcIjogXCJWZW5kb3JEdG9cIlxyXG4gICAgICAgIH1cclxuICAgICAgXSxcclxuICAgICAgXCJjYXRlZ29yeVwiOiBudWxsLFxyXG4gICAgICBcImFzc2V0VHlwZVwiOiBcIkxhcHRvcFwiLFxyXG4gICAgICBcImNsYXNzaWZpY2F0aW9uc1wiOiBudWxsLFxyXG4gICAgICBcImNvbnN1bWVkQ291bnRcIjogMCxcclxuICAgICAgXCJjb25zdW1lZFBlcmNlbnRhZ2VcIjogMCxcclxuICAgICAgXCJzcGVjc1wiOiBbXHJcbiAgICAgICAgXCIxVEJcIlxyXG4gICAgICBdLFxyXG4gICAgICBcInN1bVF1YW50aXR5XCI6IDEsXHJcbiAgICAgIFwiX190eXBlbmFtZVwiOiBcIkFsbEFzc2V0c0R0b1wiXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImFzc2V0RGV2aWNlVHlwZVwiOiBudWxsLFxyXG4gICAgICBcImJyYW5kXCI6IFwiRGVsbFwiLFxyXG4gICAgICBcImNvbG9yc1wiOiBudWxsLFxyXG4gICAgICBcImFzc2V0Q29tcGFuaWVzXCI6IG51bGwsXHJcbiAgICAgIFwiZGVzY0FyXCI6IG51bGwsXHJcbiAgICAgIFwiZGVzY0VuXCI6IG51bGwsXHJcbiAgICAgIFwiZXN0b3JlVmlzaWJsZVwiOiBmYWxzZSxcclxuICAgICAgXCJpZFwiOiBcIjQwN1wiLFxyXG4gICAgICBcIm1vZGVsXCI6IFwiTGF0aXR1ZGVcIixcclxuICAgICAgXCJmaWxlc1wiOiBudWxsLFxyXG4gICAgICBcInZlbmRvcnNcIjogW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIFwiaWRcIjogNzEsXHJcbiAgICAgICAgICBcInZlbmRvck5hbWVcIjogbnVsbCxcclxuICAgICAgICAgIFwidmVuZG9yTnVtYmVyXCI6IFwiMjZcIixcclxuICAgICAgICAgIFwiX190eXBlbmFtZVwiOiBcIlZlbmRvckR0b1wiXHJcbiAgICAgICAgfVxyXG4gICAgICBdLFxyXG4gICAgICBcImNhdGVnb3J5XCI6IG51bGwsXHJcbiAgICAgIFwiYXNzZXRUeXBlXCI6IFwiTGFwdG9wXCIsXHJcbiAgICAgIFwiY2xhc3NpZmljYXRpb25zXCI6IG51bGwsXHJcbiAgICAgIFwiY29uc3VtZWRDb3VudFwiOiAwLFxyXG4gICAgICBcImNvbnN1bWVkUGVyY2VudGFnZVwiOiAwLFxyXG4gICAgICBcInNwZWNzXCI6IFtcclxuICAgICAgICBcIjFUQlwiXHJcbiAgICAgIF0sXHJcbiAgICAgIFwic3VtUXVhbnRpdHlcIjogNCxcclxuICAgICAgXCJfX3R5cGVuYW1lXCI6IFwiQWxsQXNzZXRzRHRvXCJcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiYXNzZXREZXZpY2VUeXBlXCI6IG51bGwsXHJcbiAgICAgIFwiYnJhbmRcIjogXCJTYW1zdW5nXCIsXHJcbiAgICAgIFwiY29sb3JzXCI6IG51bGwsXHJcbiAgICAgIFwiYXNzZXRDb21wYW5pZXNcIjogbnVsbCxcclxuICAgICAgXCJkZXNjQXJcIjogbnVsbCxcclxuICAgICAgXCJkZXNjRW5cIjogbnVsbCxcclxuICAgICAgXCJlc3RvcmVWaXNpYmxlXCI6IGZhbHNlLFxyXG4gICAgICBcImlkXCI6IFwiNDA4XCIsXHJcbiAgICAgIFwibW9kZWxcIjogXCJHYWxheHlcIixcclxuICAgICAgXCJmaWxlc1wiOiBudWxsLFxyXG4gICAgICBcInZlbmRvcnNcIjogW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIFwiaWRcIjogNzEsXHJcbiAgICAgICAgICBcInZlbmRvck5hbWVcIjogbnVsbCxcclxuICAgICAgICAgIFwidmVuZG9yTnVtYmVyXCI6IFwiMjZcIixcclxuICAgICAgICAgIFwiX190eXBlbmFtZVwiOiBcIlZlbmRvckR0b1wiXHJcbiAgICAgICAgfVxyXG4gICAgICBdLFxyXG4gICAgICBcImNhdGVnb3J5XCI6IG51bGwsXHJcbiAgICAgIFwiYXNzZXRUeXBlXCI6IFwiVGFibGV0XCIsXHJcbiAgICAgIFwiY2xhc3NpZmljYXRpb25zXCI6IG51bGwsXHJcbiAgICAgIFwiY29uc3VtZWRDb3VudFwiOiAwLFxyXG4gICAgICBcImNvbnN1bWVkUGVyY2VudGFnZVwiOiAwLFxyXG4gICAgICBcInNwZWNzXCI6IFtcclxuICAgICAgICBcIjI1NkdCXCJcclxuICAgICAgXSxcclxuICAgICAgXCJzdW1RdWFudGl0eVwiOiAxLFxyXG4gICAgICBcIl9fdHlwZW5hbWVcIjogXCJBbGxBc3NldHNEdG9cIlxyXG4gICAgfVxyXG4gIF1cclxuXHJcbiAgdG90YWxFbGVtZW50czogbnVtYmVyID0gNjtcclxuXHJcblxyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBpMThuOiBDb3JlSTE4blNlcnZpY2UsIHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyLCBwcml2YXRlIGFjdGlvblN0YXRlU2VydmljZTogQWN0aW9uU3RhdGVTZXJ2aWNlKSB7XHJcblxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmNyZWF0ZUZvcm0oKTtcclxuICAgIGxldCBkYXRhID0gdGhpcy5zZWN0aW9uLmJvZHkuZGV0YWlsc1xyXG4gICAgZm9yIChjb25zdCBrZXkgaW4gZGF0YSkge1xyXG4gICAgICBpZiAoa2V5ICE9PSAnZGVjaXNpb24nKSB7XHJcbiAgICAgICAgdGhpcy5mb3JtR3JvdXAucGF0Y2hWYWx1ZSh7W2tleV06IGRhdGFba2V5XX0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyB0aGlzLmluaXRpYWxpemVUYWJsZUNvbmZpZygpXHJcbiAgICAvKiAgICB0aGlzLmZvcm1Hcm91cC5nZXQoJ2NoZWNrYm94JykudmFsdWVDaGFuZ2VzLnN1YnNjcmliZShyZXM9PiB7XHJcbiAgICAgICAgICBpZiAocmVzKXtcclxuICAgICAgICAgICAgdGhpcy5mb3JtR3JvdXAuZ2V0KCdjdXN0b21TZWFyY2hhYmxlJykuc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLnJlcXVpcmVkKVxyXG4gICAgICAgICAgICB0aGlzLnJlcXVpcmVkU2VhcmNoYWJsZSA9IHRydWU7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKHRoaXMucmVxdWlyZWRTZWFyY2hhYmxlKVxyXG4gICAgICAgICAgIH1lbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5mb3JtR3JvdXAuZ2V0KCdjdXN0b21TZWFyY2hhYmxlJykuY2xlYXJWYWxpZGF0b3JzKCk7XHJcbiAgICAgICAgICAgIHRoaXMucmVxdWlyZWRTZWFyY2hhYmxlID0gZmFsc2VcclxuICAgICAgICAgICAgY29uc29sZS5sb2codGhpcy5yZXF1aXJlZFNlYXJjaGFibGUpXHJcbiAgICAgICAgICAgfVxyXG4gICAgICAgICAgIHRoaXMuZm9ybUdyb3VwLmdldCgnY3VzdG9tU2VhcmNoYWJsZScpLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuXHJcbiAgICAgICAgfSkqL1xyXG4gIH1cclxuXHJcblxyXG4gIGluaXRpYWxpemVUYWJsZUNvbmZpZygpIHtcclxuICAgIHRoaXMuaW5pdGlhbGl6ZUNvbHVtbnMoKVxyXG4gICAgdGhpcy5pbml0aWFsaXplQ29sdW1uQ29uZmlnKClcclxuXHJcbiAgfVxyXG5cclxuICBpbml0aWFsaXplQ29sdW1ucygpIHtcclxuICAgIHRoaXMuY29sdW1ucyA9IFsnaWQnLCAnYXNzZXRUeXBlJywgJ2JyYW5kJywgJ21vZGVsJywgJ3N1bVF1YW50aXR5JywgJ3NwZWNzJywgJ2FsbG9jYXRlJ107XHJcbiAgfVxyXG5cclxuICBpbml0aWFsaXplQ29sdW1uQ29uZmlnKCkge1xyXG4gICAgdGhpcy5jb2x1bW5zQ29uZmlnID0gW1xyXG4gICAgICB7XHJcbiAgICAgICAgbGFiZWw6ICdJZCcsXHJcbiAgICAgICAgdHlwZTogJ3RleHQnLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgbGFiZWw6ICdBc3NldCBUeXBlJyxcclxuICAgICAgICB0eXBlOiAndGV4dCcsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBsYWJlbDogJ0JyYW5kJyxcclxuICAgICAgICB0eXBlOiAndGV4dCdcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGxhYmVsOiAnTW9kZWwnLFxyXG4gICAgICAgIHR5cGU6ICd0ZXh0J1xyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgbGFiZWw6ICdRdWFudGl0eScsXHJcbiAgICAgICAgdHlwZTogJ2Zvcm1JZCdcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGxhYmVsOiAnQ2FwYWNpdHknLFxyXG4gICAgICAgIHR5cGU6ICdzcGVjcycsXHJcbiAgICAgICAgY2xpY2thYmxlVGV4dDogJ1ZpZXcnXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBsYWJlbDogJ0FjdGlvbnMnLFxyXG4gICAgICAgIHR5cGU6ICdhY3Rpb25zJyxcclxuICAgICAgICBhY3Rpb25zOiBbXHJcbiAgICAgICAgICB7dmlld01vZGU6ICdhbGxvY2F0ZScsIGFjdGlvbk5hbWU6IFwiQWxsb2NhdGVcIiwgZGlzYWJsZWQ6IHRydWV9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB2aWV3TW9kZTogJ2VkaXQnLCBhY3Rpb25OYW1lOiBcIkVkaXRcIiwgYWN0aW9uOiBcImVkaXRcIiwgb25DbGljazogKGFzc2V0OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLmVkaXRBc3NldChhc3NldCk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB2aWV3TW9kZTogJ2RlbGV0ZScsIGFjdGlvbk5hbWU6IFwiRGVsZXRlXCIsIGFjdGlvbjogXCJkZWxldGVcIiwgb25DbGljazogKGFzc2V0OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLmRlbGV0ZUFzc2V0KGFzc2V0KTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7dmlld01vZGU6ICdjaGFydCcsIGFjdGlvbk5hbWU6IFwiQ2hhcnRcIiwgYWN0aW9uOiBcImNoYXJ0XCJ9LFxyXG4gICAgICAgIF1cclxuICAgICAgfSxcclxuICAgIF07XHJcbiAgfVxyXG5cclxuXHJcbiAgY3JlYXRlRm9ybSgpIHtcclxuICAgIGxldCBuZXdGb3JtID0ge1xyXG4gICAgICBpbnB1dDE6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF1cclxuICAgIH07XHJcbiAgICB0aGlzLmxvdj8uWydkZWNpc2lvbiddPy5vcHRpb25zPy5mb3JFYWNoKG9wdGlvbiA9PiB7XHJcbiAgICAgIG5ld0Zvcm1bb3B0aW9uLnZhbHVlXSA9IFsnJ107XHJcbiAgICB9KVxyXG4gICAgdGhpcy5mb3JtR3JvdXAgPSB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgLy8gaW5wdXQ6IG5ldyBGb3JtQ29udHJvbChudWxsKSxcclxuICAgICAgLy8gY3VycmVuY3lJbnB1dDogbmV3IEZvcm1Db250cm9sKG51bGwsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxyXG4gICAgICAvLyBlbWFpbElucHV0OiBuZXcgRm9ybUNvbnRyb2woe3ZhbHVlOiBudWxsLCBkaXNhYmxlZDogdHJ1ZX0sIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxyXG4gICAgICAvLyBudW1iZXJJbnB1dDogbmV3IEZvcm1Db250cm9sKG51bGwsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxyXG4gICAgICAvLyBjdXN0b21TZWFyY2hhYmxlOiBuZXcgRm9ybUNvbnRyb2wobnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZCksXHJcbiAgICAgIC8vIGNoZWNrYm94OiBuZXcgRm9ybUNvbnRyb2wobnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWRUcnVlLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSksXHJcbiAgICAgIC8vIHRleHRBcmVhOiBuZXcgRm9ybUNvbnRyb2wobnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDUpXSksXHJcbiAgICAgIC8vIGRhdGVQaWNrZXI6IG5ldyBGb3JtQ29udHJvbChudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcclxuICAgICAgLy8gZGF0ZVBpY2tlclJhbmdlOiBuZXcgRm9ybUNvbnRyb2wobnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZCksXHJcbiAgICAgIC8vIHJhZGlvOiBuZXcgRm9ybUNvbnRyb2wobnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZCksXHJcbiAgICAgIC8vIHRvZ2dsZTogbmV3IEZvcm1Db250cm9sKG51bGwsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxyXG4gICAgICAvLyB0ZWxlcGhvbmU6IG5ldyBGb3JtQ29udHJvbChudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcclxuICAgICAgLy8gc2VhcmNoRW1wbG95ZWU6IG5ldyBGb3JtQ29udHJvbChudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcclxuICAgICAgLy8gLy8gLi4ubmV3Rm9ybSxcclxuICAgICAgLy8gYXR0YWNobWVudDogbmV3IEZvcm1Db250cm9sKG51bGwsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxyXG4gICAgICBhdHRhY2htZW50U2VjdGlvbjogbmV3IEZvcm1Db250cm9sKFtdLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcclxuICAgIH0pO1xyXG4vKiAgICBpZih0aGlzLmxvdj8uWydkZWNpc2lvbiddPy5vcHRpb25zPy5sZW5ndGgpe1xyXG5cclxuICAgIH1lbHNle1xyXG5cclxuICAgIH0qL1xyXG4gICAgdGhpcy5sb3Y/LlsnZGVjaXNpb24nXT8ub3B0aW9ucz8uZm9yRWFjaChvcHRpb24gPT4ge1xyXG4gICAgICBsZXQgaXNBY3Rpb25WYWxpZCA9IHRoaXMuY2hlY2tWYWxpZGl0eShvcHRpb24udmFsdWUpO1xyXG4gICAgICB0aGlzLmFjdGlvblN0YXRlU2VydmljZS5zZXRBY3Rpb25WYWxpZChvcHRpb24udmFsdWUsIGlzQWN0aW9uVmFsaWQpO1xyXG4gICAgICBjb25zb2xlLmxvZygnaXNBY3Rpb25WYWxpZCcsaXNBY3Rpb25WYWxpZClcclxuXHJcbiAgICB9KVxyXG5cclxuXHJcbiAgICAvLyB0aGlzLmZvcm1Hcm91cCA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgLy8gICBpbnB1dDogbmV3IEZvcm1Db250cm9sKG51bGwpLFxyXG4gICAgLy8gICBjdXJyZW5jeUlucHV0OiBuZXcgRm9ybUNvbnRyb2wobnVsbCksXHJcbiAgICAvLyAgIGVtYWlsSW5wdXQ6IG5ldyBGb3JtQ29udHJvbCh7dmFsdWU6IG51bGwsZGlzYWJsZWQ6IHRydWV9KSxcclxuICAgIC8vICAgbnVtYmVySW5wdXQ6IG5ldyBGb3JtQ29udHJvbChudWxsKSxcclxuICAgIC8vICAgY3VzdG9tU2VhcmNoYWJsZTogbmV3IEZvcm1Db250cm9sKG51bGwpLFxyXG4gICAgLy8gICBjaGVja2JveDogbmV3IEZvcm1Db250cm9sKG51bGwpLFxyXG4gICAgLy8gICB0ZXh0QXJlYTogbmV3IEZvcm1Db250cm9sKG51bGwpLFxyXG4gICAgLy8gICBkYXRlUGlja2VyOiBuZXcgRm9ybUNvbnRyb2wobnVsbCksXHJcbiAgICAvLyAgIGRhdGVQaWNrZXJSYW5nZTogbmV3IEZvcm1Db250cm9sKG51bGwpLFxyXG4gICAgLy8gICByYWRpbzogbmV3IEZvcm1Db250cm9sKG51bGwpLFxyXG4gICAgLy8gICB0b2dnbGU6IG5ldyBGb3JtQ29udHJvbChudWxsKSxcclxuICAgIC8vICAgdGVsZXBob25lOiBuZXcgRm9ybUNvbnRyb2wobnVsbCksXHJcbiAgICAvLyAgIHNlYXJjaEVtcGxveWVlOiBuZXcgRm9ybUNvbnRyb2wobnVsbCksXHJcbiAgICAvLyAgIC8vIC4uLm5ld0Zvcm0sXHJcbiAgICAvLyAgIGF0dGFjaG1lbnQ6IG5ldyBGb3JtQ29udHJvbChudWxsKSxcclxuICAgIC8vICAgYXR0YWNobWVudFNlY3Rpb246IG5ldyBGb3JtQ29udHJvbChbXSksXHJcbiAgICAvLyB9KTtcclxuICAgIHRoaXMuZm9ybUdyb3VwLnNldFZhbHVlKHRoaXMuc2VjdGlvbi5ib2R5LmRldGFpbHMpO1xyXG4gICAgLy8gICBjb25zb2xlLmxvZyh0aGlzLnNlY3Rpb24uYm9keS5kZXRpbHMpO1xyXG4gICAgLy8gICBjb25zb2xlLmxvZyh0aGlzLmxvdj8uWydhcHByb3ZlckFjdGlvbnMnXT8ub3B0aW9ucylcclxuICAgIHRoaXMuZm9ybUdyb3VwLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUodmFsdWUgPT4ge1xyXG4gICAgICB0aGlzLmxvdj8uWydkZWNpc2lvbiddPy5vcHRpb25zPy5mb3JFYWNoKG9wdGlvbiA9PiB7XHJcbiAgICAgICAgbGV0IGlzQWN0aW9uVmFsaWQgPSB0aGlzLmNoZWNrVmFsaWRpdHkob3B0aW9uLnZhbHVlKTtcclxuICAgICAgICB0aGlzLmFjdGlvblN0YXRlU2VydmljZS5zZXRBY3Rpb25WYWxpZChvcHRpb24udmFsdWUsIGlzQWN0aW9uVmFsaWQpO1xyXG4gICAgICAgICB0aGlzLnNlY3Rpb24uYm9keS5kZXRhaWxzID0gey4uLnRoaXMuc2VjdGlvbi5ib2R5LmRldGFpbHMsIC4uLnRoaXMuZm9ybUdyb3VwLnZhbHVlfTtcclxuXHJcbiAgICAgIH0pXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgLy8gICB0aGlzLmZvcm1Hcm91cC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHZhbHVlID0+IHtcclxuICAvLyAgICAgdGhpcy5sb3Y/LlsnZGVjaXNpb24nXT8ub3B0aW9ucz8uZm9yRWFjaChvcHRpb24gPT4ge1xyXG4gIC8vICAgICAgIGxldCBpc0FjdGlvblZhbGlkID0gdGhpcy5jaGVja1ZhbGlkaXR5KG9wdGlvbi52YWx1ZSk7XHJcbiAgLy8gICAgICAgdGhpcy5hY3Rpb25TdGF0ZVNlcnZpY2Uuc2V0QWN0aW9uVmFsaWQob3B0aW9uLnZhbHVlLCBpc0FjdGlvblZhbGlkKTtcclxuICAvLyAgICAgICB0aGlzLnNlY3Rpb24uYm9keS5kZXRhaWxzID0gdGhpcy5mb3JtR3JvdXAudmFsdWVcclxuICAvLyAgICAgICAgLyEqe1xyXG4gIC8vICAgICAgICAgaW5wdXQxOiB0aGlzLmZpZWxkc0Zvcm0uZ2V0KCdpbnB1dDEnKS52YWx1ZVxyXG4gIC8vICAgICAgIH0qIS9cclxuICAvLyAgICAgfSlcclxuICAvLyAgIH0pXHJcbiAgLy8gfVxyXG4gIC8vICAgY3JlYXRlRm9ybSgpIHtcclxuICAvLyAgIHRoaXMuZm9ybUdyb3VwID0gdGhpcy5mYi5ncm91cCh7XHJcbiAgLy8gICAgIGN1c3RvbWVyTmFtZTogbmV3IEZvcm1Db250cm9sKG51bGwsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXHJcbiAgLy8gICAgIGN1c3RvbWVyUGhvbmU6IG5ldyBGb3JtQ29udHJvbChudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxyXG4gIC8vICAgICByZWFzb25Gb3JSZXF1ZXN0OiBuZXcgRm9ybUNvbnRyb2wobnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcclxuICAvLyAgICAgY2FsbFR5cGU6IG5ldyBGb3JtQ29udHJvbChudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxyXG4gIC8vICAgICBjZW50ZXJPZkNhbGxzOiBuZXcgRm9ybUNvbnRyb2wobnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcclxuICAvLyAgICAgY2FsbERhdGU6IG5ldyBGb3JtQ29udHJvbChudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxyXG4gIC8vICAgICBhZ3JlZW1lbnQ6IG5ldyBGb3JtQ29udHJvbChudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCxWYWxpZGF0b3JzLnJlcXVpcmVkVHJ1ZV0pLFxyXG4gIC8vICAgfSk7XHJcbiAgLy8gICB0aGlzLmZvcm1Hcm91cC52YWx1ZUNoYW5nZXMucGlwZShcclxuICAvLyAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZilcclxuICAvLyAgICkuc3Vic2NyaWJlKHZhbHVlID0+IHtcclxuICAvLyAgICAgdGhpcy5sb3Y/LlsnZGVjaXNpb24nXT8ub3B0aW9ucz8uZm9yRWFjaChvcHRpb24gPT4ge1xyXG4gIC8vICAgICAgIGxldCBpc0FjdGlvblZhbGlkID0gdGhpcy5jaGVja1ZhbGlkaXR5KG9wdGlvbi52YWx1ZSk7XHJcbiAgLy8gICAgICAgdGhpcy5hY3Rpb25TdGF0ZVNlcnZpY2Uuc2V0QWN0aW9uVmFsaWQob3B0aW9uLnZhbHVlLCBpc0FjdGlvblZhbGlkKTtcclxuICAvLyAgICAgICB0aGlzLnNlY3Rpb24uYm9keS5kZXRhaWxzID0gdGhpcy5mb3JtR3JvdXAudmFsdWVcclxuICAvLyAgICAgICB0aGlzLnNlY3Rpb24uYm9keS5kZXRhaWxzLmN1c3RvbWVyUGhvbmUgPSB0aGlzLnNlY3Rpb24uYm9keS5kZXRhaWxzLmN1c3RvbWVyUGhvbmU/LmUxNjROdW1iZXJcclxuICAvLyAgICAgICAvLyB0aGlzLnNlY3Rpb24uYm9keS5kZXRhaWxzLmFncmVlbWVudCA9ICh0aGlzLnNlY3Rpb24uYm9keS5kZXRhaWxzLmFncmVlbWVudCkudG9TdHJpbmcoKVxyXG5cclxuICAvLyAgICAgfSlcclxuICAvLyAgIH0pXHJcbiAgLy8gICBjb25zb2xlLmxvZyh0aGlzLmxvdj8uWydkZWNpc2lvbiddPy5vcHRpb25zKVxyXG4gIC8vICAgY29uc29sZS5sb2codGhpcy5zZWN0aW9uLmJvZHkuZGV0YWlscylcclxuICAvLyAgIHRoaXMuZm9ybUdyb3VwLnNldFZhbHVlKHRoaXMuc2VjdGlvbi5ib2R5LmRldGFpbHMpO1xyXG4gIC8vICAgY29uc29sZS5sb2coJ2N1c3RvbUNhbGxTdWJtaXQnLCB0aGlzLmZvcm1Hcm91cC52YWx1ZSlcclxuICAvLyB9XHJcblxyXG4gIGVkaXRBc3NldChhc3NldCkge1xyXG4gICAgY29uc29sZS5sb2coYXNzZXQpXHJcbiAgfVxyXG5cclxuICBzdGFydHNXaXRoRE1PRU9yQ1IoKTogVmFsaWRhdG9yRm4ge1xyXG4gICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHwgbnVsbCA9PiB7XHJcbiAgICAgIGNvbnN0IHZhbHVlID0gY29udHJvbC52YWx1ZTtcclxuICAgICAgaWYgKHZhbHVlICYmICh2YWx1ZS5zdGFydHNXaXRoKCdETU9FLScpIHx8IHZhbHVlLnN0YXJ0c1dpdGgoJ0NSLScpKSkge1xyXG4gICAgICAgIHJldHVybiBudWxsOyAvLyBWYWxpZFxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB7c3RhcnRzV2l0aEludmFsaWQ6IHRydWV9OyAvLyBJbnZhbGlkXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlQXNzZXQoYXNzZXQpIHtcclxuICAgIGNvbnNvbGUubG9nKGFzc2V0KVxyXG4gIH1cclxuXHJcbiAgZm9ybVZhbHVlKGZvcm0pIHtcclxuICAgIGNvbnNvbGUubG9nKGZvcm0udmFsdWUpXHJcbiAgfVxyXG5cclxuICBjaGVja1ZhbGlkaXR5KGFjdGlvbjogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBzd2l0Y2ggKGFjdGlvbikge1xyXG4gICAgICBjYXNlICdTVUJNSVQnOlxyXG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1Hcm91cC52YWxpZDtcclxuICAgICAgY2FzZSAnQVBQUk9WRSc6XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIGNhc2UgJ1JFSkVDVCc6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybUdyb3VwLnZhbGlkO1xyXG4gICAgICBjYXNlICdTRU5EQkFDSyc6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybUdyb3VwLnZhbGlkO1xyXG4gICAgICBjYXNlICdTQVZFX0NIQU5HRVMnOlxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICBjdXN0b21DYWxsU3VibWl0KGFjdGlvbjogc3RyaW5nKSB7XHJcbiAgICBjb25zb2xlLmxvZygnY3VzdG9tQ2FsbFN1Ym1pdCcsIGFjdGlvbilcclxuICB9XHJcblxyXG4gIHJlc2V0Rm9ybSgpIHtcclxuICAgIHRoaXMuYWN0aW9uU3RhdGVTZXJ2aWNlLnJlc2V0QWN0aW9uJC5uZXh0KCk7XHJcbiAgfVxyXG5cclxuICBwYWdlQ2hhbmdlZChldmVudDogYW55KSB7XHJcbiAgICB0aGlzLnBhZ2VOdW1iZXIgPSBldmVudC5wYWdlSW5kZXhcclxuICAgIHRoaXMucGFnZVNpemUgPSBldmVudC5wYWdlU2l6ZVxyXG4gIH1cclxuXHJcbn1cclxuIiwiPGRpdj5cclxuICA8Zm9ybSBbbmdDbGFzc109XCJ7J2Zvcm0tc2VjdGlvbi1kaXZpZGUgZm9ybS1zZWN0aW9uJzohc2VjdGlvbj8uaGVhZGVyPy5yZWFkT25seSwnaW5mby1zZWN0aW9uJzpzZWN0aW9uPy5oZWFkZXI/LnJlYWRPbmx5fVwiIFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCI+XHJcblxyXG4gICAgPGFwcC1hdHRhY2htZW50LXNlY3Rpb25cclxuICAgICAgY2xhc3M9XCJzZWN0aW9uLWl0ZW0gZnVsbFwiXHJcbiAgICAgIFtkZXNjcmlwdGlvblJlcXVpcmVkXT1cImZhbHNlXCJcclxuICAgICAgbGFiZWw9XCJBdHRhY2htZW50IHNlY3Rpb25cIlxyXG4gICAgICBbY29tbWVudHNSZXF1aXJlZF09XCJmYWxzZVwiXHJcbiAgICAgIFtpc1JlYWRPbmx5XT1cImlzUmVhZE9ubHlcIlxyXG4gICAgICBmb3JtQ29udHJvbE5hbWU9XCJhdHRhY2htZW50U2VjdGlvblwiPjwvYXBwLWF0dGFjaG1lbnQtc2VjdGlvbj5cclxuXHJcbjwhLS0gICAge3tmb3JtR3JvdXAudmFsaWR9fS0tPlxyXG48IS0tICAgIDxhcHAtaW5wdXQgY2xhc3M9XCJzZWN0aW9uLWl0ZW0gZnVsbFwiIFtpc1JlYWRPbmx5XT1cImZhbHNlXCIgW21hbmRhdG9yeV09XCJ0cnVlXCIgW2xvYWRpbmddPVwidHJ1ZVwiIHR5cGU9XCJlbk9ubHlcIiBmb3JtQ29udHJvbE5hbWU9XCJpbnB1dFwiIGxhYmVsPVwiSW5wdXRcIj48L2FwcC1pbnB1dD4tLT5cclxuPCEtLSA8YXBwLWNoZWNrYm94XHJcbiAgICAgIGNsYXNzPVwic2VjdGlvbi1pdGVtIGZ1bGxcIlxyXG4gICAgICBbaXNSZWFkT25seV09XCJpc1JlYWRPbmx5XCJcclxuICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiY2hlY2tib3hcIlxyXG4gICAgICB0ZXJtc0xhYmVsPVwiVGVybXMgYW5kIGNvbmRpdGlvbnNcIlxyXG4gICAgICBsYWJlbD1cImNoZWNrLWJveFwiXHJcbiAgICAgIFtjb250YWluVGVybXNdPVwidHJ1ZVwiPjwvYXBwLWNoZWNrYm94Pi0tPlxyXG4gICAgPCEtLVxyXG4gICAgPGFwcC1zZWFyY2gtZW1wbG95ZWVcclxuICAgICAgY2xhc3M9XCJzZWN0aW9uLWl0ZW0gZnVsbFwiXHJcbiAgICAgIFttdWx0aXBsZV09XCJ0cnVlXCJcclxuICAgICAgW2FycmF5TGlzdF09XCJmb3JtR3JvdXAuZ2V0KCdzZWFyY2hFbXBsb3llZScpLnZhbHVlXCJcclxuICAgICAgW2lzUmVhZE9ubHldPVwiaXNSZWFkT25seVwiXHJcbiAgICAgIGZvcm1Db250cm9sTmFtZT1cInNlYXJjaEVtcGxveWVlXCJcclxuICAgICAgbGFiZWw9XCJTZWFyY2gtZW1wbG95ZWVcIj48L2FwcC1zZWFyY2gtZW1wbG95ZWU+XHJcbiAgICA8YXBwLWlucHV0IGNsYXNzPVwic2VjdGlvbi1pdGVtIGZ1bGxcIiBbaXNSZWFkT25seV09XCJpc1JlYWRPbmx5XCIgW2xvYWRpbmddPVwidHJ1ZVwiIHR5cGU9XCJlbk9ubHlcIiBmb3JtQ29udHJvbE5hbWU9XCJpbnB1dFwiIGxhYmVsPVwiSW5wdXRcIj48L2FwcC1pbnB1dD5cclxuICAgIDxhcHAtaW5wdXQtY3VycmVuY3kgY2xhc3M9XCJzZWN0aW9uLWl0ZW0gZnVsbFwiIFtpc1JlYWRPbmx5XT1cImlzUmVhZE9ubHlcIiBmb3JtQ29udHJvbE5hbWU9XCJjdXJyZW5jeUlucHV0XCIgbGFiZWw9XCJjdXJyZW5jeVwiPjwvYXBwLWlucHV0LWN1cnJlbmN5PlxyXG4gICAgPGFwcC1pbnB1dC1lbWFpbCBjbGFzcz1cInNlY3Rpb24taXRlbSBmdWxsXCIgW2lzUmVhZE9ubHldPVwiaXNSZWFkT25seVwiIGZvcm1Db250cm9sTmFtZT1cImVtYWlsSW5wdXRcIiBsYWJlbD1cImVtYWlsXCI+PC9hcHAtaW5wdXQtZW1haWw+XHJcbiAgICA8YXBwLWlucHV0LW51bWJlciBjbGFzcz1cInNlY3Rpb24taXRlbSBmdWxsXCIgW2lzUmVhZE9ubHldPVwiaXNSZWFkT25seVwiIGZvcm1Db250cm9sTmFtZT1cIm51bWJlcklucHV0XCIgbGFiZWw9XCJudW1iZXJcIj48L2FwcC1pbnB1dC1udW1iZXI+XHJcbiAgICA8YXBwLWN1c3RvbS1zZWFyY2hhYmxlXHJcbiAgICAgIGNsYXNzPVwic2VjdGlvbi1pdGVtIG1iLTAgZnVsbFwiXHJcbiAgICAgIFtpc1JlYWRPbmx5XT1cImlzUmVhZE9ubHlcIlxyXG4gICAgICBmb3JtQ29udHJvbE5hbWU9XCJjdXN0b21TZWFyY2hhYmxlXCJcclxuICAgICAgbGFiZWw9XCJDdXN0b20tc2VhcmNoYWJsZVwiXHJcbiAgICAgIFtvcHRpb25zXT1cImxvdj8uWydhcHByb3ZlckFjdGlvbnMnXT8ub3B0aW9uc1wiXHJcbiAgICAgIFtkaXNwbGF5ZWRMYWJlbF09XCInbmFtZSdcIlxyXG4gICAgICBba2V5XT1cIiduYW1lJ1wiPjwvYXBwLWN1c3RvbS1zZWFyY2hhYmxlPlxyXG4gICAgPGFwcC1jaGVja2JveFxyXG4gICAgICBjbGFzcz1cInNlY3Rpb24taXRlbSBmdWxsXCJcclxuICAgICAgW2lzUmVhZE9ubHldPVwiaXNSZWFkT25seVwiXHJcbiAgICAgIGZvcm1Db250cm9sTmFtZT1cImNoZWNrYm94XCJcclxuICAgICAgdGVybXNMYWJlbD1cIlRlcm1zIGFuZCBjb25kaXRpb25zXCJcclxuICAgICAgbGFiZWw9XCJjaGVjay1ib3hcIlxyXG4gICAgICBbY29udGFpblRlcm1zXT1cInRydWVcIj48L2FwcC1jaGVja2JveD5cclxuICAgIDxhcHAtdGV4dGFyZWEgY2xhc3M9XCJzZWN0aW9uLWl0ZW0gZnVsbFwiIFtpc1JlYWRPbmx5XT1cImlzUmVhZE9ubHlcIiBmb3JtQ29udHJvbE5hbWU9XCJ0ZXh0QXJlYVwiIGxhYmVsPVwiVGV4dC1hcmVhXCI+PC9hcHAtdGV4dGFyZWE+XHJcblxyXG4gICAgPGFwcC1kYXRlLXJhbmdlLXBpY2tlclxyXG4gICAgICBjbGFzcz1cInNlY3Rpb24taXRlbSBmdWxsXCJcclxuICAgICAgW2lzUmVhZE9ubHldPVwiaXNSZWFkT25seVwiXHJcbiAgICAgIGZvcm1Db250cm9sTmFtZT1cImRhdGVQaWNrZXJSYW5nZVwiXHJcbiAgICAgIGxhYmVsPVwiRGF0ZS1waWNrZXItcmFuZ2VcIlxyXG4gICAgICBbbWF0U3VmZml4XT1cInRydWVcIj48L2FwcC1kYXRlLXJhbmdlLXBpY2tlcj5cclxuICAgIDxhcHAtcmFkaW8gY2xhc3M9XCJzZWN0aW9uLWl0ZW0gZnVsbFwiIFtpc1JlYWRPbmx5XT1cImlzUmVhZE9ubHlcIiBmb3JtQ29udHJvbE5hbWU9XCJyYWRpb1wiIFtvcHRpb25zXT1cIm9wdGlvbnNcIiBsYWJlbD1cIlJhZGlvXCI+PC9hcHAtcmFkaW8+LS0+XHJcbiAgIDwhLS0gPGFwcC10b2dnbGUtYnV0dG9uXHJcbiAgICAgIGNsYXNzPVwic2VjdGlvbi1pdGVtIGZ1bGxcIlxyXG4gICAgICBbaXNSZWFkT25seV09XCJpc1JlYWRPbmx5XCJcclxuICAgICAgZm9ybUNvbnRyb2xOYW1lPVwidG9nZ2xlXCJcclxuICAgICAgW29wdGlvbnNdPVwibG92Py5bJ2RlY2lzaW9uJ10/Lm9wdGlvbnNcIlxyXG4gICAgICBsYWJlbD1cIlRvZ2dsZS1idXR0b25cIlxyXG4gICAgICBbZGlzcGxheWVkTGFiZWxdPVwiJ2Rlc2NyaXB0aW9uJ1wiXHJcbiAgICAgIFtrZXldPVwiJ3ZhbHVlJ1wiPjwvYXBwLXRvZ2dsZS1idXR0b24+LS0+XHJcbiAgICA8IS0tPGFwcC1pbnB1dC10ZWxlcGhvbmUgY2xhc3M9XCJzZWN0aW9uLWl0ZW0gZnVsbFwiIFtpc1JlYWRPbmx5XT1cImlzUmVhZE9ubHlcIiBmb3JtQ29udHJvbE5hbWU9XCJ0ZWxlcGhvbmVcIiBsYWJlbD1cIlRlbGVwaG9uZVwiPjwvYXBwLWlucHV0LXRlbGVwaG9uZT5cclxuXHJcbiAgICA8YXBwLWZpbGUtdXBsb2FkZXJcclxuICAgICAgY2xhc3M9XCJzZWN0aW9uLWl0ZW0gZnVsbFwiXHJcbiAgICAgIFtjYWxsQXBpXT1cInRydWVcIlxyXG4gICAgICBbaXNSZWFkT25seV09XCJpc1JlYWRPbmx5XCJcclxuICAgICAgW211bHRpcGxlXT1cImZhbHNlXCJcclxuICAgICAgbGFiZWw9XCJhdHRhY2htZW50XCJcclxuICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiYXR0YWNobWVudFwiPjwvYXBwLWZpbGUtdXBsb2FkZXI+XHJcblxyXG4gICAgICAgICAgPGFwcC1hdHRhY2htZW50LXNlY3Rpb25cclxuICAgICAgY2xhc3M9XCJzZWN0aW9uLWl0ZW0gZnVsbFwiXHJcbiAgICAgIFtkZXNjcmlwdGlvblJlcXVpcmVkXT1cImZhbHNlXCJcclxuICAgICAgbGFiZWw9XCJBdHRhY2htZW50IHNlY3Rpb25cIlxyXG4gICAgICBbY29tbWVudHNSZXF1aXJlZF09XCJmYWxzZVwiXHJcbiAgICAgIFtpc1JlYWRPbmx5XT1cImlzUmVhZE9ubHlcIlxyXG4gICAgICBmb3JtQ29udHJvbE5hbWU9XCJhdHRhY2htZW50U2VjdGlvblwiPjwvYXBwLWF0dGFjaG1lbnQtc2VjdGlvbj5cclxuLS0+XHJcblxyXG5cclxuXHJcbiAgICA8IS0tIDxhcHAtdGFibGVcclxuICAgIFtjb2x1bW5zQ29uZmlnXT1cImNvbHVtbnNDb25maWdcIlxyXG4gICAgW2NvbHVtbnNdPVwiY29sdW1uc1wiXHJcbiAgICBbaXNFcnJvcl09XCJpc0Vycm9yXCJcclxuICAgIFtpc0xvYWRpbmddPVwiaXNMb2FkaW5nXCJcclxuICAgIFtyb3dzXT1cImNhdGVnb3J5RGF0YVwiIFtoYXNQYWdpbmF0b3JdPVwidHJ1ZVwiXHJcbiAgICBbcGFnZVNpemVdPVwicGFnZVNpemVcIiBbY3VycmVudFBhZ2VdPVwicGFnZU51bWJlclwiXHJcbiAgICBbdG90YWxFbGVtZW50c109XCJ0b3RhbEVsZW1lbnRzXCJcclxuICAgIChwYWdlQ2hhbmdlKT1cInBhZ2VDaGFuZ2VkKCRldmVudClcIlxyXG4gICAgY2xhc3M9XCJuZXctcHJpbWFyeS10YWJsZSBmdWxsXCI+XHJcbiAgICA8L2FwcC10YWJsZT4gLS0+XHJcblxyXG48IS0tICAgICAgPGFwcC1kYXRlcGlja2VyXHJcbiAgICAgIGNsYXNzPVwic2VjdGlvbi1pdGVtIGZ1bGxcIlxyXG4gICAgICBbaXNSZWFkT25seV09XCJmYWxzZVwiXHJcbiAgICAgIGZvcm1Db250cm9sTmFtZT1cImRhdGVQaWNrZXJcIlxyXG4gICAgICBbbWF0U3VmZml4XT1cInRydWVcIlxyXG4gICAgICBsYWJlbD1cIkRhdGUtcGlja2VyXCI+PC9hcHAtZGF0ZXBpY2tlcj4tLT5cclxuXHJcblxyXG4gIDwvZm9ybT5cclxuXHJcblxyXG48L2Rpdj5cclxuQGlmICghc2VjdGlvbj8uaGVhZGVyPy5yZWFkT25seSkge1xyXG4gIDxkaXYgY2xhc3M9XCJtdC00XCI+XHJcbiAgICA8bGliLWFjdGlvbi1idXR0b25zXHJcbiAgICAgIFtsb3ZPcHRpb25zXT1cImxvdj8uWydkZWNpc2lvbiddPy5vcHRpb25zXCJcclxuICAgICAgW2xvdlR5cGVdPVwibG92Py5bJ2RlY2lzaW9uJ10/LnR5cGVcIlxyXG4gICAgICBbc2VjdGlvbl09XCJzZWN0aW9uXCJcclxuICAgICAgW2Zvcm1dPVwiZm9ybVwiXHJcbiAgICAgIFtzZWN0aW9uc109XCJmb3JtLnNlY3Rpb25zXCJcclxuICAgICAgW3Nob3dBcHByb3ZhbEN5Y2xlXT1cInRydWVcIlxyXG4gICAgICBbY3VzdG9tQ2FsbF09XCJmYWxzZVwiXHJcbiAgICAgIFtmaWVsZHNGb3JtXT1cImZvcm1Hcm91cFwiXHJcbiAgICAgIChjdXN0b21DYWxsRW1pdCk9XCJjdXN0b21DYWxsU3VibWl0KCRldmVudClcIlxyXG4gICAgICAocmVzZXRGb3JtRW1pdCk9XCJyZXNldEZvcm0oKVwiXHJcbiAgICAvPlxyXG4gIDwvZGl2PlxyXG59XHJcbiJdfQ==
@@ -1,39 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import * as en from '../../i18n/en';
3
- import * as ar from '../../i18n/ar';
4
- import * as i0 from "@angular/core";
5
- export class I18nService {
6
- locales;
7
- coreLocales;
8
- language;
9
- constructor() {
10
- this.language = window.wmConfig.language;
11
- // this.language = "en";
12
- this.locales = { en: en.default, ar: ar.default };
13
- }
14
- translate(key) {
15
- let result = null;
16
- try {
17
- result = this.coreLocales[this.language][key];
18
- if (!result) {
19
- result = this.locales[this.language][key];
20
- }
21
- }
22
- catch (e) {
23
- result = null;
24
- }
25
- return result || key;
26
- }
27
- getLanguage() {
28
- return this.language;
29
- }
30
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: I18nService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
31
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: I18nService, providedIn: 'any' });
32
- }
33
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: I18nService, decorators: [{
34
- type: Injectable,
35
- args: [{
36
- providedIn: 'any',
37
- }]
38
- }], ctorParameters: () => [] });
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaTE4bi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi90ZXN0Q29tcG9uZW50L3NlcnZpY2VzL2kxOG4uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BDLE9BQU8sS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUtwQyxNQUFNLE9BQU8sV0FBVztJQUNkLE9BQU8sQ0FBMkM7SUFDbEQsV0FBVyxDQUEyQztJQUN0RCxRQUFRLENBQVU7SUFFMUI7UUFDRSxJQUFJLENBQUMsUUFBUSxHQUFJLE1BQWMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDO1FBQ2xELHdCQUF3QjtRQUN4QixJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxPQUFPLEVBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsU0FBUyxDQUFDLEdBQUc7UUFDWCxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDbEIsSUFBSSxDQUFDO1lBQ0gsTUFBTSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzlDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDWixNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDNUMsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFNLENBQUMsRUFBRSxDQUFDO1lBQ1IsTUFBTSxHQUFHLElBQUksQ0FBQztRQUNoQixDQUFDO1FBQ0QsT0FBTyxNQUFNLElBQUksR0FBRyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7dUdBM0JVLFdBQVc7MkdBQVgsV0FBVyxjQUZSLEtBQUs7OzJGQUVSLFdBQVc7a0JBSHZCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLEtBQUs7aUJBQ3BCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgKiBhcyBlbiBmcm9tICcuLi8uLi9pMThuL2VuJztcclxuaW1wb3J0ICogYXMgYXIgZnJvbSAnLi4vLi4vaTE4bi9hcic7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiAnYW55JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEkxOG5TZXJ2aWNlIHtcclxuICBwcml2YXRlIGxvY2FsZXM6IHtba2V5OiBzdHJpbmddOiB7W2tleTogc3RyaW5nXTogc3RyaW5nfX07XHJcbiAgcHJpdmF0ZSBjb3JlTG9jYWxlczoge1trZXk6IHN0cmluZ106IHtba2V5OiBzdHJpbmddOiBzdHJpbmd9fTtcclxuICBwcml2YXRlIGxhbmd1YWdlIDogc3RyaW5nO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHRoaXMubGFuZ3VhZ2UgPSAod2luZG93IGFzIGFueSkud21Db25maWcubGFuZ3VhZ2U7XHJcbiAgICAvLyB0aGlzLmxhbmd1YWdlID0gXCJlblwiO1xyXG4gICAgdGhpcy5sb2NhbGVzID0ge2VuOiBlbi5kZWZhdWx0LCBhcjogYXIuZGVmYXVsdH07XHJcbiAgfVxyXG5cclxuICB0cmFuc2xhdGUoa2V5KSB7XHJcbiAgICBsZXQgcmVzdWx0ID0gbnVsbDtcclxuICAgIHRyeSB7XHJcbiAgICAgIHJlc3VsdCA9IHRoaXMuY29yZUxvY2FsZXNbdGhpcy5sYW5ndWFnZV1ba2V5XTtcclxuICAgICAgaWYgKCFyZXN1bHQpIHtcclxuICAgICAgICByZXN1bHQgPSB0aGlzLmxvY2FsZXNbdGhpcy5sYW5ndWFnZV1ba2V5XTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2goZSkge1xyXG4gICAgICByZXN1bHQgPSBudWxsO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdCB8fCBrZXk7XHJcbiAgfVxyXG5cclxuICBnZXRMYW5ndWFnZSgpIHtcclxuICAgIHJldHVybiB0aGlzLmxhbmd1YWdlO1xyXG4gIH1cclxufVxyXG4iXX0=