@bnsights/bbsf-controls 1.0.87 → 1.0.88

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 (219) hide show
  1. package/README.md +2 -3
  2. package/bnsights-bbsf-controls-1.0.88.tgz +0 -0
  3. package/bnsights-bbsf-controls.d.ts +1 -1
  4. package/bnsights-bbsf-controls.metadata.json +1 -0
  5. package/bundles/bnsights-bbsf-controls.umd.js +9434 -0
  6. package/bundles/bnsights-bbsf-controls.umd.js.map +1 -0
  7. package/esm2015/bnsights-bbsf-controls.js +6 -0
  8. package/esm2015/lib/Shared/Directives/template-name.directive.js +18 -0
  9. package/{esm2020/lib/Shared/Models/datePickerOptions.mjs → esm2015/lib/Shared/Models/datePickerOptions.js} +1 -1
  10. package/esm2015/lib/Shared/Pipes/bbsf-date-time.pipe.js +20 -0
  11. package/esm2015/lib/Shared/Pipes/bbsf-date.pipe.js +20 -0
  12. package/esm2015/lib/Shared/components/app-base-component.js +202 -0
  13. package/esm2015/lib/Shared/components/ng-tag-input.js +323 -0
  14. package/esm2015/lib/Shared/default_intl.js +29 -0
  15. package/esm2015/lib/Shared/services/ControlUtility.js +164 -0
  16. package/esm2015/lib/Shared/services/GlobalSettings.service.js +28 -0
  17. package/esm2015/lib/Shared/services/OnPagingFiltersChange.service.js +22 -0
  18. package/esm2015/lib/Shared/services/render-component-service.service.js +30 -0
  19. package/esm2015/lib/Shared/services/validationErrorMassage.service.js +137 -0
  20. package/esm2015/lib/controls/AutocompleteTextBox/AutocompleteTextBox.component.js +248 -0
  21. package/esm2015/lib/controls/Calendar/Calendar.component.js +176 -0
  22. package/esm2015/lib/controls/CheckBox/CheckBox.component.js +114 -0
  23. package/esm2015/lib/controls/ConfirmationModal/ConfirmationModal.component.js +139 -0
  24. package/esm2015/lib/controls/DateTimePicker/DateTimePicker.component.js +215 -0
  25. package/esm2015/lib/controls/DropdownList/DropdownList.component.js +178 -0
  26. package/esm2015/lib/controls/FileUplaod/FileUplaod.component.js +451 -0
  27. package/esm2015/lib/controls/Form/Form.component.js +106 -0
  28. package/esm2015/lib/controls/HtmlEditor/HtmlEditor.component.js +222 -0
  29. package/esm2015/lib/controls/ImageUpload/ImageUpload.component.js +347 -0
  30. package/esm2015/lib/controls/MapAutoComplete/MapAutoComplete.component.js +325 -0
  31. package/esm2015/lib/controls/MultiLingualHtmlEditor/MultiLingualHtmlEditor.component.js +429 -0
  32. package/esm2015/lib/controls/MultiLingualTextArea/MultiLingualTextArea.component.js +430 -0
  33. package/esm2015/lib/controls/MultiLingualTextBox/MultiLingualTextBox.component.js +429 -0
  34. package/esm2015/lib/controls/Paging/JwPagination.component.js +129 -0
  35. package/esm2015/lib/controls/Paging/Paging.component.js +312 -0
  36. package/esm2015/lib/controls/Phone/Phone.component.js +119 -0
  37. package/esm2015/lib/controls/ProfileImageUploader/ProfileImageUploader.component.js +349 -0
  38. package/esm2015/lib/controls/RadioButton/RadioButton.component.js +108 -0
  39. package/esm2015/lib/controls/Recaptcha/Recaptcha.component.js +131 -0
  40. package/esm2015/lib/controls/Repeater/repeater/repeater.component.js +117 -0
  41. package/esm2015/lib/controls/Repeater/repeater-field-builder/repeater-field-builder.component.js +748 -0
  42. package/esm2015/lib/controls/Repeater/repeater-item-field/repeater-item-field.component.js +19 -0
  43. package/esm2015/lib/controls/Repeater/repeater-table/repeater-table.component.js +108 -0
  44. package/esm2015/lib/controls/TagsInput/TagsInput.component.js +268 -0
  45. package/esm2015/lib/controls/TextArea/TextArea.component.js +191 -0
  46. package/esm2015/lib/controls/TextBox/TextBox.component.js +262 -0
  47. package/esm2015/lib/controls/Toggleslide/toggleslide.component.js +83 -0
  48. package/esm2015/lib/controls/bbsf-controls.module.js +243 -0
  49. package/esm2015/lib/controls/page-header-component/page-header-component.component.js +32 -0
  50. package/fesm2015/{bnsights-bbsf-controls.mjs → bnsights-bbsf-controls.js} +1506 -1645
  51. package/fesm2015/bnsights-bbsf-controls.js.map +1 -0
  52. package/lib/Shared/Directives/template-name.directive.d.ts +0 -3
  53. package/lib/Shared/Models/datePickerOptions.d.ts +1 -1
  54. package/lib/Shared/Pipes/bbsf-date-time.pipe.d.ts +0 -3
  55. package/lib/Shared/Pipes/bbsf-date.pipe.d.ts +0 -3
  56. package/lib/Shared/components/app-base-component.d.ts +1 -3
  57. package/lib/Shared/components/ng-tag-input.d.ts +0 -3
  58. package/lib/Shared/default_intl.d.ts +0 -3
  59. package/lib/Shared/services/ControlUtility.d.ts +0 -3
  60. package/lib/Shared/services/GlobalSettings.service.d.ts +0 -3
  61. package/lib/Shared/services/OnPagingFiltersChange.service.d.ts +0 -3
  62. package/lib/Shared/services/render-component-service.service.d.ts +0 -3
  63. package/lib/Shared/services/validationErrorMassage.service.d.ts +0 -3
  64. package/lib/controls/AutocompleteTextBox/AutocompleteTextBox.component.d.ts +0 -4
  65. package/lib/controls/Calendar/Calendar.component.d.ts +0 -3
  66. package/lib/controls/CheckBox/CheckBox.component.d.ts +0 -4
  67. package/lib/controls/ConfirmationModal/ConfirmationModal.component.d.ts +0 -3
  68. package/lib/controls/DateTimePicker/DateTimePicker.component.d.ts +2 -8
  69. package/lib/controls/DropdownList/DropdownList.component.d.ts +0 -4
  70. package/lib/controls/FileUplaod/FileUplaod.component.d.ts +0 -3
  71. package/lib/controls/Form/Form.component.d.ts +0 -3
  72. package/lib/controls/HtmlEditor/HtmlEditor.component.d.ts +0 -4
  73. package/lib/controls/ImageUpload/ImageUpload.component.d.ts +0 -3
  74. package/lib/controls/MapAutoComplete/MapAutoComplete.component.d.ts +0 -3
  75. package/lib/controls/MultiLingualHtmlEditor/MultiLingualHtmlEditor.component.d.ts +0 -3
  76. package/lib/controls/MultiLingualTextArea/MultiLingualTextArea.component.d.ts +0 -3
  77. package/lib/controls/MultiLingualTextBox/MultiLingualTextBox.component.d.ts +0 -3
  78. package/lib/controls/Paging/JwPagination.component.d.ts +0 -3
  79. package/lib/controls/Paging/Paging.component.d.ts +0 -3
  80. package/lib/controls/Phone/Phone.component.d.ts +1 -7
  81. package/lib/controls/ProfileImageUploader/ProfileImageUploader.component.d.ts +0 -3
  82. package/lib/controls/RadioButton/RadioButton.component.d.ts +0 -3
  83. package/lib/controls/Recaptcha/Recaptcha.component.d.ts +0 -4
  84. package/lib/controls/Repeater/repeater/repeater.component.d.ts +0 -3
  85. package/lib/controls/Repeater/repeater-field-builder/repeater-field-builder.component.d.ts +0 -3
  86. package/lib/controls/Repeater/repeater-item-field/repeater-item-field.component.d.ts +0 -3
  87. package/lib/controls/Repeater/repeater-table/repeater-table.component.d.ts +0 -3
  88. package/lib/controls/TagsInput/TagsInput.component.d.ts +0 -4
  89. package/lib/controls/TextArea/TextArea.component.d.ts +0 -4
  90. package/lib/controls/TextBox/TextBox.component.d.ts +0 -4
  91. package/lib/controls/Toggleslide/toggleslide.component.d.ts +0 -4
  92. package/lib/controls/bbsf-controls.module.d.ts +0 -74
  93. package/lib/controls/page-header-component/page-header-component.component.d.ts +0 -3
  94. package/package.json +8 -20
  95. package/bnsights-bbsf-controls-1.0.87.tgz +0 -0
  96. package/esm2020/bnsights-bbsf-controls.mjs +0 -5
  97. package/esm2020/lib/Shared/Directives/template-name.directive.mjs +0 -18
  98. package/esm2020/lib/Shared/Pipes/bbsf-date-time.pipe.mjs +0 -21
  99. package/esm2020/lib/Shared/Pipes/bbsf-date.pipe.mjs +0 -21
  100. package/esm2020/lib/Shared/components/app-base-component.mjs +0 -198
  101. package/esm2020/lib/Shared/components/ng-tag-input.mjs +0 -336
  102. package/esm2020/lib/Shared/default_intl.mjs +0 -29
  103. package/esm2020/lib/Shared/services/ControlUtility.mjs +0 -162
  104. package/esm2020/lib/Shared/services/GlobalSettings.service.mjs +0 -30
  105. package/esm2020/lib/Shared/services/OnPagingFiltersChange.service.mjs +0 -24
  106. package/esm2020/lib/Shared/services/render-component-service.service.mjs +0 -30
  107. package/esm2020/lib/Shared/services/validationErrorMassage.service.mjs +0 -137
  108. package/esm2020/lib/controls/AutocompleteTextBox/AutocompleteTextBox.component.mjs +0 -245
  109. package/esm2020/lib/controls/Calendar/Calendar.component.mjs +0 -172
  110. package/esm2020/lib/controls/CheckBox/CheckBox.component.mjs +0 -114
  111. package/esm2020/lib/controls/ConfirmationModal/ConfirmationModal.component.mjs +0 -136
  112. package/esm2020/lib/controls/DateTimePicker/DateTimePicker.component.mjs +0 -217
  113. package/esm2020/lib/controls/DropdownList/DropdownList.component.mjs +0 -179
  114. package/esm2020/lib/controls/FileUplaod/FileUplaod.component.mjs +0 -453
  115. package/esm2020/lib/controls/Form/Form.component.mjs +0 -101
  116. package/esm2020/lib/controls/HtmlEditor/HtmlEditor.component.mjs +0 -223
  117. package/esm2020/lib/controls/ImageUpload/ImageUpload.component.mjs +0 -350
  118. package/esm2020/lib/controls/MapAutoComplete/MapAutoComplete.component.mjs +0 -325
  119. package/esm2020/lib/controls/MultiLingualHtmlEditor/MultiLingualHtmlEditor.component.mjs +0 -427
  120. package/esm2020/lib/controls/MultiLingualTextArea/MultiLingualTextArea.component.mjs +0 -427
  121. package/esm2020/lib/controls/MultiLingualTextBox/MultiLingualTextBox.component.mjs +0 -426
  122. package/esm2020/lib/controls/Paging/JwPagination.component.mjs +0 -156
  123. package/esm2020/lib/controls/Paging/Paging.component.mjs +0 -312
  124. package/esm2020/lib/controls/Phone/Phone.component.mjs +0 -124
  125. package/esm2020/lib/controls/ProfileImageUploader/ProfileImageUploader.component.mjs +0 -354
  126. package/esm2020/lib/controls/RadioButton/RadioButton.component.mjs +0 -106
  127. package/esm2020/lib/controls/Recaptcha/Recaptcha.component.mjs +0 -132
  128. package/esm2020/lib/controls/Repeater/repeater/repeater.component.mjs +0 -125
  129. package/esm2020/lib/controls/Repeater/repeater-field-builder/repeater-field-builder.component.mjs +0 -750
  130. package/esm2020/lib/controls/Repeater/repeater-item-field/repeater-item-field.component.mjs +0 -21
  131. package/esm2020/lib/controls/Repeater/repeater-table/repeater-table.component.mjs +0 -108
  132. package/esm2020/lib/controls/TagsInput/TagsInput.component.mjs +0 -268
  133. package/esm2020/lib/controls/TextArea/TextArea.component.mjs +0 -192
  134. package/esm2020/lib/controls/TextBox/TextBox.component.mjs +0 -266
  135. package/esm2020/lib/controls/Toggleslide/toggleslide.component.mjs +0 -84
  136. package/esm2020/lib/controls/bbsf-controls.module.mjs +0 -401
  137. package/esm2020/lib/controls/page-header-component/page-header-component.component.mjs +0 -37
  138. package/fesm2015/bnsights-bbsf-controls.mjs.map +0 -1
  139. package/fesm2020/bnsights-bbsf-controls.mjs +0 -8938
  140. package/fesm2020/bnsights-bbsf-controls.mjs.map +0 -1
  141. /package/{esm2020/lib/Shared/Enums/CalendarView.mjs → esm2015/lib/Shared/Enums/CalendarView.js} +0 -0
  142. /package/{esm2020/lib/Shared/Enums/ControlLayout.mjs → esm2015/lib/Shared/Enums/ControlLayout.js} +0 -0
  143. /package/{esm2020/lib/Shared/Enums/Countries.mjs → esm2015/lib/Shared/Enums/Countries.js} +0 -0
  144. /package/{esm2020/lib/Shared/Enums/Enums.mjs → esm2015/lib/Shared/Enums/Enums.js} +0 -0
  145. /package/{esm2020/lib/Shared/Enums/FileType.mjs → esm2015/lib/Shared/Enums/FileType.js} +0 -0
  146. /package/{esm2020/lib/Shared/Enums/FilterType.mjs → esm2015/lib/Shared/Enums/FilterType.js} +0 -0
  147. /package/{esm2020/lib/Shared/Enums/FontSize.mjs → esm2015/lib/Shared/Enums/FontSize.js} +0 -0
  148. /package/{esm2020/lib/Shared/Enums/ForceDirection.mjs → esm2015/lib/Shared/Enums/ForceDirection.js} +0 -0
  149. /package/{esm2020/lib/Shared/Enums/IconPosition.mjs → esm2015/lib/Shared/Enums/IconPosition.js} +0 -0
  150. /package/{esm2020/lib/Shared/Enums/ImageType.mjs → esm2015/lib/Shared/Enums/ImageType.js} +0 -0
  151. /package/{esm2020/lib/Shared/Enums/InputType.mjs → esm2015/lib/Shared/Enums/InputType.js} +0 -0
  152. /package/{esm2020/lib/Shared/Enums/Insert.mjs → esm2015/lib/Shared/Enums/Insert.js} +0 -0
  153. /package/{esm2020/lib/Shared/Enums/LanguageMode.mjs → esm2015/lib/Shared/Enums/LanguageMode.js} +0 -0
  154. /package/{esm2020/lib/Shared/Enums/LanguageValidation.mjs → esm2015/lib/Shared/Enums/LanguageValidation.js} +0 -0
  155. /package/{esm2020/lib/Shared/Enums/Misc.mjs → esm2015/lib/Shared/Enums/Misc.js} +0 -0
  156. /package/{esm2020/lib/Shared/Enums/PagingActionMode.mjs → esm2015/lib/Shared/Enums/PagingActionMode.js} +0 -0
  157. /package/{esm2020/lib/Shared/Enums/Para.mjs → esm2015/lib/Shared/Enums/Para.js} +0 -0
  158. /package/{esm2020/lib/Shared/Enums/PickerType.mjs → esm2015/lib/Shared/Enums/PickerType.js} +0 -0
  159. /package/{esm2020/lib/Shared/Enums/SelectMode.mjs → esm2015/lib/Shared/Enums/SelectMode.js} +0 -0
  160. /package/{esm2020/lib/Shared/Enums/StartView.mjs → esm2015/lib/Shared/Enums/StartView.js} +0 -0
  161. /package/{esm2020/lib/Shared/Enums/Style.mjs → esm2015/lib/Shared/Enums/Style.js} +0 -0
  162. /package/{esm2020/lib/Shared/Enums/StyleConfirmationMode.mjs → esm2015/lib/Shared/Enums/StyleConfirmationMode.js} +0 -0
  163. /package/{esm2020/lib/Shared/Enums/TagInputView.mjs → esm2015/lib/Shared/Enums/TagInputView.js} +0 -0
  164. /package/{esm2020/lib/Shared/Enums/menu-list-enum.mjs → esm2015/lib/Shared/Enums/menu-list-enum.js} +0 -0
  165. /package/{esm2020/lib/Shared/Models/Attribute.mjs → esm2015/lib/Shared/Models/Attribute.js} +0 -0
  166. /package/{esm2020/lib/Shared/Models/AutocompleteDTO.mjs → esm2015/lib/Shared/Models/AutocompleteDTO.js} +0 -0
  167. /package/{esm2020/lib/Shared/Models/AutocompleteOptions.mjs → esm2015/lib/Shared/Models/AutocompleteOptions.js} +0 -0
  168. /package/{esm2020/lib/Shared/Models/CalendarEventDTO.mjs → esm2015/lib/Shared/Models/CalendarEventDTO.js} +0 -0
  169. /package/{esm2020/lib/Shared/Models/CalendarOptions.mjs → esm2015/lib/Shared/Models/CalendarOptions.js} +0 -0
  170. /package/{esm2020/lib/Shared/Models/CancelDTO.mjs → esm2015/lib/Shared/Models/CancelDTO.js} +0 -0
  171. /package/{esm2020/lib/Shared/Models/CaptchaStyle.mjs → esm2015/lib/Shared/Models/CaptchaStyle.js} +0 -0
  172. /package/{esm2020/lib/Shared/Models/CheckBoxOptions.mjs → esm2015/lib/Shared/Models/CheckBoxOptions.js} +0 -0
  173. /package/{esm2020/lib/Shared/Models/ConfirmationModalOptions.mjs → esm2015/lib/Shared/Models/ConfirmationModalOptions.js} +0 -0
  174. /package/{esm2020/lib/Shared/Models/ControlOptionsBase.mjs → esm2015/lib/Shared/Models/ControlOptionsBase.js} +0 -0
  175. /package/{esm2020/lib/Shared/Models/CustomValidation.mjs → esm2015/lib/Shared/Models/CustomValidation.js} +0 -0
  176. /package/{esm2020/lib/Shared/Models/DropdownListItem.mjs → esm2015/lib/Shared/Models/DropdownListItem.js} +0 -0
  177. /package/{esm2020/lib/Shared/Models/DropdownOptions.mjs → esm2015/lib/Shared/Models/DropdownOptions.js} +0 -0
  178. /package/{esm2020/lib/Shared/Models/EditPersonalImage.mjs → esm2015/lib/Shared/Models/EditPersonalImage.js} +0 -0
  179. /package/{esm2020/lib/Shared/Models/EnglishArabicDTO.mjs → esm2015/lib/Shared/Models/EnglishArabicDTO.js} +0 -0
  180. /package/{esm2020/lib/Shared/Models/FileDTO.mjs → esm2015/lib/Shared/Models/FileDTO.js} +0 -0
  181. /package/{esm2020/lib/Shared/Models/FileUploadModel.mjs → esm2015/lib/Shared/Models/FileUploadModel.js} +0 -0
  182. /package/{esm2020/lib/Shared/Models/FileUploadOptions.mjs → esm2015/lib/Shared/Models/FileUploadOptions.js} +0 -0
  183. /package/{esm2020/lib/Shared/Models/FilterItem.mjs → esm2015/lib/Shared/Models/FilterItem.js} +0 -0
  184. /package/{esm2020/lib/Shared/Models/FormOptions.mjs → esm2015/lib/Shared/Models/FormOptions.js} +0 -0
  185. /package/{esm2020/lib/Shared/Models/HtmlEditorOptions.mjs → esm2015/lib/Shared/Models/HtmlEditorOptions.js} +0 -0
  186. /package/{esm2020/lib/Shared/Models/ImageUploadOptions.mjs → esm2015/lib/Shared/Models/ImageUploadOptions.js} +0 -0
  187. /package/{esm2020/lib/Shared/Models/MapAutoCompleteOptions.mjs → esm2015/lib/Shared/Models/MapAutoCompleteOptions.js} +0 -0
  188. /package/{esm2020/lib/Shared/Models/MapAutocompleteDTO.mjs → esm2015/lib/Shared/Models/MapAutocompleteDTO.js} +0 -0
  189. /package/{esm2020/lib/Shared/Models/MultiLingualHtmlEditorOptions.mjs → esm2015/lib/Shared/Models/MultiLingualHtmlEditorOptions.js} +0 -0
  190. /package/{esm2020/lib/Shared/Models/MultiLingualTextAreaOptions.mjs → esm2015/lib/Shared/Models/MultiLingualTextAreaOptions.js} +0 -0
  191. /package/{esm2020/lib/Shared/Models/MultilingualControlOptionsBase.mjs → esm2015/lib/Shared/Models/MultilingualControlOptionsBase.js} +0 -0
  192. /package/{esm2020/lib/Shared/Models/MultilingualTextBoxOptions.mjs → esm2015/lib/Shared/Models/MultilingualTextBoxOptions.js} +0 -0
  193. /package/{esm2020/lib/Shared/Models/MultipleFileUploadModel.mjs → esm2015/lib/Shared/Models/MultipleFileUploadModel.js} +0 -0
  194. /package/{esm2020/lib/Shared/Models/PagingDTO.mjs → esm2015/lib/Shared/Models/PagingDTO.js} +0 -0
  195. /package/{esm2020/lib/Shared/Models/PagingOptions.mjs → esm2015/lib/Shared/Models/PagingOptions.js} +0 -0
  196. /package/{esm2020/lib/Shared/Models/PagingPayload.mjs → esm2015/lib/Shared/Models/PagingPayload.js} +0 -0
  197. /package/{esm2020/lib/Shared/Models/PhoneOptions.mjs → esm2015/lib/Shared/Models/PhoneOptions.js} +0 -0
  198. /package/{esm2020/lib/Shared/Models/ProfileImageUploadOptions.mjs → esm2015/lib/Shared/Models/ProfileImageUploadOptions.js} +0 -0
  199. /package/{esm2020/lib/Shared/Models/ProfilePictureDTO.mjs → esm2015/lib/Shared/Models/ProfilePictureDTO.js} +0 -0
  200. /package/{esm2020/lib/Shared/Models/RadioButtonItem.mjs → esm2015/lib/Shared/Models/RadioButtonItem.js} +0 -0
  201. /package/{esm2020/lib/Shared/Models/RadioButtonOptions.mjs → esm2015/lib/Shared/Models/RadioButtonOptions.js} +0 -0
  202. /package/{esm2020/lib/Shared/Models/RangeNumber.mjs → esm2015/lib/Shared/Models/RangeNumber.js} +0 -0
  203. /package/{esm2020/lib/Shared/Models/Recaptcha.mjs → esm2015/lib/Shared/Models/Recaptcha.js} +0 -0
  204. /package/{esm2020/lib/Shared/Models/RecaptchaOptions.mjs → esm2015/lib/Shared/Models/RecaptchaOptions.js} +0 -0
  205. /package/{esm2020/lib/Shared/Models/RepeaterField.mjs → esm2015/lib/Shared/Models/RepeaterField.js} +0 -0
  206. /package/{esm2020/lib/Shared/Models/RepeaterOptions.mjs → esm2015/lib/Shared/Models/RepeaterOptions.js} +0 -0
  207. /package/{esm2020/lib/Shared/Models/SaveDTO.mjs → esm2015/lib/Shared/Models/SaveDTO.js} +0 -0
  208. /package/{esm2020/lib/Shared/Models/TagsInputDTO.mjs → esm2015/lib/Shared/Models/TagsInputDTO.js} +0 -0
  209. /package/{esm2020/lib/Shared/Models/TagsInputOptions.mjs → esm2015/lib/Shared/Models/TagsInputOptions.js} +0 -0
  210. /package/{esm2020/lib/Shared/Models/TextAreaOptions.mjs → esm2015/lib/Shared/Models/TextAreaOptions.js} +0 -0
  211. /package/{esm2020/lib/Shared/Models/TextBoxOptions.mjs → esm2015/lib/Shared/Models/TextBoxOptions.js} +0 -0
  212. /package/{esm2020/lib/Shared/Models/ToggleslideOptions.mjs → esm2015/lib/Shared/Models/ToggleslideOptions.js} +0 -0
  213. /package/{esm2020/lib/Shared/Models/UploadPersonalImage.mjs → esm2015/lib/Shared/Models/UploadPersonalImage.js} +0 -0
  214. /package/{esm2020/lib/Shared/Models/bread-crumb.mjs → esm2015/lib/Shared/Models/bread-crumb.js} +0 -0
  215. /package/{esm2020/lib/Shared/Models/control-filter-Item.mjs → esm2015/lib/Shared/Models/control-filter-Item.js} +0 -0
  216. /package/{esm2020/lib/Shared/Models/filter-options.mjs → esm2015/lib/Shared/Models/filter-options.js} +0 -0
  217. /package/{esm2020/lib/Shared/Models/page-header-options.mjs → esm2015/lib/Shared/Models/page-header-options.js} +0 -0
  218. /package/{esm2020/lib/Shared/config/environment.mjs → esm2015/lib/Shared/config/environment.js} +0 -0
  219. /package/{esm2020/public-api.mjs → esm2015/public-api.js} +0 -0
