@ampath-kenya/ngx-openmrs-formentry 2.12.25-beta.0 → 2.12.26-beta

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 (438) hide show
  1. package/.editorconfig +13 -0
  2. package/.prettierignore +40 -0
  3. package/.prettierrc +6 -0
  4. package/.travis.yml +17 -0
  5. package/README.md +36 -0
  6. package/angular.json +143 -0
  7. package/{bundles → dist/ngx-formentry/bundles}/ampath-kenya-ngx-openmrs-formentry.umd.js +4 -2
  8. package/dist/ngx-formentry/bundles/ampath-kenya-ngx-openmrs-formentry.umd.js.map +1 -0
  9. package/dist/ngx-formentry/bundles/ampath-kenya-ngx-openmrs-formentry.umd.min.js +2 -0
  10. package/dist/ngx-formentry/bundles/ampath-kenya-ngx-openmrs-formentry.umd.min.js.map +1 -0
  11. package/dist/ngx-formentry/esm2015/form-entry/form-renderer/form-renderer.component.js +655 -0
  12. package/dist/ngx-formentry/esm5/form-entry/form-renderer/form-renderer.component.js +217 -0
  13. package/dist/ngx-formentry/fesm2015/ampath-kenya-ngx-openmrs-formentry.js +11271 -0
  14. package/dist/ngx-formentry/fesm2015/ampath-kenya-ngx-openmrs-formentry.js.map +1 -0
  15. package/{fesm5 → dist/ngx-formentry/fesm5}/ampath-kenya-ngx-openmrs-formentry.js +5 -3
  16. package/dist/ngx-formentry/fesm5/ampath-kenya-ngx-openmrs-formentry.js.map +1 -0
  17. package/dist/ngx-formentry/package.json +35 -0
  18. package/package.json +74 -20
  19. package/scripts/build.sh +2 -0
  20. package/target/npmlist.json +1 -0
  21. package/tsconfig.json +20 -0
  22. package/tslint.json +96 -0
  23. package/bundles/ampath-kenya-ngx-openmrs-formentry.umd.js.map +0 -1
  24. package/bundles/ampath-kenya-ngx-openmrs-formentry.umd.min.js +0 -2
  25. package/bundles/ampath-kenya-ngx-openmrs-formentry.umd.min.js.map +0 -1
  26. package/esm2015/form-entry/form-renderer/form-renderer.component.js +0 -653
  27. package/esm5/form-entry/form-renderer/form-renderer.component.js +0 -215
  28. package/fesm2015/ampath-kenya-ngx-openmrs-formentry.js +0 -11269
  29. package/fesm2015/ampath-kenya-ngx-openmrs-formentry.js.map +0 -1
  30. package/fesm5/ampath-kenya-ngx-openmrs-formentry.js.map +0 -1
  31. /package/{abstract-controls-extension → dist/ngx-formentry/abstract-controls-extension}/afe-control-type.d.ts +0 -0
  32. /package/{abstract-controls-extension → dist/ngx-formentry/abstract-controls-extension}/afe-form-array.d.ts +0 -0
  33. /package/{abstract-controls-extension → dist/ngx-formentry/abstract-controls-extension}/afe-form-control.d.ts +0 -0
  34. /package/{abstract-controls-extension → dist/ngx-formentry/abstract-controls-extension}/afe-form-group.d.ts +0 -0
  35. /package/{abstract-controls-extension → dist/ngx-formentry/abstract-controls-extension}/control-extensions.d.ts +0 -0
  36. /package/{abstract-controls-extension → dist/ngx-formentry/abstract-controls-extension}/index.d.ts +0 -0
  37. /package/{abstract-controls-extension → dist/ngx-formentry/abstract-controls-extension}/value-change.listener.d.ts +0 -0
  38. /package/{ampath-kenya-ngx-openmrs-formentry.d.ts → dist/ngx-formentry/ampath-kenya-ngx-openmrs-formentry.d.ts} +0 -0
  39. /package/{ampath-kenya-ngx-openmrs-formentry.metadata.json → dist/ngx-formentry/ampath-kenya-ngx-openmrs-formentry.metadata.json} +0 -0
  40. /package/{ampath-kenya-ngx-openmrs-formentry.metadata.json-e → dist/ngx-formentry/ampath-kenya-ngx-openmrs-formentry.metadata.json-e} +0 -0
  41. /package/{change-tracking → dist/ngx-formentry/change-tracking}/control-relation.d.ts +0 -0
  42. /package/{change-tracking → dist/ngx-formentry/change-tracking}/control-relations.d.ts +0 -0
  43. /package/{components → dist/ngx-formentry/components}/afe-ng-select.component.d.ts +0 -0
  44. /package/{components → dist/ngx-formentry/components}/appointments-overview/appointments-overview.component.d.ts +0 -0
  45. /package/{components → dist/ngx-formentry/components}/check-box/checkbox.component.d.ts +0 -0
  46. /package/{components → dist/ngx-formentry/components}/check-box/checkbox.module.d.ts +0 -0
  47. /package/{components → dist/ngx-formentry/components}/date-time-picker/date-picker/date-picker.component.d.ts +0 -0
  48. /package/{components → dist/ngx-formentry/components}/date-time-picker/date-time-picker.component.d.ts +0 -0
  49. /package/{components → dist/ngx-formentry/components}/date-time-picker/date-time-picker.module.d.ts +0 -0
  50. /package/{components → dist/ngx-formentry/components}/date-time-picker/picker-modal/modal.component.d.ts +0 -0
  51. /package/{components → dist/ngx-formentry/components}/date-time-picker/pipes/moment.pipe.d.ts +0 -0
  52. /package/{components → dist/ngx-formentry/components}/date-time-picker/time-picker/time-picker.component.d.ts +0 -0
  53. /package/{components → dist/ngx-formentry/components}/file-upload/file-upload.component.d.ts +0 -0
  54. /package/{components → dist/ngx-formentry/components}/file-upload/file-upload.module.d.ts +0 -0
  55. /package/{components → dist/ngx-formentry/components}/file-upload/secure.pipe.d.ts +0 -0
  56. /package/{components → dist/ngx-formentry/components}/ngx-date-time-picker/ngx-date-time-picker.component.d.ts +0 -0
  57. /package/{components → dist/ngx-formentry/components}/ngx-date-time-picker/ngx-date-time-picker.module.d.ts +0 -0
  58. /package/{components → dist/ngx-formentry/components}/ngx-time-picker/ngx-time-picker.component.d.ts +0 -0
  59. /package/{components → dist/ngx-formentry/components}/ngx-time-picker/ngx-time-picker.module.d.ts +0 -0
  60. /package/{components → dist/ngx-formentry/components}/remote-select/remote-select.component.d.ts +0 -0
  61. /package/{components → dist/ngx-formentry/components}/remote-select/remote-select.module.d.ts +0 -0
  62. /package/{components → dist/ngx-formentry/components}/select/diacritics.d.ts +0 -0
  63. /package/{components → dist/ngx-formentry/components}/select/option-list.d.ts +0 -0
  64. /package/{components → dist/ngx-formentry/components}/select/option.d.ts +0 -0
  65. /package/{components → dist/ngx-formentry/components}/select/select-dropdown.component.d.ts +0 -0
  66. /package/{components → dist/ngx-formentry/components}/select/select-dropdown.component.style.d.ts +0 -0
  67. /package/{components → dist/ngx-formentry/components}/select/select.component.d.ts +0 -0
  68. /package/{components → dist/ngx-formentry/components}/select/select.component.style.d.ts +0 -0
  69. /package/{components → dist/ngx-formentry/components}/select/select.module.d.ts +0 -0
  70. /package/{encounter-viewer → dist/ngx-formentry/encounter-viewer}/display-controls/file-preview.component.d.ts +0 -0
  71. /package/{encounter-viewer → dist/ngx-formentry/encounter-viewer}/display-controls/question-control.component.d.ts +0 -0
  72. /package/{encounter-viewer → dist/ngx-formentry/encounter-viewer}/display-controls/remote-answer.component.d.ts +0 -0
  73. /package/{encounter-viewer → dist/ngx-formentry/encounter-viewer}/encounter-container/encounter-container.component.d.ts +0 -0
  74. /package/{encounter-viewer → dist/ngx-formentry/encounter-viewer}/encounter-pdf-viewer.service.d.ts +0 -0
  75. /package/{encounter-viewer → dist/ngx-formentry/encounter-viewer}/encounter-view/encounter-viewer.component.d.ts +0 -0
  76. /package/{encounter-viewer → dist/ngx-formentry/encounter-viewer}/encounter-viewer.module.d.ts +0 -0
  77. /package/{encounter-viewer → dist/ngx-formentry/encounter-viewer}/encounter-viewer.service.d.ts +0 -0
  78. /package/{esm2015 → dist/ngx-formentry/esm2015}/abstract-controls-extension/afe-control-type.js +0 -0
  79. /package/{esm2015 → dist/ngx-formentry/esm2015}/abstract-controls-extension/afe-form-array.js +0 -0
  80. /package/{esm2015 → dist/ngx-formentry/esm2015}/abstract-controls-extension/afe-form-control.js +0 -0
  81. /package/{esm2015 → dist/ngx-formentry/esm2015}/abstract-controls-extension/afe-form-group.js +0 -0
  82. /package/{esm2015 → dist/ngx-formentry/esm2015}/abstract-controls-extension/control-extensions.js +0 -0
  83. /package/{esm2015 → dist/ngx-formentry/esm2015}/abstract-controls-extension/index.js +0 -0
  84. /package/{esm2015 → dist/ngx-formentry/esm2015}/abstract-controls-extension/value-change.listener.js +0 -0
  85. /package/{esm2015 → dist/ngx-formentry/esm2015}/ampath-kenya-ngx-openmrs-formentry.js +0 -0
  86. /package/{esm2015 → dist/ngx-formentry/esm2015}/change-tracking/control-relation.js +0 -0
  87. /package/{esm2015 → dist/ngx-formentry/esm2015}/change-tracking/control-relations.js +0 -0
  88. /package/{esm2015 → dist/ngx-formentry/esm2015}/components/afe-ng-select.component.js +0 -0
  89. /package/{esm2015 → dist/ngx-formentry/esm2015}/components/appointments-overview/appointments-overview.component.js +0 -0
  90. /package/{esm2015 → dist/ngx-formentry/esm2015}/components/check-box/checkbox.component.js +0 -0
  91. /package/{esm2015 → dist/ngx-formentry/esm2015}/components/check-box/checkbox.module.js +0 -0
  92. /package/{esm2015 → dist/ngx-formentry/esm2015}/components/date-time-picker/date-picker/date-picker.component.js +0 -0
  93. /package/{esm2015 → dist/ngx-formentry/esm2015}/components/date-time-picker/date-time-picker.component.js +0 -0
  94. /package/{esm2015 → dist/ngx-formentry/esm2015}/components/date-time-picker/date-time-picker.module.js +0 -0
  95. /package/{esm2015 → dist/ngx-formentry/esm2015}/components/date-time-picker/picker-modal/modal.component.js +0 -0
  96. /package/{esm2015 → dist/ngx-formentry/esm2015}/components/date-time-picker/pipes/moment.pipe.js +0 -0
  97. /package/{esm2015 → dist/ngx-formentry/esm2015}/components/date-time-picker/time-picker/time-picker.component.js +0 -0
  98. /package/{esm2015 → dist/ngx-formentry/esm2015}/components/file-upload/file-upload.component.js +0 -0
  99. /package/{esm2015 → dist/ngx-formentry/esm2015}/components/file-upload/file-upload.module.js +0 -0
  100. /package/{esm2015 → dist/ngx-formentry/esm2015}/components/file-upload/secure.pipe.js +0 -0
  101. /package/{esm2015 → dist/ngx-formentry/esm2015}/components/ngx-date-time-picker/ngx-date-time-picker.component.js +0 -0
  102. /package/{esm2015 → dist/ngx-formentry/esm2015}/components/ngx-date-time-picker/ngx-date-time-picker.module.js +0 -0
  103. /package/{esm2015 → dist/ngx-formentry/esm2015}/components/ngx-time-picker/ngx-time-picker.component.js +0 -0
  104. /package/{esm2015 → dist/ngx-formentry/esm2015}/components/ngx-time-picker/ngx-time-picker.module.js +0 -0
  105. /package/{esm2015 → dist/ngx-formentry/esm2015}/components/remote-select/remote-select.component.js +0 -0
  106. /package/{esm2015 → dist/ngx-formentry/esm2015}/components/remote-select/remote-select.module.js +0 -0
  107. /package/{esm2015 → dist/ngx-formentry/esm2015}/components/select/diacritics.js +0 -0
  108. /package/{esm2015 → dist/ngx-formentry/esm2015}/components/select/option-list.js +0 -0
  109. /package/{esm2015 → dist/ngx-formentry/esm2015}/components/select/option.js +0 -0
  110. /package/{esm2015 → dist/ngx-formentry/esm2015}/components/select/select-dropdown.component.js +0 -0
  111. /package/{esm2015 → dist/ngx-formentry/esm2015}/components/select/select-dropdown.component.style.js +0 -0
  112. /package/{esm2015 → dist/ngx-formentry/esm2015}/components/select/select.component.js +0 -0
  113. /package/{esm2015 → dist/ngx-formentry/esm2015}/components/select/select.component.style.js +0 -0
  114. /package/{esm2015 → dist/ngx-formentry/esm2015}/components/select/select.module.js +0 -0
  115. /package/{esm2015 → dist/ngx-formentry/esm2015}/encounter-viewer/display-controls/file-preview.component.js +0 -0
  116. /package/{esm2015 → dist/ngx-formentry/esm2015}/encounter-viewer/display-controls/question-control.component.js +0 -0
  117. /package/{esm2015 → dist/ngx-formentry/esm2015}/encounter-viewer/display-controls/remote-answer.component.js +0 -0
  118. /package/{esm2015 → dist/ngx-formentry/esm2015}/encounter-viewer/encounter-container/encounter-container.component.js +0 -0
  119. /package/{esm2015 → dist/ngx-formentry/esm2015}/encounter-viewer/encounter-pdf-viewer.service.js +0 -0
  120. /package/{esm2015 → dist/ngx-formentry/esm2015}/encounter-viewer/encounter-view/encounter-viewer.component.js +0 -0
  121. /package/{esm2015 → dist/ngx-formentry/esm2015}/encounter-viewer/encounter-viewer.module.js +0 -0
  122. /package/{esm2015 → dist/ngx-formentry/esm2015}/encounter-viewer/encounter-viewer.service.js +0 -0
  123. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/control-alerts/alert-helpers.js +0 -0
  124. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/control-alerts/can-generate-alert.js +0 -0
  125. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/control-calculators/can-calculate.js +0 -0
  126. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/control-hiders-disablers/can-disable.js +0 -0
  127. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/control-hiders-disablers/can-hide.js +0 -0
  128. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/control-hiders-disablers/disabler-helper.js +0 -0
  129. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/control-hiders-disablers/hider-helpers.js +0 -0
  130. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/data-sources/data-sources.js +0 -0
  131. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/data-sources/dummy-data-source.js +0 -0
  132. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/directives/historical-value-directive.js +0 -0
  133. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/error-renderer/error-renderer.component.js +0 -0
  134. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/expression-runner/expression-runner.js +0 -0
  135. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/form-entry.module.js +0 -0
  136. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/form-factory/control-relations.factory.js +0 -0
  137. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/form-factory/form-control.service.js +0 -0
  138. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/form-factory/form-node.js +0 -0
  139. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/form-factory/form.factory.js +0 -0
  140. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/form-factory/form.js +0 -0
  141. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/form-factory/hiders-disablers.factory.js +0 -0
  142. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/form-factory/question.factory.js +0 -0
  143. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/form-factory/show-messages.factory.js +0 -0
  144. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/form-factory/validation.factory.js +0 -0
  145. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/form-renderer/form-renderer.component.css.js +0 -0
  146. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/helpers/historical-expression-helper-service.js +0 -0
  147. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/helpers/historical-field-helper-service.js +0 -0
  148. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/helpers/js-expression-helper.js +0 -0
  149. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/checkbox.model.js +0 -0
  150. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/conditional-validation.model.js +0 -0
  151. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/date-question.js +0 -0
  152. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/date-validation.model.js +0 -0
  153. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/decimal-point-validation.model.js +0 -0
  154. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/file-upload-question.js +0 -0
  155. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/group-question.js +0 -0
  156. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/interfaces/base-options.js +0 -0
  157. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/interfaces/checkbox-options.js +0 -0
  158. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/interfaces/data-source.js +0 -0
  159. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/interfaces/date-question-options.js +0 -0
  160. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/interfaces/file-upload-question-options.js +0 -0
  161. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/interfaces/group-question-options.js +0 -0
  162. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/interfaces/multi-select-options.js +0 -0
  163. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/interfaces/nested-questions.js +0 -0
  164. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/interfaces/repeating-question-options.js +0 -0
  165. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/interfaces/select-option.js +0 -0
  166. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/interfaces/select-question-options.js +0 -0
  167. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/interfaces/test-order-question-options.js +0 -0
  168. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/interfaces/text-area-question-options.js +0 -0
  169. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/interfaces/text-question-options.js +0 -0
  170. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/interfaces/time-question-options.js +0 -0
  171. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/interfaces/ui-select-question-options.js +0 -0
  172. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/js-expression-validation.model.js +0 -0
  173. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/max-validation.model.js +0 -0
  174. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/min-validation.model.js +0 -0
  175. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/models.js +0 -0
  176. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/multi-select-question.js +0 -0
  177. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/pair.model.js +0 -0
  178. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/question-base.js +0 -0
  179. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/rendering-type.js +0 -0
  180. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/repeating-question.js +0 -0
  181. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/select-option.js +0 -0
  182. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/select-question.js +0 -0
  183. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/test-order-question.js +0 -0
  184. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/text-area-input-question.js +0 -0
  185. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/text-input-question.js +0 -0
  186. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/time-question.js +0 -0
  187. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/ui-select-question.js +0 -0
  188. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/validation.model.js +0 -0
  189. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/services/debug-mode.service.js +0 -0
  190. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/services/form-errors.service.js +0 -0
  191. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/services/form-schema-compiler.service.js +0 -0
  192. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/services/historical-encounter-data.service.js +0 -0
  193. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/utils/messages.js +0 -0
  194. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/validators/conditional-answered.validator.js +0 -0
  195. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/validators/conditional-required.validator.js +0 -0
  196. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/validators/date.validator.js +0 -0
  197. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/validators/future-date-restriction.validator.js +0 -0
  198. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/validators/js-expression.validator.js +0 -0
  199. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/validators/max-date.validator.js +0 -0
  200. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/validators/max.validator.js +0 -0
  201. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/validators/min-date.validator.js +0 -0
  202. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/validators/min.validator.js +0 -0
  203. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/validators/required.validator.js +0 -0
  204. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/validators/validations.js +0 -0
  205. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/value-adapters/encounter.adapter.js +0 -0
  206. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/value-adapters/obs-adapter-helper.js +0 -0
  207. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/value-adapters/obs.adapter.js +0 -0
  208. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/value-adapters/order.adapter.js +0 -0
  209. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/value-adapters/person-attribute.adapter.js +0 -0
  210. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/value-adapters/value.adapter.js +0 -0
  211. /package/{esm2015 → dist/ngx-formentry/esm2015}/public_api.js +0 -0
  212. /package/{esm2015 → dist/ngx-formentry/esm2015}/shared.module.js +0 -0
  213. /package/{esm5 → dist/ngx-formentry/esm5}/abstract-controls-extension/afe-control-type.js +0 -0
  214. /package/{esm5 → dist/ngx-formentry/esm5}/abstract-controls-extension/afe-form-array.js +0 -0
  215. /package/{esm5 → dist/ngx-formentry/esm5}/abstract-controls-extension/afe-form-control.js +0 -0
  216. /package/{esm5 → dist/ngx-formentry/esm5}/abstract-controls-extension/afe-form-group.js +0 -0
  217. /package/{esm5 → dist/ngx-formentry/esm5}/abstract-controls-extension/control-extensions.js +0 -0
  218. /package/{esm5 → dist/ngx-formentry/esm5}/abstract-controls-extension/index.js +0 -0
  219. /package/{esm5 → dist/ngx-formentry/esm5}/abstract-controls-extension/value-change.listener.js +0 -0
  220. /package/{esm5 → dist/ngx-formentry/esm5}/ampath-kenya-ngx-openmrs-formentry.js +0 -0
  221. /package/{esm5 → dist/ngx-formentry/esm5}/change-tracking/control-relation.js +0 -0
  222. /package/{esm5 → dist/ngx-formentry/esm5}/change-tracking/control-relations.js +0 -0
  223. /package/{esm5 → dist/ngx-formentry/esm5}/components/afe-ng-select.component.js +0 -0
  224. /package/{esm5 → dist/ngx-formentry/esm5}/components/appointments-overview/appointments-overview.component.js +0 -0
  225. /package/{esm5 → dist/ngx-formentry/esm5}/components/check-box/checkbox.component.js +0 -0
  226. /package/{esm5 → dist/ngx-formentry/esm5}/components/check-box/checkbox.module.js +0 -0
  227. /package/{esm5 → dist/ngx-formentry/esm5}/components/date-time-picker/date-picker/date-picker.component.js +0 -0
  228. /package/{esm5 → dist/ngx-formentry/esm5}/components/date-time-picker/date-time-picker.component.js +0 -0
  229. /package/{esm5 → dist/ngx-formentry/esm5}/components/date-time-picker/date-time-picker.module.js +0 -0
  230. /package/{esm5 → dist/ngx-formentry/esm5}/components/date-time-picker/picker-modal/modal.component.js +0 -0
  231. /package/{esm5 → dist/ngx-formentry/esm5}/components/date-time-picker/pipes/moment.pipe.js +0 -0
  232. /package/{esm5 → dist/ngx-formentry/esm5}/components/date-time-picker/time-picker/time-picker.component.js +0 -0
  233. /package/{esm5 → dist/ngx-formentry/esm5}/components/file-upload/file-upload.component.js +0 -0
  234. /package/{esm5 → dist/ngx-formentry/esm5}/components/file-upload/file-upload.module.js +0 -0
  235. /package/{esm5 → dist/ngx-formentry/esm5}/components/file-upload/secure.pipe.js +0 -0
  236. /package/{esm5 → dist/ngx-formentry/esm5}/components/ngx-date-time-picker/ngx-date-time-picker.component.js +0 -0
  237. /package/{esm5 → dist/ngx-formentry/esm5}/components/ngx-date-time-picker/ngx-date-time-picker.module.js +0 -0
  238. /package/{esm5 → dist/ngx-formentry/esm5}/components/ngx-time-picker/ngx-time-picker.component.js +0 -0
  239. /package/{esm5 → dist/ngx-formentry/esm5}/components/ngx-time-picker/ngx-time-picker.module.js +0 -0
  240. /package/{esm5 → dist/ngx-formentry/esm5}/components/remote-select/remote-select.component.js +0 -0
  241. /package/{esm5 → dist/ngx-formentry/esm5}/components/remote-select/remote-select.module.js +0 -0
  242. /package/{esm5 → dist/ngx-formentry/esm5}/components/select/diacritics.js +0 -0
  243. /package/{esm5 → dist/ngx-formentry/esm5}/components/select/option-list.js +0 -0
  244. /package/{esm5 → dist/ngx-formentry/esm5}/components/select/option.js +0 -0
  245. /package/{esm5 → dist/ngx-formentry/esm5}/components/select/select-dropdown.component.js +0 -0
  246. /package/{esm5 → dist/ngx-formentry/esm5}/components/select/select-dropdown.component.style.js +0 -0
  247. /package/{esm5 → dist/ngx-formentry/esm5}/components/select/select.component.js +0 -0
  248. /package/{esm5 → dist/ngx-formentry/esm5}/components/select/select.component.style.js +0 -0
  249. /package/{esm5 → dist/ngx-formentry/esm5}/components/select/select.module.js +0 -0
  250. /package/{esm5 → dist/ngx-formentry/esm5}/encounter-viewer/display-controls/file-preview.component.js +0 -0
  251. /package/{esm5 → dist/ngx-formentry/esm5}/encounter-viewer/display-controls/question-control.component.js +0 -0
  252. /package/{esm5 → dist/ngx-formentry/esm5}/encounter-viewer/display-controls/remote-answer.component.js +0 -0
  253. /package/{esm5 → dist/ngx-formentry/esm5}/encounter-viewer/encounter-container/encounter-container.component.js +0 -0
  254. /package/{esm5 → dist/ngx-formentry/esm5}/encounter-viewer/encounter-pdf-viewer.service.js +0 -0
  255. /package/{esm5 → dist/ngx-formentry/esm5}/encounter-viewer/encounter-view/encounter-viewer.component.js +0 -0
  256. /package/{esm5 → dist/ngx-formentry/esm5}/encounter-viewer/encounter-viewer.module.js +0 -0
  257. /package/{esm5 → dist/ngx-formentry/esm5}/encounter-viewer/encounter-viewer.service.js +0 -0
  258. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/control-alerts/alert-helpers.js +0 -0
  259. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/control-alerts/can-generate-alert.js +0 -0
  260. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/control-calculators/can-calculate.js +0 -0
  261. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/control-hiders-disablers/can-disable.js +0 -0
  262. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/control-hiders-disablers/can-hide.js +0 -0
  263. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/control-hiders-disablers/disabler-helper.js +0 -0
  264. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/control-hiders-disablers/hider-helpers.js +0 -0
  265. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/data-sources/data-sources.js +0 -0
  266. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/data-sources/dummy-data-source.js +0 -0
  267. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/directives/historical-value-directive.js +0 -0
  268. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/error-renderer/error-renderer.component.js +0 -0
  269. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/expression-runner/expression-runner.js +0 -0
  270. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/form-entry.module.js +0 -0
  271. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/form-factory/control-relations.factory.js +0 -0
  272. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/form-factory/form-control.service.js +0 -0
  273. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/form-factory/form-node.js +0 -0
  274. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/form-factory/form.factory.js +0 -0
  275. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/form-factory/form.js +0 -0
  276. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/form-factory/hiders-disablers.factory.js +0 -0
  277. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/form-factory/question.factory.js +0 -0
  278. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/form-factory/show-messages.factory.js +0 -0
  279. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/form-factory/validation.factory.js +0 -0
  280. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/form-renderer/form-renderer.component.css.js +0 -0
  281. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/helpers/historical-expression-helper-service.js +0 -0
  282. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/helpers/historical-field-helper-service.js +0 -0
  283. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/helpers/js-expression-helper.js +0 -0
  284. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/checkbox.model.js +0 -0
  285. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/conditional-validation.model.js +0 -0
  286. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/date-question.js +0 -0
  287. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/date-validation.model.js +0 -0
  288. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/decimal-point-validation.model.js +0 -0
  289. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/file-upload-question.js +0 -0
  290. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/group-question.js +0 -0
  291. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/interfaces/base-options.js +0 -0
  292. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/interfaces/checkbox-options.js +0 -0
  293. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/interfaces/data-source.js +0 -0
  294. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/interfaces/date-question-options.js +0 -0
  295. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/interfaces/file-upload-question-options.js +0 -0
  296. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/interfaces/group-question-options.js +0 -0
  297. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/interfaces/multi-select-options.js +0 -0
  298. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/interfaces/nested-questions.js +0 -0
  299. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/interfaces/repeating-question-options.js +0 -0
  300. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/interfaces/select-option.js +0 -0
  301. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/interfaces/select-question-options.js +0 -0
  302. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/interfaces/test-order-question-options.js +0 -0
  303. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/interfaces/text-area-question-options.js +0 -0
  304. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/interfaces/text-question-options.js +0 -0
  305. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/interfaces/time-question-options.js +0 -0
  306. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/interfaces/ui-select-question-options.js +0 -0
  307. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/js-expression-validation.model.js +0 -0
  308. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/max-validation.model.js +0 -0
  309. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/min-validation.model.js +0 -0
  310. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/models.js +0 -0
  311. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/multi-select-question.js +0 -0
  312. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/pair.model.js +0 -0
  313. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/question-base.js +0 -0
  314. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/rendering-type.js +0 -0
  315. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/repeating-question.js +0 -0
  316. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/select-option.js +0 -0
  317. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/select-question.js +0 -0
  318. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/test-order-question.js +0 -0
  319. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/text-area-input-question.js +0 -0
  320. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/text-input-question.js +0 -0
  321. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/time-question.js +0 -0
  322. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/ui-select-question.js +0 -0
  323. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/validation.model.js +0 -0
  324. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/services/debug-mode.service.js +0 -0
  325. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/services/form-errors.service.js +0 -0
  326. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/services/form-schema-compiler.service.js +0 -0
  327. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/services/historical-encounter-data.service.js +0 -0
  328. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/utils/messages.js +0 -0
  329. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/validators/conditional-answered.validator.js +0 -0
  330. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/validators/conditional-required.validator.js +0 -0
  331. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/validators/date.validator.js +0 -0
  332. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/validators/future-date-restriction.validator.js +0 -0
  333. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/validators/js-expression.validator.js +0 -0
  334. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/validators/max-date.validator.js +0 -0
  335. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/validators/max.validator.js +0 -0
  336. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/validators/min-date.validator.js +0 -0
  337. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/validators/min.validator.js +0 -0
  338. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/validators/required.validator.js +0 -0
  339. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/validators/validations.js +0 -0
  340. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/value-adapters/encounter.adapter.js +0 -0
  341. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/value-adapters/obs-adapter-helper.js +0 -0
  342. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/value-adapters/obs.adapter.js +0 -0
  343. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/value-adapters/order.adapter.js +0 -0
  344. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/value-adapters/person-attribute.adapter.js +0 -0
  345. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/value-adapters/value.adapter.js +0 -0
  346. /package/{esm5 → dist/ngx-formentry/esm5}/public_api.js +0 -0
  347. /package/{esm5 → dist/ngx-formentry/esm5}/shared.module.js +0 -0
  348. /package/{form-entry → dist/ngx-formentry/form-entry}/control-alerts/alert-helpers.d.ts +0 -0
  349. /package/{form-entry → dist/ngx-formentry/form-entry}/control-alerts/can-generate-alert.d.ts +0 -0
  350. /package/{form-entry → dist/ngx-formentry/form-entry}/control-calculators/can-calculate.d.ts +0 -0
  351. /package/{form-entry → dist/ngx-formentry/form-entry}/control-hiders-disablers/can-disable.d.ts +0 -0
  352. /package/{form-entry → dist/ngx-formentry/form-entry}/control-hiders-disablers/can-hide.d.ts +0 -0
  353. /package/{form-entry → dist/ngx-formentry/form-entry}/control-hiders-disablers/disabler-helper.d.ts +0 -0
  354. /package/{form-entry → dist/ngx-formentry/form-entry}/control-hiders-disablers/hider-helpers.d.ts +0 -0
  355. /package/{form-entry → dist/ngx-formentry/form-entry}/data-sources/data-sources.d.ts +0 -0
  356. /package/{form-entry → dist/ngx-formentry/form-entry}/data-sources/dummy-data-source.d.ts +0 -0
  357. /package/{form-entry → dist/ngx-formentry/form-entry}/directives/historical-value-directive.d.ts +0 -0
  358. /package/{form-entry → dist/ngx-formentry/form-entry}/error-renderer/error-renderer.component.d.ts +0 -0
  359. /package/{form-entry → dist/ngx-formentry/form-entry}/expression-runner/expression-runner.d.ts +0 -0
  360. /package/{form-entry → dist/ngx-formentry/form-entry}/form-entry.module.d.ts +0 -0
  361. /package/{form-entry → dist/ngx-formentry/form-entry}/form-factory/control-relations.factory.d.ts +0 -0
  362. /package/{form-entry → dist/ngx-formentry/form-entry}/form-factory/form-control.service.d.ts +0 -0
  363. /package/{form-entry → dist/ngx-formentry/form-entry}/form-factory/form-node.d.ts +0 -0
  364. /package/{form-entry → dist/ngx-formentry/form-entry}/form-factory/form.d.ts +0 -0
  365. /package/{form-entry → dist/ngx-formentry/form-entry}/form-factory/form.factory.d.ts +0 -0
  366. /package/{form-entry → dist/ngx-formentry/form-entry}/form-factory/hiders-disablers.factory.d.ts +0 -0
  367. /package/{form-entry → dist/ngx-formentry/form-entry}/form-factory/question.factory.d.ts +0 -0
  368. /package/{form-entry → dist/ngx-formentry/form-entry}/form-factory/show-messages.factory.d.ts +0 -0
  369. /package/{form-entry → dist/ngx-formentry/form-entry}/form-factory/validation.factory.d.ts +0 -0
  370. /package/{form-entry → dist/ngx-formentry/form-entry}/form-renderer/form-renderer.component.css.d.ts +0 -0
  371. /package/{form-entry → dist/ngx-formentry/form-entry}/form-renderer/form-renderer.component.d.ts +0 -0
  372. /package/{form-entry → dist/ngx-formentry/form-entry}/helpers/historical-expression-helper-service.d.ts +0 -0
  373. /package/{form-entry → dist/ngx-formentry/form-entry}/helpers/historical-field-helper-service.d.ts +0 -0
  374. /package/{form-entry → dist/ngx-formentry/form-entry}/helpers/js-expression-helper.d.ts +0 -0
  375. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/checkbox.model.d.ts +0 -0
  376. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/conditional-validation.model.d.ts +0 -0
  377. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/date-question.d.ts +0 -0
  378. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/date-validation.model.d.ts +0 -0
  379. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/decimal-point-validation.model.d.ts +0 -0
  380. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/file-upload-question.d.ts +0 -0
  381. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/group-question.d.ts +0 -0
  382. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/base-options.d.ts +0 -0
  383. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/checkbox-options.d.ts +0 -0
  384. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/data-source.d.ts +0 -0
  385. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/date-question-options.d.ts +0 -0
  386. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/file-upload-question-options.d.ts +0 -0
  387. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/group-question-options.d.ts +0 -0
  388. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/multi-select-options.d.ts +0 -0
  389. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/nested-questions.d.ts +0 -0
  390. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/repeating-question-options.d.ts +0 -0
  391. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/select-option.d.ts +0 -0
  392. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/select-question-options.d.ts +0 -0
  393. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/test-order-question-options.d.ts +0 -0
  394. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/text-area-question-options.d.ts +0 -0
  395. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/text-question-options.d.ts +0 -0
  396. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/time-question-options.d.ts +0 -0
  397. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/ui-select-question-options.d.ts +0 -0
  398. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/js-expression-validation.model.d.ts +0 -0
  399. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/max-validation.model.d.ts +0 -0
  400. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/min-validation.model.d.ts +0 -0
  401. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/models.d.ts +0 -0
  402. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/multi-select-question.d.ts +0 -0
  403. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/pair.model.d.ts +0 -0
  404. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/question-base.d.ts +0 -0
  405. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/rendering-type.d.ts +0 -0
  406. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/repeating-question.d.ts +0 -0
  407. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/select-option.d.ts +0 -0
  408. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/select-question.d.ts +0 -0
  409. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/test-order-question.d.ts +0 -0
  410. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/text-area-input-question.d.ts +0 -0
  411. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/text-input-question.d.ts +0 -0
  412. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/time-question.d.ts +0 -0
  413. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/ui-select-question.d.ts +0 -0
  414. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/validation.model.d.ts +0 -0
  415. /package/{form-entry → dist/ngx-formentry/form-entry}/services/debug-mode.service.d.ts +0 -0
  416. /package/{form-entry → dist/ngx-formentry/form-entry}/services/form-errors.service.d.ts +0 -0
  417. /package/{form-entry → dist/ngx-formentry/form-entry}/services/form-schema-compiler.service.d.ts +0 -0
  418. /package/{form-entry → dist/ngx-formentry/form-entry}/services/historical-encounter-data.service.d.ts +0 -0
  419. /package/{form-entry → dist/ngx-formentry/form-entry}/utils/messages.d.ts +0 -0
  420. /package/{form-entry → dist/ngx-formentry/form-entry}/validators/conditional-answered.validator.d.ts +0 -0
  421. /package/{form-entry → dist/ngx-formentry/form-entry}/validators/conditional-required.validator.d.ts +0 -0
  422. /package/{form-entry → dist/ngx-formentry/form-entry}/validators/date.validator.d.ts +0 -0
  423. /package/{form-entry → dist/ngx-formentry/form-entry}/validators/future-date-restriction.validator.d.ts +0 -0
  424. /package/{form-entry → dist/ngx-formentry/form-entry}/validators/js-expression.validator.d.ts +0 -0
  425. /package/{form-entry → dist/ngx-formentry/form-entry}/validators/max-date.validator.d.ts +0 -0
  426. /package/{form-entry → dist/ngx-formentry/form-entry}/validators/max.validator.d.ts +0 -0
  427. /package/{form-entry → dist/ngx-formentry/form-entry}/validators/min-date.validator.d.ts +0 -0
  428. /package/{form-entry → dist/ngx-formentry/form-entry}/validators/min.validator.d.ts +0 -0
  429. /package/{form-entry → dist/ngx-formentry/form-entry}/validators/required.validator.d.ts +0 -0
  430. /package/{form-entry → dist/ngx-formentry/form-entry}/validators/validations.d.ts +0 -0
  431. /package/{form-entry → dist/ngx-formentry/form-entry}/value-adapters/encounter.adapter.d.ts +0 -0
  432. /package/{form-entry → dist/ngx-formentry/form-entry}/value-adapters/obs-adapter-helper.d.ts +0 -0
  433. /package/{form-entry → dist/ngx-formentry/form-entry}/value-adapters/obs.adapter.d.ts +0 -0
  434. /package/{form-entry → dist/ngx-formentry/form-entry}/value-adapters/order.adapter.d.ts +0 -0
  435. /package/{form-entry → dist/ngx-formentry/form-entry}/value-adapters/person-attribute.adapter.d.ts +0 -0
  436. /package/{form-entry → dist/ngx-formentry/form-entry}/value-adapters/value.adapter.d.ts +0 -0
  437. /package/{public_api.d.ts → dist/ngx-formentry/public_api.d.ts} +0 -0
  438. /package/{shared.module.d.ts → dist/ngx-formentry/shared.module.d.ts} +0 -0
