vcomply-workflow-engine 3.5.3 → 3.5.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 (645) hide show
  1. package/esm2022/lib/add-multiple-responsibility/add-multiple-responsibility.component.mjs +897 -0
  2. package/esm2022/lib/add-multiple-responsibility-container/add-multiple-responsibility-container.component.mjs +204 -0
  3. package/esm2022/lib/add-multiple-responsibility-with-tab/add-multiple-responsibility-with-tab.component.mjs +1569 -0
  4. package/esm2022/lib/add-multiple-risk/add-multiple-risk.component.mjs +774 -0
  5. package/esm2022/lib/configurations.mjs +6 -0
  6. package/esm2022/lib/confirmation-alert/confirmation-alert.component.mjs +28 -0
  7. package/esm2022/lib/constants/link-responsibility.constants.mjs +9 -0
  8. package/esm2022/lib/constants/time.constants.mjs +3 -0
  9. package/esm2022/lib/create-documents/create-documents.component.mjs +145 -0
  10. package/esm2022/lib/formgroup/cs-checkbox/cs-checkbox.component.mjs +36 -0
  11. package/esm2022/lib/formgroup/cs-checkbox-indeterminate/cs-checkbox-indeterminate.component.mjs +35 -0
  12. package/esm2022/lib/formgroup/cs-radio/cs-radio.component.mjs +34 -0
  13. package/esm2022/lib/formgroup/cs-radio-group/cs-radio-group.component.mjs +14 -0
  14. package/esm2022/lib/formgroup/cs-select/cs-select.component.mjs +95 -0
  15. package/esm2022/lib/formgroup/cs-switch/cs-switch.component.mjs +31 -0
  16. package/esm2022/lib/formgroup/formgroup.module.mjs +56 -0
  17. package/esm2022/lib/formgroup/pipes/pascal.pipe.mjs +19 -0
  18. package/esm2022/lib/formgroup/select/cs-option/cs-option.component.mjs +42 -0
  19. package/esm2022/lib/formgroup/select/cs-select/cs-select.component.mjs +106 -0
  20. package/esm2022/lib/formgroup/select/select.module.mjs +21 -0
  21. package/esm2022/lib/formgroup/select/select.service.mjs +48 -0
  22. package/esm2022/lib/interfaces/categoryList.mjs +2 -0
  23. package/esm2022/lib/interfaces/confirmation-alert.mjs +2 -0
  24. package/esm2022/lib/interfaces/issue-data.mjs +2 -0
  25. package/esm2022/lib/log-an-issue/log-an-issue.component.mjs +1212 -0
  26. package/esm2022/lib/more-option/more-option.component.mjs +790 -0
  27. package/esm2022/lib/pipes/data-type.pipe.mjs +16 -0
  28. package/esm2022/lib/pipes/dom-sanitizer.pipe.mjs +24 -0
  29. package/esm2022/lib/pipes/filter.pipe.mjs +24 -0
  30. package/esm2022/lib/pipes/is-read-more.pipe.mjs +21 -0
  31. package/esm2022/lib/pipes/list-mapper.pipe.mjs +21 -0
  32. package/esm2022/lib/pipes/pipes.module.mjs +67 -0
  33. package/esm2022/lib/pipes/search.pipe.mjs +37 -0
  34. package/esm2022/lib/pipes/space-breaker.pipe.mjs +21 -0
  35. package/esm2022/lib/pipes/uncategorized-filter.pipe.mjs +21 -0
  36. package/esm2022/lib/pipes/user-filter.pipe.mjs +30 -0
  37. package/esm2022/lib/services/bulk-upload.service.mjs +44 -0
  38. package/esm2022/lib/services/common.service.mjs +41 -0
  39. package/esm2022/lib/sharedComponents/approval-workflow/approval-create-form/approval-create-form.component.mjs +265 -0
  40. package/esm2022/lib/sharedComponents/approval-workflow/approval-workflow-list/approval-workflow-list.component.mjs +73 -0
  41. package/esm2022/lib/sharedComponents/approval-workflow/approval-workflow.component.mjs +83 -0
  42. package/esm2022/lib/sharedComponents/assessment-editor/components/add-logic/add-logic.component.mjs +347 -0
  43. package/esm2022/lib/sharedComponents/assessment-editor/components/add-page-details/add-page-details.component.mjs +75 -0
  44. package/esm2022/lib/sharedComponents/assessment-editor/components/add-response-set-popup/add-response-set-popup.component.mjs +33 -0
  45. package/esm2022/lib/sharedComponents/assessment-editor/components/add-segment-popup/add-segment-popup.component.mjs +124 -0
  46. package/esm2022/lib/sharedComponents/assessment-editor/components/assessment-settings/assessment-settings.component.mjs +154 -0
  47. package/esm2022/lib/sharedComponents/assessment-editor/components/build/build.module.mjs +111 -0
  48. package/esm2022/lib/sharedComponents/assessment-editor/components/build/checkbox/checkbox.component.mjs +37 -0
  49. package/esm2022/lib/sharedComponents/assessment-editor/components/build/choice-settings-panel/choice-settings-panel.component.mjs +74 -0
  50. package/esm2022/lib/sharedComponents/assessment-editor/components/build/date-time/date-time.component.mjs +18 -0
  51. package/esm2022/lib/sharedComponents/assessment-editor/components/build/dropdown/dropdown.component.mjs +37 -0
  52. package/esm2022/lib/sharedComponents/assessment-editor/components/build/image-choice/image-choice.component.mjs +15 -0
  53. package/esm2022/lib/sharedComponents/assessment-editor/components/build/matrix-dropdown/matrix-dropdown.component.mjs +14 -0
  54. package/esm2022/lib/sharedComponents/assessment-editor/components/build/matrix-rating-scale/matrix-rating-scale.component.mjs +14 -0
  55. package/esm2022/lib/sharedComponents/assessment-editor/components/build/multiple-choice/multiple-choice.component.mjs +37 -0
  56. package/esm2022/lib/sharedComponents/assessment-editor/components/build/multiple-textbox/multiple-textbox.component.mjs +14 -0
  57. package/esm2022/lib/sharedComponents/assessment-editor/components/build/ranking/ranking.component.mjs +14 -0
  58. package/esm2022/lib/sharedComponents/assessment-editor/components/build/slider/slider.component.mjs +14 -0
  59. package/esm2022/lib/sharedComponents/assessment-editor/components/build/star-rating/star-rating.component.mjs +28 -0
  60. package/esm2022/lib/sharedComponents/assessment-editor/components/build/thank-you/thank-you.component.mjs +14 -0
  61. package/esm2022/lib/sharedComponents/assessment-editor/components/build/weightage-selector/weightage-selector.component.mjs +56 -0
  62. package/esm2022/lib/sharedComponents/assessment-editor/components/build/welcome/welcome.component.mjs +14 -0
  63. package/esm2022/lib/sharedComponents/assessment-editor/components/editor-wrapper/editor-wrapper.component.mjs +179 -0
  64. package/esm2022/lib/sharedComponents/assessment-editor/components/errorInterface/error.mjs +2 -0
  65. package/esm2022/lib/sharedComponents/assessment-editor/components/errorInterface/question.mjs +2 -0
  66. package/esm2022/lib/sharedComponents/assessment-editor/components/errorInterface/validateStructure.mjs +2 -0
  67. package/esm2022/lib/sharedComponents/assessment-editor/components/logic/logic.component.mjs +104 -0
  68. package/esm2022/lib/sharedComponents/assessment-editor/components/logic-questions/logic-checkbox/logic-checkbox.component.mjs +26 -0
  69. package/esm2022/lib/sharedComponents/assessment-editor/components/logic-questions/logic-comment-box/logic-comment-box.component.mjs +14 -0
  70. package/esm2022/lib/sharedComponents/assessment-editor/components/logic-questions/logic-date-time/logic-date-time.component.mjs +56 -0
  71. package/esm2022/lib/sharedComponents/assessment-editor/components/logic-questions/logic-dropdown/logic-dropdown.component.mjs +33 -0
  72. package/esm2022/lib/sharedComponents/assessment-editor/components/logic-questions/logic-image-choice/logic-image-choice.component.mjs +17 -0
  73. package/esm2022/lib/sharedComponents/assessment-editor/components/logic-questions/logic-multiple-choice/logic-multiple-choice.component.mjs +26 -0
  74. package/esm2022/lib/sharedComponents/assessment-editor/components/logic-questions/logic-multiple-textbox/logic-multiple-textbox.component.mjs +16 -0
  75. package/esm2022/lib/sharedComponents/assessment-editor/components/logic-questions/logic-questions.module.mjs +101 -0
  76. package/esm2022/lib/sharedComponents/assessment-editor/components/logic-questions/logic-ranking/logic-ranking.component.mjs +16 -0
  77. package/esm2022/lib/sharedComponents/assessment-editor/components/logic-questions/logic-single-textbox/logic-single-textbox.component.mjs +24 -0
  78. package/esm2022/lib/sharedComponents/assessment-editor/components/logic-questions/logic-slider/logic-slider.component.mjs +14 -0
  79. package/esm2022/lib/sharedComponents/assessment-editor/components/logic-questions/logic-star-rating/logic-star-rating.component.mjs +16 -0
  80. package/esm2022/lib/sharedComponents/assessment-editor/components/move/move.component.mjs +103 -0
  81. package/esm2022/lib/sharedComponents/assessment-editor/components/page-header/page-header.component.mjs +23 -0
  82. package/esm2022/lib/sharedComponents/assessment-editor/components/pipes/current-page-question.pipe.mjs +22 -0
  83. package/esm2022/lib/sharedComponents/assessment-editor/components/pipes/error-message.pipe.mjs +27 -0
  84. package/esm2022/lib/sharedComponents/assessment-editor/components/pipes/formatter.pipe.mjs +21 -0
  85. package/esm2022/lib/sharedComponents/assessment-editor/components/pipes/question-filter.pipe.mjs +17 -0
  86. package/esm2022/lib/sharedComponents/assessment-editor/components/pipes/question-page-filter.pipe.mjs +16 -0
  87. package/esm2022/lib/sharedComponents/assessment-editor/components/pipes/question-parser.pipe.mjs +21 -0
  88. package/esm2022/lib/sharedComponents/assessment-editor/components/pipes/type-of.pipe.mjs +16 -0
  89. package/esm2022/lib/sharedComponents/assessment-editor/components/preview/preview-checkbox/preview-checkbox.component.mjs +28 -0
  90. package/esm2022/lib/sharedComponents/assessment-editor/components/preview/preview-comment-box/preview-comment-box.component.mjs +14 -0
  91. package/esm2022/lib/sharedComponents/assessment-editor/components/preview/preview-date-time/preview-date-time.component.mjs +49 -0
  92. package/esm2022/lib/sharedComponents/assessment-editor/components/preview/preview-dropdown/preview-dropdown.component.mjs +30 -0
  93. package/esm2022/lib/sharedComponents/assessment-editor/components/preview/preview-file-upload/preview-file-upload.component.mjs +21 -0
  94. package/esm2022/lib/sharedComponents/assessment-editor/components/preview/preview-image-choice/preview-image-choice.component.mjs +17 -0
  95. package/esm2022/lib/sharedComponents/assessment-editor/components/preview/preview-matrix-dropdown/preview-matrix-dropdown.component.mjs +31 -0
  96. package/esm2022/lib/sharedComponents/assessment-editor/components/preview/preview-matrix-rating-scale/preview-matrix-rating-scale.component.mjs +28 -0
  97. package/esm2022/lib/sharedComponents/assessment-editor/components/preview/preview-multiple-choice/preview-multiple-choice.component.mjs +28 -0
  98. package/esm2022/lib/sharedComponents/assessment-editor/components/preview/preview-multiple-textbox/preview-multiple-textbox.component.mjs +16 -0
  99. package/esm2022/lib/sharedComponents/assessment-editor/components/preview/preview-ranking/preview-ranking.component.mjs +16 -0
  100. package/esm2022/lib/sharedComponents/assessment-editor/components/preview/preview-single-textbox/preview-single-textbox.component.mjs +16 -0
  101. package/esm2022/lib/sharedComponents/assessment-editor/components/preview/preview-slider/preview-slider.component.mjs +14 -0
  102. package/esm2022/lib/sharedComponents/assessment-editor/components/preview/preview-star-rating/preview-star-rating.component.mjs +16 -0
  103. package/esm2022/lib/sharedComponents/assessment-editor/components/preview/preview-wrapper/preview-wrapper.component.mjs +78 -0
  104. package/esm2022/lib/sharedComponents/assessment-editor/components/preview/preview.module.mjs +152 -0
  105. package/esm2022/lib/sharedComponents/assessment-editor/components/preview/thank-you/thank-you.component.mjs +14 -0
  106. package/esm2022/lib/sharedComponents/assessment-editor/components/preview/welcome/welcome.component.mjs +14 -0
  107. package/esm2022/lib/sharedComponents/assessment-editor/components/question-type/question-type.component.mjs +19 -0
  108. package/esm2022/lib/sharedComponents/assessment-editor/components/quick-settings/quick-settings.component.mjs +252 -0
  109. package/esm2022/lib/sharedComponents/assessment-editor/components/response-selector/response-selector.component.mjs +35 -0
  110. package/esm2022/lib/sharedComponents/assessment-editor/components/setting-anonymous/setting-anonymous.component.mjs +61 -0
  111. package/esm2022/lib/sharedComponents/assessment-editor/components/setting-response-segment/setting-response-segment.component.mjs +163 -0
  112. package/esm2022/lib/sharedComponents/assessment-editor/components/single-line-editor/single-line-editor.component.mjs +118 -0
  113. package/esm2022/lib/sharedComponents/assessment-editor/components/toolkit/toolkit.component.mjs +23 -0
  114. package/esm2022/lib/sharedComponents/assessment-editor/components/welcome-thankyou/welcome-thankyou.component.mjs +97 -0
  115. package/esm2022/lib/sharedComponents/assessment-editor/create-assessment-container/create-assessment-container.component.mjs +493 -0
  116. package/esm2022/lib/sharedComponents/assessment-editor/create-assessment.module.mjs +154 -0
  117. package/esm2022/lib/sharedComponents/assessment-editor/services/editor.service.mjs +635 -0
  118. package/esm2022/lib/sharedComponents/assessment-editor/services/result-criteria.service.mjs +48 -0
  119. package/esm2022/lib/sharedComponents/assessment-editor/services/validator.service.mjs +546 -0
  120. package/esm2022/lib/sharedComponents/assessment-list/assessment-list-loader/assessment-list-loader.component.mjs +15 -0
  121. package/esm2022/lib/sharedComponents/assessment-list/assessment-list-sub-loader/assessment-list-sub-loader.component.mjs +15 -0
  122. package/esm2022/lib/sharedComponents/assessment-list/assessment-list.component.mjs +207 -0
  123. package/esm2022/lib/sharedComponents/assessment-list/service/assessment.interface.mjs +2 -0
  124. package/esm2022/lib/sharedComponents/assessment-list/service/assessment.service.mjs +31 -0
  125. package/esm2022/lib/sharedComponents/assessment-preview/assessment-preview.module.mjs +113 -0
  126. package/esm2022/lib/sharedComponents/assessment-preview/checkbox-question/checkbox-question.component.mjs +33 -0
  127. package/esm2022/lib/sharedComponents/assessment-preview/date-time/date-time.component.mjs +53 -0
  128. package/esm2022/lib/sharedComponents/assessment-preview/description-preview/description-preview.component.mjs +24 -0
  129. package/esm2022/lib/sharedComponents/assessment-preview/device/device.component.mjs +21 -0
  130. package/esm2022/lib/sharedComponents/assessment-preview/file-upload/file-upload.component.mjs +22 -0
  131. package/esm2022/lib/sharedComponents/assessment-preview/page-header/page-header.component.mjs +21 -0
  132. package/esm2022/lib/sharedComponents/assessment-preview/pipes/get-section-order.pipe.mjs +24 -0
  133. package/esm2022/lib/sharedComponents/assessment-preview/preview/preview.component.mjs +62 -0
  134. package/esm2022/lib/sharedComponents/assessment-preview/preview-container/preview-container.component.mjs +22 -0
  135. package/esm2022/lib/sharedComponents/assessment-preview/quick-settings/quick-settings.component.mjs +22 -0
  136. package/esm2022/lib/sharedComponents/assessment-preview/radio-question/radio-question.component.mjs +33 -0
  137. package/esm2022/lib/sharedComponents/assessment-preview/section-details/section-details.component.mjs +20 -0
  138. package/esm2022/lib/sharedComponents/assessment-preview/select-question/select-question.component.mjs +35 -0
  139. package/esm2022/lib/sharedComponents/assessment-preview/single-textbox/single-textbox.component.mjs +21 -0
  140. package/esm2022/lib/sharedComponents/assessment-preview/welcome/welcome.component.mjs +17 -0
  141. package/esm2022/lib/sharedComponents/audit-category-list/audit-category-list.component.mjs +61 -0
  142. package/esm2022/lib/sharedComponents/audit-category-list/audit-category.model.mjs +2 -0
  143. package/esm2022/lib/sharedComponents/bulk-responsibility-view/bulk-responsibility-view.component.mjs +72 -0
  144. package/esm2022/lib/sharedComponents/bulk-view/bulk-view.component.mjs +75 -0
  145. package/esm2022/lib/sharedComponents/category-list/category-list.component.mjs +84 -0
  146. package/esm2022/lib/sharedComponents/category-multiselect/category-multi-select.component.mjs +166 -0
  147. package/esm2022/lib/sharedComponents/checkbox-list/checkbox-list.component.mjs +92 -0
  148. package/esm2022/lib/sharedComponents/checkpoint/checkpoints/checkpoints.component.mjs +315 -0
  149. package/esm2022/lib/sharedComponents/checkpoint/checkpoints-list/checkpoints-list.component.mjs +25 -0
  150. package/esm2022/lib/sharedComponents/checkpoint/checkpoints-questions/checkpoints-questions.component.mjs +149 -0
  151. package/esm2022/lib/sharedComponents/checkpoint-floating-bar/checkpoint-floating-bar.component.mjs +48 -0
  152. package/esm2022/lib/sharedComponents/checkpoint-policy/checkpoints-policy-container/checkpoints-policy-container.component.mjs +77 -0
  153. package/esm2022/lib/sharedComponents/checkpoint-policy/checkpoints-policy-list/checkpoints-policy-list.component.mjs +14 -0
  154. package/esm2022/lib/sharedComponents/checkpoint-policy/checkpoints-policy-questions/checkpoints-policy-questions.component.mjs +197 -0
  155. package/esm2022/lib/sharedComponents/directive/autofocus.directive.mjs +22 -0
  156. package/esm2022/lib/sharedComponents/directive/conditional-focus.directive.mjs +35 -0
  157. package/esm2022/lib/sharedComponents/directive/drag-drop.directive.mjs +52 -0
  158. package/esm2022/lib/sharedComponents/directive/input-trim.directive.mjs +21 -0
  159. package/esm2022/lib/sharedComponents/directive/scroll-in-view.directive.mjs +35 -0
  160. package/esm2022/lib/sharedComponents/document-section/document-section.component.mjs +184 -0
  161. package/esm2022/lib/sharedComponents/floating-bar/floating-bar.component.mjs +122 -0
  162. package/esm2022/lib/sharedComponents/floating-bar/floating-bar.module.mjs +20 -0
  163. package/esm2022/lib/sharedComponents/format-and-evidence/format-and-evidence.component.mjs +308 -0
  164. package/esm2022/lib/sharedComponents/framework-list/framework-integration-interfaces.mjs +2 -0
  165. package/esm2022/lib/sharedComponents/framework-list/framework-list-table/framework-list-table.component.mjs +38 -0
  166. package/esm2022/lib/sharedComponents/framework-list/framework-list.component.mjs +429 -0
  167. package/esm2022/lib/sharedComponents/framework-list/framework-responsibility-table/framework-responsibility-table.component.mjs +43 -0
  168. package/esm2022/lib/sharedComponents/framework-list/framework-table-loader/framework-table-loader.component.mjs +15 -0
  169. package/esm2022/lib/sharedComponents/framework-list/parent-table/parent-table.component.mjs +95 -0
  170. package/esm2022/lib/sharedComponents/frequency/frequency-annual/frequency-annual.component.mjs +297 -0
  171. package/esm2022/lib/sharedComponents/frequency/frequency-biannual/frequency-biannual.component.mjs +218 -0
  172. package/esm2022/lib/sharedComponents/frequency/frequency-checkbox-list/frequency-checkbox-list.component.mjs +36 -0
  173. package/esm2022/lib/sharedComponents/frequency/frequency-container/frequency-container.component.mjs +303 -0
  174. package/esm2022/lib/sharedComponents/frequency/frequency-daily/frequency-daily.component.mjs +152 -0
  175. package/esm2022/lib/sharedComponents/frequency/frequency-due-date/due-date.contant.mjs +21 -0
  176. package/esm2022/lib/sharedComponents/frequency/frequency-due-date/frequency-due-date.component.mjs +83 -0
  177. package/esm2022/lib/sharedComponents/frequency/frequency-lifecycle/frequency-lifecycle.component.mjs +199 -0
  178. package/esm2022/lib/sharedComponents/frequency/frequency-lifecycle/lifecycl.constant.mjs +12 -0
  179. package/esm2022/lib/sharedComponents/frequency/frequency-monthly/frequency-monthly.component.mjs +223 -0
  180. package/esm2022/lib/sharedComponents/frequency/frequency-on-completion-of/frequency-on-completion-of.component.mjs +170 -0
  181. package/esm2022/lib/sharedComponents/frequency/frequency-one-time/frequency-one-time.component.mjs +189 -0
  182. package/esm2022/lib/sharedComponents/frequency/frequency-ongoing/frequency-ongoing.component.mjs +75 -0
  183. package/esm2022/lib/sharedComponents/frequency/frequency-quarterly/frequency-quarterly.component.mjs +214 -0
  184. package/esm2022/lib/sharedComponents/frequency/frequency-radio-list/frequency-radio-list.component.mjs +36 -0
  185. package/esm2022/lib/sharedComponents/frequency/frequency-random/frequency-random.component.mjs +253 -0
  186. package/esm2022/lib/sharedComponents/frequency/frequency-responsibility-list/frequency-responsibility-list.component.mjs +213 -0
  187. package/esm2022/lib/sharedComponents/frequency/frequency-top/frequency-top.component.mjs +133 -0
  188. package/esm2022/lib/sharedComponents/frequency/frequency-weekly/frequency-weekly.component.mjs +200 -0
  189. package/esm2022/lib/sharedComponents/frequency/frequency.service.mjs +573 -0
  190. package/esm2022/lib/sharedComponents/frequency-dialog/frequency-dialog-annual/frequency-dialog-annual.component.mjs +300 -0
  191. package/esm2022/lib/sharedComponents/frequency-dialog/frequency-dialog-biannual/frequency-dialog-biannual.component.mjs +216 -0
  192. package/esm2022/lib/sharedComponents/frequency-dialog/frequency-dialog-checkbox-list/frequency-dialog-checkbox-list.component.mjs +29 -0
  193. package/esm2022/lib/sharedComponents/frequency-dialog/frequency-dialog-container/frequency-dialog-container.component.mjs +296 -0
  194. package/esm2022/lib/sharedComponents/frequency-dialog/frequency-dialog-due-date/frequency-dialog-due-date.component.mjs +110 -0
  195. package/esm2022/lib/sharedComponents/frequency-dialog/frequency-dialog-monthly/frequency-dialog-monthly.component.mjs +227 -0
  196. package/esm2022/lib/sharedComponents/frequency-dialog/frequency-dialog-one-time/frequency-dialog-one-time.component.mjs +213 -0
  197. package/esm2022/lib/sharedComponents/frequency-dialog/frequency-dialog-quarterly/frequency-dialog-quarterly.component.mjs +212 -0
  198. package/esm2022/lib/sharedComponents/frequency-dialog/frequency-dialog-radio-list/frequency-dialog-radio-list.component.mjs +33 -0
  199. package/esm2022/lib/sharedComponents/frequency-dialog/frequency-dialog-top/frequency-dialog-top.component.mjs +128 -0
  200. package/esm2022/lib/sharedComponents/frequency-dialog/frequency-dialog-weekly/frequency-dialog-weekly.component.mjs +197 -0
  201. package/esm2022/lib/sharedComponents/group-users-list/group-users-list.component.mjs +259 -0
  202. package/esm2022/lib/sharedComponents/link-program/link-program/link-program.component.mjs +472 -0
  203. package/esm2022/lib/sharedComponents/link-program/link-program/program-list-model.mjs +2 -0
  204. package/esm2022/lib/sharedComponents/link-program/program-integration-interfaces.mjs +2 -0
  205. package/esm2022/lib/sharedComponents/link-program/restapi.service.mjs +149 -0
  206. package/esm2022/lib/sharedComponents/link-program/tooltip-validation.pipe.mjs +28 -0
  207. package/esm2022/lib/sharedComponents/link-responsibility/link-responsibility.component.mjs +221 -0
  208. package/esm2022/lib/sharedComponents/list-loader/list-loader.component.mjs +15 -0
  209. package/esm2022/lib/sharedComponents/list-loader/list-loader.module.mjs +18 -0
  210. package/esm2022/lib/sharedComponents/no-data/no-data.component.mjs +36 -0
  211. package/esm2022/lib/sharedComponents/no-data/no-data.module.mjs +18 -0
  212. package/esm2022/lib/sharedComponents/owner-list/owner-list.component.mjs +176 -0
  213. package/esm2022/lib/sharedComponents/pipes/array-filter.pipe.mjs +18 -0
  214. package/esm2022/lib/sharedComponents/pipes/filterPipe.mjs +30 -0
  215. package/esm2022/lib/sharedComponents/pipes/rcTreeToolTip.pipe.mjs +26 -0
  216. package/esm2022/lib/sharedComponents/pipes/short-merge.pipe.mjs +24 -0
  217. package/esm2022/lib/sharedComponents/pipes/spaceTrim.pipe.mjs +18 -0
  218. package/esm2022/lib/sharedComponents/pipes/within-data.pipe.mjs +21 -0
  219. package/esm2022/lib/sharedComponents/policy-access/policy-access.component.mjs +88 -0
  220. package/esm2022/lib/sharedComponents/program-listing/program-list-model.mjs +2 -0
  221. package/esm2022/lib/sharedComponents/program-listing/program-listing.component.mjs +739 -0
  222. package/esm2022/lib/sharedComponents/radio-list/radio-list.component.mjs +82 -0
  223. package/esm2022/lib/sharedComponents/radio-list-with-pagination/link-treatment-loader/link-treatment-loader.component.mjs +14 -0
  224. package/esm2022/lib/sharedComponents/radio-list-with-pagination/radio-list.component.mjs +128 -0
  225. package/esm2022/lib/sharedComponents/responsibility-centers-list/rc-list.module.mjs +40 -0
  226. package/esm2022/lib/sharedComponents/responsibility-centers-list/responsibility-centers-list.component.mjs +125 -0
  227. package/esm2022/lib/sharedComponents/responsibility-risk-selector/responsibility-risk-selector.component.mjs +81 -0
  228. package/esm2022/lib/sharedComponents/review-frequency/review-frequency.component.mjs +44 -0
  229. package/esm2022/lib/sharedComponents/risk-classification/risk-classification.component.mjs +102 -0
  230. package/esm2022/lib/sharedComponents/roles-list/roles-list.component.mjs +30 -0
  231. package/esm2022/lib/sharedComponents/select-approvers/select-approvers.component.mjs +78 -0
  232. package/esm2022/lib/sharedComponents/table-card-loader/table-card-loader.component.mjs +15 -0
  233. package/esm2022/lib/sharedComponents/users-radio-list/users-radio-list.component.mjs +83 -0
  234. package/esm2022/lib/sharedComponents/v-loader/loader/loader.component.mjs +21 -0
  235. package/esm2022/lib/sharedComponents/v-loader/loader-inline/loader-inline.component.mjs +21 -0
  236. package/esm2022/lib/sharedComponents/v-loader/v-loader.module.mjs +19 -0
  237. package/esm2022/lib/ui-kit/action-dialog/action-dialog.module.mjs +21 -0
  238. package/esm2022/lib/ui-kit/action-dialog/active/active.component.mjs +32 -0
  239. package/esm2022/lib/ui-kit/action-dialog/deactivate/deactivate.component.mjs +33 -0
  240. package/esm2022/lib/ui-kit/action-dialog/delete/delete.component.mjs +26 -0
  241. package/esm2022/lib/ui-kit/action-dialog/duplicate/duplicate.component.mjs +28 -0
  242. package/esm2022/lib/ui-kit/click-outside/click-outside.directive.mjs +29 -0
  243. package/esm2022/lib/ui-kit/click-outside/click-outside.module.mjs +22 -0
  244. package/esm2022/lib/ui-kit/dialog/dialog-config.mjs +3 -0
  245. package/esm2022/lib/ui-kit/dialog/dialog-injector.mjs +14 -0
  246. package/esm2022/lib/ui-kit/dialog/dialog-ref.mjs +11 -0
  247. package/esm2022/lib/ui-kit/dialog/dialog.component.mjs +88 -0
  248. package/esm2022/lib/ui-kit/dialog/dialog.module.mjs +20 -0
  249. package/esm2022/lib/ui-kit/dialog/dialog.service.mjs +58 -0
  250. package/esm2022/lib/ui-kit/dialog/insertion.directive.mjs +16 -0
  251. package/esm2022/lib/ui-kit/directive/directive.module.mjs +24 -0
  252. package/esm2022/lib/ui-kit/directive/stop-propagation.directive.mjs +20 -0
  253. package/esm2022/lib/ui-kit/editor-loader/editor-loader/editor-loader.component.mjs +15 -0
  254. package/esm2022/lib/ui-kit/editor-loader/editor-loader.module.mjs +22 -0
  255. package/esm2022/lib/ui-kit/format-html.pipe.mjs +20 -0
  256. package/esm2022/lib/ui-kit/formgroup/click-outside.directive.mjs +29 -0
  257. package/esm2022/lib/ui-kit/formgroup/cs-checkbox/cs-checkbox.component.mjs +31 -0
  258. package/esm2022/lib/ui-kit/formgroup/cs-checkbox-indeterminate/cs-checkbox-indeterminate.component.mjs +35 -0
  259. package/esm2022/lib/ui-kit/formgroup/cs-radio/cs-radio.component.mjs +30 -0
  260. package/esm2022/lib/ui-kit/formgroup/cs-radio-group/cs-radio-group.component.mjs +14 -0
  261. package/esm2022/lib/ui-kit/formgroup/cs-select/cs-select.component.mjs +100 -0
  262. package/esm2022/lib/ui-kit/formgroup/cs-switch/cs-switch.component.mjs +32 -0
  263. package/esm2022/lib/ui-kit/formgroup/formgroup.module.mjs +60 -0
  264. package/esm2022/lib/ui-kit/formgroup/pipes/pascal.pipe.mjs +19 -0
  265. package/esm2022/lib/ui-kit/formgroup/pipes/searchMultiSelect.pipe.mjs +24 -0
  266. package/esm2022/lib/ui-kit/line-loader/line-loader.component.mjs +15 -0
  267. package/esm2022/lib/ui-kit/line-loader/line-loader.module.mjs +18 -0
  268. package/esm2022/lib/ui-kit/no-data/no-data.component.mjs +45 -0
  269. package/esm2022/lib/ui-kit/no-data/no-data.module.mjs +18 -0
  270. package/esm2022/lib/ui-kit/pagination/pagination/pagination.component.mjs +116 -0
  271. package/esm2022/lib/ui-kit/pagination/pagination.module.mjs +28 -0
  272. package/esm2022/lib/ui-kit/popover/popover-event.directive.mjs +28 -0
  273. package/esm2022/lib/ui-kit/popover/popover-longpress.directive.mjs +44 -0
  274. package/esm2022/lib/ui-kit/popover/popover.component.mjs +138 -0
  275. package/esm2022/lib/ui-kit/popover/popover.directive.mjs +97 -0
  276. package/esm2022/lib/ui-kit/popover/popover.module.mjs +23 -0
  277. package/esm2022/lib/ui-kit/popover/popover.service.mjs +15 -0
  278. package/esm2022/lib/ui-kit/popover-hover/popover-hover.component.mjs +109 -0
  279. package/esm2022/lib/ui-kit/popover-hover/popover-hover.directive.mjs +34 -0
  280. package/esm2022/lib/ui-kit/popover-hover/popover-hover.module.mjs +31 -0
  281. package/esm2022/lib/ui-kit/popover-hover/popover-hover.service.mjs +14 -0
  282. package/esm2022/lib/ui-kit/smiley-dialog/smiley-dialog.component.mjs +43 -0
  283. package/esm2022/lib/ui-kit/smiley-dialog/smiley-dialog.module.mjs +18 -0
  284. package/esm2022/lib/ui-kit/smiley-dialog-inline/smiley-dialog-inline.component.mjs +43 -0
  285. package/esm2022/lib/ui-kit/smiley-dialog-inline/smiley-dialog-inline.module.mjs +18 -0
  286. package/esm2022/lib/ui-kit/snack-bar/snack-bar.component.mjs +51 -0
  287. package/esm2022/lib/ui-kit/snack-bar/snack-bar.module.mjs +18 -0
  288. package/esm2022/lib/ui-kit/snack-bar/snack-bar.service.mjs +32 -0
  289. package/esm2022/lib/ui-kit/time-picker/constants/constant.mjs +5 -0
  290. package/esm2022/lib/ui-kit/time-picker/time-picker/time-picker.component.mjs +220 -0
  291. package/esm2022/lib/ui-kit/time-picker/time-picker.module.mjs +24 -0
  292. package/esm2022/lib/ui-kit/tooltip/tooltip.directive.mjs +156 -0
  293. package/esm2022/lib/ui-kit/tooltip/tooltip.module.mjs +18 -0
  294. package/esm2022/lib/workflow/grc-object/grc-object-container/grc-object-container.component.mjs +831 -0
  295. package/esm2022/lib/workflow/grc-object/grc-object.module.mjs +64 -0
  296. package/esm2022/lib/workflow/shared/components/attributes/attributes-checkbox/attributes-checkbox.component.mjs +95 -0
  297. package/esm2022/lib/workflow/shared/components/attributes/attributes-dropdown/attributes-dropdown.component.mjs +110 -0
  298. package/esm2022/lib/workflow/shared/components/attributes/attributes-text-box/attributes-text-box.component.mjs +118 -0
  299. package/esm2022/lib/workflow/shared/components/attributes/attributes.component.mjs +100 -0
  300. package/esm2022/lib/workflow/shared/components/attributes/date-picker/date-picker.component.mjs +116 -0
  301. package/esm2022/lib/workflow/shared/components/edit-mode/edit-mode.component.mjs +216 -0
  302. package/esm2022/lib/workflow/shared/components/grc-category-listing/grc-category-listing.component.mjs +119 -0
  303. package/esm2022/lib/workflow/shared/components/grc-object-list/grc-object-list.component.mjs +198 -0
  304. package/esm2022/lib/workflow/shared/components/grc-responsibility-listing/grc-responsibility-listing.component.mjs +202 -0
  305. package/esm2022/lib/workflow/shared/components/grc-risk-listing/grc-risk-listing.component.mjs +191 -0
  306. package/esm2022/lib/workflow/shared/components/grc-sub-category-listing/grc-sub-category-listing.component.mjs +86 -0
  307. package/esm2022/lib/workflow/shared/components/list-popup/list-popup.component.mjs +209 -0
  308. package/esm2022/lib/workflow/shared/components/program-responsibility-listing/program-responsibility-listing.component.mjs +411 -0
  309. package/esm2022/lib/workflow/shared/components/risk-category-risk-listing/risk-category-risk-listing.component.mjs +241 -0
  310. package/esm2022/lib/workflow/shared/components/table-card/table-card.component.mjs +32 -0
  311. package/esm2022/lib/workflow/shared/components/text-field/text-field.component.mjs +143 -0
  312. package/esm2022/lib/workflow/shared/components/text-field-icon/text-field-icon.component.mjs +56 -0
  313. package/esm2022/lib/workflow/shared/constants/cdn-link.constant.mjs +11 -0
  314. package/esm2022/lib/workflow/shared/constants/field-text.constant.mjs +17 -0
  315. package/esm2022/lib/workflow/shared/constants/grcObject.constant.mjs +88 -0
  316. package/esm2022/lib/workflow/shared/constants/link-responsibility.constant.mjs +19 -0
  317. package/esm2022/lib/workflow/shared/constants/message.contstant.mjs +5 -0
  318. package/esm2022/lib/workflow/shared/constants/pagination-limits.constant.mjs +6 -0
  319. package/esm2022/lib/workflow/shared/constants/svg-link.constant.mjs +4 -0
  320. package/esm2022/lib/workflow/shared/constants/validation-message.constant.mjs +8 -0
  321. package/esm2022/lib/workflow/shared/interfaces/add-grc.mjs +2 -0
  322. package/esm2022/lib/workflow/shared/services/grc.service.mjs +310 -0
  323. package/esm2022/lib/workflow/shared/workflow-pipes/get-selected-value.pipe.mjs +30 -0
  324. package/esm2022/lib/workflow/shared/workflow-pipes/is-attributes-valid.pipe.mjs +48 -0
  325. package/esm2022/lib/workflow/shared/workflow-pipes/unique-responsibilities.pipe.mjs +24 -0
  326. package/esm2022/lib/workflow/shared/workflow-pipes/workflow-pipes.module.mjs +32 -0
  327. package/esm2022/lib/workflow-assessment/import-an-assessment/import-an-assessment.component.mjs +668 -0
  328. package/esm2022/lib/workflow-assessment/workflow-assessment.component.mjs +254 -0
  329. package/esm2022/lib/workflow-compliance/workflow-compliance.component.mjs +3913 -0
  330. package/esm2022/lib/workflow-engine-container/workflow-engine-container.component.mjs +734 -0
  331. package/esm2022/lib/workflow-engine.module.mjs +467 -0
  332. package/esm2022/lib/workflow-engine.service.mjs +14 -0
  333. package/esm2022/lib/workflow-interfaces/create-policy-form.mjs +2 -0
  334. package/esm2022/lib/workflow-pagination/workflow-pagination.component.mjs +116 -0
  335. package/esm2022/lib/workflow-policy/workflow-policy.component.mjs +1875 -0
  336. package/esm2022/lib/workflow-program/constants.mjs +51 -0
  337. package/esm2022/lib/workflow-program/create-program-ui/assessment-picker/assessment-loader/assessment-loader.component.mjs +15 -0
  338. package/esm2022/lib/workflow-program/create-program-ui/assessment-picker/assessment-picker.component.mjs +292 -0
  339. package/esm2022/lib/workflow-program/create-program-ui/assessment-picker/assessment-sub-loader/assessment-sub-loader.component.mjs +15 -0
  340. package/esm2022/lib/workflow-program/create-program-ui/assessment-picker/assessment.service.mjs +43 -0
  341. package/esm2022/lib/workflow-program/create-program-ui/assessment-picker/selected-assessment.pipe.mjs +22 -0
  342. package/esm2022/lib/workflow-program/create-program-ui/assessment-picker/workflow-pagination/workflow-pagination.component.mjs +116 -0
  343. package/esm2022/lib/workflow-program/create-program-ui/checkbox/checkbox.component.mjs +39 -0
  344. package/esm2022/lib/workflow-program/create-program-ui/create-program-ui.module.mjs +194 -0
  345. package/esm2022/lib/workflow-program/create-program-ui/cs-switch/cs-switch.component.mjs +44 -0
  346. package/esm2022/lib/workflow-program/create-program-ui/custom-field/custom-field.component.mjs +82 -0
  347. package/esm2022/lib/workflow-program/create-program-ui/define-framework-listing/define-framework-listing.component.mjs +267 -0
  348. package/esm2022/lib/workflow-program/create-program-ui/define-framework-listing/framework.service.mjs +44 -0
  349. package/esm2022/lib/workflow-program/create-program-ui/define-framework-listing/loader/loader.component.mjs +15 -0
  350. package/esm2022/lib/workflow-program/create-program-ui/define-framework-listing/pipes/category-all-select.pipe.mjs +23 -0
  351. package/esm2022/lib/workflow-program/create-program-ui/define-framework-listing/pipes/search.pipe.mjs +23 -0
  352. package/esm2022/lib/workflow-program/create-program-ui/define-framework-listing/pipes/sub-cat-indeter.pipe.mjs +26 -0
  353. package/esm2022/lib/workflow-program/create-program-ui/define-framework-listing/pipes/tooltip-message.pipe.mjs +68 -0
  354. package/esm2022/lib/workflow-program/create-program-ui/directives/input-trim.directive.mjs +21 -0
  355. package/esm2022/lib/workflow-program/create-program-ui/file-pill/file-pill.component.mjs +27 -0
  356. package/esm2022/lib/workflow-program/create-program-ui/floating-bar/floating-bar.component.mjs +106 -0
  357. package/esm2022/lib/workflow-program/create-program-ui/form-field/form-field.component.mjs +16 -0
  358. package/esm2022/lib/workflow-program/create-program-ui/input-with-pill/input-with-pill.component.mjs +30 -0
  359. package/esm2022/lib/workflow-program/create-program-ui/pagination/pagination/pagination.component.mjs +166 -0
  360. package/esm2022/lib/workflow-program/create-program-ui/pagination/pagination.module.mjs +28 -0
  361. package/esm2022/lib/workflow-program/create-program-ui/pipes/array-concat.pipe.mjs +16 -0
  362. package/esm2022/lib/workflow-program/create-program-ui/pipes/assessment-resolver.pipe.mjs +27 -0
  363. package/esm2022/lib/workflow-program/create-program-ui/pipes/filter.pipe.mjs +30 -0
  364. package/esm2022/lib/workflow-program/create-program-ui/pipes/list-to-id.pipe.mjs +16 -0
  365. package/esm2022/lib/workflow-program/create-program-ui/pipes/pager.pipe.mjs +21 -0
  366. package/esm2022/lib/workflow-program/create-program-ui/pipes/ref-disconnect.pipe.mjs +17 -0
  367. package/esm2022/lib/workflow-program/create-program-ui/pipes/search.pipe.mjs +23 -0
  368. package/esm2022/lib/workflow-program/create-program-ui/role-list/loader/loader.component.mjs +15 -0
  369. package/esm2022/lib/workflow-program/create-program-ui/role-list/role-list.component.mjs +240 -0
  370. package/esm2022/lib/workflow-program/create-program-ui/tab-selector/tab-selector.component.mjs +43 -0
  371. package/esm2022/lib/workflow-program/create-program-ui/tick-mark/tick-mark.component.mjs +15 -0
  372. package/esm2022/lib/workflow-program/create-program-ui/user-group-list/user-group-list.component.mjs +434 -0
  373. package/esm2022/lib/workflow-program/workflow-program.component.mjs +1550 -0
  374. package/esm2022/lib/workflow-risk/workflow-risk.component.mjs +1642 -0
  375. package/esm2022/lib/workflow-services/add-risk.service.mjs +150 -0
  376. package/esm2022/lib/workflow-services/assessment.service.mjs +117 -0
  377. package/esm2022/lib/workflow-services/auth.service.mjs +229 -0
  378. package/esm2022/lib/workflow-services/frequency.service.mjs +173 -0
  379. package/esm2022/lib/workflow-services/log-issue.service.mjs +360 -0
  380. package/esm2022/lib/workflow-services/policy.service.mjs +163 -0
  381. package/esm2022/lib/workflow-services/programs.service.mjs +319 -0
  382. package/esm2022/lib/workflow-services/responsibility.service.mjs +293 -0
  383. package/esm2022/lib/workflow-services/token-decoder.service.mjs +38 -0
  384. package/esm2022/lib/workflow-services/ui-kit.service.mjs +17 -0
  385. package/esm2022/lib/workflow-survey-form/workflow-survey-form.component.mjs +26 -0
  386. package/esm2022/public-api.mjs +8 -0
  387. package/esm2022/vcomply-workflow-engine.mjs +5 -0
  388. package/fesm2022/vcomply-workflow-engine.mjs +44351 -0
  389. package/fesm2022/vcomply-workflow-engine.mjs.map +1 -0
  390. package/lib/add-multiple-responsibility/add-multiple-responsibility.component.d.ts +1 -1
  391. package/lib/add-multiple-responsibility-container/add-multiple-responsibility-container.component.d.ts +1 -1
  392. package/lib/add-multiple-responsibility-with-tab/add-multiple-responsibility-with-tab.component.d.ts +1 -1
  393. package/lib/add-multiple-risk/add-multiple-risk.component.d.ts +1 -1
  394. package/lib/confirmation-alert/confirmation-alert.component.d.ts +1 -1
  395. package/lib/create-documents/create-documents.component.d.ts +1 -1
  396. package/lib/formgroup/cs-checkbox/cs-checkbox.component.d.ts +1 -1
  397. package/lib/formgroup/cs-checkbox-indeterminate/cs-checkbox-indeterminate.component.d.ts +1 -1
  398. package/lib/formgroup/cs-radio/cs-radio.component.d.ts +1 -1
  399. package/lib/formgroup/cs-radio-group/cs-radio-group.component.d.ts +1 -1
  400. package/lib/formgroup/cs-select/cs-select.component.d.ts +1 -1
  401. package/lib/formgroup/cs-switch/cs-switch.component.d.ts +1 -1
  402. package/lib/formgroup/select/cs-option/cs-option.component.d.ts +1 -1
  403. package/lib/formgroup/select/cs-select/cs-select.component.d.ts +1 -1
  404. package/lib/log-an-issue/log-an-issue.component.d.ts +7 -3
  405. package/lib/more-option/more-option.component.d.ts +1 -1
  406. package/lib/services/common.service.d.ts +14 -0
  407. package/lib/sharedComponents/approval-workflow/approval-create-form/approval-create-form.component.d.ts +1 -1
  408. package/lib/sharedComponents/approval-workflow/approval-workflow-list/approval-workflow-list.component.d.ts +1 -1
  409. package/lib/sharedComponents/approval-workflow/approval-workflow.component.d.ts +1 -1
  410. package/lib/sharedComponents/assessment-editor/components/add-logic/add-logic.component.d.ts +1 -1
  411. package/lib/sharedComponents/assessment-editor/components/add-page-details/add-page-details.component.d.ts +1 -1
  412. package/lib/sharedComponents/assessment-editor/components/add-response-set-popup/add-response-set-popup.component.d.ts +1 -1
  413. package/lib/sharedComponents/assessment-editor/components/add-segment-popup/add-segment-popup.component.d.ts +1 -1
  414. package/lib/sharedComponents/assessment-editor/components/assessment-settings/assessment-settings.component.d.ts +1 -1
  415. package/lib/sharedComponents/assessment-editor/components/build/checkbox/checkbox.component.d.ts +1 -1
  416. package/lib/sharedComponents/assessment-editor/components/build/choice-settings-panel/choice-settings-panel.component.d.ts +1 -1
  417. package/lib/sharedComponents/assessment-editor/components/build/date-time/date-time.component.d.ts +1 -1
  418. package/lib/sharedComponents/assessment-editor/components/build/dropdown/dropdown.component.d.ts +1 -1
  419. package/lib/sharedComponents/assessment-editor/components/build/image-choice/image-choice.component.d.ts +1 -1
  420. package/lib/sharedComponents/assessment-editor/components/build/matrix-dropdown/matrix-dropdown.component.d.ts +1 -1
  421. package/lib/sharedComponents/assessment-editor/components/build/matrix-rating-scale/matrix-rating-scale.component.d.ts +1 -1
  422. package/lib/sharedComponents/assessment-editor/components/build/multiple-choice/multiple-choice.component.d.ts +1 -1
  423. package/lib/sharedComponents/assessment-editor/components/build/multiple-textbox/multiple-textbox.component.d.ts +1 -1
  424. package/lib/sharedComponents/assessment-editor/components/build/ranking/ranking.component.d.ts +1 -1
  425. package/lib/sharedComponents/assessment-editor/components/build/slider/slider.component.d.ts +1 -1
  426. package/lib/sharedComponents/assessment-editor/components/build/star-rating/star-rating.component.d.ts +1 -1
  427. package/lib/sharedComponents/assessment-editor/components/build/thank-you/thank-you.component.d.ts +1 -1
  428. package/lib/sharedComponents/assessment-editor/components/build/weightage-selector/weightage-selector.component.d.ts +1 -1
  429. package/lib/sharedComponents/assessment-editor/components/build/welcome/welcome.component.d.ts +1 -1
  430. package/lib/sharedComponents/assessment-editor/components/editor-wrapper/editor-wrapper.component.d.ts +1 -1
  431. package/lib/sharedComponents/assessment-editor/components/logic/logic.component.d.ts +1 -1
  432. package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-checkbox/logic-checkbox.component.d.ts +1 -1
  433. package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-comment-box/logic-comment-box.component.d.ts +1 -1
  434. package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-date-time/logic-date-time.component.d.ts +7 -3
  435. package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-dropdown/logic-dropdown.component.d.ts +1 -1
  436. package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-image-choice/logic-image-choice.component.d.ts +1 -1
  437. package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-multiple-choice/logic-multiple-choice.component.d.ts +1 -1
  438. package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-multiple-textbox/logic-multiple-textbox.component.d.ts +1 -1
  439. package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-ranking/logic-ranking.component.d.ts +1 -1
  440. package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-single-textbox/logic-single-textbox.component.d.ts +1 -1
  441. package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-slider/logic-slider.component.d.ts +1 -1
  442. package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-star-rating/logic-star-rating.component.d.ts +1 -1
  443. package/lib/sharedComponents/assessment-editor/components/move/move.component.d.ts +1 -1
  444. package/lib/sharedComponents/assessment-editor/components/page-header/page-header.component.d.ts +1 -1
  445. package/lib/sharedComponents/assessment-editor/components/preview/preview-checkbox/preview-checkbox.component.d.ts +1 -1
  446. package/lib/sharedComponents/assessment-editor/components/preview/preview-comment-box/preview-comment-box.component.d.ts +1 -1
  447. package/lib/sharedComponents/assessment-editor/components/preview/preview-date-time/preview-date-time.component.d.ts +8 -5
  448. package/lib/sharedComponents/assessment-editor/components/preview/preview-dropdown/preview-dropdown.component.d.ts +1 -1
  449. package/lib/sharedComponents/assessment-editor/components/preview/preview-file-upload/preview-file-upload.component.d.ts +1 -1
  450. package/lib/sharedComponents/assessment-editor/components/preview/preview-image-choice/preview-image-choice.component.d.ts +1 -1
  451. package/lib/sharedComponents/assessment-editor/components/preview/preview-matrix-dropdown/preview-matrix-dropdown.component.d.ts +1 -1
  452. package/lib/sharedComponents/assessment-editor/components/preview/preview-matrix-rating-scale/preview-matrix-rating-scale.component.d.ts +1 -1
  453. package/lib/sharedComponents/assessment-editor/components/preview/preview-multiple-choice/preview-multiple-choice.component.d.ts +1 -1
  454. package/lib/sharedComponents/assessment-editor/components/preview/preview-multiple-textbox/preview-multiple-textbox.component.d.ts +1 -1
  455. package/lib/sharedComponents/assessment-editor/components/preview/preview-ranking/preview-ranking.component.d.ts +1 -1
  456. package/lib/sharedComponents/assessment-editor/components/preview/preview-single-textbox/preview-single-textbox.component.d.ts +1 -1
  457. package/lib/sharedComponents/assessment-editor/components/preview/preview-slider/preview-slider.component.d.ts +1 -1
  458. package/lib/sharedComponents/assessment-editor/components/preview/preview-star-rating/preview-star-rating.component.d.ts +1 -1
  459. package/lib/sharedComponents/assessment-editor/components/preview/preview-wrapper/preview-wrapper.component.d.ts +1 -1
  460. package/lib/sharedComponents/assessment-editor/components/preview/thank-you/thank-you.component.d.ts +1 -1
  461. package/lib/sharedComponents/assessment-editor/components/preview/welcome/welcome.component.d.ts +1 -1
  462. package/lib/sharedComponents/assessment-editor/components/question-type/question-type.component.d.ts +1 -1
  463. package/lib/sharedComponents/assessment-editor/components/quick-settings/quick-settings.component.d.ts +1 -1
  464. package/lib/sharedComponents/assessment-editor/components/response-selector/response-selector.component.d.ts +1 -1
  465. package/lib/sharedComponents/assessment-editor/components/setting-anonymous/setting-anonymous.component.d.ts +1 -1
  466. package/lib/sharedComponents/assessment-editor/components/setting-response-segment/setting-response-segment.component.d.ts +1 -1
  467. package/lib/sharedComponents/assessment-editor/components/single-line-editor/single-line-editor.component.d.ts +1 -1
  468. package/lib/sharedComponents/assessment-editor/components/toolkit/toolkit.component.d.ts +1 -1
  469. package/lib/sharedComponents/assessment-editor/components/welcome-thankyou/welcome-thankyou.component.d.ts +1 -1
  470. package/lib/sharedComponents/assessment-editor/create-assessment-container/create-assessment-container.component.d.ts +1 -1
  471. package/lib/sharedComponents/assessment-list/assessment-list-loader/assessment-list-loader.component.d.ts +1 -1
  472. package/lib/sharedComponents/assessment-list/assessment-list-sub-loader/assessment-list-sub-loader.component.d.ts +1 -1
  473. package/lib/sharedComponents/assessment-list/assessment-list.component.d.ts +1 -1
  474. package/lib/sharedComponents/assessment-preview/checkbox-question/checkbox-question.component.d.ts +1 -1
  475. package/lib/sharedComponents/assessment-preview/date-time/date-time.component.d.ts +8 -5
  476. package/lib/sharedComponents/assessment-preview/description-preview/description-preview.component.d.ts +1 -1
  477. package/lib/sharedComponents/assessment-preview/device/device.component.d.ts +1 -1
  478. package/lib/sharedComponents/assessment-preview/file-upload/file-upload.component.d.ts +1 -1
  479. package/lib/sharedComponents/assessment-preview/page-header/page-header.component.d.ts +1 -1
  480. package/lib/sharedComponents/assessment-preview/preview/preview.component.d.ts +1 -1
  481. package/lib/sharedComponents/assessment-preview/preview-container/preview-container.component.d.ts +1 -1
  482. package/lib/sharedComponents/assessment-preview/quick-settings/quick-settings.component.d.ts +1 -1
  483. package/lib/sharedComponents/assessment-preview/radio-question/radio-question.component.d.ts +1 -1
  484. package/lib/sharedComponents/assessment-preview/section-details/section-details.component.d.ts +1 -1
  485. package/lib/sharedComponents/assessment-preview/select-question/select-question.component.d.ts +1 -1
  486. package/lib/sharedComponents/assessment-preview/single-textbox/single-textbox.component.d.ts +1 -1
  487. package/lib/sharedComponents/assessment-preview/welcome/welcome.component.d.ts +1 -1
  488. package/lib/sharedComponents/audit-category-list/audit-category-list.component.d.ts +1 -1
  489. package/lib/sharedComponents/bulk-responsibility-view/bulk-responsibility-view.component.d.ts +1 -1
  490. package/lib/sharedComponents/bulk-view/bulk-view.component.d.ts +1 -1
  491. package/lib/sharedComponents/category-list/category-list.component.d.ts +1 -1
  492. package/lib/sharedComponents/category-multiselect/category-multi-select.component.d.ts +1 -1
  493. package/lib/sharedComponents/checkbox-list/checkbox-list.component.d.ts +1 -1
  494. package/lib/sharedComponents/checkpoint/checkpoints/checkpoints.component.d.ts +1 -1
  495. package/lib/sharedComponents/checkpoint/checkpoints-list/checkpoints-list.component.d.ts +1 -1
  496. package/lib/sharedComponents/checkpoint/checkpoints-questions/checkpoints-questions.component.d.ts +6 -2
  497. package/lib/sharedComponents/checkpoint-floating-bar/checkpoint-floating-bar.component.d.ts +1 -1
  498. package/lib/sharedComponents/checkpoint-policy/checkpoints-policy-container/checkpoints-policy-container.component.d.ts +1 -1
  499. package/lib/sharedComponents/checkpoint-policy/checkpoints-policy-list/checkpoints-policy-list.component.d.ts +1 -1
  500. package/lib/sharedComponents/checkpoint-policy/checkpoints-policy-questions/checkpoints-policy-questions.component.d.ts +1 -1
  501. package/lib/sharedComponents/directive/autofocus.directive.d.ts +1 -1
  502. package/lib/sharedComponents/directive/conditional-focus.directive.d.ts +1 -1
  503. package/lib/sharedComponents/directive/drag-drop.directive.d.ts +1 -1
  504. package/lib/sharedComponents/directive/input-trim.directive.d.ts +1 -1
  505. package/lib/sharedComponents/directive/scroll-in-view.directive.d.ts +1 -1
  506. package/lib/sharedComponents/document-section/document-section.component.d.ts +1 -1
  507. package/lib/sharedComponents/floating-bar/floating-bar.component.d.ts +1 -1
  508. package/lib/sharedComponents/format-and-evidence/format-and-evidence.component.d.ts +1 -1
  509. package/lib/sharedComponents/framework-list/framework-list-table/framework-list-table.component.d.ts +1 -1
  510. package/lib/sharedComponents/framework-list/framework-list.component.d.ts +1 -1
  511. package/lib/sharedComponents/framework-list/framework-responsibility-table/framework-responsibility-table.component.d.ts +1 -1
  512. package/lib/sharedComponents/framework-list/framework-table-loader/framework-table-loader.component.d.ts +1 -1
  513. package/lib/sharedComponents/framework-list/parent-table/parent-table.component.d.ts +1 -1
  514. package/lib/sharedComponents/frequency/frequency-annual/frequency-annual.component.d.ts +1 -1
  515. package/lib/sharedComponents/frequency/frequency-biannual/frequency-biannual.component.d.ts +1 -1
  516. package/lib/sharedComponents/frequency/frequency-checkbox-list/frequency-checkbox-list.component.d.ts +1 -1
  517. package/lib/sharedComponents/frequency/frequency-container/frequency-container.component.d.ts +1 -1
  518. package/lib/sharedComponents/frequency/frequency-daily/frequency-daily.component.d.ts +1 -1
  519. package/lib/sharedComponents/frequency/frequency-due-date/frequency-due-date.component.d.ts +1 -1
  520. package/lib/sharedComponents/frequency/frequency-lifecycle/frequency-lifecycle.component.d.ts +10 -4
  521. package/lib/sharedComponents/frequency/frequency-monthly/frequency-monthly.component.d.ts +1 -1
  522. package/lib/sharedComponents/frequency/frequency-on-completion-of/frequency-on-completion-of.component.d.ts +1 -1
  523. package/lib/sharedComponents/frequency/frequency-one-time/frequency-one-time.component.d.ts +9 -5
  524. package/lib/sharedComponents/frequency/frequency-ongoing/frequency-ongoing.component.d.ts +1 -1
  525. package/lib/sharedComponents/frequency/frequency-quarterly/frequency-quarterly.component.d.ts +1 -1
  526. package/lib/sharedComponents/frequency/frequency-radio-list/frequency-radio-list.component.d.ts +1 -1
  527. package/lib/sharedComponents/frequency/frequency-random/frequency-random.component.d.ts +1 -1
  528. package/lib/sharedComponents/frequency/frequency-responsibility-list/frequency-responsibility-list.component.d.ts +1 -1
  529. package/lib/sharedComponents/frequency/frequency-top/frequency-top.component.d.ts +1 -1
  530. package/lib/sharedComponents/frequency/frequency-weekly/frequency-weekly.component.d.ts +1 -1
  531. package/lib/sharedComponents/frequency/frequency.service.d.ts +1 -0
  532. package/lib/sharedComponents/frequency-dialog/frequency-dialog-annual/frequency-dialog-annual.component.d.ts +1 -1
  533. package/lib/sharedComponents/frequency-dialog/frequency-dialog-biannual/frequency-dialog-biannual.component.d.ts +1 -1
  534. package/lib/sharedComponents/frequency-dialog/frequency-dialog-checkbox-list/frequency-dialog-checkbox-list.component.d.ts +1 -1
  535. package/lib/sharedComponents/frequency-dialog/frequency-dialog-container/frequency-dialog-container.component.d.ts +1 -1
  536. package/lib/sharedComponents/frequency-dialog/frequency-dialog-due-date/frequency-dialog-due-date.component.d.ts +1 -1
  537. package/lib/sharedComponents/frequency-dialog/frequency-dialog-monthly/frequency-dialog-monthly.component.d.ts +1 -1
  538. package/lib/sharedComponents/frequency-dialog/frequency-dialog-one-time/frequency-dialog-one-time.component.d.ts +10 -5
  539. package/lib/sharedComponents/frequency-dialog/frequency-dialog-quarterly/frequency-dialog-quarterly.component.d.ts +1 -1
  540. package/lib/sharedComponents/frequency-dialog/frequency-dialog-radio-list/frequency-dialog-radio-list.component.d.ts +1 -1
  541. package/lib/sharedComponents/frequency-dialog/frequency-dialog-top/frequency-dialog-top.component.d.ts +1 -1
  542. package/lib/sharedComponents/frequency-dialog/frequency-dialog-weekly/frequency-dialog-weekly.component.d.ts +1 -1
  543. package/lib/sharedComponents/group-users-list/group-users-list.component.d.ts +1 -1
  544. package/lib/sharedComponents/link-program/link-program/link-program.component.d.ts +1 -1
  545. package/lib/sharedComponents/link-responsibility/link-responsibility.component.d.ts +1 -1
  546. package/lib/sharedComponents/list-loader/list-loader.component.d.ts +1 -1
  547. package/lib/sharedComponents/no-data/no-data.component.d.ts +1 -1
  548. package/lib/sharedComponents/owner-list/owner-list.component.d.ts +1 -1
  549. package/lib/sharedComponents/policy-access/policy-access.component.d.ts +1 -1
  550. package/lib/sharedComponents/program-listing/program-listing.component.d.ts +1 -1
  551. package/lib/sharedComponents/radio-list/radio-list.component.d.ts +1 -1
  552. package/lib/sharedComponents/radio-list-with-pagination/link-treatment-loader/link-treatment-loader.component.d.ts +1 -1
  553. package/lib/sharedComponents/radio-list-with-pagination/radio-list.component.d.ts +1 -1
  554. package/lib/sharedComponents/responsibility-centers-list/responsibility-centers-list.component.d.ts +1 -1
  555. package/lib/sharedComponents/responsibility-risk-selector/responsibility-risk-selector.component.d.ts +1 -1
  556. package/lib/sharedComponents/review-frequency/review-frequency.component.d.ts +1 -1
  557. package/lib/sharedComponents/risk-classification/risk-classification.component.d.ts +1 -1
  558. package/lib/sharedComponents/roles-list/roles-list.component.d.ts +1 -1
  559. package/lib/sharedComponents/select-approvers/select-approvers.component.d.ts +1 -1
  560. package/lib/sharedComponents/table-card-loader/table-card-loader.component.d.ts +1 -1
  561. package/lib/sharedComponents/users-radio-list/users-radio-list.component.d.ts +1 -1
  562. package/lib/sharedComponents/v-loader/loader/loader.component.d.ts +1 -1
  563. package/lib/sharedComponents/v-loader/loader-inline/loader-inline.component.d.ts +1 -1
  564. package/lib/ui-kit/action-dialog/active/active.component.d.ts +1 -1
  565. package/lib/ui-kit/action-dialog/deactivate/deactivate.component.d.ts +1 -1
  566. package/lib/ui-kit/action-dialog/delete/delete.component.d.ts +1 -1
  567. package/lib/ui-kit/action-dialog/duplicate/duplicate.component.d.ts +1 -1
  568. package/lib/ui-kit/click-outside/click-outside.directive.d.ts +1 -1
  569. package/lib/ui-kit/dialog/dialog-injector.d.ts +2 -2
  570. package/lib/ui-kit/dialog/dialog.component.d.ts +6 -4
  571. package/lib/ui-kit/dialog/dialog.service.d.ts +3 -3
  572. package/lib/ui-kit/dialog/insertion.directive.d.ts +1 -1
  573. package/lib/ui-kit/directive/stop-propagation.directive.d.ts +1 -1
  574. package/lib/ui-kit/editor-loader/editor-loader/editor-loader.component.d.ts +1 -1
  575. package/lib/ui-kit/formgroup/click-outside.directive.d.ts +1 -1
  576. package/lib/ui-kit/formgroup/cs-checkbox/cs-checkbox.component.d.ts +1 -1
  577. package/lib/ui-kit/formgroup/cs-checkbox-indeterminate/cs-checkbox-indeterminate.component.d.ts +1 -1
  578. package/lib/ui-kit/formgroup/cs-radio/cs-radio.component.d.ts +1 -1
  579. package/lib/ui-kit/formgroup/cs-radio-group/cs-radio-group.component.d.ts +1 -1
  580. package/lib/ui-kit/formgroup/cs-select/cs-select.component.d.ts +1 -1
  581. package/lib/ui-kit/formgroup/cs-switch/cs-switch.component.d.ts +1 -1
  582. package/lib/ui-kit/line-loader/line-loader.component.d.ts +1 -1
  583. package/lib/ui-kit/no-data/no-data.component.d.ts +1 -1
  584. package/lib/ui-kit/pagination/pagination/pagination.component.d.ts +1 -1
  585. package/lib/ui-kit/popover/popover-event.directive.d.ts +1 -1
  586. package/lib/ui-kit/popover/popover-longpress.directive.d.ts +1 -1
  587. package/lib/ui-kit/popover/popover.component.d.ts +1 -1
  588. package/lib/ui-kit/popover/popover.directive.d.ts +1 -1
  589. package/lib/ui-kit/popover-hover/popover-hover.component.d.ts +1 -1
  590. package/lib/ui-kit/popover-hover/popover-hover.directive.d.ts +1 -1
  591. package/lib/ui-kit/smiley-dialog/smiley-dialog.component.d.ts +1 -1
  592. package/lib/ui-kit/smiley-dialog-inline/smiley-dialog-inline.component.d.ts +1 -1
  593. package/lib/ui-kit/snack-bar/snack-bar.component.d.ts +1 -1
  594. package/lib/ui-kit/time-picker/time-picker/time-picker.component.d.ts +1 -1
  595. package/lib/ui-kit/tooltip/tooltip.directive.d.ts +1 -1
  596. package/lib/workflow/grc-object/grc-object-container/grc-object-container.component.d.ts +1 -1
  597. package/lib/workflow/shared/components/attributes/attributes-checkbox/attributes-checkbox.component.d.ts +1 -1
  598. package/lib/workflow/shared/components/attributes/attributes-dropdown/attributes-dropdown.component.d.ts +1 -1
  599. package/lib/workflow/shared/components/attributes/attributes-text-box/attributes-text-box.component.d.ts +1 -1
  600. package/lib/workflow/shared/components/attributes/attributes.component.d.ts +1 -1
  601. package/lib/workflow/shared/components/attributes/date-picker/date-picker.component.d.ts +1 -1
  602. package/lib/workflow/shared/components/edit-mode/edit-mode.component.d.ts +1 -1
  603. package/lib/workflow/shared/components/grc-category-listing/grc-category-listing.component.d.ts +1 -1
  604. package/lib/workflow/shared/components/grc-object-list/grc-object-list.component.d.ts +1 -1
  605. package/lib/workflow/shared/components/grc-responsibility-listing/grc-responsibility-listing.component.d.ts +1 -1
  606. package/lib/workflow/shared/components/grc-risk-listing/grc-risk-listing.component.d.ts +1 -1
  607. package/lib/workflow/shared/components/grc-sub-category-listing/grc-sub-category-listing.component.d.ts +1 -1
  608. package/lib/workflow/shared/components/list-popup/list-popup.component.d.ts +1 -1
  609. package/lib/workflow/shared/components/program-responsibility-listing/program-responsibility-listing.component.d.ts +1 -1
  610. package/lib/workflow/shared/components/risk-category-risk-listing/risk-category-risk-listing.component.d.ts +1 -1
  611. package/lib/workflow/shared/components/table-card/table-card.component.d.ts +1 -1
  612. package/lib/workflow/shared/components/text-field/text-field.component.d.ts +1 -1
  613. package/lib/workflow/shared/components/text-field-icon/text-field-icon.component.d.ts +1 -1
  614. package/lib/workflow-assessment/import-an-assessment/import-an-assessment.component.d.ts +1 -1
  615. package/lib/workflow-assessment/workflow-assessment.component.d.ts +1 -1
  616. package/lib/workflow-compliance/workflow-compliance.component.d.ts +1 -1
  617. package/lib/workflow-engine-container/workflow-engine-container.component.d.ts +1 -1
  618. package/lib/workflow-pagination/workflow-pagination.component.d.ts +1 -1
  619. package/lib/workflow-policy/workflow-policy.component.d.ts +7 -3
  620. package/lib/workflow-program/create-program-ui/assessment-picker/assessment-loader/assessment-loader.component.d.ts +1 -1
  621. package/lib/workflow-program/create-program-ui/assessment-picker/assessment-picker.component.d.ts +1 -1
  622. package/lib/workflow-program/create-program-ui/assessment-picker/assessment-sub-loader/assessment-sub-loader.component.d.ts +1 -1
  623. package/lib/workflow-program/create-program-ui/assessment-picker/workflow-pagination/workflow-pagination.component.d.ts +1 -1
  624. package/lib/workflow-program/create-program-ui/checkbox/checkbox.component.d.ts +1 -1
  625. package/lib/workflow-program/create-program-ui/cs-switch/cs-switch.component.d.ts +1 -1
  626. package/lib/workflow-program/create-program-ui/custom-field/custom-field.component.d.ts +1 -1
  627. package/lib/workflow-program/create-program-ui/define-framework-listing/define-framework-listing.component.d.ts +1 -1
  628. package/lib/workflow-program/create-program-ui/define-framework-listing/loader/loader.component.d.ts +1 -1
  629. package/lib/workflow-program/create-program-ui/directives/input-trim.directive.d.ts +1 -1
  630. package/lib/workflow-program/create-program-ui/file-pill/file-pill.component.d.ts +1 -1
  631. package/lib/workflow-program/create-program-ui/floating-bar/floating-bar.component.d.ts +1 -1
  632. package/lib/workflow-program/create-program-ui/form-field/form-field.component.d.ts +1 -1
  633. package/lib/workflow-program/create-program-ui/input-with-pill/input-with-pill.component.d.ts +1 -1
  634. package/lib/workflow-program/create-program-ui/pagination/pagination/pagination.component.d.ts +1 -1
  635. package/lib/workflow-program/create-program-ui/role-list/loader/loader.component.d.ts +1 -1
  636. package/lib/workflow-program/create-program-ui/role-list/role-list.component.d.ts +1 -1
  637. package/lib/workflow-program/create-program-ui/tab-selector/tab-selector.component.d.ts +1 -1
  638. package/lib/workflow-program/create-program-ui/tick-mark/tick-mark.component.d.ts +1 -1
  639. package/lib/workflow-program/create-program-ui/user-group-list/user-group-list.component.d.ts +1 -1
  640. package/lib/workflow-program/workflow-program.component.d.ts +1 -1
  641. package/lib/workflow-risk/workflow-risk.component.d.ts +1 -1
  642. package/lib/workflow-services/auth.service.d.ts +0 -1
  643. package/lib/workflow-services/log-issue.service.d.ts +1 -0
  644. package/lib/workflow-survey-form/workflow-survey-form.component.d.ts +1 -1
  645. package/package.json +5 -12
