vcomply-workflow-engine 6.1.3 → 6.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (171) hide show
  1. package/esm2022/lib/add-multiple-responsibility-with-tab/add-multiple-responsibility-with-tab.component.mjs +34 -7
  2. package/esm2022/lib/constants/api.constants.mjs +1 -6
  3. package/esm2022/lib/constants/assets.constants.mjs +2 -1
  4. package/esm2022/lib/constants/policy.constant.mjs +6 -0
  5. package/esm2022/lib/constants/regix.constants.mjs +4 -0
  6. package/esm2022/lib/constants/responsibility.mjs +8 -0
  7. package/esm2022/lib/interfaces/policy.interface.mjs +2 -0
  8. package/esm2022/lib/interfaces/responsibilty.interface.mjs +1 -1
  9. package/esm2022/lib/more-option/more-option.component.mjs +191 -26
  10. package/esm2022/lib/report-a-case/services/report-a-case.service.mjs +2 -3
  11. package/esm2022/lib/report-a-case/workflow-case/workflow-case.component.mjs +7 -4
  12. package/esm2022/lib/services/common.service.mjs +1 -40
  13. package/esm2022/lib/services/iframe.service.mjs +1 -14
  14. package/esm2022/lib/sharedComponents/bulk-responsibility-view/bulk-responsibility-view.component.mjs +6 -3
  15. package/esm2022/lib/sharedComponents/category-list-selection/category-list-selection/category-list-selection.component.mjs +7 -7
  16. package/esm2022/lib/sharedComponents/category-list-selection/category-list-selection.module.mjs +4 -27
  17. package/esm2022/lib/sharedComponents/format-and-evidence/format-and-evidence.component.mjs +21 -10
  18. package/esm2022/lib/sharedComponents/frequency/frequency-annual/frequency-annual.component.mjs +1 -5
  19. package/esm2022/lib/sharedComponents/frequency/frequency-biannual/frequency-biannual.component.mjs +1 -5
  20. package/esm2022/lib/sharedComponents/frequency/frequency-container/frequency-container.component.mjs +5 -5
  21. package/esm2022/lib/sharedComponents/frequency/frequency-daily/frequency-daily.component.mjs +1 -2
  22. package/esm2022/lib/sharedComponents/frequency/frequency-monthly/frequency-monthly.component.mjs +2 -6
  23. package/esm2022/lib/sharedComponents/frequency/frequency-one-time/frequency-one-time.component.mjs +2 -3
  24. package/esm2022/lib/sharedComponents/frequency/frequency-ongoing/frequency-ongoing.component.mjs +1 -3
  25. package/esm2022/lib/sharedComponents/frequency/frequency-quarterly/frequency-quarterly.component.mjs +1 -5
  26. package/esm2022/lib/sharedComponents/frequency/frequency-random/frequency-random.component.mjs +2 -9
  27. package/esm2022/lib/sharedComponents/frequency/frequency-weekly/frequency-weekly.component.mjs +2 -4
  28. package/esm2022/lib/sharedComponents/frequency/frequency.service.mjs +5 -267
  29. package/esm2022/lib/sharedComponents/group-users-list/group-users-list.component.mjs +2 -5
  30. package/esm2022/lib/sharedComponents/link-responsibility/link-responsibility.component.mjs +16 -47
  31. package/esm2022/lib/sharedComponents/pipes/risk-class.pipe.mjs +19 -0
  32. package/esm2022/lib/workflow/grc-object/grc-object-container/grc-object-container.component.mjs +17 -45
  33. package/esm2022/lib/workflow/shared/components/grc-category-listing/grc-category-listing.component.mjs +10 -13
  34. package/esm2022/lib/workflow/shared/components/program-responsibility-listing/program-responsibility-listing.component.mjs +35 -62
  35. package/esm2022/lib/workflow/shared/services/grc.service.mjs +2 -15
  36. package/esm2022/lib/workflow/shared/workflow-pipes/workflow-pipes.module.mjs +3 -8
  37. package/esm2022/lib/workflow-compliance/workflow-compliance.component.mjs +453 -294
  38. package/esm2022/lib/workflow-engine-container/api-constants.mjs +2 -3
  39. package/esm2022/lib/workflow-engine-container/workflow-engine-container.component.mjs +53 -32
  40. package/esm2022/lib/workflow-engine.module.mjs +16 -11
  41. package/esm2022/lib/workflow-policy/workflow-policy.component.mjs +29 -46
  42. package/esm2022/lib/workflow-program/constants.mjs +11 -3
  43. package/esm2022/lib/workflow-program/create-program-ui/define-framework-listing/pipes/tooltip-message.pipe.mjs +7 -1
  44. package/esm2022/lib/workflow-program/create-program-ui/user-group-list/user-group-list.component.mjs +11 -13
  45. package/esm2022/lib/workflow-program/workflow-program.component.mjs +311 -340
  46. package/esm2022/lib/workflow-services/policy.service.mjs +9 -8
  47. package/esm2022/lib/workflow-services/programs.service.mjs +114 -26
  48. package/esm2022/lib/workflow-services/responsibility.service.mjs +56 -60
  49. package/fesm2022/vcomply-workflow-engine.mjs +18654 -19161
  50. package/fesm2022/vcomply-workflow-engine.mjs.map +1 -1
  51. package/lib/add-multiple-responsibility-container/add-multiple-responsibility-container.component.d.ts +1 -0
  52. package/lib/add-multiple-responsibility-with-tab/add-multiple-responsibility-with-tab.component.d.ts +3 -0
  53. package/lib/add-multiple-risk/add-multiple-risk.component.d.ts +1 -0
  54. package/lib/constants/api.constants.d.ts +0 -5
  55. package/lib/constants/assets.constants.d.ts +1 -0
  56. package/lib/constants/policy.constant.d.ts +2 -0
  57. package/lib/constants/regix.constants.d.ts +3 -0
  58. package/lib/constants/responsibility.d.ts +7 -0
  59. package/lib/interfaces/policy.interface.d.ts +5 -0
  60. package/lib/interfaces/responsibilty.interface.d.ts +13 -13
  61. package/lib/log-an-issue/log-an-issue.component.d.ts +1 -0
  62. package/lib/more-option/more-option.component.d.ts +1 -0
  63. package/lib/report-a-case/components/assignee/assignee.component.d.ts +1 -0
  64. package/lib/report-a-case/components/case-assignees/case-assignees.component.d.ts +1 -0
  65. package/lib/report-a-case/components/case-category/case-category.component.d.ts +1 -0
  66. package/lib/report-a-case/components/case-details/case-details.component.d.ts +1 -0
  67. package/lib/report-a-case/components/case-owners/case-owners.component.d.ts +1 -0
  68. package/lib/report-a-case/components/case-priority/case-priority.component.d.ts +1 -0
  69. package/lib/report-a-case/components/case-resolution-deadline/case-resolution-deadline.component.d.ts +1 -0
  70. package/lib/report-a-case/components/case-type-dropdown/case-dropdown.component.d.ts +1 -0
  71. package/lib/report-a-case/components/due-date/due-date.component.d.ts +1 -0
  72. package/lib/report-a-case/components/field-holder/field-holder.component.d.ts +1 -0
  73. package/lib/report-a-case/components/linked assessment/linked-assessment.component.d.ts +1 -0
  74. package/lib/report-a-case/components/linked-responsibilities/linked-responsibilities.component.d.ts +1 -0
  75. package/lib/report-a-case/components/rc-details/rc-details.component.d.ts +1 -0
  76. package/lib/report-a-case/components/report-date/report-date.component.d.ts +1 -0
  77. package/lib/report-a-case/workflow-case/workflow-case.component.d.ts +1 -0
  78. package/lib/services/common.service.d.ts +0 -28
  79. package/lib/services/iframe.service.d.ts +0 -6
  80. package/lib/sharedComponents/approval-workflow/approval-create-form/approval-create-form.component.d.ts +1 -0
  81. package/lib/sharedComponents/assessment-editor/components/build/image-choice/image-choice.component.d.ts +1 -0
  82. package/lib/sharedComponents/assessment-editor/components/build/thank-you/thank-you.component.d.ts +1 -0
  83. package/lib/sharedComponents/assessment-editor/components/build/welcome/welcome.component.d.ts +1 -0
  84. package/lib/sharedComponents/assessment-editor/components/logic/logic.component.d.ts +1 -0
  85. package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-image-choice/logic-image-choice.component.d.ts +1 -0
  86. package/lib/sharedComponents/assessment-editor/components/preview/thank-you/thank-you.component.d.ts +1 -0
  87. package/lib/sharedComponents/assessment-editor/components/preview/welcome/welcome.component.d.ts +1 -0
  88. package/lib/sharedComponents/assessment-editor/components/welcome-thankyou/welcome-thankyou.component.d.ts +1 -0
  89. package/lib/sharedComponents/assessment-list/assessment-list.component.d.ts +1 -0
  90. package/lib/sharedComponents/audit-category-list/audit-category-list.component.d.ts +1 -0
  91. package/lib/sharedComponents/bulk-responsibility-view/bulk-responsibility-view.component.d.ts +6 -0
  92. package/lib/sharedComponents/category-list/category-list.component.d.ts +1 -0
  93. package/lib/sharedComponents/category-list-selection/category-list-selection/category-list-selection.component.d.ts +1 -0
  94. package/lib/sharedComponents/category-list-selection/category-list-selection.module.d.ts +5 -5
  95. package/lib/sharedComponents/category-multiselect/category-multi-select.component.d.ts +1 -0
  96. package/lib/sharedComponents/checkbox-list/checkbox-list.component.d.ts +1 -0
  97. package/lib/sharedComponents/format-and-evidence/format-and-evidence.component.d.ts +5 -1
  98. package/lib/sharedComponents/framework-list/framework-list.component.d.ts +1 -0
  99. package/lib/sharedComponents/frequency/frequency-random/frequency-random.component.d.ts +0 -1
  100. package/lib/sharedComponents/frequency/frequency-responsibility-list/frequency-responsibility-list.component.d.ts +1 -0
  101. package/lib/sharedComponents/frequency/frequency.service.d.ts +2 -92
  102. package/lib/sharedComponents/group-users-list/group-users-list.component.d.ts +1 -0
  103. package/lib/sharedComponents/link-program/link-program/link-program.component.d.ts +1 -0
  104. package/lib/sharedComponents/link-responsibility/link-responsibility.component.d.ts +1 -2
  105. package/lib/sharedComponents/owner-list/owner-list.component.d.ts +1 -0
  106. package/lib/sharedComponents/pipes/risk-class.pipe.d.ts +7 -0
  107. package/lib/sharedComponents/policy-access/policy-access.component.d.ts +1 -0
  108. package/lib/sharedComponents/program-listing/program-listing.component.d.ts +1 -0
  109. package/lib/sharedComponents/radio-list/radio-list.component.d.ts +1 -0
  110. package/lib/sharedComponents/radio-list-with-pagination/radio-list.component.d.ts +1 -0
  111. package/lib/sharedComponents/responsibility-centers-list/responsibility-centers-list.component.d.ts +1 -0
  112. package/lib/sharedComponents/responsibility-risk-selector/responsibility-risk-selector.component.d.ts +1 -0
  113. package/lib/sharedComponents/review-frequency/review-frequency.component.d.ts +1 -0
  114. package/lib/sharedComponents/roles-list/roles-list.component.d.ts +1 -0
  115. package/lib/sharedComponents/select-approvers/select-approvers.component.d.ts +1 -0
  116. package/lib/sharedComponents/users-radio-list/users-radio-list.component.d.ts +1 -0
  117. package/lib/ui-kit/pagination/pagination/pagination.component.d.ts +1 -0
  118. package/lib/workflow/grc-object/grc-object-container/grc-object-container.component.d.ts +1 -5
  119. package/lib/workflow/shared/components/attributes/attributes-checkbox/attributes-checkbox.component.d.ts +1 -0
  120. package/lib/workflow/shared/components/grc-category-listing/grc-category-listing.component.d.ts +1 -3
  121. package/lib/workflow/shared/components/program-responsibility-listing/program-responsibility-listing.component.d.ts +2 -6
  122. package/lib/workflow/shared/services/grc.service.d.ts +0 -1
  123. package/lib/workflow/shared/workflow-pipes/workflow-pipes.module.d.ts +2 -3
  124. package/lib/workflow-assessment/import-an-assessment/import-an-assessment.component.d.ts +1 -0
  125. package/lib/workflow-assessment/workflow-assessment.component.d.ts +1 -0
  126. package/lib/workflow-compliance/workflow-compliance.component.d.ts +11 -32
  127. package/lib/workflow-engine-container/api-constants.d.ts +0 -1
  128. package/lib/workflow-engine-container/workflow-engine-container.component.d.ts +2 -5
  129. package/lib/workflow-engine.module.d.ts +2 -3
  130. package/lib/workflow-policy/workflow-policy.component.d.ts +1 -9
  131. package/lib/workflow-program/constants.d.ts +3 -0
  132. package/lib/workflow-program/create-program-ui/assessment-picker/assessment-picker.component.d.ts +1 -0
  133. package/lib/workflow-program/create-program-ui/define-framework-listing/define-framework-listing.component.d.ts +1 -0
  134. package/lib/workflow-program/create-program-ui/pagination/pagination/pagination.component.d.ts +1 -0
  135. package/lib/workflow-program/create-program-ui/role-list/role-list.component.d.ts +1 -0
  136. package/lib/workflow-program/create-program-ui/user-group-list/user-group-list.component.d.ts +1 -0
  137. package/lib/workflow-program/workflow-program.component.d.ts +11 -9
  138. package/lib/workflow-risk/workflow-risk.component.d.ts +2 -1
  139. package/lib/workflow-services/policy.service.d.ts +1 -1
  140. package/lib/workflow-services/programs.service.d.ts +54 -13
  141. package/lib/workflow-services/responsibility.service.d.ts +4 -17
  142. package/lib/workflow-survey-form/workflow-survey-form.component.d.ts +1 -0
  143. package/package.json +1 -1
  144. package/esm2022/lib/interfaces/frequency.interface.mjs +0 -2
  145. package/esm2022/lib/interfaces/iframe-type.mjs +0 -7
  146. package/esm2022/lib/sharedComponents/list-container/list-container.component.mjs +0 -52
  147. package/esm2022/lib/sharedComponents/program-list/constant.mjs +0 -27
  148. package/esm2022/lib/sharedComponents/program-list/interfaces/data-source.interface.mjs +0 -2
  149. package/esm2022/lib/sharedComponents/program-list/interfaces/list-item.interface.mjs +0 -2
  150. package/esm2022/lib/sharedComponents/program-list/pipes/check-selected-items.pipes.mjs +0 -23
  151. package/esm2022/lib/sharedComponents/program-list/program-list/program-list.component.mjs +0 -273
  152. package/esm2022/lib/sharedComponents/program-list/program-list.module.mjs +0 -51
  153. package/esm2022/lib/sharedComponents/program-list/services/list-utils.service.mjs +0 -27
  154. package/esm2022/lib/sharedComponents/program-list/services/program-list-api.service.mjs +0 -32
  155. package/esm2022/lib/ui-kit/loaders/loaders.module.mjs +0 -24
  156. package/esm2022/lib/ui-kit/loaders/table-loader/table-loader.component.mjs +0 -19
  157. package/esm2022/lib/workflow/shared/workflow-pipes/get-user-details.pipe.mjs +0 -26
  158. package/lib/interfaces/frequency.interface.d.ts +0 -37
  159. package/lib/interfaces/iframe-type.d.ts +0 -5
  160. package/lib/sharedComponents/list-container/list-container.component.d.ts +0 -9
  161. package/lib/sharedComponents/program-list/constant.d.ts +0 -20
  162. package/lib/sharedComponents/program-list/interfaces/data-source.interface.d.ts +0 -4
  163. package/lib/sharedComponents/program-list/interfaces/list-item.interface.d.ts +0 -5
  164. package/lib/sharedComponents/program-list/pipes/check-selected-items.pipes.d.ts +0 -7
  165. package/lib/sharedComponents/program-list/program-list/program-list.component.d.ts +0 -126
  166. package/lib/sharedComponents/program-list/program-list.module.d.ts +0 -15
  167. package/lib/sharedComponents/program-list/services/list-utils.service.d.ts +0 -7
  168. package/lib/sharedComponents/program-list/services/program-list-api.service.d.ts +0 -14
  169. package/lib/ui-kit/loaders/loaders.module.d.ts +0 -8
  170. package/lib/ui-kit/loaders/table-loader/table-loader.component.d.ts +0 -9
  171. package/lib/workflow/shared/workflow-pipes/get-user-details.pipe.d.ts +0 -7
@@ -1,6 +1,7 @@
1
1
  import { Component, EventEmitter, Input, Output, } from '@angular/core';
2
2
  import { LINKS } from '../workflow/shared/constants/cdn-link.constant';
3
3
  import { ASSETS } from '../constants/assets.constants';
4
+ import { COLLABORATOR_TOOLTIP } from '../workflow-program/constants';
4
5
  import * as i0 from "@angular/core";
5
6
  import * as i1 from "../report-a-case/services/report-a-case.service";
6
7
  import * as i2 from "@angular/common";
@@ -160,9 +161,9 @@ export class MoreOptionComponent {
160
161
  },