@@ -1,101 +0,0 @@
1
- import { Component, Input, EventEmitter, Output } from '@angular/core';
2
- import { RequestOptionsModel } from '@bnsights/bbsf-utilities';
3
- import { PagingActionMode } from '../../Shared/Enums/PagingActionMode';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "../../Shared/services/ControlUtility";
6
- import * as i2 from "@bnsights/bbsf-utilities";
7
- import * as i3 from "@ng-bootstrap/ng-bootstrap";
8
- import * as i4 from "@angular/router";
9
- import * as i5 from "@angular/forms";
10
- import * as i6 from "@angular/common";
11
- export class FormComponent {
12
- constructor(controlUtility, utilityService, controlValidationService, modalService, ngbActiveModal, router) {
13
- this.controlUtility = controlUtility;
14
- this.utilityService = utilityService;
15
- this.controlValidationService = controlValidationService;
16
- this.modalService = modalService;
17
- this.ngbActiveModal = ngbActiveModal;
18
- this.router = router;
19
- this.isChange = null;
20
- this.OnChange = new EventEmitter();
21
- }
22
- ngOnInit() {
23
- this.fromName = this.randomString(5);
24
- }
25
- ngAfterViewInit() {
26
- this.options.FormGroup.valueChanges.subscribe((es) => {
27
- this.OnChange.emit(true);
28
- });
29
- }
30
- submit() {
31
- this.options.FormGroup.markAllAsTouched();
32
- if (this.options.FormGroup.invalid) {
33
- this.showGlobalError();
34
- return;
35
- }
36
- else {
37
- let submitModel = this.options.GetModelFunction();
38
- let submittedService = this.options.ServiceSubmitFunction.apply(null, submitModel);
39
- submittedService.subscribe((result) => {
40
- if (!this.options.DisableModalDismiss) {
41
- //Dismiss closest modal of the form only
42
- let modal = document.getElementById(this.fromName).closest('.modal.show');
43
- if (modal) {
44
- let closeButton = modal.querySelector("[data-dismiss='modal']");
45
- closeButton.click();
46
- }
47
- }
48
- if (!this.options.DisableSuccessNotification)
49
- this.utilityService.notifySuccessMessage();
50
- if (this.options.OnSuccessHandler)
51
- this.options.OnSuccessHandler(result);
52
- if (!this.options.DisableBlockUI)
53
- this.utilityService.stopBlockUI();
54
- if (this.options.PagingReference) {
55
- let paging = this.options.PagingReference;
56
- this.options.PagingActionMode == PagingActionMode.Reinitialize ? paging.ReinitializePaging() : paging.UpdatePaging();
57
- }
58
- }, (error) => {
59
- if (this.options.OnErrorHandler)
60
- this.options.OnErrorHandler(error);
61
- else
62
- this.handleError(error);
63
- });
64
- }
65
- }
66
- handleError(err) {
67
- let errorMessage = '';
68
- if (err.error instanceof ErrorEvent) {
69
- errorMessage = `An error occurred: ${err.error.message}`;
70
- if (!this.options.DisableErrorNotification)
71
- this.utilityService.notifyErrorMessage();
72
- }
73
- else {
74
- this.controlValidationService.renderServerErrors(this.options.FormGroup, err, new RequestOptionsModel(), this.fromName);
75
- }
76
- if (!this.options.DisableBlockUI)
77
- this.utilityService.stopBlockUI();
78
- }
79
- showGlobalError() {
80
- this.controlUtility.showGlobalError(this.fromName);
81
- }
82
- randomString(length) {
83
- var randomChars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
84
- var result = '';
85
- for (var i = 0; i < length; i++) {
86
- result += randomChars.charAt(Math.floor(Math.random() * randomChars.length));
87
- }
88
- return result;
89
- }
90
- }
91
- FormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FormComponent, deps: [{ token: i1.ControlUtility }, { token: i2.UtilityService }, { token: i2.ControlValidationService }, { token: i3.NgbModal }, { token: i3.NgbActiveModal }, { token: i4.Router }], target: i0.ɵɵFactoryTarget.Component });
92
- FormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: FormComponent, selector: "BBSF-Form", inputs: { options: "options" }, outputs: { OnChange: "OnChange" }, ngImport: i0, template: "<form id=\"{{fromName}}\" [FormGroup]=\"options.FormGroup\" (ngSubmit)=\"submit()\" > \r\n \r\n <ng-template #content><ng-content></ng-content></ng-template>\r\n\r\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\r\n</form>", directives: [{ type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i5.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }] });
93
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FormComponent, decorators: [{
94
- type: Component,
95
- args: [{ selector: 'BBSF-Form', template: "<form id=\"{{fromName}}\" [FormGroup]=\"options.FormGroup\" (ngSubmit)=\"submit()\" > \r\n \r\n <ng-template #content><ng-content></ng-content></ng-template>\r\n\r\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\r\n</form>" }]
96
- }], ctorParameters: function () { return [{ type: i1.ControlUtility }, { type: i2.UtilityService }, { type: i2.ControlValidationService }, { type: i3.NgbModal }, { type: i3.NgbActiveModal }, { type: i4.Router }]; }, propDecorators: { OnChange: [{
97
- type: Output
98
- }], options: [{
99
- type: Input
100
- }] } });
101
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWNvbnRyb2xzL3NyYy9saWIvY29udHJvbHMvRm9ybS9Gb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtY29udHJvbHMvc3JjL2xpYi9jb250cm9scy9Gb3JtL0Zvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUcvRSxPQUFPLEVBQTRCLG1CQUFtQixFQUFrQixNQUFNLDBCQUEwQixDQUFDO0FBRXpHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOzs7Ozs7OztBQVd2RSxNQUFNLE9BQU8sYUFBYTtJQU14QixZQUFvQixjQUE4QixFQUFVLGNBQThCLEVBQVUsd0JBQWtELEVBQVUsWUFBc0IsRUFBVSxjQUE4QixFQUFVLE1BQWM7UUFBbE8sbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQVUsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQVUsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUEwQjtRQUFVLGlCQUFZLEdBQVosWUFBWSxDQUFVO1FBQVUsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUh0UCxhQUFRLEdBQVksSUFBSSxDQUFDO1FBQ2YsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUFJeEMsQ0FBQztJQUdELFFBQVE7UUFDTixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDdEMsQ0FBQztJQUNELGVBQWU7UUFDYixJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsU0FBUyxD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SSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1NBQ3hIO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYztZQUM5QixJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBQ3BELENBQUM7SUFDRCxZQUFZLENBQUMsTUFBTTtRQUNqQixJQUFJLFdBQVcsR0FBRyxnRUFBZ0UsQ0FBQztRQUNuRixJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDaEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUMvQixNQUFNLElBQUksV0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztTQUM5RTtRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7OzJHQXZGVSxhQUFhOytGQUFiLGFBQWEsb0hDakIxQixpUEFLTzs0RkRZTSxhQUFhO2tCQUx6QixTQUFTOytCQUVFLFdBQVc7a1BBT1gsUUFBUTtzQkFBakIsTUFBTTtnQkFLRSxPQUFPO3NCQUFmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBFdmVudEVtaXR0ZXIsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE5nYkFjdGl2ZU1vZGFsLCBOZ2JNb2RhbCB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcclxuaW1wb3J0IHsgQ29udHJvbFZhbGlkYXRpb25TZXJ2aWNlLCBSZXF1ZXN0T3B0aW9uc01vZGVsLCBVdGlsaXR5U2VydmljZSB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLXV0aWxpdGllcyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgUGFnaW5nQWN0aW9uTW9kZSB9IGZyb20gJy4uLy4uL1NoYXJlZC9FbnVtcy9QYWdpbmdBY3Rpb25Nb2RlJztcclxuaW1wb3J0IHsgRm9ybU9wdGlvbnMgfSBmcm9tICcuLi8uLi9TaGFyZWQvTW9kZWxzL0Zvcm1PcHRpb25zJztcclxuaW1wb3J0IHsgUGFnaW5nQ29tcG9uZW50IH0gZnJvbSAnLi4vUGFnaW5nL1BhZ2luZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb250cm9sVXRpbGl0eSB9IGZyb20gJy4uLy4uL1NoYXJlZC9zZXJ2aWNlcy9Db250cm9sVXRpbGl0eSc7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IGNvbXBvbmVudC1zZWxlY3RvclxyXG4gIHNlbGVjdG9yOiAnQkJTRi1Gb3JtJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vRm9ybS5jb21wb25lbnQuaHRtbCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgZnJvbU5hbWU6IHN0cmluZztcclxuICBpc0NoYW5nZTogYm9vbGVhbiA9IG51bGw7XHJcbiAgQE91dHB1dCgpIE9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvbnRyb2xVdGlsaXR5OiBDb250cm9sVXRpbGl0eSwgcHJpdmF0ZSB1dGlsaXR5U2VydmljZTogVXRpbGl0eVNlcnZpY2UsIHByaXZhdGUgY29udHJvbFZhbGlkYXRpb25TZXJ2aWNlOiBDb250cm9sVmFsaWRhdGlvblNlcnZpY2UsIHByaXZhdGUgbW9kYWxTZXJ2aWNlOiBOZ2JNb2RhbCwgcHJpdmF0ZSBuZ2JBY3RpdmVNb2RhbDogTmdiQWN0aXZlTW9kYWwsIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgKSB7XHJcbiAgfVxyXG4gIEBJbnB1dCgpIG9wdGlvbnM6IEZvcm1PcHRpb25zO1xyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuZnJvbU5hbWUgPSB0aGlzLnJhbmRvbVN0cmluZyg1KVxyXG4gIH1cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLm9wdGlvbnMuRm9ybUdyb3VwLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKGVzKSA9PiB7XHJcbiAgICAgIHRoaXMuT25DaGFuZ2UuZW1pdCh0cnVlKTtcclxuXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHN1Ym1pdCgpIHtcclxuICAgIHRoaXMub3B0aW9ucy5Gb3JtR3JvdXAubWFya0FsbEFzVG91Y2hlZCgpXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLkZvcm1Hcm91cC5pbnZhbGlkKSB7XHJcbiAgICAgIHRoaXMuc2hvd0dsb2JhbEVycm9yKCk7XHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcblxyXG4gICAgICBsZXQgc3VibWl0TW9kZWwgPSB0aGlzLm9wdGlvbnMuR2V0TW9kZWxGdW5jdGlvbigpIGFzIGFueVtdXHJcbiAgICAgIGxldCBzdWJtaXR0ZWRTZXJ2aWNlID0gdGhpcy5vcHRpb25zLlNlcnZpY2VTdWJtaXRGdW5jdGlvbi5hcHBseShudWxsLCBzdWJtaXRNb2RlbCkgYXMgT2JzZXJ2YWJsZTxhbnk+XHJcbiAgICAgIHN1Ym1pdHRlZFNlcnZpY2Uuc3Vic2NyaWJlKFxyXG4gICAgICAgIChyZXN1bHQpID0+IHtcclxuICAgICAgICAgIGlmKCF0aGlzLm9wdGlvbnMuRGlzYWJsZU1vZGFsRGlzbWlzcylcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgLy9EaXNtaXNzIGNsb3Nlc3QgbW9kYWwgb2YgdGhlIGZvcm0gb25seVxyXG4gICAgICAgICAgICBsZXQgbW9kYWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLmZyb21OYW1lKS5jbG9zZXN0KCcubW9kYWwuc2hvdycpO1xyXG4gICAgICAgICAgICBpZiAobW9kYWwpIHtcclxuICAgICAgICAgICAgICBsZXQgY2xvc2VCdXR0b24gPSBtb2RhbC5xdWVyeVNlbGVjdG9yKFwiW2RhdGEtZGlzbWlzcz0nbW9kYWwnXVwiKSBhcyBhbnlcclxuICAgICAgICAgICAgICBjbG9zZUJ1dHRvbi5jbGljaygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoIXRoaXMub3B0aW9ucy5EaXNhYmxlU3VjY2Vzc05vdGlmaWNhdGlvbilcclxuICAgICAgICAgICAgdGhpcy51dGlsaXR5U2VydmljZS5ub3RpZnlTdWNjZXNzTWVzc2FnZSgpXHJcbiAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLk9uU3VjY2Vzc0hhbmRsZXIpXHJcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5PblN1Y2Nlc3NIYW5kbGVyKHJlc3VsdClcclxuICAgICAgICAgIGlmICghdGhpcy5vcHRpb25zLkRpc2FibGVCbG9ja1VJKVxyXG4gICAgICAgICAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0b3BCbG9ja1VJKCk7XHJcbiAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLlBhZ2luZ1JlZmVyZW5jZSkge1xyXG4gICAgICAgICAgICBsZXQgcGFnaW5nID0gdGhpcy5vcHRpb25zLlBhZ2luZ1JlZmVyZW5jZTtcclxuICAgICAgICAgICAgdGhpcy5vcHRpb25zLlBhZ2luZ0FjdGlvbk1vZGUgPT0gUGFnaW5nQWN0aW9uTW9kZS5SZWluaXRpYWxpemUgPyBwYWdpbmcuUmVpbml0aWFsaXplUGFnaW5nKCkgOiBwYWdpbmcuVXBkYXRlUGFnaW5nKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSwgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLk9uRXJyb3JIYW5kbGVyKVxyXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMuT25FcnJvckhhbmRsZXIoZXJyb3IpXHJcbiAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlRXJyb3IoZXJyb3IpXHJcbiAgICAgICAgfSlcclxuXHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVFcnJvcihlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSB7XHJcbiAgICBsZXQgZXJyb3JNZXNzYWdlID0gJyc7XHJcbiAgICBpZiAoZXJyLmVycm9yIGluc3RhbmNlb2YgRXJyb3JFdmVudCkge1xyXG4gICAgICBlcnJvck1lc3NhZ2UgPSBgQW4gZXJyb3Igb2NjdXJyZWQ6ICR7ZXJyLmVycm9yLm1lc3NhZ2V9YDtcclxuICAgICAgaWYgKCF0aGlzLm9wdGlvbnMuRGlzYWJsZUVycm9yTm90aWZpY2F0aW9uKVxyXG4gICAgICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uubm90aWZ5RXJyb3JNZXNzYWdlKClcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmNvbnRyb2xWYWxpZGF0aW9uU2VydmljZS5yZW5kZXJTZXJ2ZXJFcnJvcnModGhpcy5vcHRpb25zLkZvcm1Hcm91cCwgZXJyLCBuZXcgUmVxdWVzdE9wdGlvbnNNb2RlbCgpLCB0aGlzLmZyb21OYW1lKVxyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLm9wdGlvbnMuRGlzYWJsZUJsb2NrVUkpXHJcbiAgICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RvcEJsb2NrVUkoKTtcclxuICB9XHJcblxyXG4gIHNob3dHbG9iYWxFcnJvcigpIHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuc2hvd0dsb2JhbEVycm9yKHRoaXMuZnJvbU5hbWUpXHJcbiAgfVxyXG4gIHJhbmRvbVN0cmluZyhsZW5ndGgpIHtcclxuICAgIHZhciByYW5kb21DaGFycyA9ICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSc7XHJcbiAgICB2YXIgcmVzdWx0ID0gJyc7XHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIHJlc3VsdCArPSByYW5kb21DaGFycy5jaGFyQXQoTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogcmFuZG9tQ2hhcnMubGVuZ3RoKSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcblxyXG59XHJcblxyXG4iLCI8Zm9ybSBpZD1cInt7ZnJvbU5hbWV9fVwiIFtGb3JtR3JvdXBdPVwib3B0aW9ucy5Gb3JtR3JvdXBcIiAobmdTdWJtaXQpPVwic3VibWl0KClcIiA+IFxyXG4gIFxyXG4gIDxuZy10ZW1wbGF0ZSAjY29udGVudD48bmctY29udGVudD48L25nLWNvbnRlbnQ+PC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cclxuPC9mb3JtPiJdfQ==
@@ -1,223 +0,0 @@
1
- import { Component, Input, Optional, Output, EventEmitter } from '@angular/core';
2
- import { FormControl, Validators } from '@angular/forms';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "../../Shared/services/ControlUtility";
5
- import * as i2 from "@angular/forms";
6
- import * as i3 from "@bnsights/bbsf-utilities";
7
- import * as i4 from "../../Shared/services/GlobalSettings.service";
8
- import * as i5 from "@kolkov/angular-editor";
9
- import * as i6 from "@angular/common";
10
- import * as i7 from "@angular/cdk/bidi";
11
- import * as i8 from "ngx-intl-tel-input";
12
- export class HtmlEditorComponent {
13
- constructor(zone, controlUtility, controlContainer, HtmlEditorControlHost, UtilityService, controlValidationService, globalSettings) {
14
- this.zone = zone;
15
- this.controlUtility = controlUtility;
16
- this.controlContainer = controlContainer;
17
- this.HtmlEditorControlHost = HtmlEditorControlHost;
18
- this.UtilityService = UtilityService;
19
- this.controlValidationService = controlValidationService;
20
- this.globalSettings = globalSettings;
21
- this.OnChange = new EventEmitter();
22
- this.WordCount = 0;
23
- this.WordCountArray = 0;
24
- this.markAllAsTouched = false;
25
- this.validationRules = [];
26
- this.validationRulesasync = [];
27
- this.resetError = () => {
28
- this.controlValidationService.RemoveGlobalError();
29
- };
30
- //External Method
31
- this.RemoveRequiredValidation = () => {
32
- this.controlUtility.RemoveRequiredValidation(this.HtmlEditorFormControl, this.validationRules, this.options);
33
- };
34
- //External Method
35
- this.AddRequiredValidation = () => {
36
- this.controlUtility.AddRequiredValidation(this.HtmlEditorFormControl, this.validationRules, this.options);
37
- };
38
- //External Method
39
- this.RemoveCustomValidation = (CustomValidation) => {
40
- this.controlUtility.RemoveCustomValidation(this.HtmlEditorFormControl, this.validationRules, CustomValidation);
41
- };
42
- //External Method
43
- this.AddCustomValidation = (CustomValidation) => {
44
- this.controlUtility.AddCustomValidation(this.HtmlEditorFormControl, this.validationRules, CustomValidation);
45
- };
46
- //External Method
47
- this.IsValid = () => {
48
- this.controlUtility.IsValid(this.HtmlEditorFormControl);
49
- };
50
- HtmlEditorComponent.controlContainerstatic = this.controlContainer;
51
- }
52
- ngOnInit() {
53
- this.textDir = this.options.ForceDirection == 2 ? 'rtl' : 'ltr';
54
- this.editorConfig = {
55
- editable: !this.options.IsDisabled,
56
- spellcheck: true,
57
- height: `${this.options.Height}rem`,
58
- minHeight: `${this.options.Height}rem`,
59
- maxHeight: 'auto',
60
- width: 'auto',
61
- minWidth: 'auto',
62
- translate: 'yes',
63
- enableToolbar: true,
64
- showToolbar: true,
65
- placeholder: this.options.Placeholder,
66
- defaultParagraphSeparator: '',
67
- defaultFontName: '',
68
- defaultFontSize: '',
69
- fonts: [
70
- { class: 'arial', name: 'Arial' },
71
- { class: 'times-new-roman', name: 'Times New Roman' },
72
- { class: 'calibri', name: 'Calibri' },
73
- { class: 'comic-sans-ms', name: 'Comic Sans MS' }
74
- ],
75
- customClasses: [
76
- {
77
- name: 'quote',
78
- class: 'quote',
79
- },
80
- {
81
- name: 'redText',
82
- class: 'redText'
83
- },
84
- {
85
- name: 'titleText',
86
- class: 'titleText',
87
- tag: 'h1',
88
- },
89
- ],
90
- uploadUrl: 'v1/image',
91
- uploadWithCredentials: false,
92
- sanitize: false,
93
- toolbarPosition: 'top',
94
- toolbarHiddenButtons: [
95
- [
96
- 'link',
97
- 'unlink',
98
- 'insertImage',
99
- 'insertVideo',
100
- 'insertHorizontalRule',
101
- ]
102
- ]
103
- };
104
- this.controlValidationService.isCreatedBefor = false;
105
- // this.miscList = this.options.ToolsList_Misc != null ? this.options.ToolsList_Misc : ['codeview', 'undo', 'redo'];
106
- // this.styleList = this.options.ToolsList_Style != null ? this.options.ToolsList_Style : ['bold', 'italic', 'underline', 'clear']
107
- // this.fontsizeList = this.options.ToolsList_FontSize != null ? this.options.ToolsList_FontSize : ['fontname', 'fontsize', 'color']
108
- // this.paraList = this.options.ToolsList_Para != null ? this.options.ToolsList_Para : ['style', 'ul', 'ol', 'paragraph', 'height']
109
- // this.insertList = this.options.ToolsList_Insert != null ? this.options.ToolsList_Insert : ['table', 'picture', 'link', 'video', 'hr']
110
- // this.Config = {
111
- // callbacks: {
112
- // // onChange: (e) => {
113
- // // this.zone.run(() => {
114
- // // this.onTextChange();
115
- // // });
116
- // // },
117
- // // onKeyup: (e) => {
118
- // // this.zone.run(() => {
119
- // // ;
120
- // // this.onTextChange();
121
- // // });
122
- // // },
123
- // // onKeydown: (e) => {
124
- // // this.zone.run(() => {
125
- // // ;
126
- // // if (this.WordCountArray > this.options.MaxWordCount && e.keyCode != 8) {
127
- // // e.preventDefault();
128
- // // }
129
- // // });
130
- // // }
131
- // },
132
- // placeholder: this.options.Placeholder,
133
- // height: `${this.options.Height}px`,
134
- // toolbar: [
135
- // ['misc', this.miscList],
136
- // ['style', this.styleList],
137
- // ['fontsize', this.fontsizeList],
138
- // ['para', this.paraList],
139
- // ['insert', this.insertList]
140
- // ],
141
- // fontNames: ['Helvetica', 'Arial', 'Arial Black', 'Comic Sans MS', 'Courier New', 'Roboto', 'Times']
142
- // }
143
- this.group.addControl(this.options.Name, new FormControl(''));
144
- this.HtmlEditorFormControl = this.group.controls[this.options.Name]; // new FormControl('',validationRules);
145
- this.HtmlEditorFormControl.setValue(this.options.Value);
146
- if (!this.options.ViewType)
147
- this.options.ViewType = this.globalSettings.ViewType;
148
- if (this.options.CustomValidation.length > 0) {
149
- let Validations = this.options.CustomValidation;
150
- for (let index = 0; index < Validations.length; index++) {
151
- const Validation = Validations[index];
152
- this.validationRules.push(Validation.functionBody);
153
- }
154
- }
155
- if (this.options.LabelKey != null && this.options.LabelKey != "")
156
- this.options.LabelValue = this.UtilityService.getResourceValue(this.options.LabelKey);
157
- if (this.options.MinLength > 0) {
158
- this.validationRules.push(Validators.minLength(this.options.MinLength));
159
- }
160
- if (this.options.MaxLength > 0) {
161
- this.validationRules.push(Validators.maxLength(this.options.MaxLength));
162
- }
163
- if (this.options.IsRequired) {
164
- this.validationRules.push(Validators.required);
165
- }
166
- this.HtmlEditorFormControl.setValidators(this.validationRules);
167
- this.HtmlEditorFormControl.setAsyncValidators(this.validationRulesasync);
168
- if (this.options.IsDisabled) {
169
- this.HtmlEditorFormControl.disable();
170
- }
171
- this.HtmlEditorControlHost.ngSubmit.subscribe((value) => {
172
- this.group.markAllAsTouched();
173
- this.markAllAsTouched = true;
174
- });
175
- }
176
- ngAfterViewChecked() {
177
- if (this.options.AttributeList != null) {
178
- var element = document.getElementById(this.options.Name);
179
- for (let index = 0; index < this.options.AttributeList.length; index++) {
180
- element.setAttribute(this.options.AttributeList[index].Key, this.options.AttributeList[index].value);
181
- }
182
- let angularEditor = document.getElementsByClassName("angular-editor-toolbar ng-star-inserted")[0];
183
- let dir = this.UtilityService.getCurrentLanguage() == "en" ? "ltr" : "rtl";
184
- angularEditor.setAttribute("dir", dir);
185
- }
186
- }
187
- showGlobalError() {
188
- this.controlUtility.showGlobalError();
189
- }
190
- getErrorValidation(ErrorList) {
191
- if (this.markAllAsTouched && this.group.invalid) {
192
- this.showGlobalError();
193
- this.markAllAsTouched = false;
194
- }
195
- return this.controlUtility.getErrorValidationMassage(ErrorList, this.group, this.options);
196
- }
197
- onValueChanged() {
198
- this.HtmlEditorFormControl.setValue(this.HtmlEditorFormControl.value.trim());
199
- let originalValue = this.controlUtility.trimControlValue(this.HtmlEditorFormControl.value);
200
- if (this.options.PatchFunction && this.options.PatchPath && this.HtmlEditorFormControl.valid) {
201
- this.controlUtility.patchControlValue(originalValue, this.options.PatchFunction, this.options.PatchPath);
202
- }
203
- //Use this line to enable two way binding.
204
- this.options.Value = originalValue;
205
- this.OnChange.emit(originalValue);
206
- }
207
- }
208
- HtmlEditorComponent.controlContainerstatic = null;
209
- HtmlEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: HtmlEditorComponent, deps: [{ token: i0.NgZone }, { token: i1.ControlUtility }, { token: i2.ControlContainer, optional: true }, { token: i2.FormGroupDirective }, { token: i3.UtilityService }, { token: i3.ControlValidationService }, { token: i4.GlobalSettings }], target: i0.ɵɵFactoryTarget.Component });
210
- HtmlEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: HtmlEditorComponent, selector: "BBSF-HtmlEditor", inputs: { group: "group", options: "options" }, outputs: { OnChange: "OnChange" }, ngImport: i0, template: "\r\n<div class=\"form-group bbsf-control bbsf-htmleditor\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label *ngIf=\"!options.HideLabel\" class=\"bbsf-label {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"bbsf-input-container\">\r\n <angular-editor\r\n (change)=\"onValueChanged()\"\r\n id=\"{{options.Name}}\"\r\n [class.is-invalid]=\"HtmlEditorFormControl.invalid && HtmlEditorFormControl.touched\"\r\n class=\"{{options.ExtraClasses}}\"\r\n [dir]=\"textDir\" formControlName=\"{{options.Name}}\"\r\n [config]=\"editorConfig\"></angular-editor>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(HtmlEditorFormControl.invalid && HtmlEditorFormControl.touched)\">\r\n {{getErrorValidation(HtmlEditorFormControl.errors|keyvalue)}}\r\n </div>\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n</div>\r\n", components: [{ type: i5.AngularEditorComponent, selector: "angular-editor", inputs: ["id", "config", "placeholder", "tabIndex"], outputs: ["viewMode", "blur", "focus", "html"] }], directives: [{ type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { type: i8.NativeElementInjectorDirective, selector: "[ngModel], [formControl], [formControlName]" }, { type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.FormControlName, selector: "[formControlName]", inputs: ["disabled", "formControlName", "ngModel"], outputs: ["ngModelChange"] }], pipes: { "keyvalue": i6.KeyValuePipe } });
211
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: HtmlEditorComponent, decorators: [{
212
- type: Component,
213
- args: [{ selector: 'BBSF-HtmlEditor', template: "\r\n<div class=\"form-group bbsf-control bbsf-htmleditor\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label *ngIf=\"!options.HideLabel\" class=\"bbsf-label {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"bbsf-input-container\">\r\n <angular-editor\r\n (change)=\"onValueChanged()\"\r\n id=\"{{options.Name}}\"\r\n [class.is-invalid]=\"HtmlEditorFormControl.invalid && HtmlEditorFormControl.touched\"\r\n class=\"{{options.ExtraClasses}}\"\r\n [dir]=\"textDir\" formControlName=\"{{options.Name}}\"\r\n [config]=\"editorConfig\"></angular-editor>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(HtmlEditorFormControl.invalid && HtmlEditorFormControl.touched)\">\r\n {{getErrorValidation(HtmlEditorFormControl.errors|keyvalue)}}\r\n </div>\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n</div>\r\n" }]
214
- }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i1.ControlUtility }, { type: i2.ControlContainer, decorators: [{
215
- type: Optional
216
- }] }, { type: i2.FormGroupDirective }, { type: i3.UtilityService }, { type: i3.ControlValidationService }, { type: i4.GlobalSettings }]; }, propDecorators: { group: [{
217
- type: Input
218
- }], options: [{
219
- type: Input
220
- }], OnChange: [{
221
- type: Output
222
- }] } });
223
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSHRtbEVkaXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWNvbnRyb2xzL3NyYy9saWIvY29udHJvbHMvSHRtbEVkaXRvci9IdG1sRWRpdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtY29udHJvbHMvc3JjL2xpYi9jb250cm9scy9IdG1sRWRpdG9yL0h0bWxFZGl0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQVcsUUFBUSxFQUFVLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUcsT0FBTyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQW9FLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7QUFZM0gsTUFBTSxPQUFPLG1CQUFtQjtJQUk5QixZQUFvQixJQUFZLEVBQVUsY0FBOEIsRUFBc0IsZ0JBQWtDLEVBQ3ZILHFCQUF5QyxFQUFVLGNBQThCLEVBQ2hGLHdCQUFrRCxFQUFVLGNBQThCO1FBRmhGLFNBQUksR0FBSixJQUFJLENBQVE7UUFBVSxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFBc0IscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUN2SCwwQkFBcUIsR0FBckIscUJBQXFCLENBQW9CO1FBQVUsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQ2hGLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBMEI7UUFBVSxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFLMUYsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFFeEMsY0FBUyxHQUFXLENBQUMsQ0FBQztRQUN0QixtQkFBYyxHQUFXLENBQUMsQ0FBQztRQUMzQixxQkFBZ0IsR0FBWSxLQUFLLENBQUM7UUFPbEMsb0JBQWUsR0FBRyxFQUFFLENBQUM7UUFDckIseUJBQW9CLEdBQUcsRUFBRSxDQUFDO1FBK0oxQixlQUFVLEdBQUcsR0FBRyxFQUFFO1lBQ2hCLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ3BELENBQUMsQ0FBQTtRQTBCRCxpQkFBaUI7UUFFakIsNkJBQXdCLEdBQUcsR0FBRyxFQUFFO1lBQzlCLElBQUksQ0FBQyxjQUFjLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLHFCQUFxQixFQUFFLElBQUksQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQzlHLENBQUMsQ0FBQTtRQUNELGlCQUFpQjtRQUVqQiwwQkFBcUIsR0FBRyxHQUFHLEVBQUU7WUFDM0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMscUJBQXFCLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDM0csQ0FBQyxDQUFBO1FBR0QsaUJBQWlCO1FBQ2pCLDJCQUFzQixHQUFHLENBQUMsZ0JBQWdCLEVBQUUsRUFBRTtZQUM1QyxJQUFJLENBQUMsY0FBYyxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFLGdCQUFnQixDQUFDLENBQUE7UUFDaEgsQ0FBQyxDQUFBO1FBQ0QsaUJBQWlCO1FBQ2pCLHdCQUFtQixHQUFHLENBQUMsZ0JBQWdCLEVBQUUsRUFBRTtZQUN6QyxJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFLGdCQUFnQixDQUFDLENBQUE7UUFDN0csQ0FBQyxDQUFBO1FBRUQsaUJBQWlCO1FBQ2pCLFlBQU8sR0FBRyxHQUFHLEVBQUU7WUFDYixJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQTtRQUN6RCxDQUFDLENBQUE7UUFuT0MsbUJBQW1CLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO0lBQ3JFLENBQUM7SUFrQkQsUUFBUTtRQUNOLElBQUksQ0FBQyxPQUFPLEdBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLElBQUUsQ0FBQyxDQUFBLENBQUMsQ0FBQSxLQUFLLENBQUEsQ0FBQyxDQUFBLEtBQUssQ0FBQztRQUN4RCxJQUFJLENBQUMsWUFBWSxHQUFHO1lBQ2hCLFFBQVEsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVTtZQUNsQyxVQUFVLEVBQUUsSUFBSTtZQUNoQixNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sS0FBSztZQUNuQyxTQUFTLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sS0FBSztZQUN0QyxTQUFTLEVBQUcsTUFBTTtZQUNsQixLQUFLLEVBQUUsTUFBTTtZQUNiLFFBQVEsRUFBRSxNQUFNO1lBQ2hCLFNBQVMsRUFBRSxLQUFLO1lBQ2hCLGFBQWEsRUFBRSxJQUFJO1lBQ25CLFdBQVcsRUFBRSxJQUFJO1lBQ2pCLFdBQVcsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVc7WUFDckMseUJBQXlCLEVBQUUsRUFBRTtZQUM3QixlQUFlLEVBQUUsRUFBRTtZQUNuQixlQUFlLEVBQUUsRUFBRTtZQUNuQixLQUFLLEVBQUU7Z0JBQ0wsRUFBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUM7Z0JBQy9CLEVBQUMsS0FBSyxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBQztnQkFDbkQsRUFBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUM7Z0JBQ25DLEVBQUMsS0FBSyxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFDO2FBQ2hEO1lBQ0QsYUFBYSxFQUFFO2dCQUNmO29CQUNFLElBQUksRUFBRSxPQUFPO29CQUNiLEtBQUssRUFBRSxPQUFPO2lCQUNmO2dCQUNEO29CQUNFLElBQUksRUFBRSxTQUFTO29CQUNmLEtBQUssRUFBRSxTQUFTO2lCQUNqQjtnQkFDRDtvQkFDRSxJQUFJLEVBQUUsV0FBVztvQkFDakIsS0FBSyxFQUFFLFdBQVc7b0JBQ2xCLEdBQUcsRUFBRSxJQUFJO2lCQUNWO2FBQ0Y7WUFDRCxTQUFTLEVBQUUsVUFBVTtZQUNyQixxQkFBcUIsRUFBRSxLQUFLO1lBQzVCLFFBQVEsRUFBRSxLQUFLO1lBQ2YsZUFBZSxFQUFFLEtBQUs7WUFDdEIsb0JBQW9CLEVBQUU7Z0JBQ3BCO29CQUNFLE1BQU07b0JBQ04sUUFBUTtvQkFDUixhQUFhO29CQUNiLGFBQWE7b0JBQ2Isc0JBQXNCO2lCQUN2QjthQUNGO1NBQ0osQ0FBQztRQUNGLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFBO1FBQ2xELG9IQUFvSDtRQUNwSCxrSUFBa0k7UUFDbEksb0lBQW9JO1FBQ3BJLG1JQUFtSTtRQUNuSSx3SUFBd0k7UUFFeEksa0JBQWtCO1FBQ2xCLGlCQUFpQjtRQUNqQiw0QkFBNEI7UUFFNUIsbUNBQW1DO1FBQ25DLHNDQUFzQztRQUN0QyxpQkFBaUI7UUFDakIsWUFBWTtRQUNaLDJCQUEyQjtRQUMzQixtQ0FBbUM7UUFDbkMsb0JBQW9CO1FBQ3BCLHNDQUFzQztRQUN0QyxpQkFBaUI7UUFDakIsWUFBWTtRQUNaLDZCQUE2QjtRQUM3QixtQ0FBbUM7UUFDbkMsb0JBQW9CO1FBQ3BCLDBGQUEwRjtRQUMxRix5Q0FBeUM7UUFDekMsbUJBQW1CO1FBRW5CLGlCQUFpQjtRQUNqQixXQUFXO1FBQ1gsT0FBTztRQUNQLDJDQUEyQztRQUMzQyx3Q0FBd0M7UUFDeEMsZUFBZTtRQUNmLCtCQUErQjtRQUMvQixpQ0FBaUM7UUFDakMsdUNBQXVDO1FBQ3ZDLCtCQUErQjtRQUMvQixrQ0FBa0M7UUFDbEMsT0FBTztRQUNQLHdHQUF3RztRQUV4RyxJQUFJO1FBQ0osSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM5RCxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLHdDQUF3QztRQUM3RyxJQUFJLENBQUMscUJBQXFCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFeEQsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUTtZQUN4QixJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQztRQUV2RCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUM1QyxJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFBO1lBQy9DLEtBQUssSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxXQUFXLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFO2dCQUN2RCxNQUFNLFVBQVUsR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3RDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQzthQUNwRDtTQUVGO1FBRUQsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLElBQUksRUFBRTtZQUM5RCxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7UUFJeEYsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsR0FBRyxDQUFDLEVBQUU7WUFDOUIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7U0FDekU7UUFDRCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxHQUFHLENBQUMsRUFBRTtZQUM5QixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztTQUN6RTtRQUNELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUU7WUFDM0IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ2hEO1FBQ0QsSUFBSSxDQUFDLHFCQUFxQixDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDL0QsSUFBSSxDQUFDLHFCQUFxQixDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ3pFLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUU7WUFDM0IsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE9BQU8sRUFBRSxDQUFDO1NBQ3RDO1FBRUQsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUN0RCxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixFQUFFLENBQUE7WUFDN0IsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQTtRQUM5QixDQUFDLENBQUMsQ0FBQTtJQUVKLENBQUM7SUFHRCxrQkFBa0I7UUFDaEIsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsSUFBSSxJQUFJLEVBQUU7WUFDdEMsSUFBSSxPQUFPLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3pELEtBQUssSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUU7Z0JBQ3RFLE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ3RHO1lBRUQsSUFBSSxhQUFhLEdBQUcsUUFBUSxDQUFDLHNCQUFzQixDQUFDLHlDQUF5QyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7WUFDakcsSUFBSSxHQUFHLEdBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsRUFBRSxJQUFFLElBQUksQ0FBQSxDQUFDLENBQUEsS0FBSyxDQUFBLENBQUMsQ0FBQSxLQUFLLENBQUE7WUFDbkUsYUFBYSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUMsR0FBRyxDQUFDLENBQUM7U0FFdkM7SUFHSCxDQUFDO0lBT0QsZUFBZTtRQUNiLElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxFQUFFLENBQUE7SUFDdkMsQ0FBQztJQUVELGtCQUFrQixDQUFDLFNBQVM7UUFDMUIsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUU7WUFDL0MsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFBO1lBQ3RCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUE7U0FDOUI7UUFFRCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMseUJBQXlCLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzVGLENBQUM7SUFDRCxjQUFjO1FBQ1osSUFBSSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDN0UsSUFBSSxhQUFhLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0YsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMscUJBQXFCLENBQUMsS0FBSyxFQUFFO1lBQzVGLElBQUksQ0FBQyxjQUFjLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUE7U0FDeEc7UUFDRCwwQ0FBMEM7UUFDMUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUMsYUFBYSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFBO0lBQ25DLENBQUM7O0FBNU1NLDBDQUFzQixHQUFHLElBQUksQ0FBQztpSEFIMUIsbUJBQW1CO3FHQUFuQixtQkFBbUIsMElDYmhDLDhoREE2QkE7NEZEaEJhLG1CQUFtQjtrQkFKL0IsU0FBUzsrQkFDRSxpQkFBaUI7OzBCQU9nRCxRQUFROzhLQUsxRSxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNJLFFBQVE7c0JBQWpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIERvQ2hlY2ssIE9wdGlvbmFsLCBOZ1pvbmUsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sLCBWYWxpZGF0b3JzLCBGb3JtR3JvdXAsIEFic3RyYWN0Q29udHJvbCwgQ29udHJvbENvbnRhaW5lciwgRm9ybUdyb3VwRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBDb250cm9sVXRpbGl0eSB9IGZyb20gJy4uLy4uL1NoYXJlZC9zZXJ2aWNlcy9Db250cm9sVXRpbGl0eSc7XHJcbmltcG9ydCB7IEh0bWxFZGl0b3JPcHRpb25zIH0gZnJvbSAnLi4vLi4vU2hhcmVkL01vZGVscy9IdG1sRWRpdG9yT3B0aW9ucyc7XHJcbmltcG9ydCB7IEFuZ3VsYXJFZGl0b3JDb25maWcgfSBmcm9tICdAa29sa292L2FuZ3VsYXItZWRpdG9yJztcclxuaW1wb3J0IHsgQ29udHJvbFZhbGlkYXRpb25TZXJ2aWNlLCBVdGlsaXR5U2VydmljZSB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLXV0aWxpdGllcyc7XHJcbmltcG9ydCB7IEdsb2JhbFNldHRpbmdzIH0gZnJvbSAnLi4vLi4vU2hhcmVkL3NlcnZpY2VzL0dsb2JhbFNldHRpbmdzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ0JCU0YtSHRtbEVkaXRvcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL0h0bWxFZGl0b3IuY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBIdG1sRWRpdG9yQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgZWRpdG9yQ29uZmlnOiBBbmd1bGFyRWRpdG9yQ29uZmlnXHJcbiAgc3RhdGljIGNvbnRyb2xDb250YWluZXJzdGF0aWMgPSBudWxsO1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgem9uZTogTmdab25lLCBwcml2YXRlIGNvbnRyb2xVdGlsaXR5OiBDb250cm9sVXRpbGl0eSwgQE9wdGlvbmFsKCkgcHJpdmF0ZSBjb250cm9sQ29udGFpbmVyOiBDb250cm9sQ29udGFpbmVyLFxyXG4gICAgcHVibGljIEh0bWxFZGl0b3JDb250cm9sSG9zdDogRm9ybUdyb3VwRGlyZWN0aXZlLCBwcml2YXRlIFV0aWxpdHlTZXJ2aWNlOiBVdGlsaXR5U2VydmljZSxcclxuICAgIHByaXZhdGUgY29udHJvbFZhbGlkYXRpb25TZXJ2aWNlOiBDb250cm9sVmFsaWRhdGlvblNlcnZpY2UsIHByaXZhdGUgZ2xvYmFsU2V0dGluZ3M6IEdsb2JhbFNldHRpbmdzKSB7XHJcbiAgICBIdG1sRWRpdG9yQ29tcG9uZW50LmNvbnRyb2xDb250YWluZXJzdGF0aWMgPSB0aGlzLmNvbnRyb2xDb250YWluZXI7XHJcbiAgfVxyXG4gIEBJbnB1dCgpIGdyb3VwOiBGb3JtR3JvdXA7XHJcbiAgQElucHV0KCkgb3B0aW9uczogSHRtbEVkaXRvck9wdGlvbnM7XHJcbiAgQE91dHB1dCgpIE9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEh0bWxFZGl0b3JGb3JtQ29udHJvbDogQWJzdHJhY3RDb250cm9sO1xyXG4gIFdvcmRDb3VudDogbnVtYmVyID0gMDtcclxuICBXb3JkQ291bnRBcnJheTogbnVtYmVyID0gMDtcclxuICBtYXJrQWxsQXNUb3VjaGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQ29uZmlnOiBhbnlcclxuICBtaXNjTGlzdDogYW55XHJcbiAgc3R5bGVMaXN0OiBhbnlcclxuICBmb250c2l6ZUxpc3Q6IGFueVxyXG4gIHBhcmFMaXN0OiBhbnlcclxuICBpbnNlcnRMaXN0OiBhbnlcclxuICB2YWxpZGF0aW9uUnVsZXMgPSBbXTtcclxuICB2YWxpZGF0aW9uUnVsZXNhc3luYyA9IFtdO1xyXG4gIHRleHREaXI7XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy50ZXh0RGlyPXRoaXMub3B0aW9ucy5Gb3JjZURpcmVjdGlvbj09Mj8ncnRsJzonbHRyJztcclxuICAgIHRoaXMuZWRpdG9yQ29uZmlnID0ge1xyXG4gICAgICAgIGVkaXRhYmxlOiAhdGhpcy5vcHRpb25zLklzRGlzYWJsZWQsXHJcbiAgICAgICAgc3BlbGxjaGVjazogdHJ1ZSxcclxuICAgICAgICBoZWlnaHQ6IGAke3RoaXMub3B0aW9ucy5IZWlnaHR9cmVtYCxcclxuICAgICAgICBtaW5IZWlnaHQ6IGAke3RoaXMub3B0aW9ucy5IZWlnaHR9cmVtYCxcclxuICAgICAgICBtYXhIZWlnaHQ6ICAnYXV0bycsXHJcbiAgICAgICAgd2lkdGg6ICdhdXRvJyxcclxuICAgICAgICBtaW5XaWR0aDogJ2F1dG8nLFxyXG4gICAgICAgIHRyYW5zbGF0ZTogJ3llcycsXHJcbiAgICAgICAgZW5hYmxlVG9vbGJhcjogdHJ1ZSxcclxuICAgICAgICBzaG93VG9vbGJhcjogdHJ1ZSxcclxuICAgICAgICBwbGFjZWhvbGRlcjogdGhpcy5vcHRpb25zLlBsYWNlaG9sZGVyLFxyXG4gICAgICAgIGRlZmF1bHRQYXJhZ3JhcGhTZXBhcmF0b3I6ICcnLFxyXG4gICAgICAgIGRlZmF1bHRGb250TmFtZTogJycsXHJcbiAgICAgICAgZGVmYXVsdEZvbnRTaXplOiAnJyxcclxuICAgICAgICBmb250czogW1xyXG4gICAgICAgICAge2NsYXNzOiAnYXJpYWwnLCBuYW1lOiAnQXJpYWwnfSxcclxuICAgICAgICAgIHtjbGFzczogJ3RpbWVzLW5ldy1yb21hbicsIG5hbWU6ICdUaW1lcyBOZXcgUm9tYW4nfSxcclxuICAgICAgICAgIHtjbGFzczogJ2NhbGlicmknLCBuYW1lOiAnQ2FsaWJyaSd9LFxyXG4gICAgICAgICAge2NsYXNzOiAnY29taWMtc2Fucy1tcycsIG5hbWU6ICdDb21pYyBTYW5zIE1TJ31cclxuICAgICAgICBdLFxyXG4gICAgICAgIGN1c3RvbUNsYXNzZXM6IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBuYW1lOiAncXVvdGUnLFxyXG4gICAgICAgICAgY2xhc3M6ICdxdW90ZScsXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBuYW1lOiAncmVkVGV4dCcsXHJcbiAgICAgICAgICBjbGFzczogJ3JlZFRleHQnXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBuYW1lOiAndGl0bGVUZXh0JyxcclxuICAgICAgICAgIGNsYXNzOiAndGl0bGVUZXh0JyxcclxuICAgICAgICAgIHRhZzogJ2gxJyxcclxuICAgICAgICB9LFxyXG4gICAgICBdLFxyXG4gICAgICB1cGxvYWRVcmw6ICd2MS9pbWFnZScsXHJcbiAgICAgIHVwbG9hZFdpdGhDcmVkZW50aWFsczogZmFsc2UsXHJcbiAgICAgIHNhbml0aXplOiBmYWxzZSxcclxuICAgICAgdG9vbGJhclBvc2l0aW9uOiAndG9wJyxcclxuICAgICAgdG9vbGJhckhpZGRlbkJ1dHRvbnM6IFtcclxuICAgICAgICBbXHJcbiAgICAgICAgICAnbGluaycsXHJcbiAgICAgICAgICAndW5saW5rJyxcclxuICAgICAgICAgICdpbnNlcnRJbWFnZScsXHJcbiAgICAgICAgICAnaW5zZXJ0VmlkZW8nLFxyXG4gICAgICAgICAgJ2luc2VydEhvcml6b250YWxSdWxlJyxcclxuICAgICAgICBdXHJcbiAgICAgIF1cclxuICB9O1xyXG4gIHRoaXMuY29udHJvbFZhbGlkYXRpb25TZXJ2aWNlLmlzQ3JlYXRlZEJlZm9yID0gZmFsc2VcclxuICAgIC8vIHRoaXMubWlzY0xpc3QgPSB0aGlzLm9wdGlvbnMuVG9vbHNMaXN0X01pc2MgIT0gbnVsbCA/IHRoaXMub3B0aW9ucy5Ub29sc0xpc3RfTWlzYyA6IFsnY29kZXZpZXcnLCAndW5kbycsICdyZWRvJ107XHJcbiAgICAvLyB0aGlzLnN0eWxlTGlzdCA9IHRoaXMub3B0aW9ucy5Ub29sc0xpc3RfU3R5bGUgIT0gbnVsbCA/IHRoaXMub3B0aW9ucy5Ub29sc0xpc3RfU3R5bGUgOiBbJ2JvbGQnLCAnaXRhbGljJywgJ3VuZGVybGluZScsICdjbGVhciddXHJcbiAgICAvLyB0aGlzLmZvbnRzaXplTGlzdCA9IHRoaXMub3B0aW9ucy5Ub29sc0xpc3RfRm9udFNpemUgIT0gbnVsbCA/IHRoaXMub3B0aW9ucy5Ub29sc0xpc3RfRm9udFNpemUgOiBbJ2ZvbnRuYW1lJywgJ2ZvbnRzaXplJywgJ2NvbG9yJ11cclxuICAgIC8vIHRoaXMucGFyYUxpc3QgPSB0aGlzLm9wdGlvbnMuVG9vbHNMaXN0X1BhcmEgIT0gbnVsbCA/IHRoaXMub3B0aW9ucy5Ub29sc0xpc3RfUGFyYSA6IFsnc3R5bGUnLCAndWwnLCAnb2wnLCAncGFyYWdyYXBoJywgJ2hlaWdodCddXHJcbiAgICAvLyB0aGlzLmluc2VydExpc3QgPSB0aGlzLm9wdGlvbnMuVG9vbHNMaXN0X0luc2VydCAhPSBudWxsID8gdGhpcy5vcHRpb25zLlRvb2xzTGlzdF9JbnNlcnQgOiBbJ3RhYmxlJywgJ3BpY3R1cmUnLCAnbGluaycsICd2aWRlbycsICdociddXHJcblxyXG4gICAgLy8gdGhpcy5Db25maWcgPSB7XHJcbiAgICAvLyAgIGNhbGxiYWNrczoge1xyXG4gICAgLy8gICAgIC8vIG9uQ2hhbmdlOiAoZSkgPT4ge1xyXG5cclxuICAgIC8vICAgICAvLyAgICAgdGhpcy56b25lLnJ1bigoKSA9PiB7XHJcbiAgICAvLyAgICAgLy8gICAgICAgICB0aGlzLm9uVGV4dENoYW5nZSgpO1xyXG4gICAgLy8gICAgIC8vICAgICB9KTtcclxuICAgIC8vICAgICAvLyB9LFxyXG4gICAgLy8gICAgIC8vIG9uS2V5dXA6IChlKSA9PiB7XHJcbiAgICAvLyAgICAgLy8gICAgIHRoaXMuem9uZS5ydW4oKCkgPT4ge1xyXG4gICAgLy8gICAgIC8vICAgICAgICAgIDtcclxuICAgIC8vICAgICAvLyAgICAgICAgIHRoaXMub25UZXh0Q2hhbmdlKCk7XHJcbiAgICAvLyAgICAgLy8gICAgIH0pO1xyXG4gICAgLy8gICAgIC8vIH0sXHJcbiAgICAvLyAgICAgLy8gb25LZXlkb3duOiAoZSkgPT4ge1xyXG4gICAgLy8gICAgIC8vICAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcclxuICAgIC8vICAgICAvLyAgICAgICAgICA7XHJcbiAgICAvLyAgICAgLy8gICAgICAgICBpZiAodGhpcy5Xb3JkQ291bnRBcnJheSA+IHRoaXMub3B0aW9ucy5NYXhXb3JkQ291bnQgJiYgZS5rZXlDb2RlICE9IDgpIHtcclxuICAgIC8vICAgICAvLyAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAvLyAgICAgLy8gICAgICAgICB9XHJcblxyXG4gICAgLy8gICAgIC8vICAgICB9KTtcclxuICAgIC8vICAgICAvLyB9XHJcbiAgICAvLyAgIH0sXHJcbiAgICAvLyAgIHBsYWNlaG9sZGVyOiB0aGlzLm9wdGlvbnMuUGxhY2Vob2xkZXIsXHJcbiAgICAvLyAgIGhlaWdodDogYCR7dGhpcy5vcHRpb25zLkhlaWdodH1weGAsXHJcbiAgICAvLyAgIHRvb2xiYXI6IFtcclxuICAgIC8vICAgICBbJ21pc2MnLCB0aGlzLm1pc2NMaXN0XSxcclxuICAgIC8vICAgICBbJ3N0eWxlJywgdGhpcy5zdHlsZUxpc3RdLFxyXG4gICAgLy8gICAgIFsnZm9udHNpemUnLCB0aGlzLmZvbnRzaXplTGlzdF0sXHJcbiAgICAvLyAgICAgWydwYXJhJywgdGhpcy5wYXJhTGlzdF0sXHJcbiAgICAvLyAgICAgWydpbnNlcnQnLCB0aGlzLmluc2VydExpc3RdXHJcbiAgICAvLyAgIF0sXHJcbiAgICAvLyAgIGZvbnROYW1lczogWydIZWx2ZXRpY2EnLCAnQXJpYWwnLCAnQXJpYWwgQmxhY2snLCAnQ29taWMgU2FucyBNUycsICdDb3VyaWVyIE5ldycsICdSb2JvdG8nLCAnVGltZXMnXVxyXG5cclxuICAgIC8vIH1cclxuICAgIHRoaXMuZ3JvdXAuYWRkQ29udHJvbCh0aGlzLm9wdGlvbnMuTmFtZSwgbmV3IEZvcm1Db250cm9sKCcnKSk7XHJcbiAgICB0aGlzLkh0bWxFZGl0b3JGb3JtQ29udHJvbCA9IHRoaXMuZ3JvdXAuY29udHJvbHNbdGhpcy5vcHRpb25zLk5hbWVdOyAvLyAgbmV3IEZvcm1Db250cm9sKCcnLHZhbGlkYXRpb25SdWxlcyk7XHJcbiAgICB0aGlzLkh0bWxFZGl0b3JGb3JtQ29udHJvbC5zZXRWYWx1ZSh0aGlzLm9wdGlvbnMuVmFsdWUpO1xyXG5cclxuICAgIGlmICghdGhpcy5vcHRpb25zLlZpZXdUeXBlKVxyXG4gICAgICB0aGlzLm9wdGlvbnMuVmlld1R5cGUgPSB0aGlzLmdsb2JhbFNldHRpbmdzLlZpZXdUeXBlO1xyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuQ3VzdG9tVmFsaWRhdGlvbi5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGxldCBWYWxpZGF0aW9ucyA9IHRoaXMub3B0aW9ucy5DdXN0b21WYWxpZGF0aW9uXHJcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBWYWxpZGF0aW9ucy5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICBjb25zdCBWYWxpZGF0aW9uID0gVmFsaWRhdGlvbnNbaW5kZXhdO1xyXG4gICAgICAgIHRoaXMudmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdGlvbi5mdW5jdGlvbkJvZHkpO1xyXG4gICAgICB9XHJcblxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuTGFiZWxLZXkgIT0gbnVsbCAmJiB0aGlzLm9wdGlvbnMuTGFiZWxLZXkgIT0gXCJcIilcclxuICAgICAgdGhpcy5vcHRpb25zLkxhYmVsVmFsdWUgPSB0aGlzLlV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUodGhpcy5vcHRpb25zLkxhYmVsS2V5KTtcclxuXHJcblxyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuTWluTGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnZhbGlkYXRpb25SdWxlcy5wdXNoKFZhbGlkYXRvcnMubWluTGVuZ3RoKHRoaXMub3B0aW9ucy5NaW5MZW5ndGgpKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuTWF4TGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnZhbGlkYXRpb25SdWxlcy5wdXNoKFZhbGlkYXRvcnMubWF4TGVuZ3RoKHRoaXMub3B0aW9ucy5NYXhMZW5ndGgpKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuSXNSZXF1aXJlZCkge1xyXG4gICAgICB0aGlzLnZhbGlkYXRpb25SdWxlcy5wdXNoKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5IdG1sRWRpdG9yRm9ybUNvbnRyb2wuc2V0VmFsaWRhdG9ycyh0aGlzLnZhbGlkYXRpb25SdWxlcyk7XHJcbiAgICB0aGlzLkh0bWxFZGl0b3JGb3JtQ29udHJvbC5zZXRBc3luY1ZhbGlkYXRvcnModGhpcy52YWxpZGF0aW9uUnVsZXNhc3luYyk7XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLklzRGlzYWJsZWQpIHtcclxuICAgICAgdGhpcy5IdG1sRWRpdG9yRm9ybUNvbnRyb2wuZGlzYWJsZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuSHRtbEVkaXRvckNvbnRyb2xIb3N0Lm5nU3VibWl0LnN1YnNjcmliZSgodmFsdWUpID0+IHtcclxuICAgICAgdGhpcy5ncm91cC5tYXJrQWxsQXNUb3VjaGVkKClcclxuICAgICAgdGhpcy5tYXJrQWxsQXNUb3VjaGVkID0gdHJ1ZVxyXG4gICAgfSlcclxuXHJcbiAgfVxyXG5cclxuXHJcbiAgbmdBZnRlclZpZXdDaGVja2VkKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5BdHRyaWJ1dGVMaXN0ICE9IG51bGwpIHtcclxuICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLm9wdGlvbnMuTmFtZSk7XHJcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLm9wdGlvbnMuQXR0cmlidXRlTGlzdC5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSh0aGlzLm9wdGlvbnMuQXR0cmlidXRlTGlzdFtpbmRleF0uS2V5LCB0aGlzLm9wdGlvbnMuQXR0cmlidXRlTGlzdFtpbmRleF0udmFsdWUpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBsZXQgYW5ndWxhckVkaXRvciA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJhbmd1bGFyLWVkaXRvci10b29sYmFyIG5nLXN0YXItaW5zZXJ0ZWRcIilbMF1cclxuICAgICAgbGV0IGRpciA9dGhpcy5VdGlsaXR5U2VydmljZS5nZXRDdXJyZW50TGFuZ3VhZ2UoKT09XCJlblwiP1wibHRyXCI6XCJydGxcIlxyXG4gICAgICBhbmd1bGFyRWRpdG9yLnNldEF0dHJpYnV0ZShcImRpclwiLGRpcik7XHJcblxyXG4gICAgfVxyXG5cclxuXHJcbiAgfVxyXG5cclxuXHJcbiAgcmVzZXRFcnJvciA9ICgpID0+IHtcclxuICAgIHRoaXMuY29udHJvbFZhbGlkYXRpb25TZXJ2aWNlLlJlbW92ZUdsb2JhbEVycm9yKCk7XHJcbiAgfVxyXG5cclxuICBzaG93R2xvYmFsRXJyb3IoKSB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LnNob3dHbG9iYWxFcnJvcigpXHJcbiAgfVxyXG5cclxuICBnZXRFcnJvclZhbGlkYXRpb24oRXJyb3JMaXN0KSB7XHJcbiAgICBpZiAodGhpcy5tYXJrQWxsQXNUb3VjaGVkICYmIHRoaXMuZ3JvdXAuaW52YWxpZCkge1xyXG4gICAgICB0aGlzLnNob3dHbG9iYWxFcnJvcigpXHJcbiAgICAgIHRoaXMubWFya0FsbEFzVG91Y2hlZCA9IGZhbHNlXHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuY29udHJvbFV0aWxpdHkuZ2V0RXJyb3JWYWxpZGF0aW9uTWFzc2FnZShFcnJvckxpc3QsIHRoaXMuZ3JvdXAsIHRoaXMub3B0aW9ucyk7XHJcbiAgfVxyXG4gIG9uVmFsdWVDaGFuZ2VkKCkge1xyXG4gICAgdGhpcy5IdG1sRWRpdG9yRm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy5IdG1sRWRpdG9yRm9ybUNvbnRyb2wudmFsdWUudHJpbSgpKTtcclxuICAgIGxldCBvcmlnaW5hbFZhbHVlID0gdGhpcy5jb250cm9sVXRpbGl0eS50cmltQ29udHJvbFZhbHVlKHRoaXMuSHRtbEVkaXRvckZvcm1Db250cm9sLnZhbHVlKTtcclxuICAgIGlmICh0aGlzLm9wdGlvbnMuUGF0Y2hGdW5jdGlvbiAmJiB0aGlzLm9wdGlvbnMuUGF0Y2hQYXRoICYmIHRoaXMuSHRtbEVkaXRvckZvcm1Db250cm9sLnZhbGlkKSB7XHJcbiAgICAgIHRoaXMuY29udHJvbFV0aWxpdHkucGF0Y2hDb250cm9sVmFsdWUob3JpZ2luYWxWYWx1ZSx0aGlzLm9wdGlvbnMuUGF0Y2hGdW5jdGlvbiAsdGhpcy5vcHRpb25zLlBhdGNoUGF0aClcclxuICAgIH1cclxuICAgIC8vVXNlIHRoaXMgbGluZSB0byBlbmFibGUgdHdvIHdheSBiaW5kaW5nLlxyXG4gICAgdGhpcy5vcHRpb25zLlZhbHVlPW9yaWdpbmFsVmFsdWU7XHJcbiAgICB0aGlzLk9uQ2hhbmdlLmVtaXQob3JpZ2luYWxWYWx1ZSlcclxuICB9XHJcblxyXG5cclxuICAvL0V4dGVybmFsIE1ldGhvZFxyXG5cclxuICBSZW1vdmVSZXF1aXJlZFZhbGlkYXRpb24gPSAoKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LlJlbW92ZVJlcXVpcmVkVmFsaWRhdGlvbih0aGlzLkh0bWxFZGl0b3JGb3JtQ29udHJvbCwgdGhpcy52YWxpZGF0aW9uUnVsZXMsIHRoaXMub3B0aW9ucylcclxuICB9XHJcbiAgLy9FeHRlcm5hbCBNZXRob2RcclxuXHJcbiAgQWRkUmVxdWlyZWRWYWxpZGF0aW9uID0gKCkgPT4ge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5BZGRSZXF1aXJlZFZhbGlkYXRpb24odGhpcy5IdG1sRWRpdG9yRm9ybUNvbnRyb2wsIHRoaXMudmFsaWRhdGlvblJ1bGVzLCB0aGlzLm9wdGlvbnMpXHJcbiAgfVxyXG5cclxuXHJcbiAgLy9FeHRlcm5hbCBNZXRob2RcclxuICBSZW1vdmVDdXN0b21WYWxpZGF0aW9uID0gKEN1c3RvbVZhbGlkYXRpb24pID0+IHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuUmVtb3ZlQ3VzdG9tVmFsaWRhdGlvbih0aGlzLkh0bWxFZGl0b3JGb3JtQ29udHJvbCwgdGhpcy52YWxpZGF0aW9uUnVsZXMsIEN1c3RvbVZhbGlkYXRpb24pXHJcbiAgfVxyXG4gIC8vRXh0ZXJuYWwgTWV0aG9kXHJcbiAgQWRkQ3VzdG9tVmFsaWRhdGlvbiA9IChDdXN0b21WYWxpZGF0aW9uKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LkFkZEN1c3RvbVZhbGlkYXRpb24odGhpcy5IdG1sRWRpdG9yRm9ybUNvbnRyb2wsIHRoaXMudmFsaWRhdGlvblJ1bGVzLCBDdXN0b21WYWxpZGF0aW9uKVxyXG4gIH1cclxuXHJcbiAgLy9FeHRlcm5hbCBNZXRob2RcclxuICBJc1ZhbGlkID0gKCkgPT4ge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5Jc1ZhbGlkKHRoaXMuSHRtbEVkaXRvckZvcm1Db250cm9sKVxyXG4gIH1cclxuXHJcbn1cclxuXHJcblxyXG4iLCJcclxuPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgYmJzZi1jb250cm9sIGJic2YtaHRtbGVkaXRvclwiIFtmb3JtR3JvdXBdPVwiZ3JvdXBcIj5cclxuICA8ZGl2IFtuZ0NsYXNzXT1cIihvcHRpb25zLlZpZXdUeXBlPT0xKT8nYmJzZi12ZXJ0aWNhbCc6J2Jic2YtaG9yaXpvbnRhbCdcIj5cclxuICAgIDwhLS1sYWJlbC0tPlxyXG4gICAgPGxhYmVsICpuZ0lmPVwiIW9wdGlvbnMuSGlkZUxhYmVsXCIgY2xhc3M9XCJiYnNmLWxhYmVsIHt7b3B0aW9ucy5MYWJlbEV4dHJhQ2xhc3Nlc319XCI+XHJcbiAgICAgIHt7b3B0aW9ucy5MYWJlbFZhbHVlfX1cclxuICAgICAgPCEtLUFzdGVyaXNrLS0+XHJcbiAgICAgIDxzcGFuICpuZ0lmPVwiKG9wdGlvbnMuU2hvd0FzdGVyaXNrJiZvcHRpb25zLklzUmVxdWlyZWQpfHwob3B0aW9ucy5Jc1JlcXVpcmVkKVwiIGNsYXNzPVwidGV4dC1kYW5nZXJcIj4qPC9zcGFuPlxyXG4gICAgPC9sYWJlbD5cclxuICAgIDxkaXYgY2xhc3M9XCJiYnNmLWlucHV0LWNvbnRhaW5lclwiPlxyXG4gICAgICA8YW5ndWxhci1lZGl0b3JcclxuICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwib25WYWx1ZUNoYW5nZWQoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBpZD1cInt7b3B0aW9ucy5OYW1lfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLWludmFsaWRdPVwiSHRtbEVkaXRvckZvcm1Db250cm9sLmludmFsaWQgJiYgSHRtbEVkaXRvckZvcm1Db250cm9sLnRvdWNoZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ7e29wdGlvbnMuRXh0cmFDbGFzc2VzfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2Rpcl09XCJ0ZXh0RGlyXCIgZm9ybUNvbnRyb2xOYW1lPVwie3tvcHRpb25zLk5hbWV9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbY29uZmlnXT1cImVkaXRvckNvbmZpZ1wiPjwvYW5ndWxhci1lZGl0b3I+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwic3VidGV4dC1jb250YWluZXJcIj5cclxuICAgIDwhLS0gTGFiZWxEZXNjcmlwdGlvbi0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImJic2YtY29udHJvbC1kZXNjXCIgKm5nSWY9XCJvcHRpb25zLkxhYmVsRGVzY3JpcHRpb24hPW51bGxcIj57e29wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbn19PC9kaXY+XHJcbiAgICA8IS0tIHJlcXVpcmVkVGV4dC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImJic2YtdmFsaWRhdGlvblwiICpuZ0lmPVwiKEh0bWxFZGl0b3JGb3JtQ29udHJvbC5pbnZhbGlkICYmIEh0bWxFZGl0b3JGb3JtQ29udHJvbC50b3VjaGVkKVwiPlxyXG4gICAgICB7e2dldEVycm9yVmFsaWRhdGlvbihIdG1sRWRpdG9yRm9ybUNvbnRyb2wuZXJyb3JzfGtleXZhbHVlKX19XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8ZGl2ICpuZ0lmPVwiKGdyb3VwLnZhbGlkJiZncm91cC5kaXJ0eSYmZ3JvdXAudG91Y2hlZCApfHwoZ3JvdXAudW50b3VjaGVkJiZncm91cC5pbnZhbGlkJiZncm91cC5kaXJ0eSkgXCI+e3tyZXNldEVycm9yKCl9fTwvZGl2PlxyXG48L2Rpdj5cclxuIl19