@@ -0,0 +1,635 @@
1
+ import { moveItemInArray } from '@angular/cdk/drag-drop';
2
+ import { HttpHeaders } from '@angular/common/http';
3
+ import { Injectable, Optional } from '@angular/core';
4
+ import { BehaviorSubject } from 'rxjs';
5
+ import { retry } from 'rxjs/operators';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@angular/common/http";
8
+ import * as i2 from "../../../configurations";
9
+ // import { environment } from 'src/environments/environment';
10
+ export class EditorService {
11
+ constructor(http, config) {
12
+ this.http = http;
13
+ this.currentPageDetails = { pageName: '', pageNumber: 1, pageDescription: '' };
14
+ this.prefixForQuestionName = 'Question_';
15
+ this.activeQuestionIndex = new BehaviorSubject(-5);
16
+ this.activeQuestionStream$ = this.activeQuestionIndex.asObservable();
17
+ this.currentPageNumber = 1;
18
+ this.activeQuestion = 0;
19
+ this.showAddPageOption = true;
20
+ this.showPageDetails = false;
21
+ this.score = {
22
+ defaultScore: 1,
23
+ negativeScore: 0
24
+ };
25
+ this.allPages = [];
26
+ this.stepIdentifier = 'pagescreen'; // this value can be "welcomescreen","thankyouscreen","pagescreen" only
27
+ this.settings = {
28
+ assessmentMode: false,
29
+ defaultScore: 1,
30
+ negativeScoreCriteria: 'FAILED',
31
+ negativeScore: 0,
32
+ weightageEnabled: false,
33
+ settingsEnabled: false
34
+ };
35
+ this.formsPage = {
36
+ version: 2,
37
+ questionRandomize: true,
38
+ anonymousResponse: false,
39
+ hasWelcome: false,
40
+ hasWelcomeDescription: true,
41
+ welcomeText: '',
42
+ hasWelcomeImage: true,
43
+ welcomeImage: '',
44
+ welcomeDescription: '',
45
+ hasThanks: false,
46
+ hasThankyouImage: false,
47
+ thankyouText: '',
48
+ thankyouImage: '',
49
+ hasThankyouDescription: true,
50
+ thankyouDescription: '',
51
+ elements: [],
52
+ pageDetailsList: [],
53
+ customResponseSet: [],
54
+ settings: this.settings,
55
+ responseSegment: this.initializeEmptyResponseSegment()
56
+ };
57
+ this.httpOptions = {
58
+ headers: new HttpHeaders({ 'Content-Type': 'application/json', token: this.getAuthorizationToken() })
59
+ };
60
+ if (config) {
61
+ this.env = config.envConfig;
62
+ }
63
+ }
64
+ initializeEmptyResponseSegment() {
65
+ return {
66
+ title: '',
67
+ description: '',
68
+ maxScore: 10,
69
+ segments: []
70
+ };
71
+ }
72
+ uploadHandler(formData, destination) {
73
+ return this.http.post(this.env.fileUploadEndPoint + destination, formData);
74
+ //return this.http.post<any>("env" + destination, formData);
75
+ }
76
+ addQuestion(evt, index) {
77
+ switch (evt.trim()) {
78
+ case 'welcome': {
79
+ this.currentPageNumber = -1;
80
+ this.stepIdentifier = 'welcomescreen';
81
+ this.formsPage.hasWelcome = true;
82
+ break;
83
+ }
84
+ case 'thankyou': {
85
+ this.currentPageNumber = -2;
86
+ this.stepIdentifier = 'thankyouscreen';
87
+ break;
88
+ }
89
+ case 'multiple-choice': {
90
+ this.setToPagefromWelcome();
91
+ this.createMultipleChoice(index);
92
+ break;
93
+ }
94
+ case 'checkbox': {
95
+ this.setToPagefromWelcome();
96
+ this.createCheckbox(index);
97
+ break;
98
+ }
99
+ case 'star-rating': {
100
+ this.setToPagefromWelcome();
101
+ this.createStarRating(index);
102
+ break;
103
+ }
104
+ case 'single-textbox': {
105
+ this.setToPagefromWelcome();
106
+ this.createSingleTextbox(index);
107
+ break;
108
+ }
109
+ case 'comment-box': {
110
+ this.setToPagefromWelcome();
111
+ this.createCommentbox(index);
112
+ break;
113
+ }
114
+ case 'matrix-dropdown': {
115
+ this.setToPagefromWelcome();
116
+ this.createMatrixDropdown(index);
117
+ break;
118
+ }
119
+ case 'dropdown': {
120
+ this.setToPagefromWelcome();
121
+ this.createDropdown(index);
122
+ break;
123
+ }
124
+ case 'slider': {
125
+ this.setToPagefromWelcome();
126
+ this.createSlider(index);
127
+ break;
128
+ }
129
+ case 'rating-scale': {
130
+ this.setToPagefromWelcome();
131
+ this.createRatingScale(index);
132
+ break;
133
+ }
134
+ case 'multiple-textbox': {
135
+ this.setToPagefromWelcome();
136
+ this.createMultipleTextbox(index);
137
+ break;
138
+ }
139
+ case 'date-time': {
140
+ this.setToPagefromWelcome();
141
+ this.createDateTime(index);
142
+ break;
143
+ }
144
+ case 'file-upload': {
145
+ this.setToPagefromWelcome();
146
+ this.createFileUpload(index);
147
+ break;
148
+ }
149
+ case 'ranking': {
150
+ this.setToPagefromWelcome();
151
+ this.createRanking(index);
152
+ break;
153
+ }
154
+ case 'star-rating': {
155
+ this.setToPagefromWelcome();
156
+ this.createStarRating(index);
157
+ break;
158
+ }
159
+ }
160
+ }
161
+ setToPagefromWelcome() {
162
+ if (['thankyouscreen', 'welcomescreen'].includes(this.stepIdentifier)) {
163
+ this.currentPageNumber = this.allPages.length;
164
+ this.stepIdentifier = 'pagescreen';
165
+ }
166
+ }
167
+ /**
168
+ * Check whether to display Page Details or Add Page tilte option
169
+ */
170
+ checkForPageDetails() {
171
+ if (this.currentPageDetails === undefined || this.currentPageDetails.pageName === '') {
172
+ this.showAddPageOption = true;
173
+ this.showPageDetails = false;
174
+ }
175
+ else {
176
+ this.showAddPageOption = false;
177
+ this.showPageDetails = true;
178
+ }
179
+ }
180
+ /**
181
+ * Creates a question of type multiple choice
182
+ * @param index Index at which question needs to be created
183
+ */
184
+ createMultipleChoice(index) {
185
+ const element = {
186
+ type: 'multiple-choice', name: ``, page: this.currentPageNumber, otherConfig: { color: '#000000', isFailed: false, score: this.score.defaultScore },
187
+ isRequired: false, title: '', hasDescription: false, description: '', hasComments: false, comments: '',
188
+ randomize: false, hasOther: false, otherValue: 'Other', alignment: false, reverse: false, visibilityLogic: [], choices: [
189
+ {
190
+ title: '', value: 1, isSelected: false, required: 0, hasHelpingLabel: false,
191
+ helpingLabel: '', isFailed: false, score: this.score.defaultScore, color: this.generateRandomColor()
192
+ }
193
+ ]
194
+ };
195
+ (index === undefined) ? this.operationOnCreateIfIndexUndefined(element) : this.operationOnCreateIfIndexDefined(element, index);
196
+ this.sortQuestion();
197
+ }
198
+ /**
199
+ * Creates a question of type checkbox
200
+ * @param index Index at which question needs to be created
201
+ */
202
+ createCheckbox(index) {
203
+ const element = {
204
+ type: 'checkbox', name: '', page: this.currentPageNumber, otherConfig: { color: '#000000', isFailed: false, score: this.score.defaultScore },
205
+ isRequired: false, title: '', hasDescription: false, description: '', hasComments: false, comments: '',
206
+ randomize: false, hasOther: false, otherValue: 'Other', alignment: false, reverse: false,
207
+ isRespondentAttachment: false, userAttachedFiles: [], isRespondentComment: false, userComments: '', visibilityLogic: [], choices: [{
208
+ title: '', value: 1, isSelected: false, required: 0, hasHelpingLabel: false,
209
+ helpingLabel: '', isFailed: false, score: this.score.defaultScore, color: this.generateRandomColor()
210
+ }
211
+ ]
212
+ };
213
+ (index === undefined) ? this.operationOnCreateIfIndexUndefined(element) : this.operationOnCreateIfIndexDefined(element, index);
214
+ this.sortQuestion();
215
+ }
216
+ /**
217
+ * Creates a question of type star rating
218
+ * @param index Index at which question needs to be created
219
+ * [Note]: Rating label type can take 2 values 'specific'/'scale'
220
+ */
221
+ createStarRating(index) {
222
+ const element = {
223
+ type: 'star-rating', name: '', page: this.currentPageNumber, isRequired: false, title: '', hasDescription: false,
224
+ description: '', hasComments: false, comments: '', randomize: false, hasOther: false, alignment: false, reverse: false,
225
+ isRespondentAttachment: false, userAttachedFiles: [], isRespondentComment: false, userComments: '', cursorType: 'number',
226
+ cursorColor: '#ff8000', scale: 2, starValue: '', hasRatingLabel: false, ratingLabelType: 'specific',
227
+ scaleRangeFrom: 'Not at all likely',
228
+ scaleRangeTo: 'Extreme Likely', visibilityLogic: [],
229
+ choices: [
230
+ { title: '', isVisible: true, value: 0, isSelected: false, required: 0, hasHelpingLabel: true, helpingLabel: '' },
231
+ { title: '', isVisible: true, value: 1, isSelected: false, required: 0, hasHelpingLabel: true, helpingLabel: '' },
232
+ ]
233
+ };
234
+ (index === undefined) ? this.operationOnCreateIfIndexUndefined(element) : this.operationOnCreateIfIndexDefined(element, index);
235
+ this.sortQuestion();
236
+ }
237
+ /**
238
+ * Creates a question of type single textbox
239
+ * @param index Index at which question needs to be created
240
+ */
241
+ createSingleTextbox(index) {
242
+ const element = {
243
+ type: 'single-textbox', name: '', page: this.currentPageNumber,
244
+ hasValidation: false, validationType: '', isRequired: false, hasCharacterLength: false, minCharacterLength: 0,
245
+ maxCharacterLength: 100, title: '', hasDescription: false, description: '', hasComments: false, comments: '',
246
+ randomize: false, hasOther: false, otherValue: 'Other', alignment: false, reverse: false,
247
+ isRespondentAttachment: false, userAttachedFiles: [], isRespondentComment: false, userComments: '', visibilityLogic: [],
248
+ choices: [{ title: '', value: 1, isSelected: false, required: 0, hasHelpingLabel: true, helpingLabel: '' }]
249
+ };
250
+ (index === undefined) ? this.operationOnCreateIfIndexUndefined(element) : this.operationOnCreateIfIndexDefined(element, index);
251
+ this.sortQuestion();
252
+ }
253
+ /**
254
+ * Creates a question of type comment box
255
+ * @param index Index at which question needs to be created
256
+ */
257
+ createCommentbox(index) {
258
+ const element = {
259
+ type: 'comment-box', name: '', page: this.currentPageNumber,
260
+ isRequired: false, title: '', hasDescription: false, description: '', hasComments: false, comments: '',
261
+ hasCharacterLength: false, minCharacterLength: 0, maxCharacterLength: 0, randomize: false, hasOther: false,
262
+ otherValue: 'Other', alignment: false, reverse: false, isRespondentAttachment: false, userAttachedFiles: [],
263
+ isRespondentComment: false, userComments: '', visibilityLogic: [], choices: [
264
+ { title: '', value: 1, isSelected: false, required: 0, hasHelpingLabel: false, helpingLabel: '', imageURL: '' },
265
+ ]
266
+ };
267
+ (index === undefined) ? this.operationOnCreateIfIndexUndefined(element) : this.operationOnCreateIfIndexDefined(element, index);
268
+ this.sortQuestion();
269
+ }
270
+ /**
271
+ * Creates a question of type matrix of dropdown
272
+ * @param index Index at which question needs to be created
273
+ */
274
+ createMatrixDropdown(index) {
275
+ const element = {
276
+ type: 'matrix-dropdown', name: '', page: this.currentPageNumber, otherConfig: { color: '#000000', isFailed: false, score: 1 },
277
+ isRequired: false, title: '', hasDescription: false, description: '', hasComments: false, comments: '',
278
+ randomize: false, hasOther: false, otherValue: 'Other', alignment: false, reverse: false,
279
+ isRespondentAttachment: false, userAttachedFiles: [], isRespondentComment: false, userComments: '', visibilityLogic: [],
280
+ choices: [{ title: '', value: 1, isSelected: false, required: 0, hasHelpingLabel: false, helpingLabel: '' }],
281
+ columns: [{
282
+ title: '', value: 1, weight: 0, isSelected: false, required: 0, hasHelpingLabel: false, helpingLabel: '',
283
+ choices: [{ title: '', value: 1, isSelected: false, required: 0, hasHelpingLabel: false, helpingLabel: '' }]
284
+ }
285
+ ]
286
+ };
287
+ (index === undefined) ? this.operationOnCreateIfIndexUndefined(element) : this.operationOnCreateIfIndexDefined(element, index);
288
+ this.sortQuestion();
289
+ }
290
+ /**
291
+ * Creates a question of type dropdown
292
+ * @param index Index at which question needs to be created
293
+ */
294
+ createDropdown(index) {
295
+ const element = {
296
+ type: 'dropdown', name: '', page: this.currentPageNumber, otherConfig: { color: '#000000', isFailed: false, score: this.score.defaultScore },
297
+ isRequired: false, title: '', hasDescription: false, description: '', hasComments: false, comments: '',
298
+ randomize: false, hasOther: false, otherValue: 'Other', alignment: false, reverse: false,
299
+ isRespondentAttachment: false, userAttachedFiles: [], isRespondentComment: false, userComments: '', visibilityLogic: [],
300
+ choices: [
301
+ {
302
+ title: '', value: 1, isSelected: false, required: 0, hasHelpingLabel: false, helpingLabel: '',
303
+ isFailed: false, score: this.score.defaultScore, color: this.generateRandomColor()
304
+ }
305
+ ]
306
+ };
307
+ (index === undefined) ? this.operationOnCreateIfIndexUndefined(element) : this.operationOnCreateIfIndexDefined(element, index);
308
+ this.sortQuestion();
309
+ }
310
+ /**
311
+ * Creates a question of type slider
312
+ * @param index Index at which question needs to be created
313
+ */
314
+ createSlider(index) {
315
+ const element = {
316
+ type: 'slider', name: '', page: this.currentPageNumber,
317
+ isRequired: false, title: '', hasDescription: false, description: '', hasComments: false, comments: '',
318
+ randomize: false, hasOther: false, otherValue: 'Other', alignment: false, reverse: false,
319
+ isRespondentAttachment: false, userAttachedFiles: [], isRespondentComment: false, userComments: '', visibilityLogic: [],
320
+ choices: [{ title: '', value: 1, isSelected: false, required: 0, hasHelpingLabel: false, helpingLabel: '' }],
321
+ centerRange: false, adjustScale: false, numericBoxEnabled: false, left: 0, center: 0, right: 100,
322
+ scaleRangeMin: 0, scaleRangeMax: 100, stepSize: 10, startPosition: 0, editorValue: 0
323
+ };
324
+ (index === undefined) ? this.operationOnCreateIfIndexUndefined(element) : this.operationOnCreateIfIndexDefined(element, index);
325
+ this.sortQuestion();
326
+ }
327
+ /**
328
+ * Creates a question of type matrix rating scale
329
+ * @param index Index at which question needs to be created
330
+ */
331
+ createRatingScale(index) {
332
+ const element = {
333
+ type: 'rating-scale', name: '', page: this.currentPageNumber,
334
+ isRequired: false, title: '', hasDescription: false, description: '', hasComments: false, comments: '',
335
+ randomize: false, hasOther: false, hasRatingLabel: false, ratingLabelType: '',
336
+ otherValue: 'Other', hasWeight: false, alignment: false, reverse: false,
337
+ isRespondentAttachment: false, userAttachedFiles: [], isRespondentComment: false, userComments: '', visibilityLogic: [],
338
+ choices: [{ title: '', value: 1, isSelected: false, required: 0, hasHelpingLabel: false, helpingLabel: '' }],
339
+ columns: [{ title: '', value: 1, weight: 0, isSelected: false, required: 0, hasHelpingLabel: false, helpingLabel: '' }]
340
+ };
341
+ (index === undefined) ? this.operationOnCreateIfIndexUndefined(element) : this.operationOnCreateIfIndexDefined(element, index);
342
+ this.sortQuestion();
343
+ }
344
+ /**
345
+ * Creates a question of type ranking
346
+ * @param index Index at which question needs to be created
347
+ */
348
+ createRanking(index) {
349
+ const element = {
350
+ type: 'ranking', name: '', page: this.currentPageNumber,
351
+ isRequired: false, title: '', hasDescription: false, description: '', hasComments: false, comments: '',
352
+ randomize: false, hasOther: false, otherValue: 'Other', hasRatingLabel: false, alignment: false,
353
+ reverse: false, onlyNumber: true, isRespondentAttachment: false, userAttachedFiles: [],
354
+ isRespondentComment: false, userComments: '', visibilityLogic: [], choices: [
355
+ { title: '', value: 1, isSelected: false, required: 0, hasHelpingLabel: false, helpingLabel: '' },
356
+ ]
357
+ };
358
+ (index === undefined) ? this.operationOnCreateIfIndexUndefined(element) : this.operationOnCreateIfIndexDefined(element, index);
359
+ this.sortQuestion();
360
+ }
361
+ /**
362
+ * Creates a question of type multiple textbox
363
+ * @param index Index at which question needs to be created
364
+ */
365
+ createMultipleTextbox(index) {
366
+ const element = {
367
+ type: 'multiple-textbox', name: '',
368
+ page: this.currentPageNumber, isRequired: false, title: '', hasDescription: false, description: '',
369
+ randomize: false, hasOther: false, hasComments: false, comments: '', otherValue: 'Other', hasRatingLabel: false,
370
+ alignment: false, reverse: false, onlyNumber: true, isRespondentAttachment: false, userAttachedFiles: [],
371
+ isRespondentComment: false, userComments: '', visibilityLogic: [], choices: [
372
+ { title: '', value: 1, isSelected: false, required: 0, hasHelpingLabel: false, helpingLabel: '' },
373
+ ]
374
+ };
375
+ (index === undefined) ? this.operationOnCreateIfIndexUndefined(element) : this.operationOnCreateIfIndexDefined(element, index);
376
+ this.sortQuestion();
377
+ }
378
+ /**
379
+ * Creates a question of type date/time
380
+ * @param index Index at which question needs to be created
381
+ */
382
+ createDateTime(index) {
383
+ const element = {
384
+ type: 'date-time', name: '', page: this.currentPageNumber,
385
+ isRequired: false, title: '', hasDescription: false, description: '', hasComments: false, comments: '',
386
+ randomize: false, hasOther: false, otherValue: 'Other', hasRatingLabel: false, alignment: false,
387
+ reverse: false, onlyNumber: true, isRespondentAttachment: false, userAttachedFiles: [], isRespondentComment: false,
388
+ userComments: '', visibilityLogic: [], hasDate: true, hasTime: false, dateFormat: 'DD/MM/YYYY', timeFormat: 24,
389
+ choices: [
390
+ { title: '', value: 1, isSelected: false, required: 0, hasHelpingLabel: false, helpingLabel: '' },
391
+ ],
392
+ date: { title: '', value: '' },
393
+ time: { title: '', value: '' }
394
+ };
395
+ (index === undefined) ? this.operationOnCreateIfIndexUndefined(element) : this.operationOnCreateIfIndexDefined(element, index);
396
+ this.sortQuestion();
397
+ }
398
+ /**
399
+ * Creates a question of type file upload
400
+ * @param index Index at which question needs to be created
401
+ */
402
+ createFileUpload(index) {
403
+ const element = {
404
+ type: 'file-upload', name: '', page: this.currentPageNumber,
405
+ isRequired: false, title: '', hasInstruction: false, instruction: '', hasDescription: false, description: '',
406
+ hasComments: false, comments: '', randomize: false, hasOther: false, otherValue: 'Other', alignment: false, reverse: false,
407
+ fileTypeRestrictions: false, isRespondentAttachment: false, userAttachedFiles: [], isRespondentComment: false, userComments: '',
408
+ visibilityLogic: [], choices: [
409
+ { title: '', value: 1, isSelected: false, required: 0, hasHelpingLabel: false, helpingLabel: '' }
410
+ ],
411
+ allowedFileTypes: {
412
+ pdf: true,
413
+ doc: true,
414
+ png: true,
415
+ jpg: true,
416
+ gif: true
417
+ }
418
+ };
419
+ (index === undefined) ? this.operationOnCreateIfIndexUndefined(element) : this.operationOnCreateIfIndexDefined(element, index);
420
+ this.sortQuestion();
421
+ }
422
+ /**
423
+ * Creates a question of type image choice
424
+ * @param index Index at which question needs to be created
425
+ */
426
+ createImageChoice(index) {
427
+ const element = {
428
+ type: 'image-choice', name: '', page: this.currentPageNumber,
429
+ isRequired: false, title: '', hasDescription: false, description: '', hasComments: false, comments: '',
430
+ randomize: false, hasOther: false, otherValue: 'Other', alignment: false, reverse: false,
431
+ isRespondentAttachment: false, userAttachedFiles: [], isRespondentComment: false, userComments: '',
432
+ visibilityLogic: [], choices: [
433
+ { title: '', value: 1, isSelected: false, required: 0, hasHelpingLabel: false, helpingLabel: '', imageURL: '' }
434
+ ]
435
+ };
436
+ (index === undefined) ? this.operationOnCreateIfIndexUndefined(element) : this.operationOnCreateIfIndexDefined(element, index);
437
+ this.sortQuestion();
438
+ }
439
+ /**
440
+ * Creates and adds the question to list of questions if a question's index is undefined
441
+ * @param element Details of question to be created
442
+ */
443
+ operationOnCreateIfIndexUndefined(element) {
444
+ element.name = this.generateQuestionName(this.formsPage.elements.length + 1),
445
+ this.formsPage.elements.push(element);
446
+ this.setActiveQuestionBasedOnPageLength();
447
+ }
448
+ /**
449
+ * Creates and adds the question to list of questions if a question's index is present
450
+ * @param element Details of question to be created
451
+ * @param index Index at which question should be created
452
+ */
453
+ operationOnCreateIfIndexDefined(element, index) {
454
+ element.name = this.generateQuestionName(index + 1);
455
+ this.formsPage.elements.splice(index + 1, 0, element);
456
+ this.activeQuestion = index + 1;
457
+ this.activeQuestionIndex.next(index + 1);
458
+ }
459
+ /**
460
+ * Sets the active question based on particular page
461
+ */
462
+ setActiveQuestionBasedOnPageLength() {
463
+ let count = 0;
464
+ for (let i = 1; i <= this.currentPageNumber; i++) {
465
+ count += [...this.formsPage.elements].reduce((counter, currentElement) => (i === currentElement.page ? counter + 1 : counter), 0) - 1;
466
+ }
467
+ this.activeQuestion = count + this.currentPageNumber - 1;
468
+ this.activeQuestionIndex.next(count + this.currentPageNumber - 1);
469
+ // setTimeout(() => {
470
+ // }, 150);
471
+ // this.cdr.detectChanges();
472
+ }
473
+ /**
474
+ * Sorts the questions based on page number
475
+ */
476
+ sortQuestion() {
477
+ this.formsPage.elements.sort((a, b) => {
478
+ return a.page - b.page;
479
+ });
480
+ }
481
+ /**
482
+ * Generates a unique question name for newly added question
483
+ * @param questionIndex Index of question to be created
484
+ */
485
+ generateQuestionName(questionIndex) {
486
+ const questionNames = this.formsPage.elements.map((a) => a.name);
487
+ if (questionNames.includes(`${this.prefixForQuestionName}${questionIndex}`)) {
488
+ return this.generateQuestionName(questionIndex + 1);
489
+ }
490
+ else {
491
+ const name = 'Question_' + questionIndex.toString();
492
+ return name;
493
+ }
494
+ }
495
+ generateRandomColor() {
496
+ //return '#' + Math.floor(Math.random() * 16777215).toString(16);
497
+ return '#000000';
498
+ }
499
+ /**
500
+ * Sets the question as active based on the particular index
501
+ * @param index Index of the question to be marked as active question
502
+ */
503
+ setactiveQuestion(index) {
504
+ this.activeQuestion = index;
505
+ this.activeQuestionIndex.next(index);
506
+ }
507
+ /**
508
+ * Duplicates a question with particular index
509
+ * @param index Index of question to be duplicated
510
+ */
511
+ copyQuestion(index) {
512
+ this.setactiveQuestion(index + 1);
513
+ const COPY_ELEMENT = JSON.parse(JSON.stringify(this.formsPage.elements[index]));
514
+ if (COPY_ELEMENT.errorArray) {
515
+ delete COPY_ELEMENT.errorArray;
516
+ }
517
+ COPY_ELEMENT.visibilityLogic = [];
518
+ const elementsNames = [];
519
+ this.formsPage.elements.forEach((element) => {
520
+ elementsNames.push(element.name);
521
+ });
522
+ this.checkForSameName(elementsNames, COPY_ELEMENT);
523
+ this.formsPage.elements.splice(index + 1, 0, COPY_ELEMENT);
524
+ }
525
+ /**
526
+ * Assigns a unique name to the duplicated question
527
+ * @param elementsNames List of question names
528
+ * @param COPY_ELEMENT Details of question duplicated
529
+ */
530
+ checkForSameName(elementsNames, COPY_ELEMENT) {
531
+ if (elementsNames.includes(COPY_ELEMENT.name)) {
532
+ const COPY_ELEMENT_NAME = COPY_ELEMENT.name.split('_');
533
+ COPY_ELEMENT_NAME[COPY_ELEMENT_NAME.length - 1] = (parseInt(COPY_ELEMENT_NAME[COPY_ELEMENT_NAME.length - 1], 10) + 1).toString();
534
+ COPY_ELEMENT.name = COPY_ELEMENT_NAME.join('_');
535
+ this.checkForSameName(elementsNames, COPY_ELEMENT);
536
+ }
537
+ }
538
+ /**
539
+ * Deletes the question on click of delete button
540
+ * @param index Index of question to be deleted
541
+ */
542
+ deleteQuestion(index) {
543
+ this.removeLogicFromDependentQuestion(index);
544
+ this.formsPage.elements.splice(index, 1);
545
+ }
546
+ /**
547
+ * Removes the logic data for a particular question from other questions
548
+ * @param index Index of question whose logic data needs to be removed from other questions
549
+ */
550
+ removeLogicFromDependentQuestion(index) {
551
+ this.formsPage.elements.forEach((questionElement) => {
552
+ if (questionElement.visibilityLogic.length > 0) {
553
+ questionElement.visibilityLogic = questionElement.visibilityLogic.filter((logic) => logic.questionName !== this.formsPage.elements[index].name);
554
+ }
555
+ });
556
+ }
557
+ /**
558
+ * Adds a new page
559
+ */
560
+ addPage() {
561
+ if (this.currentPageNumber === -1 || this.currentPageNumber === -2) {
562
+ //this.currentPageNumber = this.numberOfPages() + 1;
563
+ this.currentPageNumber = this.allPages.length + 1;
564
+ this.allPages.push(this.currentPageNumber);
565
+ this.numberOfPages();
566
+ }
567
+ else {
568
+ this.currentPageNumber = this.allPages.length + 1;
569
+ this.allPages.push(this.currentPageNumber);
570
+ }
571
+ this.stepIdentifier = 'pagescreen';
572
+ this.activeQuestionIndex.next(-10);
573
+ }
574
+ /**
575
+ * Counts the number of pages in a survey/form
576
+ */
577
+ numberOfPages() {
578
+ const PAGE_ARRAY = [];
579
+ if (this.formsPage.elements.length !== 0) {
580
+ this.formsPage.elements.forEach((element) => {
581
+ PAGE_ARRAY.push(element.page);
582
+ this.currentPageDetails.pageNumber = element?.page;
583
+ if (this.formsPage.pageDetailsList.length === 0) {
584
+ this.formsPage.pageDetailsList.push(this.currentPageDetails);
585
+ }
586
+ });
587
+ this.allPages = [...new Set(PAGE_ARRAY)];
588
+ }
589
+ else {
590
+ return 0;
591
+ }
592
+ }
593
+ fetchAssessmentData(id) {
594
+ //mode=assessment/fetchQuestionsByAssessmentId&id=61f3f7871c60020009a20543
595
+ return this.http.get("env" + 'assessment/fetchQuestionsByAssessmentId&id=' + id, this.httpOptions).pipe(retry(2));
596
+ }
597
+ saveAssessment(id, payload) {
598
+ return this.http.post("env" + 'assessment/update&id=' + id, payload, this.httpOptions);
599
+ //?mode=assessment/update&id=61f3f7871c60020009a20543
600
+ }
601
+ getAuthorizationToken() {
602
+ const TOKEN = localStorage.getItem('currentUser');
603
+ let currentUser;
604
+ TOKEN !== null ? (currentUser = JSON.parse(TOKEN)) : (currentUser = {});
605
+ return currentUser.token;
606
+ }
607
+ /**
608
+ * Extracts the text from a particular html content
609
+ * @param s html content from which text needs to be extracted
610
+ */
611
+ extract(s) {
612
+ const span = document.createElement('span');
613
+ span.innerHTML = s;
614
+ return span.textContent || span.innerText;
615
+ }
616
+ /**
617
+ * Moves Question to a particular index in an array
618
+ * @param previous Index from which Question should be moved
619
+ * @param next Index before which Question should be moved
620
+ */
621
+ moveQuestion(previous, next) {
622
+ moveItemInArray(this.formsPage.elements, previous, next);
623
+ }
624
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EditorService, deps: [{ token: i1.HttpClient }, { token: i2.Configurations, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
625
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EditorService, providedIn: 'root' }); }
626
+ }
627
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EditorService, decorators: [{
628
+ type: Injectable,
629
+ args: [{
630
+ providedIn: 'root'
631
+ }]
632
+ }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.Configurations, decorators: [{
633
+ type: Optional
634
+ }] }]; } });
635
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL2Fzc2Vzc21lbnQtZWRpdG9yL3NlcnZpY2VzL2VkaXRvci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RCxPQUFPLEVBQWMsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFFdkMsOERBQThEO0FBSTlELE1BQU0sT0FBTyxhQUFhO0lBRXhCLFlBQW9CLElBQWdCLEVBQWEsTUFBdUI7UUFBcEQsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUtwQyx1QkFBa0IsR0FBUSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxlQUFlLEVBQUUsRUFBRSxFQUFFLENBQUM7UUFDL0UsMEJBQXFCLEdBQUcsV0FBVyxDQUFDO1FBQzdCLHdCQUFtQixHQUFHLElBQUksZUFBZSxDQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0QsMEJBQXFCLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3pELHNCQUFpQixHQUFXLENBQUMsQ0FBQztRQUM5QixtQkFBYyxHQUFHLENBQUMsQ0FBQztRQUMxQixzQkFBaUIsR0FBRyxJQUFJLENBQUM7UUFDekIsb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFDakIsVUFBSyxHQUFHO1lBQ2IsWUFBWSxFQUFFLENBQUM7WUFDZixh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QUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ3hFLE9BQU8sV0FBVyxDQUFDLEtBQUssQ0FBQztJQUMzQixDQUFDO0lBRUQ7OztNQUdFO0lBQ0YsT0FBTyxDQUFDLENBQVM7UUFDZixNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzVDLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQzVDLENBQUM7SUFDRDs7OztPQUlHO0lBQ0gsWUFBWSxDQUFDLFFBQWEsRUFBRSxJQUFTO1FBQ25DLGVBQWUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDM0QsQ0FBQzsrR0E1b0JVLGFBQWE7bUhBQWIsYUFBYSxjQUZaLE1BQU07OzRGQUVQLGFBQWE7a0JBSHpCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFHdUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IG1vdmVJdGVtSW5BcnJheSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHJldHJ5IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBDb25maWd1cmF0aW9ucyB9IGZyb20gJy4uLy4uLy4uL2NvbmZpZ3VyYXRpb25zJztcclxuLy8gaW1wb3J0IHsgZW52aXJvbm1lbnQgfSBmcm9tICdzcmMvZW52aXJvbm1lbnRzL2Vudmlyb25tZW50JztcclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgRWRpdG9yU2VydmljZSB7XHJcbiAgIGVudiAhOmFueTtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsQE9wdGlvbmFsKCkgY29uZmlnPzogQ29uZmlndXJhdGlvbnMpIHtcclxuICAgIGlmIChjb25maWcpIHtcclxuICAgICAgdGhpcy5lbnYgPSBjb25maWcuZW52Q29uZmlnO1xyXG4gICAgfVxyXG4gIH1cclxuICBjdXJyZW50UGFnZURldGFpbHM6IGFueSA9IHsgcGFnZU5hbWU6ICcnLCBwYWdlTnVtYmVyOiAxLCBwYWdlRGVzY3JpcHRpb246ICcnIH07XHJcbiAgcHJlZml4Rm9yUXVlc3Rpb25OYW1lID0gJ1F1ZXN0aW9uXyc7XHJcbiAgcHVibGljIGFjdGl2ZVF1ZXN0aW9uSW5kZXggPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oLTUpO1xyXG4gIGFjdGl2ZVF1ZXN0aW9uU3RyZWFtJCA9IHRoaXMuYWN0aXZlUXVlc3Rpb25JbmRleC5hc09ic2VydmFibGUoKTtcclxuICBwdWJsaWMgY3VycmVudFBhZ2VOdW1iZXI6IG51bWJlciA9IDE7XHJcbiAgcHVibGljIGFjdGl2ZVF1ZXN0aW9uID0gMDtcclxuICBzaG93QWRkUGFnZU9wdGlvbiA9IHRydWU7XHJcbiAgc2hvd1BhZ2VEZXRhaWxzID0gZmFsc2U7XHJcbiAgcHVibGljIHNjb3JlID0ge1xyXG4gICAgZGVmYXVsdFNjb3JlOiAxLFxyXG4gICAgbmVnYXRpdmVTY29yZTogMFxyXG4gIH1cclxuICBwdWJsaWMgYWxsUGFnZXM6IGFueSA9IFtdO1xyXG4gIHN0ZXBJZGVudGlmaWVyID0gJ3BhZ2VzY3JlZW4nOyAvLyB0aGlzIHZhbHVlIGNhbiBiZSBcIndlbGNvbWVzY3JlZW5cIixcInRoYW5reW91c2NyZWVuXCIsXCJwYWdlc2NyZWVuXCIgb25seVxyXG4gIGFzc2Vzc21lbnRJZCAhOiBhbnk7XHJcbiAgcHVibGljIHNldHRpbmdzOiBhbnkgPSB7XHJcbiAgICBhc3Nlc3NtZW50TW9kZTogZmFsc2UsXHJcbiAgICBkZWZhdWx0U2NvcmU6IDEsXHJcbiAgICBuZWdhdGl2ZVNjb3JlQ3JpdGVyaWE6ICdGQUlMRUQnLFxyXG4gICAgbmVnYXRpdmVTY29yZTogMCxcclxuICAgIHdlaWdodGFnZUVuYWJsZWQ6IGZhbHNlLFxyXG4gICAgc2V0dGluZ3NFbmFibGVkOiBmYWxzZVxyXG4gIH1cclxuXHJcbiAgZm9ybXNQYWdlOiBhbnkgPSB7XHJcbiAgICB2ZXJzaW9uOiAyLFxyXG4gICAgcXVlc3Rpb25SYW5kb21pemU6IHRydWUsXHJcbiAgICBhbm9ueW1vdXNSZXNwb25zZTogZmFsc2UsXHJcbiAgICBoYXNXZWxjb21lOiBmYWxzZSxcclxuICAgIGhhc1dlbGNvbWVEZXNjcmlwdGlvbjogdHJ1ZSxcclxuICAgIHdlbGNvbWVUZXh0OiAnJyxcclxuICAgIGhhc1dlbGNvbWVJbWFnZTogdHJ1ZSxcclxuICAgIHdlbGNvbWVJbWFnZTogJycsXHJcbiAgICB3ZWxjb21lRGVzY3JpcHRpb246ICcnLFxyXG4gICAgaGFzVGhhbmtzOiBmYWxzZSxcclxuICAgIGhhc1RoYW5reW91SW1hZ2U6IGZhbHNlLFxyXG4gICAgdGhhbmt5b3VUZXh0OiAnJyxcclxuICAgIHRoYW5reW91SW1hZ2U6ICcnLFxyXG4gICAgaGFzVGhhbmt5b3VEZXNjcmlwdGlvbjogdHJ1ZSxcclxuICAgIHRoYW5reW91RGVzY3JpcHRpb246ICcnLFxyXG4gICAgZWxlbWVudHM6IFtdLFxyXG4gICAgcGFnZURldGFpbHNMaXN0OiBbXSxcclxuICAgIGN1c3RvbVJlc3BvbnNlU2V0OiBbXSxcclxuICAgIHNldHRpbmdzOiB0aGlzLnNldHRpbmdzLFxyXG4gICAgcmVzcG9uc2VTZWdtZW50OiB0aGlzLmluaXRpYWxpemVFbXB0eVJlc3BvbnNlU2VnbWVudCgpXHJcbiAgfTtcclxuXHJcbiAgaW5pdGlhbGl6ZUVtcHR5UmVzcG9uc2VTZWdtZW50KCkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgdGl0bGU6ICcnLFxyXG4gICAgICBkZXNjcmlwdGlvbjogJycsXHJcbiAgICAgIG1heFNjb3JlOiAxMCxcclxuICAgICAgc2VnbWVudHM6IFtcclxuXHJcbiAgICAgIF1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHVwbG9hZEhhbmRsZXIoZm9ybURhdGE6IGFueSwgZGVzdGluYXRpb246IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueT4odGhpcy5lbnYuZmlsZVVwbG9hZEVuZFBvaW50ICsgZGVzdGluYXRpb24sIGZvcm1EYXRhKTtcclxuICAgIC8vcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueT4oXCJlbnZcIiArIGRlc3RpbmF0aW9uLCBmb3JtRGF0YSk7XHJcbiAgfVxyXG5cclxuICBhZGRRdWVzdGlvbihldnQ6IGFueSwgaW5kZXg/OiBudW1iZXIpIHtcclxuICAgIHN3aXRjaCAoZXZ0LnRyaW0oKSkge1xyXG4gICAgICBjYXNlICd3ZWxjb21lJzoge1xyXG4gICAgICAgIHRoaXMuY3VycmVudFBhZ2VOdW1iZXIgPSAtMTtcclxuICAgICAgICB0aGlzLnN0ZXBJZGVudGlmaWVyID0gJ3dlbGNvbWVzY3JlZW4nO1xyXG4gICAgICAgIHRoaXMuZm9ybXNQYWdlLmhhc1dlbGNvbWUgPSB0cnVlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ3RoYW5reW91Jzoge1xyXG4gICAgICAgIHRoaXMuY3VycmVudFBhZ2VOdW1iZXIgPSAtMjtcclxuICAgICAgICB0aGlzLnN0ZXBJZGVudGlmaWVyID0gJ3RoYW5reW91c2NyZWVuJztcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdtdWx0aXBsZS1jaG9pY2UnOiB7XHJcbiAgICAgICAgdGhpcy5zZXRUb1BhZ2Vmcm9tV2VsY29tZSgpO1xyXG4gICAgICAgIHRoaXMuY3JlYXRlTXVsdGlwbGVDaG9pY2UoaW5kZXgpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ2NoZWNrYm94Jzoge1xyXG4gICAgICAgIHRoaXMuc2V0VG9QYWdlZnJvbVdlbGNvbWUoKTtcclxuICAgICAgICB0aGlzLmNyZWF0ZUNoZWNrYm94KGluZGV4KTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdzdGFyLXJhdGluZyc6IHtcclxuICAgICAgICB0aGlzLnNldFRvUGFnZWZyb21XZWxjb21lKCk7XHJcbiAgICAgICAgdGhpcy5jcmVhdGVTdGFyUmF0aW5nKGluZGV4KTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdzaW5nbGUtdGV4dGJveCc6IHtcclxuICAgICAgICB0aGlzLnNldFRvUGFnZWZyb21XZWxjb21lKCk7XHJcbiAgICAgICAgdGhpcy5jcmVhdGVTaW5nbGVUZXh0Ym94KGluZGV4KTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdjb21tZW50LWJveCc6IHtcclxuICAgICAgICB0aGlzLnNldFRvUGFnZWZyb21XZWxjb21lKCk7XHJcbiAgICAgICAgdGhpcy5jcmVhdGVDb21tZW50Ym94KGluZGV4KTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdtYXRyaXgtZHJvcGRvd24nOiB7XHJcbiAgICAgICAgdGhpcy5zZXRUb1BhZ2Vmcm9tV2VsY29tZSgpO1xyXG4gICAgICAgIHRoaXMuY3JlYXRlTWF0cml4RHJvcGRvd24oaW5kZXgpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ2Ryb3Bkb3duJzoge1xyXG4gICAgICAgIHRoaXMuc2V0VG9QYWdlZnJvbVdlbGNvbWUoKTtcclxuICAgICAgICB0aGlzLmNyZWF0ZURyb3Bkb3duKGluZGV4KTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdzbGlkZXInOiB7XHJcbiAgICAgICAgdGhpcy5zZXRUb1BhZ2Vmcm9tV2VsY29tZSgpO1xyXG4gICAgICAgIHRoaXMuY3JlYXRlU2xpZGVyKGluZGV4KTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdyYXRpbmctc2NhbGUnOiB7XHJcbiAgICAgICAgdGhpcy5zZXRUb1BhZ2Vmcm9tV2VsY29tZSgpO1xyXG4gICAgICAgIHRoaXMuY3JlYXRlUmF0aW5nU2NhbGUoaW5kZXgpXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnbXVsdGlwbGUtdGV4dGJveCc6IHtcclxuICAgICAgICB0aGlzLnNldFRvUGFnZWZyb21XZWxjb21lKCk7XHJcbiAgICAgICAgdGhpcy5jcmVhdGVNdWx0aXBsZVRleHRib3goaW5kZXgpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ2RhdGUtdGltZSc6IHtcclxuICAgICAgICB0aGlzLnNldFRvUGFnZWZyb21XZWxjb21lKCk7XHJcbiAgICAgICAgdGhpcy5jcmVhdGVEYXRlVGltZShpbmRleCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnZmlsZS11cGxvYWQnOiB7XHJcbiAgICAgICAgdGhpcy5zZXRUb1BhZ2Vmcm9tV2VsY29tZSgpO1xyXG4gICAgICAgIHRoaXMuY3JlYXRlRmlsZVVwbG9hZChpbmRleCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAncmFua2luZyc6IHtcclxuICAgICAgICB0aGlzLnNldFRvUGFnZWZyb21XZWxjb21lKCk7XHJcbiAgICAgICAgdGhpcy5jcmVhdGVSYW5raW5nKGluZGV4KTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdzdGFyLXJhdGluZyc6IHtcclxuICAgICAgICB0aGlzLnNldFRvUGFnZWZyb21XZWxjb21lKCk7XHJcbiAgICAgICAgdGhpcy5jcmVhdGVTdGFyUmF0aW5nKGluZGV4KTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0VG9QYWdlZnJvbVdlbGNvbWUoKSB7XHJcbiAgICBpZiAoWyd0aGFua3lvdXNjcmVlbicsICd3ZWxjb21lc2NyZWVuJ10uaW5jbHVkZXModGhpcy5zdGVwSWRlbnRpZmllcikpIHtcclxuICAgICAgdGhpcy5jdXJyZW50UGFnZU51bWJlciA9IHRoaXMuYWxsUGFnZXMubGVuZ3RoO1xyXG4gICAgICB0aGlzLnN0ZXBJZGVudGlmaWVyID0gJ3BhZ2VzY3JlZW4nO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2hlY2sgd2hldGhlciB0byBkaXNwbGF5IFBhZ2UgRGV0YWlscyBvciBBZGQgUGFnZSB0aWx0ZSBvcHRpb25cclxuICAgKi9cclxuICBjaGVja0ZvclBhZ2VEZXRhaWxzKCkge1xyXG4gICAgaWYgKHRoaXMuY3VycmVudFBhZ2VEZXRhaWxzID09PSB1bmRlZmluZWQgfHwgdGhpcy5jdXJyZW50UGFnZURldGFpbHMucGFnZU5hbWUgPT09ICcnKSB7XHJcbiAgICAgIHRoaXMuc2hvd0FkZFBhZ2VPcHRpb24gPSB0cnVlO1xyXG4gICAgICB0aGlzLnNob3dQYWdlRGV0YWlscyA9IGZhbHNlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zaG93QWRkUGFnZU9wdGlvbiA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnNob3dQYWdlRGV0YWlscyA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZXMgYSBxdWVzdGlvbiBvZiB0eXBlIG11bHRpcGxlIGNob2ljZVxyXG4gICAqIEBwYXJhbSBpbmRleCBJbmRleCBhdCB3aGljaCBxdWVzdGlvbiBuZWVkcyB0byBiZSBjcmVhdGVkXHJcbiAgICovXHJcbiAgY3JlYXRlTXVsdGlwbGVDaG9pY2UoaW5kZXg/OiBhbnkpIHtcclxuXHJcbiAgICBjb25zdCBlbGVtZW50ID0ge1xyXG4gICAgICB0eXBlOiAnbXVsdGlwbGUtY2hvaWNlJywgbmFtZTogYGAsIHBhZ2U6IHRoaXMuY3VycmVudFBhZ2VOdW1iZXIsIG90aGVyQ29uZmlnOiB7IGNvbG9yOiAnIzAwMDAwMCcsIGlzRmFpbGVkOiBmYWxzZSwgc2NvcmU6IHRoaXMuc2NvcmUuZGVmYXVsdFNjb3JlIH0sXHJcbiAgICAgIGlzUmVxdWlyZWQ6IGZhbHNlLCB0aXRsZTogJycsIGhhc0Rlc2NyaXB0aW9uOiBmYWxzZSwgZGVzY3JpcHRpb246ICcnLCBoYXNDb21tZW50czogZmFsc2UsIGNvbW1lbnRzOiAnJyxcclxuICAgICAgcmFuZG9taXplOiBmYWxzZSwgaGFzT3RoZXI6IGZhbHNlLCBvdGhlclZhbHVlOiAnT3RoZXInLCBhbGlnbm1lbnQ6IGZhbHNlLCByZXZlcnNlOiBmYWxzZSwgdmlzaWJpbGl0eUxvZ2ljOiBbXSwgY2hvaWNlczogW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIHRpdGxlOiAnJywgdmFsdWU6IDEsIGlzU2VsZWN0ZWQ6IGZhbHNlLCByZXF1aXJlZDogMCwgaGFzSGVscGluZ0xhYmVsOiBmYWxzZSxcclxuICAgICAgICAgIGhlbHBpbmdMYWJlbDogJycsIGlzRmFpbGVkOiBmYWxzZSwgc2NvcmU6IHRoaXMuc2NvcmUuZGVmYXVsdFNjb3JlLCBjb2xvcjogdGhpcy5nZW5lcmF0ZVJhbmRvbUNvbG9yKClcclxuICAgICAgICB9XVxyXG4gICAgfTtcclxuICAgIChpbmRleCA9PT0gdW5kZWZpbmVkKSA/IHRoaXMub3BlcmF0aW9uT25DcmVhdGVJZkluZGV4VW5kZWZpbmVkKGVsZW1lbnQpIDogdGhpcy5vcGVyYXRpb25PbkNyZWF0ZUlmSW5kZXhEZWZpbmVkKGVsZW1lbnQsIGluZGV4KTtcclxuICAgIHRoaXMuc29ydFF1ZXN0aW9uKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGVzIGEgcXVlc3Rpb24gb2YgdHlwZSBjaGVja2JveFxyXG4gICAqIEBwYXJhbSBpbmRleCBJbmRleCBhdCB3aGljaCBxdWVzdGlvbiBuZWVkcyB0byBiZSBjcmVhdGVkXHJcbiAgICovXHJcbiAgY3JlYXRlQ2hlY2tib3goaW5kZXg/OiBhbnkpIHtcclxuXHJcbiAgICBjb25zdCBlbGVtZW50ID0ge1xyXG4gICAgICB0eXBlOiAnY2hlY2tib3gnLCBuYW1lOiAnJywgcGFnZTogdGhpcy5jdXJyZW50UGFnZU51bWJlciwgb3RoZXJDb25maWc6IHsgY29sb3I6ICcjMDAwMDAwJywgaXNGYWlsZWQ6IGZhbHNlLCBzY29yZTogdGhpcy5zY29yZS5kZWZhdWx0U2NvcmUgfSxcclxuICAgICAgaXNSZXF1aXJlZDogZmFsc2UsIHRpdGxlOiAnJywgaGFzRGVzY3JpcHRpb246IGZhbHNlLCBkZXNjcmlwdGlvbjogJycsIGhhc0NvbW1lbnRzOiBmYWxzZSwgY29tbWVudHM6ICcnLFxyXG4gICAgICByYW5kb21pemU6IGZhbHNlLCBoYXNPdGhlcjogZmFsc2UsIG90aGVyVmFsdWU6ICdPdGhlcicsIGFsaWdubWVudDogZmFsc2UsIHJldmVyc2U6IGZhbHNlLFxyXG4gICAgICBpc1Jlc3BvbmRlbnRBdHRhY2htZW50OiBmYWxzZSwgdXNlckF0dGFjaGVkRmlsZXM6IFtdLCBpc1Jlc3BvbmRlbnRDb21tZW50OiBmYWxzZSwgdXNlckNvbW1lbnRzOiAnJywgdmlzaWJpbGl0eUxvZ2ljOiBbXSwgY2hvaWNlczpcclxuICAgICAgICBbe1xyXG4gICAgICAgICAgdGl0bGU6ICcnLCB2YWx1ZTogMSwgaXNTZWxlY3RlZDogZmFsc2UsIHJlcXVpcmVkOiAwLCBoYXNIZWxwaW5nTGFiZWw6IGZhbHNlLFxyXG4gICAgICAgICAgaGVscGluZ0xhYmVsOiAnJywgaXNGYWlsZWQ6IGZhbHNlLCBzY29yZTogdGhpcy5zY29yZS5kZWZhdWx0U2NvcmUsIGNvbG9yOiB0aGlzLmdlbmVyYXRlUmFuZG9tQ29sb3IoKVxyXG4gICAgICAgIH1cclxuICAgICAgICBdXHJcbiAgICB9O1xyXG4gICAgKGluZGV4ID09PSB1bmRlZmluZWQpID8gdGhpcy5vcGVyYXRpb25PbkNyZWF0ZUlmSW5kZXhVbmRlZmluZWQoZWxlbWVudCkgOiB0aGlzLm9wZXJhdGlvbk9uQ3JlYXRlSWZJbmRleERlZmluZWQoZWxlbWVudCwgaW5kZXgpO1xyXG4gICAgdGhpcy5zb3J0UXVlc3Rpb24oKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZXMgYSBxdWVzdGlvbiBvZiB0eXBlIHN0YXIgcmF0aW5nXHJcbiAgICogQHBhcmFtIGluZGV4IEluZGV4IGF0IHdoaWNoIHF1ZXN0aW9uIG5lZWRzIHRvIGJlIGNyZWF0ZWRcclxuICAgKiBbTm90ZV06IFJhdGluZyBsYWJlbCB0eXBlIGNhbiB0YWtlIDIgdmFsdWVzICdzcGVjaWZpYycvJ3NjYWxlJ1xyXG4gICAqL1xyXG4gIGNyZWF0ZVN0YXJSYXRpbmcoaW5kZXg/OiBhbnkpIHtcclxuICAgIGNvbnN0IGVsZW1lbnQgPSB7XHJcbiAgICAgIHR5cGU6ICdzdGFyLXJhdGluZycsIG5hbWU6ICcnLCBwYWdlOiB0aGlzLmN1cnJlbnRQYWdlTnVtYmVyLCBpc1JlcXVpcmVkOiBmYWxzZSwgdGl0bGU6ICcnLCBoYXNEZXNjcmlwdGlvbjogZmFsc2UsXHJcbiAgICAgIGRlc2NyaXB0aW9uOiAnJywgaGFzQ29tbWVudHM6IGZhbHNlLCBjb21tZW50czogJycsIHJhbmRvbWl6ZTogZmFsc2UsIGhhc090aGVyOiBmYWxzZSwgYWxpZ25tZW50OiBmYWxzZSwgcmV2ZXJzZTogZmFsc2UsXHJcbiAgICAgIGlzUmVzcG9uZGVudEF0dGFjaG1lbnQ6IGZhbHNlLCB1c2VyQXR0YWNoZWRGaWxlczogW10sIGlzUmVzcG9uZGVudENvbW1lbnQ6IGZhbHNlLCB1c2VyQ29tbWVudHM6ICcnLCBjdXJzb3JUeXBlOiAnbnVtYmVyJyxcclxuICAgICAgY3Vyc29yQ29sb3I6ICcjZmY4MDAwJywgc2NhbGU6IDIsIHN0YXJWYWx1ZTogJycsIGhhc1JhdGluZ0xhYmVsOiBmYWxzZSwgcmF0aW5nTGFiZWxUeXBlOiAnc3BlY2lmaWMnLFxyXG4gICAgICBzY2FsZVJhbmdlRnJvbTogJ05vdCBhdCBhbGwgbGlrZWx5JyxcclxuICAgICAgc2NhbGVSYW5nZVRvOiAnRXh0cmVtZSBMaWtlbHknLCB2aXNpYmlsaXR5TG9naWM6IFtdLFxyXG4gICAgICBjaG9pY2VzOiBbXHJcbiAgICAgICAgeyB0aXRsZTogJycsIGlzVmlzaWJsZTogdHJ1ZSwgdmFsdWU6IDAsIGlzU2VsZWN0ZWQ6IGZhbHNlLCByZXF1aXJlZDogMCwgaGFzSGVscGluZ0xhYmVsOiB0cnVlLCBoZWxwaW5nTGFiZWw6ICcnIH0sXHJcbiAgICAgICAgeyB0aXRsZTogJycsIGlzVmlzaWJsZTogdHJ1ZSwgdmFsdWU6IDEsIGlzU2VsZWN0ZWQ6IGZhbHNlLCByZXF1aXJlZDogMCwgaGFzSGVscGluZ0xhYmVsOiB0cnVlLCBoZWxwaW5nTGFiZWw6ICcnIH0sXHJcbiAgICAgIF1cclxuICAgIH07XHJcbiAgICAoaW5kZXggPT09IHVuZGVmaW5lZCkgPyB0aGlzLm9wZXJhdGlvbk9uQ3JlYXRlSWZJbmRleFVuZGVmaW5lZChlbGVtZW50KSA6IHRoaXMub3BlcmF0aW9uT25DcmVhdGVJZkluZGV4RGVmaW5lZChlbGVtZW50LCBpbmRleCk7XHJcbiAgICB0aGlzLnNvcnRRdWVzdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlcyBhIHF1ZXN0aW9uIG9mIHR5cGUgc2luZ2xlIHRleHRib3hcclxuICAgKiBAcGFyYW0gaW5kZXggSW5kZXggYXQgd2hpY2ggcXVlc3Rpb24gbmVlZHMgdG8gYmUgY3JlYXRlZFxyXG4gICAqL1xyXG4gIGNyZWF0ZVNpbmdsZVRleHRib3goaW5kZXg/OiBhbnkpIHtcclxuICAgIGNvbnN0IGVsZW1lbnQgPSB7XHJcbiAgICAgIHR5cGU6ICdzaW5nbGUtdGV4dGJveCcsIG5hbWU6ICcnLCBwYWdlOiB0aGlzLmN1cnJlbnRQYWdlTnVtYmVyLFxyXG4gICAgICBoYXNWYWxpZGF0aW9uOiBmYWxzZSwgdmFsaWRhdGlvblR5cGU6ICcnLCBpc1JlcXVpcmVkOiBmYWxzZSwgaGFzQ2hhcmFjdGVyTGVuZ3RoOiBmYWxzZSwgbWluQ2hhcmFjdGVyTGVuZ3RoOiAwLFxyXG4gICAgICBtYXhDaGFyYWN0ZXJMZW5ndGg6IDEwMCwgdGl0bGU6ICcnLCBoYXNEZXNjcmlwdGlvbjogZmFsc2UsIGRlc2NyaXB0aW9uOiAnJywgaGFzQ29tbWVudHM6IGZhbHNlLCBjb21tZW50czogJycsXHJcbiAgICAgIHJhbmRvbWl6ZTogZmFsc2UsIGhhc090aGVyOiBmYWxzZSwgb3RoZXJWYWx1ZTogJ090aGVyJywgYWxpZ25tZW50OiBmYWxzZSwgcmV2ZXJzZTogZmFsc2UsXHJcbiAgICAgIGlzUmVzcG9uZGVudEF0dGFjaG1lbnQ6IGZhbHNlLCB1c2VyQXR0YWNoZWRGaWxlczogW10sIGlzUmVzcG9uZGVudENvbW1lbnQ6IGZhbHNlLCB1c2VyQ29tbWVudHM6ICcnLCB2aXNpYmlsaXR5TG9naWM6IFtdLFxyXG4gICAgICBjaG9pY2VzOiBbeyB0aXRsZTogJycsIHZhbHVlOiAxLCBpc1NlbGVjdGVkOiBmYWxzZSwgcmVxdWlyZWQ6IDAsIGhhc0hlbHBpbmdMYWJlbDogdHJ1ZSwgaGVscGluZ0xhYmVsOiAnJyB9XVxyXG4gICAgfTtcclxuXHJcbiAgICAoaW5kZXggPT09IHVuZGVmaW5lZCkgPyB0aGlzLm9wZXJhdGlvbk9uQ3JlYXRlSWZJbmRleFVuZGVmaW5lZChlbGVtZW50KSA6IHRoaXMub3BlcmF0aW9uT25DcmVhdGVJZkluZGV4RGVmaW5lZChlbGVtZW50LCBpbmRleCk7XHJcblxyXG4gICAgdGhpcy5zb3J0UXVlc3Rpb24oKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZXMgYSBxdWVzdGlvbiBvZiB0eXBlIGNvbW1lbnQgYm94XHJcbiAgICogQHBhcmFtIGluZGV4IEluZGV4IGF0IHdoaWNoIHF1ZXN0aW9uIG5lZWRzIHRvIGJlIGNyZWF0ZWRcclxuICAgKi9cclxuICBjcmVhdGVDb21tZW50Ym94KGluZGV4PzogYW55KSB7XHJcbiAgICBjb25zdCBlbGVtZW50ID0ge1xyXG4gICAgICB0eXBlOiAnY29tbWVudC1ib3gnLCBuYW1lOiAnJywgcGFnZTogdGhpcy5jdXJyZW50UGFnZU51bWJlcixcclxuICAgICAgaXNSZXF1aXJlZDogZmFsc2UsIHRpdGxlOiAnJywgaGFzRGVzY3JpcHRpb246IGZhbHNlLCBkZXNjcmlwdGlvbjogJycsIGhhc0NvbW1lbnRzOiBmYWxzZSwgY29tbWVudHM6ICcnLFxyXG4gICAgICBoYXNDaGFyYWN0ZXJMZW5ndGg6IGZhbHNlLCBtaW5DaGFyYWN0ZXJMZW5ndGg6IDAsIG1heENoYXJhY3Rlckxlbmd0aDogMCwgcmFuZG9taXplOiBmYWxzZSwgaGFzT3RoZXI6IGZhbHNlLFxyXG4gICAgICBvdGhlclZhbHVlOiAnT3RoZXInLCBhbGlnbm1lbnQ6IGZhbHNlLCByZXZlcnNlOiBmYWxzZSwgaXNSZXNwb25kZW50QXR0YWNobWVudDogZmFsc2UsIHVzZXJBdHRhY2hlZEZpbGVzOiBbXSxcclxuICAgICAgaXNSZXNwb25kZW50Q29tbWVudDogZmFsc2UsIHVzZXJDb21tZW50czogJycsIHZpc2liaWxpdHlMb2dpYzogW10sIGNob2ljZXM6IFtcclxuICAgICAgICB7IHRpdGxlOiAnJywgdmFsdWU6IDEsIGlzU2VsZWN0ZWQ6IGZhbHNlLCByZXF1aXJlZDogMCwgaGFzSGVscGluZ0xhYmVsOiBmYWxzZSwgaGVscGluZ0xhYmVsOiAnJywgaW1hZ2VVUkw6ICcnIH0sXHJcbiAgICAgIF1cclxuICAgIH07XHJcbiAgICAoaW5kZXggPT09IHVuZGVmaW5lZCkgPyB0aGlzLm9wZXJhdGlvbk9uQ3JlYXRlSWZJbmRleFVuZGVmaW5lZChlbGVtZW50KSA6IHRoaXMub3BlcmF0aW9uT25DcmVhdGVJZkluZGV4RGVmaW5lZChlbGVtZW50LCBpbmRleCk7XHJcbiAgICB0aGlzLnNvcnRRdWVzdGlvbigpO1xyXG5cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZXMgYSBxdWVzdGlvbiBvZiB0eXBlIG1hdHJpeCBvZiBkcm9wZG93blxyXG4gICAqIEBwYXJhbSBpbmRleCBJbmRleCBhdCB3aGljaCBxdWVzdGlvbiBuZWVkcyB0byBiZSBjcmVhdGVkXHJcbiAgICovXHJcbiAgY3JlYXRlTWF0cml4RHJvcGRvd24oaW5kZXg/OiBhbnkpIHtcclxuICAgIGNvbnN0IGVsZW1lbnQgPSB7XHJcbiAgICAgIHR5cGU6ICdtYXRyaXgtZHJvcGRvd24nLCBuYW1lOiAnJywgcGFnZTogdGhpcy5jdXJyZW50UGFnZU51bWJlciwgb3RoZXJDb25maWc6IHsgY29sb3I6ICcjMDAwMDAwJywgaXNGYWlsZWQ6IGZhbHNlLCBzY29yZTogMSB9LFxyXG4gICAgICBpc1JlcXVpcmVkOiBmYWxzZSwgdGl0bGU6ICcnLCBoYXNEZXNjcmlwdGlvbjogZmFsc2UsIGRlc2NyaXB0aW9uOiAnJywgaGFzQ29tbWVudHM6IGZhbHNlLCBjb21tZW50czogJycsXHJcbiAgICAgIHJhbmRvbWl6ZTogZmFsc2UsIGhhc090aGVyOiBmYWxzZSwgb3RoZXJWYWx1ZTogJ090aGVyJywgYWxpZ25tZW50OiBmYWxzZSwgcmV2ZXJzZTogZmFsc2UsXHJcbiAgICAgIGlzUmVzcG9uZGVudEF0dGFjaG1lbnQ6IGZhbHNlLCB1c2VyQXR0YWNoZWRGaWxlczogW10sIGlzUmVzcG9uZGVudENvbW1lbnQ6IGZhbHNlLCB1c2VyQ29tbWVudHM6ICcnLCB2aXNpYmlsaXR5TG9naWM6IFtdLFxyXG4gICAgICBjaG9pY2VzOiBbeyB0aXRsZTogJycsIHZhbHVlOiAxLCBpc1NlbGVjdGVkOiBmYWxzZSwgcmVxdWlyZWQ6IDAsIGhhc0hlbHBpbmdMYWJlbDogZmFsc2UsIGhlbHBpbmdMYWJlbDogJycgfV0sXHJcbiAgICAgIGNvbHVtbnM6IFt7XHJcbiAgICAgICAgdGl0bGU6ICcnLCB2YWx1ZTogMSwgd2VpZ2h0OiAwLCBpc1NlbGVjdGVkOiBmYWxzZSwgcmVxdWlyZWQ6IDAsIGhhc0hlbHBpbmdMYWJlbDogZmFsc2UsIGhlbHBpbmdMYWJlbDogJycsXHJcbiAgICAgICAgY2hvaWNlczogW3sgdGl0bGU6ICcnLCB2YWx1ZTogMSwgaXNTZWxlY3RlZDogZmFsc2UsIHJlcXVpcmVkOiAwLCBoYXNIZWxwaW5nTGFiZWw6IGZhbHNlLCBoZWxwaW5nTGFiZWw6ICcnIH1dXHJcbiAgICAgIH1cclxuICAgICAgXVxyXG4gICAgfTtcclxuICAgIChpbmRleCA9PT0gdW5kZWZpbmVkKSA/IHRoaXMub3BlcmF0aW9uT25DcmVhdGVJZkluZGV4VW5kZWZpbmVkKGVsZW1lbnQpIDogdGhpcy5vcGVyYXRpb25PbkNyZWF0ZUlmSW5kZXhEZWZpbmVkKGVsZW1lbnQsIGluZGV4KTtcclxuICAgIHRoaXMuc29ydFF1ZXN0aW9uKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGVzIGEgcXVlc3Rpb24gb2YgdHlwZSBkcm9wZG93blxyXG4gICAqIEBwYXJhbSBpbmRleCBJbmRleCBhdCB3aGljaCBxdWVzdGlvbiBuZWVkcyB0byBiZSBjcmVhdGVkXHJcbiAgICovXHJcbiAgY3JlYXRlRHJvcGRvd24oaW5kZXg/OiBhbnkpIHtcclxuICAgIGNvbnN0IGVsZW1lbnQgPSB7XHJcbiAgICAgIHR5cGU6ICdkcm9wZG93bicsIG5hbWU6ICcnLCBwYWdlOiB0aGlzLmN1cnJlbnRQYWdlTnVtYmVyLCBvdGhlckNvbmZpZzogeyBjb2xvcjogJyMwMDAwMDAnLCBpc0ZhaWxlZDogZmFsc2UsIHNjb3JlOiB0aGlzLnNjb3JlLmRlZmF1bHRTY29yZSB9LFxyXG4gICAgICBpc1JlcXVpcmVkOiBmYWxzZSwgdGl0bGU6ICcnLCBoYXNEZXNjcmlwdGlvbjogZmFsc2UsIGRlc2NyaXB0aW9uOiAnJywgaGFzQ29tbWVudHM6IGZhbHNlLCBjb21tZW50czogJycsXHJcbiAgICAgIHJhbmRvbWl6ZTogZmFsc2UsIGhhc090aGVyOiBmYWxzZSwgb3RoZXJWYWx1ZTogJ090aGVyJywgYWxpZ25tZW50OiBmYWxzZSwgcmV2ZXJzZTogZmFsc2UsXHJcbiAgICAgIGlzUmVzcG9uZGVudEF0dGFjaG1lbnQ6IGZhbHNlLCB1c2VyQXR0YWNoZWRGaWxlczogW10sIGlzUmVzcG9uZGVudENvbW1lbnQ6IGZhbHNlLCB1c2VyQ29tbWVudHM6ICcnLCB2aXNpYmlsaXR5TG9naWM6IFtdLFxyXG4gICAgICBjaG9pY2VzOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgdGl0bGU6ICcnLCB2YWx1ZTogMSwgaXNTZWxlY3RlZDogZmFsc2UsIHJlcXVpcmVkOiAwLCBoYXNIZWxwaW5nTGFiZWw6IGZhbHNlLCBoZWxwaW5nTGFiZWw6ICcnLFxyXG4gICAgICAgICAgaXNGYWlsZWQ6IGZhbHNlLCBzY29yZTogdGhpcy5zY29yZS5kZWZhdWx0U2NvcmUsIGNvbG9yOiB0aGlzLmdlbmVyYXRlUmFuZG9tQ29sb3IoKVxyXG4gICAgICAgIH1cclxuICAgICAgXVxyXG4gICAgfTtcclxuICAgIChpbmRleCA9PT0gdW5kZWZpbmVkKSA/IHRoaXMub3BlcmF0aW9uT25DcmVhdGVJZkluZGV4VW5kZWZpbmVkKGVsZW1lbnQpIDogdGhpcy5vcGVyYXRpb25PbkNyZWF0ZUlmSW5kZXhEZWZpbmVkKGVsZW1lbnQsIGluZGV4KTtcclxuICAgIHRoaXMuc29ydFF1ZXN0aW9uKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGVzIGEgcXVlc3Rpb24gb2YgdHlwZSBzbGlkZXJcclxuICAgKiBAcGFyYW0gaW5kZXggSW5kZXggYXQgd2hpY2ggcXVlc3Rpb24gbmVlZHMgdG8gYmUgY3JlYXRlZFxyXG4gICAqL1xyXG4gIGNyZWF0ZVNsaWRlcihpbmRleD86IGFueSkge1xyXG4gICAgY29uc3QgZWxlbWVudCA9IHtcclxuICAgICAgdHlwZTogJ3NsaWRlcicsIG5hbWU6ICcnLCBwYWdlOiB0aGlzLmN1cnJlbnRQYWdlTnVtYmVyLFxyXG4gICAgICBpc1JlcXVpcmVkOiBmYWxzZSwgdGl0bGU6ICcnLCBoYXNEZXNjcmlwdGlvbjogZmFsc2UsIGRlc2NyaXB0aW9uOiAnJywgaGFzQ29tbWVudHM6IGZhbHNlLCBjb21tZW50czogJycsXHJcbiAgICAgIHJhbmRvbWl6ZTogZmFsc2UsIGhhc090aGVyOiBmYWxzZSwgb3RoZXJWYWx1ZTogJ090aGVyJywgYWxpZ25tZW50OiBmYWxzZSwgcmV2ZXJzZTogZmFsc2UsXHJcbiAgICAgIGlzUmVzcG9uZGVudEF0dGFjaG1lbnQ6IGZhbHNlLCB1c2VyQXR0YWNoZWRGaWxlczogW10sIGlzUmVzcG9uZGVudENvbW1lbnQ6IGZhbHNlLCB1c2VyQ29tbWVudHM6ICcnLCB2aXNpYmlsaXR5TG9naWM6IFtdLFxyXG4gICAgICBjaG9pY2VzOiBbeyB0aXRsZTogJycsIHZhbHVlOiAxLCBpc1NlbGVjdGVkOiBmYWxzZSwgcmVxdWlyZWQ6IDAsIGhhc0hlbHBpbmdMYWJlbDogZmFsc2UsIGhlbHBpbmdMYWJlbDogJycgfV0sXHJcbiAgICAgIGNlbnRlclJhbmdlOiBmYWxzZSwgYWRqdXN0U2NhbGU6IGZhbHNlLCBudW1lcmljQm94RW5hYmxlZDogZmFsc2UsIGxlZnQ6IDAsIGNlbnRlcjogMCwgcmlnaHQ6IDEwMCxcclxuICAgICAgc2NhbGVSYW5nZU1pbjogMCwgc2NhbGVSYW5nZU1heDogMTAwLCBzdGVwU2l6ZTogMTAsIHN0YXJ0UG9zaXRpb246IDAsIGVkaXRvclZhbHVlOiAwXHJcbiAgICB9O1xyXG4gICAgKGluZGV4ID09PSB1bmRlZmluZWQpID8gdGhpcy5vcGVyYXRpb25PbkNyZWF0ZUlmSW5kZXhVbmRlZmluZWQoZWxlbWVudCkgOiB0aGlzLm9wZXJhdGlvbk9uQ3JlYXRlSWZJbmRleERlZmluZWQoZWxlbWVudCwgaW5kZXgpO1xyXG4gICAgdGhpcy5zb3J0UXVlc3Rpb24oKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZXMgYSBxdWVzdGlvbiBvZiB0eXBlIG1hdHJpeCByYXRpbmcgc2NhbGVcclxuICAgKiBAcGFyYW0gaW5kZXggSW5kZXggYXQgd2hpY2ggcXVlc3Rpb24gbmVlZHMgdG8gYmUgY3JlYXRlZFxyXG4gICAqL1xyXG4gIGNyZWF0ZVJhdGluZ1NjYWxlKGluZGV4PzogYW55KSB7XHJcbiAgICBjb25zdCBlbGVtZW50ID0ge1xyXG4gICAgICB0eXBlOiAncmF0aW5nLXNjYWxlJywgbmFtZTogJycsIHBhZ2U6IHRoaXMuY3VycmVudFBhZ2VOdW1iZXIsXHJcbiAgICAgIGlzUmVxdWlyZWQ6IGZhbHNlLCB0aXRsZTogJycsIGhhc0Rlc2NyaXB0aW9uOiBmYWxzZSwgZGVzY3JpcHRpb246ICcnLCBoYXNDb21tZW50czogZmFsc2UsIGNvbW1lbnRzOiAnJyxcclxuICAgICAgcmFuZG9taXplOiBmYWxzZSwgaGFzT3RoZXI6IGZhbHNlLCBoYXNSYXRpbmdMYWJlbDogZmFsc2UsIHJhdGluZ0xhYmVsVHlwZTogJycsXHJcbiAgICAgIG90aGVyVmFsdWU6ICdPdGhlcicsIGhhc1dlaWdodDogZmFsc2UsIGFsaWdubWVudDogZmFsc2UsIHJldmVyc2U6IGZhbHNlLFxyXG4gICAgICBpc1Jlc3BvbmRlbnRBdHRhY2htZW50OiBmYWxzZSwgdXNlckF0dGFjaGVkRmlsZXM6IFtdLCBpc1Jlc3BvbmRlbnRDb21tZW50OiBmYWxzZSwgdXNlckNvbW1lbnRzOiAnJywgdmlzaWJpbGl0eUxvZ2ljOiBbXSxcclxuICAgICAgY2hvaWNlczogW3sgdGl0bGU6ICcnLCB2YWx1ZTogMSwgaXNTZWxlY3RlZDogZmFsc2UsIHJlcXVpcmVkOiAwLCBoYXNIZWxwaW5nTGFiZWw6IGZhbHNlLCBoZWxwaW5nTGFiZWw6ICcnIH1dLFxyXG4gICAgICBjb2x1bW5zOiBbeyB0aXRsZTogJycsIHZhbHVlOiAxLCB3ZWlnaHQ6IDAsIGlzU2VsZWN0ZWQ6IGZhbHNlLCByZXF1aXJlZDogMCwgaGFzSGVscGluZ0xhYmVsOiBmYWxzZSwgaGVscGluZ0xhYmVsOiAnJyB9XVxyXG4gICAgfTtcclxuICAgIChpbmRleCA9PT0gdW5kZWZpbmVkKSA/IHRoaXMub3BlcmF0aW9uT25DcmVhdGVJZkluZGV4VW5kZWZpbmVkKGVsZW1lbnQpIDogdGhpcy5vcGVyYXRpb25PbkNyZWF0ZUlmSW5kZXhEZWZpbmVkKGVsZW1lbnQsIGluZGV4KTtcclxuICAgIHRoaXMuc29ydFF1ZXN0aW9uKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGVzIGEgcXVlc3Rpb24gb2YgdHlwZSByYW5raW5nXHJcbiAgICogQHBhcmFtIGluZGV4IEluZGV4IGF0IHdoaWNoIHF1ZXN0aW9uIG5lZWRzIHRvIGJlIGNyZWF0ZWRcclxuICAgKi9cclxuICBjcmVhdGVSYW5raW5nKGluZGV4PzogYW55KSB7XHJcbiAgICBjb25zdCBlbGVtZW50ID0ge1xyXG4gICAgICB0eXBlOiAncmFua2luZycsIG5hbWU6ICcnLCBwYWdlOiB0aGlzLmN1cnJlbnRQYWdlTnVtYmVyLFxyXG4gICAgICBpc1JlcXVpcmVkOiBmYWxzZSwgdGl0bGU6ICcnLCBoYXNEZXNjcmlwdGlvbjogZmFsc2UsIGRlc2NyaXB0aW9uOiAnJywgaGFzQ29tbWVudHM6IGZhbHNlLCBjb21tZW50czogJycsXHJcbiAgICAgIHJhbmRvbWl6ZTogZmFsc2UsIGhhc090aGVyOiBmYWxzZSwgb3RoZXJWYWx1ZTogJ090aGVyJywgaGFzUmF0aW5nTGFiZWw6IGZhbHNlLCBhbGlnbm1lbnQ6IGZhbHNlLFxyXG4gICAgICByZXZlcnNlOiBmYWxzZSwgb25seU51bWJlcjogdHJ1ZSwgaXNSZXNwb25kZW50QXR0YWNobWVudDogZmFsc2UsIHVzZXJBdHRhY2hlZEZpbGVzOiBbXSxcclxuICAgICAgaXNSZXNwb25kZW50Q29tbWVudDogZmFsc2UsIHVzZXJDb21tZW50czogJycsIHZpc2liaWxpdHlMb2dpYzogW10sIGNob2ljZXM6IFtcclxuICAgICAgICB7IHRpdGxlOiAnJywgdmFsdWU6IDEsIGlzU2VsZWN0ZWQ6IGZhbHNlLCByZXF1aXJlZDogMCwgaGFzSGVscGluZ0xhYmVsOiBmYWxzZSwgaGVscGluZ0xhYmVsOiAnJyB9LFxyXG4gICAgICBdXHJcbiAgICB9O1xyXG4gICAgKGluZGV4ID09PSB1bmRlZmluZWQpID8gdGhpcy5vcGVyYXRpb25PbkNyZWF0ZUlmSW5kZXhVbmRlZmluZWQoZWxlbWVudCkgOiB0aGlzLm9wZXJhdGlvbk9uQ3JlYXRlSWZJbmRleERlZmluZWQoZWxlbWVudCwgaW5kZXgpO1xyXG4gICAgdGhpcy5zb3J0UXVlc3Rpb24oKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZXMgYSBxdWVzdGlvbiBvZiB0eXBlIG11bHRpcGxlIHRleHRib3hcclxuICAgKiBAcGFyYW0gaW5kZXggSW5kZXggYXQgd2hpY2ggcXVlc3Rpb24gbmVlZHMgdG8gYmUgY3JlYXRlZFxyXG4gICAqL1xyXG4gIGNyZWF0ZU11bHRpcGxlVGV4dGJveChpbmRleD86IGFueSkge1xyXG4gICAgY29uc3QgZWxlbWVudCA9IHtcclxuICAgICAgdHlwZTogJ211bHRpcGxlLXRleHRib3gnLCBuYW1lOiAnJyxcclxuICAgICAgcGFnZTogdGhpcy5jdXJyZW50UGFnZU51bWJlciwgaXNSZXF1aXJlZDogZmFsc2UsIHRpdGxlOiAnJywgaGFzRGVzY3JpcHRpb246IGZhbHNlLCBkZXNjcmlwdGlvbjogJycsXHJcbiAgICAgIHJhbmRvbWl6ZTogZmFsc2UsIGhhc090aGVyOiBmYWxzZSwgaGFzQ29tbWVudHM6IGZhbHNlLCBjb21tZW50czogJycsIG90aGVyVmFsdWU6ICdPdGhlcicsIGhhc1JhdGluZ0xhYmVsOiBmYWxzZSxcclxuICAgICAgYWxpZ25tZW50OiBmYWxzZSwgcmV2ZXJzZTogZmFsc2UsIG9ubHlOdW1iZXI6IHRydWUsIGlzUmVzcG9uZGVudEF0dGFjaG1lbnQ6IGZhbHNlLCB1c2VyQXR0YWNoZWRGaWxlczogW10sXHJcbiAgICAgIGlzUmVzcG9uZGVudENvbW1lbnQ6IGZhbHNlLCB1c2VyQ29tbWVudHM6ICcnLCB2aXNpYmlsaXR5TG9naWM6IFtdLCBjaG9pY2VzOiBbXHJcbiAgICAgICAgeyB0aXRsZTogJycsIHZhbHVlOiAxLCBpc1NlbGVjdGVkOiBmYWxzZSwgcmVxdWlyZWQ6IDAsIGhhc0hlbHBpbmdMYWJlbDogZmFsc2UsIGhlbHBpbmdMYWJlbDogJycgfSxcclxuICAgICAgXVxyXG4gICAgfTtcclxuICAgIChpbmRleCA9PT0gdW5kZWZpbmVkKSA/IHRoaXMub3BlcmF0aW9uT25DcmVhdGVJZkluZGV4VW5kZWZpbmVkKGVsZW1lbnQpIDogdGhpcy5vcGVyYXRpb25PbkNyZWF0ZUlmSW5kZXhEZWZpbmVkKGVsZW1lbnQsIGluZGV4KTtcclxuICAgIHRoaXMuc29ydFF1ZXN0aW9uKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGVzIGEgcXVlc3Rpb24gb2YgdHlwZSBkYXRlL3RpbWVcclxuICAgKiBAcGFyYW0gaW5kZXggSW5kZXggYXQgd2hpY2ggcXVlc3Rpb24gbmVlZHMgdG8gYmUgY3JlYXRlZFxyXG4gICAqL1xyXG4gIGNyZWF0ZURhdGVUaW1lKGluZGV4PzogYW55KSB7XHJcbiAgICBjb25zdCBlbGVtZW50ID0ge1xyXG4gICAgICB0eXBlOiAnZGF0ZS10aW1lJywgbmFtZTogJycsIHBhZ2U6IHRoaXMuY3VycmVudFBhZ2VOdW1iZXIsXHJcbiAgICAgIGlzUmVxdWlyZWQ6IGZhbHNlLCB0aXRsZTogJycsIGhhc0Rlc2NyaXB0aW9uOiBmYWxzZSwgZGVzY3JpcHRpb246ICcnLCBoYXNDb21tZW50czogZmFsc2UsIGNvbW1lbnRzOiAnJyxcclxuICAgICAgcmFuZG9taXplOiBmYWxzZSwgaGFzT3RoZXI6IGZhbHNlLCBvdGhlclZhbHVlOiAnT3RoZXInLCBoYXNSYXRpbmdMYWJlbDogZmFsc2UsIGFsaWdubWVudDogZmFsc2UsXHJcbiAgICAgIHJldmVyc2U6IGZhbHNlLCBvbmx5TnVtYmVyOiB0cnVlLCBpc1Jlc3BvbmRlbnRBdHRhY2htZW50OiBmYWxzZSwgdXNlckF0dGFjaGVkRmlsZXM6IFtdLCBpc1Jlc3BvbmRlbnRDb21tZW50OiBmYWxzZSxcclxuICAgICAgdXNlckNvbW1lbnRzOiAnJywgdmlzaWJpbGl0eUxvZ2ljOiBbXSwgaGFzRGF0ZTogdHJ1ZSwgaGFzVGltZTogZmFsc2UsIGRhdGVGb3JtYXQ6ICdERC9NTS9ZWVlZJywgdGltZUZvcm1hdDogMjQsXHJcbiAgICAgIGNob2ljZXM6IFtcclxuICAgICAgICB7IHRpdGxlOiAnJywgdmFsdWU6IDEsIGlzU2VsZWN0ZWQ6IGZhbHNlLCByZXF1aXJlZDogMCwgaGFzSGVscGluZ0xhYmVsOiBmYWxzZSwgaGVscGluZ0xhYmVsOiAnJyB9LFxyXG5cclxuICAgICAgXSxcclxuICAgICAgZGF0ZTogeyB0aXRsZTogJycsIHZhbHVlOiAnJyB9LFxyXG4gICAgICB0aW1lOiB7IHRpdGxlOiAnJywgdmFsdWU6ICcnIH1cclxuICAgIH07XHJcbiAgICAoaW5kZXggPT09IHVuZGVmaW5lZCkgPyB0aGlzLm9wZXJhdGlvbk9uQ3JlYXRlSWZJbmRleFVuZGVmaW5lZChlbGVtZW50KSA6IHRoaXMub3BlcmF0aW9uT25DcmVhdGVJZkluZGV4RGVmaW5lZChlbGVtZW50LCBpbmRleCk7XHJcbiAgICB0aGlzLnNvcnRRdWVzdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlcyBhIHF1ZXN0aW9uIG9mIHR5cGUgZmlsZSB1cGxvYWRcclxuICAgKiBAcGFyYW0gaW5kZXggSW5kZXggYXQgd2hpY2ggcXVlc3Rpb24gbmVlZHMgdG8gYmUgY3JlYXRlZFxyXG4gICAqL1xyXG4gIGNyZWF0ZUZpbGVVcGxvYWQoaW5kZXg/OiBhbnkpIHtcclxuICAgIGNvbnN0IGVsZW1lbnQgPSB7XHJcbiAgICAgIHR5cGU6ICdmaWxlLXVwbG9hZCcsIG5hbWU6ICcnLCBwYWdlOiB0aGlzLmN1cnJlbnRQYWdlTnVtYmVyLFxyXG4gICAgICBpc1JlcXVpcmVkOiBmYWxzZSwgdGl0bGU6ICcnLCBoYXNJbnN0cnVjdGlvbjogZmFsc2UsIGluc3RydWN0aW9uOiAnJywgaGFzRGVzY3JpcHRpb246IGZhbHNlLCBkZXNjcmlwdGlvbjogJycsXHJcbiAgICAgIGhhc0NvbW1lbnRzOiBmYWxzZSwgY29tbWVudHM6ICcnLCByYW5kb21pemU6IGZhbHNlLCBoYXNPdGhlcjogZmFsc2UsIG90aGVyVmFsdWU6ICdPdGhlcicsIGFsaWdubWVudDogZmFsc2UsIHJldmVyc2U6IGZhbHNlLFxyXG4gICAgICBmaWxlVHlwZVJlc3RyaWN0aW9uczogZmFsc2UsIGlzUmVzcG9uZGVudEF0dGFjaG1lbnQ6IGZhbHNlLCB1c2VyQXR0YWNoZWRGaWxlczogW10sIGlzUmVzcG9uZGVudENvbW1lbnQ6IGZhbHNlLCB1c2VyQ29tbWVudHM6ICcnLFxyXG4gICAgICB2aXNpYmlsaXR5TG9naWM6IFtdLCBjaG9pY2VzOiBbXHJcbiAgICAgICAgeyB0aXRsZTogJycsIHZhbHVlOiAxLCBpc1NlbGVjdGVkOiBmYWxzZSwgcmVxdWlyZWQ6IDAsIGhhc0hlbHBpbmdMYWJlbDogZmFsc2UsIGhlbHBpbmdMYWJlbDogJycgfV0sXHJcbiAgICAgIGFsbG93ZWRGaWxlVHlwZXM6IHtcclxuICAgICAgICBwZGY6IHRydWUsXHJcbiAgICAgICAgZG9jOiB0cnVlLFxyXG4gICAgICAgIHBuZzogdHJ1ZSxcclxuICAgICAgICBqcGc6IHRydWUsXHJcbiAgICAgICAgZ2lmOiB0cnVlXHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgICAoaW5kZXggPT09IHVuZGVmaW5lZCkgPyB0aGlzLm9wZXJhdGlvbk9uQ3JlYXRlSWZJbmRleFVuZGVmaW5lZChlbGVtZW50KSA6IHRoaXMub3BlcmF0aW9uT25DcmVhdGVJZkluZGV4RGVmaW5lZChlbGVtZW50LCBpbmRleCk7XHJcbiAgICB0aGlzLnNvcnRRdWVzdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlcyBhIHF1ZXN0aW9uIG9mIHR5cGUgaW1hZ2UgY2hvaWNlXHJcbiAgICogQHBhcmFtIGluZGV4IEluZGV4IGF0IHdoaWNoIHF1ZXN0aW9uIG5lZWRzIHRvIGJlIGNyZWF0ZWRcclxuICAgKi9cclxuICBjcmVhdGVJbWFnZUNob2ljZShpbmRleD86IGFueSkge1xyXG4gICAgY29uc3QgZWxlbWVudCA9IHtcclxuICAgICAgdHlwZTogJ2ltYWdlLWNob2ljZScsIG5hbWU6ICcnLCBwYWdlOiB0aGlzLmN1cnJlbnRQYWdlTnVtYmVyLFxyXG4gICAgICBpc1JlcXVpcmVkOiBmYWxzZSwgdGl0bGU6ICcnLCBoYXNEZXNjcmlwdGlvbjogZmFsc2UsIGRlc2NyaXB0aW9uOiAnJywgaGFzQ29tbWVudHM6IGZhbHNlLCBjb21tZW50czogJycsXHJcbiAgICAgIHJhbmRvbWl6ZTogZmFsc2UsIGhhc090aGVyOiBmYWxzZSwgb3RoZXJWYWx1ZTogJ090aGVyJywgYWxpZ25tZW50OiBmYWxzZSwgcmV2ZXJzZTogZmFsc2UsXHJcbiAgICAgIGlzUmVzcG9uZGVudEF0dGFjaG1lbnQ6IGZhbHNlLCB1c2VyQXR0YWNoZWRGaWxlczogW10sIGlzUmVzcG9uZGVudENvbW1lbnQ6IGZhbHNlLCB1c2VyQ29tbWVudHM6ICcnLFxyXG4gICAgICB2aXNpYmlsaXR5TG9naWM6IFtdLCBjaG9pY2VzOiBbXHJcbiAgICAgICAgeyB0aXRsZTogJycsIHZhbHVlOiAxLCBpc1NlbGVjdGVkOiBmYWxzZSwgcmVxdWlyZWQ6IDAsIGhhc0hlbHBpbmdMYWJlbDogZmFsc2UsIGhlbHBpbmdMYWJlbDogJycsIGltYWdlVVJMOiAnJyB9XHJcblxyXG4gICAgICBdXHJcbiAgICB9O1xyXG4gICAgKGluZGV4ID09PSB1bmRlZmluZWQpID8gdGhpcy5vcGVyYXRpb25PbkNyZWF0ZUlmSW5kZXhVbmRlZmluZWQoZWxlbWVudCkgOiB0aGlzLm9wZXJhdGlvbk9uQ3JlYXRlSWZJbmRleERlZmluZWQoZWxlbWVudCwgaW5kZXgpO1xyXG4gICAgdGhpcy5zb3J0UXVlc3Rpb24oKTtcclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICogQ3JlYXRlcyBhbmQgYWRkcyB0aGUgcXVlc3Rpb24gdG8gbGlzdCBvZiBxdWVzdGlvbnMgaWYgYSBxdWVzdGlvbidzIGluZGV4IGlzIHVuZGVmaW5lZFxyXG4gKiBAcGFyYW0gZWxlbWVudCBEZXRhaWxzIG9mIHF1ZXN0aW9uIHRvIGJlIGNyZWF0ZWRcclxuICovXHJcbiAgb3BlcmF0aW9uT25DcmVhdGVJZkluZGV4VW5kZWZpbmVkKGVsZW1lbnQ6IGFueSkge1xyXG5cclxuICAgIGVsZW1lbnQubmFtZSA9IHRoaXMuZ2VuZXJhdGVRdWVzdGlvbk5hbWUodGhpcy5mb3Jtc1BhZ2UuZWxlbWVudHMubGVuZ3RoICsgMSksXHJcbiAgICAgIHRoaXMuZm9ybXNQYWdlLmVsZW1lbnRzLnB1c2goZWxlbWVudCk7XHJcbiAgICB0aGlzLnNldEFjdGl2ZVF1ZXN0aW9uQmFzZWRPblBhZ2VMZW5ndGgoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZXMgYW5kIGFkZHMgdGhlIHF1ZXN0aW9uIHRvIGxpc3Qgb2YgcXVlc3Rpb25zIGlmIGEgcXVlc3Rpb24ncyBpbmRleCBpcyBwcmVzZW50XHJcbiAgICogQHBhcmFtIGVsZW1lbnQgRGV0YWlscyBvZiBxdWVzdGlvbiB0byBiZSBjcmVhdGVkXHJcbiAgICogQHBhcmFtIGluZGV4IEluZGV4IGF0IHdoaWNoIHF1ZXN0aW9uIHNob3VsZCBiZSBjcmVhdGVkXHJcbiAgICovXHJcbiAgb3BlcmF0aW9uT25DcmVhdGVJZkluZGV4RGVmaW5lZChlbGVtZW50OiBhbnksIGluZGV4OiBhbnkpIHtcclxuXHJcbiAgICBlbGVtZW50Lm5hbWUgPSB0aGlzLmdlbmVyYXRlUXVlc3Rpb25OYW1lKGluZGV4ICsgMSk7XHJcbiAgICB0aGlzLmZvcm1zUGFnZS5lbGVtZW50cy5zcGxpY2UoaW5kZXggKyAxLCAwLCBlbGVtZW50KTtcclxuICAgIHRoaXMuYWN0aXZlUXVlc3Rpb24gPSBpbmRleCArIDE7XHJcbiAgICB0aGlzLmFjdGl2ZVF1ZXN0aW9uSW5kZXgubmV4dChpbmRleCArIDEpO1xyXG4gIH1cclxuICAvKipcclxuICAgICogU2V0cyB0aGUgYWN0aXZlIHF1ZXN0aW9uIGJhc2VkIG9uIHBhcnRpY3VsYXIgcGFnZVxyXG4gICAgKi9cclxuICBzZXRBY3RpdmVRdWVzdGlvbkJhc2VkT25QYWdlTGVuZ3RoKCkge1xyXG4gICAgbGV0IGNvdW50ID0gMDtcclxuICAgIGZvciAobGV0IGkgPSAxOyBpIDw9IHRoaXMuY3VycmVudFBhZ2VOdW1iZXI7IGkrKykge1xyXG4gICAgICBjb3VudCArPSBbLi4udGhpcy5mb3Jtc1BhZ2UuZWxlbWVudHNdLnJlZHVjZShcclxuICAgICAgICAoY291bnRlcjogYW55LCBjdXJyZW50RWxlbWVudDogYW55KSA9PiAoaSA9PT0gY3VycmVudEVsZW1lbnQucGFnZSA/IGNvdW50ZXIgKyAxIDogY291bnRlciksIDApIC0gMTtcclxuICAgIH1cclxuICAgIHRoaXMuYWN0aXZlUXVlc3Rpb24gPSBjb3VudCArIHRoaXMuY3VycmVudFBhZ2VOdW1iZXIgLSAxO1xyXG4gICAgdGhpcy5hY3RpdmVRdWVzdGlvbkluZGV4Lm5leHQoY291bnQgKyB0aGlzLmN1cnJlbnRQYWdlTnVtYmVyIC0gMSk7XHJcblxyXG4gICAgLy8gc2V0VGltZW91dCgoKSA9PiB7XHJcblxyXG4gICAgLy8gfSwgMTUwKTtcclxuICAgIC8vIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcbiAgLyoqXHJcbiogU29ydHMgdGhlIHF1ZXN0aW9ucyBiYXNlZCBvbiBwYWdlIG51bWJlclxyXG4qL1xyXG4gIHNvcnRRdWVzdGlvbigpIHtcclxuICAgIHRoaXMuZm9ybXNQYWdlLmVsZW1lbnRzLnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiB7XHJcbiAgICAgIHJldHVybiBhLnBhZ2UgLSBiLnBhZ2U7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogR2VuZXJhdGVzIGEgdW5pcXVlIHF1ZXN0aW9uIG5hbWUgZm9yIG5ld2x5IGFkZGVkIHF1ZXN0aW9uXHJcbiAgICogQHBhcmFtIHF1ZXN0aW9uSW5kZXggSW5kZXggb2YgcXVlc3Rpb24gdG8gYmUgY3JlYXRlZFxyXG4gICAqL1xyXG4gIGdlbmVyYXRlUXVlc3Rpb25OYW1lKHF1ZXN0aW9uSW5kZXg6IGFueSk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBxdWVzdGlvbk5hbWVzID0gdGhpcy5mb3Jtc1BhZ2UuZWxlbWVudHMubWFwKChhOiBhbnkpID0+IGEubmFtZSk7XHJcbiAgICBpZiAocXVlc3Rpb25OYW1lcy5pbmNsdWRlcyhgJHt0aGlzLnByZWZpeEZvclF1ZXN0aW9uTmFtZX0ke3F1ZXN0aW9uSW5kZXh9YCkpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZ2VuZXJhdGVRdWVzdGlvbk5hbWUocXVlc3Rpb25JbmRleCArIDEpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgbmFtZSA9ICdRdWVzdGlvbl8nICsgcXVlc3Rpb25JbmRleC50b1N0cmluZygpO1xyXG4gICAgICByZXR1cm4gbmFtZTtcclxuICAgIH1cclxuICB9XHJcbiAgZ2VuZXJhdGVSYW5kb21Db2xvcigpIHtcclxuICAgIC8vcmV0dXJuICcjJyArIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDE2Nzc3MjE1KS50b1N0cmluZygxNik7XHJcbiAgICByZXR1cm4gJyMwMDAwMDAnXHJcbiAgfVxyXG5cclxuICAvKipcclxuICogU2V0cyB0aGUgcXVlc3Rpb24gYXMgYWN0aXZlIGJhc2VkIG9uIHRoZSBwYXJ0aWN1bGFyIGluZGV4XHJcbiAqIEBwYXJhbSBpbmRleCBJbmRleCBvZiB0aGUgcXVlc3Rpb24gdG8gYmUgbWFya2VkIGFzIGFjdGl2ZSBxdWVzdGlvblxyXG4gKi9cclxuICBzZXRhY3RpdmVRdWVzdGlvbihpbmRleD86IGFueSkge1xyXG4gICAgdGhpcy5hY3RpdmVRdWVzdGlvbiA9IGluZGV4O1xyXG4gICAgdGhpcy5hY3RpdmVRdWVzdGlvbkluZGV4Lm5leHQoaW5kZXgpO1xyXG4gIH1cclxuICAvKipcclxuICogRHVwbGljYXRlcyBhIHF1ZXN0aW9uIHdpdGggcGFydGljdWxhciBpbmRleFxyXG4gKiBAcGFyYW0gaW5kZXggSW5kZXggb2YgcXVlc3Rpb24gdG8gYmUgZHVwbGljYXRlZFxyXG4gKi9cclxuICBjb3B5UXVlc3Rpb24oaW5kZXg6IGFueSkge1xyXG4gICAgdGhpcy5zZXRhY3RpdmVRdWVzdGlvbihpbmRleCArIDEpO1xyXG4gICAgY29uc3QgQ09QWV9FTEVNRU5UID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmZvcm1zUGFnZS5lbGVtZW50c1tpbmRleF0pKTtcclxuICAgIGlmIChDT1BZX0VMRU1FTlQuZXJyb3JBcnJheSkge1xyXG4gICAgICBkZWxldGUgQ09QWV9FTEVNRU5ULmVycm9yQXJyYXk7XHJcbiAgICB9XHJcbiAgICBDT1BZX0VMRU1FTlQudmlzaWJpbGl0eUxvZ2ljID0gW107XHJcbiAgICBjb25zdCBlbGVtZW50c05hbWVzOiBhbnkgPSBbXTtcclxuICAgIHRoaXMuZm9ybXNQYWdlLmVsZW1lbnRzLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICBlbGVtZW50c05hbWVzLnB1c2goZWxlbWVudC5uYW1lKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5jaGVja0ZvclNhbWVOYW1lKGVsZW1lbnRzTmFtZXMsIENPUFlfRUxFTUVOVCk7XHJcbiAgICB0aGlzLmZvcm1zUGFnZS5lbGVtZW50cy5zcGxpY2UoaW5kZXggKyAxLCAwLCBDT1BZX0VMRU1FTlQpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBBc3NpZ25zIGEgdW5pcXVlIG5hbWUgdG8gdGhlIGR1cGxpY2F0ZWQgcXVlc3Rpb25cclxuICAgKiBAcGFyYW0gZWxlbWVudHNOYW1lcyBMaXN0IG9mIHF1ZXN0aW9uIG5hbWVzXHJcbiAgICogQHBhcmFtIENPUFlfRUxFTUVOVCBEZXRhaWxzIG9mIHF1ZXN0aW9uIGR1cGxpY2F0ZWRcclxuICAgKi9cclxuICBjaGVja0ZvclNhbWVOYW1lKGVsZW1lbnRzTmFtZXM6IGFueSwgQ09QWV9FTEVNRU5UOiBhbnkpIHtcclxuICAgIGlmIChlbGVtZW50c05hbWVzLmluY2x1ZGVzKENPUFlfRUxFTUVOVC5uYW1lKSkge1xyXG4gICAgICBjb25zdCBDT1BZX0VMRU1FTlRfTkFNRSA9IENPUFlfRUxFTUVOVC5uYW1lLnNwbGl0KCdfJyk7XHJcbiAgICAgIENPUFlfRUxFTUVOVF9OQU1FW0NPUFlfRUxFTUVOVF9OQU1FLmxlbmd0aCAtIDFdID0gKHBhcnNlSW50KENPUFlfRUxFTUVOVF9OQU1FW0NPUFlfRUxFTUVOVF9OQU1FLmxlbmd0aCAtIDFdLCAxMCkgKyAxKS50b1N0cmluZygpO1xyXG4gICAgICBDT1BZX0VMRU1FTlQubmFtZSA9IENPUFlfRUxFTUVOVF9OQU1FLmpvaW4oJ18nKTtcclxuICAgICAgdGhpcy5jaGVja0ZvclNhbWVOYW1lKGVsZW1lbnRzTmFtZXMsIENPUFlfRUxFTUVOVCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8qKlxyXG4gKiBEZWxldGVzIHRoZSBxdWVzdGlvbiBvbiBjbGljayBvZiBkZWxldGUgYnV0dG9uXHJcbiAqIEBwYXJhbSBpbmRleCBJbmRleCBvZiBxdWVzdGlvbiB0byBiZSBkZWxldGVkXHJcbiAqL1xyXG4gIGRlbGV0ZVF1ZXN0aW9uKGluZGV4OiBhbnkpIHtcclxuICAgIHRoaXMucmVtb3ZlTG9naWNGcm9tRGVwZW5kZW50UXVlc3Rpb24oaW5kZXgpO1xyXG4gICAgdGhpcy5mb3Jtc1BhZ2UuZWxlbWVudHMuc3BsaWNlKGluZGV4LCAxKTtcclxuICB9XHJcbiAgLyoqXHJcbiAqIFJlbW92ZXMgdGhlIGxvZ2ljIGRhdGEgZm9yIGEgcGFydGljdWxhciBxdWVzdGlvbiBmcm9tIG90aGVyIHF1ZXN0aW9uc1xyXG4gKiBAcGFyYW0gaW5kZXggSW5kZXggb2YgcXVlc3Rpb24gd2hvc2UgbG9naWMgZGF0YSBuZWVkcyB0byBiZSByZW1vdmVkIGZyb20gb3RoZXIgcXVlc3Rpb25zXHJcbiAqL1xyXG4gIHJlbW92ZUxvZ2ljRnJvbURlcGVuZGVudFF1ZXN0aW9uKGluZGV4OiBhbnkpIHtcclxuICAgIHRoaXMuZm9ybXNQYWdlLmVsZW1lbnRzLmZvckVhY2goKHF1ZXN0aW9uRWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgIGlmIChxdWVzdGlvbkVsZW1lbnQudmlzaWJpbGl0eUxvZ2ljLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBxdWVzdGlvbkVsZW1lbnQudmlzaWJpbGl0eUxvZ2ljID0gcXVlc3Rpb25FbGVtZW50LnZpc2liaWxpdHlMb2dpYy5maWx0ZXIoKGxvZ2ljOiBhbnkpID0+XHJcbiAgICAgICAgICBsb2dpYy5xdWVzdGlvbk5hbWUgIT09IHRoaXMuZm9ybXNQYWdlLmVsZW1lbnRzW2luZGV4XS5uYW1lKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4qIEFkZHMgYSBuZXcgcGFnZVxyXG4qL1xyXG4gIGFkZFBhZ2UoKSB7XHJcbiAgICBpZiAodGhpcy5jdXJyZW50UGFnZU51bWJlciA9PT0gLTEgfHwgdGhpcy5jdXJyZW50UGFnZU51bWJlciA9PT0gLTIpIHtcclxuICAgICAgLy90aGlzLmN1cnJlbnRQYWdlTnVtYmVyID0gdGhpcy5udW1iZXJPZlBhZ2VzKCkgKyAxO1xyXG4gICAgICB0aGlzLmN1cnJlbnRQYWdlTnVtYmVyID0gdGhpcy5hbGxQYWdlcy5sZW5ndGggKyAxO1xyXG4gICAgICB0aGlzLmFsbFBhZ2VzLnB1c2godGhpcy5jdXJyZW50UGFnZU51bWJlcik7XHJcbiAgICAgIHRoaXMubnVtYmVyT2ZQYWdlcygpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jdXJyZW50UGFnZU51bWJlciA9IHRoaXMuYWxsUGFnZXMubGVuZ3RoICsgMTtcclxuICAgICAgdGhpcy5hbGxQYWdlcy5wdXNoKHRoaXMuY3VycmVudFBhZ2VOdW1iZXIpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zdGVwSWRlbnRpZmllciA9ICdwYWdlc2NyZWVuJztcclxuICAgIHRoaXMuYWN0aXZlUXVlc3Rpb25JbmRleC5uZXh0KC0xMCk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICogQ291bnRzIHRoZSBudW1iZXIgb2YgcGFnZXMgaW4gYSBzdXJ2ZXkvZm9ybVxyXG4gICovXHJcbiAgbnVtYmVyT2ZQYWdlcygpOiBhbnkge1xyXG4gICAgY29uc3QgUEFHRV9BUlJBWTogYW55ID0gW107XHJcbiAgICBpZiAodGhpcy5mb3Jtc1BhZ2UuZWxlbWVudHMubGVuZ3RoICE9PSAwKSB7XHJcbiAgICAgIHRoaXMuZm9ybXNQYWdlLmVsZW1lbnRzLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgIFBBR0VfQVJSQVkucHVzaChlbGVtZW50LnBhZ2UpO1xyXG4gICAgICAgIHRoaXMuY3VycmVudFBhZ2VEZXRhaWxzLnBhZ2VOdW1iZXIgPSBlbGVtZW50Py5wYWdlO1xyXG4gICAgICAgIGlmICh0aGlzLmZvcm1zUGFnZS5wYWdlRGV0YWlsc0xpc3QubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICB0aGlzLmZvcm1zUGFnZS5wYWdlRGV0YWlsc0xpc3QucHVzaCh0aGlzLmN1cnJlbnRQYWdlRGV0YWlscyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5hbGxQYWdlcyA9IFsuLi5uZXcgU2V0KFBBR0VfQVJSQVkpXTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiAwO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaHR0cE9wdGlvbnMgPSB7XHJcbiAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLCB0b2tlbjogdGhpcy5nZXRBdXRob3JpemF0aW9uVG9rZW4oKSB9KVxyXG4gIH07XHJcblxyXG4gIGZldGNoQXNzZXNzbWVudERhdGEoaWQ6IHN0cmluZykge1xyXG4gICAgLy9tb2RlPWFzc2Vzc21lbnQvZmV0Y2hRdWVzdGlvbnNCeUFzc2Vzc21lbnRJZCZpZD02MWYzZjc4NzFjNjAwMjAwMDlhMjA1NDNcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFwiZW52XCIgKyAnYXNzZXNzbWVudC9mZXRjaFF1ZXN0aW9uc0J5QXNzZXNzbWVudElkJmlkPScgKyBpZCwgdGhpcy5odHRwT3B0aW9ucykucGlwZShyZXRyeSgyKSk7XHJcbiAgfVxyXG5cclxuICBzYXZlQXNzZXNzbWVudChpZDogYW55LCBwYXlsb2FkOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcImVudlwiICsgJ2Fzc2Vzc21lbnQvdXBkYXRlJmlkPScgKyBpZCwgcGF5bG9hZCwgdGhpcy5odHRwT3B0aW9ucylcclxuICAgIC8vP21vZGU9YXNzZXNzbWVudC91cGRhdGUmaWQ9NjFmM2Y3ODcxYzYwMDIwMDA5YTIwNTQzXHJcbiAgfVxyXG5cclxuICBnZXRBdXRob3JpemF0aW9uVG9rZW4oKSB7XHJcbiAgICBjb25zdCBUT0tFTiA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdjdXJyZW50VXNlcicpO1xyXG4gICAgbGV0IGN1cnJlbnRVc2VyO1xyXG4gICAgVE9LRU4gIT09IG51bGwgPyAoY3VycmVudFVzZXIgPSBKU09OLnBhcnNlKFRPS0VOKSkgOiAoY3VycmVudFVzZXIgPSB7fSk7XHJcbiAgICByZXR1cm4gY3VycmVudFVzZXIudG9rZW47XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAqIEV4dHJhY3RzIHRoZSB0ZXh0IGZyb20gYSBwYXJ0aWN1bGFyIGh0bWwgY29udGVudFxyXG4gICogQHBhcmFtIHMgaHRtbCBjb250ZW50IGZyb20gd2hpY2ggdGV4dCBuZWVkcyB0byBiZSBleHRyYWN0ZWRcclxuICAqL1xyXG4gIGV4dHJhY3Qoczogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBzcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xyXG4gICAgc3Bhbi5pbm5lckhUTUwgPSBzO1xyXG4gICAgcmV0dXJuIHNwYW4udGV4dENvbnRlbnQgfHwgc3Bhbi5pbm5lclRleHQ7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIE1vdmVzIFF1ZXN0aW9uIHRvIGEgcGFydGljdWxhciBpbmRleCBpbiBhbiBhcnJheVxyXG4gICAqIEBwYXJhbSBwcmV2aW91cyBJbmRleCBmcm9tIHdoaWNoIFF1ZXN0aW9uIHNob3VsZCBiZSBtb3ZlZFxyXG4gICAqIEBwYXJhbSBuZXh0ICBJbmRleCBiZWZvcmUgd2hpY2ggUXVlc3Rpb24gc2hvdWxkIGJlIG1vdmVkXHJcbiAgICovXHJcbiAgbW92ZVF1ZXN0aW9uKHByZXZpb3VzOiBhbnksIG5leHQ6IGFueSkge1xyXG4gICAgbW92ZUl0ZW1JbkFycmF5KHRoaXMuZm9ybXNQYWdlLmVsZW1lbnRzLCBwcmV2aW91cywgbmV4dCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==