@@ -1,653 +0,0 @@
1
- import { Component, Input, Inject } from '@angular/core';
2
- import 'hammerjs';
3
- import { DEFAULT_STYLES } from './form-renderer.component.css';
4
- import { DOCUMENT } from '@angular/common';
5
- import { DataSources } from '../data-sources/data-sources';
6
- import { NodeBase, GroupNode } from '../form-factory/form-node';
7
- import { AfeFormGroup } from '../../abstract-controls-extension/afe-form-group';
8
- import { ValidationFactory } from '../form-factory/validation.factory';
9
- import { FormErrorsService } from '../services/form-errors.service';
10
- // import { concat, of, Observable, Subject, BehaviorSubject } from 'rxjs';
11
- // import * as _ from 'lodash';
12
- // import { debounceTime, distinctUntilChanged, tap, switchMap, catchError, map } from 'rxjs/operators';
13
- // import { QuestionBase } from '../question-models';
14
- export class FormRendererComponent {
15
- // items$: Observable<any[]>;
16
- // itemsLoading = false;
17
- // itemsInput$ = new Subject<string>();
18
- constructor(validationFactory, dataSources, formErrorsService, document) {
19
- this.validationFactory = validationFactory;
20
- this.dataSources = dataSources;
21
- this.formErrorsService = formErrorsService;
22
- this.document = document;
23
- this.childComponents = [];
24
- this.isCollapsed = false;
25
- this.activeTab = 0;
26
- }
27
- ngOnInit() {
28
- this.setUpRemoteSelect();
29
- this.setUpFileUpload();
30
- this.setUpDatepickerHolidays();
31
- if (this.node && this.node.form) {
32
- const tab = this.node.form.valueProcessingInfo.lastFormTab;
33
- if (tab && tab !== this.activeTab) {
34
- this.activeTab = tab;
35
- }
36
- }
37
- if (this.node && this.node.question.renderingType === 'form') {
38
- this.formErrorsService.announceErrorField$.subscribe((error) => {
39
- this.scrollToControl(error);
40
- });
41
- }
42
- if (this.node && this.node.question.renderingType === 'section') {
43
- this.isCollapsed = !this.node.question.isExpanded;
44
- }
45
- if (this.parentComponent) {
46
- this.parentComponent.addChildComponent(this);
47
- }
48
- }
49
- addChildComponent(child) {
50
- this.childComponents.push(child);
51
- }
52
- setUpRemoteSelect() {
53
- if (this.node &&
54
- this.node.question.extras &&
55
- this.node.question.renderingType === 'remote-select') {
56
- // let selectQuestion = this.node.form.searchNodeByQuestionId(this.node.question.key)[0];
57
- this.dataSource = this.dataSources.dataSources[this.node.question.dataSource];
58
- /*
59
- let defaltValues = of([]);
60
- if (this.dataSource.resolveSelectedValue(selectQuestion.control.value)) {
61
- defaltValues = this.dataSource.resolveSelectedValue(selectQuestion.control.value).pipe(
62
- catchError(() => of([])), // empty list on error
63
- );
64
- }
65
- this.items$ = concat(
66
- defaltValues,
67
- this.itemsInput$.pipe(
68
- debounceTime(200),
69
- distinctUntilChanged(),
70
- tap(() => this.itemsLoading = true),
71
- switchMap(term => this.dataSource.searchOptions(term).pipe(
72
- catchError(() => of([])), // empty list on error
73
- tap(() => {
74
- this.itemsLoading = false
75
- })
76
- ))
77
- )
78
- );
79
- */
80
- if (this.dataSource && this.node.question.dataSourceOptions) {
81
- this.dataSource.dataSourceOptions = this.node.question.dataSourceOptions;
82
- }
83
- }
84
- }
85
- setUpFileUpload() {
86
- if (this.node &&
87
- this.node.question.extras &&
88
- this.node.question.renderingType === 'file') {
89
- this.dataSource = this.dataSources.dataSources[this.node.question.dataSource];
90
- // console.log('Key', this.node.question);
91
- // console.log('Data source', this.dataSource);
92
- }
93
- }
94
- setUpDatepickerHolidays() {
95
- this.dataSource = this.dataSources.dataSources[this.node.question.dataSource];
96
- }
97
- checkSection(node) {
98
- if (node.question.renderingType === 'section') {
99
- let groupChildrenHidden = false;
100
- const allSectionControlsHidden = Object.keys(node.children).every((k) => {
101
- const innerNode = node.children[k];
102
- if (innerNode instanceof GroupNode) {
103
- groupChildrenHidden = Object.keys(innerNode.children).every((i) => innerNode.children[i].control.hidden);
104
- }
105
- return node.children[k].control.hidden || groupChildrenHidden;
106
- });
107
- return !allSectionControlsHidden;
108
- }
109
- return true;
110
- }
111
- clickTab(tabNumber) {
112
- this.activeTab = tabNumber;
113
- }
114
- loadPreviousTab() {
115
- if (!this.isCurrentTabFirst()) {
116
- this.clickTab(this.activeTab - 1);
117
- document.body.scrollTop = 0;
118
- }
119
- }
120
- isCurrentTabFirst() {
121
- return this.activeTab === 0;
122
- }
123
- isCurrentTabLast() {
124
- return this.activeTab === this.node.question['questions'].length - 1;
125
- }
126
- loadNextTab() {
127
- if (!this.isCurrentTabLast()) {
128
- this.clickTab(this.activeTab + 1);
129
- document.body.scrollTop = 0;
130
- }
131
- }
132
- tabSelected($event) {
133
- this.activeTab = $event;
134
- this.setPreviousTab();
135
- }
136
- setPreviousTab() {
137
- if (this.node && this.node.form) {
138
- this.node.form.valueProcessingInfo['lastFormTab'] = this.activeTab;
139
- }
140
- }
141
- hasErrors() {
142
- return this.node.control.touched && !this.node.control.valid;
143
- }
144
- errors() {
145
- return this.getErrors(this.node);
146
- }
147
- scrollToControl(error) {
148
- const tab = +error.split(',')[0];
149
- const elSelector = error.split(',')[1] + 'id';
150
- // the tab components
151
- const tabComponent = this.childComponents[tab];
152
- this.clickTab(tab);
153
- setTimeout(() => {
154
- // expand all sections
155
- tabComponent.childComponents.forEach((section) => {
156
- section.isCollapsed = false;
157
- setTimeout(() => {
158
- const element = this.document.getElementById(elSelector);
159
- if (element !== null && element.focus) {
160
- element.focus();
161
- element.scrollIntoView({ behavior: 'smooth', block: 'center' });
162
- }
163
- }, 100);
164
- });
165
- }, 200);
166
- }
167
- onDateChanged(node) {
168
- // console.log('Node', node);
169
- this.node = node;
170
- }
171
- upload(event) {
172
- // console.log('Event', event);
173
- // console.log('Data', this.dataSource);
174
- }
175
- toggleInformation(infoId) {
176
- const e = document.getElementById(infoId);
177
- if (e.style.display === 'block') {
178
- e.style.display = 'none';
179
- }
180
- else {
181
- e.style.display = 'block';
182
- }
183
- console.log('InfoId', infoId);
184
- }
185
- getErrors(node) {
186
- const errors = node.control.errors;
187
- if (errors) {
188
- return this.validationFactory.errors(errors, node.question);
189
- }
190
- return [];
191
- }
192
- }
193
- FormRendererComponent.decorators = [
194
- { type: Component, args: [{
195
- selector: 'form-renderer',
196
- template: `<!--CONTAINERS-->
197
- <div *ngIf="node.question.renderingType === 'form'">
198
- <div class="dropdown dropdown-tabs forms-dropdown">
199
- <a class="btn dropdown-toggle" data-toggle="dropdown">
200
- <i class="fa fa-angle-double-down"></i>
201
- </a>
202
- <ul
203
- class="dropdown-menu dropdown-menu-right forms-dropdown-menu"
204
- role="menu"
205
- aria-labelledby="dropdownMenu"
206
- >
207
- <li
208
- *ngFor="let question of node.question.questions; let i = index"
209
- (click)="clickTab(i)"
210
- >
211
- {{ question.label }}
212
- </li>
213
- </ul>
214
- </div>
215
- <mat-tab-group
216
- (selectedIndexChange)="tabSelected($event)"
217
- [selectedIndex]="activeTab"
218
- >
219
- <mat-tab
220
- [label]="question.label"
221
- *ngFor="let question of node.question.questions; let i = index"
222
- >
223
- <div (swipeLeft)="loadNextTab()" (swipeRight)="loadPreviousTab()">
224
- <form-renderer
225
- [node]="node.children[question.key]"
226
- [parentComponent]="this"
227
- [parentGroup]="node.control"
228
- ></form-renderer>
229
- </div>
230
- </mat-tab>
231
- </mat-tab-group>
232
-
233
- <div style="text-align: center">
234
- <button
235
- type="button"
236
- class="btn btn-default"
237
- (click)="loadPreviousTab()"
238
- [ngClass]="{ disabled: isCurrentTabFirst() }"
239
- >
240
- &lt;&lt;
241
- </button>
242
- <button
243
- type="button"
244
- class="btn btn-default"
245
- (click)="loadNextTab()"
246
- [ngClass]="{ disabled: isCurrentTabLast() }"
247
- >
248
- &gt;&gt;
249
- </button>
250
- </div>
251
- </div>
252
- <div *ngIf="node.question.renderingType === 'page'">
253
- <!--<h2>{{node.question.label}}</h2>-->
254
- <form-renderer
255
- *ngFor="let question of node.question.questions"
256
- [parentComponent]="this"
257
- [node]="node.children[question.key]"
258
- [parentGroup]="parentGroup"
259
- ></form-renderer>
260
- </div>
261
- <div *ngIf="node.question.renderingType === 'section' && checkSection(node)">
262
- <div class="panel panel-primary">
263
- <div class="panel-heading">
264
- <button
265
- type="button"
266
- class="btn btn-primary pull-right"
267
- (click)="isCollapsed = !isCollapsed"
268
- >
269
- {{ isCollapsed ? 'Show' : 'Hide' }}
270
- </button>
271
- {{ node.question.label }}
272
- </div>
273
- <div class="panel-body" [collapse]="isCollapsed">
274
- <form-renderer
275
- *ngFor="let question of node.question.questions"
276
- [parentComponent]="this"
277
- [node]="node.children[question.key]"
278
- [parentGroup]="parentGroup"
279
- ></form-renderer>
280
- </div>
281
- </div>
282
- </div>
283
-
284
- <!-- MESSAGES -->
285
- <div
286
- *ngIf="node.control && node.control.alert && node.control.alert !== ''"
287
- class="alert alert-warning"
288
- >
289
- <a class="close" data-dismiss="alert">&times;</a> {{ node.control.alert }}
290
- </div>
291
-
292
- <!--CONTROLS-->
293
-
294
- <div
295
- *ngIf="node.question.controlType === 0"
296
- class="form-group"
297
- [formGroup]="parentGroup"
298
- [hidden]="node.control.hidden"
299
- [ngClass]="{ disabled: node.control.disabled }"
300
- >
301
- <!--LEAF CONTROL-->
302
- <div class="question-area">
303
- <a
304
- class="form-tooltip pull-right"
305
- (click)="toggleInformation(node.question.extras.id)"
306
- data-placement="right"
307
- *ngIf="
308
- node.question &&
309
- node.question.extras.questionInfo &&
310
- node.question.extras.questionInfo !== '' &&
311
- node.question.extras.questionInfo !== ' '
312
- "
313
- >
314
- <i class="glyphicon glyphicon-question-sign" aria-hidden="true"></i>
315
- </a>
316
-
317
- <label
318
- *ngIf="node.question.label"
319
- [style.color]="hasErrors() ? 'red' : ''"
320
- class="control-label"
321
- [attr.for]="node.question.key"
322
- >
323
- {{ node.question.required ? '*' : '' }} {{ node.question.label }}
324
- </label>
325
- <div [ngSwitch]="node.question.renderingType">
326
- <select
327
- class="form-control"
328
- *ngSwitchCase="'select'"
329
- [formControlName]="node.question.key"
330
- [id]="node.question.key + 'id'"
331
- >
332
- <option *ngFor="let o of node.question.options" [ngValue]="o.value">
333
- {{ o.label }}
334
- </option>
335
- </select>
336
-
337
- <app-file-upload
338
- *ngSwitchCase="'file'"
339
- [dataSource]="dataSource"
340
- [formControlName]="node.question.key"
341
- [id]="node.question.key + 'id'"
342
- (fileChanged)="upload($event)"
343
- >
344
- </app-file-upload>
345
- <textarea
346
- [placeholder]="node.question.placeholder"
347
- [rows]="node.question.rows"
348
- class="form-control"
349
- *ngSwitchCase="'textarea'"
350
- [formControlName]="node.question.key"
351
- [id]="node.question.key + 'id'"
352
- >
353
- </textarea>
354
- <!--
355
- <ng-select *ngSwitchCase="'remote-select'" [items]="items$ | async" bindLabel="label" bindValue="value" placeholder="{{node.question.placeholder}}"
356
- [hideSelected]="true" [loading]="itemsLoading" [typeahead]="itemsInput$" [formControlName]="node.question.key" [id]="node.question.key + 'id'">
357
- </ng-select>
358
- -->
359
- <remote-select
360
- *ngSwitchCase="'remote-select'"
361
- [placeholder]="node.question.placeholder"
362
- tabindex="0"
363
- [dataSource]="dataSource"
364
- [componentID]="node.question.key + 'id'"
365
- [formControlName]="node.question.key"
366
- [id]="node.question.key + 'id'"
367
- ></remote-select>
368
- <!--
369
- <date-time-picker *ngSwitchCase="'date'" [showTime]="node.question.showTime" tabindex="0" [weeks]='node.question.extras.questionOptions.weeksList'
370
- (onDateChange)="onDateChanged(node)" [showWeeks]="node.question.showWeeksAdder" [formControlName]="node.question.key"
371
- [id]="node.question.key + 'id'"></date-time-picker>
372
- -->
373
-
374
- <ngx-date-time-picker
375
- *ngSwitchCase="'date'"
376
- [showTime]="node.question.showTime"
377
- [id]="node.question.key + 'id'"
378
- [formControlName]="node.question.key"
379
- [weeks]="node.question.extras.questionOptions.weeksList"
380
- (onDateChange)="onDateChanged(node)"
381
- [showWeeks]="node.question.showWeeksAdder"
382
- [showHolidays]="node.question.showHolidays"
383
- [dataSource]="dataSource"
384
- ></ngx-date-time-picker>
385
- <ngx-time-picker
386
- *ngSwitchCase="'time'"
387
- id="node.question.key + 'id'"
388
- [formControlName]="node.question.key"
389
- ></ngx-time-picker>
390
- <ng-select
391
- *ngSwitchCase="'multi-select'"
392
- [style.height]="'auto'"
393
- [style.overflow-x]="'hidden'"
394
- tabindex="0"
395
- [formControlName]="node.question.key"
396
- [id]="node.question.key + 'id'"
397
- [options]="node.question.options"
398
- [multiple]="true"
399
- >
400
- </ng-select>
401
- <ng-select
402
- *ngSwitchCase="'single-select'"
403
- [style.height]="auto"
404
- tabindex="0"
405
- [formControlName]="node.question.key"
406
- [id]="node.question.key + 'id'"
407
- [options]="node.question.options"
408
- [multiple]="false"
409
- >
410
- </ng-select>
411
- <input
412
- class="form-control"
413
- *ngSwitchCase="'number'"
414
- [formControlName]="node.question.key"
415
- [attr.placeholder]="node.question.placeholder"
416
- [type]="'number'"
417
- [id]="node.question.key + 'id'"
418
- [step]="'any'"
419
- [min]="node.question.extras.questionOptions.min"
420
- [max]="node.question.extras.questionOptions.max"
421
- />
422
- <input
423
- class="form-control"
424
- *ngSwitchCase="'decimal'"
425
- [formControlName]="node.question.key"
426
- [attr.placeholder]="node.question.placeholder"
427
- [type]="'text'"
428
- [id]="node.question.key + 'id'"
429
- [min]="node.question.extras.questionOptions.min"
430
- [max]="node.question.extras.questionOptions.max"
431
- />
432
- <input
433
- class="form-control"
434
- *ngSwitchDefault
435
- [formControlName]="node.question.key"
436
- [attr.placeholder]="node.question.placeholder"
437
- [type]="node.question.renderingType"
438
- [id]="node.question.key + 'id'"
439
- />
440
-
441
- <div *ngSwitchCase="'radio'">
442
- <div *ngFor="let o of node.question.options">
443
- <label class="form-control no-border">
444
- <input
445
- type="radio"
446
- [formControlName]="node.question.key"
447
- [id]="node.question.key + 'id'"
448
- [value]="o.value"
449
- />
450
- {{ o.label }}
451
- </label>
452
- </div>
453
- </div>
454
-
455
- <div *ngSwitchCase="'checkbox'">
456
- <checkbox
457
- [id]="node.question.key + 'id'"
458
- [formControlName]="node.question.key"
459
- [options]="node.question.options"
460
- [selected]="node.control.value"
461
- ></checkbox>
462
- </div>
463
-
464
- <div
465
- *ngIf="
466
- node.question.enableHistoricalValue && node.question.historicalDisplay
467
- "
468
- style="margin-top: 2px"
469
- >
470
- <div class="container-fluid">
471
- <div class="row">
472
- <div class="col-xs-9">
473
- <span class="text-warning">Previous Value: </span>
474
- <strong>{{ node.question.historicalDisplay?.text }}</strong>
475
- <span *ngIf="node.question.showHistoricalValueDate">
476
- <span> | </span>
477
- <strong class="text-primary"
478
- >{{ node.question.historicalDisplay?._date }}
479
- </strong>
480
- <span
481
- class="text-primary"
482
- *ngIf="
483
- node.question.historicalDisplay &&
484
- node.question.historicalDisplay._date
485
- "
486
- >
487
- ({{ node.question.historicalDisplay._date | timeAgo }})</span
488
- >
489
- </span>
490
- </div>
491
- <button
492
- type="button"
493
- [node]="node"
494
- [name]="'historyValue'"
495
- class="btn btn-primary btn-small col-xs-3"
496
- >
497
- Use Value
498
- </button>
499
- </div>
500
- </div>
501
- </div>
502
- <appointments-overview [node]="node"></appointments-overview>
503
- <div *ngIf="hasErrors()">
504
- <p *ngFor="let e of errors()">
505
- <span class="text-danger">{{ e }}</span>
506
- </p>
507
- </div>
508
- </div>
509
-
510
- <div
511
- class="question-info col-md-12 col-lg-12 col-sm-12"
512
- id="{{ node.question.extras.id }}"
513
- *ngIf="
514
- node.question &&
515
- node.question.extras.questionInfo &&
516
- node.question.extras.questionInfo !== '' &&
517
- node.question.extras.questionInfo !== ' '
518
- "
519
- >
520
- {{ node.question.extras.questionInfo }}
521
- </div>
522
- </div>
523
- </div>
524
- <div
525
- *ngIf="node.question.controlType === 1"
526
- [hidden]="node.control.hidden"
527
- [ngClass]="{ disabled: node.control.disabled }"
528
- >
529
- <!--ARRAY CONTROL-->
530
- <div [ngSwitch]="node.question.renderingType">
531
- <div class="well" style="padding: 2px" *ngSwitchCase="'repeating'">
532
- <h4 style="margin: 2px; font-weight: bold">{{ node.question.label }}</h4>
533
- <hr
534
- style="
535
- margin-left: -2px;
536
- margin-right: -2px;
537
- margin-bottom: 4px;
538
- margin-top: 8px;
539
- border-width: 2px;
540
- "
541
- />
542
- <div [ngSwitch]="node.question.extras.type">
543
- <div *ngSwitchCase="'testOrder'">
544
- <div *ngFor="let child of node.children; let i = index">
545
- <form-renderer
546
- *ngFor="let question of child.question.questions"
547
- [parentComponent]="this"
548
- [node]="child.children[question.key]"
549
- [parentGroup]="child.control"
550
- ></form-renderer>
551
- <div>{{ child.orderNumber }}</div>
552
- <button
553
- type="button "
554
- class="btn btn-sm btn-danger"
555
- (click)="node.removeAt(i)"
556
- >
557
- Remove
558
- </button>
559
- <br />
560
- <hr
561
- style="
562
- margin-left: -2px;
563
- margin-right: -2px;
564
- margin-bottom: 4px;
565
- margin-top: 8px;
566
- border-width: 1px;
567
- "
568
- />
569
- </div>
570
- </div>
571
-
572
- <div *ngSwitchCase="'obsGroup'" style="margin-bottom: 20px">
573
- <div *ngFor="let child of node.children; let i = index">
574
- <form-renderer
575
- *ngFor="let question of child.question.questions"
576
- [parentComponent]="this"
577
- [node]="child.children[question.key]"
578
- [parentGroup]="child.control"
579
- ></form-renderer>
580
- <button
581
- type="button "
582
- class="btn btn-sm btn-danger"
583
- (click)="node.removeAt(i)"
584
- >
585
- Remove
586
- </button>
587
- <br />
588
- <hr
589
- style="
590
- margin-left: -2px;
591
- margin-right: -2px;
592
- margin-bottom: 4px;
593
- margin-top: 8px;
594
- border-width: 1px;
595
- "
596
- />
597
- </div>
598
- </div>
599
- </div>
600
- <button
601
- type="button "
602
- class="btn btn-primary"
603
- (click)="node.createChildNode()"
604
- >
605
- Add
606
- </button>
607
- </div>
608
- </div>
609
- </div>
610
- <div
611
- *ngIf="node.question.controlType === 2"
612
- [hidden]="node.control.hidden"
613
- [ngClass]="{ disabled: node.control.disabled }"
614
- >
615
- <!--GROUP-->
616
- <div [ngSwitch]="node.question.renderingType">
617
- <div *ngSwitchCase="'group'">
618
- <form-renderer
619
- *ngFor="let question of node.question.questions"
620
- [parentComponent]="this"
621
- [node]="node.children[question.key]"
622
- [parentGroup]="node.control"
623
- ></form-renderer>
624
- </div>
625
- <div
626
- *ngSwitchCase="'field-set'"
627
- style="border: 1px solid #eeeeee; padding: 2px; margin: 2px"
628
- >
629
- <form-renderer
630
- *ngFor="let question of node.question.questions"
631
- [parentComponent]="this"
632
- [node]="node.children[question.key]"
633
- [parentGroup]="node.control"
634
- ></form-renderer>
635
- </div>
636
- </div>
637
- </div>
638
- `,
639
- styles: ['../../style/app.css', DEFAULT_STYLES]
640
- },] },
641
- ];
642
- FormRendererComponent.ctorParameters = () => [
643
- { type: ValidationFactory },
644
- { type: DataSources },
645
- { type: FormErrorsService },
646
- { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] }
647
- ];
648
- FormRendererComponent.propDecorators = {
649
- parentComponent: [{ type: Input }],
650
- node: [{ type: Input }],
651
- parentGroup: [{ type: Input }]
652
- };
653
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1yZW5kZXJlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYW1wYXRoLWtlbnlhL25neC1vcGVubXJzLWZvcm1lbnRyeS8iLCJzb3VyY2VzIjpbImZvcm0tZW50cnkvZm9ybS1yZW5kZXJlci9mb3JtLXJlbmRlcmVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULEtBQUssRUFDTCxNQUFNLEVBR1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxVQUFVLENBQUM7QUFDbEIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFFBQVEsRUFBWSxTQUFTLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDaEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFdkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFcEUsMkVBQTJFO0FBQzNFLCtCQUErQjtBQUUvQix3R0FBd0c7QUFDeEcscURBQXFEO0FBaWNyRCxNQUFNO0lBYUosNkJBQTZCO0lBQzdCLHdCQUF3QjtJQUN4Qix1Q0FBdUM7SUFFdkMsWUFDVSxpQkFBb0MsRUFDcEMsV0FBd0IsRUFDeEIsaUJBQW9DLEVBQ2xCLFFBQWE7UUFIL0Isc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ2xCLGFBQVEsR0FBUixRQUFRLENBQUs7UUFqQmxDLG9CQUFlLEdBQTRCLEVBQUUsQ0FBQztRQU05Qyxn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QUFDO2dCQUNULFFBQVEsRUFBRSxlQUFlO2dCQUN6QixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0EwYlg7Z0JBQ0MsTUFBTSxFQUFFLENBQUMscUJBQXFCLEVBQUUsY0FBYyxDQUFDO2FBQ2hEOzs7WUF4Y1EsaUJBQWlCO1lBSGpCLFdBQVc7WUFLWCxpQkFBaUI7NENBNGRyQixNQUFNLFNBQUMsUUFBUTs7OzhCQXBCakIsS0FBSzttQkFDTCxLQUFLOzBCQUNMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIE9uSW5pdCxcbiAgSW5wdXQsXG4gIEluamVjdCxcbiAgT25DaGFuZ2VzLFxuICBTaW1wbGVDaGFuZ2VzXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0ICdoYW1tZXJqcyc7XG5pbXBvcnQgeyBERUZBVUxUX1NUWUxFUyB9IGZyb20gJy4vZm9ybS1yZW5kZXJlci5jb21wb25lbnQuY3NzJztcbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IERhdGFTb3VyY2VzIH0gZnJvbSAnLi4vZGF0YS1zb3VyY2VzL2RhdGEtc291cmNlcyc7XG5pbXBvcnQgeyBOb2RlQmFzZSwgTGVhZk5vZGUsIEdyb3VwTm9kZSB9IGZyb20gJy4uL2Zvcm0tZmFjdG9yeS9mb3JtLW5vZGUnO1xuaW1wb3J0IHsgQWZlRm9ybUdyb3VwIH0gZnJvbSAnLi4vLi4vYWJzdHJhY3QtY29udHJvbHMtZXh0ZW5zaW9uL2FmZS1mb3JtLWdyb3VwJztcbmltcG9ydCB7IFZhbGlkYXRpb25GYWN0b3J5IH0gZnJvbSAnLi4vZm9ybS1mYWN0b3J5L3ZhbGlkYXRpb24uZmFjdG9yeSc7XG5pbXBvcnQgeyBEYXRhU291cmNlIH0gZnJvbSAnLi4vcXVlc3Rpb24tbW9kZWxzL2ludGVyZmFjZXMvZGF0YS1zb3VyY2UnO1xuaW1wb3J0IHsgRm9ybUVycm9yc1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9mb3JtLWVycm9ycy5zZXJ2aWNlJztcbmltcG9ydCB7IFF1ZXN0aW9uR3JvdXAgfSBmcm9tICcuLi9xdWVzdGlvbi1tb2RlbHMvZ3JvdXAtcXVlc3Rpb24nO1xuLy8gaW1wb3J0IHsgY29uY2F0LCBvZiwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG4vLyBpbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5cbi8vIGltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIHRhcCwgc3dpdGNoTWFwLCBjYXRjaEVycm9yLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG4vLyBpbXBvcnQgeyBRdWVzdGlvbkJhc2UgfSBmcm9tICcuLi9xdWVzdGlvbi1tb2RlbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmb3JtLXJlbmRlcmVyJyxcbiAgdGVtcGxhdGU6IGA8IS0tQ09OVEFJTkVSUy0tPlxuPGRpdiAqbmdJZj1cIm5vZGUucXVlc3Rpb24ucmVuZGVyaW5nVHlwZSA9PT0gJ2Zvcm0nXCI+XG4gIDxkaXYgY2xhc3M9XCJkcm9wZG93biBkcm9wZG93bi10YWJzIGZvcm1zLWRyb3Bkb3duXCI+XG4gICAgPGEgY2xhc3M9XCJidG4gZHJvcGRvd24tdG9nZ2xlXCIgZGF0YS10b2dnbGU9XCJkcm9wZG93blwiPlxuICAgICAgPGkgY2xhc3M9XCJmYSBmYS1hbmdsZS1kb3VibGUtZG93blwiPjwvaT5cbiAgICA8L2E+XG4gICAgPHVsXG4gICAgICBjbGFzcz1cImRyb3Bkb3duLW1lbnUgZHJvcGRvd24tbWVudS1yaWdodCBmb3Jtcy1kcm9wZG93bi1tZW51XCJcbiAgICAgIHJvbGU9XCJtZW51XCJcbiAgICAgIGFyaWEtbGFiZWxsZWRieT1cImRyb3Bkb3duTWVudVwiXG4gICAgPlxuICAgICAgPGxpXG4gICAgICAgICpuZ0Zvcj1cImxldCBxdWVzdGlvbiBvZiBub2RlLnF1ZXN0aW9uLnF1ZXN0aW9uczsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgIChjbGljayk9XCJjbGlja1RhYihpKVwiXG4gICAgICA+XG4gICAgICAgIHt7IHF1ZXN0aW9uLmxhYmVsIH19XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gIDwvZGl2PlxuICA8bWF0LXRhYi1ncm91cFxuICAgIChzZWxlY3RlZEluZGV4Q2hhbmdlKT1cInRhYlNlbGVjdGVkKCRldmVudClcIlxuICAgIFtzZWxlY3RlZEluZGV4XT1cImFjdGl2ZVRhYlwiXG4gID5cbiAgICA8bWF0LXRhYlxuICAgICAgW2xhYmVsXT1cInF1ZXN0aW9uLmxhYmVsXCJcbiAgICAgICpuZ0Zvcj1cImxldCBxdWVzdGlvbiBvZiBub2RlLnF1ZXN0aW9uLnF1ZXN0aW9uczsgbGV0IGkgPSBpbmRleFwiXG4gICAgPlxuICAgICAgPGRpdiAoc3dpcGVMZWZ0KT1cImxvYWROZXh0VGFiKClcIiAoc3dpcGVSaWdodCk9XCJsb2FkUHJldmlvdXNUYWIoKVwiPlxuICAgICAgICA8Zm9ybS1yZW5kZXJlclxuICAgICAgICAgIFtub2RlXT1cIm5vZGUuY2hpbGRyZW5bcXVlc3Rpb24ua2V5XVwiXG4gICAgICAgICAgW3BhcmVudENvbXBvbmVudF09XCJ0aGlzXCJcbiAgICAgICAgICBbcGFyZW50R3JvdXBdPVwibm9kZS5jb250cm9sXCJcbiAgICAgICAgPjwvZm9ybS1yZW5kZXJlcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbWF0LXRhYj5cbiAgPC9tYXQtdGFiLWdyb3VwPlxuXG4gIDxkaXYgc3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXJcIj5cbiAgICA8YnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0XCJcbiAgICAgIChjbGljayk9XCJsb2FkUHJldmlvdXNUYWIoKVwiXG4gICAgICBbbmdDbGFzc109XCJ7IGRpc2FibGVkOiBpc0N1cnJlbnRUYWJGaXJzdCgpIH1cIlxuICAgID5cbiAgICAgICZsdDsmbHQ7XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvblxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdFwiXG4gICAgICAoY2xpY2spPVwibG9hZE5leHRUYWIoKVwiXG4gICAgICBbbmdDbGFzc109XCJ7IGRpc2FibGVkOiBpc0N1cnJlbnRUYWJMYXN0KCkgfVwiXG4gICAgPlxuICAgICAgJmd0OyZndDtcbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgKm5nSWY9XCJub2RlLnF1ZXN0aW9uLnJlbmRlcmluZ1R5cGUgPT09ICdwYWdlJ1wiPlxuICA8IS0tPGgyPnt7bm9kZS5xdWVzdGlvbi5sYWJlbH19PC9oMj4tLT5cbiAgPGZvcm0tcmVuZGVyZXJcbiAgICAqbmdGb3I9XCJsZXQgcXVlc3Rpb24gb2Ygbm9kZS5xdWVzdGlvbi5xdWVzdGlvbnNcIlxuICAgIFtwYXJlbnRDb21wb25lbnRdPVwidGhpc1wiXG4gICAgW25vZGVdPVwibm9kZS5jaGlsZHJlbltxdWVzdGlvbi5rZXldXCJcbiAgICBbcGFyZW50R3JvdXBdPVwicGFyZW50R3JvdXBcIlxuICA+PC9mb3JtLXJlbmRlcmVyPlxuPC9kaXY+XG48ZGl2ICpuZ0lmPVwibm9kZS5xdWVzdGlvbi5yZW5kZXJpbmdUeXBlID09PSAnc2VjdGlvbicgJiYgY2hlY2tTZWN0aW9uKG5vZGUpXCI+XG4gIDxkaXYgY2xhc3M9XCJwYW5lbCBwYW5lbC1wcmltYXJ5XCI+XG4gICAgPGRpdiBjbGFzcz1cInBhbmVsLWhlYWRpbmdcIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IHB1bGwtcmlnaHRcIlxuICAgICAgICAoY2xpY2spPVwiaXNDb2xsYXBzZWQgPSAhaXNDb2xsYXBzZWRcIlxuICAgICAgPlxuICAgICAgICB7eyBpc0NvbGxhcHNlZCA/ICdTaG93JyA6ICdIaWRlJyB9fVxuICAgICAgPC9idXR0b24+XG4gICAgICB7eyBub2RlLnF1ZXN0aW9uLmxhYmVsIH19XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInBhbmVsLWJvZHlcIiBbY29sbGFwc2VdPVwiaXNDb2xsYXBzZWRcIj5cbiAgICAgIDxmb3JtLXJlbmRlcmVyXG4gICAgICAgICpuZ0Zvcj1cImxldCBxdWVzdGlvbiBvZiBub2RlLnF1ZXN0aW9uLnF1ZXN0aW9uc1wiXG4gICAgICAgIFtwYXJlbnRDb21wb25lbnRdPVwidGhpc1wiXG4gICAgICAgIFtub2RlXT1cIm5vZGUuY2hpbGRyZW5bcXVlc3Rpb24ua2V5XVwiXG4gICAgICAgIFtwYXJlbnRHcm91cF09XCJwYXJlbnRHcm91cFwiXG4gICAgICA+PC9mb3JtLXJlbmRlcmVyPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48IS0tIE1FU1NBR0VTIC0tPlxuPGRpdlxuICAqbmdJZj1cIm5vZGUuY29udHJvbCAmJiBub2RlLmNvbnRyb2wuYWxlcnQgJiYgbm9kZS5jb250cm9sLmFsZXJ0ICE9PSAnJ1wiXG4gIGNsYXNzPVwiYWxlcnQgYWxlcnQtd2FybmluZ1wiXG4+XG4gIDxhIGNsYXNzPVwiY2xvc2VcIiBkYXRhLWRpc21pc3M9XCJhbGVydFwiPiZ0aW1lczs8L2E+IHt7IG5vZGUuY29udHJvbC5hbGVydCB9fVxuPC9kaXY+XG5cbjwhLS1DT05UUk9MUy0tPlxuXG48ZGl2XG4gICpuZ0lmPVwibm9kZS5xdWVzdGlvbi5jb250cm9sVHlwZSA9PT0gMFwiXG4gIGNsYXNzPVwiZm9ybS1ncm91cFwiXG4gIFtmb3JtR3JvdXBdPVwicGFyZW50R3JvdXBcIlxuICBbaGlkZGVuXT1cIm5vZGUuY29udHJvbC5oaWRkZW5cIlxuICBbbmdDbGFzc109XCJ7IGRpc2FibGVkOiBub2RlLmNvbnRyb2wuZGlzYWJsZWQgfVwiXG4+XG4gIDwhLS1MRUFGIENPTlRST0wtLT5cbiAgPGRpdiBjbGFzcz1cInF1ZXN0aW9uLWFyZWFcIj5cbiAgICA8YVxuICAgICAgY2xhc3M9XCJmb3JtLXRvb2x0aXAgcHVsbC1yaWdodFwiXG4gICAgICAoY2xpY2spPVwidG9nZ2xlSW5mb3JtYXRpb24obm9kZS5xdWVzdGlvbi5leHRyYXMuaWQpXCJcbiAgICAgIGRhdGEtcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgKm5nSWY9XCJcbiAgICAgICAgbm9kZS5xdWVzdGlvbiAmJlxuICAgICAgICBub2RlLnF1ZXN0aW9uLmV4dHJhcy5xdWVzdGlvbkluZm8gJiZcbiAgICAgICAgbm9kZS5xdWVzdGlvbi5leHRyYXMucXVlc3Rpb25JbmZvICE9PSAnJyAmJlxuICAgICAgICBub2RlLnF1ZXN0aW9uLmV4dHJhcy5xdWVzdGlvbkluZm8gIT09ICcgJ1xuICAgICAgXCJcbiAgICA+XG4gICAgICA8aSBjbGFzcz1cImdseXBoaWNvbiBnbHlwaGljb24tcXVlc3Rpb24tc2lnblwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICA8L2E+XG5cbiAgICA8bGFiZWxcbiAgICAgICpuZ0lmPVwibm9kZS5xdWVzdGlvbi5sYWJlbFwiXG4gICAgICBbc3R5bGUuY29sb3JdPVwiaGFzRXJyb3JzKCkgPyAncmVkJyA6ICcnXCJcbiAgICAgIGNsYXNzPVwiY29udHJvbC1sYWJlbFwiXG4gICAgICBbYXR0ci5mb3JdPVwibm9kZS5xdWVzdGlvbi5rZXlcIlxuICAgID5cbiAgICAgIHt7IG5vZGUucXVlc3Rpb24ucmVxdWlyZWQgPyAnKicgOiAnJyB9fSB7eyBub2RlLnF1ZXN0aW9uLmxhYmVsIH19XG4gICAgPC9sYWJlbD5cbiAgICA8ZGl2IFtuZ1N3aXRjaF09XCJub2RlLnF1ZXN0aW9uLnJlbmRlcmluZ1R5cGVcIj5cbiAgICAgIDxzZWxlY3RcbiAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ3NlbGVjdCdcIlxuICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cIm5vZGUucXVlc3Rpb24ua2V5XCJcbiAgICAgICAgW2lkXT1cIm5vZGUucXVlc3Rpb24ua2V5ICsgJ2lkJ1wiXG4gICAgICA+XG4gICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IG8gb2Ygbm9kZS5xdWVzdGlvbi5vcHRpb25zXCIgW25nVmFsdWVdPVwiby52YWx1ZVwiPlxuICAgICAgICAgIHt7IG8ubGFiZWwgfX1cbiAgICAgICAgPC9vcHRpb24+XG4gICAgICA8L3NlbGVjdD5cblxuICAgICAgPGFwcC1maWxlLXVwbG9hZFxuICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ2ZpbGUnXCJcbiAgICAgICAgW2RhdGFTb3VyY2VdPVwiZGF0YVNvdXJjZVwiXG4gICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwibm9kZS5xdWVzdGlvbi5rZXlcIlxuICAgICAgICBbaWRdPVwibm9kZS5xdWVzdGlvbi5rZXkgKyAnaWQnXCJcbiAgICAgICAgKGZpbGVDaGFuZ2VkKT1cInVwbG9hZCgkZXZlbnQpXCJcbiAgICAgID5cbiAgICAgIDwvYXBwLWZpbGUtdXBsb2FkPlxuICAgICAgPHRleHRhcmVhXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJub2RlLnF1ZXN0aW9uLnBsYWNlaG9sZGVyXCJcbiAgICAgICAgW3Jvd3NdPVwibm9kZS5xdWVzdGlvbi5yb3dzXCJcbiAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ3RleHRhcmVhJ1wiXG4gICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwibm9kZS5xdWVzdGlvbi5rZXlcIlxuICAgICAgICBbaWRdPVwibm9kZS5xdWVzdGlvbi5rZXkgKyAnaWQnXCJcbiAgICAgID5cbiAgICAgIDwvdGV4dGFyZWE+XG4gICAgICA8IS0tXG4gICAgICA8bmctc2VsZWN0ICpuZ1N3aXRjaENhc2U9XCIncmVtb3RlLXNlbGVjdCdcIiBbaXRlbXNdPVwiaXRlbXMkIHwgYXN5bmNcIiBiaW5kTGFiZWw9XCJsYWJlbFwiIGJpbmRWYWx1ZT1cInZhbHVlXCIgcGxhY2Vob2xkZXI9XCJ7e25vZGUucXVlc3Rpb24ucGxhY2Vob2xkZXJ9fVwiXG4gICAgICAgIFtoaWRlU2VsZWN0ZWRdPVwidHJ1ZVwiIFtsb2FkaW5nXT1cIml0ZW1zTG9hZGluZ1wiICBbdHlwZWFoZWFkXT1cIml0ZW1zSW5wdXQkXCIgW2Zvcm1Db250cm9sTmFtZV09XCJub2RlLnF1ZXN0aW9uLmtleVwiIFtpZF09XCJub2RlLnF1ZXN0aW9uLmtleSArICdpZCdcIj5cbiAgICAgIDwvbmctc2VsZWN0PlxuICAgIC0tPlxuICAgICAgPHJlbW90ZS1zZWxlY3RcbiAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidyZW1vdGUtc2VsZWN0J1wiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJub2RlLnF1ZXN0aW9uLnBsYWNlaG9sZGVyXCJcbiAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgW2RhdGFTb3VyY2VdPVwiZGF0YVNvdXJjZVwiXG4gICAgICAgIFtjb21wb25lbnRJRF09XCJub2RlLnF1ZXN0aW9uLmtleSArICdpZCdcIlxuICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cIm5vZGUucXVlc3Rpb24ua2V5XCJcbiAgICAgICAgW2lkXT1cIm5vZGUucXVlc3Rpb24ua2V5ICsgJ2lkJ1wiXG4gICAgICA+PC9yZW1vdGUtc2VsZWN0PlxuICAgICAgPCEtLSAgXG4gICAgICA8ZGF0ZS10aW1lLXBpY2tlciAqbmdTd2l0Y2hDYXNlPVwiJ2RhdGUnXCIgW3Nob3dUaW1lXT1cIm5vZGUucXVlc3Rpb24uc2hvd1RpbWVcIiB0YWJpbmRleD1cIjBcIiBbd2Vla3NdPSdub2RlLnF1ZXN0aW9uLmV4dHJhcy5xdWVzdGlvbk9wdGlvbnMud2Vla3NMaXN0J1xuICAgICAgICAob25EYXRlQ2hhbmdlKT1cIm9uRGF0ZUNoYW5nZWQobm9kZSlcIiBbc2hvd1dlZWtzXT1cIm5vZGUucXVlc3Rpb24uc2hvd1dlZWtzQWRkZXJcIiBbZm9ybUNvbnRyb2xOYW1lXT1cIm5vZGUucXVlc3Rpb24ua2V5XCJcbiAgICAgICAgW2lkXT1cIm5vZGUucXVlc3Rpb24ua2V5ICsgJ2lkJ1wiPjwvZGF0ZS10aW1lLXBpY2tlcj5cbiAgLS0+XG5cbiAgICAgIDxuZ3gtZGF0ZS10aW1lLXBpY2tlclxuICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ2RhdGUnXCJcbiAgICAgICAgW3Nob3dUaW1lXT1cIm5vZGUucXVlc3Rpb24uc2hvd1RpbWVcIlxuICAgICAgICBbaWRdPVwibm9kZS5xdWVzdGlvbi5rZXkgKyAnaWQnXCJcbiAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJub2RlLnF1ZXN0aW9uLmtleVwiXG4gICAgICAgIFt3ZWVrc109XCJub2RlLnF1ZXN0aW9uLmV4dHJhcy5xdWVzdGlvbk9wdGlvbnMud2Vla3NMaXN0XCJcbiAgICAgICAgKG9uRGF0ZUNoYW5nZSk9XCJvbkRhdGVDaGFuZ2VkKG5vZGUpXCJcbiAgICAgICAgW3Nob3dXZWVrc109XCJub2RlLnF1ZXN0aW9uLnNob3dXZWVrc0FkZGVyXCJcbiAgICAgICAgW3Nob3dIb2xpZGF5c109XCJub2RlLnF1ZXN0aW9uLnNob3dIb2xpZGF5c1wiXG4gICAgICAgIFtkYXRhU291cmNlXT1cImRhdGFTb3VyY2VcIlxuICAgICAgPjwvbmd4LWRhdGUtdGltZS1waWNrZXI+XG4gICAgICA8bmd4LXRpbWUtcGlja2VyICBcbiAgICAgICpuZ1N3aXRjaENhc2U9XCIndGltZSdcIiAgXG4gICAgICBpZD1cIm5vZGUucXVlc3Rpb24ua2V5ICsgJ2lkJ1wiICBcbiAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwibm9kZS5xdWVzdGlvbi5rZXlcIlxuICAgICAgPjwvbmd4LXRpbWUtcGlja2VyPlxuICAgICAgPG5nLXNlbGVjdFxuICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ211bHRpLXNlbGVjdCdcIlxuICAgICAgICBbc3R5bGUuaGVpZ2h0XT1cIidhdXRvJ1wiXG4gICAgICAgIFtzdHlsZS5vdmVyZmxvdy14XT1cIidoaWRkZW4nXCJcbiAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJub2RlLnF1ZXN0aW9uLmtleVwiXG4gICAgICAgIFtpZF09XCJub2RlLnF1ZXN0aW9uLmtleSArICdpZCdcIlxuICAgICAgICBbb3B0aW9uc109XCJub2RlLnF1ZXN0aW9uLm9wdGlvbnNcIlxuICAgICAgICBbbXVsdGlwbGVdPVwidHJ1ZVwiXG4gICAgICA+XG4gICAgICA8L25nLXNlbGVjdD5cbiAgICAgIDxuZy1zZWxlY3RcbiAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidzaW5nbGUtc2VsZWN0J1wiXG4gICAgICAgIFtzdHlsZS5oZWlnaHRdPVwiYXV0b1wiXG4gICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwibm9kZS5xdWVzdGlvbi5rZXlcIlxuICAgICAgICBbaWRdPVwibm9kZS5xdWVzdGlvbi5rZXkgKyAnaWQnXCJcbiAgICAgICAgW29wdGlvbnNdPVwibm9kZS5xdWVzdGlvbi5vcHRpb25zXCJcbiAgICAgICAgW211bHRpcGxlXT1cImZhbHNlXCJcbiAgICAgID5cbiAgICAgIDwvbmctc2VsZWN0PlxuICAgICAgPGlucHV0XG4gICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidudW1iZXInXCJcbiAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJub2RlLnF1ZXN0aW9uLmtleVwiXG4gICAgICAgIFthdHRyLnBsYWNlaG9sZGVyXT1cIm5vZGUucXVlc3Rpb24ucGxhY2Vob2xkZXJcIlxuICAgICAgICBbdHlwZV09XCInbnVtYmVyJ1wiXG4gICAgICAgIFtpZF09XCJub2RlLnF1ZXN0aW9uLmtleSArICdpZCdcIlxuICAgICAgICBbc3RlcF09XCInYW55J1wiXG4gICAgICAgIFttaW5dPVwibm9kZS5xdWVzdGlvbi5leHRyYXMucXVlc3Rpb25PcHRpb25zLm1pblwiXG4gICAgICAgIFttYXhdPVwibm9kZS5xdWVzdGlvbi5leHRyYXMucXVlc3Rpb25PcHRpb25zLm1heFwiXG4gICAgICAvPlxuICAgICAgPGlucHV0XG4gICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidkZWNpbWFsJ1wiXG4gICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwibm9kZS5xdWVzdGlvbi5rZXlcIlxuICAgICAgICBbYXR0ci5wbGFjZWhvbGRlcl09XCJub2RlLnF1ZXN0aW9uLnBsYWNlaG9sZGVyXCJcbiAgICAgICAgW3R5cGVdPVwiJ3RleHQnXCJcbiAgICAgICAgW2lkXT1cIm5vZGUucXVlc3Rpb24ua2V5ICsgJ2lkJ1wiXG4gICAgICAgIFttaW5dPVwibm9kZS5xdWVzdGlvbi5leHRyYXMucXVlc3Rpb25PcHRpb25zLm1pblwiXG4gICAgICAgIFttYXhdPVwibm9kZS5xdWVzdGlvbi5leHRyYXMucXVlc3Rpb25PcHRpb25zLm1heFwiXG4gICAgICAvPlxuICAgICAgPGlucHV0XG4gICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgKm5nU3dpdGNoRGVmYXVsdFxuICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cIm5vZGUucXVlc3Rpb24ua2V5XCJcbiAgICAgICAgW2F0dHIucGxhY2Vob2xkZXJdPVwibm9kZS5xdWVzdGlvbi5wbGFjZWhvbGRlclwiXG4gICAgICAgIFt0eXBlXT1cIm5vZGUucXVlc3Rpb24ucmVuZGVyaW5nVHlwZVwiXG4gICAgICAgIFtpZF09XCJub2RlLnF1ZXN0aW9uLmtleSArICdpZCdcIlxuICAgICAgLz5cblxuICAgICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiJ3JhZGlvJ1wiPlxuICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBvIG9mIG5vZGUucXVlc3Rpb24ub3B0aW9uc1wiPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY29udHJvbCBuby1ib3JkZXJcIj5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cIm5vZGUucXVlc3Rpb24ua2V5XCJcbiAgICAgICAgICAgICAgW2lkXT1cIm5vZGUucXVlc3Rpb24ua2V5ICsgJ2lkJ1wiXG4gICAgICAgICAgICAgIFt2YWx1ZV09XCJvLnZhbHVlXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICB7eyBvLmxhYmVsIH19XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiJ2NoZWNrYm94J1wiPlxuICAgICAgICA8Y2hlY2tib3hcbiAgICAgICAgICBbaWRdPVwibm9kZS5xdWVzdGlvbi5rZXkgKyAnaWQnXCJcbiAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cIm5vZGUucXVlc3Rpb24ua2V5XCJcbiAgICAgICAgICBbb3B0aW9uc109XCJub2RlLnF1ZXN0aW9uLm9wdGlvbnNcIlxuICAgICAgICAgIFtzZWxlY3RlZF09XCJub2RlLmNvbnRyb2wudmFsdWVcIlxuICAgICAgICA+PC9jaGVja2JveD5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgbm9kZS5xdWVzdGlvbi5lbmFibGVIaXN0b3JpY2FsVmFsdWUgJiYgbm9kZS5xdWVzdGlvbi5oaXN0b3JpY2FsRGlzcGxheVxuICAgICAgICBcIlxuICAgICAgICBzdHlsZT1cIm1hcmdpbi10b3A6IDJweFwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXItZmx1aWRcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXhzLTlcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXdhcm5pbmdcIj5QcmV2aW91cyBWYWx1ZTogPC9zcGFuPlxuICAgICAgICAgICAgICA8c3Ryb25nPnt7IG5vZGUucXVlc3Rpb24uaGlzdG9yaWNhbERpc3BsYXk/LnRleHQgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJub2RlLnF1ZXN0aW9uLnNob3dIaXN0b3JpY2FsVmFsdWVEYXRlXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4+IHwgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzdHJvbmcgY2xhc3M9XCJ0ZXh0LXByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgPnt7IG5vZGUucXVlc3Rpb24uaGlzdG9yaWNhbERpc3BsYXk/Ll9kYXRlIH19XG4gICAgICAgICAgICAgICAgPC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1wcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICAgIG5vZGUucXVlc3Rpb24uaGlzdG9yaWNhbERpc3BsYXkgJiZcbiAgICAgICAgICAgICAgICAgICAgbm9kZS5xdWVzdGlvbi5oaXN0b3JpY2FsRGlzcGxheS5fZGF0ZVxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAoe3sgbm9kZS5xdWVzdGlvbi5oaXN0b3JpY2FsRGlzcGxheS5fZGF0ZSB8IHRpbWVBZ28gfX0pPC9zcGFuXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIFtub2RlXT1cIm5vZGVcIlxuICAgICAgICAgICAgICBbbmFtZV09XCInaGlzdG9yeVZhbHVlJ1wiXG4gICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbWFsbCBjb2wteHMtM1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIFVzZSBWYWx1ZVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8YXBwb2ludG1lbnRzLW92ZXJ2aWV3IFtub2RlXT1cIm5vZGVcIj48L2FwcG9pbnRtZW50cy1vdmVydmlldz5cbiAgICAgIDxkaXYgKm5nSWY9XCJoYXNFcnJvcnMoKVwiPlxuICAgICAgICA8cCAqbmdGb3I9XCJsZXQgZSBvZiBlcnJvcnMoKVwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1kYW5nZXJcIj57eyBlIH19PC9zcGFuPlxuICAgICAgICA8L3A+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwicXVlc3Rpb24taW5mbyBjb2wtbWQtMTIgY29sLWxnLTEyIGNvbC1zbS0xMlwiXG4gICAgICBpZD1cInt7IG5vZGUucXVlc3Rpb24uZXh0cmFzLmlkIH19XCJcbiAgICAgICpuZ0lmPVwiXG4gICAgICAgIG5vZGUucXVlc3Rpb24gJiZcbiAgICAgICAgbm9kZS5xdWVzdGlvbi5leHRyYXMucXVlc3Rpb25JbmZvICYmXG4gICAgICAgIG5vZGUucXVlc3Rpb24uZXh0cmFzLnF1ZXN0aW9uSW5mbyAhPT0gJycgJiZcbiAgICAgICAgbm9kZS5xdWVzdGlvbi5leHRyYXMucXVlc3Rpb25JbmZvICE9PSAnICdcbiAgICAgIFwiXG4gICAgPlxuICAgICAge3sgbm9kZS5xdWVzdGlvbi5leHRyYXMucXVlc3Rpb25JbmZvIH19XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG48ZGl2XG4gICpuZ0lmPVwibm9kZS5xdWVzdGlvbi5jb250cm9sVHlwZSA9PT0gMVwiXG4gIFtoaWRkZW5dPVwibm9kZS5jb250cm9sLmhpZGRlblwiXG4gIFtuZ0NsYXNzXT1cInsgZGlzYWJsZWQ6IG5vZGUuY29udHJvbC5kaXNhYmxlZCB9XCJcbj5cbiAgPCEtLUFSUkFZIENPTlRST0wtLT5cbiAgPGRpdiBbbmdTd2l0Y2hdPVwibm9kZS5xdWVzdGlvbi5yZW5kZXJpbmdUeXBlXCI+XG4gICAgPGRpdiBjbGFzcz1cIndlbGxcIiBzdHlsZT1cInBhZGRpbmc6IDJweFwiICpuZ1N3aXRjaENhc2U9XCIncmVwZWF0aW5nJ1wiPlxuICAgICAgPGg0IHN0eWxlPVwibWFyZ2luOiAycHg7IGZvbnQtd2VpZ2h0OiBib2xkXCI+e3sgbm9kZS5xdWVzdGlvbi5sYWJlbCB9fTwvaDQ+XG4gICAgICA8aHJcbiAgICAgICAgc3R5bGU9XCJcbiAgICAgICAgICBtYXJnaW4tbGVmdDogLTJweDtcbiAgICAgICAgICBtYXJnaW4tcmlnaHQ6IC0ycHg7XG4gICAgICAgICAgbWFyZ2luLWJvdHRvbTogNHB4O1xuICAgICAgICAgIG1hcmdpbi10b3A6IDhweDtcbiAgICAgICAgICBib3JkZXItd2lkdGg6IDJweDtcbiAgICAgICAgXCJcbiAgICAgIC8+XG4gICAgICA8ZGl2IFtuZ1N3aXRjaF09XCJub2RlLnF1ZXN0aW9uLmV4dHJhcy50eXBlXCI+XG4gICAgICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIid0ZXN0T3JkZXInXCI+XG4gICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgY2hpbGQgb2Ygbm9kZS5jaGlsZHJlbjsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICAgICAgPGZvcm0tcmVuZGVyZXJcbiAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHF1ZXN0aW9uIG9mIGNoaWxkLnF1ZXN0aW9uLnF1ZXN0aW9uc1wiXG4gICAgICAgICAgICAgIFtwYXJlbnRDb21wb25lbnRdPVwidGhpc1wiXG4gICAgICAgICAgICAgIFtub2RlXT1cImNoaWxkLmNoaWxkcmVuW3F1ZXN0aW9uLmtleV1cIlxuICAgICAgICAgICAgICBbcGFyZW50R3JvdXBdPVwiY2hpbGQuY29udHJvbFwiXG4gICAgICAgICAgICA+PC9mb3JtLXJlbmRlcmVyPlxuICAgICAgICAgICAgPGRpdj57eyBjaGlsZC5vcmRlck51bWJlciB9fTwvZGl2PlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uIFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tZGFuZ2VyXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm5vZGUucmVtb3ZlQXQoaSlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBSZW1vdmVcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJyIC8+XG4gICAgICAgICAgICA8aHJcbiAgICAgICAgICAgICAgc3R5bGU9XCJcbiAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogLTJweDtcbiAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IC0ycHg7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNHB4O1xuICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDhweDtcbiAgICAgICAgICAgICAgICBib3JkZXItd2lkdGg6IDFweDtcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIidvYnNHcm91cCdcIiBzdHlsZT1cIm1hcmdpbi1ib3R0b206IDIwcHhcIj5cbiAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBjaGlsZCBvZiBub2RlLmNoaWxkcmVuOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgICAgICA8Zm9ybS1yZW5kZXJlclxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgcXVlc3Rpb24gb2YgY2hpbGQucXVlc3Rpb24ucXVlc3Rpb25zXCJcbiAgICAgICAgICAgICAgW3BhcmVudENvbXBvbmVudF09XCJ0aGlzXCJcbiAgICAgICAgICAgICAgW25vZGVdPVwiY2hpbGQuY2hpbGRyZW5bcXVlc3Rpb24ua2V5XVwiXG4gICAgICAgICAgICAgIFtwYXJlbnRHcm91cF09XCJjaGlsZC5jb250cm9sXCJcbiAgICAgICAgICAgID48L2Zvcm0tcmVuZGVyZXI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b24gXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1kYW5nZXJcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwibm9kZS5yZW1vdmVBdChpKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIFJlbW92ZVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnIgLz5cbiAgICAgICAgICAgIDxoclxuICAgICAgICAgICAgICBzdHlsZT1cIlxuICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAtMnB4O1xuICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogLTJweDtcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0cHg7XG4gICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogOHB4O1xuICAgICAgICAgICAgICAgIGJvcmRlci13aWR0aDogMXB4O1xuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgdHlwZT1cImJ1dHRvbiBcIlxuICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiXG4gICAgICAgIChjbGljayk9XCJub2RlLmNyZWF0ZUNoaWxkTm9kZSgpXCJcbiAgICAgID5cbiAgICAgICAgQWRkXG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbjxkaXZcbiAgKm5nSWY9XCJub2RlLnF1ZXN0aW9uLmNvbnRyb2xUeXBlID09PSAyXCJcbiAgW2hpZGRlbl09XCJub2RlLmNvbnRyb2wuaGlkZGVuXCJcbiAgW25nQ2xhc3NdPVwieyBkaXNhYmxlZDogbm9kZS5jb250cm9sLmRpc2FibGVkIH1cIlxuPlxuICA8IS0tR1JPVVAtLT5cbiAgPGRpdiBbbmdTd2l0Y2hdPVwibm9kZS5xdWVzdGlvbi5yZW5kZXJpbmdUeXBlXCI+XG4gICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiJ2dyb3VwJ1wiPlxuICAgICAgPGZvcm0tcmVuZGVyZXJcbiAgICAgICAgKm5nRm9yPVwibGV0IHF1ZXN0aW9uIG9mIG5vZGUucXVlc3Rpb24ucXVlc3Rpb25zXCJcbiAgICAgICAgW3BhcmVudENvbXBvbmVudF09XCJ0aGlzXCJcbiAgICAgICAgW25vZGVdPVwibm9kZS5jaGlsZHJlbltxdWVzdGlvbi5rZXldXCJcbiAgICAgICAgW3BhcmVudEdyb3VwXT1cIm5vZGUuY29udHJvbFwiXG4gICAgICA+PC9mb3JtLXJlbmRlcmVyPlxuICAgIDwvZGl2PlxuICAgIDxkaXZcbiAgICAgICpuZ1N3aXRjaENhc2U9XCInZmllbGQtc2V0J1wiXG4gICAgICBzdHlsZT1cImJvcmRlcjogMXB4IHNvbGlkICNlZWVlZWU7IHBhZGRpbmc6IDJweDsgbWFyZ2luOiAycHhcIlxuICAgID5cbiAgICAgIDxmb3JtLXJlbmRlcmVyXG4gICAgICAgICpuZ0Zvcj1cImxldCBxdWVzdGlvbiBvZiBub2RlLnF1ZXN0aW9uLnF1ZXN0aW9uc1wiXG4gICAgICAgIFtwYXJlbnRDb21wb25lbnRdPVwidGhpc1wiXG4gICAgICAgIFtub2RlXT1cIm5vZGUuY2hpbGRyZW5bcXVlc3Rpb24ua2V5XVwiXG4gICAgICAgIFtwYXJlbnRHcm91cF09XCJub2RlLmNvbnRyb2xcIlxuICAgICAgPjwvZm9ybS1yZW5kZXJlcj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbmAsXG4gIHN0eWxlczogWycuLi8uLi9zdHlsZS9hcHAuY3NzJywgREVGQVVMVF9TVFlMRVNdXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1SZW5kZXJlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIHB1YmxpYyBwYXJlbnRDb21wb25lbnQ6IEZvcm1SZW5kZXJlckNvbXBvbmVudDtcbiAgQElucHV0KCkgcHVibGljIG5vZGU6IE5vZGVCYXNlO1xuICBASW5wdXQoKSBwdWJsaWMgcGFyZW50R3JvdXA6IEFmZUZvcm1Hcm91cDtcbiAgcHVibGljIGNoaWxkQ29tcG9uZW50czogRm9ybVJlbmRlcmVyQ29tcG9uZW50W10gPSBbXTtcbiAgcHVibGljIHNob3dUaW1lOiBib29sZWFuO1xuICBwdWJsaWMgc2hvd1dlZWtzOiBib29sZWFuO1xuICBwdWJsaWMgc2hvd0hvbGlkYXlzOiBib29sZWFuO1xuICBwdWJsaWMgYWN0aXZlVGFiOiBudW1iZXI7XG4gIHB1YmxpYyBkYXRhU291cmNlOiBEYXRhU291cmNlO1xuICBwdWJsaWMgaXNDb2xsYXBzZWQgPSBmYWxzZTtcbiAgcHVibGljIGF1dG86IGFueTtcblxuICAvLyBpdGVtcyQ6IE9ic2VydmFibGU8YW55W10+O1xuICAvLyBpdGVtc0xvYWRpbmcgPSBmYWxzZTtcbiAgLy8gaXRlbXNJbnB1dCQgPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSB2YWxpZGF0aW9uRmFjdG9yeTogVmFsaWRhdGlvbkZhY3RvcnksXG4gICAgcHJpdmF0ZSBkYXRhU291cmNlczogRGF0YVNvdXJjZXMsXG4gICAgcHJpdmF0ZSBmb3JtRXJyb3JzU2VydmljZTogRm9ybUVycm9yc1NlcnZpY2UsXG4gICAgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBkb2N1bWVudDogYW55XG4gICkge1xuICAgIHRoaXMuYWN0aXZlVGFiID0gMDtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnNldFVwUmVtb3RlU2VsZWN0KCk7XG4gICAgdGhpcy5zZXRVcEZpbGVVcGxvYWQoKTtcbiAgICB0aGlzLnNldFVwRGF0ZXBpY2tlckhvbGlkYXlzKCk7XG5cbiAgICBpZiAodGhpcy5ub2RlICYmIHRoaXMubm9kZS5mb3JtKSB7XG4gICAgICBjb25zdCB0YWIgPSB0aGlzLm5vZGUuZm9ybS52YWx1ZVByb2Nlc3NpbmdJbmZvLmxhc3RGb3JtVGFiO1xuICAgICAgaWYgKHRhYiAmJiB0YWIgIT09IHRoaXMuYWN0aXZlVGFiKSB7XG4gICAgICAgIHRoaXMuYWN0aXZlVGFiID0gdGFiO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodGhpcy5ub2RlICYmIHRoaXMubm9kZS5xdWVzdGlvbi5yZW5kZXJpbmdUeXBlID09PSAnZm9ybScpIHtcbiAgICAgIHRoaXMuZm9ybUVycm9yc1NlcnZpY2UuYW5ub3VuY2VFcnJvckZpZWxkJC5zdWJzY3JpYmUoKGVycm9yKSA9PiB7XG4gICAgICAgIHRoaXMuc2Nyb2xsVG9Db250cm9sKGVycm9yKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm5vZGUgJiYgdGhpcy5ub2RlLnF1ZXN0aW9uLnJlbmRlcmluZ1R5cGUgPT09ICdzZWN0aW9uJykge1xuICAgICAgdGhpcy5pc0NvbGxhcHNlZCA9ICEodGhpcy5ub2RlLnF1ZXN0aW9uIGFzIFF1ZXN0aW9uR3JvdXApLmlzRXhwYW5kZWQ7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucGFyZW50Q29tcG9uZW50KSB7XG4gICAgICB0aGlzLnBhcmVudENvbXBvbmVudC5hZGRDaGlsZENvbXBvbmVudCh0aGlzKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYWRkQ2hpbGRDb21wb25lbnQoY2hpbGQ6IEZvcm1SZW5kZXJlckNvbXBvbmVudCkge1xuICAgIHRoaXMuY2hpbGRDb21wb25lbnRzLnB1c2goY2hpbGQpO1xuICB9XG5cbiAgcHVibGljIHNldFVwUmVtb3RlU2VsZWN0KCkge1xuICAgIGlmIChcbiAgICAgIHRoaXMubm9kZSAmJlxuICAgICAgdGhpcy5ub2RlLnF1ZXN0aW9uLmV4dHJhcyAmJlxuICAgICAgdGhpcy5ub2RlLnF1ZXN0aW9uLnJlbmRlcmluZ1R5cGUgPT09ICdyZW1vdGUtc2VsZWN0J1xuICAgICkge1xuICAgICAgLy8gbGV0IHNlbGVjdFF1ZXN0aW9uID0gdGhpcy5ub2RlLmZvcm0uc2VhcmNoTm9kZUJ5UXVlc3Rpb25JZCh0aGlzLm5vZGUucXVlc3Rpb24ua2V5KVswXTtcbiAgICAgIHRoaXMuZGF0YVNvdXJjZSA9IHRoaXMuZGF0YVNvdXJjZXMuZGF0YVNvdXJjZXNbXG4gICAgICAgIHRoaXMubm9kZS5xdWVzdGlvbi5kYXRhU291cmNlXG4gICAgICBdO1xuICAgICAgLypcbiAgICAgIGxldCBkZWZhbHRWYWx1ZXMgPSBvZihbXSk7XG4gICAgICBpZiAodGhpcy5kYXRhU291cmNlLnJlc29sdmVTZWxlY3RlZFZhbHVlKHNlbGVjdFF1ZXN0aW9uLmNvbnRyb2wudmFsdWUpKSB7XG4gICAgICAgIGRlZmFsdFZhbHVlcyA9IHRoaXMuZGF0YVNvdXJjZS5yZXNvbHZlU2VsZWN0ZWRWYWx1ZShzZWxlY3RRdWVzdGlvbi5jb250cm9sLnZhbHVlKS5waXBlKFxuICAgICAgICAgIGNhdGNoRXJyb3IoKCkgPT4gb2YoW10pKSwgLy8gZW1wdHkgbGlzdCBvbiBlcnJvclxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgdGhpcy5pdGVtcyQgPSBjb25jYXQoXG4gICAgICAgIGRlZmFsdFZhbHVlcyxcbiAgICAgICAgdGhpcy5pdGVtc0lucHV0JC5waXBlKFxuICAgICAgICAgIGRlYm91bmNlVGltZSgyMDApLFxuICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgICAgdGFwKCgpID0+IHRoaXMuaXRlbXNMb2FkaW5nID0gdHJ1ZSksXG4gICAgICAgICAgc3dpdGNoTWFwKHRlcm0gPT4gdGhpcy5kYXRhU291cmNlLnNlYXJjaE9wdGlvbnModGVybSkucGlwZShcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKCkgPT4gb2YoW10pKSwgLy8gZW1wdHkgbGlzdCBvbiBlcnJvclxuICAgICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5pdGVtc0xvYWRpbmcgPSBmYWxzZVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICApKVxuICAgICAgICApXG4gICAgICApO1xuICAgICAgKi9cbiAgICAgIGlmICh0aGlzLmRhdGFTb3VyY2UgJiYgdGhpcy5ub2RlLnF1ZXN0aW9uLmRhdGFTb3VyY2VPcHRpb25zKSB7XG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZS5kYXRhU291cmNlT3B0aW9ucyA9IHRoaXMubm9kZS5xdWVzdGlvbi5kYXRhU291cmNlT3B0aW9ucztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2V0VXBGaWxlVXBsb2FkKCkge1xuICAgIGlmIChcbiAgICAgIHRoaXMubm9kZSAmJlxuICAgICAgdGhpcy5ub2RlLnF1ZXN0aW9uLmV4dHJhcyAmJlxuICAgICAgdGhpcy5ub2RlLnF1ZXN0aW9uLnJlbmRlcmluZ1R5cGUgPT09ICdmaWxlJ1xuICAgICkge1xuICAgICAgdGhpcy5kYXRhU291cmNlID0gdGhpcy5kYXRhU291cmNlcy5kYXRhU291cmNlc1tcbiAgICAgICAgdGhpcy5ub2RlLnF1ZXN0aW9uLmRhdGFTb3VyY2VcbiAgICAgIF07XG4gICAgICAvLyBjb25zb2xlLmxvZygnS2V5JywgdGhpcy5ub2RlLnF1ZXN0aW9uKTtcbiAgICAgIC8vIGNvbnNvbGUubG9nKCdEYXRhIHNvdXJjZScsIHRoaXMuZGF0YVNvdXJjZSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldFVwRGF0ZXBpY2tlckhvbGlkYXlzKCkge1xuICAgIHRoaXMuZGF0YVNvdXJjZSA9IHRoaXMuZGF0YVNvdXJjZXMuZGF0YVNvdXJjZXNbXG4gICAgICB0aGlzLm5vZGUucXVlc3Rpb24uZGF0YVNvdXJjZVxuICAgIF07XG4gIH1cblxuICBjaGVja1NlY3Rpb24obm9kZTogTm9kZUJhc2UpIHtcbiAgICBpZiAobm9kZS5xdWVzdGlvbi5yZW5kZXJpbmdUeXBlID09PSAnc2VjdGlvbicpIHtcbiAgICAgIGxldCBncm91cENoaWxkcmVuSGlkZGVuID0gZmFsc2U7XG4gICAgICBjb25zdCBhbGxTZWN0aW9uQ29udHJvbHNIaWRkZW4gPSBPYmplY3Qua2V5cyhub2RlLmNoaWxkcmVuKS5ldmVyeSgoaykgPT4ge1xuICAgICAgICBjb25zdCBpbm5lck5vZGUgPSBub2RlLmNoaWxkcmVuW2tdO1xuICAgICAgICBpZiAoaW5uZXJOb2RlIGluc3RhbmNlb2YgR3JvdXBOb2RlKSB7XG4gICAgICAgICAgZ3JvdXBDaGlsZHJlbkhpZGRlbiA9IE9iamVjdC5rZXlzKGlubmVyTm9kZS5jaGlsZHJlbikuZXZlcnkoXG4gICAgICAgICAgICAoaSkgPT4gaW5uZXJOb2RlLmNoaWxkcmVuW2ldLmNvbnRyb2wuaGlkZGVuXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbm9kZS5jaGlsZHJlbltrXS5jb250cm9sLmhpZGRlbiB8fCBncm91cENoaWxkcmVuSGlkZGVuO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gIWFsbFNlY3Rpb25Db250cm9sc0hpZGRlbjtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBwdWJsaWMgY2xpY2tUYWIodGFiTnVtYmVyKSB7XG4gICAgdGhpcy5hY3RpdmVUYWIgPSB0YWJOdW1iZXI7XG4gIH1cblxuICBwdWJsaWMgbG9hZFByZXZpb3VzVGFiKCkge1xuICAgIGlmICghdGhpcy5pc0N1cnJlbnRUYWJGaXJzdCgpKSB7XG4gICAgICB0aGlzLmNsaWNrVGFiKHRoaXMuYWN0aXZlVGFiIC0gMSk7XG4gICAgICBkb2N1bWVudC5ib2R5LnNjcm9sbFRvcCA9IDA7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGlzQ3VycmVudFRhYkZpcnN0KCkge1xuICAgIHJldHVybiB0aGlzLmFjdGl2ZVRhYiA9PT0gMDtcbiAgfVxuXG4gIHB1YmxpYyBpc0N1cnJlbnRUYWJMYXN0KCkge1xuICAgIHJldHVybiB0aGlzLmFjdGl2ZVRhYiA9PT0gdGhpcy5ub2RlLnF1ZXN0aW9uWydxdWVzdGlvbnMnXS5sZW5ndGggLSAxO1xuICB9XG5cbiAgcHVibGljIGxvYWROZXh0VGFiKCkge1xuICAgIGlmICghdGhpcy5pc0N1cnJlbnRUYWJMYXN0KCkpIHtcbiAgICAgIHRoaXMuY2xpY2tUYWIodGhpcy5hY3RpdmVUYWIgKyAxKTtcbiAgICAgIGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wID0gMDtcbiAgICB9XG4gIH1cbiAgcHVibGljIHRhYlNlbGVjdGVkKCRldmVudCkge1xuICAgIHRoaXMuYWN0aXZlVGFiID0gJGV2ZW50O1xuICAgIHRoaXMuc2V0UHJldmlvdXNUYWIoKTtcbiAgfVxuICBwdWJsaWMgc2V0UHJldmlvdXNUYWIoKSB7XG4gICAgaWYgKHRoaXMubm9kZSAmJiB0aGlzLm5vZGUuZm9ybSkge1xuICAgICAgdGhpcy5ub2RlLmZvcm0udmFsdWVQcm9jZXNzaW5nSW5mb1snbGFzdEZvcm1UYWInXSA9IHRoaXMuYWN0aXZlVGFiO1xuICAgIH1cbiAgfVxuICBwdWJsaWMgaGFzRXJyb3JzKCkge1xuICAgIHJldHVybiB0aGlzLm5vZGUuY29udHJvbC50b3VjaGVkICYmICF0aGlzLm5vZGUuY29udHJvbC52YWxpZDtcbiAgfVxuXG4gIHB1YmxpYyBlcnJvcnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0RXJyb3JzKHRoaXMubm9kZSk7XG4gIH1cblxuICBwdWJsaWMgc2Nyb2xsVG9Db250cm9sKGVycm9yOiBzdHJpbmcpIHtcbiAgICBjb25zdCB0YWI6IG51bWJlciA9ICtlcnJvci5zcGxpdCgnLCcpWzBdO1xuICAgIGNvbnN0IGVsU2VsZWN0b3IgPSBlcnJvci5zcGxpdCgnLCcpWzFdICsgJ2lkJztcblxuICAgIC8vIHRoZSB0YWIgY29tcG9uZW50c1xuICAgIGNvbnN0IHRhYkNvbXBvbmVudDogRm9ybVJlbmRlcmVyQ29tcG9uZW50ID0gdGhpcy5jaGlsZENvbXBvbmVudHNbdGFiXTtcblxuICAgIHRoaXMuY2xpY2tUYWIodGFiKTtcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgLy8gZXhwYW5kIGFsbCBzZWN0aW9uc1xuICAgICAgdGFiQ29tcG9uZW50LmNoaWxkQ29tcG9uZW50cy5mb3JFYWNoKChzZWN0aW9uKSA9PiB7XG4gICAgICAgIHNlY3Rpb24uaXNDb2xsYXBzZWQgPSBmYWxzZTtcblxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBjb25zdCBlbGVtZW50OiBhbnkgPSB0aGlzLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsU2VsZWN0b3IpO1xuICAgICAgICAgIGlmIChlbGVtZW50ICE9PSBudWxsICYmIGVsZW1lbnQuZm9jdXMpIHtcbiAgICAgICAgICAgIGVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgICAgIGVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlvcjogJ3Ntb290aCcsIGJsb2NrOiAnY2VudGVyJyB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sIDEwMCk7XG4gICAgICB9KTtcbiAgICB9LCAyMDApO1xuICB9XG5cbiAgcHVibGljIG9uRGF0ZUNoYW5nZWQobm9kZTogTGVhZk5vZGUpIHtcbiAgICAvLyBjb25zb2xlLmxvZygnTm9kZScsIG5vZGUpO1xuICAgIHRoaXMubm9kZSA9IG5vZGU7XG4gIH1cblxuICBwdWJsaWMgdXBsb2FkKGV2ZW50KSB7XG4gICAgLy8gY29uc29sZS5sb2coJ0V2ZW50JywgZXZlbnQpO1xuICAgIC8vIGNvbnNvbGUubG9nKCdEYXRhJywgdGhpcy5kYXRhU291cmNlKTtcbiAgfVxuXG4gIHB1YmxpYyB0b2dnbGVJbmZvcm1hdGlvbihpbmZvSWQpIHtcbiAgICBjb25zdCBlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaW5mb0lkKTtcblxuICAgIGlmIChlLnN0eWxlLmRpc3BsYXkgPT09ICdibG9jaycpIHtcbiAgICAgIGUuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICB9IGVsc2Uge1xuICAgICAgZS5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJztcbiAgICB9XG5cbiAgICBjb25zb2xlLmxvZygnSW5mb0lkJywgaW5mb0lkKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RXJyb3JzKG5vZGU6IE5vZGVCYXNlKSB7XG4gICAgY29uc3QgZXJyb3JzOiBhbnkgPSBub2RlLmNvbnRyb2wuZXJyb3JzO1xuXG4gICAgaWYgKGVycm9ycykge1xuICAgICAgcmV0dXJuIHRoaXMudmFsaWRhdGlvbkZhY3RvcnkuZXJyb3JzKGVycm9ycywgbm9kZS5xdWVzdGlvbik7XG4gICAgfVxuXG4gICAgcmV0dXJuIFtdO1xuICB9XG59XG4iXX0=