161
162
  {
162
163
  imageUrl: ASSETS.link_items,
163
- name: 'LINK PROGRAMS',
164
- tooltipTitle: 'LINK PROGRAMS',
165
- tooltipMessage: `This option allows you to associate Programs from the Compliance module with a policy. These could be processes or procedures that might be linked to a policy.`,
164
+ name: 'LINK PROGRAMS & RESPONSIBILITIES',
165
+ tooltipTitle: 'LINK PROGRAMS & RESPONSIBILITIES',
166
+ tooltipMessage: `This option allows you to associate Programs & responsibilities from the Compliance module with a policy. These could be processes or procedures that might be linked to a policy.`,
166
167
  checked: false,
167
168
  hidden: false,
168
169
  code: 'LINK_PROGRAM_RESPONSIBILITIES',
@@ -196,17 +197,6 @@ export class MoreOptionComponent {
196
197
  checked: false,
197
198
  hidden: false,
198
199
  },
199
- // {
200
- // imageUrl: 'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/category.svg',
201
- // name: 'Program',
202
- // code: 'CATEGORY',
203
- // tooltipTitle: 'Program',
204
- // tooltipMessage: `Programs enable you to group similar responsibilities together.
205
- // Allocating a responsibility to a Program allows you to view a group or similar responsibilities at once.
206
- // It also allows you to view the performance of those collective responsibilities.`,
207
- // checked: false,
208
- // hidden: false,
209
- // },
210
200
  {
211
201
  imageUrl: ASSETS.responsibility_center,
212
202
  name: 'Responsibility Center',
@@ -251,7 +241,30 @@ export class MoreOptionComponent {
251
241
  disabledMessage: 'An assessment can be linked with a responsibility only after removing the associated checkpoints.',
252
242
  },
253
243
  {
254
- imageUrl: 'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/risks.svg',
244
+ imageUrl: ASSETS.checkpoints,
245
+ // name: 'Checkpoints <span *ngIf="false" class="checkpoint-version">V2.0</span> <i class="icons depreciation-icon vx-fs-16 vx-ml-2" appTooltip="This is an out-of-date version of the Checkpoints feature. To add checkpoints that are only relevant to this responsibility you can use the new Checkpoints feature. Alternatively, you can use an existing questionnaire template using the Assessments feature." placement="bottom" delay="0" [tooltipMandatory]="true">&#xe930;</i>',
246
+ name: 'Checkpoints <i class="icons depreciation-icon vx-fs-16 vx-ml-2" appTooltip="This is an out-of-date version of the Checkpoints feature. To add checkpoints that are only relevant to this responsibility you can use the new Checkpoints feature. Alternatively, you can use an existing questionnaire template using the Assessments feature." placement="bottom" delay="0" [tooltipMandatory]="true">&#xe930;</i>',
247
+ code: 'CHECKPOINTS',
248
+ tooltipTitle: 'Checkpoints',
249
+ tooltipMessage: 'This is an out-of-date version of the Checkpoints feature. To add checkpoints that are only relevant to this responsibility you can use the new Checkpoints feature. Alternatively, you can use an existing questionnaire template using the Assessments feature.',
250
+ checked: false,
251
+ hidden: false,
252
+ isDisabled: false,
253
+ disabledMessage: 'The checkpoints feature is replaced with the new & enhanced assessment functionality. Select the <strong>Assessments</strong> option below to create interactive outcome-based or self-assessment questionnaires.',
254
+ },
255
+ {
256
+ imageUrl: ASSETS.checkpoints,
257
+ name: 'Checkpoints',
258
+ code: 'CHECKPOINTS_NEW',
259
+ tooltipTitle: 'Checkpoints',
260
+ tooltipMessage: 'Checkpoints allow you to specify multiple steps for a specific responsibility which need to be completed as part of completing the responsibility. Often checkpoints are used to replace instruction manuals.',
261
+ checked: false,
262
+ hidden: false,
263
+ isDisabled: false,
264
+ disabledMessage: 'New Checkpoints can be linked with a responsibility only after removing the out-of-date version of the Checkpoints.',
265
+ },
266
+ {
267
+ imageUrl: ASSETS.risks,
255
268
  name: 'Risk Classification',
256
269
  tooltipTitle: 'Risk Classification',
257
270
  tooltipMessage: 'You can specify the level of risk that the organization will be exposed to if the responsibility is not completed.',
@@ -280,7 +293,27 @@ export class MoreOptionComponent {
280
293
  code: 'OVERSEER',
281
294
  },
282
295
  {
283
- imageUrl: 'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/link-items.svg',
296
+ imageUrl: ASSETS.audit,
297
+ name: 'ASSURANCE',
298
+ tooltipTitle: 'ASSURANCE',
299
+ tooltipMessage: 'Select the test plan categories that you would like to add this responsibility to.',
300
+ checked: false,
301
+ hidden: false,
302
+ code: 'ASSURANCE',
303
+ },
304
+ {
305
+ imageUrl: ASSETS.audit,
306
+ name: 'REQUIRES AUDIT?',
307
+ tooltipTitle: 'REQUIRES AUDIT?',
308
+ tooltipMessage: 'Select the audit categories that you would like to add this responsibility to.',
309
+ checked: false,
310
+ hidden: false,
311
+ code: 'REQUIRES_AUDIT',
312
+ isDisabled: true,
313
+ disabledMessage: 'This responsibility can be scheduled for an audit only after the Responsibility Center is selected.',
314
+ },
315
+ {
316
+ imageUrl: ASSETS.link_items,
284
317
  name: 'LINK GRC OBJECT(S)',
285
318
  tooltipTitle: 'LINK OTHER GRC OBJECTS',
286
319
  tooltipMessage: `This option lets you link a responsibility with related GRC Objects.`,
@@ -375,7 +408,16 @@ export class MoreOptionComponent {
375
408
  ],
376
409
  CAPR: [
377
410
  {
378
- imageUrl: 'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/owner.svg',
411
+ imageUrl: ASSETS.roles,
412
+ name: 'Role(S)',
413
+ tooltipTitle: 'Role(s)',
414
+ tooltipMessage: `Role(s) let you specify the users that can be “Owners” of a Program.`,
415
+ checked: false,
416
+ hidden: false,
417
+ code: 'ROLES',
418
+ },
419
+ {
420
+ imageUrl: ASSETS.case_owners,
379
421
  name: 'Owner(s)',
380
422
  tooltipTitle: 'Owner(s)',
381
423
  tooltipMessage: `Owners are responsible for managing a Program. Only Owners can make changes to a Program and the responsibilities that are linked with the Program.<br>
@@ -386,20 +428,105 @@ export class MoreOptionComponent {
386
428
  code: 'OWNERS',
387
429
  },
388
430
  {
389
- imageUrl: 'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/collaborator.svg',
431
+ imageUrl: ASSETS.collaborator,
390
432
  name: 'Collaborators',
391
433
  tooltipTitle: 'Collaborators',
392
- tooltipMessage: `Collaborators are required to complete the responsibilities that have been assigned to them. Where Collaborators are selected when creating a Program, only those Collaborators will be available for selection when creating a responsibility linked with the Program.`,
434
+ tooltipMessage: COLLABORATOR_TOOLTIP,
393
435
  checked: false,
394
436
  hidden: false,
395
- code: 'COLLABORATORS',
437
+ code: 'COLLABORATOR',
438
+ },
439
+ {
440
+ imageUrl: ASSETS.approval,
441
+ name: 'Approver',
442
+ tooltipTitle: 'Approver',
443
+ tooltipMessage: `An Approver is responsible for approving a Program. Where an Approver is selected, the Program and all responsibilities linked with that Program will only commence once the Program has been approved.`,
444
+ checked: false,
445
+ hidden: true,
446
+ code: 'APPROVER',
447
+ },
448
+ {
449
+ imageUrl: ASSETS.recurring,
450
+ name: 'Program Duration',
451
+ tooltipTitle: 'Program Duration',
452
+ tooltipMessage: 'Program Duration refers to the duration of the Program. A Program can occur in perpetuity, or it can occur until the end of the current business cycle that has been specified in ' +
453
+ this.businessCycle?.selectedCycle?.business_cycle +
454
+ '. All responsibilities linked with that Program will also have the same Program Duration.',
455
+ checked: false,
456
+ hidden: true,
457
+ code: 'PROGRAM_FREQUENCY',
458
+ },
459
+ {
460
+ imageUrl: ASSETS.lock_scope,
461
+ name: 'Lock the Program Scope',
462
+ tooltipTitle: 'Lock the Program Scope',
463
+ tooltipMessage: `If the Program Scope is locked, neither the Program nor the responsibilities linked with the Program can be edited once the Program begins. In order to edit the Program or the linked responsibilities, the Program details will need to be edited.`,
464
+ checked: false,
465
+ hidden: true,
466
+ code: 'SCOPE_CHANGES',
467
+ },
468
+ {
469
+ imageUrl: ASSETS.responsibility_center,
470
+ name: 'Responsibility Center',
471
+ tooltipTitle: 'Responsibility Center',
472
+ tooltipMessage: `Responsibility Centers represent your organizational and operational infrastructure. Where Responsibility Centers are selected when creating a Program, only those Responsibilities Centers will be available for selection when creating a responsibility linked with the Program.`,
473
+ checked: false,
474
+ hidden: true,
475
+ code: 'RC',
476
+ },
477
+ {
478
+ imageUrl: ASSETS.case_assignees,
479
+ name: 'Assignees',
480
+ tooltipTitle: 'Assignees',
481
+ tooltipMessage: `Assignees are required to complete the responsibilities that have been assigned to them. Where Assignees are selected when creating a Program, only those Assignees will be available for selection when creating a responsibility linked with the Program.`,
482
+ checked: false,
483
+ hidden: true,
484
+ code: 'ASSIGNEES',
485
+ },
486
+ {
487
+ imageUrl: ASSETS.reviewer,
488
+ name: 'Reviewers',
489
+ tooltipTitle: 'Reviewers',
490
+ tooltipMessage: `Reviewers are required to review responsibilities after they have been completed. Where Reviewers are selected when creating a Program, only those Reviewers will be available for selection when creating a responsibility linked with the Program.`,
491
+ checked: false,
492
+ hidden: true,
493
+ code: 'REVIEWER',
494
+ },
495
+ {
496
+ imageUrl: ASSETS.oversight,
497
+ name: 'Oversights',
498
+ tooltipTitle: 'Oversights',
499
+ tooltipMessage: 'Oversights receive updates when a responsibility is completed, completed with delay or not completed. Where Oversights are selected when creating a Program, only those Oversights will be available for selection when creating a responsibility linked with the Program.',
500
+ checked: false,
501
+ hidden: true,
502
+ code: 'OVERSEER',
503
+ },
504
+ {
505
+ imageUrl: ASSETS.assessments,
506
+ name: 'Assessments',
507
+ code: 'ASSESSMENT',
508
+ tooltipTitle: ' Assessments',
509
+ tooltipMessage: 'Assessments are a digital form that are created in “Assessment” within the Compliance Module. Where Assessments are selected when creating a Program, only those Assessments will be available for selection when creating a responsibility linked with the Program.',
510
+ checked: false,
511
+ hidden: true,
512
+ isDisabled: false,
513
+ disabledMessage: 'An assessment can be linked with a responsibility only after removing the associated checkpoints.',
514
+ },
515
+ {
516
+ imageUrl: ASSETS.format_evidence,
517
+ name: 'Evidence',
518
+ code: 'FORMATE_EVIDENCE',
519
+ tooltipTitle: 'Evidence',
520
+ tooltipMessage: 'If selected, evidence of completion of a responsibility will be required for all responsibilities that are linked with the Program. An Assignor, being the person who creates the responsibility, can override this option when creating a responsibility.',
521
+ checked: false,
522
+ hidden: true,
396
523
  },
397
524
  {
398
525
  imageUrl: ASSETS.custom_fields,
399
526
  name: 'Custom Field',
400
527
  code: 'CUSTOM_FIELDS',
401
528
  tooltipTitle: ' Custom Field',
402
- tooltipMessage: 'When a custom field is specified, all responsibilities linked with a Program will contain that custom field. Custom fields enable the collection of additional meta data.',
529
+ tooltipMessage: 'Where a custom field is specified, all responsibilities linked with a Program will contain that custom field. Custom fields enable the collection of additional meta data.',
403
530
  checked: false,
404
531
  hidden: false,
405
532
  },
@@ -582,7 +709,7 @@ export class MoreOptionComponent {
582
709
  // if(ele.code === 'ASSURANCE') {
583
710
  // ele.checked = false;
584
711
  // }
585
- if (['GRC_OBJECTS'].includes(ele.code)) {
712
+ if (['REQUIRES_AUDIT', 'GRC_OBJECTS'].includes(ele.code)) {
586
713
  ele.checked = false;
587
714
  }
588
715
  });
@@ -604,7 +731,7 @@ export class MoreOptionComponent {
604
731
  // if(ele.code === 'ASSURANCE') {
605
732
  // ele.isDisabled = false;
606
733
  // }
607
- if (['GRC_OBJECTS'].includes(ele.code)) {
734
+ if (['REQUIRES_AUDIT', 'GRC_OBJECTS'].includes(ele.code)) {
608
735
  ele.isDisabled = false;
609
736
  }
610
737
  });
@@ -635,6 +762,28 @@ export class MoreOptionComponent {
635
762
  this.ff_rc_listing
636
763
  ? (this.permissionText = 'Permissions')
637
764
  : (this.permissionText = 'Permission Group(S)');
765
+ this.moreOptionsList.CAPR[0].name = this.permissionText;
766
+ this.moreOptionsList.CAPR[0].tooltipTitle = this.permissionText;
767
+ this.moreOptionsList.CAPR[1].tooltipMessage = this.featureflagrole
768
+ ? `Owners are responsible for managing a Program. Only Owners can make changes to a Program and the responsibilities that are linked with the Program.<br>
769
+ The <b>Key Power User </b> and all <b>Power Users</b> will be selected as the Owners of a Program by default.
770
+ `
771
+ : `Owners are responsible for managing a Program. Only Owners can make changes to a Program and the responsibilities that are linked with the Program.<br>
772
+ The <b>Key Admin</b> and all <b>Admin</b> users will be selected as the Owners of a Program by default.
773
+ `;
774
+ if (this.allowedFeature?.isFeatureEnabled('ff_program_simplify')) {
775
+ this.moreOptionsList.CAPR[0].tooltipMessage = `${this.permissionText} let you specify the users that can be “Owners” of a Program.`;
776
+ }
777
+ else {
778
+ this.moreOptionsList.CAPR[0].tooltipMessage = `${this.permissionText} let you specify the users that can be “Owners” and “Approvers” of a Program.`;
779
+ }
780
+ const index = this.moreOptionsList.CAR.findIndex((ele) => ele.code === 'CHECKPOINTS');
781
+ this.moreOptionsList.CAR[index].hidden =
782
+ this.isEditMode === false ? true : false;
783
+ const ProgramIndex = this.moreOptionsList.CAR.findIndex((ele) => ele.code === 'PROGRAM');
784
+ if (ProgramIndex > -1) {
785
+ this.moreOptionsList.CAR[ProgramIndex].isDisabled = this.isEditMode;
786
+ }
638
787
  this.programSimplifyFlag =
639
788
  this.allowedFeature?.isFeatureEnabled('ff_program_simplify') ?? true;
640
789
  }
@@ -722,13 +871,29 @@ export class MoreOptionComponent {
722
871
  'ASSESSMENT',
723
872
  'FORMATE_EVIDENCE',
724
873
  ];
874
+ if (this.orgDetails?.hasProgramFullPermission &&
875
+ this.allowedFeature.isFeatureEnabled('ff_program_simplify')) {
876
+ this.moreOptionsList?.CAPR?.forEach((option) => {
877
+ if (code?.includes(option.code)) {
878
+ option.hidden = false;
879
+ }
880
+ });
881
+ }
882
+ if (!this.allowedFeature.isFeatureEnabled('ff_program_simplify')) {
883
+ code.push('APPROVER');
884
+ this.moreOptionsList?.CAPR?.forEach((option) => {
885
+ if (code?.includes(option.code)) {
886
+ option.hidden = false;
887
+ }
888
+ });
889
+ }
725
890
  }
726
891
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MoreOptionComponent, deps: [{ token: i1.ReportACaseService }], target: i0.ɵɵFactoryTarget.Component }); }
727
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: MoreOptionComponent, selector: "app-more-option", inputs: { currentWorkflow: "currentWorkflow", openedFrom: "openedFrom", isEditMode: "isEditMode", isRCSelected: "isRCSelected", isProgramSelected: "isProgramSelected", allowedFeature: "allowedFeature", getOrganizationDetails: ["orgDetailsData", "getOrganizationDetails"], isAttributesAvailable: "isAttributesAvailable" }, outputs: { selectedOption: "selectedOption" }, usesOnChanges: true, ngImport: i0, template: "<!-- <p>more-option works!</p> -->\n<div class=\"more-option\">\n <div class=\"message-container\">\n <img [src]=\"ASSETS.add_risk_more_option\" alt=\"\" />\n <p *ngIf=\"currentWorkflow\">{{ placeholderTexts[currentWorkflow] }}</p>\n </div>\n <div class=\"more-options\">\n <ul>\n <!-- <div class=\"more-options-heading\" *ngIf=\"currentWorkflow ==='CAPR'\">PROGRAM SCOPE OPTIONS</div> -->\n <ng-container\n *ngFor=\"let data of moreOptionsList[currentWorkflow]; let i = index\"\n >\n <!-- <li *ngIf=\"!data.hidden\" [appTooltip]=\"data.isDisabled && !isRcSelected? 'This responsibility can be scheduled for an audit only after the Responsibility Center is selected.' : ''\" placement=\"right\" delay=\"0\" [tooltipMandatory]=\"data.isDisabled && !isRcSelected\">\n <button [class.active]=\"data.checked\" [disabled]=\"data.code === 'RC' && openedFrom === 'RISK_TREATMENT' && currentWorkflow === 'CAR' || (data.isDisabled && !isRCSelected)\" [class.disabled]=\"data.isDisabled && !isRCSelected\" (click)=\"data.checked = !data.checked; selectMoreOption(data)\"> -->\n\n <li\n *ngIf=\"!data.hidden\"\n [appTooltip]=\"\n data.isDisabled ||\n (((data.code === 'RC' && !isRcSelected) ||\n data.code === 'ATTRIBUTES') &&\n data.isDisabled)\n ? data?.disabledMessage\n : ''\n \"\n placement=\"right\"\n delay=\"0\"\n [tooltipMandatory]=\"data.isDisabled\"\n id=\"listdata\"\n >\n <button\n [class.active]=\"data.checked\"\n [disabled]=\"\n (data.code === 'RC' &&\n openedFrom === 'RISK_TREATMENT' &&\n currentWorkflow === 'CAR') ||\n data.isDisabled ||\n (data.isDisabled && !isRCSelected)\n \"\n (click)=\"selectMoreOption(data, i)\"\n >\n <span *ngIf=\"!data.checked\" class=\"more-icon\">\n <img [src]=\"data.imageUrl\" alt=\"\" />\n </span>\n <svg\n *ngIf=\"data.checked\"\n class=\"checkIcon\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 52 52\"\n >\n <circle\n class=\"checkIcon__circle\"\n cx=\"26\"\n cy=\"26\"\n r=\"25\"\n fill=\"none\"\n />\n <path\n class=\"checkIcon__check\"\n fill=\"none\"\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\n />\n </svg>\n <span\n class=\"value\"\n [innerHTML]=\"data?.name\"\n [appTooltip]=\"data?.name\"\n placement=\"bottom-left\"\n delay=\"0\"\n [tooltipMandatory]=\"false\"\n ></span>\n <!-- <span *ngIf=\"data.code ==='CHECKPOINTS_NEW'\" class=\"checkpoint-version\"> V2.0</span> -->\n </button>\n <span\n class=\"icon\"\n *ngIf=\"data.tooltipMessage !== ''\"\n libPopoverHover\n (mouseover)=\"dataTooltip.popover()\"\n (mouseleave)=\"dataTooltip.closePopover()\"\n placement=\"right\"\n ><i class=\"icons\">&#xe91f;</i></span\n >\n <popover-hover #dataTooltip>\n <div class=\"vx-info-card\">\n <div\n class=\"vx-info-card-head\"\n [innerHTML]=\"data.tooltipTitle\"\n ></div>\n <div\n class=\"vx-info-card-body\"\n [innerHTML]=\"data.tooltipMessage\"\n ></div>\n </div>\n </popover-hover>\n </li>\n \n </ng-container>\n </ul>\n </div>\n</div>\n", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-left.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-top.css\";::ng-deep .more-option{align-items:center;position:relative;padding:0;display:block;height:auto}::ng-deep .more-option .message-container{text-align:center;position:static;padding:0 0 20px;top:0;left:0;right:0}::ng-deep .more-option .message-container img{width:163px;margin-bottom:13px;display:inline-block}@media screen and (max-height: 900px){::ng-deep .more-option .message-container img{width:120px;margin-bottom:8px}}::ng-deep .more-option .message-container p{font-size:12px;font-weight:300;font-style:italic;color:#707070;margin:0;padding:0;line-height:18px}::ng-deep .more-option .more-options{display:block;background:#fff;margin-left:-38px;padding:20px 0 20px 16px;position:relative;width:calc(100% + 60px);border-radius:16px 0 0 16px}::ng-deep .more-option .more-options:before{content:\"\";position:absolute;left:0;top:-35px;width:16px;height:41px;border-right:26px solid #ffffff;border-bottom:8px solid transparent;border-bottom-right-radius:46px}::ng-deep .more-option .more-options:after{content:\"\";position:absolute;left:0;bottom:-35px;width:16px;height:41px;border-right:26px solid #ffffff;border-top:8px solid transparent;border-top-right-radius:46px}@media screen and (max-width: 2550px){::ng-deep .more-option .more-options{margin-top:0}}@media screen and (max-width: 1920px){::ng-deep .more-option .more-options{margin-top:0}}@media screen and (max-width: 1600px){::ng-deep .more-option .more-options{margin-top:0}}@media screen and (max-width: 1440px){::ng-deep .more-option .more-options{margin-top:0}}@media screen and (max-width: 1366px){::ng-deep .more-option .more-options{margin-top:0}}::ng-deep .more-option .more-options ul{padding:0 32px 0 0;margin:0;overflow-y:auto}::ng-deep .more-option .more-options ul::-webkit-scrollbar{width:0;background-color:transparent}::ng-deep .more-option .more-options ul::-webkit-scrollbar-thumb{border-radius:1px;background-color:#dbdbdb}::ng-deep .more-option .more-options ul .more-options-heading{color:#747576;font-size:11px;font-weight:500;text-transform:uppercase;margin-bottom:8px}::ng-deep .more-option .more-options ul li{position:relative;list-style:none;display:flex;align-items:center}::ng-deep .more-option .more-options ul li button{display:flex;outline:none;background:transparent;cursor:pointer;align-items:center;justify-content:flex-start;margin:0;width:100%;border:none;padding:4px 11px 4px 4px;border:1px solid #f1f1f1;border-radius:4px}::ng-deep .more-option .more-options ul li button.active{background:#fbfbfb}::ng-deep .more-option .more-options ul li button span.more-icon{height:32px;width:32px;display:flex;margin-right:12px;align-items:center;justify-content:center}::ng-deep .more-option .more-options ul li button img{width:100%}::ng-deep .more-option .more-options ul li button .checkIcon{width:24px;height:24px;background:#fff;border-radius:50%;stroke-width:4;stroke:#34aa44;stroke-miterlimit:10;box-shadow:inset 0 0 #34aa44;animation:fillCheck .4s ease-in-out .4s forwards,scale .3s ease-in-out .9s both;margin:4px 16px 4px 4px}::ng-deep .more-option .more-options ul li button .checkIcon__circle{stroke-dasharray:166;stroke-dashoffset:166;stroke-width:2;stroke-miterlimit:10;stroke:#34aa44;fill:none;animation:strokeCheck .6s cubic-bezier(.65,0,.45,1) forwards}::ng-deep .more-option .more-options ul li button .checkIcon__check{transform-origin:50% 50%;stroke-dasharray:48;stroke-dashoffset:48;animation:strokeCheck .3s cubic-bezier(.65,0,.45,1) .8s forwards}::ng-deep .more-option .more-options ul li button span.value{line-height:18px;color:#161b2f;font-size:11px;font-weight:500;text-transform:uppercase;width:calc(100% - 72px);text-overflow:ellipsis;white-space:nowrap;overflow:hidden;display:inline-block;text-align:left}::ng-deep .more-option .more-options ul li button span.value i.depreciation-icon{color:#e4b700}::ng-deep .more-option .more-options ul li button .checkpoint-version{background:#f1f1f1;border-radius:2px;color:#042e7d;font-size:10px;font-weight:600;line-height:14px;margin-left:4px;padding:0 2px}::ng-deep .more-option .more-options ul li button:disabled{background:#f8f8f8;pointer-events:none}::ng-deep .more-option .more-options ul li button:disabled span{opacity:.3}::ng-deep .more-option .more-options ul li+li{margin-top:8px}::ng-deep .more-option .more-options ul li .vx-info-card{width:280px;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both;background:#fff;box-shadow:0 3px 6px #1c5bd140;border-radius:4px;position:static;display:block}::ng-deep .more-option .more-options ul li .vx-info-card-head{font-size:13px;border-bottom:1px solid #dcdcdc;padding:8px 12px;font-weight:500;text-transform:none;color:#161b2f}::ng-deep .more-option .more-options ul li .vx-info-card-body{font-size:11px;padding:8px 12px;margin:0;font-weight:400;text-transform:none;color:#747576}::ng-deep .more-option .more-options ul li span.icon{color:#1e5dd3;font-size:12px;line-height:12px;cursor:pointer;position:absolute;top:calc(50% - 6px);right:12px;height:12px;width:12px}@keyframes strokeCheck{to{stroke-dashoffset:0}}@keyframes fillCheck{to{box-shadow:inset 0 0 0 2px #34aa44}}@keyframes animate{0%{transform:translate(281px)}to{transform:translate(0)}}@keyframes scale-up-center{0%{transform:scale(.5);opacity:0}to{transform:scale(1);opacity:1}}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.ToolTipDirective, selector: "[appTooltip]", inputs: ["appTooltip", "placement", "type", "tooltipMandatory", "showTooltip", "animate"] }, { kind: "component", type: i4.PopoverHoverComponent, selector: "popover-hover" }, { kind: "directive", type: i5.PopoverHoverDirective, selector: "[libPopoverHover]", inputs: ["placement"] }] }); }
892
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: MoreOptionComponent, selector: "app-more-option", inputs: { currentWorkflow: "currentWorkflow", openedFrom: "openedFrom", isEditMode: "isEditMode", isRCSelected: "isRCSelected", isProgramSelected: "isProgramSelected", allowedFeature: "allowedFeature", getOrganizationDetails: ["orgDetailsData", "getOrganizationDetails"], isAttributesAvailable: "isAttributesAvailable" }, outputs: { selectedOption: "selectedOption" }, usesOnChanges: true, ngImport: i0, template: "<!-- <p>more-option works!</p> -->\n<div class=\"more-option\">\n <div class=\"message-container\">\n <img [src]=\"ASSETS.add_risk_more_option\" alt=\"\" />\n <p *ngIf=\"currentWorkflow\">{{ placeholderTexts[currentWorkflow] }}</p>\n </div>\n <div class=\"more-options\">\n <ul>\n <!-- <div class=\"more-options-heading\" *ngIf=\"currentWorkflow ==='CAPR'\">PROGRAM SCOPE OPTIONS</div> -->\n <ng-container\n *ngFor=\"let data of moreOptionsList[currentWorkflow]; let i = index\"\n >\n <!-- <li *ngIf=\"!data.hidden\" [appTooltip]=\"data.isDisabled && !isRcSelected? 'This responsibility can be scheduled for an audit only after the Responsibility Center is selected.' : ''\" placement=\"right\" delay=\"0\" [tooltipMandatory]=\"data.isDisabled && !isRcSelected\">\n <button [class.active]=\"data.checked\" [disabled]=\"data.code === 'RC' && openedFrom === 'RISK_TREATMENT' && currentWorkflow === 'CAR' || (data.isDisabled && !isRCSelected)\" [class.disabled]=\"data.isDisabled && !isRCSelected\" (click)=\"data.checked = !data.checked; selectMoreOption(data)\"> -->\n\n <li\n *ngIf=\"!data.hidden\"\n [appTooltip]=\"\n data.isDisabled ||\n (((data.code === 'RC' && !isRcSelected) ||\n data.code === 'ATTRIBUTES') &&\n data.isDisabled)\n ? data?.disabledMessage\n : ''\n \"\n placement=\"right\"\n delay=\"0\"\n [tooltipMandatory]=\"data.isDisabled\"\n id=\"listdata\"\n >\n <button\n [class.active]=\"data.checked\"\n [disabled]=\"\n (data.code === 'RC' &&\n openedFrom === 'RISK_TREATMENT' &&\n currentWorkflow === 'CAR') ||\n data.isDisabled ||\n (data.isDisabled && !isRCSelected)\n \"\n (click)=\"selectMoreOption(data, i)\"\n >\n <span *ngIf=\"!data.checked\" class=\"more-icon\">\n <img [src]=\"data.imageUrl\" alt=\"\" />\n </span>\n <svg\n *ngIf=\"data.checked\"\n class=\"checkIcon\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 52 52\"\n >\n <circle\n class=\"checkIcon__circle\"\n cx=\"26\"\n cy=\"26\"\n r=\"25\"\n fill=\"none\"\n />\n <path\n class=\"checkIcon__check\"\n fill=\"none\"\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\n />\n </svg>\n <span\n class=\"value\"\n [innerHTML]=\"data?.name\"\n [appTooltip]=\"data?.name\"\n placement=\"bottom-left\"\n delay=\"0\"\n [tooltipMandatory]=\"false\"\n ></span>\n <!-- <span *ngIf=\"data.code ==='CHECKPOINTS_NEW'\" class=\"checkpoint-version\"> V2.0</span> -->\n </button>\n <span\n class=\"icon\"\n *ngIf=\"data.tooltipMessage !== ''\"\n libPopoverHover\n (mouseover)=\"dataTooltip.popover()\"\n (mouseleave)=\"dataTooltip.closePopover()\"\n placement=\"right\"\n ><i class=\"icons\">&#xe91f;</i></span\n >\n <popover-hover #dataTooltip>\n <div class=\"vx-info-card\">\n <div\n class=\"vx-info-card-head\"\n [innerHTML]=\"data.tooltipTitle\"\n ></div>\n <div\n class=\"vx-info-card-body\"\n [innerHTML]=\"data.tooltipMessage\"\n ></div>\n </div>\n </popover-hover>\n </li>\n <div\n class=\"more-options-heading vx-mt-2\"\n *ngIf=\"currentWorkflow === 'CAPR' && i === 2\"\n >\n PROGRAM SCOPE OPTIONS\n </div>\n </ng-container>\n </ul>\n </div>\n</div>\n", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-left.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-top.css\";::ng-deep .more-option{align-items:center;position:relative;padding:0;display:block;height:auto}::ng-deep .more-option .message-container{text-align:center;position:static;padding:0 0 20px;top:0;left:0;right:0}::ng-deep .more-option .message-container img{width:163px;margin-bottom:13px;display:inline-block}@media screen and (max-height: 900px){::ng-deep .more-option .message-container img{width:120px;margin-bottom:8px}}::ng-deep .more-option .message-container p{font-size:12px;font-weight:300;font-style:italic;color:#707070;margin:0;padding:0;line-height:18px}::ng-deep .more-option .more-options{display:block;background:#fff;margin-left:-38px;padding:20px 0 20px 16px;position:relative;width:calc(100% + 60px);border-radius:16px 0 0 16px}::ng-deep .more-option .more-options:before{content:\"\";position:absolute;left:0;top:-35px;width:16px;height:41px;border-right:26px solid #ffffff;border-bottom:8px solid transparent;border-bottom-right-radius:46px}::ng-deep .more-option .more-options:after{content:\"\";position:absolute;left:0;bottom:-35px;width:16px;height:41px;border-right:26px solid #ffffff;border-top:8px solid transparent;border-top-right-radius:46px}@media screen and (max-width: 2550px){::ng-deep .more-option .more-options{margin-top:0}}@media screen and (max-width: 1920px){::ng-deep .more-option .more-options{margin-top:0}}@media screen and (max-width: 1600px){::ng-deep .more-option .more-options{margin-top:0}}@media screen and (max-width: 1440px){::ng-deep .more-option .more-options{margin-top:0}}@media screen and (max-width: 1366px){::ng-deep .more-option .more-options{margin-top:0}}::ng-deep .more-option .more-options ul{padding:0 32px 0 0;margin:0;overflow-y:auto}::ng-deep .more-option .more-options ul::-webkit-scrollbar{width:0;background-color:transparent}::ng-deep .more-option .more-options ul::-webkit-scrollbar-thumb{border-radius:1px;background-color:#dbdbdb}::ng-deep .more-option .more-options ul .more-options-heading{color:#747576;font-size:11px;font-weight:500;text-transform:uppercase;margin-bottom:8px}::ng-deep .more-option .more-options ul li{position:relative;list-style:none;display:flex;align-items:center}::ng-deep .more-option .more-options ul li button{display:flex;outline:none;background:transparent;cursor:pointer;align-items:center;justify-content:flex-start;margin:0;width:100%;border:none;padding:4px 11px 4px 4px;border:1px solid #f1f1f1;border-radius:4px}::ng-deep .more-option .more-options ul li button.active{background:#fbfbfb}::ng-deep .more-option .more-options ul li button span.more-icon{height:32px;width:32px;display:flex;margin-right:12px;align-items:center;justify-content:center}::ng-deep .more-option .more-options ul li button img{width:100%}::ng-deep .more-option .more-options ul li button .checkIcon{width:24px;height:24px;background:#fff;border-radius:50%;stroke-width:4;stroke:#34aa44;stroke-miterlimit:10;box-shadow:inset 0 0 #34aa44;animation:fillCheck .4s ease-in-out .4s forwards,scale .3s ease-in-out .9s both;margin:4px 16px 4px 4px}::ng-deep .more-option .more-options ul li button .checkIcon__circle{stroke-dasharray:166;stroke-dashoffset:166;stroke-width:2;stroke-miterlimit:10;stroke:#34aa44;fill:none;animation:strokeCheck .6s cubic-bezier(.65,0,.45,1) forwards}::ng-deep .more-option .more-options ul li button .checkIcon__check{transform-origin:50% 50%;stroke-dasharray:48;stroke-dashoffset:48;animation:strokeCheck .3s cubic-bezier(.65,0,.45,1) .8s forwards}::ng-deep .more-option .more-options ul li button span.value{line-height:18px;color:#161b2f;font-size:11px;font-weight:500;text-transform:uppercase;width:calc(100% - 72px);text-overflow:ellipsis;white-space:nowrap;overflow:hidden;display:inline-block;text-align:left}::ng-deep .more-option .more-options ul li button span.value i.depreciation-icon{color:#e4b700}::ng-deep .more-option .more-options ul li button .checkpoint-version{background:#f1f1f1;border-radius:2px;color:#042e7d;font-size:10px;font-weight:600;line-height:14px;margin-left:4px;padding:0 2px}::ng-deep .more-option .more-options ul li button:disabled{background:#f8f8f8;pointer-events:none}::ng-deep .more-option .more-options ul li button:disabled span{opacity:.3}::ng-deep .more-option .more-options ul li+li{margin-top:8px}::ng-deep .more-option .more-options ul li .vx-info-card{width:280px;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both;background:#fff;box-shadow:0 3px 6px #1c5bd140;border-radius:4px;position:static;display:block}::ng-deep .more-option .more-options ul li .vx-info-card-head{font-size:13px;border-bottom:1px solid #dcdcdc;padding:8px 12px;font-weight:500;text-transform:none;color:#161b2f}::ng-deep .more-option .more-options ul li .vx-info-card-body{font-size:11px;padding:8px 12px;margin:0;font-weight:400;text-transform:none;color:#747576}::ng-deep .more-option .more-options ul li span.icon{color:#1e5dd3;font-size:12px;line-height:12px;cursor:pointer;position:absolute;top:calc(50% - 6px);right:12px;height:12px;width:12px}@keyframes strokeCheck{to{stroke-dashoffset:0}}@keyframes fillCheck{to{box-shadow:inset 0 0 0 2px #34aa44}}@keyframes animate{0%{transform:translate(281px)}to{transform:translate(0)}}@keyframes scale-up-center{0%{transform:scale(.5);opacity:0}to{transform:scale(1);opacity:1}}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.ToolTipDirective, selector: "[appTooltip]", inputs: ["appTooltip", "placement", "type", "tooltipMandatory", "showTooltip", "animate"] }, { kind: "component", type: i4.PopoverHoverComponent, selector: "popover-hover" }, { kind: "directive", type: i5.PopoverHoverDirective, selector: "[libPopoverHover]", inputs: ["placement"] }] }); }
728
893
  }
729
894
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MoreOptionComponent, decorators: [{
730
895
  type: Component,
731
- args: [{ selector: 'app-more-option', template: "<!-- <p>more-option works!</p> -->\n<div class=\"more-option\">\n <div class=\"message-container\">\n <img [src]=\"ASSETS.add_risk_more_option\" alt=\"\" />\n <p *ngIf=\"currentWorkflow\">{{ placeholderTexts[currentWorkflow] }}</p>\n </div>\n <div class=\"more-options\">\n <ul>\n <!-- <div class=\"more-options-heading\" *ngIf=\"currentWorkflow ==='CAPR'\">PROGRAM SCOPE OPTIONS</div> -->\n <ng-container\n *ngFor=\"let data of moreOptionsList[currentWorkflow]; let i = index\"\n >\n <!-- <li *ngIf=\"!data.hidden\" [appTooltip]=\"data.isDisabled && !isRcSelected? 'This responsibility can be scheduled for an audit only after the Responsibility Center is selected.' : ''\" placement=\"right\" delay=\"0\" [tooltipMandatory]=\"data.isDisabled && !isRcSelected\">\n <button [class.active]=\"data.checked\" [disabled]=\"data.code === 'RC' && openedFrom === 'RISK_TREATMENT' && currentWorkflow === 'CAR' || (data.isDisabled && !isRCSelected)\" [class.disabled]=\"data.isDisabled && !isRCSelected\" (click)=\"data.checked = !data.checked; selectMoreOption(data)\"> -->\n\n <li\n *ngIf=\"!data.hidden\"\n [appTooltip]=\"\n data.isDisabled ||\n (((data.code === 'RC' && !isRcSelected) ||\n data.code === 'ATTRIBUTES') &&\n data.isDisabled)\n ? data?.disabledMessage\n : ''\n \"\n placement=\"right\"\n delay=\"0\"\n [tooltipMandatory]=\"data.isDisabled\"\n id=\"listdata\"\n >\n <button\n [class.active]=\"data.checked\"\n [disabled]=\"\n (data.code === 'RC' &&\n openedFrom === 'RISK_TREATMENT' &&\n currentWorkflow === 'CAR') ||\n data.isDisabled ||\n (data.isDisabled && !isRCSelected)\n \"\n (click)=\"selectMoreOption(data, i)\"\n >\n <span *ngIf=\"!data.checked\" class=\"more-icon\">\n <img [src]=\"data.imageUrl\" alt=\"\" />\n </span>\n <svg\n *ngIf=\"data.checked\"\n class=\"checkIcon\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 52 52\"\n >\n <circle\n class=\"checkIcon__circle\"\n cx=\"26\"\n cy=\"26\"\n r=\"25\"\n fill=\"none\"\n />\n <path\n class=\"checkIcon__check\"\n fill=\"none\"\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\n />\n </svg>\n <span\n class=\"value\"\n [innerHTML]=\"data?.name\"\n [appTooltip]=\"data?.name\"\n placement=\"bottom-left\"\n delay=\"0\"\n [tooltipMandatory]=\"false\"\n ></span>\n <!-- <span *ngIf=\"data.code ==='CHECKPOINTS_NEW'\" class=\"checkpoint-version\"> V2.0</span> -->\n </button>\n <span\n class=\"icon\"\n *ngIf=\"data.tooltipMessage !== ''\"\n libPopoverHover\n (mouseover)=\"dataTooltip.popover()\"\n (mouseleave)=\"dataTooltip.closePopover()\"\n placement=\"right\"\n ><i class=\"icons\">&#xe91f;</i></span\n >\n <popover-hover #dataTooltip>\n <div class=\"vx-info-card\">\n <div\n class=\"vx-info-card-head\"\n [innerHTML]=\"data.tooltipTitle\"\n ></div>\n <div\n class=\"vx-info-card-body\"\n [innerHTML]=\"data.tooltipMessage\"\n ></div>\n </div>\n </popover-hover>\n </li>\n \n </ng-container>\n </ul>\n </div>\n</div>\n", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-left.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-top.css\";::ng-deep .more-option{align-items:center;position:relative;padding:0;display:block;height:auto}::ng-deep .more-option .message-container{text-align:center;position:static;padding:0 0 20px;top:0;left:0;right:0}::ng-deep .more-option .message-container img{width:163px;margin-bottom:13px;display:inline-block}@media screen and (max-height: 900px){::ng-deep .more-option .message-container img{width:120px;margin-bottom:8px}}::ng-deep .more-option .message-container p{font-size:12px;font-weight:300;font-style:italic;color:#707070;margin:0;padding:0;line-height:18px}::ng-deep .more-option .more-options{display:block;background:#fff;margin-left:-38px;padding:20px 0 20px 16px;position:relative;width:calc(100% + 60px);border-radius:16px 0 0 16px}::ng-deep .more-option .more-options:before{content:\"\";position:absolute;left:0;top:-35px;width:16px;height:41px;border-right:26px solid #ffffff;border-bottom:8px solid transparent;border-bottom-right-radius:46px}::ng-deep .more-option .more-options:after{content:\"\";position:absolute;left:0;bottom:-35px;width:16px;height:41px;border-right:26px solid #ffffff;border-top:8px solid transparent;border-top-right-radius:46px}@media screen and (max-width: 2550px){::ng-deep .more-option .more-options{margin-top:0}}@media screen and (max-width: 1920px){::ng-deep .more-option .more-options{margin-top:0}}@media screen and (max-width: 1600px){::ng-deep .more-option .more-options{margin-top:0}}@media screen and (max-width: 1440px){::ng-deep .more-option .more-options{margin-top:0}}@media screen and (max-width: 1366px){::ng-deep .more-option .more-options{margin-top:0}}::ng-deep .more-option .more-options ul{padding:0 32px 0 0;margin:0;overflow-y:auto}::ng-deep .more-option .more-options ul::-webkit-scrollbar{width:0;background-color:transparent}::ng-deep .more-option .more-options ul::-webkit-scrollbar-thumb{border-radius:1px;background-color:#dbdbdb}::ng-deep .more-option .more-options ul .more-options-heading{color:#747576;font-size:11px;font-weight:500;text-transform:uppercase;margin-bottom:8px}::ng-deep .more-option .more-options ul li{position:relative;list-style:none;display:flex;align-items:center}::ng-deep .more-option .more-options ul li button{display:flex;outline:none;background:transparent;cursor:pointer;align-items:center;justify-content:flex-start;margin:0;width:100%;border:none;padding:4px 11px 4px 4px;border:1px solid #f1f1f1;border-radius:4px}::ng-deep .more-option .more-options ul li button.active{background:#fbfbfb}::ng-deep .more-option .more-options ul li button span.more-icon{height:32px;width:32px;display:flex;margin-right:12px;align-items:center;justify-content:center}::ng-deep .more-option .more-options ul li button img{width:100%}::ng-deep .more-option .more-options ul li button .checkIcon{width:24px;height:24px;background:#fff;border-radius:50%;stroke-width:4;stroke:#34aa44;stroke-miterlimit:10;box-shadow:inset 0 0 #34aa44;animation:fillCheck .4s ease-in-out .4s forwards,scale .3s ease-in-out .9s both;margin:4px 16px 4px 4px}::ng-deep .more-option .more-options ul li button .checkIcon__circle{stroke-dasharray:166;stroke-dashoffset:166;stroke-width:2;stroke-miterlimit:10;stroke:#34aa44;fill:none;animation:strokeCheck .6s cubic-bezier(.65,0,.45,1) forwards}::ng-deep .more-option .more-options ul li button .checkIcon__check{transform-origin:50% 50%;stroke-dasharray:48;stroke-dashoffset:48;animation:strokeCheck .3s cubic-bezier(.65,0,.45,1) .8s forwards}::ng-deep .more-option .more-options ul li button span.value{line-height:18px;color:#161b2f;font-size:11px;font-weight:500;text-transform:uppercase;width:calc(100% - 72px);text-overflow:ellipsis;white-space:nowrap;overflow:hidden;display:inline-block;text-align:left}::ng-deep .more-option .more-options ul li button span.value i.depreciation-icon{color:#e4b700}::ng-deep .more-option .more-options ul li button .checkpoint-version{background:#f1f1f1;border-radius:2px;color:#042e7d;font-size:10px;font-weight:600;line-height:14px;margin-left:4px;padding:0 2px}::ng-deep .more-option .more-options ul li button:disabled{background:#f8f8f8;pointer-events:none}::ng-deep .more-option .more-options ul li button:disabled span{opacity:.3}::ng-deep .more-option .more-options ul li+li{margin-top:8px}::ng-deep .more-option .more-options ul li .vx-info-card{width:280px;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both;background:#fff;box-shadow:0 3px 6px #1c5bd140;border-radius:4px;position:static;display:block}::ng-deep .more-option .more-options ul li .vx-info-card-head{font-size:13px;border-bottom:1px solid #dcdcdc;padding:8px 12px;font-weight:500;text-transform:none;color:#161b2f}::ng-deep .more-option .more-options ul li .vx-info-card-body{font-size:11px;padding:8px 12px;margin:0;font-weight:400;text-transform:none;color:#747576}::ng-deep .more-option .more-options ul li span.icon{color:#1e5dd3;font-size:12px;line-height:12px;cursor:pointer;position:absolute;top:calc(50% - 6px);right:12px;height:12px;width:12px}@keyframes strokeCheck{to{stroke-dashoffset:0}}@keyframes fillCheck{to{box-shadow:inset 0 0 0 2px #34aa44}}@keyframes animate{0%{transform:translate(281px)}to{transform:translate(0)}}@keyframes scale-up-center{0%{transform:scale(.5);opacity:0}to{transform:scale(1);opacity:1}}\n"] }]
896
+ args: [{ selector: 'app-more-option', template: "<!-- <p>more-option works!</p> -->\n<div class=\"more-option\">\n <div class=\"message-container\">\n <img [src]=\"ASSETS.add_risk_more_option\" alt=\"\" />\n <p *ngIf=\"currentWorkflow\">{{ placeholderTexts[currentWorkflow] }}</p>\n </div>\n <div class=\"more-options\">\n <ul>\n <!-- <div class=\"more-options-heading\" *ngIf=\"currentWorkflow ==='CAPR'\">PROGRAM SCOPE OPTIONS</div> -->\n <ng-container\n *ngFor=\"let data of moreOptionsList[currentWorkflow]; let i = index\"\n >\n <!-- <li *ngIf=\"!data.hidden\" [appTooltip]=\"data.isDisabled && !isRcSelected? 'This responsibility can be scheduled for an audit only after the Responsibility Center is selected.' : ''\" placement=\"right\" delay=\"0\" [tooltipMandatory]=\"data.isDisabled && !isRcSelected\">\n <button [class.active]=\"data.checked\" [disabled]=\"data.code === 'RC' && openedFrom === 'RISK_TREATMENT' && currentWorkflow === 'CAR' || (data.isDisabled && !isRCSelected)\" [class.disabled]=\"data.isDisabled && !isRCSelected\" (click)=\"data.checked = !data.checked; selectMoreOption(data)\"> -->\n\n <li\n *ngIf=\"!data.hidden\"\n [appTooltip]=\"\n data.isDisabled ||\n (((data.code === 'RC' && !isRcSelected) ||\n data.code === 'ATTRIBUTES') &&\n data.isDisabled)\n ? data?.disabledMessage\n : ''\n \"\n placement=\"right\"\n delay=\"0\"\n [tooltipMandatory]=\"data.isDisabled\"\n id=\"listdata\"\n >\n <button\n [class.active]=\"data.checked\"\n [disabled]=\"\n (data.code === 'RC' &&\n openedFrom === 'RISK_TREATMENT' &&\n currentWorkflow === 'CAR') ||\n data.isDisabled ||\n (data.isDisabled && !isRCSelected)\n \"\n (click)=\"selectMoreOption(data, i)\"\n >\n <span *ngIf=\"!data.checked\" class=\"more-icon\">\n <img [src]=\"data.imageUrl\" alt=\"\" />\n </span>\n <svg\n *ngIf=\"data.checked\"\n class=\"checkIcon\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 52 52\"\n >\n <circle\n class=\"checkIcon__circle\"\n cx=\"26\"\n cy=\"26\"\n r=\"25\"\n fill=\"none\"\n />\n <path\n class=\"checkIcon__check\"\n fill=\"none\"\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\n />\n </svg>\n <span\n class=\"value\"\n [innerHTML]=\"data?.name\"\n [appTooltip]=\"data?.name\"\n placement=\"bottom-left\"\n delay=\"0\"\n [tooltipMandatory]=\"false\"\n ></span>\n <!-- <span *ngIf=\"data.code ==='CHECKPOINTS_NEW'\" class=\"checkpoint-version\"> V2.0</span> -->\n </button>\n <span\n class=\"icon\"\n *ngIf=\"data.tooltipMessage !== ''\"\n libPopoverHover\n (mouseover)=\"dataTooltip.popover()\"\n (mouseleave)=\"dataTooltip.closePopover()\"\n placement=\"right\"\n ><i class=\"icons\">&#xe91f;</i></span\n >\n <popover-hover #dataTooltip>\n <div class=\"vx-info-card\">\n <div\n class=\"vx-info-card-head\"\n [innerHTML]=\"data.tooltipTitle\"\n ></div>\n <div\n class=\"vx-info-card-body\"\n [innerHTML]=\"data.tooltipMessage\"\n ></div>\n </div>\n </popover-hover>\n </li>\n <div\n class=\"more-options-heading vx-mt-2\"\n *ngIf=\"currentWorkflow === 'CAPR' && i === 2\"\n >\n PROGRAM SCOPE OPTIONS\n </div>\n </ng-container>\n </ul>\n </div>\n</div>\n", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-left.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-top.css\";::ng-deep .more-option{align-items:center;position:relative;padding:0;display:block;height:auto}::ng-deep .more-option .message-container{text-align:center;position:static;padding:0 0 20px;top:0;left:0;right:0}::ng-deep .more-option .message-container img{width:163px;margin-bottom:13px;display:inline-block}@media screen and (max-height: 900px){::ng-deep .more-option .message-container img{width:120px;margin-bottom:8px}}::ng-deep .more-option .message-container p{font-size:12px;font-weight:300;font-style:italic;color:#707070;margin:0;padding:0;line-height:18px}::ng-deep .more-option .more-options{display:block;background:#fff;margin-left:-38px;padding:20px 0 20px 16px;position:relative;width:calc(100% + 60px);border-radius:16px 0 0 16px}::ng-deep .more-option .more-options:before{content:\"\";position:absolute;left:0;top:-35px;width:16px;height:41px;border-right:26px solid #ffffff;border-bottom:8px solid transparent;border-bottom-right-radius:46px}::ng-deep .more-option .more-options:after{content:\"\";position:absolute;left:0;bottom:-35px;width:16px;height:41px;border-right:26px solid #ffffff;border-top:8px solid transparent;border-top-right-radius:46px}@media screen and (max-width: 2550px){::ng-deep .more-option .more-options{margin-top:0}}@media screen and (max-width: 1920px){::ng-deep .more-option .more-options{margin-top:0}}@media screen and (max-width: 1600px){::ng-deep .more-option .more-options{margin-top:0}}@media screen and (max-width: 1440px){::ng-deep .more-option .more-options{margin-top:0}}@media screen and (max-width: 1366px){::ng-deep .more-option .more-options{margin-top:0}}::ng-deep .more-option .more-options ul{padding:0 32px 0 0;margin:0;overflow-y:auto}::ng-deep .more-option .more-options ul::-webkit-scrollbar{width:0;background-color:transparent}::ng-deep .more-option .more-options ul::-webkit-scrollbar-thumb{border-radius:1px;background-color:#dbdbdb}::ng-deep .more-option .more-options ul .more-options-heading{color:#747576;font-size:11px;font-weight:500;text-transform:uppercase;margin-bottom:8px}::ng-deep .more-option .more-options ul li{position:relative;list-style:none;display:flex;align-items:center}::ng-deep .more-option .more-options ul li button{display:flex;outline:none;background:transparent;cursor:pointer;align-items:center;justify-content:flex-start;margin:0;width:100%;border:none;padding:4px 11px 4px 4px;border:1px solid #f1f1f1;border-radius:4px}::ng-deep .more-option .more-options ul li button.active{background:#fbfbfb}::ng-deep .more-option .more-options ul li button span.more-icon{height:32px;width:32px;display:flex;margin-right:12px;align-items:center;justify-content:center}::ng-deep .more-option .more-options ul li button img{width:100%}::ng-deep .more-option .more-options ul li button .checkIcon{width:24px;height:24px;background:#fff;border-radius:50%;stroke-width:4;stroke:#34aa44;stroke-miterlimit:10;box-shadow:inset 0 0 #34aa44;animation:fillCheck .4s ease-in-out .4s forwards,scale .3s ease-in-out .9s both;margin:4px 16px 4px 4px}::ng-deep .more-option .more-options ul li button .checkIcon__circle{stroke-dasharray:166;stroke-dashoffset:166;stroke-width:2;stroke-miterlimit:10;stroke:#34aa44;fill:none;animation:strokeCheck .6s cubic-bezier(.65,0,.45,1) forwards}::ng-deep .more-option .more-options ul li button .checkIcon__check{transform-origin:50% 50%;stroke-dasharray:48;stroke-dashoffset:48;animation:strokeCheck .3s cubic-bezier(.65,0,.45,1) .8s forwards}::ng-deep .more-option .more-options ul li button span.value{line-height:18px;color:#161b2f;font-size:11px;font-weight:500;text-transform:uppercase;width:calc(100% - 72px);text-overflow:ellipsis;white-space:nowrap;overflow:hidden;display:inline-block;text-align:left}::ng-deep .more-option .more-options ul li button span.value i.depreciation-icon{color:#e4b700}::ng-deep .more-option .more-options ul li button .checkpoint-version{background:#f1f1f1;border-radius:2px;color:#042e7d;font-size:10px;font-weight:600;line-height:14px;margin-left:4px;padding:0 2px}::ng-deep .more-option .more-options ul li button:disabled{background:#f8f8f8;pointer-events:none}::ng-deep .more-option .more-options ul li button:disabled span{opacity:.3}::ng-deep .more-option .more-options ul li+li{margin-top:8px}::ng-deep .more-option .more-options ul li .vx-info-card{width:280px;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both;background:#fff;box-shadow:0 3px 6px #1c5bd140;border-radius:4px;position:static;display:block}::ng-deep .more-option .more-options ul li .vx-info-card-head{font-size:13px;border-bottom:1px solid #dcdcdc;padding:8px 12px;font-weight:500;text-transform:none;color:#161b2f}::ng-deep .more-option .more-options ul li .vx-info-card-body{font-size:11px;padding:8px 12px;margin:0;font-weight:400;text-transform:none;color:#747576}::ng-deep .more-option .more-options ul li span.icon{color:#1e5dd3;font-size:12px;line-height:12px;cursor:pointer;position:absolute;top:calc(50% - 6px);right:12px;height:12px;width:12px}@keyframes strokeCheck{to{stroke-dashoffset:0}}@keyframes fillCheck{to{box-shadow:inset 0 0 0 2px #34aa44}}@keyframes animate{0%{transform:translate(281px)}to{transform:translate(0)}}@keyframes scale-up-center{0%{transform:scale(.5);opacity:0}to{transform:scale(1);opacity:1}}\n"] }]
732
897
  }], ctorParameters: function () { return [{ type: i1.ReportACaseService }]; }, propDecorators: { currentWorkflow: [{
733
898
  type: Input
734
899
  }], openedFrom: [{
@@ -749,4 +914,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
749
914
  }], isAttributesAvailable: [{
750
915
  type: Input
751
916
  }] } });
752
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9yZS1vcHRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvbW9yZS1vcHRpb24vbW9yZS1vcHRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvbW9yZS1vcHRpb24vbW9yZS1vcHRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFFdkUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7Ozs7O0FBT3ZELE1BQU0sT0FBTyxtQkFBbUI7SUFVOUIsSUFBNkIsc0JBQXNCLENBQUMsT0FBWTtRQUM5RCxJQUFJLENBQUMsVUFBVSxHQUFHLE9BQU8sSUFBSSxJQUFJLENBQUM7UUFDbEMsSUFBSSxPQUFPLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxNQUFNLEVBQUU7WUFDM0MsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7U0FDakM7SUFDSCxDQUFDO0lBbWpCRCxZQUFvQixrQkFBc0M7UUFBdEMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQWprQjFELFdBQU0sR0FBRyxNQUFNLENBQUM7UUFDUCxvQkFBZSxHQUFHLEVBQUUsQ0FBQztRQUNyQixlQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFDbEIsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3JDLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLHNCQUFpQixHQUFHLEtBQUssQ0FBQztRQVMxQiwwQkFBcUIsR0FBWSxJQUFJLENBQUM7UUFDL0Msb0JBQWUsR0FBWSxLQUFLLENBQUM7UUFDakMsd0JBQW1CLEdBQVksS0FBSyxDQUFDO1FBQ3JDLGtCQUFhLEdBQVksS0FBSyxDQUFDO1FBQy9CLG1CQUFjLEdBQVcsYUFBYSxDQUFDO1FBRXZDLHFCQUFnQixHQUFRO1lBQ3RCLEdBQUcsRUFBRSwyRUFBMkU7WUFDaEYsR0FBRyxFQUFFLDZFQUE2RTtZQUNsRixHQUFHLEVBQUUscUZBQXFGO1lBQzFGLEdBQUcsRUFBRSw2RUFBNkU7WUFDbEYsR0FBRyxFQUFFLDRFQUE0RTtZQUNqRixJQUFJLEVBQUUsNEVBQTRFO1lBQ2xGLEdBQUcsRUFBRSxpRkFBaUY7WUFDdEYsR0FBRyxFQUFFLDJFQUEyRTtZQUNoRixJQUFJLEVBQUUsMkVBQTJFO1NBQ2xGLENBQUM7UUFFRixrQkFBYSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQztRQUMxRSxvQkFBZSxHQUFRO1lBQ3JCLEdBQUcsRUFBRTtnQkFDSDtvQkFDRSxRQUFRLEVBQUUsTUFBTSxDQUFDLFdBQVc7b0JBQzVCLElBQUksRUFBRSxZQUFZO29CQUNsQixZQUFZLEVBQUUsWUFBWTtvQkFDMUIsY0FBYyxFQUNaLDJMQUEyTDtvQkFDN0wsT0FBTyxFQUFFLEtBQUs7b0JBQ2QsTUFBTSxFQUFFLEtBQUs7b0JBQ2IsSUFBSSxFQUFFLFlBQVk7aUJBQ25CO2dCQUNEO29CQUNFLFFBQVEsRUFBRSxNQUFNLENBQUMsU0FBUztvQkFDMUIsSUFBSSxFQUFFLGdCQUFnQjtvQkFDdEIsWUFBWSxFQUFFLGdCQUFnQjtvQkFDOUIsY0FBYyxFQUNaLG9GQUFvRjtvQkFDdEYsT0FBTyxFQUFFLEtBQUs7b0JBQ2QsTUFBTSxFQUFFLEtBQUs7b0JBQ2IsSUFBSSxFQUFFLFVBQVU7aUJBQ2pCO2dCQUNEO29CQUNFLFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUTtvQkFDekIsSUFBSSxFQUFFLDBCQUEwQjtvQkFDaEMsWUFBWSxFQUFFLDBCQUEwQjtvQkFDeEMsY0FBYyxFQUNaLCtEQUErRDtvQkFDakUsT0FBTyxFQUFFLEtBQUs7b0JBQ2QsTUFBTSxFQUFFLEtBQUs7b0JBQ2IsSUFBSSxFQUFFLFlBQVk7aUJBQ25CO2dCQUNEO29CQUNFLFFBQVEsRUFBRSxNQUFNLENBQUMsTUFBTTtvQkFDdkIsSUFBSSxFQUFFLFlBQVk7b0JBQ2xCLFlBQVksRUFBRSxZQUFZO29CQUMxQixjQUFjLEVBQ1osbUdBQW1HO29CQUNyRyxPQUFPLEVBQUUsS0FBSztvQkFDZCxNQUFNLEVBQUUsS0FBSztvQkFDYixJQUFJLEVBQUUsWUFBWTtpQkFDbkI7Z0JBQ0Q7b0JBQ0UsUUFBUSxFQUFFLE1BQU0sQ0FBQyxVQUFVO29CQUMzQixJQUFJLEVBQUUsb0JBQW9CO29CQUMxQixZQUFZLEVBQUUsd0JBQXdCO29CQUN0QyxjQUFjLEVBQUUsNERBQTREO29CQUM1RSxlQUFlLEVBQUUsZ0dBQWdHO29CQUNqSCxPQUFPLEVBQUUsS0FBSztvQkFDZCxNQUFNLEVBQUUsS0FBSztvQkFDYixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsSUFBSSxFQUFFLGFBQWE7aUJBQ3BCO2FBQ0Y7WUFDRCxHQUFHLEVBQUU7Z0JBQ0g7b0JBQ0UsUUFBUSxFQUFFLE1BQU0sQ0FBQyxxQkFBcUI7b0JBQ3RDLElBQUksRUFBRSx1QkFBdUI7b0JBQzdCLFlBQVksRUFBRSx1QkFBdUI7b0JBQ3JDLGNBQWMsRUFBRTs7Ozs7OERBS3NDO29CQUN0RCxPQUFPLEVBQUUsS0FBSztvQkFDZCxNQUFNLEVBQUUsS0FBSztvQkFDYixJQUFJLEVBQUUsdUJBQXVCO2lCQUM5QjtnQkFDRDtvQkFDRSxRQUFRLEVBQUUsTUFBTSxDQUFDLGdCQUFnQjtvQkFDakMsSUFBSSxFQUFFLFNBQVM7b0JBQ2YsWUFBWSxFQUFFLFNBQVM7b0JBQ3ZCLGNBQWMsRUFBRSxtTUFBbU07b0JBQ25OLE9BQU8sRUFBRSxLQUFLO29CQUNkLE1BQU0sRUFBRSxLQUFLO29CQUNiLElBQUksRUFBRSxTQUFTO2lCQUNoQjtnQkFDRDtvQkFDRSxRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVE7b0JBQ3pCLElBQUksRUFBRSxVQUFVO29CQUNoQixZQUFZLEVBQUUsVUFBVTtvQkFDeEIsY0FBYyxFQUFFOzRGQUNvRTtvQkFDcEYsT0FBTyxFQUFFLEtBQUs7b0JBQ2QsTUFBTSxFQUFFLElBQUk7b0JBQ1osSUFBSSxFQUFFLFVBQVU7aUJBQ2pCO2dCQUNEO29CQUNFLFFBQVEsRUFBRSxNQUFNLENBQUMsV0FBVztvQkFDNUIsSUFBSSxFQUFFLGFBQWE7b0JBQ25CLFlBQVksRUFBRSxhQUFhO29CQUMzQixjQUFjLEVBQUU7OztTQUdmO29CQUNELE9BQU8sRUFBRSxLQUFLO29CQUNkLE1BQU0sRUFBRSxJQUFJO29CQUNaLElBQUksRUFBRSxhQUFhO2lCQUNwQjtnQkFDRDtvQkFDRSxRQUFRLEVBQUUsTUFBTSxDQUFDLFNBQVM7b0JBQzFCLElBQUksRUFBRSxXQUFXO29CQUNqQixZQUFZLEVBQUUsV0FBVztvQkFDekIsY0FBYyxFQUFFOzs7U0FHZjtvQkFDRCxPQUFPLEVBQUUsS0FBSztvQkFDZCxNQUFNLEVBQUUsS0FBSztvQkFDYixJQUFJLEVBQUUsVUFBVTtpQkFDakI7Z0JBQ0Q7b0JBQ0UsUUFBUSxFQUFFLE1BQU0sQ0FBQyxlQUFlO29CQUNoQyxJQUFJLEVBQUUsbUJBQW1CO29CQUN6QixZQUFZLEVBQUUsbUJBQW1CO29CQUNqQyxjQUFjLEVBQUU7NEVBQ29EO29CQUNwRSxPQUFPLEVBQUUsS0FBSztvQkFDZCxNQUFNLEVBQUUsS0FBSztvQkFDYixJQUFJLEVBQUUsbUJBQW1CO2lCQUMxQjtnQkFDRDtvQkFDRSxRQUFRLEVBQUUsTUFBTSxDQUFDLFVBQVU7b0JBQzNCLElBQUksRUFBRSxlQUFlO29CQUNyQixZQUFZLEVBQUUsZUFBZTtvQkFDN0IsY0FBYyxFQUFFLGlLQUFpSztvQkFDakwsT0FBTyxFQUFFLEtBQUs7b0JBQ2QsTUFBTSxFQUFFLEtBQUs7b0JBQ2IsSUFBSSxFQUFFLCtCQUErQjtpQkFDdEM7Z0JBQ0Q7b0JBQ0UsUUFBUSxFQUFFLE1BQU0sQ0FBQyxXQUFXO29CQUM1QixJQUFJLEVBQUUsb0JBQW9CO29CQUMxQixZQUFZLEVBQUUsb0JBQW9CO29CQUNsQyxjQUFjLEVBQUUsOEdBQThHO29CQUM5SCxPQUFPLEVBQUUsS0FBSztvQkFDZCxNQUFNLEVBQUUsS0FBSztvQkFDYixJQUFJLEVBQUUsa0JBQWtCO2lCQUN6QjtnQkFDRDtvQkFDRSxRQUFRLEVBQUUsTUFBTSxDQUFDLFVBQVU7b0JBQzNCLElBQUksRUFBRSx1QkFBdUI7b0JBQzdCLFlBQVksRUFBRSx1QkFBdUI7b0JBQ3JDLGNBQWMsRUFBRSw2SkFBNko7b0JBQzdLLE9BQU8sRUFBRSxLQUFLO29CQUNkLE1BQU0sRUFBRSxLQUFLO29CQUNiLElBQUksRUFBRSx1QkFBdUI7aUJBQzlCO2FBQ0Y7WUFDRCxHQUFHLEVBQUU7Z0JBQ0g7b0JBQ0UsUUFBUSxFQUFFLE1BQU0sQ0FBQyxVQUFVO29CQUMzQixJQUFJLEVBQUUsV0FBVztvQkFDakIsSUFBSSxFQUFFLFdBQVc7b0JBQ2pCLFlBQVksRUFBRSxXQUFXO29CQUN6QixjQUFjLEVBQ1osMEVBQTBFO29CQUM1RSxPQUFPLEVBQUUsS0FBSztvQkFDZCxNQUFNLEVBQUUsS0FBSztpQkFDZDtnQkFFRCxJQUFJO2dCQUNKLGlHQUFpRztnQkFDakcscUJBQXFCO2dCQUNyQixzQkFBc0I7Z0JBQ3RCLDZCQUE2QjtnQkFDN0IscUZBQXFGO2dCQUNyRiwrR0FBK0c7Z0JBQy9HLHlGQUF5RjtnQkFDekYsb0JBQW9CO2dCQUNwQixtQkFBbUI7Z0JBQ25CLEtBQUs7Z0JBQ0w7b0JBQ0UsUUFBUSxFQUFFLE1BQU0sQ0FBQyxxQkFBcUI7b0JBQ3RDLElBQUksRUFBRSx1QkFBdUI7b0JBQzdCLElBQUksRUFBRSxJQUFJO29CQUNWLFlBQVksRUFBRSx1QkFBdUI7b0JBQ3JDLGNBQWMsRUFBRTs7O2dLQUd3STtvQkFDeEosT0FBTyxFQUFFLEtBQUs7b0JBQ2QsTUFBTSxFQUFFLEtBQUs7aUJBQ2Q7Z0JBQ0Q7b0JBQ0UsUUFBUSxFQUFFLE1BQU0sQ0FBQyxhQUFhO29CQUM5QixJQUFJLEVBQUUsU0FBUztvQkFDZixJQUFJLEVBQUUsU0FBUztvQkFDZixZQUFZLEVBQUUsU0FBUztvQkFDdkIsY0FBYyxFQUFFOzsyRkFFbUU7b0JBQ25GLE9BQU8sRUFBRSxLQUFLO29CQUNkLE1BQU0sRUFBRSxLQUFLO2lCQUNkO2dCQUNEO29CQUNFLFFBQVEsRUFBRSxNQUFNLENBQUMsZUFBZTtvQkFDaEMsSUFBSSxFQUFFLG1CQUFtQjtvQkFDekIsSUFBSSxFQUFFLGtCQUFrQjtvQkFDeEIsWUFBWSxFQUFFLG9CQUFvQjtvQkFDbEMsY0FBYyxFQUNaLHVJQUF1STtvQkFDekksT0FBTyxFQUFFLEtBQUs7b0JBQ2QsTUFBTSxFQUFFLEtBQUs7aUJBQ2Q7Z0JBQ0Q7b0JBQ0UsUUFBUSxFQUFFLE1BQU0sQ0FBQyxXQUFXO29CQUM1QixJQUFJLEVBQUUsYUFBYTtvQkFDbkIsSUFBSSxFQUFFLFlBQVk7b0JBQ2xCLFlBQVksRUFBRSxjQUFjO29CQUM1QixjQUFjLEVBQ1osaU5BQWlOO29CQUNuTixPQUFPLEVBQUUsS0FBSztvQkFDZCxNQUFNLEVBQUUsS0FBSztvQkFDYixVQUFVLEVBQUUsS0FBSztvQkFDakIsZUFBZSxFQUNiLG1HQUFtRztpQkFDdEc7Z0JBQ0Q7b0JBQ0UsUUFBUSxFQUNOLDhFQUE4RTtvQkFDaEYsSUFBSSxFQUFFLHFCQUFxQjtvQkFDM0IsWUFBWSxFQUFFLHFCQUFxQjtvQkFDbkMsY0FBYyxFQUNaLG9IQUFvSDtvQkFDdEgsT0FBTyxFQUFFLEtBQUs7b0JBQ2QsTUFBTSxFQUFFLEtBQUs7b0JBQ2IsSUFBSSxFQUFFLHFCQUFxQjtpQkFDNUI7Z0JBQ0Q7b0JBQ0UsUUFBUSxFQUFFLE1BQU0sQ0FBQyxRQUFRO29CQUN6QixJQUFJLEVBQUUsVUFBVTtvQkFDaEIsWUFBWSxFQUFFLFVBQVU7b0JBQ3hCLGNBQWMsRUFDWixvRkFBb0Y7b0JBQ3RGLE9BQU8sRUFBRSxLQUFLO29CQUNkLE1BQU0sRUFBRSxLQUFLO29CQUNiLElBQUksRUFBRSxVQUFVO2lCQUNqQjtnQkFDRDtvQkFDRSxRQUFRLEVBQUUsTUFBTSxDQUFDLFNBQVM7b0JBQzFCLElBQUksRUFBRSxXQUFXO29CQUNqQixZQUFZLEVBQUUsV0FBVztvQkFDekIsY0FBYyxFQUFFOztxSkFFNkg7b0JBQzdJLE9BQU8sRUFBRSxLQUFLO29CQUNkLE1BQU0sRUFBRSxLQUFLO29CQUNiLElBQUksRUFBRSxVQUFVO2lCQUNqQjtnQkFDRDtvQkFDRSxRQUFRLEVBQ04sbUZBQW1GO29CQUNyRixJQUFJLEVBQUUsb0JBQW9CO29CQUMxQixZQUFZLEVBQUUsd0JBQXdCO29CQUN0QyxjQUFjLEVBQUUsc0VBQXNFO29CQUN0RixlQUFlLEVBQUUsMEdBQTBHO29CQUMzSCxPQUFPLEVBQUUsS0FBSztvQkFDZCxNQUFNLEVBQUUsS0FBSztvQkFDYixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsSUFBSSxFQUFFLGFBQWE7aUJBQ3BCO2FBQ0Y7WUFDRCxHQUFHLEVBQUU7Z0JBQ0g7b0JBQ0UsUUFBUSxFQUFFLE1BQU0sQ0FBQyxxQkFBcUI7b0JBQ3RDLElBQUksRUFBRSx1QkFBdUI7b0JBQzdCLFlBQVksRUFBRSxFQUFFO29CQUNoQixjQUFjLEVBQUUsRUFBRTtvQkFDbEIsT0FBTyxFQUFFLEtBQUs7b0JBQ2QsTUFBTSxFQUFFLEtBQUs7aUJBQ2Q7Z0JBQ0Q7b0JBQ0UsUUFBUSxFQUFFLE1BQU0sQ0FBQyxlQUFlO29CQUNoQyxJQUFJLEVBQUUsdUJBQXVCO29CQUM3QixZQUFZLEVBQUUsRUFBRTtvQkFDaEIsY0FBYyxFQUFFLEVBQUU7b0JBQ2xCLE9BQU8sRUFBRSxLQUFLO29CQUNkLE1BQU0sRUFBRSxLQUFLO2lCQUNkO2dCQUNEO29CQUNFLFFBQVEsRUFBRSxNQUFNLENBQUMsU0FBUztvQkFDMUIsSUFBSSxFQUFFLFdBQVc7b0JBQ2pCLFlBQVksRUFBRSxFQUFFO29CQUNoQixjQUFjLEVBQUUsRUFBRTtvQkFDbEIsT0FBTyxFQUFFLEtBQUs7b0JBQ2QsTUFBTSxFQUFFLEtBQUs7aUJBQ2Q7YUFDRjtZQUVELEdBQUcsRUFBRTtnQkFDSDtvQkFDRSxRQUFRLEVBQUUsTUFBTSxDQUFDLGNBQWM7b0JBQy9CLElBQUksRUFBRSxnQkFBZ0I7b0JBQ3RCLFlBQVksRUFBRSxnQkFBZ0I7b0JBQzlCLGNBQWMsRUFDWixvR0FBb0c7b0JBQ3RHLE9BQU8sRUFBRSxLQUFLO29CQUNkLE1BQU0sRUFBRSxLQUFLO29CQUNiLElBQUksRUFBRSxnQkFBZ0I7aUJBQ3ZCO2dCQUNELElBQUk7Z0JBQ0osbUdBQW1HO2dCQUNuRyx3QkFBd0I7Z0JBQ3hCLHNCQUFzQjtnQkFDdEIsd0JBQXdCO2dCQUN4QixvQkFBb0I7Z0JBQ3BCLG1CQUFtQjtnQkFDbkIsdUJBQXVCO2dCQUN2QixLQUFLO2dCQUNMO29CQUNFLFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUTtvQkFDekIsSUFBSSxFQUFFLFVBQVU7b0JBQ2hCLFlBQVksRUFBRSxVQUFVO29CQUN4QixjQUFjLEVBQ1osd0RBQXdEO29CQUMxRCxPQUFPLEVBQUUsS0FBSztvQkFDZCxNQUFNLEVBQUUsS0FBSztvQkFDYixJQUFJLEVBQUUsVUFBVTtpQkFDakI7Z0JBQ0Q7b0JBQ0UsUUFBUSxFQUFFLE1BQU0sQ0FBQyxnQkFBZ0I7b0JBQ2pDLElBQUksRUFBRSxrQkFBa0I7b0JBQ3hCLFlBQVksRUFBRSxrQkFBa0I7b0JBQ2hDLGNBQWMsRUFDWiw2RUFBNkU7b0JBQy9FLE9BQU8sRUFBRSxLQUFLO29CQUNkLE1BQU0sRUFBRSxLQUFLO29CQUNiLElBQUksRUFBRSxrQkFBa0I7aUJBQ3pCO2dCQUNEO29CQUNFLFFBQVEsRUFBRSxNQUFNLENBQUMsU0FBUztvQkFDMUIsSUFBSSxFQUFFLFdBQVc7b0JBQ2pCLFlBQVksRUFBRSxXQUFXO29CQUN6QixjQUFjLEVBQ1oscU9BQXFPO29CQUN2TyxPQUFPLEVBQUUsS0FBSztvQkFDZCxNQUFNLEVBQUUsS0FBSztvQkFDYixJQUFJLEVBQUUsV0FBVztpQkFDbEI7Z0JBQ0Q7b0JBQ0UsUUFBUSxFQUFFLE1BQU0sQ0FBQyxlQUFlO29CQUNoQyxJQUFJLEVBQUUsVUFBVTtvQkFDaEIsWUFBWSxFQUFFLFVBQVU7b0JBQ3hCLGNBQWMsRUFDWixpRkFBaUY7b0JBQ25GLE9BQU8sRUFBRSxLQUFLO29CQUNkLE1BQU0sRUFBRSxLQUFLO29CQUNiLElBQUksRUFBRSxVQUFVO2lCQUNqQjthQUNGO1lBQ0QsSUFBSSxFQUFFO2dCQUNKO29CQUNFLFFBQVEsRUFDTiw4RUFBOEU7b0JBQ2hGLElBQUksRUFBRSxVQUFVO29CQUNoQixZQUFZLEVBQUUsVUFBVTtvQkFDeEIsY0FBYyxFQUFFOztTQUVmO29CQUNELE9BQU8sRUFBRSxLQUFLO29CQUNkLE1BQU0sRUFBRSxLQUFLO29CQUNiLElBQUksRUFBRSxRQUFRO2lCQUNmO2dCQUNEO29CQUNFLFFBQVEsRUFDTixxRkFBcUY7b0JBQ3ZGLElBQUksRUFBRSxlQUFlO29CQUNyQixZQUFZLEVBQUUsZUFBZTtvQkFDN0IsY0FBYyxFQUFFLHlRQUF5UTtvQkFDelIsT0FBTyxFQUFFLEtBQUs7b0JBQ2QsTUFBTSxFQUFFLEtBQUs7b0JBQ2IsSUFBSSxFQUFFLGVBQWU7aUJBQ3RCO2dCQUVEO29CQUNFLFFBQVEsRUFBRSxNQUFNLENBQUMsYUFBYTtvQkFDOUIsSUFBSSxFQUFFLGNBQWM7b0JBQ3BCLElBQUksRUFBRSxlQUFlO29CQUNyQixZQUFZLEVBQUUsZUFBZTtvQkFDN0IsY0FBYyxFQUNaLDJLQUEySztvQkFDN0ssT0FBTyxFQUFFLEtBQUs7b0JBQ2QsTUFBTSxFQUFFLEtBQUs7aUJBQ2Q7YUFDRjtZQUNELEdBQUcsRUFBRTtnQkFDSDtvQkFDRSxRQUFRLEVBQUUsTUFBTSxDQUFDLFVBQVU7b0JBQzNCLElBQUksRUFBRSx1QkFBdUI7b0JBQzdCLFlBQVksRUFBRSx1QkFBdUI7b0JBQ3JDLGNBQWMsRUFBRSx1RUFBdUU7b0JBQ3ZGLGVBQWUsRUFDYixxSEFBcUg7b0JBQ3ZILE9BQU8sRUFBRSxLQUFLO29CQUNkLE1BQU0sRUFBRSxLQUFLO29CQUNiLElBQUksRUFBRSxjQUFjO2lCQUNyQjtnQkFDRDtvQkFDRSxRQUFRLEVBQUUsTUFBTSxDQUFDLFVBQVU7b0JBQzNCLElBQUksRUFBRSxZQUFZO29CQUNsQixZQUFZLEVBQUUsWUFBWTtvQkFDMUIsY0FBYyxFQUFFLDREQUE0RDtvQkFDNUUsZUFBZSxFQUNiLDJHQUEyRztvQkFDN0csT0FBTyxFQUFFLEtBQUs7b0JBQ2QsTUFBTSxFQUFFLEtBQUs7b0JBQ2IsSUFBSSxFQUFFLDRCQUE0QjtpQkFDbkM7Z0JBQ0Q7b0JBQ0UsUUFBUSxFQUFFLE1BQU0sQ0FBQyxVQUFVO29CQUMzQixJQUFJLEVBQUUsd0JBQXdCO29CQUM5QixZQUFZLEVBQUUsd0JBQXdCO29CQUN0QyxjQUFjLEVBQUUsd0VBQXdFO29CQUN4RixPQUFPLEVBQUUsS0FBSztvQkFDZCxNQUFNLEVBQUUsS0FBSztvQkFDYixJQUFJLEVBQUUsbUJBQW1CO2lCQUMxQjtnQkFDRDtvQkFDRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFlBQVk7b0JBQzdCLElBQUksRUFBRSw0QkFBNEI7b0JBQ2xDLFlBQVksRUFBRSw0QkFBNEI7b0JBQzFDLGNBQWMsRUFBRSwwRUFBMEU7b0JBQzFGLGVBQWUsRUFDYixzRUFBc0U7b0JBQ3hFLE9BQU8sRUFBRSxLQUFLO29CQUNkLE1BQU0sRUFBRSxLQUFLO29CQUNiLElBQUksRUFBRSxZQUFZO2lCQUNuQjthQUNGO1lBQ0QsR0FBRyxFQUFFO2dCQUNIO29CQUNFLFFBQVEsRUFBRSxNQUFNLENBQUMsVUFBVTtvQkFDM0IsSUFBSSxFQUFFLGdCQUFnQjtvQkFDdEIsWUFBWSxFQUFFLGdCQUFnQjtvQkFDOUIsY0FBYyxFQUNaLG9HQUFvRztvQkFDdEcsT0FBTyxFQUFFLEtBQUs7b0JBQ2QsTUFBTSxFQUFFLEtBQUs7b0JBQ2IsSUFBSSxFQUFFLGdCQUFnQjtpQkFDdkI7Z0JBQ0Q7b0JBQ0UsUUFBUSxFQUFFLE1BQU0sQ0FBQyxnQkFBZ0I7b0JBQ2pDLElBQUksRUFBRSxrQkFBa0I7b0JBQ3hCLFlBQVksRUFBRSxrQkFBa0I7b0JBQ2hDLGNBQWMsRUFDWiw0RUFBNEU7b0JBQzlFLE9BQU8sRUFBRSxLQUFLO29CQUNkLE1BQU0sRUFBRSxLQUFLO29CQUNiLElBQUksRUFBRSxrQkFBa0I7aUJBQ3pCO2dCQUNEO29CQUNFLFFBQVEsRUFBRSxNQUFNLENBQUMsU0FBUztvQkFDMUIsSUFBSSxFQUFFLFdBQVc7b0JBQ2pCLFlBQVksRUFBRSxXQUFXO29CQUN6QixjQUFjLEVBQ1osa1BBQWtQO29CQUNwUCxPQUFPLEVBQUUsS0FBSztvQkFDZCxNQUFNLEVBQUUsS0FBSztvQkFDYixJQUFJLEVBQUUsV0FBVztpQkFDbEI7Z0JBQ0Q7b0JBQ0UsUUFBUSxFQUFFLE1BQU0sQ0FBQyxlQUFlO29CQUNoQyxJQUFJLEVBQUUsVUFBVTtvQkFDaEIsWUFBWSxFQUFFLFVBQVU7b0JBQ3hCLGNBQWMsRUFDWixnRkFBZ0Y7b0JBQ2xGLE9BQU8sRUFBRSxLQUFLO29CQUNkLE1BQU0sRUFBRSxJQUFJO29CQUNaLElBQUksRUFBRSxVQUFVO2lCQUNqQjtnQkFDRDtvQkFDRSxRQUFRLEVBQUUsTUFBTSxDQUFDLGtCQUFrQjtvQkFDbkMsSUFBSSxFQUFFLHFCQUFxQjtvQkFDM0IsWUFBWSxFQUFFLEVBQUU7b0JBQ2hCLGNBQWMsRUFBRSxFQUFFO29CQUNsQixPQUFPLEVBQUUsS0FBSztvQkFDZCxNQUFNLEVBQUUsS0FBSztvQkFDYixJQUFJLEVBQUUscUJBQXFCO2lCQUM1QjtnQkFDRDtvQkFDRSxRQUFRLEVBQUUsTUFBTSxDQUFDLEtBQUs7b0JBQ3RCLElBQUksRUFBRSxxQkFBcUI7b0JBQzNCLFlBQVksRUFBRSxFQUFFO29CQUNoQixjQUFjLEVBQUUsRUFBRTtvQkFDbEIsT0FBTyxFQUFFLEtBQUs7b0JBQ2QsTUFBTSxFQUFFLEtBQUs7b0JBQ2IsSUFBSSxFQUFFLHFCQUFxQjtpQkFDNUI7YUFDRjtZQUNELElBQUksRUFBRTtnQkFDSjtvQkFDRSxRQUFRLEVBQUUsTUFBTSxDQUFDLFVBQVU7b0JBQzNCLElBQUksRUFBRSxnQkFBZ0I7b0JBQ3RCLFlBQVksRUFBRSxnQkFBZ0I7b0JBQzlCLGNBQWMsRUFDWixvR0FBb0c7b0JBQ3RHLE9BQU8sRUFBRSxLQUFLO29CQUNkLE1BQU0sRUFBRSxLQUFLO29CQUNiLElBQUksRUFBRSxnQkFBZ0I7aUJBQ3ZCO2dCQUNEO29CQUNFLFFBQVEsRUFBRSxNQUFNLENBQUMsZ0JBQWdCO29CQUNqQyxJQUFJLEVBQUUsa0JBQWtCO29CQUN4QixZQUFZLEVBQUUsa0JBQWtCO29CQUNoQyxjQUFjLEVBQ1osNEVBQTRFO29CQUM5RSxPQUFPLEVBQUUsS0FBSztvQkFDZCxNQUFNLEVBQUUsS0FBSztvQkFDYixJQUFJLEVBQUUsa0JBQWtCO2lCQUN6QjtnQkFDRDtvQkFDRSxRQUFRLEVBQUUsTUFBTSxDQUFDLFNBQVM7b0JBQzFCLElBQUksRUFBRSxXQUFXO29CQUNqQixZQUFZLEVBQUUsV0FBVztvQkFDekIsY0FBYyxFQUNaLGtPQUFrTztvQkFDcE8sT0FBTyxFQUFFLEtBQUs7b0JBQ2QsTUFBTSxFQUFFLEtBQUs7b0JBQ2IsSUFBSSxFQUFFLFdBQVc7aUJBQ2xCO2dCQUNEO29CQUNFLFFBQVEsRUFBRSxNQUFNLENBQUMsa0JBQWtCO29CQUNuQyxJQUFJLEVBQUUscUJBQXFCO29CQUMzQixZQUFZLEVBQUUsRUFBRTtvQkFDaEIsY0FBYyxFQUFFLEVBQUU7b0JBQ2xCLE9BQU8sRUFBRSxLQUFLO29CQUNkLE1BQU0sRUFBRSxLQUFLO29CQUNiLElBQUksRUFBRSxxQkFBcUI7aUJBQzVCO2dCQUNEO29CQUNFLFFBQVEsRUFBRSxNQUFNLENBQUMsS0FBSztvQkFDdEIsSUFBSSxFQUFFLHFCQUFxQjtvQkFDM0IsWUFBWSxFQUFFLEVBQUU7b0JBQ2hCLGNBQWMsRUFBRSxFQUFFO29CQUNsQixPQUFPLEVBQUUsS0FBSztvQkFDZCxNQUFNLEVBQUUsS0FBSztvQkFDYixJQUFJLEVBQUUscUJBQXFCO2lCQUM1QjthQUNGO1NBQ0YsQ0FBQztRQUdBLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRCxtQkFBbUI7UUFDakIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUN4RCxJQUFJLEdBQUcsRUFBRTtnQkFDUCxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtvQkFDNUMsR0FBRyxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7Z0JBQ3RCLENBQUMsQ0FBQyxDQUFDO2FBQ0o7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFDRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsWUFBWTtZQUN4QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsYUFBYSxFQUN6QztZQUNBLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxPQUFPLENBQUMsaUJBQWlCLENBQUMsWUFBWSxDQUFDO1NBQ2pFO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDdEIsSUFBSSxJQUFJLENBQUMsZUFBZSxLQUFLLEtBQUssRUFBRTtnQkFDbEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7b0JBQzVDLGlDQUFpQztvQkFDakMseUJBQXlCO29CQUN6QixJQUFJO29CQUNKLElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxhQUFhLEVBQUU7d0JBQzlCLEdBQUcsQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO3dCQUNwQixHQUFHLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztxQkFDdkI7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7YUFDSjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtvQkFDNUMsaUNBQWlDO29CQUNqQyx5QkFBeUI7b0JBQ3pCLElBQUk7b0JBQ0osSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7d0JBQ3RDLEdBQUcsQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO3FCQUNyQjtnQkFDSCxDQUFDLENBQUMsQ0FBQzthQUNKO1NBQ0Y7YUFBTTtZQUNMLElBQUksSUFBSSxDQUFDLGVBQWUsS0FBSyxLQUFLLEVBQUU7Z0JBQ2xDLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO29CQUM1QyxpQ0FBaUM7b0JBQ2pDLHlCQUF5QjtvQkFDekIsSUFBSTtvQkFDSixJQUFJLEdBQUcsQ0FBQyxJQUFJLEtBQUssYUFBYSxFQUFFO3dCQUM5QixHQUFHLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztxQkFDeEI7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7YUFDSjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtvQkFDNUMsaUNBQWlDO29CQUNqQyw0QkFBNEI7b0JBQzVCLElBQUk7b0JBQ0osSUFBSSxDQUFFLGFBQWEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7d0JBQ3ZDLEdBQUcsQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO3FCQUN4QjtnQkFDSCxDQUFDLENBQUMsQ0FBQzthQUNKO1NBQ0Y7UUFDRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVELGtCQUFrQixDQUFDLEtBQVU7UUFDM0IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBUSxFQUFFLEtBQWEsRUFBRSxFQUFFO1lBQzNELElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxZQUFZLEVBQUU7Z0JBQzdCLEdBQUcsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxLQUFLLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxLQUFLLEVBQUU7b0JBQ1YsR0FBRyxDQUFDLE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FBQztvQkFDckIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztpQkFDbkM7YUFDRjtZQUNELElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxjQUFjLEVBQUU7Z0JBQy9CLEdBQUcsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDO2FBQ3JDO1lBQ0QsSUFBSSxHQUFHLENBQUMsSUFBSSxLQUFLLDRCQUE0QixFQUFFO2dCQUM3QyxHQUFHLENBQUMsVUFBVSxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQzthQUNyQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNELFFBQVE7UUFDTixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsZ0JBQWdCLENBQzFELHNCQUFzQixDQUN2QixDQUFDO1FBQ0YsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzNFLElBQUksQ0FBQyxhQUFhO1lBQ2hCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLEdBQUcsYUFBYSxDQUFDO1lBQ3ZDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLEdBQUcscUJBQXFCLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsbUJBQW1CO1lBQ3RCLElBQUksQ0FBQyxjQUFjLEVBQUUsZ0JBQWdCLENBQUMscUJBQXFCLENBQUMsSUFBSSxJQUFJLENBQUM7SUFDekUsQ0FBQztJQUVELGdCQUFnQixDQUFDLEtBQVUsRUFBRSxLQUFhO1FBQ3hDLElBQ0UsSUFBSSxDQUFDLGVBQWUsS0FBSyxLQUFLO1lBQzlCLEtBQUssQ0FBQyxJQUFJLEtBQUssaUJBQWlCO1lBQ2hDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFDMUQ7WUFDQSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxJQUFJLENBQUM7U0FDaEM7YUFBTSxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxFQUFFLE1BQU0sR0FBRyxLQUFLLEVBQUU7WUFDckUsS0FBSyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsS0FBSyxDQUFDO1lBQ2hDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLFNBQVMsQ0FBQztnQkFDMUQsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO1NBQ2xCO1FBRUQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELFFBQVEsQ0FBQyxHQUFRO1FBQ2YsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ3hCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQVksRUFBRSxFQUFFO2dCQUNsRSxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO29CQUM5QixPQUFPLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztpQkFDeEI7cUJBQU07b0JBQ0wsT0FBTyxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7aUJBQ3pCO2dCQUNELElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFO29CQUNuQyxJQUFJLE9BQU8sQ0FBQyxJQUFJLEtBQUssYUFBYSxFQUFFO3dCQUNsQyxPQUFPLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztxQkFDM0I7b0JBQ0QsSUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLFlBQVksRUFBRTt3QkFDakMsT0FBTyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7cUJBQzNCO2lCQUNGO2dCQUNELElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsRUFBRTtvQkFDOUIsSUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLGlCQUFpQixFQUFFO3dCQUN0QyxPQUFPLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztxQkFDM0I7b0JBQ0QsSUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLGFBQWEsRUFBRTt3QkFDbEMsT0FBTyxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7cUJBQzVCO2lCQUNGO2dCQUNELElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsRUFBRTtvQkFDL0IsSUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLGlCQUFpQixFQUFFO3dCQUN0QyxPQUFPLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztxQkFDM0I7b0JBQ0QsSUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLFlBQVksRUFBRTt3QkFDakMsT0FBTyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7cUJBQzNCO2lCQUNGO2dCQUNELElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsRUFBRTtvQkFDM0IsSUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLFNBQVMsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7d0JBQ3hELE9BQU8sQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO3FCQUMzQjtpQkFDRjtZQUNILENBQUMsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBQ0QsWUFBWSxDQUFDLFVBQWU7UUFDMUIsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ3hCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQVksRUFBRSxFQUFFO2dCQUNsRSxJQUFJLFVBQVUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO29CQUNyQyxPQUFPLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztpQkFDdkI7cUJBQU07b0JBQ0wsT0FBTyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7aUJBQ3hCO1lBQ0gsQ0FBQyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7SUFFRCxRQUFRLENBQUMsWUFBb0I7UUFDM0IsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxFQUFFO1lBQ3RDLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBWSxFQUFFLEVBQUU7Z0JBQzFELE9BQU8sQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1lBQzFCLENBQUMsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBRUQsd0JBQXdCO1FBQ3RCLE1BQU0sSUFBSSxHQUFHO1lBQ1gsbUJBQW1CO1lBQ25CLGVBQWU7WUFDZixJQUFJO1lBQ0osV0FBVztZQUNYLFVBQVU7WUFDVixVQUFVO1lBQ1YsWUFBWTtZQUNaLGtCQUFrQjtTQUNuQixDQUFDO0lBRUosQ0FBQzsrR0F6dkJVLG1CQUFtQjttR0FBbkIsbUJBQW1CLDZiQ2xCaEMsdTBIQW9HQTs7NEZEbEZhLG1CQUFtQjtrQkFML0IsU0FBUzsrQkFDRSxpQkFBaUI7eUdBTWxCLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNJLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0UsWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFFdUIsc0JBQXNCO3NCQUFsRCxLQUFLO3VCQUFDLGdCQUFnQjtnQkFNZCxxQkFBcUI7c0JBQTdCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTElOS1MgfSBmcm9tICcuLi93b3JrZmxvdy9zaGFyZWQvY29uc3RhbnRzL2Nkbi1saW5rLmNvbnN0YW50JztcbmltcG9ydCB7IFJlcG9ydEFDYXNlU2VydmljZSB9IGZyb20gJy4uL3JlcG9ydC1hLWNhc2Uvc2VydmljZXMvcmVwb3J0LWEtY2FzZS5zZXJ2aWNlJztcbmltcG9ydCB7IEFTU0VUUyB9IGZyb20gJy4uL2NvbnN0YW50cy9hc3NldHMuY29uc3RhbnRzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLW1vcmUtb3B0aW9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21vcmUtb3B0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbW9yZS1vcHRpb24uY29tcG9uZW50Lmxlc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgTW9yZU9wdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgQVNTRVRTID0gQVNTRVRTO1xuICBASW5wdXQoKSBjdXJyZW50V29ya2Zsb3cgPSAnJztcbiAgQElucHV0KCkgb3BlbmVkRnJvbSA9ICcnO1xuICBASW5wdXQoKSBpc0VkaXRNb2RlID0gZmFsc2U7XG4gIEBPdXRwdXQoKSBzZWxlY3RlZE9wdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQElucHV0KCkgaXNSQ1NlbGVjdGVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIGlzUHJvZ3JhbVNlbGVjdGVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIGFsbG93ZWRGZWF0dXJlOiBhbnk7XG4gIG9yZ0RldGFpbHM6IGFueTtcbiAgQElucHV0KCdvcmdEZXRhaWxzRGF0YScpIHNldCBnZXRPcmdhbml6YXRpb25EZXRhaWxzKGRldGFpbHM6IGFueSkge1xuICAgIHRoaXMub3JnRGV0YWlscyA9IGRldGFpbHMgPz8gJ3t9JztcbiAgICBpZiAoZGV0YWlscyAmJiBPYmplY3Qua2V5cyhkZXRhaWxzKT8ubGVuZ3RoKSB7XG4gICAgICB0aGlzLnVwZGF0ZVByb2dyYW1Nb3JlT3B0aW9ucygpO1xuICAgIH1cbiAgfVxuICBASW5wdXQoKSBpc0F0dHJpYnV0ZXNBdmFpbGFibGU6IGJvb2xlYW4gPSB0cnVlO1xuICBmZWF0dXJlZmxhZ3JvbGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJvZ3JhbVNpbXBsaWZ5RmxhZzogYm9vbGVhbiA9IGZhbHNlO1xuICBmZl9yY19saXN0aW5nOiBib29sZWFuID0gZmFsc2U7XG4gIHBlcm1pc3Npb25UZXh0OiBzdHJpbmcgPSAnUGVybWlzc2lvbnMnO1xuXG4gIHBsYWNlaG9sZGVyVGV4dHM6IGFueSA9IHtcbiAgICBBQVI6ICdTZWxlY3Qgd2hhdCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHlvdSB3b3VsZCBsaWtlIHRvIGluY2x1ZGUgaW4gdGhlIHJpc2suJyxcbiAgICBDQVA6ICdTZWxlY3Qgd2hhdCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHlvdSB3b3VsZCBsaWtlIHRvIGluY2x1ZGUgaW4gdGhlIHBvbGljeS4nLFxuICAgIENBUjogJ1NlbGVjdCB3aGF0IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24geW91IHdvdWxkIGxpa2UgdG8gaW5jbHVkZSBpbiB0aGUgcmVzcG9uc2liaWxpdHkuJyxcbiAgICBDQVM6ICdTZWxlY3Qgd2hhdCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHlvdSB3b3VsZCBsaWtlIHRvIGluY2x1ZGUgaW4gdGhlIHN1cnZleS4nLFxuICAgIExBSTogJ1NlbGVjdCB3aGF0IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24geW91IHdvdWxkIGxpa2UgdG8gaW5jbHVkZSBpbiB0aGUgaXNzdWUuJyxcbiAgICBDQVBSOiAnU2VsZWN0IHdoYXQgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiB5b3Ugd291bGQgbGlrZSB0byBpbmNsdWRlIGluIHRoZSBzY29wZS4nLFxuICAgIEdSQzogJ1NlbGVjdCB3aGF0IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24geW91IHdvdWxkIGxpa2UgdG8gaW5jbHVkZSBpbiB0aGUgR1JDIE9iamVjdC4nLFxuICAgIFJBQzogJ1NlbGVjdCB3aGF0IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24geW91IHdvdWxkIGxpa2UgdG8gaW5jbHVkZSBpbiB0aGUgY2FzZS4nLFxuICAgIEFDVFc6ICdTZWxlY3Qgd2hhdCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHlvdSB3b3VsZCBsaWtlIHRvIGluY2x1ZGUgaW4gdGhlIGNhc2UuJyxcbiAgfTtcblxuICBidXNpbmVzc0N5Y2xlID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnYnVzaW5lc3NDeWNsZScpID8/ICd7fScpO1xuICBtb3JlT3B0aW9uc0xpc3Q6IGFueSA9IHtcbiAgICBBQVI6IFtcbiAgICAgIHtcbiAgICAgICAgaW1hZ2VVcmw6IEFTU0VUUy5jYXNlX293bmVycyxcbiAgICAgICAgbmFtZTogJ1Jpc2sgT3duZXInLFxuICAgICAgICB0b29sdGlwVGl0bGU6ICdSaXNrIE93bmVyJyxcbiAgICAgICAgdG9vbHRpcE1lc3NhZ2U6XG4gICAgICAgICAgJ1RoaXMgaXMgZWl0aGVyIGEgcGVyc29uLCBkZXBhcnRtZW50IG93bmVyIG9yIGEgZnVuY3Rpb25hbCByb2xlIHdpdGhpbiB0aGUgb3JnYW5pemF0aW9uIHRoYXQgb3ducyB0aGUgcmlzay4gRXhhbXBsZTogRm9yIElUIHJpc2ssIHRoZSBSaXNrIE93bmVyIGNvdWxkIGJlIHRoZSBcIkRpcmVjdG9yIG9mIElUICYgU2VjdXJpdHlcIi4nLFxuICAgICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgICAgY29kZTogJ1JJU0tfT1dORVInLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaW1hZ2VVcmw6IEFTU0VUUy5vdmVyc2lnaHQsXG4gICAgICAgIG5hbWU6ICdSaXNrIE92ZXJzaWdodCcsXG4gICAgICAgIHRvb2x0aXBUaXRsZTogJ1Jpc2sgT3ZlcnNpZ2h0JyxcbiAgICAgICAgdG9vbHRpcE1lc3NhZ2U6XG4gICAgICAgICAgJ092ZXJzaWdodCBlbmFibGVzIHlvdSB0byBkZXNpZ25hdGUgcGVyc29ucyB0byBvdmVyc2VlIHRoZSByaXNrIG1hbmFnZW1lbnQgcHJvY2Vzcy4nLFxuICAgICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgICAgY29kZTogJ09WRVJTRUVSJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGltYWdlVXJsOiBBU1NFVFMucHJpb3JpdHksXG4gICAgICAgIG5hbWU6ICdSaXNrIE1pdGlnYXRpb24gUHJpb3JpdHknLFxuICAgICAgICB0b29sdGlwVGl0bGU6ICdSaXNrIE1pdGlnYXRpb24gUHJpb3JpdHknLFxuICAgICAgICB0b29sdGlwTWVzc2FnZTpcbiAgICAgICAgICAnVGhpcyBzZXRzIHRoZSBwcmlvcml0eSBsZXZlbCBmb3IgdGhlIG1pdGlnYXRpb24gb2YgZWFjaCByaXNrLicsXG4gICAgICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgICAgICBoaWRkZW46IGZhbHNlLFxuICAgICAgICBjb2RlOiAnTUlUSUdBVElPTicsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpbWFnZVVybDogQVNTRVRTLmxhYmxlcyxcbiAgICAgICAgbmFtZTogJ1Jpc2sgTGFiZWwnLFxuICAgICAgICB0b29sdGlwVGl0bGU6ICdSaXNrIExhYmVsJyxcbiAgICAgICAgdG9vbHRpcE1lc3NhZ2U6XG4gICAgICAgICAgJ1RoaXMgb3B0aW9uIGxldHMgeW91IHNwZWNpZnkgaWYgdGhpcyBpcyBhIG5ld2x5IGlkZW50aWZpZWQgcmlzayBvciBpdCBpcyBhIHJhcGlkbHkgY2hhbmdpbmcgcmlzay4nLFxuICAgICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgICAgY29kZTogJ1JJU0tfTEFCRUwnLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaW1hZ2VVcmw6IEFTU0VUUy5saW5rX2l0ZW1zLFxuICAgICAgICBuYW1lOiAnTElOSyBHUkMgT0JKRUNUKFMpJyxcbiAgICAgICAgdG9vbHRpcFRpdGxlOiAnTElOSyBPVEhFUiBHUkMgT0JKRUNUUycsXG4gICAgICAgIHRvb2x0aXBNZXNzYWdlOiBgVGhpcyBvcHRpb24gbGV0cyB5b3UgbGluayBhIHJpc2sgd2l0aCByZWxhdGVkIEdSQyBPYmplY3RzLmAsXG4gICAgICAgIGRpc2FibGVkTWVzc2FnZTogYFlvdSBjYW4gbGluayBhIEdSQyBPYmplY3Qgd2l0aCB0aGlzIHJpc2sgb25seSBhZnRlciB5b3UgaGF2ZSBzZWxlY3RlZCBhIFJlc3BvbnNpYmlsaXR5IENlbnRlci5gLFxuICAgICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgICAgaXNEaXNhYmxlZDogdHJ1ZSxcbiAgICAgICAgY29kZTogJ0dSQ19PQkpFQ1RTJyxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBDQVA6IFtcbiAgICAgIHtcbiAgICAgICAgaW1hZ2VVcmw6IEFTU0VUUy5yZXNwb25zaWJpbGl0eV9jZW50ZXIsXG4gICAgICAgIG5hbWU6ICdSZXNwb25zaWJpbGl0eSBDZW50ZXInLFxuICAgICAgICB0b29sdGlwVGl0bGU6ICdSZXNwb25zaWJpbGl0eSBDZW50ZXInLFxuICAgICAgICB0b29sdGlwTWVzc2FnZTogYFJlc3BvbnNpYmlsaXR5IENlbnRlcnMgcmVwcmVzZW50IHlvdXIgb3JnYW5pemF0aW9uYWwgYW5kXG4gICAgICAgICBvcGVyYXRpb25hbCBpbmZyYXN0cnVjdHVyZS4gWW91IGNhbiBhdHRyaWJ1dGUgYSBwb2xpY3kgdG8gb25lIG9yIG1vcmUgUmVzcG9uc2liaWxpdHkgQ2VudGVycy5cbiAgICAgICAgICBXaGVyZSB5b3UgYXR0cmlidXRlIGEgcG9saWN5IHRvIGEgUmVzcG9uc2liaWxpdHkgQ2VudGVyLCB0aGF0IHBvbGljeSB3aWxsIGJlIHNob3duIGFzIGEgcG9saWN5XG4gICAgICAgICAgIHRoYXQgaXMgcmVxdWlyZWQgdG8gYmUgYXR0ZXN0ZWQgYnkgYWxsIHRoZSBwZXJzb25zIGFzc29jaWF0ZWQgd2l0aCB0aGF0IFJlc3BvbnNpYmlsaXR5IENlbnRlci5cbiAgICAgICAgICAgIFRoZSBwZXJmb3JtYW5jZSBvZiBhIHBvbGljeSBhc3NpZ25lZCB0byBhIFJlc3BvbnNpYmlsaXR5IENlbnRlciB3aWxsIGFsc28gY29udHJpYnV0ZSB0byB0aGVcbiAgICAgICAgICAgIG92ZXJhbGwgcGVyZm9ybWFuY2Ugb2YgdGhlIFJlc3BvbnNpYmlsaXR5IENlbnRlci5gLFxuICAgICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgICAgY29kZTogJ1JFU1BPTlNJQklMSVRZX0NFTlRFUicsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpbWFnZVVybDogQVNTRVRTLmFzc29jaWF0ZWRfcmlza3MsXG4gICAgICAgIG5hbWU6ICdWRVJTSU9OJyxcbiAgICAgICAgdG9vbHRpcFRpdGxlOiAnVmVyc2lvbicsXG4gICAgICAgIHRvb2x0aXBNZXNzYWdlOiBgVGhpcyBvcHRpb24gbGV0cyB5b3Ugc3BlY2lmeSB0aGUgb2ZmbGluZSB2ZXJzaW9uIG51bWJlciBmb3IgYSBwb2xpY3kuIEhlbmNlLCB5b3UgY2FuIGlucHV0IHRoZSB2ZXJzaW9uIG51bWJlciBvZiB0aGUgZGlnaXRhbCBvciBwaHlzaWNhbCBjb3B5IG9mIHRoZSBwb2xpY3kgZG9jdW1lbnQgZm9yIHJlY29yZC1rZWVwaW5nIHB1cnBvc2VzLmAsXG4gICAgICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgICAgICBoaWRkZW46IGZhbHNlLFxuICAgICAgICBjb2RlOiAnVkVSU0lPTicsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpbWFnZVVybDogQVNTRVRTLnJldmlld2VyLFxuICAgICAgICBuYW1lOiAnUmV2aWV3ZXInLFxuICAgICAgICB0b29sdGlwVGl0bGU6ICdSZXZpZXdlcicsXG4gICAgICAgIHRvb2x0aXBNZXNzYWdlOiBgVGhpcyBvcHRpb25zIGxldHMgeW91IHNwZWNpZnkgYSByZXZpZXcgbGlmZWN5Y2xlIGZvciB0aGUgcG9saWN5IGRvY3VtZW50LlxuICAgICAgICAgWW91IGNhbiBzZWxlY3QgYSByZXZpZXdlciBhbmQgZGV0ZXJtaW5lIGhvdyBvZnRlbiB0aGUgcG9saWN5IG5lZWRzIHRvIGJlIHJldmlld2VkLmAsXG4gICAgICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgICAgICBoaWRkZW46IHRydWUsXG4gICAgICAgIGNvZGU6ICdSRVZJRVdFUicsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpbWFnZVVybDogQVNTRVRTLmNoZWNrcG9pbnRzLFxuICAgICAgICBuYW1lOiAnQ2hlY2twb2ludHMnLFxuICAgICAgICB0b29sdGlwVGl0bGU6ICdDaGVja3BvaW50cycsXG4gICAgICAgIHRvb2x0aXBNZXNzYWdlOiBgQ2hlY2twb2ludHMgZW5hYmxlIHlvdSB0byBjb25maXJtIGEgcGVyc29u4oCZcyB1bmRlcnN0YW5kaW5nIG9mIHRoZSBwb2xpY3kgZG9jdW1lbnQuXG4gICAgICAgICBZb3UgY2FuIGNyZWF0ZSBxdWVzdGlvbnMgYmFzZWQgb24gdGhlIHBvbGljeSBjb250ZW50IGFuZCByZXF1aXJlIHRoYXQgdGhlIHJlYWRlciBvZiB0aGUgcG9saWN5XG4gICAgICAgICBhbnN3ZXJzIHRoZXNlIHF1ZXN0aW9ucyBjb3JyZWN0bHkgYmVmb3JlIHByb2NlZWRpbmcgdG8gY29tcGxldGUgdGhlIGF0dGVzdGF0aW9uLlxuICAgICAgICBgLFxuICAgICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICAgICAgaGlkZGVuOiB0cnVlLFxuICAgICAgICBjb2RlOiAnQ0hFQ0tQT0lOVFMnLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaW1hZ2VVcmw6IEFTU0VUUy5vdmVyc2lnaHQsXG4gICAgICAgIG5hbWU6ICdPdmVyc2lnaHQnLFxuICAgICAgICB0b29sdGlwVGl0bGU6ICdPdmVyc2lnaHQnLFxuICAgICAgICB0b29sdGlwTWVzc2FnZTogYE92ZXJzaWdodHMgYXJlIHBlcnNvbnMgd2hvIG92ZXJzZWUgdGhlIHBvbGljeS5cbiAgICAgICAgIFRoZXNlIHBlcnNvbnMgd2lsbCByZWNlaXZlIGVtYWlsIG5vdGlmaWNhdGlvbnMgYWJvdXQgdGhlIHBlcmZvcm1hbmNlIG9mIHRoZSBwb2xpY3kuXG4gICAgICAgICBBcyB0aGUgcGVyc29uIGNyZWF0aW5nIHRoZSBwb2xpY3ksIHlvdSB3aWxsIGF1dG9tYXRpY2FsbHkgcmVjZWl2ZSBlbWFpbCBub3RpZmljYXRpb25zIGFib3V0IHRoZSBwZXJmb3JtYW5jZSBvZiB0aGUgcG9saWN5LlxuICAgICAgICBgLFxuICAgICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgICAgY29kZTogJ09WRVJTRUVSJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGltYWdlVXJsOiBBU1NFVFMuZm9ybWF0X2V2aWRlbmNlLFxuICAgICAgICBuYW1lOiAnUmVsYXRlZCBEb2N1bWVudHMnLFxuICAgICAgICB0b29sdGlwVGl0bGU6ICdSZWxhdGVkIERvY3VtZW50cycsXG4gICAgICAgIHRvb2x0aXBNZXNzYWdlOiBgUmVsYXRlZCBkb2N1bWVudHMgYXJlIGZpbGVzIHRoYXQgbWlnaHQgYmUgcmVsYXRlZCB0byB0aGUgcG9saWN5LiBUaGVzZSBjb3VsZCBiZSBkb2N1bWVudHMgd2hpY2ggYXJlIHJlbGF0ZWRcbiAgICAgICAgIHRvIHRoZSBwb2xpY3kgb3IgYXJlIGEgc3Vic2V0IG9mIHRoZSBwb2xpY3kgdGhhdCBpcyBiZWluZyBjcmVhdGVkLmAsXG4gICAgICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgICAgICBoaWRkZW46IGZhbHNlLFxuICAgICAgICBjb2RlOiAnUkVMQVRFRF9ET0NVTUVOVFMnLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaW1hZ2VVcmw6IEFTU0VUUy5saW5rX2l0ZW1zLFxuICAgICAgICBuYW1lOiAnTElOSyBQUk9HUkFNUycsXG4gICAgICAgIHRvb2x0aXBUaXRsZTogJ0xJTksgUFJPR1JBTVMnLFxuICAgICAgICB0b29sdGlwTWVzc2FnZTogYFRoaXMgb3B0aW9uIGFsbG93cyB5b3UgdG8gYXNzb2NpYXRlIFByb2dyYW1zIGZyb20gdGhlIENvbXBsaWFuY2UgbW9kdWxlIHdpdGggYSBwb2xpY3kuIFRoZXNlIGNvdWxkIGJlIHByb2Nlc3NlcyBvciBwcm9jZWR1cmVzIHRoYXQgbWlnaHQgYmUgbGlua2VkIHRvIGEgcG9saWN5LmAsXG4gICAgICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgICAgICBoaWRkZW46IGZhbHNlLFxuICAgICAgICBjb2RlOiAnTElOS19QUk9HUkFNX1JFU1BPTlNJQklMSVRJRVMnLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaW1hZ2VVcmw6IEFTU0VUUy5hc3Nlc3NtZW50cyxcbiAgICAgICAgbmFtZTogJ0xJTksgQU4gQVNTRVNTTUVOVCcsXG4gICAgICAgIHRvb2x0aXBUaXRsZTogJ0xJTksgQU4gQVNTRVNTTUVOVCcsXG4gICAgICAgIHRvb2x0aXBNZXNzYWdlOiBgQXNzZXNzbWVudHMgYWxsb3cgeW91IHRvIGFzc29jaWF0ZSBvdXRjb21lIGJhc2VkIHF1ZXN0aW9ubmFpcmVzIG9yIGNoZWNrbGlzdCBiYXNlZCBwcm9jZWR1cmVzIHdpdGggYSBwb2xpY3kuYCxcbiAgICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAgIGNvZGU6ICdMSU5LX0FTU0VTU01FTlRTJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGltYWdlVXJsOiBBU1NFVFMubGlua19pdGVtcyxcbiAgICAgICAgbmFtZTogJ0xJTksgUkVMQVRFRCBQT0xJQ0lFUycsXG4gICAgICAgIHRvb2x0aXBUaXRsZTogJ0xJTksgUkVMQVRFRCBQT0xJQ0lFUycsXG4gICAgICAgIHRvb2x0aXBNZXNzYWdlOiBgVGhpcyBvcHRpb25zIGxldHMgeW91IGFzc29jaWF0ZSByZWxhdGVkIHBvbGljaWVzIGZvciBxdWljayByZWZlcmVuY2UsIGVuYWJsaW5nIHVzZXJzIHRvIHZpZXcgcmVsZXZhbnQgZG9jdW1lbnRzIGluIG9uZSBwbGFjZSBhbmQgZW5zdXJpbmcgcG9saWN5IGFsaWdubWVudC5gLFxuICAgICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgICAgY29kZTogJ0xJTktfUkVMQVRFRF9QT0xJQ0lFUycsXG4gICAgICB9LFxuICAgIF0sXG4gICAgQ0FSOiBbXG4gICAgICB7XG4gICAgICAgIGltYWdlVXJsOiBBU1NFVFMub2JqZWN0aXZlcyxcbiAgICAgICAgbmFtZTogJ09iamVjdGl2ZScsXG4gICAgICAgIGNvZGU6ICdPQkpFQ1RJVkUnLFxuICAgICAgICB0b29sdGlwVGl0bGU6ICdPYmplY3RpdmUnLFxuICAgICAgICB0b29sdGlwTWVzc2FnZTpcbiAgICAgICAgICAnVGhlIG9iamVjdGl2ZSBhbGxvd3MgeW91IHRvIHNwZWNpZnkgYW4gb2JqZWN0aXZlIGZvciB0aGUgcmVzcG9uc2liaWxpdHkuJyxcbiAgICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICB9LFxuXG4gICAgICAvLyB7XG4gICAgICAvLyAgIGltYWdlVXJsOiAnaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L2NhdGVnb3J5LnN2ZycsXG4gICAgICAvLyAgIG5hbWU6ICdQcm9ncmFtJyxcbiAgICAgIC8vICAgY29kZTogJ0NBVEVHT1JZJyxcbiAgICAgIC8vICAgdG9vbHRpcFRpdGxlOiAnUHJvZ3JhbScsXG4gICAgICAvLyAgIHRvb2x0aXBNZXNzYWdlOiBgUHJvZ3JhbXMgZW5hYmxlIHlvdSB0byBncm91cCBzaW1pbGFyIHJlc3BvbnNpYmlsaXRpZXMgdG9nZXRoZXIuXG4gICAgICAvLyAgICAgQWxsb2NhdGluZyBhIHJlc3BvbnNpYmlsaXR5IHRvIGEgUHJvZ3JhbSBhbGxvd3MgeW91IHRvIHZpZXcgYSBncm91cCBvciBzaW1pbGFyIHJlc3BvbnNpYmlsaXRpZXMgYXQgb25jZS5cbiAgICAgIC8vICAgICBJdCBhbHNvIGFsbG93cyB5b3UgdG8gdmlldyB0aGUgcGVyZm9ybWFuY2Ugb2YgdGhvc2UgY29sbGVjdGl2ZSByZXNwb25zaWJpbGl0aWVzLmAsXG4gICAgICAvLyAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgICAgLy8gICBoaWRkZW46IGZhbHNlLFxuICAgICAgLy8gfSxcbiAgICAgIHtcbiAgICAgICAgaW1hZ2VVcmw6IEFTU0VUUy5yZXNwb25zaWJpbGl0eV9jZW50ZXIsXG4gICAgICAgIG5hbWU6ICdSZXNwb25zaWJpbGl0eSBDZW50ZXInLFxuICAgICAgICBjb2RlOiAnUkMnLFxuICAgICAgICB0b29sdGlwVGl0bGU6ICdSZXNwb25zaWJpbGl0eSBDZW50ZXInLFxuICAgICAgICB0b29sdGlwTWVzc2FnZTogYFJlc3BvbnNpYmlsaXR5IENlbnRlcnMgcmVwcmVzZW50IHlvdXIgb3JnYW5pemF0aW9uYWwgYW5kIG9wZXJhdGlvbmFsIGluZnJhc3RydWN0dXJlLjxicj5cbiAgICAgICAgICBZb3UgY2FuIGFzc2lnbiBhIHJlc3BvbnNpYmlsaXR5IHRvIG9uZSBvciBtb3JlIFJlc3BvbnNpYmlsaXR5IENlbnRlcnMuIFdoZXJlIHlvdSBhc3NpZ24gYSByZXNwb25zaWJpbGl0eSB0byBhIFJlc3BvbnNpYmlsaXR5IENlbnRlcixcbiAgICAgICAgICB0aGF0IHJlc3BvbnNpYmlsaXR5IHdpbGwgYmUgc2hvd24gYXMgYSByZXNwb25zaWJpbGl0eSB0aGF0IGlzIHJlcXVpcmVkIHRvIGJlIGNvbXBsZXRlZCBieSB0aGUgUmVzcG9uc2liaWxpdHkgQ2VudGVyLlxuICAgICAgICAgIFRoZSBwZXJmb3JtYW5jZSBvZiBhIHJlc3BvbnNpYmlsaXR5IGFzc2lnbmVkIHRvIGEgUmVzcG9uc2liaWxpdHkgQ2VudGVyIHdpbGwgYWxzbyBjb250cmlidXRlIHRvIHRoZSBvdmVyYWxsIHBlcmZvcm1hbmNlIG9mIHRoZSBSZXNwb25zaWJpbGl0eSBDZW50ZXIuYCxcbiAgICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpbWFnZVVybDogQVNTRVRTLmNhc2VfY2F0ZWdvcnksXG4gICAgICAgIG5hbWU6ICdQcm9ncmFtJyxcbiAgICAgICAgY29kZTogJ1BST0dSQU0nLFxuICAgICAgICB0b29sdGlwVGl0bGU6ICdQcm9ncmFtJyxcbiAgICAgICAgdG9vbHRpcE1lc3NhZ2U6IGBQcm9ncmFtcyBlbmFibGUgeW91IHRvIGdyb3VwIHNpbWlsYXIgcmVzcG9uc2liaWxpdGllcyB0b2dldGhlci5cbiAgICAgICAgICBBbGxvY2F0aW5nIGEgcmVzcG9uc2liaWxpdHkgdG8gYSBQcm9ncmFtIGFsbG93cyB5b3UgdG8gdmlldyBhIGdyb3VwIG9yIHNpbWlsYXIgcmVzcG9uc2liaWxpdGllcyBhdCBvbmNlLlxuICAgICAgICAgIEl0IGFsc28gYWxsb3dzIHlvdSB0byB2aWV3IHRoZSBwZXJmb3JtYW5jZSBvZiB0aG9zZSBjb2xsZWN0aXZlIHJlc3BvbnNpYmlsaXRpZXMuYCxcbiAgICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpbWFnZVVybDogQVNTRVRTLmZvcm1hdF9ldmlkZW5jZSxcbiAgICAgICAgbmFtZTogJ0Zvcm1hdCAmIEV2aWRlbmNlJyxcbiAgICAgICAgY29kZTogJ0ZPUk1BVEVfRVZJREVOQ0UnLFxuICAgICAgICB0b29sdGlwVGl0bGU6ICcgRm9ybWF0ICYgRXZpZGVuY2UnLFxuICAgICAgICB0b29sdGlwTWVzc2FnZTpcbiAgICAgICAgICAnWW91IGNhbiB1cGxvYWQgYSBmb3JtYXQgZm9yIHRoaXMgcmVzcG9uc2liaWxpdHkgYW5kIHlvdSBjYW4gYWxzbyByZXF1aXJlIGV2aWRlbmNlIG9mIGNvbXBsZXRpb24gb2YgdGhlIHJlc3BvbnNpYmlsaXR5IHRvIGJlIHByb3ZpZGVkLicsXG4gICAgICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgICAgICBoaWRkZW46IGZhbHNlLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaW1hZ2VVcmw6IEFTU0VUUy5hc3Nlc3NtZW50cyxcbiAgICAgICAgbmFtZTogJ0Fzc2Vzc21lbnRzJyxcbiAgICAgICAgY29kZTogJ0FTU0VTU01FTlQnLFxuICAgICAgICB0b29sdGlwVGl0bGU6ICcgQXNzZXNzbWVudHMnLFxuICAgICAgICB0b29sdGlwTWVzc2FnZTpcbiAgICAgICAgICAnQXNzZXNzbWVudHMgYWxsb3cgeW91IHRvIGFzc29jaWF0ZSBvdXRjb21lIGJhc2VkLXF1ZXN0aW9ubmFpcmVzIG9yIHNlbGYtYXNzZXNzbWVudCBxdWVzdGlvbm5haXJlcyB3aXRoIGEgcmVzcG9uc2liaWxpdHkuIFRoZXNlIG5lZWQgdG8gYmUgY29tcGxldGVkIGJ5IHRoZSBhc3NpZ25lZSBhcyBhIHBhcnQgb2YgY29tcGxldGluZyB0aGUgcmVzcG9uc2liaWxpdHkuJyxcbiAgICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAgIGlzRGlzYWJsZWQ6IGZhbHNlLFxuICAgICAgICBkaXNhYmxlZE1lc3NhZ2U6XG4gICAgICAgICAgJ0FuIGFzc2Vzc21lbnQgY2FuIGJlIGxpbmtlZCB3aXRoIGEgcmVzcG9uc2liaWxpdHkgb25seSBhZnRlciByZW1vdmluZyB0aGUgYXNzb2NpYXRlZCBjaGVja3BvaW50cy4nLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaW1hZ2VVcmw6XG4gICAgICAgICAgJ2h0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvd29ya2Zsb3ctZW5naW5lL2Fzc2V0cy93b3JrZmxvdy9yaXNrcy5zdmcnLFxuICAgICAgICBuYW1lOiAnUmlzayBDbGFzc2lmaWNhdGlvbicsXG4gICAgICAgIHRvb2x0aXBUaXRsZTogJ1Jpc2sgQ2xhc3NpZmljYXRpb24nLFxuICAgICAgICB0b29sdGlwTWVzc2FnZTpcbiAgICAgICAgICAnWW91IGNhbiBzcGVjaWZ5IHRoZSBsZXZlbCBvZiByaXNrIHRoYXQgdGhlIG9yZ2FuaXphdGlvbiB3aWxsIGJlIGV4cG9zZWQgdG8gaWYgdGhlIHJlc3BvbnNpYmlsaXR5IGlzIG5vdCBjb21wbGV0ZWQuJyxcbiAgICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAgIGNvZGU6ICdSSVNLX0NMQVNTSUZJQ0FUSU9OJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGltYWdlVXJsOiBBU1NFVFMucmV2aWV3ZXIsXG4gICAgICAgIG5hbWU6ICdSZXZpZXdlcicsXG4gICAgICAgIHRvb2x0aXBUaXRsZTogJ1Jldmlld2VyJyxcbiAgICAgICAgdG9vbHRpcE1lc3NhZ2U6XG4gICAgICAgICAgJ0EgUmV2aWV3ZXIgaXMgYSBwZXJzb24gdGhhdCBpcyB0YXNrZWQgd2l0aCByZXZpZXdpbmcgdGhlIGNvbXBsZXRlZCByZXNwb25zaWJpbGl0eS4nLFxuICAgICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgICAgY29kZTogJ1JFVklFV0VSJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGltYWdlVXJsOiBBU1NFVFMub3ZlcnNpZ2h0LFxuICAgICAgICBuYW1lOiAnT3ZlcnNpZ2h0JyxcbiAgICAgICAgdG9vbHRpcFRpdGxlOiAnT3ZlcnNpZ2h0JyxcbiAgICAgICAgdG9vbHRpcE1lc3NhZ2U6IGBPdmVyc2lnaHQgZW5hYmxlcyB5b3UgdG8gZGVzaWduYXRlIHBlcnNvbnMgdG8gb3ZlcnNlZSB0aGUgcmVzcG9uc2liaWxpdHkuXG4gICAgICAgICAgVGhlc2UgcGVyc29ucyB3aWxsIHJlY2VpdmUgZW1haWwgbm90aWZpY2F0aW9ucyBhYm91dCB0aGUgcGVyZm9ybWFuY2Ugb2YgdGhlIHJlc3BvbnNpYmlsaXR5Ljxicj5cbiAgICAgICAgICBBcyB0aGUgcGVyc29uIGNyZWF0aW5nIHRoZSByZXNwb25zaWJpbGl0eSwgeW91IHdpbGwgYXV0b21hdGljYWxseSByZWNlaXZlIGVtYWlsIG5vdGlmaWNhdGlvbnMgYWJvdXQgdGhlIHBlcmZvcm1hbmNlIG9mIHRoZSByZXNwb25zaWJpbGl0eS5gLFxuICAgICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgICAgY29kZTogJ09WRVJTRUVSJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGltYWdlVXJsOlxuICAgICAgICAgICdodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL3dvcmtmbG93LWVuZ2luZS9hc3NldHMvd29ya2Zsb3cvbGluay1pdGVtcy5zdmcnLFxuICAgICAgICBuYW1lOiAnTElOSyBHUkMgT0JKRUNUKFMpJyxcbiAgICAgICAgdG9vbHRpcFRpdGxlOiAnTElOSyBPVEhFUiBHUkMgT0JKRUNUUycsXG4gICAgICAgIHRvb2x0aXBNZXNzYWdlOiBgVGhpcyBvcHRpb24gbGV0cyB5b3UgbGluayBhIHJlc3BvbnNpYmlsaXR5IHdpdGggcmVsYXRlZCBHUkMgT2JqZWN0cy5gLFxuICAgICAgICBkaXNhYmxlZE1lc3NhZ2U6IGBZb3UgY2FuIGxpbmsgYSBHUkMgT2JqZWN0IHdpdGggdGhpcyByZXNwb25zaWJpbGl0eSBvbmx5IGFmdGVyIHlvdSBoYXZlIHNlbGVjdGVkIGEgUmVzcG9uc2liaWxpdHkgQ2VudGVyLmAsXG4gICAgICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgICAgICBoaWRkZW46IGZhbHNlLFxuICAgICAgICBpc0Rpc2FibGVkOiB0cnVlLFxuICAgICAgICBjb2RlOiAnR1JDX09CSkVDVFMnLFxuICAgICAgfSxcbiAgICBdLFxuICAgIENBUzogW1xuICAgICAge1xuICAgICAgICBpbWFnZVVybDogQVNTRVRTLnJlc3BvbnNpYmlsaXR5X2NlbnRlcixcbiAgICAgICAgbmFtZTogJ1Jlc3BvbnNpYmlsaXR5IENlbnRlcicsXG4gICAgICAgIHRvb2x0aXBUaXRsZTogJycsXG4gICAgICAgIHRvb2x0aXBNZXNzYWdlOiAnJyxcbiAgICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpbWFnZVVybDogQVNTRVRTLmZvcm1hdF9ldmlkZW5jZSxcbiAgICAgICAgbmFtZTogJ0Zvcm1hdCAmYW1wOyBFdmlkZW5jZScsXG4gICAgICAgIHRvb2x0aXBUaXRsZTogJycsXG4gICAgICAgIHRvb2x0aXBNZXNzYWdlOiAnJyxcbiAgICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpbWFnZVVybDogQVNTRVRTLm92ZXJzaWdodCxcbiAgICAgICAgbmFtZTogJ092ZXJzaWdodCcsXG4gICAgICAgIHRvb2x0aXBUaXRsZTogJycsXG4gICAgICAgIHRvb2x0aXBNZXNzYWdlOiAnJyxcbiAgICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICB9LFxuICAgIF0sXG5cbiAgICBMQUk6IFtcbiAgICAgIHtcbiAgICAgICAgaW1hZ2VVcmw6IEFTU0VUUy5leGNlcHRpb25fdHlwZSxcbiAgICAgICAgbmFtZTogJ0V4Y2VwdGlvbiBUeXBlJyxcbiAgICAgICAgdG9vbHRpcFRpdGxlOiAnRXhjZXB0aW9uIFR5cGUnLFxuICAgICAgICB0b29sdGlwTWVzc2FnZTpcbiAgICAgICAgICAnRXhjZXB0aW9uIHR5cGUgbGV0cyB5b3Ugc3BlY2lmeSB3aGV0aGVyIHRoZXJlIGlzIGEgZGVzaWduIG9yIGFuIG9wZXJhdGlvbmFsIGVmZmVjdGl2ZW5lc3MgcHJvYmxlbS4nLFxuICAgICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgICAgY29kZTogJ0VYQ0VQVElPTl9UWVBFJyxcbiAgICAgIH0sXG4gICAgICAvLyB7XG4gICAgICAvLyAgIGltYWdlVXJsOiAnaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L2lzc3VlLXR5cGUuc3ZnJyxcbiAgICAgIC8vICAgbmFtZTogJ0lzc3VlIHR5cGUnLFxuICAgICAgLy8gICB0b29sdGlwVGl0bGU6ICcnLFxuICAgICAgLy8gICB0b29sdGlwTWVzc2FnZTogJycsXG4gICAgICAvLyAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgICAgLy8gICBoaWRkZW46IGZhbHNlLFxuICAgICAgLy8gICBjb2RlOiAnSVNTVUVfVFlQRSdcbiAgICAgIC8vIH0sXG4gICAgICB7XG4gICAgICAgIGltYWdlVXJsOiBBU1NFVFMucHJpb3JpdHksXG4gICAgICAgIG5hbWU6ICdQcmlvcml0eScsXG4gICAgICAgIHRvb2x0aXBUaXRsZTogJ1ByaW9yaXR5JyxcbiAgICAgICAgdG9vbHRpcE1lc3NhZ2U6XG4gICAgICAgICAgJ1RoaXMgc2V0cyB0aGUgcHJpb3JpdHkgbGV2ZWwgZm9yIHJlc29sdmluZyBlYWNoIGlzc3VlLicsXG4gICAgICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgICAgICBoaWRkZW46IGZhbHNlLFxuICAgICAgICBjb2RlOiAnUFJJT1JJVFknLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaW1hZ2VVcmw6IEFTU0VUUy5hc3NvY2lhdGVkX3Jpc2tzLFxuICAgICAgICBuYW1lOiAnQXNzb2NpYXRlZCBSaXNrcycsXG4gICAgICAgIHRvb2x0aXBUaXRsZTogJ0Fzc29jaWF0ZWQgUmlza3MnLFxuICAgICAgICB0b29sdGlwTWVzc2FnZTpcbiAgICAgICAgICAnQXNzb2NpYXRlZCByaXNrcyBsZXRzIHlvdSBzcGVjaWZ5IHRoZSByaXNrcyB0aGF0IGFyZSByZWxhdGVkIHRvIHRoaXMgaXNzdWUuJyxcbiAgICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAgIGNvZGU6ICdBU1NPQ0lBVEVEX1JJU0tTJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGltYWdlVXJsOiBBU1NFVFMub3ZlcnNpZ2h0LFxuICAgICAgICBuYW1lOiAnT3ZlcnNpZ2h0JyxcbiAgICAgICAgdG9vbHRpcFRpdGxlOiAnT3ZlcnNpZ2h0JyxcbiAgICAgICAgdG9vbHRpcE1lc3NhZ2U6XG4gICAgICAgICAgJ092ZXJzaWdodHMgYXJlIHRoZSBwZXJzb25zIHJlc3BvbnNpYmxlIGZvciBvdmVyc2VlaW5nIGFuIGlzc3VlLiBUaGVzZSBwZXJzb25zIHdpbGwgcmVjZWl2ZSBlbWFpbCBub3RpZmljYXRpb25zIGFib3V0IHRoZSBpc3N1ZSBzdGF0dXMuIEFzIHRoZSBwZXJzb24gcmVwb3J0aW5nIHRoaXMgaXNzdWUsIHlvdSB3aWxsIGF1dG9tYXRpY2FsbHkgcmVjZWl2ZSBzdWNoIGVtYWlsIG5vdGlmaWNhdGlvbnMuJyxcbiAgICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAgIGNvZGU6ICdPVkVSU0lHSFQnLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaW1hZ2VVcmw6IEFTU0VUUy5mb3JtYXRfZXZpZGVuY2UsXG4gICAgICAgIG5hbWU6ICdFdmlkZW5jZScsXG4gICAgICAgIHRvb2x0aXBUaXRsZTogJ0V2aWRlbmNlJyxcbiAgICAgICAgdG9vbHRpcE1lc3NhZ2U6XG4gICAgICAgICAgJ1lvdSBjYW4gcmVxdWlyZSB0aGF0IHRoZSBwZXJzb24gcmVzb2x2aW5nIHRoZSBpc3N1ZSB1cGxvYWRzIGV2aWRlbmNlIHRvIGNvbmZpcm0nLFxuICAgICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgICAgY29kZTogJ0VWSURFTkNFJyxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBDQVBSOiBbXG4gICAgICB7XG4gICAgICAgIGltYWdlVXJsOlxuICAgICAgICAgICdodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL3dvcmtmbG93LWVuZ2luZS9hc3NldHMvd29ya2Zsb3cvb3duZXIuc3ZnJyxcbiAgICAgICAgbmFtZTogJ093bmVyKHMpJyxcbiAgICAgICAgdG9vbHRpcFRpdGxlOiAnT3duZXIocyknLFxuICAgICAgICB0b29sdGlwTWVzc2FnZTogYE93bmVycyBhcmUgcmVzcG9uc2libGUgZm9yIG1hbmFnaW5nIGEgUHJvZ3JhbS4gT25seSBPd25lcnMgY2FuIG1ha2UgY2hhbmdlcyB0byBhIFByb2dyYW0gYW5kIHRoZSByZXNwb25zaWJpbGl0aWVzIHRoYXQgYXJlIGxpbmtlZCB3aXRoIHRoZSBQcm9ncmFtLjxicj5cbiAgICAgICAgVGhlIDxiPktleSBBZG1pbjwvYj4gYW5kIGFsbCA8Yj5BZG1pbjwvYj4gdXNlcnMgd2lsbCBiZSBzZWxlY3RlZCBhcyB0aGUgT3duZXJzIG9mIGEgUHJvZ3JhbSBieSBkZWZhdWx0LlxuICAgICAgICBgLFxuICAgICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgICAgY29kZTogJ09XTkVSUycsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpbWFnZVVybDpcbiAgICAgICAgICAnaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L2NvbGxhYm9yYXRvci5zdmcnLFxuICAgICAgICBuYW1lOiAnQ29sbGFib3JhdG9ycycsXG4gICAgICAgIHRvb2x0aXBUaXRsZTogJ0NvbGxhYm9yYXRvcnMnLFxuICAgICAgICB0b29sdGlwTWVzc2FnZTogYENvbGxhYm9yYXRvcnMgYXJlIHJlcXVpcmVkIHRvIGNvbXBsZXRlIHRoZSByZXNwb25zaWJpbGl0aWVzIHRoYXQgaGF2ZSBiZWVuIGFzc2lnbmVkIHRvIHRoZW0uIFdoZXJlIENvbGxhYm9yYXRvcnMgYXJlIHNlbGVjdGVkIHdoZW4gY3JlYXRpbmcgYSBQcm9ncmFtLCBvbmx5IHRob3NlIENvbGxhYm9yYXRvcnMgd2lsbCBiZSBhdmFpbGFibGUgZm9yIHNlbGVjdGlvbiB3aGVuIGNyZWF0aW5nIGEgcmVzcG9uc2liaWxpdHkgbGlua2VkIHdpdGggdGhlIFByb2dyYW0uYCxcbiAgICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAgIGNvZGU6ICdDT0xMQUJPUkFUT1JTJyxcbiAgICAgIH0sXG4gIFxuICAgICAge1xuICAgICAgICBpbWFnZVVybDogQVNTRVRTLmN1c3RvbV9maWVsZHMsXG4gICAgICAgIG5hbWU6ICdDdXN0b20gRmllbGQnLFxuICAgICAgICBjb2RlOiAnQ1VTVE9NX0ZJRUxEUycsXG4gICAgICAgIHRvb2x0aXBUaXRsZTogJyBDdXN0b20gRmllbGQnLFxuICAgICAgICB0b29sdGlwTWVzc2FnZTpcbiAgICAgICAgICAnV2hlbiBhIGN1c3RvbSBmaWVsZCBpcyBzcGVjaWZpZWQsIGFsbCByZXNwb25zaWJpbGl0aWVzIGxpbmtlZCB3aXRoIGEgUHJvZ3JhbSB3aWxsIGNvbnRhaW4gdGhhdCBjdXN0b20gZmllbGQuIEN1c3RvbSBmaWVsZHMgZW5hYmxlIHRoZSBjb2xsZWN0aW9uIG9mIGFkZGl0aW9uYWwgbWV0YSBkYXRhLicsXG4gICAgICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgICAgICBoaWRkZW46IGZhbHNlLFxuICAgICAgfSxcbiAgICBdLFxuICAgIEdSQzogW1xuICAgICAge1xuICAgICAgICBpbWFnZVVybDogQVNTRVRTLmxpbmtfaXRlbXMsXG4gICAgICAgIG5hbWU6ICdMSU5LIFJFU1BPTlNJQklMSVRJRVMnLFxuICAgICAgICB0b29sdGlwVGl0bGU6ICdMSU5LIFJFU1BPTlNJQklMSVRJRVMnLFxuICAgICAgICB0b29sdGlwTWVzc2FnZTogYFRoaXMgb3B0aW9uIGxldHMgeW91IGxpbmsgYSBHUkMgT2JqZWN0IHdpdGggcmVsYXRlZCByZXNwb25zaWJpbGl0aWVzLmAsXG4gICAgICAgIGRpc2FibGVkTWVzc2FnZTpcbiAgICAgICAgICAnWW91IGNhbiBsaW5rIGEgcmVzcG9uc2liaWxpdHkgd2l0aCB0aGlzIEdSQyBPYmplY3Qgb25seSBhZnRlciB5b3UgaGF2ZSBzZWxlY3RlZCB0aGUgcmVsZXZhbnQgUmVzcG9uc2liaWxpdHkgQ2VudGVyLicsXG4gICAgICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgICAgICBoaWRkZW46IGZhbHNlLFxuICAgICAgICBjb2RlOiAnTElOS19QUk9HUkFNJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGltYWdlVXJsOiBBU1NFVFMubGlua19yaXNrcyxcbiAgICAgICAgbmFtZTogJ0xJTksgUklTS1MnLFxuICAgICAgICB0b29sdGlwVGl0bGU6ICdMSU5LIFJJU0tTJyxcbiAgICAgICAgdG9vbHRpcE1lc3NhZ2U6IGBUaGlzIG9wdGlvbiBsZXRzIHlvdSBsaW5rIGEgR1JDIE9iamVjdCB3aXRoIHJlbGF0ZWQgcmlza3MuYCxcbiAgICAgICAgZGlzYWJsZWRNZXNzYWdlOlxuICAgICAgICAgICdZb3UgY2FuIGxpbmsgYSByaXNrIHdpdGggdGhpcyBHUkMgT2JqZWN0IG9ubHkgYWZ0ZXIgeW91IGhhdmUgc2VsZWN0ZWQgdGhlIHJlbGV2YW50IFJlc3BvbnNpYmlsaXR5IENlbnRlci4nLFxuICAgICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgICAgY29kZTogJ0xJTktfUklTS19DQVRFR09SSUVTX1JJU0tTJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGltYWdlVXJsOiBBU1NFVFMubGlua19pdGVtcyxcbiAgICAgICAgbmFtZTogJ0xJTksgT1RIRVIgR1JDIE9CSkVDVFMnLFxuICAgICAgICB0b29sdGlwVGl0bGU6ICdMSU5LIE9USEVSIEdSQyBPQkpFQ1RTJyxcbiAgICAgICAgdG9vbHRpcE1lc3NhZ2U6IGBUaGlzIG9wdGlvbiBsZXRzIHlvdSBsaW5rIGEgR1JDIE9iamVjdCB3aXRoIG90aGVyIHJlbGF0ZWQgR1JDIE9iamVjdHMuYCxcbiAgICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAgIGNvZGU6ICdPVEhFUl9HUkNfT0JKRUNUUycsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpbWFnZVVybDogTElOS1M/LmN1c3RvbUZpZWxkcyxcbiAgICAgICAgbmFtZTogJ0dSQyBPYmplY3QgVHlwZSBBdHRyaWJ1dGVzJyxcbiAgICAgICAgdG9vbHRpcFRpdGxlOiAnR1JDIE9iamVjdCBUeXBlIEF0dHJpYnV0ZXMnLFxuICAgICAgICB0b29sdGlwTWVzc2FnZTogYFRoaXMgb3B0aW9uIGxldHMgeW91IGFkZCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHJlbGF0ZWQgdG8gYSBHUkMgT2JqZWN0LmAsXG4gICAgICAgIGRpc2FibGVkTWVzc2FnZTpcbiAgICAgICAgICAnVGhlcmUgYXJlIG5vIGFkZGl0aW9uYWwgYXR0cmlidXRlcyBsaW5rZWQgd2l0aCB0aGlzIEdSQyBPYmplY3QgVHlwZS4nLFxuICAgICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgICAgY29kZTogJ0FUVFJJQlVURVMnLFxuICAgICAgfSxcbiAgICBdLFxuICAgIFJBQzogW1xuICAgICAge1xuICAgICAgICBpbWFnZVVybDogQVNTRVRTLm9iamVjdGl2ZXMsXG4gICAgICAgIG5hbWU6ICdFeGNlcHRpb24gVHlwZScsXG4gICAgICAgIHRvb2x0aXBUaXRsZTogJ0V4Y2VwdGlvbiBUeXBlJyxcbiAgICAgICAgdG9vbHRpcE1lc3NhZ2U6XG4gICAgICAgICAgJ0V4Y2VwdGlvbiB0eXBlIGxldHMgeW91IHNwZWNpZnkgd2hldGhlciB0aGVyZSBpcyBhIGRlc2lnbiBvciBhbiBvcGVyYXRpb25hbCBlZmZlY3RpdmVuZXNzIHByb2JsZW0uJyxcbiAgICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAgIGNvZGU6ICdFWENFUFRJT05fVFlQRScsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpbWFnZVVybDogQVNTRVRTLmFzc29jaWF0ZWRfcmlza3MsXG4gICAgICAgIG5hbWU6ICdBc3NvY2lhdGVkIFJpc2tzJyxcbiAgICAgICAgdG9vbHRpcFRpdGxlOiAnQXNzb2NpYXRlZCBSaXNrcycsXG4gICAgICAgIHRvb2x0aXBNZXNzYWdlOlxuICAgICAgICAgICdBc3NvY2lhdGVkIHJpc2tzIGxldHMgeW91IHNwZWNpZnkgdGhlIHJpc2tzIHRoYXQgYXJlIHJlbGF0ZWQgdG8gdGhpcyBjYXNlLicsXG4gICAgICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgICAgICBoaWRkZW46IGZhbHNlLFxuICAgICAgICBjb2RlOiAnQVNTT0NJQVRFRF9SSVNLUycsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpbWFnZVVybDogQVNTRVRTLm92ZXJzaWdodCxcbiAgICAgICAgbmFtZTogJ092ZXJzaWdodCcsXG4gICAgICAgIHRvb2x0aXBUaXRsZTogJ092ZXJzaWdodCcsXG4gICAgICAgIHRvb2x0aXBNZXNzYWdlOlxuICAgICAgICAgICdPdmVyc2lnaHQgb3B0aW9uIGxldHMgeW91IGRlc2lnbmF0ZSB1c2VycyB0byBvdmVyc2VlIGEgY2FzZS4gVGhlc2UgdXNlcnMgd2lsbCByZWNlaXZlIGVtYWlsIG5vdGlmaWNhdGlvbnMgYWJvdXQgdGhlIGNhc2Ugc3RhdHVzICYgcmVsYXRlZCB3b3JrZmxvd3MuIEFzIHRoZSBwZXJzb24gcmVwb3J0aW5nIHRoaXMgY2FzZSwgeW91IHdpbGwgYXV0b21hdGljYWxseSByZWNlaXZlIHN1Y2ggZW1haWwgbm90aWZpY2F0aW9ucy4nLFxuICAgICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgICAgY29kZTogJ09WRVJTSUdIVCcsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpbWFnZVVybDogQVNTRVRTLmZvcm1hdF9ldmlkZW5jZSxcbiAgICAgICAgbmFtZTogJ0V2aWRlbmNlJyxcbiAgICAgICAgdG9vbHRpcFRpdGxlOiAnRXZpZGVuY2UnLFxuICAgICAgICB0b29sdGlwTWVzc2FnZTpcbiAgICAgICAgICAnWW91IGNhbiByZXF1aXJlIHRoYXQgdGhlIHBlcnNvbiByZXNvbHZpbmcgdGhlIGNhc2UgdXBsb2FkcyBldmlkZW5jZSB0byBjb25maXJtJyxcbiAgICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgICAgIGhpZGRlbjogdHJ1ZSxcbiAgICAgICAgY29kZTogJ0VWSURFTkNFJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGltYWdlVXJsOiBBU1NFVFMucmVjb21tZW5kZWRfYWN0aW9uLFxuICAgICAgICBuYW1lOiAnUmVjb21tZW5kZWQgQWN0aW9ucycsXG4gICAgICAgIHRvb2x0aXBUaXRsZTogJycsXG4gICAgICAgIHRvb2x0aXBNZXNzYWdlOiAnJyxcbiAgICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAgIGNvZGU6ICdSRUNPTU1FTkRFRF9BQ1RJT05TJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGltYWdlVXJsOiBBU1NFVFMucmlza3MsXG4gICAgICAgIG5hbWU6ICdSaXNrIENsYXNzaWZpY2F0aW9uJyxcbiAgICAgICAgdG9vbHRpcFRpdGxlOiAnJyxcbiAgICAgICAgdG9vbHRpcE1lc3NhZ2U6ICcnLFxuICAgICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgICAgY29kZTogJ1JJU0tfQ0xBU1NJRklDQVRJT04nLFxuICAgICAgfSxcbiAgICBdLFxuICAgIEFDVFc6IFtcbiAgICAgIHtcbiAgICAgICAgaW1hZ2VVcmw6IEFTU0VUUy5vYmplY3RpdmVzLFxuICAgICAgICBuYW1lOiAnRXhjZXB0aW9uIFR5cGUnLFxuICAgICAgICB0b29sdGlwVGl0bGU6ICdFeGNlcHRpb24gVHlwZScsXG4gICAgICAgIHRvb2x0aXBNZXNzYWdlOlxuICAgICAgICAgICdFeGNlcHRpb24gdHlwZSBsZXRzIHlvdSBzcGVjaWZ5IHdoZXRoZXIgdGhlcmUgaXMgYSBkZXNpZ24gb3IgYW4gb3BlcmF0aW9uYWwgZWZmZWN0aXZlbmVzcyBwcm9ibGVtLicsXG4gICAgICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgICAgICBoaWRkZW46IGZhbHNlLFxuICAgICAgICBjb2RlOiAnRVhDRVBUSU9OX1RZUEUnLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaW1hZ2VVcmw6IEFTU0VUUy5hc3NvY2lhdGVkX3Jpc2tzLFxuICAgICAgICBuYW1lOiAnQXNzb2NpYXRlZCBSaXNrcycsXG4gICAgICAgIHRvb2x0aXBUaXRsZTogJ0Fzc29jaWF0ZWQgUmlza3MnLFxuICAgICAgICB0b29sdGlwTWVzc2FnZTpcbiAgICAgICAgICAnQXNzb2NpYXRlZCByaXNrcyBsZXRzIHlvdSBzcGVjaWZ5IHRoZSByaXNrcyB0aGF0IGFyZSByZWxhdGVkIHRvIHRoaXMgY2FzZS4nLFxuICAgICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgICAgY29kZTogJ0FTU09DSUFURURfUklTS1MnLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaW1hZ2VVcmw6IEFTU0VUUy5vdmVyc2lnaHQsXG4gICAgICAgIG5hbWU6ICdPdmVyc2lnaHQnLFxuICAgICAgICB0b29sdGlwVGl0bGU6ICdPdmVyc2lnaHQnLFxuICAgICAgICB0b29sdGlwTWVzc2FnZTpcbiAgICAgICAgICAnT3ZlcnNpZ2h0cyBhcmUgdGhlIHBlcnNvbnMgcmVzcG9uc2libGUgZm9yIG92ZXJzZWVpbmcgYW4gY2FzZS4gVGhlc2UgcGVyc29ucyB3aWxsIHJlY2VpdmUgZW1haWwgbm90aWZpY2F0aW9ucyBhYm91dCB0aGUgY2FzZSBzdGF0dXMuIEFzIHRoZSBwZXJzb24gcmVwb3J0aW5nIHRoaXMgY2FzZSwgeW91IHdpbGwgYXV0b21hdGljYWxseSByZWNlaXZlIHN1Y2ggZW1haWwgbm90aWZpY2F0aW9ucy4nLFxuICAgICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgICAgY29kZTogJ09WRVJTSUdIVCcsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpbWFnZVVybDogQVNTRVRTLnJlY29tbWVuZGVkX2FjdGlvbixcbiAgICAgICAgbmFtZTogJ1JlY29tbWVuZGVkIEFjdGlvbnMnLFxuICAgICAgICB0b29sdGlwVGl0bGU6ICcnLFxuICAgICAgICB0b29sdGlwTWVzc2FnZTogJycsXG4gICAgICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgICAgICBoaWRkZW46IGZhbHNlLFxuICAgICAgICBjb2RlOiAnUkVDT01NRU5ERURfQUNUSU9OUycsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpbWFnZVVybDogQVNTRVRTLnJpc2tzLFxuICAgICAgICBuYW1lOiAnUmlzayBDbGFzc2lmaWNhdGlvbicsXG4gICAgICAgIHRvb2x0aXBUaXRsZTogJycsXG4gICAgICAgIHRvb2x0aXBNZXNzYWdlOiAnJyxcbiAgICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAgIGNvZGU6ICdSSVNLX0NMQVNTSUZJQ0FUSU9OJyxcbiAgICAgIH0sXG4gICAgXSxcbiAgfTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlcG9ydEFDYXNlU2VydmljZTogUmVwb3J0QUNhc2VTZXJ2aWNlKSB7XG4gICAgdGhpcy5yZXNldFJBQ01vcmVPcHRpb25zKCk7XG4gIH1cblxuICByZXNldFJBQ01vcmVPcHRpb25zKCkge1xuICAgIHRoaXMucmVwb3J0QUNhc2VTZXJ2aWNlLnJlc2V0TW9yZU9wdGlvbi5zdWJzY3JpYmUoKHJlcykgPT4ge1xuICAgICAgaWYgKHJlcykge1xuICAgICAgICB0aGlzLm1vcmVPcHRpb25zTGlzdC5SQUMuZm9yRWFjaCgoZWxlOiBhbnkpID0+IHtcbiAgICAgICAgICBlbGUuY2hlY2tlZCA9IGZhbHNlO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoXG4gICAgICBjaGFuZ2VzPy5pc1Byb2dyYW1TZWxlY3RlZD8uY3VycmVudFZhbHVlICE9PVxuICAgICAgY2hhbmdlcz8uaXNQcm9ncmFtU2VsZWN0ZWQ/LnByZXZpb3VzVmFsdWVcbiAgICApIHtcbiAgICAgIHRoaXMuaXNQcm9ncmFtU2VsZWN0ZWQgPSBjaGFuZ2VzLmlzUHJvZ3JhbVNlbGVjdGVkLmN1cnJlbnRWYWx1ZTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLmlzUkNTZWxlY3RlZCkge1xuICAgICAgaWYgKHRoaXMuY3VycmVudFdvcmtmbG93ID09PSAnQUFSJykge1xuICAgICAgICB0aGlzLm1vcmVPcHRpb25zTGlzdC5BQVIuZm9yRWFjaCgoZWxlOiBhbnkpID0+IHtcbiAgICAgICAgICAvLyBpZihlbGUuY29kZSA9PT0gJ0FTU1VSQU5DRScpIHtcbiAgICAgICAgICAvLyAgIGVsZS5jaGVja2VkID0gZmFsc2U7XG4gICAgICAgICAgLy8gfVxuICAgICAgICAgIGlmIChlbGUuY29kZSA9PT0gJ0dSQ19PQkpFQ1RTJykge1xuICAgICAgICAgICAgZWxlLmNoZWNrZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIGVsZS5pc0Rpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5tb3JlT3B0aW9uc0xpc3QuQ0FSLmZvckVhY2goKGVsZTogYW55KSA9PiB7XG4gICAgICAgICAgLy8gaWYoZWxlLmNvZGUgPT09ICdBU1NVUkFOQ0UnKSB7XG4gICAgICAgICAgLy8gICBlbGUuY2hlY2tlZCA9IGZhbHNlO1xuICAgICAgICAgIC8vIH1cbiAgICAgICAgICBpZiAoWydHUkNfT0JKRUNUUyddLmluY2x1ZGVzKGVsZS5jb2RlKSkge1xuICAgICAgICAgICAgZWxlLmNoZWNrZWQgPSBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5jdXJyZW50V29ya2Zsb3cgPT09ICdBQVInKSB7XG4gICAgICAgIHRoaXMubW9yZU9wdGlvbnNMaXN0LkFBUi5mb3JFYWNoKChlbGU6IGFueSkgPT4ge1xuICAgICAgICAgIC8vIGlmKGVsZS5jb2RlID09PSAnQVNTVVJBTkNFJykge1xuICAgICAgICAgIC8vICAgZWxlLmNoZWNrZWQgPSBmYWxzZTtcbiAgICAgICAgICAvLyB9XG4gICAgICAgICAgaWYgKGVsZS5jb2RlID09PSAnR1JDX09CSkVDVFMnKSB7XG4gICAgICAgICAgICBlbGUuaXNEaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm1vcmVPcHRpb25zTGlzdC5DQVIuZm9yRWFjaCgoZWxlOiBhbnkpID0+IHtcbiAgICAgICAgICAvLyBpZihlbGUuY29kZSA9PT0gJ0FTU1VSQU5DRScpIHtcbiAgICAgICAgICAvLyAgIGVsZS5pc0Rpc2FibGVkID0gZmFsc2U7XG4gICAgICAgICAgLy8gfVxuICAgICAgICAgIGlmIChbICdHUkNfT0JKRUNUUyddLmluY2x1ZGVzKGVsZS5jb2RlKSkge1xuICAgICAgICAgICAgZWxlLmlzRGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmNoZWNrR1JDQXR0cmlidXRlcyh0aGlzLmlzQXR0cmlidXRlc0F2YWlsYWJsZSk7XG4gIH1cblxuICBjaGVja0dSQ0F0dHJpYnV0ZXModmFsdWU6IGFueSkge1xuICAgIHRoaXMubW9yZU9wdGlvbnNMaXN0LkdSQy5mb3JFYWNoKChlbGU6IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgaWYgKGVsZS5jb2RlID09PSAnQVRUUklCVVRFUycpIHtcbiAgICAgICAgZWxlLmlzRGlzYWJsZWQgPSAhdmFsdWU7XG4gICAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgICBlbGUuY2hlY2tlZCA9ICF2YWx1ZTtcbiAgICAgICAgICB0aGlzLnNlbGVjdE1vcmVPcHRpb24oZWxlLCBpbmRleCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChlbGUuY29kZSA9PT0gJ0xJTktfUFJPR1JBTScpIHtcbiAgICAgICAgZWxlLmlzRGlzYWJsZWQgPSAhdGhpcy5pc1JDU2VsZWN0ZWQ7XG4gICAgICB9XG4gICAgICBpZiAoZWxlLmNvZGUgPT09ICdMSU5LX1JJU0tfQ0FURUdPUklFU19SSVNLUycpIHtcbiAgICAgICAgZWxlLmlzRGlzYWJsZWQgPSAhdGhpcy5pc1JDU2VsZWN0ZWQ7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5mZWF0dXJlZmxhZ3JvbGUgPSB0aGlzLmFsbG93ZWRGZWF0dXJlPy5pc0ZlYXR1cmVFbmFibGVkKFxuICAgICAgJ2ZmX3JvbGVfaW1wcm92ZW1lbnRzJ1xuICAgICk7XG4gICAgdGhpcy5mZl9yY19saXN0aW5nID0gdGhpcy5hbGxvd2VkRmVhdHVyZS5pc0ZlYXR1cmVFbmFibGVkKCdmZl9yY19saXN0aW5nJyk7XG4gICAgdGhpcy5mZl9yY19saXN0aW5nXG4gICAgICA/ICh0aGlzLnBlcm1pc3Npb25UZXh0ID0gJ1Blcm1pc3Npb25zJylcbiAgICAgIDogKHRoaXMucGVybWlzc2lvblRleHQgPSAnUGVybWlzc2lvbiBHcm91cChTKScpO1xuICAgIHRoaXMucHJvZ3JhbVNpbXBsaWZ5RmxhZyA9XG4gICAgICB0aGlzLmFsbG93ZWRGZWF0dXJlPy5pc0ZlYXR1cmVFbmFibGVkKCdmZl9wcm9ncmFtX3NpbXBsaWZ5JykgPz8gdHJ1ZTtcbiAgfVxuXG4gIHNlbGVjdE1vcmVPcHRpb24oZXZlbnQ6IGFueSwgaW5kZXg6IG51bWJlcikge1xuICAgIGlmIChcbiAgICAgIHRoaXMuY3VycmVudFdvcmtmbG93ID09PSAnQ0FSJyAmJlxuICAgICAgZXZlbnQuY29kZSA9PT0gJ0NIRUNLUE9JTlRTX05FVycgJiZcbiAgICAgIHRoaXMubW9yZU9wdGlvbnNMaXN0W3RoaXMuY3VycmVudFdvcmtmbG93XVtpbmRleF0/LmNoZWNrZWRcbiAgICApIHtcbiAgICAgIGV2ZW50WydjaGVja3BvaW50X25ldyddID0gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKHRoaXMubW9yZU9wdGlvbnNMaXN0W3RoaXMuY3VycmVudFdvcmtmbG93XT8ubGVuZ3RoID4gaW5kZXgpIHtcbiAgICAgIGV2ZW50WydjaGVja3BvaW50X25ldyddID0gZmFsc2U7XG4gICAgICB0aGlzLm1vcmVPcHRpb25zTGlzdFt0aGlzLmN1cnJlbnRXb3JrZmxvd11baW5kZXhdWydjaGVja2VkJ10gPVxuICAgICAgICAhZXZlbnQuY2hlY2tlZDtcbiAgICB9XG5cbiAgICB0aGlzLnNlbGVjdGVkT3B0aW9uLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgcG9wdWxhdGUoZXZ0OiBhbnkpIHtcbiAgICBpZiAodGhpcy5jdXJyZW50V29ya2Zsb3cpIHtcbiAgICAgIHRoaXMubW9yZU9wdGlvbnNMaXN0W3RoaXMuY3VycmVudFdvcmtmbG93XS5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcbiAgICAgICAgaWYgKGV2dC5pbmNsdWRlcyhlbGVtZW50LmNvZGUpKSB7XG4gICAgICAgICAgZWxlbWVudC5jaGVja2VkID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBlbGVtZW50LmNoZWNrZWQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXZ0LmluY2x1ZGVzKCdDSEVDS1BPSU5UU19ORVcnKSkge1xuICAgICAgICAgIGlmIChlbGVtZW50LmNvZGUgPT09ICdDSEVDS1BPSU5UUycpIHtcbiAgICAgICAgICAgIGVsZW1lbnQuaXNEaXNhYmxlZCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChlbGVtZW50LmNvZGUgPT09ICdBU1NFU1NNRU5UJykge1xuICAgICAgICAgICAgZWxlbWVudC5pc0Rpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV2dC5pbmNsdWRlcygnQVNTRVNTTUVOVCcpKSB7XG4gICAgICAgICAgaWYgKGVsZW1lbnQuY29kZSA9PT0gJ0NIRUNLUE9JTlRTX05FVycpIHtcbiAgICAgICAgICAgIGVsZW1lbnQuaXNEaXNhYmxlZCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChlbGVtZW50LmNvZGUgPT09ICdDSEVDS1BPSU5UUycpIHtcbiAgICAgICAgICAgIGVsZW1lbnQuaXNEaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoZXZ0LmluY2x1ZGVzKCdDSEVDS1BPSU5UUycpKSB7XG4gICAgICAgICAgaWYgKGVsZW1lbnQuY29kZSA9PT0gJ0NIRUNLUE9JTlRTX05FVycpIHtcbiAgICAgICAgICAgIGVsZW1lbnQuaXNEaXNhYmxlZCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChlbGVtZW50LmNvZGUgPT09ICdBU1NFU1NNRU5UJykge1xuICAgICAgICAgICAgZWxlbWVudC5pc0Rpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV2dC5pbmNsdWRlcygnUFJPR1JBTScpKSB7XG4gICAgICAgICAgaWYgKGVsZW1lbnQuY29kZSA9PT0gJ1BST0dSQU0nICYmIHRoaXMuaXNQcm9ncmFtU2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIGVsZW1lbnQuaXNEaXNhYmxlZCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgaGlkZUVsZW1lbnRzKGhpZGRlbkxpc3Q6IGFueSkge1xuICAgIGlmICh0aGlzLmN1cnJlbnRXb3JrZmxvdykge1xuICAgICAgdGhpcy5tb3JlT3B0aW9uc0xpc3RbdGhpcy5jdXJyZW50V29ya2Zsb3ddLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xuICAgICAgICBpZiAoaGlkZGVuTGlzdC5pbmNsdWRlcyhlbGVtZW50LmNvZGUpKSB7XG4gICAgICAgICAgZWxlbWVudC5oaWRkZW4gPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGVsZW1lbnQuaGlkZGVuID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHJlc2V0QWxsKHdvcmtmbG93VHlwZTogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMubW9yZU9wdGlvbnNMaXN0W3dvcmtmbG93VHlwZV0pIHtcbiAgICAgIHRoaXMubW9yZU9wdGlvbnNMaXN0W3dvcmtmbG93VHlwZV0uZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XG4gICAgICAgIGVsZW1lbnQuY2hlY2tlZCA9IGZhbHNlO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlUHJvZ3JhbU1vcmVPcHRpb25zKCkge1xuICAgIGNvbnN0IGNvZGUgPSBbXG4gICAgICAnUFJPR1JBTV9GUkVRVUVOQ1knLFxuICAgICAgJ1NDT1BFX0NIQU5HRVMnLFxuICAgICAgJ1JDJyxcbiAgICAgICdBU1NJR05FRVMnLFxuICAgICAgJ1JFVklFV0VSJyxcbiAgICAgICdPVkVSU0VFUicsXG4gICAgICAnQVNTRVNTTUVOVCcsXG4gICAgICAnRk9STUFURV9FVklERU5DRScsXG4gICAgXTtcbiAgIFxuICB9XG59XG4iLCI8IS0tIDxwPm1vcmUtb3B0aW9uIHdvcmtzITwvcD4gLS0+XG48ZGl2IGNsYXNzPVwibW9yZS1vcHRpb25cIj5cbiAgPGRpdiBjbGFzcz1cIm1lc3NhZ2UtY29udGFpbmVyXCI+XG4gICAgPGltZyBbc3JjXT1cIkFTU0VUUy5hZGRfcmlza19tb3JlX29wdGlvblwiIGFsdD1cIlwiIC8+XG4gICAgPHAgKm5nSWY9XCJjdXJyZW50V29ya2Zsb3dcIj57eyBwbGFjZWhvbGRlclRleHRzW2N1cnJlbnRXb3JrZmxvd10gfX08L3A+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwibW9yZS1vcHRpb25zXCI+XG4gICAgPHVsPlxuICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwibW9yZS1vcHRpb25zLWhlYWRpbmdcIiAqbmdJZj1cImN1cnJlbnRXb3JrZmxvdyA9PT0nQ0FQUidcIj5QUk9HUkFNIFNDT1BFIE9QVElPTlM8L2Rpdj4gLS0+XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ0Zvcj1cImxldCBkYXRhIG9mIG1vcmVPcHRpb25zTGlzdFtjdXJyZW50V29ya2Zsb3ddOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgID5cbiAgICAgICAgPCEtLSA8bGkgKm5nSWY9XCIhZGF0YS5oaWRkZW5cIiBbYXBwVG9vbHRpcF09XCJkYXRhLmlzRGlzYWJsZWQgJiYgIWlzUmNTZWxlY3RlZD8gJ1RoaXMgcmVzcG9uc2liaWxpdHkgY2FuIGJlIHNjaGVkdWxlZCBmb3IgYW4gYXVkaXQgb25seSBhZnRlciB0aGUgUmVzcG9uc2liaWxpdHkgQ2VudGVyIGlzIHNlbGVjdGVkLicgOiAnJ1wiIHBsYWNlbWVudD1cInJpZ2h0XCIgZGVsYXk9XCIwXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZGF0YS5pc0Rpc2FibGVkICYmICFpc1JjU2VsZWN0ZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBbY2xhc3MuYWN0aXZlXT1cImRhdGEuY2hlY2tlZFwiIFtkaXNhYmxlZF09XCJkYXRhLmNvZGUgPT09ICdSQycgJiYgb3BlbmVkRnJvbSA9PT0gJ1JJU0tfVFJFQVRNRU5UJyAmJiBjdXJyZW50V29ya2Zsb3cgPT09ICdDQVInIHx8IChkYXRhLmlzRGlzYWJsZWQgJiYgIWlzUkNTZWxlY3RlZClcIiBbY2xhc3MuZGlzYWJsZWRdPVwiZGF0YS5pc0Rpc2FibGVkICYmICFpc1JDU2VsZWN0ZWRcIiAoY2xpY2spPVwiZGF0YS5jaGVja2VkID0gIWRhdGEuY2hlY2tlZDsgc2VsZWN0TW9yZU9wdGlvbihkYXRhKVwiPiAtLT5cblxuICAgICAgICA8bGlcbiAgICAgICAgICAqbmdJZj1cIiFkYXRhLmhpZGRlblwiXG4gICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICBkYXRhLmlzRGlzYWJsZWQgfHxcbiAgICAgICAgICAgICgoKGRhdGEuY29kZSA9PT0gJ1JDJyAmJiAhaXNSY1NlbGVjdGVkKSB8fFxuICAgICAgICAgICAgICBkYXRhLmNvZGUgPT09ICdBVFRSSUJVVEVTJykgJiZcbiAgICAgICAgICAgICAgZGF0YS5pc0Rpc2FibGVkKVxuICAgICAgICAgICAgICA/IGRhdGE/LmRpc2FibGVkTWVzc2FnZVxuICAgICAgICAgICAgICA6ICcnXG4gICAgICAgICAgXCJcbiAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJkYXRhLmlzRGlzYWJsZWRcIlxuICAgICAgICAgIGlkPVwibGlzdGRhdGFcIlxuICAgICAgICA+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJkYXRhLmNoZWNrZWRcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cIlxuICAgICAgICAgICAgICAoZGF0YS5jb2RlID09PSAnUkMnICYmXG4gICAgICAgICAgICAgICAgb3BlbmVkRnJvbSA9PT0gJ1JJU0tfVFJFQVRNRU5UJyAmJlxuICAgICAgICAgICAgICAgIGN1cnJlbnRXb3JrZmxvdyA9PT0gJ0NBUicpIHx8XG4gICAgICAgICAgICAgIGRhdGEuaXNEaXNhYmxlZCB8fFxuICAgICAgICAgICAgICAoZGF0YS5pc0Rpc2FibGVkICYmICFpc1JDU2VsZWN0ZWQpXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdE1vcmVPcHRpb24oZGF0YSwgaSlcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWRhdGEuY2hlY2tlZFwiIGNsYXNzPVwibW9yZS1pY29uXCI+XG4gICAgICAgICAgICAgIDxpbWcgW3NyY109XCJkYXRhLmltYWdlVXJsXCIgYWx0PVwiXCIgLz5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxzdmdcbiAgICAgICAgICAgICAgKm5nSWY9XCJkYXRhLmNoZWNrZWRcIlxuICAgICAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvblwiXG4gICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDUyIDUyXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGNpcmNsZVxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIlxuICAgICAgICAgICAgICAgIGN4PVwiMjZcIlxuICAgICAgICAgICAgICAgIGN5PVwiMjZcIlxuICAgICAgICAgICAgICAgIHI9XCIyNVwiXG4gICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiXG4gICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgY2xhc3M9XCJ2YWx1ZVwiXG4gICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiZGF0YT8ubmFtZVwiXG4gICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cImRhdGE/Lm5hbWVcIlxuICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICA8IS0tIDxzcGFuICpuZ0lmPVwiZGF0YS5jb2RlID09PSdDSEVDS1BPSU5UU19ORVcnXCIgY2xhc3M9XCJjaGVja3BvaW50LXZlcnNpb25cIj4gVjIuMDwvc3Bhbj4gLS0+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIGNsYXNzPVwiaWNvblwiXG4gICAgICAgICAgICAqbmdJZj1cImRhdGEudG9vbHRpcE1lc3NhZ2UgIT09ICcnXCJcbiAgICAgICAgICAgIGxpYlBvcG92ZXJIb3ZlclxuICAgICAgICAgICAgKG1vdXNlb3Zlcik9XCJkYXRhVG9vbHRpcC5wb3BvdmVyKClcIlxuICAgICAgICAgICAgKG1vdXNlbGVhdmUpPVwiZGF0YVRvb2x0aXAuY2xvc2VQb3BvdmVyKClcIlxuICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICAgICAgPjxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTFmOzwvaT48L3NwYW5cbiAgICAgICAgICA+XG4gICAgICAgICAgPHBvcG92ZXItaG92ZXIgI2RhdGFUb29sdGlwPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWluZm8tY2FyZFwiPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ2eC1pbmZvLWNhcmQtaGVhZFwiXG4gICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJkYXRhLnRvb2x0aXBUaXRsZVwiXG4gICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidngtaW5mby1jYXJkLWJvZHlcIlxuICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiZGF0YS50b29sdGlwTWVzc2FnZVwiXG4gICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvcG9wb3Zlci1ob3Zlcj5cbiAgICAgICAgPC9saT5cbiAgICBcbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvdWw+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
917
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9yZS1vcHRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvbW9yZS1vcHRpb24vbW9yZS1vcHRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvbW9yZS1vcHRpb24vbW9yZS1vcHRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFFdkUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7Ozs7O0FBT3JFLE1BQU0sT0FBTyxtQkFBbUI7SUFVOUIsSUFBNkIsc0JBQXNCLENBQUMsT0FBWTtRQUM5RCxJQUFJLENBQUMsVUFBVSxHQUFHLE9BQU8sSUFBSSxJQUFJLENBQUM7UUFDbEMsSUFBSSxPQUFPLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxNQUFNLEVBQUU7WUFDM0MsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7U0FDakM7SUFDSCxDQUFDO0lBd3JCRCxZQUFvQixrQkFBc0M7UUFBdEMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQXRzQjFELFdBQU0sR0FBRyxNQUFNLENBQUM7UUFDUCxvQkFBZSxHQUFHLEVBQUUsQ0FBQztRQUNyQixlQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFDbEIsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3JD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Q2xELElBQUksSUFBSSxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUU7b0JBQy9CLE1BQU0sQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO2lCQUN2QjtZQUNILENBQUMsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDOytHQXo2QlUsbUJBQW1CO21HQUFuQixtQkFBbUIsNmJDbkJoQyx3L0hBeUdBOzs0RkR0RmEsbUJBQW1CO2tCQUwvQixTQUFTOytCQUNFLGlCQUFpQjt5R0FNbEIsZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0ksY0FBYztzQkFBdkIsTUFBTTtnQkFDRSxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUV1QixzQkFBc0I7c0JBQWxELEtBQUs7dUJBQUMsZ0JBQWdCO2dCQU1kLHFCQUFxQjtzQkFBN0IsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMSU5LUyB9IGZyb20gJy4uL3dvcmtmbG93L3NoYXJlZC9jb25zdGFudHMvY2RuLWxpbmsuY29uc3RhbnQnO1xuaW1wb3J0IHsgUmVwb3J0QUNhc2VTZXJ2aWNlIH0gZnJvbSAnLi4vcmVwb3J0LWEtY2FzZS9zZXJ2aWNlcy9yZXBvcnQtYS1jYXNlLnNlcnZpY2UnO1xuaW1wb3J0IHsgQVNTRVRTIH0gZnJvbSAnLi4vY29uc3RhbnRzL2Fzc2V0cy5jb25zdGFudHMnO1xuaW1wb3J0IHsgQ09MTEFCT1JBVE9SX1RPT0xUSVAgfSBmcm9tICcuLi93b3JrZmxvdy1wcm9ncmFtL2NvbnN0YW50cyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1tb3JlLW9wdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9tb3JlLW9wdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21vcmUtb3B0aW9uLmNvbXBvbmVudC5sZXNzJ10sXG59KVxuZXhwb3J0IGNsYXNzIE1vcmVPcHRpb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIEFTU0VUUyA9IEFTU0VUUztcbiAgQElucHV0KCkgY3VycmVudFdvcmtmbG93ID0gJyc7XG4gIEBJbnB1dCgpIG9wZW5lZEZyb20gPSAnJztcbiAgQElucHV0KCkgaXNFZGl0TW9kZSA9IGZhbHNlO1xuICBAT3V0cHV0KCkgc2VsZWN0ZWRPcHRpb24gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBJbnB1dCgpIGlzUkNTZWxlY3RlZCA9IGZhbHNlO1xuICBASW5wdXQoKSBpc1Byb2dyYW1TZWxlY3RlZCA9IGZhbHNlO1xuICBASW5wdXQoKSBhbGxvd2VkRmVhdHVyZTogYW55O1xuICBvcmdEZXRhaWxzOiBhbnk7XG4gIEBJbnB1dCgnb3JnRGV0YWlsc0RhdGEnKSBzZXQgZ2V0T3JnYW5pemF0aW9uRGV0YWlscyhkZXRhaWxzOiBhbnkpIHtcbiAgICB0aGlzLm9yZ0RldGFpbHMgPSBkZXRhaWxzID8/ICd7fSc7XG4gICAgaWYgKGRldGFpbHMgJiYgT2JqZWN0LmtleXMoZGV0YWlscyk/Lmxlbmd0aCkge1xuICAgICAgdGhpcy51cGRhdGVQcm9ncmFtTW9yZU9wdGlvbnMoKTtcbiAgICB9XG4gIH1cbiAgQElucHV0KCkgaXNBdHRyaWJ1dGVzQXZhaWxhYmxlOiBib29sZWFuID0gdHJ1ZTtcbiAgZmVhdHVyZWZsYWdyb2xlOiBib29sZWFuID0gZmFsc2U7XG4gIHByb2dyYW1TaW1wbGlmeUZsYWc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgZmZfcmNfbGlzdGluZzogYm9vbGVhbiA9IGZhbHNlO1xuICBwZXJtaXNzaW9uVGV4dDogc3RyaW5nID0gJ1Blcm1pc3Npb25zJztcblxuICBwbGFjZWhvbGRlclRleHRzOiBhbnkgPSB7XG4gICAgQUFSOiAnU2VsZWN0IHdoYXQgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiB5b3Ugd291bGQgbGlrZSB0byBpbmNsdWRlIGluIHRoZSByaXNrLicsXG4gICAgQ0FQOiAnU2VsZWN0IHdoYXQgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiB5b3Ugd291bGQgbGlrZSB0byBpbmNsdWRlIGluIHRoZSBwb2xpY3kuJyxcbiAgICBDQVI6ICdTZWxlY3Qgd2hhdCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHlvdSB3b3VsZCBsaWtlIHRvIGluY2x1ZGUgaW4gdGhlIHJlc3BvbnNpYmlsaXR5LicsXG4gICAgQ0FTOiAnU2VsZWN0IHdoYXQgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiB5b3Ugd291bGQgbGlrZSB0byBpbmNsdWRlIGluIHRoZSBzdXJ2ZXkuJyxcbiAgICBMQUk6ICdTZWxlY3Qgd2hhdCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHlvdSB3b3VsZCBsaWtlIHRvIGluY2x1ZGUgaW4gdGhlIGlzc3VlLicsXG4gICAgQ0FQUjogJ1NlbGVjdCB3aGF0IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24geW91IHdvdWxkIGxpa2UgdG8gaW5jbHVkZSBpbiB0aGUgc2NvcGUuJyxcbiAgICBHUkM6ICdTZWxlY3Qgd2hhdCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHlvdSB3b3VsZCBsaWtlIHRvIGluY2x1ZGUgaW4gdGhlIEdSQyBPYmplY3QuJyxcbiAgICBSQUM6ICdTZWxlY3Qgd2hhdCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHlvdSB3b3VsZCBsaWtlIHRvIGluY2x1ZGUgaW4gdGhlIGNhc2UuJyxcbiAgICBBQ1RXOiAnU2VsZWN0IHdoYXQgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiB5b3Ugd291bGQgbGlrZSB0byBpbmNsdWRlIGluIHRoZSBjYXNlLicsXG4gIH07XG5cbiAgYnVzaW5lc3NDeWNsZSA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2J1c2luZXNzQ3ljbGUnKSA/PyAne30nKTtcbiAgbW9yZU9wdGlvbnNMaXN0OiBhbnkgPSB7XG4gICAgQUFSOiBbXG4gICAgICB7XG4gICAgICAgIGltYWdlVXJsOiBBU1NFVFMuY2FzZV9vd25lcnMsXG4gICAgICAgIG5hbWU6ICdSaXNrIE93bmVyJyxcbiAgICAgICAgdG9vbHRpcFRpdGxlOiAnUmlzayBPd25lcicsXG4gICAgICAgIHRvb2x0aXBNZXNzYWdlOlxuICAgICAgICAgICdUaGlzIGlzIGVpdGhlciBhIHBlcnNvbiwgZGVwYXJ0bWVudCBvd25lciBvciBhIGZ1bmN0aW9uYWwgcm9sZSB3aXRoaW4gdGhlIG9yZ2FuaXphdGlvbiB0aGF0IG93bnMgdGhlIHJpc2suIEV4YW1wbGU6IEZvciBJVCByaXNrLCB0aGUgUmlzayBPd25lciBjb3VsZCBiZSB0aGUgXCJEaXJlY3RvciBvZiBJVCAmIFNlY3VyaXR5XCIuJyxcbiAgICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAgIGNvZGU6ICdSSVNLX09XTkVSJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGltYWdlVXJsOiBBU1NFVFMub3ZlcnNpZ2h0LFxuICAgICAgICBuYW1lOiAnUmlzayBPdmVyc2lnaHQnLFxuICAgICAgICB0b29sdGlwVGl0bGU6ICdSaXNrIE92ZXJzaWdodCcsXG4gICAgICAgIHRvb2x0aXBNZXNzYWdlOlxuICAgICAgICAgICdPdmVyc2lnaHQgZW5hYmxlcyB5b3UgdG8gZGVzaWduYXRlIHBlcnNvbnMgdG8gb3ZlcnNlZSB0aGUgcmlzayBtYW5hZ2VtZW50IHByb2Nlc3MuJyxcbiAgICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAgIGNvZGU6ICdPVkVSU0VFUicsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpbWFnZVVybDogQVNTRVRTLnByaW9yaXR5LFxuICAgICAgICBuYW1lOiAnUmlzayBNaXRpZ2F0aW9uIFByaW9yaXR5JyxcbiAgICAgICAgdG9vbHRpcFRpdGxlOiAnUmlzayBNaXRpZ2F0aW9uIFByaW9yaXR5JyxcbiAgICAgICAgdG9vbHRpcE1lc3NhZ2U6XG4gICAgICAgICAgJ1RoaXMgc2V0cyB0aGUgcHJpb3JpdHkgbGV2ZWwgZm9yIHRoZSBtaXRpZ2F0aW9uIG9mIGVhY2ggcmlzay4nLFxuICAgICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgICAgY29kZTogJ01JVElHQVRJT04nLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaW1hZ2VVcmw6IEFTU0VUUy5sYWJsZXMsXG4gICAgICAgIG5hbWU6ICdSaXNrIExhYmVsJyxcbiAgICAgICAgdG9vbHRpcFRpdGxlOiAnUmlzayBMYWJlbCcsXG4gICAgICAgIHRvb2x0aXBNZXNzYWdlOlxuICAgICAgICAgICdUaGlzIG9wdGlvbiBsZXRzIHlvdSBzcGVjaWZ5IGlmIHRoaXMgaXMgYSBuZXdseSBpZGVudGlmaWVkIHJpc2sgb3IgaXQgaXMgYSByYXBpZGx5IGNoYW5naW5nIHJpc2suJyxcbiAgICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAgIGNvZGU6ICdSSVNLX0xBQkVMJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGltYWdlVXJsOiBBU1NFVFMubGlua19pdGVtcyxcbiAgICAgICAgbmFtZTogJ0xJTksgR1JDIE9CSkVDVChTKScsXG4gICAgICAgIHRvb2x0aXBUaXRsZTogJ0xJTksgT1RIRVIgR1JDIE9CSkVDVFMnLFxuICAgICAgICB0b29sdGlwTWVzc2FnZTogYFRoaXMgb3B0aW9uIGxldHMgeW91IGxpbmsgYSByaXNrIHdpdGggcmVsYXRlZCBHUkMgT2JqZWN0cy5gLFxuICAgICAgICBkaXNhYmxlZE1lc3NhZ2U6IGBZb3UgY2FuIGxpbmsgYSBHUkMgT2JqZWN0IHdpdGggdGhpcyByaXNrIG9ubHkgYWZ0ZXIgeW91IGhhdmUgc2VsZWN0ZWQgYSBSZXNwb25zaWJpbGl0eSBDZW50ZXIuYCxcbiAgICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAgIGlzRGlzYWJsZWQ6IHRydWUsXG4gICAgICAgIGNvZGU6ICdHUkNfT0JKRUNUUycsXG4gICAgICB9LFxuICAgIF0sXG4gICAgQ0FQOiBbXG4gICAgICB7XG4gICAgICAgIGltYWdlVXJsOiBBU1NFVFMucmVzcG9uc2liaWxpdHlfY2VudGVyLFxuICAgICAgICBuYW1lOiAnUmVzcG9uc2liaWxpdHkgQ2VudGVyJyxcbiAgICAgICAgdG9vbHRpcFRpdGxlOiAnUmVzcG9uc2liaWxpdHkgQ2VudGVyJyxcbiAgICAgICAgdG9vbHRpcE1lc3NhZ2U6IGBSZXNwb25zaWJpbGl0eSBDZW50ZXJzIHJlcHJlc2VudCB5b3VyIG9yZ2FuaXphdGlvbmFsIGFuZFxuICAgICAgICAgb3BlcmF0aW9uYWwgaW5mcmFzdHJ1Y3R1cmUuIFlvdSBjYW4gYXR0cmlidXRlIGEgcG9saWN5IHRvIG9uZSBvciBtb3JlIFJlc3BvbnNpYmlsaXR5IENlbnRlcnMuXG4gICAgICAgICAgV2hlcmUgeW91IGF0dHJpYnV0ZSBhIHBvbGljeSB0byBhIFJlc3BvbnNpYmlsaXR5IENlbnRlciwgdGhhdCBwb2xpY3kgd2lsbCBiZSBzaG93biBhcyBhIHBvbGljeVxuICAgICAgICAgICB0aGF0IGlzIHJlcXVpcmVkIHRvIGJlIGF0dGVzdGVkIGJ5IGFsbCB0aGUgcGVyc29ucyBhc3NvY2lhdGVkIHdpdGggdGhhdCBSZXNwb25zaWJpbGl0eSBDZW50ZXIuXG4gICAgICAgICAgICBUaGUgcGVyZm9ybWFuY2Ugb2YgYSBwb2xpY3kgYXNzaWduZWQgdG8gYSBSZXNwb25zaWJpbGl0eSBDZW50ZXIgd2lsbCBhbHNvIGNvbnRyaWJ1dGUgdG8gdGhlXG4gICAgICAgICAgICBvdmVyYWxsIHBlcmZvcm1hbmNlIG9mIHRoZSBSZXNwb25zaWJpbGl0eSBDZW50ZXIuYCxcbiAgICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAgIGNvZGU6ICdSRVNQT05TSUJJTElUWV9DRU5URVInLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaW1hZ2VVcmw6IEFTU0VUUy5hc3NvY2lhdGVkX3Jpc2tzLFxuICAgICAgICBuYW1lOiAnVkVSU0lPTicsXG4gICAgICAgIHRvb2x0aXBUaXRsZTogJ1ZlcnNpb24nLFxuICAgICAgICB0b29sdGlwTWVzc2FnZTogYFRoaXMgb3B0aW9uIGxldHMgeW91IHNwZWNpZnkgdGhlIG9mZmxpbmUgdmVyc2lvbiBudW1iZXIgZm9yIGEgcG9saWN5LiBIZW5jZSwgeW91IGNhbiBpbnB1dCB0aGUgdmVyc2lvbiBudW1iZXIgb2YgdGhlIGRpZ2l0YWwgb3IgcGh5c2ljYWwgY29weSBvZiB0aGUgcG9saWN5IGRvY3VtZW50IGZvciByZWNvcmQta2VlcGluZyBwdXJwb3Nlcy5gLFxuICAgICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgICAgY29kZTogJ1ZFUlNJT04nLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaW1hZ2VVcmw6IEFTU0VUUy5yZXZpZXdlcixcbiAgICAgICAgbmFtZTogJ1Jldmlld2VyJyxcbiAgICAgICAgdG9vbHRpcFRpdGxlOiAnUmV2aWV3ZXInLFxuICAgICAgICB0b29sdGlwTWVzc2FnZTogYFRoaXMgb3B0aW9ucyBsZXRzIHlvdSBzcGVjaWZ5IGEgcmV2aWV3IGxpZmVjeWNsZSBmb3IgdGhlIHBvbGljeSBkb2N1bWVudC5cbiAgICAgICAgIFlvdSBjYW4gc2VsZWN0IGEgcmV2aWV3ZXIgYW5kIGRldGVybWluZSBob3cgb2Z0ZW4gdGhlIHBvbGljeSBuZWVkcyB0byBiZSByZXZpZXdlZC5gLFxuICAgICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICAgICAgaGlkZGVuOiB0cnVlLFxuICAgICAgICBjb2RlOiAnUkVWSUVXRVInLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaW1hZ2VVcmw6IEFTU0VUUy5jaGVja3BvaW50cyxcbiAgICAgICAgbmFtZTogJ0NoZWNrcG9pbnRzJyxcbiAgICAgICAgdG9vbHRpcFRpdGxlOiAnQ2hlY2twb2ludHMnLFxuICAgICAgICB0b29sdGlwTWVzc2FnZTogYENoZWNrcG9pbnRzIGVuYWJsZSB5b3UgdG8gY29uZmlybSBhIHBlcnNvbuKAmXMgdW5kZXJzdGFuZGluZyBvZiB0aGUgcG9saWN5IGRvY3VtZW50LlxuICAgICAgICAgWW91IGNhbiBjcmVhdGUgcXVlc3Rpb25zIGJhc2VkIG9uIHRoZSBwb2xpY3kgY29udGVudCBhbmQgcmVxdWlyZSB0aGF0IHRoZSByZWFkZXIgb2YgdGhlIHBvbGljeVxuICAgICAgICAgYW5zd2VycyB0aGVzZSBxdWVzdGlvbnMgY29ycmVjdGx5IGJlZm9yZSBwcm9jZWVkaW5nIHRvIGNvbXBsZXRlIHRoZSBhdHRlc3RhdGlvbi5cbiAgICAgICAgYCxcbiAgICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgICAgIGhpZGRlbjogdHJ1ZSxcbiAgICAgICAgY29kZTogJ0NIRUNLUE9JTlRTJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGltYWdlVXJsOiBBU1NFVFMub3ZlcnNpZ2h0LFxuICAgICAgICBuYW1lOiAnT3ZlcnNpZ2h0JyxcbiAgICAgICAgdG9vbHRpcFRpdGxlOiAnT3ZlcnNpZ2h0JyxcbiAgICAgICAgdG9vbHRpcE1lc3NhZ2U6IGBPdmVyc2lnaHRzIGFyZSBwZXJzb25zIHdobyBvdmVyc2VlIHRoZSBwb2xpY3kuXG4gICAgICAgICBUaGVzZSBwZXJzb25zIHdpbGwgcmVjZWl2ZSBlbWFpbCBub3RpZmljYXRpb25zIGFib3V0IHRoZSBwZXJmb3JtYW5jZSBvZiB0aGUgcG9saWN5LlxuICAgICAgICAgQXMgdGhlIHBlcnNvbiBjcmVhdGluZyB0aGUgcG9saWN5LCB5b3Ugd2lsbCBhdXRvbWF0aWNhbGx5IHJlY2VpdmUgZW1haWwgbm90aWZpY2F0aW9ucyBhYm91dCB0aGUgcGVyZm9ybWFuY2Ugb2YgdGhlIHBvbGljeS5cbiAgICAgICAgYCxcbiAgICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAgIGNvZGU6ICdPVkVSU0VFUicsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpbWFnZVVybDogQVNTRVRTLmZvcm1hdF9ldmlkZW5jZSxcbiAgICAgICAgbmFtZTogJ1JlbGF0ZWQgRG9jdW1lbnRzJyxcbiAgICAgICAgdG9vbHRpcFRpdGxlOiAnUmVsYXRlZCBEb2N1bWVudHMnLFxuICAgICAgICB0b29sdGlwTWVzc2FnZTogYFJlbGF0ZWQgZG9jdW1lbnRzIGFyZSBmaWxlcyB0aGF0IG1pZ2h0IGJlIHJlbGF0ZWQgdG8gdGhlIHBvbGljeS4gVGhlc2UgY291bGQgYmUgZG9jdW1lbnRzIHdoaWNoIGFyZSByZWxhdGVkXG4gICAgICAgICB0byB0aGUgcG9saWN5IG9yIGFyZSBhIHN1YnNldCBvZiB0aGUgcG9saWN5IHRoYXQgaXMgYmVpbmcgY3JlYXRlZC5gLFxuICAgICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgICAgY29kZTogJ1JFTEFURURfRE9DVU1FTlRTJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGltYWdlVXJsOiBBU1NFVFMubGlua19pdGVtcyxcbiAgICAgICAgbmFtZTogJ0xJTksgUFJPR1JBTVMgJiBSRVNQT05TSUJJTElUSUVTJyxcbiAgICAgICAgdG9vbHRpcFRpdGxlOiAnTElOSyBQUk9HUkFNUyAmIFJFU1BPTlNJQklMSVRJRVMnLFxuICAgICAgICB0b29sdGlwTWVzc2FnZTogYFRoaXMgb3B0aW9uIGFsbG93cyB5b3UgdG8gYXNzb2NpYXRlIFByb2dyYW1zICYgcmVzcG9uc2liaWxpdGllcyBmcm9tIHRoZSBDb21wbGlhbmNlIG1vZHVsZSB3aXRoIGEgcG9saWN5LiBUaGVzZSBjb3VsZCBiZSBwcm9jZXNzZXMgb3IgcHJvY2VkdXJlcyB0aGF0IG1pZ2h0IGJlIGxpbmtlZCB0byBhIHBvbGljeS5gLFxuICAgICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgICAgY29kZTogJ0xJTktfUFJPR1JBTV9SRVNQT05TSUJJTElUSUVTJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGltYWdlVXJsOiBBU1NFVFMuYXNzZXNzbWVudHMsXG4gICAgICAgIG5hbWU6ICdMSU5LIEFOIEFTU0VTU01FTlQnLFxuICAgICAgICB0b29sdGlwVGl0bGU6ICdMSU5LIEFOIEFTU0VTU01FTlQnLFxuICAgICAgICB0b29sdGlwTWVzc2FnZTogYEFzc2Vzc21lbnRzIGFsbG93IHlvdSB0byBhc3NvY2lhdGUgb3V0Y29tZSBiYXNlZCBxdWVzdGlvbm5haXJlcyBvciBjaGVja2xpc3QgYmFzZWQgcHJvY2VkdXJlcyB3aXRoIGEgcG9saWN5LmAsXG4gICAgICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgICAgICBoaWRkZW46IGZhbHNlLFxuICAgICAgICBjb2RlOiAnTElOS19BU1NFU1NNRU5UUycsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpbWFnZVVybDogQVNTRVRTLmxpbmtfaXRlbXMsXG4gICAgICAgIG5hbWU6ICdMSU5LIFJFTEFURUQgUE9MSUNJRVMnLFxuICAgICAgICB0b29sdGlwVGl0bGU6ICdMSU5LIFJFTEFURUQgUE9MSUNJRVMnLFxuICAgICAgICB0b29sdGlwTWVzc2FnZTogYFRoaXMgb3B0aW9ucyBsZXRzIHlvdSBhc3NvY2lhdGUgcmVsYXRlZCBwb2xpY2llcyBmb3IgcXVpY2sgcmVmZXJlbmNlLCBlbmFibGluZyB1c2VycyB0byB2aWV3IHJlbGV2YW50IGRvY3VtZW50cyBpbiBvbmUgcGxhY2UgYW5kIGVuc3VyaW5nIHBvbGljeSBhbGlnbm1lbnQuYCxcbiAgICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAgIGNvZGU6ICdMSU5LX1JFTEFURURfUE9MSUNJRVMnLFxuICAgICAgfSxcbiAgICBdLFxuICAgIENBUjogW1xuICAgICAge1xuICAgICAgICBpbWFnZVVybDogQVNTRVRTLm9iamVjdGl2ZXMsXG4gICAgICAgIG5hbWU6ICdPYmplY3RpdmUnLFxuICAgICAgICBjb2RlOiAnT0JKRUNUSVZFJyxcbiAgICAgICAgdG9vbHRpcFRpdGxlOiAnT2JqZWN0aXZlJyxcbiAgICAgICAgdG9vbHRpcE1lc3NhZ2U6XG4gICAgICAgICAgJ1RoZSBvYmplY3RpdmUgYWxsb3dzIHlvdSB0byBzcGVjaWZ5IGFuIG9iamVjdGl2ZSBmb3IgdGhlIHJlc3BvbnNpYmlsaXR5LicsXG4gICAgICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgICAgICBoaWRkZW46IGZhbHNlLFxuICAgICAgfSxcblxuICAgICAge1xuICAgICAgICBpbWFnZVVybDogQVNTRVRTLnJlc3BvbnNpYmlsaXR5X2NlbnRlcixcbiAgICAgICAgbmFtZTogJ1Jlc3BvbnNpYmlsaXR5IENlbnRlcicsXG4gICAgICAgIGNvZGU6ICdSQycsXG4gICAgICAgIHRvb2x0aXBUaXRsZTogJ1Jlc3BvbnNpYmlsaXR5IENlbnRlcicsXG4gICAgICAgIHRvb2x0aXBNZXNzYWdlOiBgUmVzcG9uc2liaWxpdHkgQ2VudGVycyByZXByZXNlbnQgeW91ciBvcmdhbml6YXRpb25hbCBhbmQgb3BlcmF0aW9uYWwgaW5mcmFzdHJ1Y3R1cmUuPGJyPlxuICAgICAgICAgIFlvdSBjYW4gYXNzaWduIGEgcmVzcG9uc2liaWxpdHkgdG8gb25lIG9yIG1vcmUgUmVzcG9uc2liaWxpdHkgQ2VudGVycy4gV2hlcmUgeW91IGFzc2lnbiBhIHJlc3BvbnNpYmlsaXR5IHRvIGEgUmVzcG9uc2liaWxpdHkgQ2VudGVyLFxuICAgICAgICAgIHRoYXQgcmVzcG9uc2liaWxpdHkgd2lsbCBiZSBzaG93biBhcyBhIHJlc3BvbnNpYmlsaXR5IHRoYXQgaXMgcmVxdWlyZWQgdG8gYmUgY29tcGxldGVkIGJ5IHRoZSBSZXNwb25zaWJpbGl0eSBDZW50ZXIuXG4gICAgICAgICAgVGhlIHBlcmZvcm1hbmNlIG9mIGEgcmVzcG9uc2liaWxpdHkgYXNzaWduZWQgdG8gYSBSZXNwb25zaWJpbGl0eSBDZW50ZXIgd2lsbCBhbHNvIGNvbnRyaWJ1dGUgdG8gdGhlIG92ZXJhbGwgcGVyZm9ybWFuY2Ugb2YgdGhlIFJlc3BvbnNpYmlsaXR5IENlbnRlci5gLFxuICAgICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGltYWdlVXJsOiBBU1NFVFMuY2FzZV9jYXRlZ29yeSxcbiAgICAgICAgbmFtZTogJ1Byb2dyYW0nLFxuICAgICAgICBjb2RlOiAnUFJPR1JBTScsXG4gICAgICAgIHRvb2x0aXBUaXRsZTogJ1Byb2dyYW0nLFxuICAgICAgICB0b29sdGlwTWVzc2FnZTogYFByb2dyYW1zIGVuYWJsZSB5b3UgdG8gZ3JvdXAgc2ltaWxhciByZXNwb25zaWJpbGl0aWVzIHRvZ2V0aGVyLlxuICAgICAgICAgIEFsbG9jYXRpbmcgYSByZXNwb25zaWJpbGl0eSB0byBhIFByb2dyYW0gYWxsb3dzIHlvdSB0byB2aWV3IGEgZ3JvdXAgb3Igc2ltaWxhciByZXNwb25zaWJpbGl0aWVzIGF0IG9uY2UuXG4gICAgICAgICAgSXQgYWxzbyBhbGxvd3MgeW91IHRvIHZpZXcgdGhlIHBlcmZvcm1hbmNlIG9mIHRob3NlIGNvbGxlY3RpdmUgcmVzcG9uc2liaWxpdGllcy5gLFxuICAgICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGltYWdlVXJsOiBBU1NFVFMuZm9ybWF0X2V2aWRlbmNlLFxuICAgICAgICBuYW1lOiAnRm9ybWF0ICYgRXZpZGVuY2UnLFxuICAgICAgICBjb2RlOiAnRk9STUFURV9FVklERU5DRScsXG4gICAgICAgIHRvb2x0aXBUaXRsZTogJyBGb3JtYXQgJiBFdmlkZW5jZScsXG4gICAgICAgIHRvb2x0aXBNZXNzYWdlOlxuICAgICAgICAgICdZb3UgY2FuIHVwbG9hZCBhIGZvcm1hdCBmb3IgdGhpcyByZXNwb25zaWJpbGl0eSBhbmQgeW91IGNhbiBhbHNvIHJlcXVpcmUgZXZpZGVuY2Ugb2YgY29tcGxldGlvbiBvZiB0aGUgcmVzcG9uc2liaWxpdHkgdG8gYmUgcHJvdmlkZWQuJyxcbiAgICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpbWFnZVVybDogQVNTRVRTLmFzc2Vzc21lbnRzLFxuICAgICAgICBuYW1lOiAnQXNzZXNzbWVudHMnLFxuICAgICAgICBjb2RlOiAnQVNTRVNTTUVOVCcsXG4gICAgICAgIHRvb2x0aXBUaXRsZTogJyBBc3Nlc3NtZW50cycsXG4gICAgICAgIHRvb2x0aXBNZXNzYWdlOlxuICAgICAgICAgICdBc3Nlc3NtZW50cyBhbGxvdyB5b3UgdG8gYXNzb2NpYXRlIG91dGNvbWUgYmFzZWQtcXVlc3Rpb25uYWlyZXMgb3Igc2VsZi1hc3Nlc3NtZW50IHF1ZXN0aW9ubmFpcmVzIHdpdGggYSByZXNwb25zaWJpbGl0eS4gVGhlc2UgbmVlZCB0byBiZSBjb21wbGV0ZWQgYnkgdGhlIGFzc2lnbmVlIGFzIGEgcGFydCBvZiBjb21wbGV0aW5nIHRoZSByZXNwb25zaWJpbGl0eS4nLFxuICAgICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgICAgaXNEaXNhYmxlZDogZmFsc2UsXG4gICAgICAgIGRpc2FibGVkTWVzc2FnZTpcbiAgICAgICAgICAnQW4gYXNzZXNzbWVudCBjYW4gYmUgbGlua2VkIHdpdGggYSByZXNwb25zaWJpbGl0eSBvbmx5IGFmdGVyIHJlbW92aW5nIHRoZSBhc3NvY2lhdGVkIGNoZWNrcG9pbnRzLicsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpbWFnZVVybDogQVNTRVRTLmNoZWNrcG9pbnRzLFxuICAgICAgICAvLyAgbmFtZTogJ0NoZWNrcG9pbnRzIDxzcGFuICpuZ0lmPVwiZmFsc2VcIiBjbGFzcz1cImNoZWNrcG9pbnQtdmVyc2lvblwiPlYyLjA8L3NwYW4+IDxpIGNsYXNzPVwiaWNvbnMgZGVwcmVjaWF0aW9uLWljb24gdngtZnMtMTYgdngtbWwtMlwiIGFwcFRvb2x0aXA9XCJUaGlzIGlzIGFuIG91dC1vZi1kYXRlIHZlcnNpb24gb2YgdGhlIENoZWNrcG9pbnRzIGZlYXR1cmUuIFRvIGFkZCBjaGVja3BvaW50cyB0aGF0IGFyZSBvbmx5IHJlbGV2YW50IHRvIHRoaXMgcmVzcG9uc2liaWxpdHkgeW91IGNhbiB1c2UgdGhlIG5ldyBDaGVja3BvaW50cyBmZWF0dXJlLiBBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIHVzZSBhbiBleGlzdGluZyBxdWVzdGlvbm5haXJlIHRlbXBsYXRlIHVzaW5nIHRoZSBBc3Nlc3NtZW50cyBmZWF0dXJlLlwiIHBsYWNlbWVudD1cImJvdHRvbVwiIGRlbGF5PVwiMFwiIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIj4mI3hlOTMwOzwvaT4nLFxuICAgICAgICBuYW1lOiAnQ2hlY2twb2ludHMgPGkgY2xhc3M9XCJpY29ucyBkZXByZWNpYXRpb24taWNvbiB2eC1mcy0xNiB2eC1tbC0yXCIgYXBwVG9vbHRpcD1cIlRoaXMgaXMgYW4gb3V0LW9mLWRhdGUgdmVyc2lvbiBvZiB0aGUgQ2hlY2twb2ludHMgZmVhdHVyZS4gVG8gYWRkIGNoZWNrcG9pbnRzIHRoYXQgYXJlIG9ubHkgcmVsZXZhbnQgdG8gdGhpcyByZXNwb25zaWJpbGl0eSB5b3UgY2FuIHVzZSB0aGUgbmV3IENoZWNrcG9pbnRzIGZlYXR1cmUuIEFsdGVybmF0aXZlbHksIHlvdSBjYW4gdXNlIGFuIGV4aXN0aW5nIHF1ZXN0aW9ubmFpcmUgdGVtcGxhdGUgdXNpbmcgdGhlIEFzc2Vzc21lbnRzIGZlYXR1cmUuXCIgcGxhY2VtZW50PVwiYm90dG9tXCIgZGVsYXk9XCIwXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiPiYjeGU5MzA7PC9pPicsXG4gICAgICAgIGNvZGU6ICdDSEVDS1BPSU5UUycsXG4gICAgICAgIHRvb2x0aXBUaXRsZTogJ0NoZWNrcG9pbnRzJyxcbiAgICAgICAgdG9vbHRpcE1lc3NhZ2U6XG4gICAgICAgICAgJ1RoaXMgaXMgYW4gb3V0LW9mLWRhdGUgdmVyc2lvbiBvZiB0aGUgQ2hlY2twb2ludHMgZmVhdHVyZS4gVG8gYWRkIGNoZWNrcG9pbnRzIHRoYXQgYXJlIG9ubHkgcmVsZXZhbnQgdG8gdGhpcyByZXNwb25zaWJpbGl0eSB5b3UgY2FuIHVzZSB0aGUgbmV3IENoZWNrcG9pbnRzIGZlYXR1cmUuIEFsdGVybmF0aXZlbHksIHlvdSBjYW4gdXNlIGFuIGV4aXN0aW5nIHF1ZXN0aW9ubmFpcmUgdGVtcGxhdGUgdXNpbmcgdGhlIEFzc2Vzc21lbnRzIGZlYXR1cmUuJyxcbiAgICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAgIGlzRGlzYWJsZWQ6IGZhbHNlLFxuICAgICAgICBkaXNhYmxlZE1lc3NhZ2U6XG4gICAgICAgICAgJ1RoZSBjaGVja3BvaW50cyBmZWF0dXJlIGlzIHJlcGxhY2VkIHdpdGggdGhlIG5ldyAmIGVuaGFuY2VkIGFzc2Vzc21lbnQgZnVuY3Rpb25hbGl0eS4gU2VsZWN0IHRoZSA8c3Ryb25nPkFzc2Vzc21lbnRzPC9zdHJvbmc+IG9wdGlvbiBiZWxvdyB0byBjcmVhdGUgaW50ZXJhY3RpdmUgb3V0Y29tZS1iYXNlZCBvciBzZWxmLWFzc2Vzc21lbnQgcXVlc3Rpb25uYWlyZXMuJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGltYWdlVXJsOiBBU1NFVFMuY2hlY2twb2ludHMsXG4gICAgICAgIG5hbWU6ICdDaGVja3BvaW50cycsXG4gICAgICAgIGNvZGU6ICdDSEVDS1BPSU5UU19ORVcnLFxuICAgICAgICB0b29sdGlwVGl0bGU6ICdDaGVja3BvaW50cycsXG4gICAgICAgIHRvb2x0aXBNZXNzYWdlOlxuICAgICAgICAgICdDaGVja3BvaW50cyBhbGxvdyB5b3UgdG8gc3BlY2lmeSBtdWx0aXBsZSBzdGVwcyBmb3IgYSBzcGVjaWZpYyByZXNwb25zaWJpbGl0eSB3aGljaCBuZWVkIHRvIGJlIGNvbXBsZXRlZCBhcyBwYXJ0IG9mIGNvbXBsZXRpbmcgdGhlIHJlc3BvbnNpYmlsaXR5LiBPZnRlbiBjaGVja3BvaW50cyBhcmUgdXNlZCB0byByZXBsYWNlIGluc3RydWN0aW9uIG1hbnVhbHMuJyxcbiAgICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAgIGlzRGlzYWJsZWQ6IGZhbHNlLFxuICAgICAgICBkaXNhYmxlZE1lc3NhZ2U6XG4gICAgICAgICAgJ05ldyBDaGVja3BvaW50cyBjYW4gYmUgbGlua2VkIHdpdGggYSByZXNwb25zaWJpbGl0eSBvbmx5IGFmdGVyIHJlbW92aW5nIHRoZSBvdXQtb2YtZGF0ZSB2ZXJzaW9uIG9mIHRoZSBDaGVja3BvaW50cy4nLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaW1hZ2VVcmw6IEFTU0VUUy5yaXNrcyxcbiAgICAgICAgbmFtZTogJ1Jpc2sgQ2xhc3NpZmljYXRpb24nLFxuICAgICAgICB0b29sdGlwVGl0bGU6ICdSaXNrIENsYXNzaWZpY2F0aW9uJyxcbiAgICAgICAgdG9vbHRpcE1lc3NhZ2U6XG4gICAgICAgICAgJ1lvdSBjYW4gc3BlY2lmeSB0aGUgbGV2ZWwgb2YgcmlzayB0aGF0IHRoZSBvcmdhbml6YXRpb24gd2lsbCBiZSBleHBvc2VkIHRvIGlmIHRoZSByZXNwb25zaWJpbGl0eSBpcyBub3QgY29tcGxldGVkLicsXG4gICAgICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgICAgICBoaWRkZW46IGZhbHNlLFxuICAgICAgICBjb2RlOiAnUklTS19DTEFTU0lGSUNBVElPTicsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpbWFnZVVybDogQVNTRVRTLnJldmlld2VyLFxuICAgICAgICBuYW1lOiAnUmV2aWV3ZXInLFxuICAgICAgICB0b29sdGlwVGl0bGU6ICdSZXZpZXdlcicsXG4gICAgICAgIHRvb2x0aXBNZXNzYWdlOlxuICAgICAgICAgICdBIFJldmlld2VyIGlzIGEgcGVyc29uIHRoYXQgaXMgdGFza2VkIHdpdGggcmV2aWV3aW5nIHRoZSBjb21wbGV0ZWQgcmVzcG9uc2liaWxpdHkuJyxcbiAgICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAgIGNvZGU6ICdSRVZJRVdFUicsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpbWFnZVVybDogQVNTRVRTLm92ZXJzaWdodCxcbiAgICAgICAgbmFtZTogJ092ZXJzaWdodCcsXG4gICAgICAgIHRvb2x0aXBUaXRsZTogJ092ZXJzaWdodCcsXG4gICAgICAgIHRvb2x0aXBNZXNzYWdlOiBgT3ZlcnNpZ2h0IGVuYWJsZXMgeW91IHRvIGRlc2lnbmF0ZSBwZXJzb25zIHRvIG92ZXJzZWUgdGhlIHJlc3BvbnNpYmlsaXR5LlxuICAgICAgICAgIFRoZXNlIHBlcnNvbnMgd2lsbCByZWNlaXZlIGVtYWlsIG5vdGlmaWNhdGlvbnMgYWJvdXQgdGhlIHBlcmZvcm1hbmNlIG9mIHRoZSByZXNwb25zaWJpbGl0eS48YnI+XG4gICAgICAgICAgQXMgdGhlIHBlcnNvbiBjcmVhdGluZyB0aGUgcmVzcG9uc2liaWxpdHksIHlvdSB3aWxsIGF1dG9tYXRpY2FsbHkgcmVjZWl2ZSBlbWFpbCBub3RpZmljYXRpb25zIGFib3V0IHRoZSBwZXJmb3JtYW5jZSBvZiB0aGUgcmVzcG9uc2liaWxpdHkuYCxcbiAgICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAgIGNvZGU6ICdPVkVSU0VFUicsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpbWFnZVVybDogQVNTRVRTLmF1ZGl0LFxuICAgICAgICBuYW1lOiAnQVNTVVJBTkNFJyxcbiAgICAgICAgdG9vbHRpcFRpdGxlOiAnQVNTVVJBTkNFJyxcbiAgICAgICAgdG9vbHRpcE1lc3NhZ2U6XG4gICAgICAgICAgJ1NlbGVjdCB0aGUgdGVzdCBwbGFuIGNhdGVnb3JpZXMgdGhhdCB5b3Ugd291bGQgbGlrZSB0byBhZGQgdGhpcyByZXNwb25zaWJpbGl0eSB0by4nLFxuICAgICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgICAgY29kZTogJ0FTU1VSQU5DRScsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpbWFnZVVybDogQVNTRVRTLmF1ZGl0LFxuICAgICAgICBuYW1lOiAnUkVRVUlSRVMgQVVESVQ/JyxcbiAgICAgICAgdG9vbHRpcFRpdGxlOiAnUkVRVUlSRVMgQVVESVQ/JyxcbiAgICAgICAgdG9vbHRpcE1lc3NhZ2U6XG4gICAgICAgICAgJ1NlbGVjdCB0aGUgYXVkaXQgY2F0ZWdvcmllcyB0aGF0IHlvdSB3b3VsZCBsaWtlIHRvIGFkZCB0aGlzIHJlc3BvbnNpYmlsaXR5IHRvLicsXG4gICAgICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgICAgICBoaWRkZW46IGZhbHNlLFxuICAgICAgICBjb2RlOiAnUkVRVUlSRVNfQVVESVQnLFxuICAgICAgICBpc0Rpc2FibGVkOiB0cnVlLFxuICAgICAgICBkaXNhYmxlZE1lc3NhZ2U6XG4gICAgICAgICAgJ1RoaXMgcmVzcG9uc2liaWxpdHkgY2FuIGJlIHNjaGVkdWxlZCBmb3IgYW4gYXVkaXQgb25seSBhZnRlciB0aGUgUmVzcG9uc2liaWxpdHkgQ2VudGVyIGlzIHNlbGVjdGVkLicsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpbWFnZVVybDogQVNTRVRTLmxpbmtfaXRlbXMsXG4gICAgICAgIG5hbWU6ICdMSU5LIEdSQyBPQkpFQ1QoUyknLFxuICAgICAgICB0b29sdGlwVGl0bGU6ICdMSU5LIE9USEVSIEdSQyBPQkpFQ1RTJyxcbiAgICAgICAgdG9vbHRpcE1lc3NhZ2U6IGBUaGlzIG9wdGlvbiBsZXRzIHlvdSBsaW5rIGEgcmVzcG9uc2liaWxpdHkgd2l0aCByZWxhdGVkIEdSQyBPYmplY3RzLmAsXG4gICAgICAgIGRpc2FibGVkTWVzc2FnZTogYFlvdSBjYW4gbGluayBhIEdSQyBPYmplY3Qgd2l0aCB0aGlzIHJlc3BvbnNpYmlsaXR5IG9ubHkgYWZ0ZXIgeW91IGhhdmUgc2VsZWN0ZWQgYSBSZXNwb25zaWJpbGl0eSBDZW50ZXIuYCxcbiAgICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAgIGlzRGlzYWJsZWQ6IHRydWUsXG4gICAgICAgIGNvZGU6ICdHUkNfT0JKRUNUUycsXG4gICAgICB9LFxuICAgIF0sXG4gICAgQ0FTOiBbXG4gICAgICB7XG4gICAgICAgIGltYWdlVXJsOiBBU1NFVFMucmVzcG9uc2liaWxpdHlfY2VudGVyLFxuICAgICAgICBuYW1lOiAnUmVzcG9uc2liaWxpdHkgQ2VudGVyJyxcbiAgICAgICAgdG9vbHRpcFRpdGxlOiAnJyxcbiAgICAgICAgdG9vbHRpcE1lc3NhZ2U6ICcnLFxuICAgICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGltYWdlVXJsOiBBU1NFVFMuZm9ybWF0X2V2aWRlbmNlLFxuICAgICAgICBuYW1lOiAnRm9ybWF0ICZhbXA7IEV2aWRlbmNlJyxcbiAgICAgICAgdG9vbHRpcFRpdGxlOiAnJyxcbiAgICAgICAgdG9vbHRpcE1lc3NhZ2U6ICcnLFxuICAgICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGltYWdlVXJsOiBBU1NFVFMub3ZlcnNpZ2h0LFxuICAgICAgICBuYW1lOiAnT3ZlcnNpZ2h0JyxcbiAgICAgICAgdG9vbHRpcFRpdGxlOiAnJyxcbiAgICAgICAgdG9vbHRpcE1lc3NhZ2U6ICcnLFxuICAgICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgXSxcblxuICAgIExBSTogW1xuICAgICAge1xuICAgICAgICBpbWFnZVVybDogQVNTRVRTLmV4Y2VwdGlvbl90eXBlLFxuICAgICAgICBuYW1lOiAnRXhjZXB0aW9uIFR5cGUnLFxuICAgICAgICB0b29sdGlwVGl0bGU6ICdFeGNlcHRpb24gVHlwZScsXG4gICAgICAgIHRvb2x0aXBNZXNzYWdlOlxuICAgICAgICAgICdFeGNlcHRpb24gdHlwZSBsZXRzIHlvdSBzcGVjaWZ5IHdoZXRoZXIgdGhlcmUgaXMgYSBkZXNpZ24gb3IgYW4gb3BlcmF0aW9uYWwgZWZmZWN0aXZlbmVzcyBwcm9ibGVtLicsXG4gICAgICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgICAgICBoaWRkZW46IGZhbHNlLFxuICAgICAgICBjb2RlOiAnRVhDRVBUSU9OX1RZUEUnLFxuICAgICAgfSxcbiAgICAgIC8vIHtcbiAgICAgIC8vICAgaW1hZ2VVcmw6ICdodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL3dvcmtmbG93LWVuZ2luZS9hc3NldHMvd29ya2Zsb3cvaXNzdWUtdHlwZS5zdmcnLFxuICAgICAgLy8gICBuYW1lOiAnSXNzdWUgdHlwZScsXG4gICAgICAvLyAgIHRvb2x0aXBUaXRsZTogJycsXG4gICAgICAvLyAgIHRvb2x0aXBNZXNzYWdlOiAnJyxcbiAgICAgIC8vICAgY2hlY2tlZDogZmFsc2UsXG4gICAgICAvLyAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAvLyAgIGNvZGU6ICdJU1NVRV9UWVBFJ1xuICAgICAgLy8gfSxcbiAgICAgIHtcbiAgICAgICAgaW1hZ2VVcmw6IEFTU0VUUy5wcmlvcml0eSxcbiAgICAgICAgbmFtZTogJ1ByaW9yaXR5JyxcbiAgICAgICAgdG9vbHRpcFRpdGxlOiAnUHJpb3JpdHknLFxuICAgICAgICB0b29sdGlwTWVzc2FnZTpcbiAgICAgICAgICAnVGhpcyBzZXRzIHRoZSBwcmlvcml0eSBsZXZlbCBmb3IgcmVzb2x2aW5nIGVhY2ggaXNzdWUuJyxcbiAgICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAgIGNvZGU6ICdQUklPUklUWScsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpbWFnZVVybDogQVNTRVRTLmFzc29jaWF0ZWRfcmlza3MsXG4gICAgICAgIG5hbWU6ICdBc3NvY2lhdGVkIFJpc2tzJyxcbiAgICAgICAgdG9vbHRpcFRpdGxlOiAnQXNzb2NpYXRlZCBSaXNrcycsXG4gICAgICAgIHRvb2x0aXBNZXNzYWdlOlxuICAgICAgICAgICdBc3NvY2lhdGVkIHJpc2tzIGxldHMgeW91IHNwZWNpZnkgdGhlIHJpc2tzIHRoYXQgYXJlIHJlbGF0ZWQgdG8gdGhpcyBpc3N1ZS4nLFxuICAgICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgICAgY29kZTogJ0FTU09DSUFURURfUklTS1MnLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaW1hZ2VVcmw6IEFTU0VUUy5vdmVyc2lnaHQsXG4gICAgICAgIG5hbWU6ICdPdmVyc2lnaHQnLFxuICAgICAgICB0b29sdGlwVGl0bGU6ICdPdmVyc2lnaHQnLFxuICAgICAgICB0b29sdGlwTWVzc2FnZTpcbiAgICAgICAgICAnT3ZlcnNpZ2h0cyBhcmUgdGhlIHBlcnNvbnMgcmVzcG9uc2libGUgZm9yIG92ZXJzZWVpbmcgYW4gaXNzdWUuIFRoZXNlIHBlcnNvbnMgd2lsbCByZWNlaXZlIGVtYWlsIG5vdGlmaWNhdGlvbnMgYWJvdXQgdGhlIGlzc3VlIHN0YXR1cy4gQXMgdGhlIHBlcnNvbiByZXBvcnRpbmcgdGhpcyBpc3N1ZSwgeW91IHdpbGwgYXV0b21hdGljYWxseSByZWNlaXZlIHN1Y2ggZW1haWwgbm90aWZpY2F0aW9ucy4nLFxuICAgICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgICAgY29kZTogJ09WRVJTSUdIVCcsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpbWFnZVVybDogQVNTRVRTLmZvcm1hdF9ldmlkZW5jZSxcbiAgICAgICAgbmFtZTogJ0V2aWRlbmNlJyxcbiAgICAgICAgdG9vbHRpcFRpdGxlOiAnRXZpZGVuY2UnLFxuICAgICAgICB0b29sdGlwTWVzc2FnZTpcbiAgICAgICAgICAnWW91IGNhbiByZXF1aXJlIHRoYXQgdGhlIHBlcnNvbiByZXNvbHZpbmcgdGhlIGlzc3VlIHVwbG9hZHMgZXZpZGVuY2UgdG8gY29uZmlybScsXG4gICAgICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgICAgICBoaWRkZW46IGZhbHNlLFxuICAgICAgICBjb2RlOiAnRVZJREVOQ0UnLFxuICAgICAgfSxcbiAgICBdLFxuICAgIENBUFI6IFtcbiAgICAgIHtcbiAgICAgICAgaW1hZ2VVcmw6IEFTU0VUUy5yb2xlcyxcbiAgICAgICAgbmFtZTogJ1JvbGUoUyknLFxuICAgICAgICB0b29sdGlwVGl0bGU6ICdSb2xlKHMpJyxcbiAgICAgICAgdG9vbHRpcE1lc3NhZ2U6IGBSb2xlKHMpIGxldCB5b3Ugc3BlY2lmeSB0aGUgdXNlcnMgdGhhdCBjYW4gYmUg4oCcT3duZXJz4oCdIG9mIGEgUHJvZ3JhbS5gLFxuICAgICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgICAgY29kZTogJ1JPTEVTJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGltYWdlVXJsOiBBU1NFVFMuY2FzZV9vd25lcnMsXG4gICAgICAgIG5hbWU6ICdPd25lcihzKScsXG4gICAgICAgIHRvb2x0aXBUaXRsZTogJ093bmVyKHMpJyxcbiAgICAgICAgdG9vbHRpcE1lc3NhZ2U6IGBPd25lcnMgYXJlIHJlc3BvbnNpYmxlIGZvciBtYW5hZ2luZyBhIFByb2dyYW0uIE9ubHkgT3duZXJzIGNhbiBtYWtlIGNoYW5nZXMgdG8gYSBQcm9ncmFtIGFuZCB0aGUgcmVzcG9uc2liaWxpdGllcyB0aGF0IGFyZSBsaW5rZWQgd2l0aCB0aGUgUHJvZ3JhbS48YnI+XG4gICAgICAgIFRoZSA8Yj5LZXkgQWRtaW48L2I+IGFuZCBhbGwgPGI+QWRtaW48L2I+IHVzZXJzIHdpbGwgYmUgc2VsZWN0ZWQgYXMgdGhlIE93bmVycyBvZiBhIFByb2dyYW0gYnkgZGVmYXVsdC5cbiAgICAgICAgYCxcbiAgICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAgIGNvZGU6ICdPV05FUlMnLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaW1hZ2VVcmw6IEFTU0VUUy5jb2xsYWJvcmF0b3IsXG4gICAgICAgIG5hbWU6ICdDb2xsYWJvcmF0b3JzJyxcbiAgICAgICAgdG9vbHRpcFRpdGxlOiAnQ29sbGFib3JhdG9ycycsXG4gICAgICAgIHRvb2x0aXBNZXNzYWdlOiBDT0xMQUJPUkFUT1JfVE9PTFRJUCxcbiAgICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAgIGNvZGU6ICdDT0xMQUJPUkFUT1InLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaW1hZ2VVcmw6IEFTU0VUUy5hcHByb3ZhbCxcbiAgICAgICAgbmFtZTogJ0FwcHJvdmVyJyxcbiAgICAgICAgdG9vbHRpcFRpdGxlOiAnQXBwcm92ZXInLFxuICAgICAgICB0b29sdGlwTWVzc2FnZTogYEFuIEFwcHJvdmVyIGlzIHJlc3BvbnNpYmxlIGZvciBhcHByb3ZpbmcgYSBQcm9ncmFtLiBXaGVyZSBhbiBBcHByb3ZlciBpcyBzZWxlY3RlZCwgdGhlIFByb2dyYW0gYW5kIGFsbCByZXNwb25zaWJpbGl0aWVzIGxpbmtlZCB3aXRoIHRoYXQgUHJvZ3JhbSB3aWxsIG9ubHkgY29tbWVuY2Ugb25jZSB0aGUgUHJvZ3JhbSBoYXMgYmVlbiBhcHByb3ZlZC5gLFxuICAgICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICAgICAgaGlkZGVuOiB0cnVlLFxuICAgICAgICBjb2RlOiAnQVBQUk9WRVInLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaW1hZ2VVcmw6IEFTU0VUUy5yZWN1cnJpbmcsXG4gICAgICAgIG5hbWU6ICdQcm9ncmFtIER1cmF0aW9uJyxcbiAgICAgICAgdG9vbHRpcFRpdGxlOiAnUHJvZ3JhbSBEdXJhdGlvbicsXG4gICAgICAgIHRvb2x0aXBNZXNzYWdlOlxuICAgICAgICAgICdQcm9ncmFtIER1cmF0aW9uIHJlZmVycyB0byB0aGUgZHVyYXRpb24gb2YgdGhlIFByb2dyYW0uIEEgUHJvZ3JhbSBjYW4gb2NjdXIgaW4gcGVycGV0dWl0eSwgb3IgaXQgY2FuIG9jY3VyIHVudGlsIHRoZSBlbmQgb2YgdGhlIGN1cnJlbnQgYnVzaW5lc3MgY3ljbGUgdGhhdCBoYXMgYmVlbiBzcGVjaWZpZWQgaW4gJyArXG4gICAgICAgICAgdGhpcy5idXNpbmVzc0N5Y2xlPy5zZWxlY3RlZEN5Y2xlPy5idXNpbmVzc19jeWNsZSArXG4gICAgICAgICAgJy4gIEFsbCByZXNwb25zaWJpbGl0aWVzIGxpbmtlZCB3aXRoIHRoYXQgUHJvZ3JhbSB3aWxsIGFsc28gaGF2ZSB0aGUgc2FtZSBQcm9ncmFtIER1cmF0aW9uLicsXG4gICAgICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgICAgICBoaWRkZW46IHRydWUsXG4gICAgICAgIGNvZGU6ICdQUk9HUkFNX0ZSRVFVRU5DWScsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpbWFnZVVybDogQVNTRVRTLmxvY2tfc2NvcGUsXG4gICAgICAgIG5hbWU6ICdMb2NrIHRoZSBQcm9ncmFtIFNjb3BlJyxcbiAgICAgICAgdG9vbHRpcFRpdGxlOiAnTG9jayB0aGUgUHJvZ3JhbSBTY29wZScsXG4gICAgICAgIHRvb2x0aXBNZXNzYWdlOiBgSWYgdGhlIFByb2dyYW0gU2NvcGUgaXMgbG9ja2VkLCBuZWl0aGVyIHRoZSBQcm9ncmFtIG5vciB0aGUgcmVzcG9uc2liaWxpdGllcyBsaW5rZWQgd2l0aCB0aGUgUHJvZ3JhbSBjYW4gYmUgZWRpdGVkIG9uY2UgdGhlIFByb2dyYW0gYmVnaW5zLiBJbiBvcmRlciB0byBlZGl0IHRoZSBQcm9ncmFtIG9yIHRoZSBsaW5rZWQgcmVzcG9uc2liaWxpdGllcywgdGhlIFByb2dyYW0gZGV0YWlscyB3aWxsIG5lZWQgdG8gYmUgZWRpdGVkLmAsXG4gICAgICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgICAgICBoaWRkZW46IHRydWUsXG4gICAgICAgIGNvZGU6ICdTQ09QRV9DSEFOR0VTJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGltYWdlVXJsOiBBU1NFVFMucmVzcG9uc2liaWxpdHlfY2VudGVyLFxuICAgICAgICBuYW1lOiAnUmVzcG9uc2liaWxpdHkgQ2VudGVyJyxcbiAgICAgICAgdG9vbHRpcFRpdGxlOiAnUmVzcG9uc2liaWxpdHkgQ2VudGVyJyxcbiAgICAgICAgdG9vbHRpcE1lc3NhZ2U6IGBSZXNwb25zaWJpbGl0eSBDZW50ZXJzIHJlcHJlc2VudCB5b3VyIG9yZ2FuaXphdGlvbmFsIGFuZCBvcGVyYXRpb25hbCBpbmZyYXN0cnVjdHVyZS4gV2hlcmUgUmVzcG9uc2liaWxpdHkgQ2VudGVycyBhcmUgc2VsZWN0ZWQgd2hlbiBjcmVhdGluZyBhIFByb2dyYW0sIG9ubHkgdGhvc2UgUmVzcG9uc2liaWxpdGllcyBDZW50ZXJzIHdpbGwgYmUgYXZhaWxhYmxlIGZvciBzZWxlY3Rpb24gd2hlbiBjcmVhdGluZyBhIHJlc3BvbnNpYmlsaXR5IGxpbmtlZCB3aXRoIHRoZSBQcm9ncmFtLmAsXG4gICAgICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgICAgICBoaWRkZW46IHRydWUsXG4gICAgICAgIGNvZGU6ICdSQycsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpbWFnZVVybDogQVNTRVRTLmNhc2VfYXNzaWduZWVzLFxuICAgICAgICBuYW1lOiAnQXNzaWduZWVzJyxcbiAgICAgICAgdG9vbHRpcFRpdGxlOiAnQXNzaWduZWVzJyxcbiAgICAgICAgdG9vbHRpcE1lc3NhZ2U6IGBBc3NpZ25lZXMgYXJlIHJlcXVpcmVkIHRvIGNvbXBsZXRlIHRoZSByZXNwb25zaWJpbGl0aWVzIHRoYXQgaGF2ZSBiZWVuIGFzc2lnbmVkIHRvIHRoZW0uIFdoZXJlIEFzc2lnbmVlcyBhcmUgc2VsZWN0ZWQgd2hlbiBjcmVhdGluZyBhIFByb2dyYW0sIG9ubHkgdGhvc2UgQXNzaWduZWVzIHdpbGwgYmUgYXZhaWxhYmxlIGZvciBzZWxlY3Rpb24gd2hlbiBjcmVhdGluZyBhIHJlc3BvbnNpYmlsaXR5IGxpbmtlZCB3aXRoIHRoZSBQcm9ncmFtLmAsXG4gICAgICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgICAgICBoaWRkZW46IHRydWUsXG4gICAgICAgIGNvZGU6ICdBU1NJR05FRVMnLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaW1hZ2VVcmw6IEFTU0VUUy5yZXZpZXdlcixcbiAgICAgICAgbmFtZTogJ1Jldmlld2VycycsXG4gICAgICAgIHRvb2x0aXBUaXRsZTogJ1Jldmlld2VycycsXG4gICAgICAgIHRvb2x0aXBNZXNzYWdlOiBgUmV2aWV3ZXJzIGFyZSByZXF1aXJlZCB0byByZXZpZXcgcmVzcG9uc2liaWxpdGllcyBhZnRlciB0aGV5IGhhdmUgYmVlbiBjb21wbGV0ZWQuIFdoZXJlIFJldmlld2VycyBhcmUgc2VsZWN0ZWQgd2hlbiBjcmVhdGluZyBhIFByb2dyYW0sIG9ubHkgdGhvc2UgUmV2aWV3ZXJzIHdpbGwgYmUgYXZhaWxhYmxlIGZvciBzZWxlY3Rpb24gd2hlbiBjcmVhdGluZyBhIHJlc3BvbnNpYmlsaXR5IGxpbmtlZCB3aXRoIHRoZSBQcm9ncmFtLmAsXG4gICAgICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgICAgICBoaWRkZW46IHRydWUsXG4gICAgICAgIGNvZGU6ICdSRVZJRVdFUicsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpbWFnZVVybDogQVNTRVRTLm92ZXJzaWdodCxcbiAgICAgICAgbmFtZTogJ092ZXJzaWdodHMnLFxuICAgICAgICB0b29sdGlwVGl0bGU6ICdPdmVyc2lnaHRzJyxcbiAgICAgICAgdG9vbHRpcE1lc3NhZ2U6XG4gICAgICAgICAgJ092ZXJzaWdodHMgcmVjZWl2ZSB1cGRhdGVzIHdoZW4gYSByZXNwb25zaWJpbGl0eSBpcyBjb21wbGV0ZWQsIGNvbXBsZXRlZCB3aXRoIGRlbGF5IG9yIG5vdCBjb21wbGV0ZWQuIFdoZXJlIE92ZXJzaWdodHMgYXJlIHNlbGVjdGVkIHdoZW4gY3JlYXRpbmcgYSBQcm9ncmFtLCBvbmx5IHRob3NlIE92ZXJzaWdodHMgd2lsbCBiZSBhdmFpbGFibGUgZm9yIHNlbGVjdGlvbiB3aGVuIGNyZWF0aW5nIGEgcmVzcG9uc2liaWxpdHkgbGlua2VkIHdpdGggdGhlIFByb2dyYW0uJyxcbiAgICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgICAgIGhpZGRlbjogdHJ1ZSxcbiAgICAgICAgY29kZTogJ09WRVJTRUVSJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGltYWdlVXJsOiBBU1NFVFMuYXNzZXNzbWVudHMsXG4gICAgICAgIG5hbWU6ICdBc3Nlc3NtZW50cycsXG4gICAgICAgIGNvZGU6ICdBU1NFU1NNRU5UJyxcbiAgICAgICAgdG9vbHRpcFRpdGxlOiAnIEFzc2Vzc21lbnRzJyxcbiAgICAgICAgdG9vbHRpcE1lc3NhZ2U6XG4gICAgICAgICAgJ0Fzc2Vzc21lbnRzIGFyZSBhIGRpZ2l0YWwgZm9ybSB0aGF0IGFyZSBjcmVhdGVkIGluIOKAnEFzc2Vzc21lbnTigJ0gd2l0aGluIHRoZSBDb21wbGlhbmNlIE1vZHVsZS4gV2hlcmUgQXNzZXNzbWVudHMgYXJlIHNlbGVjdGVkIHdoZW4gY3JlYXRpbmcgYSBQcm9ncmFtLCBvbmx5IHRob3NlIEFzc2Vzc21lbnRzIHdpbGwgYmUgYXZhaWxhYmxlIGZvciBzZWxlY3Rpb24gd2hlbiBjcmVhdGluZyBhIHJlc3BvbnNpYmlsaXR5IGxpbmtlZCB3aXRoIHRoZSBQcm9ncmFtLicsXG4gICAgICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgICAgICBoaWRkZW46IHRydWUsXG4gICAgICAgIGlzRGlzYWJsZWQ6IGZhbHNlLFxuICAgICAgICBkaXNhYmxlZE1lc3NhZ2U6XG4gICAgICAgICAgJ0FuIGFzc2Vzc21lbnQgY2FuIGJlIGxpbmtlZCB3aXRoIGEgcmVzcG9uc2liaWxpdHkgb25seSBhZnRlciByZW1vdmluZyB0aGUgYXNzb2NpYXRlZCBjaGVja3BvaW50cy4nLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaW1hZ2VVcmw6IEFTU0VUUy5mb3JtYXRfZXZpZGVuY2UsXG4gICAgICAgIG5hbWU6ICdFdmlkZW5jZScsXG4gICAgICAgIGNvZGU6ICdGT1JNQVRFX0VWSURFTkNFJyxcbiAgICAgICAgdG9vbHRpcFRpdGxlOiAnRXZpZGVuY2UnLFxuICAgICAgICB0b29sdGlwTWVzc2FnZTpcbiAgICAgICAgICAnSWYgc2VsZWN0ZWQsIGV2aWRlbmNlIG9mIGNvbXBsZXRpb24gb2YgYSByZXNwb25zaWJpbGl0eSB3aWxsIGJlIHJlcXVpcmVkIGZvciBhbGwgcmVzcG9uc2liaWxpdGllcyB0aGF0IGFyZSBsaW5rZWQgd2l0aCB0aGUgUHJvZ3JhbS4gQW4gQXNzaWdub3IsIGJlaW5nIHRoZSBwZXJzb24gd2hvIGNyZWF0ZXMgdGhlIHJlc3BvbnNpYmlsaXR5LCBjYW4gb3ZlcnJpZGUgdGhpcyBvcHRpb24gd2hlbiBjcmVhdGluZyBhIHJlc3BvbnNpYmlsaXR5LicsXG4gICAgICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgICAgICBoaWRkZW46IHRydWUsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpbWFnZVVybDogQVNTRVRTLmN1c3RvbV9maWVsZHMsXG4gICAgICAgIG5hbWU6ICdDdXN0b20gRmllbGQnLFxuICAgICAgICBjb2RlOiAnQ1VTVE9NX0ZJRUxEUycsXG4gICAgICAgIHRvb2x0aXBUaXRsZTogJyBDdXN0b20gRmllbGQnLFxuICAgICAgICB0b29sdGlwTWVzc2FnZTpcbiAgICAgICAgICAnV2hlcmUgYSBjdXN0b20gZmllbGQgaXMgc3BlY2lmaWVkLCBhbGwgcmVzcG9uc2liaWxpdGllcyBsaW5rZWQgd2l0aCBhIFByb2dyYW0gd2lsbCBjb250YWluIHRoYXQgY3VzdG9tIGZpZWxkLiBDdXN0b20gZmllbGRzIGVuYWJsZSB0aGUgY29sbGVjdGlvbiBvZiBhZGRpdGlvbmFsIG1ldGEgZGF0YS4nLFxuICAgICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBHUkM6IFtcbiAgICAgIHtcbiAgICAgICAgaW1hZ2VVcmw6IEFTU0VUUy5saW5rX2l0ZW1zLFxuICAgICAgICBuYW1lOiAnTElOSyBSRVNQT05TSUJJTElUSUVTJyxcbiAgICAgICAgdG9vbHRpcFRpdGxlOiAnTElOSyBSRVNQT05TSUJJTElUSUVTJyxcbiAgICAgICAgdG9vbHRpcE1lc3NhZ2U6IGBUaGlzIG9wdGlvbiBsZXRzIHlvdSBsaW5rIGEgR1JDIE9iamVjdCB3aXRoIHJlbGF0ZWQgcmVzcG9uc2liaWxpdGllcy5gLFxuICAgICAgICBkaXNhYmxlZE1lc3NhZ2U6XG4gICAgICAgICAgJ1lvdSBjYW4gbGluayBhIHJlc3BvbnNpYmlsaXR5IHdpdGggdGhpcyBHUkMgT2JqZWN0IG9ubHkgYWZ0ZXIgeW91IGhhdmUgc2VsZWN0ZWQgdGhlIHJlbGV2YW50IFJlc3BvbnNpYmlsaXR5IENlbnRlci4nLFxuICAgICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgICAgY29kZTogJ0xJTktfUFJPR1JBTScsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpbWFnZVVybDogQVNTRVRTLmxpbmtfcmlza3MsXG4gICAgICAgIG5hbWU6ICdMSU5LIFJJU0tTJyxcbiAgICAgICAgdG9vbHRpcFRpdGxlOiAnTElOSyBSSVNLUycsXG4gICAgICAgIHRvb2x0aXBNZXNzYWdlOiBgVGhpcyBvcHRpb24gbGV0cyB5b3UgbGluayBhIEdSQyBPYmplY3Qgd2l0aCByZWxhdGVkIHJpc2tzLmAsXG4gICAgICAgIGRpc2FibGVkTWVzc2FnZTpcbiAgICAgICAgICAnWW91IGNhbiBsaW5rIGEgcmlzayB3aXRoIHRoaXMgR1JDIE9iamVjdCBvbmx5IGFmdGVyIHlvdSBoYXZlIHNlbGVjdGVkIHRoZSByZWxldmFudCBSZXNwb25zaWJpbGl0eSBDZW50ZXIuJyxcbiAgICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAgIGNvZGU6ICdMSU5LX1JJU0tfQ0FURUdPUklFU19SSVNLUycsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpbWFnZVVybDogQVNTRVRTLmxpbmtfaXRlbXMsXG4gICAgICAgIG5hbWU6ICdMSU5LIE9USEVSIEdSQyBPQkpFQ1RTJyxcbiAgICAgICAgdG9vbHRpcFRpdGxlOiAnTElOSyBPVEhFUiBHUkMgT0JKRUNUUycsXG4gICAgICAgIHRvb2x0aXBNZXNzYWdlOiBgVGhpcyBvcHRpb24gbGV0cyB5b3UgbGluayBhIEdSQyBPYmplY3Qgd2l0aCBvdGhlciByZWxhdGVkIEdSQyBPYmplY3RzLmAsXG4gICAgICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgICAgICBoaWRkZW46IGZhbHNlLFxuICAgICAgICBjb2RlOiAnT1RIRVJfR1JDX09CSkVDVFMnLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaW1hZ2VVcmw6IExJTktTPy5jdXN0b21GaWVsZHMsXG4gICAgICAgIG5hbWU6ICdHUkMgT2JqZWN0IFR5cGUgQXR0cmlidXRlcycsXG4gICAgICAgIHRvb2x0aXBUaXRsZTogJ0dSQyBPYmplY3QgVHlwZSBBdHRyaWJ1dGVzJyxcbiAgICAgICAgdG9vbHRpcE1lc3NhZ2U6IGBUaGlzIG9wdGlvbiBsZXRzIHlvdSBhZGQgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiByZWxhdGVkIHRvIGEgR1JDIE9iamVjdC5gLFxuICAgICAgICBkaXNhYmxlZE1lc3NhZ2U6XG4gICAgICAgICAgJ1RoZXJlIGFyZSBubyBhZGRpdGlvbmFsIGF0dHJpYnV0ZXMgbGlua2VkIHdpdGggdGhpcyBHUkMgT2JqZWN0IFR5cGUuJyxcbiAgICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAgIGNvZGU6ICdBVFRSSUJVVEVTJyxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBSQUM6IFtcbiAgICAgIHtcbiAgICAgICAgaW1hZ2VVcmw6IEFTU0VUUy5vYmplY3RpdmVzLFxuICAgICAgICBuYW1lOiAnRXhjZXB0aW9uIFR5cGUnLFxuICAgICAgICB0b29sdGlwVGl0bGU6ICdFeGNlcHRpb24gVHlwZScsXG4gICAgICAgIHRvb2x0aXBNZXNzYWdlOlxuICAgICAgICAgICdFeGNlcHRpb24gdHlwZSBsZXRzIHlvdSBzcGVjaWZ5IHdoZXRoZXIgdGhlcmUgaXMgYSBkZXNpZ24gb3IgYW4gb3BlcmF0aW9uYWwgZWZmZWN0aXZlbmVzcyBwcm9ibGVtLicsXG4gICAgICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgICAgICBoaWRkZW46IGZhbHNlLFxuICAgICAgICBjb2RlOiAnRVhDRVBUSU9OX1RZUEUnLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaW1hZ2VVcmw6IEFTU0VUUy5hc3NvY2lhdGVkX3Jpc2tzLFxuICAgICAgICBuYW1lOiAnQXNzb2NpYXRlZCBSaXNrcycsXG4gICAgICAgIHRvb2x0aXBUaXRsZTogJ0Fzc29jaWF0ZWQgUmlza3MnLFxuICAgICAgICB0b29sdGlwTWVzc2FnZTpcbiAgICAgICAgICAnQXNzb2NpYXRlZCByaXNrcyBsZXRzIHlvdSBzcGVjaWZ5IHRoZSByaXNrcyB0aGF0IGFyZSByZWxhdGVkIHRvIHRoaXMgY2FzZS4nLFxuICAgICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgICAgY29kZTogJ0FTU09DSUFURURfUklTS1MnLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaW1hZ2VVcmw6IEFTU0VUUy5vdmVyc2lnaHQsXG4gICAgICAgIG5hbWU6ICdPdmVyc2lnaHQnLFxuICAgICAgICB0b29sdGlwVGl0bGU6ICdPdmVyc2lnaHQnLFxuICAgICAgICB0b29sdGlwTWVzc2FnZTpcbiAgICAgICAgICAnT3ZlcnNpZ2h0IG9wdGlvbiBsZXRzIHlvdSBkZXNpZ25hdGUgdXNlcnMgdG8gb3ZlcnNlZSBhIGNhc2UuIFRoZXNlIHVzZXJzIHdpbGwgcmVjZWl2ZSBlbWFpbCBub3RpZmljYXRpb25zIGFib3V0IHRoZSBjYXNlIHN0YXR1cyAmIHJlbGF0ZWQgd29ya2Zsb3dzLiBBcyB0aGUgcGVyc29uIHJlcG9ydGluZyB0aGlzIGNhc2UsIHlvdSB3aWxsIGF1dG9tYXRpY2FsbHkgcmVjZWl2ZSBzdWNoIGVtYWlsIG5vdGlmaWNhdGlvbnMuJyxcbiAgICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAgIGNvZGU6ICdPVkVSU0lHSFQnLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaW1hZ2VVcmw6IEFTU0VUUy5mb3JtYXRfZXZpZGVuY2UsXG4gICAgICAgIG5hbWU6ICdFdmlkZW5jZScsXG4gICAgICAgIHRvb2x0aXBUaXRsZTogJ0V2aWRlbmNlJyxcbiAgICAgICAgdG9vbHRpcE1lc3NhZ2U6XG4gICAgICAgICAgJ1lvdSBjYW4gcmVxdWlyZSB0aGF0IHRoZSBwZXJzb24gcmVzb2x2aW5nIHRoZSBjYXNlIHVwbG9hZHMgZXZpZGVuY2UgdG8gY29uZmlybScsXG4gICAgICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgICAgICBoaWRkZW46IHRydWUsXG4gICAgICAgIGNvZGU6ICdFVklERU5DRScsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpbWFnZVVybDogQVNTRVRTLnJlY29tbWVuZGVkX2FjdGlvbixcbiAgICAgICAgbmFtZTogJ1JlY29tbWVuZGVkIEFjdGlvbnMnLFxuICAgICAgICB0b29sdGlwVGl0bGU6ICcnLFxuICAgICAgICB0b29sdGlwTWVzc2FnZTogJycsXG4gICAgICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgICAgICBoaWRkZW46IGZhbHNlLFxuICAgICAgICBjb2RlOiAnUkVDT01NRU5ERURfQUNUSU9OUycsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpbWFnZVVybDogQVNTRVRTLnJpc2tzLFxuICAgICAgICBuYW1lOiAnUmlzayBDbGFzc2lmaWNhdGlvbicsXG4gICAgICAgIHRvb2x0aXBUaXRsZTogJycsXG4gICAgICAgIHRvb2x0aXBNZXNzYWdlOiAnJyxcbiAgICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAgIGNvZGU6ICdSSVNLX0NMQVNTSUZJQ0FUSU9OJyxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBBQ1RXOiBbXG4gICAgICB7XG4gICAgICAgIGltYWdlVXJsOiBBU1NFVFMub2JqZWN0aXZlcyxcbiAgICAgICAgbmFtZTogJ0V4Y2VwdGlvbiBUeXBlJyxcbiAgICAgICAgdG9vbHRpcFRpdGxlOiAnRXhjZXB0aW9uIFR5cGUnLFxuICAgICAgICB0b29sdGlwTWVzc2FnZTpcbiAgICAgICAgICAnRXhjZXB0aW9uIHR5cGUgbGV0cyB5b3Ugc3BlY2lmeSB3aGV0aGVyIHRoZXJlIGlzIGEgZGVzaWduIG9yIGFuIG9wZXJhdGlvbmFsIGVmZmVjdGl2ZW5lc3MgcHJvYmxlbS4nLFxuICAgICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgICAgY29kZTogJ0VYQ0VQVElPTl9UWVBFJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGltYWdlVXJsOiBBU1NFVFMuYXNzb2NpYXRlZF9yaXNrcyxcbiAgICAgICAgbmFtZTogJ0Fzc29jaWF0ZWQgUmlza3MnLFxuICAgICAgICB0b29sdGlwVGl0bGU6ICdBc3NvY2lhdGVkIFJpc2tzJyxcbiAgICAgICAgdG9vbHRpcE1lc3NhZ2U6XG4gICAgICAgICAgJ0Fzc29jaWF0ZWQgcmlza3MgbGV0cyB5b3Ugc3BlY2lmeSB0aGUgcmlza3MgdGhhdCBhcmUgcmVsYXRlZCB0byB0aGlzIGNhc2UuJyxcbiAgICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAgIGNvZGU6ICdBU1NPQ0lBVEVEX1JJU0tTJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGltYWdlVXJsOiBBU1NFVFMub3ZlcnNpZ2h0LFxuICAgICAgICBuYW1lOiAnT3ZlcnNpZ2h0JyxcbiAgICAgICAgdG9vbHRpcFRpdGxlOiAnT3ZlcnNpZ2h0JyxcbiAgICAgICAgdG9vbHRpcE1lc3NhZ2U6XG4gICAgICAgICAgJ092ZXJzaWdodHMgYXJlIHRoZSBwZXJzb25zIHJlc3BvbnNpYmxlIGZvciBvdmVyc2VlaW5nIGFuIGNhc2UuIFRoZXNlIHBlcnNvbnMgd2lsbCByZWNlaXZlIGVtYWlsIG5vdGlmaWNhdGlvbnMgYWJvdXQgdGhlIGNhc2Ugc3RhdHVzLiBBcyB0aGUgcGVyc29uIHJlcG9ydGluZyB0aGlzIGNhc2UsIHlvdSB3aWxsIGF1dG9tYXRpY2FsbHkgcmVjZWl2ZSBzdWNoIGVtYWlsIG5vdGlmaWNhdGlvbnMuJyxcbiAgICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAgIGNvZGU6ICdPVkVSU0lHSFQnLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaW1hZ2VVcmw6IEFTU0VUUy5yZWNvbW1lbmRlZF9hY3Rpb24sXG4gICAgICAgIG5hbWU6ICdSZWNvbW1lbmRlZCBBY3Rpb25zJyxcbiAgICAgICAgdG9vbHRpcFRpdGxlOiAnJyxcbiAgICAgICAgdG9vbHRpcE1lc3NhZ2U6ICcnLFxuICAgICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgICAgY29kZTogJ1JFQ09NTUVOREVEX0FDVElPTlMnLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaW1hZ2VVcmw6IEFTU0VUUy5yaXNrcyxcbiAgICAgICAgbmFtZTogJ1Jpc2sgQ2xhc3NpZmljYXRpb24nLFxuICAgICAgICB0b29sdGlwVGl0bGU6ICcnLFxuICAgICAgICB0b29sdGlwTWVzc2FnZTogJycsXG4gICAgICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgICAgICBoaWRkZW46IGZhbHNlLFxuICAgICAgICBjb2RlOiAnUklTS19DTEFTU0lGSUNBVElPTicsXG4gICAgICB9LFxuICAgIF0sXG4gIH07XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZXBvcnRBQ2FzZVNlcnZpY2U6IFJlcG9ydEFDYXNlU2VydmljZSkge1xuICAgIHRoaXMucmVzZXRSQUNNb3JlT3B0aW9ucygpO1xuICB9XG5cbiAgcmVzZXRSQUNNb3JlT3B0aW9ucygpIHtcbiAgICB0aGlzLnJlcG9ydEFDYXNlU2VydmljZS5yZXNldE1vcmVPcHRpb24uc3Vic2NyaWJlKChyZXMpID0+IHtcbiAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgdGhpcy5tb3JlT3B0aW9uc0xpc3QuUkFDLmZvckVhY2goKGVsZTogYW55KSA9PiB7XG4gICAgICAgICAgZWxlLmNoZWNrZWQgPSBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKFxuICAgICAgY2hhbmdlcz8uaXNQcm9ncmFtU2VsZWN0ZWQ/LmN1cnJlbnRWYWx1ZSAhPT1cbiAgICAgIGNoYW5nZXM/LmlzUHJvZ3JhbVNlbGVjdGVkPy5wcmV2aW91c1ZhbHVlXG4gICAgKSB7XG4gICAgICB0aGlzLmlzUHJvZ3JhbVNlbGVjdGVkID0gY2hhbmdlcy5pc1Byb2dyYW1TZWxlY3RlZC5jdXJyZW50VmFsdWU7XG4gICAgfVxuICAgIGlmICghdGhpcy5pc1JDU2VsZWN0ZWQpIHtcbiAgICAgIGlmICh0aGlzLmN1cnJlbnRXb3JrZmxvdyA9PT0gJ0FBUicpIHtcbiAgICAgICAgdGhpcy5tb3JlT3B0aW9uc0xpc3QuQUFSLmZvckVhY2goKGVsZTogYW55KSA9PiB7XG4gICAgICAgICAgLy8gaWYoZWxlLmNvZGUgPT09ICdBU1NVUkFOQ0UnKSB7XG4gICAgICAgICAgLy8gICBlbGUuY2hlY2tlZCA9IGZhbHNlO1xuICAgICAgICAgIC8vIH1cbiAgICAgICAgICBpZiAoZWxlLmNvZGUgPT09ICdHUkNfT0JKRUNUUycpIHtcbiAgICAgICAgICAgIGVsZS5jaGVja2VkID0gZmFsc2U7XG4gICAgICAgICAgICBlbGUuaXNEaXNhYmxlZCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubW9yZU9wdGlvbnNMaXN0LkNBUi5mb3JFYWNoKChlbGU6IGFueSkgPT4ge1xuICAgICAgICAgIC8vIGlmKGVsZS5jb2RlID09PSAnQVNTVVJBTkNFJykge1xuICAgICAgICAgIC8vICAgZWxlLmNoZWNrZWQgPSBmYWxzZTtcbiAgICAgICAgICAvLyB9XG4gICAgICAgICAgaWYgKFsnUkVRVUlSRVNfQVVESVQnLCAnR1JDX09CSkVDVFMnXS5pbmNsdWRlcyhlbGUuY29kZSkpIHtcbiAgICAgICAgICAgIGVsZS5jaGVja2VkID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMuY3VycmVudFdvcmtmbG93ID09PSAnQUFSJykge1xuICAgICAgICB0aGlzLm1vcmVPcHRpb25zTGlzdC5BQVIuZm9yRWFjaCgoZWxlOiBhbnkpID0+IHtcbiAgICAgICAgICAvLyBpZihlbGUuY29kZSA9PT0gJ0FTU1VSQU5DRScpIHtcbiAgICAgICAgICAvLyAgIGVsZS5jaGVja2VkID0gZmFsc2U7XG4gICAgICAgICAgLy8gfVxuICAgICAgICAgIGlmIChlbGUuY29kZSA9PT0gJ0dSQ19PQkpFQ1RTJykge1xuICAgICAgICAgICAgZWxlLmlzRGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5tb3JlT3B0aW9uc0xpc3QuQ0FSLmZvckVhY2goKGVsZTogYW55KSA9PiB7XG4gICAgICAgICAgLy8gaWYoZWxlLmNvZGUgPT09ICdBU1NVUkFOQ0UnKSB7XG4gICAgICAgICAgLy8gICBlbGUuaXNEaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgICAgIC8vIH1cbiAgICAgICAgICBpZiAoWydSRVFVSVJFU19BVURJVCcsICdHUkNfT0JKRUNUUyddLmluY2x1ZGVzKGVsZS5jb2RlKSkge1xuICAgICAgICAgICAgZWxlLmlzRGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmNoZWNrR1JDQXR0cmlidXRlcyh0aGlzLmlzQXR0cmlidXRlc0F2YWlsYWJsZSk7XG4gIH1cblxuICBjaGVja0dSQ0F0dHJpYnV0ZXModmFsdWU6IGFueSkge1xuICAgIHRoaXMubW9yZU9wdGlvbnNMaXN0LkdSQy5mb3JFYWNoKChlbGU6IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgaWYgKGVsZS5jb2RlID09PSAnQVRUUklCVVRFUycpIHtcbiAgICAgICAgZWxlLmlzRGlzYWJsZWQgPSAhdmFsdWU7XG4gICAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgICBlbGUuY2hlY2tlZCA9ICF2YWx1ZTtcbiAgICAgICAgICB0aGlzLnNlbGVjdE1vcmVPcHRpb24oZWxlLCBpbmRleCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChlbGUuY29kZSA9PT0gJ0xJTktfUFJPR1JBTScpIHtcbiAgICAgICAgZWxlLmlzRGlzYWJsZWQgPSAhdGhpcy5pc1JDU2VsZWN0ZWQ7XG4gICAgICB9XG4gICAgICBpZiAoZWxlLmNvZGUgPT09ICdMSU5LX1JJU0tfQ0FURUdPUklFU19SSVNLUycpIHtcbiAgICAgICAgZWxlLmlzRGlzYWJsZWQgPSAhdGhpcy5pc1JDU2VsZWN0ZWQ7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5mZWF0dXJlZmxhZ3JvbGUgPSB0aGlzLmFsbG93ZWRGZWF0dXJlPy5pc0ZlYXR1cmVFbmFibGVkKFxuICAgICAgJ2ZmX3JvbGVfaW1wcm92ZW1lbnRzJ1xuICAgICk7XG4gICAgdGhpcy5mZl9yY19saXN0aW5nID0gdGhpcy5hbGxvd2VkRmVhdHVyZS5pc0ZlYXR1cmVFbmFibGVkKCdmZl9yY19saXN0aW5nJyk7XG4gICAgdGhpcy5mZl9yY19saXN0aW5nXG4gICAgICA/ICh0aGlzLnBlcm1pc3Npb25UZXh0ID0gJ1Blcm1pc3Npb25zJylcbiAgICAgIDogKHRoaXMucGVybWlzc2lvblRleHQgPSAnUGVybWlzc2lvbiBHcm91cChTKScpO1xuICAgIHRoaXMubW9yZU9wdGlvbnNMaXN0LkNBUFJbMF0ubmFtZSA9IHRoaXMucGVybWlzc2lvblRleHQ7XG4gICAgdGhpcy5tb3JlT3B0aW9uc0xpc3QuQ0FQUlswXS50b29sdGlwVGl0bGUgPSB0aGlzLnBlcm1pc3Npb25UZXh0O1xuICAgIHRoaXMubW9yZU9wdGlvbnNMaXN0LkNBUFJbMV0udG9vbHRpcE1lc3NhZ2UgPSB0aGlzLmZlYXR1cmVmbGFncm9sZVxuICAgICAgPyBgT3duZXJzIGFyZSByZXNwb25zaWJsZSBmb3IgbWFuYWdpbmcgYSBQcm9ncmFtLiBPbmx5IE93bmVycyBjYW4gbWFrZSBjaGFuZ2VzIHRvIGEgUHJvZ3JhbSBhbmQgdGhlIHJlc3BvbnNpYmlsaXRpZXMgdGhhdCBhcmUgbGlua2VkIHdpdGggdGhlIFByb2dyYW0uPGJyPlxuICAgIFRoZSA8Yj5LZXkgUG93ZXIgVXNlciA8L2I+IGFuZCBhbGwgPGI+UG93ZXIgVXNlcnM8L2I+ICB3aWxsIGJlIHNlbGVjdGVkIGFzIHRoZSBPd25lcnMgb2YgYSBQcm9ncmFtIGJ5IGRlZmF1bHQuXG4gICAgYFxuICAgICAgOiBgT3duZXJzIGFyZSByZXNwb25zaWJsZSBmb3IgbWFuYWdpbmcgYSBQcm9ncmFtLiBPbmx5IE93bmVycyBjYW4gbWFrZSBjaGFuZ2VzIHRvIGEgUHJvZ3JhbSBhbmQgdGhlIHJlc3BvbnNpYmlsaXRpZXMgdGhhdCBhcmUgbGlua2VkIHdpdGggdGhlIFByb2dyYW0uPGJyPlxuICAgIFRoZSA8Yj5LZXkgQWRtaW48L2I+IGFuZCBhbGwgPGI+QWRtaW48L2I+IHVzZXJzIHdpbGwgYmUgc2VsZWN0ZWQgYXMgdGhlIE93bmVycyBvZiBhIFByb2dyYW0gYnkgZGVmYXVsdC5cbiAgICBgO1xuICAgIGlmICh0aGlzLmFsbG93ZWRGZWF0dXJlPy5pc0ZlYXR1cmVFbmFibGVkKCdmZl9wcm9ncmFtX3NpbXBsaWZ5JykpIHtcbiAgICAgIHRoaXMubW9yZU9wdGlvbnNMaXN0LkNBUFJbMF0udG9vbHRpcE1lc3NhZ2UgPSBgJHt0aGlzLnBlcm1pc3Npb25UZXh0fSBsZXQgeW91IHNwZWNpZnkgdGhlIHVzZXJzIHRoYXQgY2FuIGJlIOKAnE93bmVyc+KAnSBvZiBhIFByb2dyYW0uYDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5tb3JlT3B0aW9uc0xpc3QuQ0FQUlswXS50b29sdGlwTWVzc2FnZSA9IGAke3RoaXMucGVybWlzc2lvblRleHR9IGxldCB5b3Ugc3BlY2lmeSB0aGUgdXNlcnMgdGhhdCBjYW4gYmUg4oCcT3duZXJz4oCdIGFuZCDigJxBcHByb3ZlcnPigJ0gb2YgYSBQcm9ncmFtLmA7XG4gICAgfVxuXG4gICAgY29uc3QgaW5kZXggPSB0aGlzLm1vcmVPcHRpb25zTGlzdC5DQVIuZmluZEluZGV4KFxuICAgICAgKGVsZTogYW55KSA9PiBlbGUuY29kZSA9PT0gJ0NIRUNLUE9JTlRTJ1xuICAgICk7XG4gICAgdGhpcy5tb3JlT3B0aW9uc0xpc3QuQ0FSW2luZGV4XS5oaWRkZW4gPVxuICAgICAgdGhpcy5pc0VkaXRNb2RlID09PSBmYWxzZSA/IHRydWUgOiBmYWxzZTtcbiAgICBjb25zdCBQcm9ncmFtSW5kZXggPSB0aGlzLm1vcmVPcHRpb25zTGlzdC5DQVIuZmluZEluZGV4KFxuICAgICAgKGVsZTogYW55KSA9PiBlbGUuY29kZSA9PT0gJ1BST0dSQU0nXG4gICAgKTtcbiAgICBpZiAoUHJvZ3JhbUluZGV4ID4gLTEpIHtcbiAgICAgIHRoaXMubW9yZU9wdGlvbnNMaXN0LkNBUltQcm9ncmFtSW5kZXhdLmlzRGlzYWJsZWQgPSB0aGlzLmlzRWRpdE1vZGU7XG4gICAgfVxuICAgIHRoaXMucHJvZ3JhbVNpbXBsaWZ5RmxhZyA9XG4gICAgICB0aGlzLmFsbG93ZWRGZWF0dXJlPy5pc0ZlYXR1cmVFbmFibGVkKCdmZl9wcm9ncmFtX3NpbXBsaWZ5JykgPz8gdHJ1ZTtcbiAgfVxuXG4gIHNlbGVjdE1vcmVPcHRpb24oZXZlbnQ6IGFueSwgaW5kZXg6IG51bWJlcikge1xuICAgIGlmIChcbiAgICAgIHRoaXMuY3VycmVudFdvcmtmbG93ID09PSAnQ0FSJyAmJlxuICAgICAgZXZlbnQuY29kZSA9PT0gJ0NIRUNLUE9JTlRTX05FVycgJiZcbiAgICAgIHRoaXMubW9yZU9wdGlvbnNMaXN0W3RoaXMuY3VycmVudFdvcmtmbG93XVtpbmRleF0/LmNoZWNrZWRcbiAgICApIHtcbiAgICAgIGV2ZW50WydjaGVja3BvaW50X25ldyddID0gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKHRoaXMubW9yZU9wdGlvbnNMaXN0W3RoaXMuY3VycmVudFdvcmtmbG93XT8ubGVuZ3RoID4gaW5kZXgpIHtcbiAgICAgIGV2ZW50WydjaGVja3BvaW50X25ldyddID0gZmFsc2U7XG4gICAgICB0aGlzLm1vcmVPcHRpb25zTGlzdFt0aGlzLmN1cnJlbnRXb3JrZmxvd11baW5kZXhdWydjaGVja2VkJ10gPVxuICAgICAgICAhZXZlbnQuY2hlY2tlZDtcbiAgICB9XG5cbiAgICB0aGlzLnNlbGVjdGVkT3B0aW9uLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgcG9wdWxhdGUoZXZ0OiBhbnkpIHtcbiAgICBpZiAodGhpcy5jdXJyZW50V29ya2Zsb3cpIHtcbiAgICAgIHRoaXMubW9yZU9wdGlvbnNMaXN0W3RoaXMuY3VycmVudFdvcmtmbG93XS5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcbiAgICAgICAgaWYgKGV2dC5pbmNsdWRlcyhlbGVtZW50LmNvZGUpKSB7XG4gICAgICAgICAgZWxlbWVudC5jaGVja2VkID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBlbGVtZW50LmNoZWNrZWQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXZ0LmluY2x1ZGVzKCdDSEVDS1BPSU5UU19ORVcnKSkge1xuICAgICAgICAgIGlmIChlbGVtZW50LmNvZGUgPT09ICdDSEVDS1BPSU5UUycpIHtcbiAgICAgICAgICAgIGVsZW1lbnQuaXNEaXNhYmxlZCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChlbGVtZW50LmNvZGUgPT09ICdBU1NFU1NNRU5UJykge1xuICAgICAgICAgICAgZWxlbWVudC5pc0Rpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV2dC5pbmNsdWRlcygnQVNTRVNTTUVOVCcpKSB7XG4gICAgICAgICAgaWYgKGVsZW1lbnQuY29kZSA9PT0gJ0NIRUNLUE9JTlRTX05FVycpIHtcbiAgICAgICAgICAgIGVsZW1lbnQuaXNEaXNhYmxlZCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChlbGVtZW50LmNvZGUgPT09ICdDSEVDS1BPSU5UUycpIHtcbiAgICAgICAgICAgIGVsZW1lbnQuaXNEaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoZXZ0LmluY2x1ZGVzKCdDSEVDS1BPSU5UUycpKSB7XG4gICAgICAgICAgaWYgKGVsZW1lbnQuY29kZSA9PT0gJ0NIRUNLUE9JTlRTX05FVycpIHtcbiAgICAgICAgICAgIGVsZW1lbnQuaXNEaXNhYmxlZCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChlbGVtZW50LmNvZGUgPT09ICdBU1NFU1NNRU5UJykge1xuICAgICAgICAgICAgZWxlbWVudC5pc0Rpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV2dC5pbmNsdWRlcygnUFJPR1JBTScpKSB7XG4gICAgICAgICAgaWYgKGVsZW1lbnQuY29kZSA9PT0gJ1BST0dSQU0nICYmIHRoaXMuaXNQcm9ncmFtU2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIGVsZW1lbnQuaXNEaXNhYmxlZCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgaGlkZUVsZW1lbnRzKGhpZGRlbkxpc3Q6IGFueSkge1xuICAgIGlmICh0aGlzLmN1cnJlbnRXb3JrZmxvdykge1xuICAgICAgdGhpcy5tb3JlT3B0aW9uc0xpc3RbdGhpcy5jdXJyZW50V29ya2Zsb3ddLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xuICAgICAgICBpZiAoaGlkZGVuTGlzdC5pbmNsdWRlcyhlbGVtZW50LmNvZGUpKSB7XG4gICAgICAgICAgZWxlbWVudC5oaWRkZW4gPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGVsZW1lbnQuaGlkZGVuID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHJlc2V0QWxsKHdvcmtmbG93VHlwZTogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMubW9yZU9wdGlvbnNMaXN0W3dvcmtmbG93VHlwZV0pIHtcbiAgICAgIHRoaXMubW9yZU9wdGlvbnNMaXN0W3dvcmtmbG93VHlwZV0uZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XG4gICAgICAgIGVsZW1lbnQuY2hlY2tlZCA9IGZhbHNlO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlUHJvZ3JhbU1vcmVPcHRpb25zKCkge1xuICAgIGNvbnN0IGNvZGUgPSBbXG4gICAgICAnUFJPR1JBTV9GUkVRVUVOQ1knLFxuICAgICAgJ1NDT1BFX0NIQU5HRVMnLFxuICAgICAgJ1JDJyxcbiAgICAgICdBU1NJR05FRVMnLFxuICAgICAgJ1JFVklFV0VSJyxcbiAgICAgICdPVkVSU0VFUicsXG4gICAgICAnQVNTRVNTTUVOVCcsXG4gICAgICAnRk9STUFURV9FVklERU5DRScsXG4gICAgXTtcbiAgICBpZiAoXG4gICAgICB0aGlzLm9yZ0RldGFpbHM/Lmhhc1Byb2dyYW1GdWxsUGVybWlzc2lvbiAmJlxuICAgICAgdGhpcy5hbGxvd2VkRmVhdHVyZS5pc0ZlYXR1cmVFbmFibGVkKCdmZl9wcm9ncmFtX3NpbXBsaWZ5JylcbiAgICApIHtcbiAgICAgIHRoaXMubW9yZU9wdGlvbnNMaXN0Py5DQVBSPy5mb3JFYWNoKChvcHRpb246IGFueSkgPT4ge1xuICAgICAgICBpZiAoY29kZT8uaW5jbHVkZXMob3B0aW9uLmNvZGUpKSB7XG4gICAgICAgICAgb3B0aW9uLmhpZGRlbiA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLmFsbG93ZWRGZWF0dXJlLmlzRmVhdHVyZUVuYWJsZWQoJ2ZmX3Byb2dyYW1fc2ltcGxpZnknKSkge1xuICAgICAgY29kZS5wdXNoKCdBUFBST1ZFUicpO1xuICAgICAgdGhpcy5tb3JlT3B0aW9uc0xpc3Q/LkNBUFI/LmZvckVhY2goKG9wdGlvbjogYW55KSA9PiB7XG4gICAgICAgIGlmIChjb2RlPy5pbmNsdWRlcyhvcHRpb24uY29kZSkpIHtcbiAgICAgICAgICBvcHRpb24uaGlkZGVuID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIiwiPCEtLSA8cD5tb3JlLW9wdGlvbiB3b3JrcyE8L3A+IC0tPlxuPGRpdiBjbGFzcz1cIm1vcmUtb3B0aW9uXCI+XG4gIDxkaXYgY2xhc3M9XCJtZXNzYWdlLWNvbnRhaW5lclwiPlxuICAgIDxpbWcgW3NyY109XCJBU1NFVFMuYWRkX3Jpc2tfbW9yZV9vcHRpb25cIiBhbHQ9XCJcIiAvPlxuICAgIDxwICpuZ0lmPVwiY3VycmVudFdvcmtmbG93XCI+e3sgcGxhY2Vob2xkZXJUZXh0c1tjdXJyZW50V29ya2Zsb3ddIH19PC9wPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cIm1vcmUtb3B0aW9uc1wiPlxuICAgIDx1bD5cbiAgICAgIDwhLS0gPGRpdiBjbGFzcz1cIm1vcmUtb3B0aW9ucy1oZWFkaW5nXCIgKm5nSWY9XCJjdXJyZW50V29ya2Zsb3cgPT09J0NBUFInXCI+UFJPR1JBTSBTQ09QRSBPUFRJT05TPC9kaXY+IC0tPlxuICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAqbmdGb3I9XCJsZXQgZGF0YSBvZiBtb3JlT3B0aW9uc0xpc3RbY3VycmVudFdvcmtmbG93XTsgbGV0IGkgPSBpbmRleFwiXG4gICAgICA+XG4gICAgICAgIDwhLS0gPGxpICpuZ0lmPVwiIWRhdGEuaGlkZGVuXCIgW2FwcFRvb2x0aXBdPVwiZGF0YS5pc0Rpc2FibGVkICYmICFpc1JjU2VsZWN0ZWQ/ICdUaGlzIHJlc3BvbnNpYmlsaXR5IGNhbiBiZSBzY2hlZHVsZWQgZm9yIGFuIGF1ZGl0IG9ubHkgYWZ0ZXIgdGhlIFJlc3BvbnNpYmlsaXR5IENlbnRlciBpcyBzZWxlY3RlZC4nIDogJydcIiBwbGFjZW1lbnQ9XCJyaWdodFwiIGRlbGF5PVwiMFwiIFt0b29sdGlwTWFuZGF0b3J5XT1cImRhdGEuaXNEaXNhYmxlZCAmJiAhaXNSY1NlbGVjdGVkXCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gW2NsYXNzLmFjdGl2ZV09XCJkYXRhLmNoZWNrZWRcIiBbZGlzYWJsZWRdPVwiZGF0YS5jb2RlID09PSAnUkMnICYmIG9wZW5lZEZyb20gPT09ICdSSVNLX1RSRUFUTUVOVCcgJiYgY3VycmVudFdvcmtmbG93ID09PSAnQ0FSJyB8fCAoZGF0YS5pc0Rpc2FibGVkICYmICFpc1JDU2VsZWN0ZWQpXCIgW2NsYXNzLmRpc2FibGVkXT1cImRhdGEuaXNEaXNhYmxlZCAmJiAhaXNSQ1NlbGVjdGVkXCIgKGNsaWNrKT1cImRhdGEuY2hlY2tlZCA9ICFkYXRhLmNoZWNrZWQ7IHNlbGVjdE1vcmVPcHRpb24oZGF0YSlcIj4gLS0+XG5cbiAgICAgICAgPGxpXG4gICAgICAgICAgKm5nSWY9XCIhZGF0YS5oaWRkZW5cIlxuICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgZGF0YS5pc0Rpc2FibGVkIHx8XG4gICAgICAgICAgICAoKChkYXRhLmNvZGUgPT09ICdSQycgJiYgIWlzUmNTZWxlY3RlZCkgfHxcbiAgICAgICAgICAgICAgZGF0YS5jb2RlID09PSAnQVRUUklCVVRFUycpICYmXG4gICAgICAgICAgICAgIGRhdGEuaXNEaXNhYmxlZClcbiAgICAgICAgICAgICAgPyBkYXRhPy5kaXNhYmxlZE1lc3NhZ2VcbiAgICAgICAgICAgICAgOiAnJ1xuICAgICAgICAgIFwiXG4gICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZGF0YS5pc0Rpc2FibGVkXCJcbiAgICAgICAgICBpZD1cImxpc3RkYXRhXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiZGF0YS5jaGVja2VkXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJcbiAgICAgICAgICAgICAgKGRhdGEuY29kZSA9PT0gJ1JDJyAmJlxuICAgICAgICAgICAgICAgIG9wZW5lZEZyb20gPT09ICdSSVNLX1RSRUFUTUVOVCcgJiZcbiAgICAgICAgICAgICAgICBjdXJyZW50V29ya2Zsb3cgPT09ICdDQVInKSB8fFxuICAgICAgICAgICAgICBkYXRhLmlzRGlzYWJsZWQgfHxcbiAgICAgICAgICAgICAgKGRhdGEuaXNEaXNhYmxlZCAmJiAhaXNSQ1NlbGVjdGVkKVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RNb3JlT3B0aW9uKGRhdGEsIGkpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFkYXRhLmNoZWNrZWRcIiBjbGFzcz1cIm1vcmUtaWNvblwiPlxuICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiZGF0YS5pbWFnZVVybFwiIGFsdD1cIlwiIC8+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8c3ZnXG4gICAgICAgICAgICAgICpuZ0lmPVwiZGF0YS5jaGVja2VkXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25cIlxuICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCA1MiA1MlwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxjaXJjbGVcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCJcbiAgICAgICAgICAgICAgICBjeD1cIjI2XCJcbiAgICAgICAgICAgICAgICBjeT1cIjI2XCJcbiAgICAgICAgICAgICAgICByPVwiMjVcIlxuICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIlxuICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgICBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIGNsYXNzPVwidmFsdWVcIlxuICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cImRhdGE/Lm5hbWVcIlxuICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJkYXRhPy5uYW1lXCJcbiAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXG4gICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgPCEtLSA8c3BhbiAqbmdJZj1cImRhdGEuY29kZSA9PT0nQ0hFQ0tQT0lOVFNfTkVXJ1wiIGNsYXNzPVwiY2hlY2twb2ludC12ZXJzaW9uXCI+IFYyLjA8L3NwYW4+IC0tPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICBjbGFzcz1cImljb25cIlxuICAgICAgICAgICAgKm5nSWY9XCJkYXRhLnRvb2x0aXBNZXNzYWdlICE9PSAnJ1wiXG4gICAgICAgICAgICBsaWJQb3BvdmVySG92ZXJcbiAgICAgICAgICAgIChtb3VzZW92ZXIpPVwiZGF0YVRvb2x0aXAucG9wb3ZlcigpXCJcbiAgICAgICAgICAgIChtb3VzZWxlYXZlKT1cImRhdGFUb29sdGlwLmNsb3NlUG9wb3ZlcigpXCJcbiAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgICAgID48aSBjbGFzcz1cImljb25zXCI+JiN4ZTkxZjs8L2k+PC9zcGFuXG4gICAgICAgICAgPlxuICAgICAgICAgIDxwb3BvdmVyLWhvdmVyICNkYXRhVG9vbHRpcD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1pbmZvLWNhcmRcIj5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidngtaW5mby1jYXJkLWhlYWRcIlxuICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiZGF0YS50b29sdGlwVGl0bGVcIlxuICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cInZ4LWluZm8tY2FyZC1ib2R5XCJcbiAgICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cImRhdGEudG9vbHRpcE1lc3NhZ2VcIlxuICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L3BvcG92ZXItaG92ZXI+XG4gICAgICAgIDwvbGk+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cIm1vcmUtb3B0aW9ucy1oZWFkaW5nIHZ4LW10LTJcIlxuICAgICAgICAgICpuZ0lmPVwiY3VycmVudFdvcmtmbG93ID09PSAnQ0FQUicgJiYgaSA9PT0gMlwiXG4gICAgICAgID5cbiAgICAgICAgICBQUk9HUkFNIFNDT1BFIE9QVElPTlNcbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L3VsPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19