@bnsights/bbsf-controls 1.0.106 → 1.0.109

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 (221) hide show
  1. package/README.md +11 -0
  2. package/esm2020/bnsights-bbsf-controls.mjs +5 -0
  3. package/esm2020/lib/Shared/Components/app-base-component.mjs +226 -0
  4. package/esm2020/lib/Shared/Components/ng-tag-input.mjs +331 -0
  5. package/esm2020/lib/Shared/Directives/template-name.directive.mjs +18 -0
  6. package/{esm2015/lib/Shared/Models/DropdownListItem.js → esm2020/lib/Shared/Models/DropdownListItem.mjs} +1 -1
  7. package/esm2020/lib/Shared/Pipes/bbsf-date-time.pipe.mjs +21 -0
  8. package/esm2020/lib/Shared/Pipes/bbsf-date.pipe.mjs +21 -0
  9. package/esm2020/lib/Shared/default_intl.mjs +29 -0
  10. package/esm2020/lib/Shared/services/ControlUtility.mjs +162 -0
  11. package/esm2020/lib/Shared/services/GlobalSettings.service.mjs +30 -0
  12. package/esm2020/lib/Shared/services/OnPagingFiltersChange.service.mjs +24 -0
  13. package/esm2020/lib/Shared/services/render-component-service.service.mjs +30 -0
  14. package/esm2020/lib/Shared/services/validationErrorMassage.service.mjs +170 -0
  15. package/esm2020/lib/controls/AutocompleteTextBox/AutocompleteTextBox.component.mjs +262 -0
  16. package/esm2020/lib/controls/Calendar/Calendar.component.mjs +173 -0
  17. package/esm2020/lib/controls/CheckBox/CheckBox.component.mjs +117 -0
  18. package/esm2020/lib/controls/ConfirmationModal/ConfirmationModal.component.mjs +136 -0
  19. package/esm2020/lib/controls/DateTimePicker/DateTimePicker.component.mjs +223 -0
  20. package/esm2020/lib/controls/DropdownList/DropdownList.component.mjs +194 -0
  21. package/esm2020/lib/controls/FileUplaod/FileUplaod.component.mjs +447 -0
  22. package/esm2020/lib/controls/Form/Form.component.mjs +101 -0
  23. package/esm2020/lib/controls/HtmlEditor/HtmlEditor.component.mjs +226 -0
  24. package/esm2020/lib/controls/ImageUpload/ImageUpload.component.mjs +350 -0
  25. package/esm2020/lib/controls/MapAutoComplete/MapAutoComplete.component.mjs +325 -0
  26. package/esm2020/lib/controls/MultiLingualHtmlEditor/MultiLingualHtmlEditor.component.mjs +427 -0
  27. package/esm2020/lib/controls/MultiLingualTextArea/MultiLingualTextArea.component.mjs +429 -0
  28. package/esm2020/lib/controls/MultiLingualTextBox/MultiLingualTextBox.component.mjs +428 -0
  29. package/esm2020/lib/controls/Paging/JwPagination.component.mjs +156 -0
  30. package/esm2020/lib/controls/Paging/Paging.component.mjs +312 -0
  31. package/esm2020/lib/controls/Phone/Phone.component.mjs +129 -0
  32. package/esm2020/lib/controls/ProfileImageUploader/ProfileImageUploader.component.mjs +376 -0
  33. package/esm2020/lib/controls/RadioButton/RadioButton.component.mjs +109 -0
  34. package/esm2020/lib/controls/Recaptcha/Recaptcha.component.mjs +135 -0
  35. package/esm2020/lib/controls/Repeater/repeater/repeater.component.mjs +125 -0
  36. package/esm2020/lib/controls/Repeater/repeater-field-builder/repeater-field-builder.component.mjs +750 -0
  37. package/esm2020/lib/controls/Repeater/repeater-item-field/repeater-item-field.component.mjs +21 -0
  38. package/esm2020/lib/controls/Repeater/repeater-table/repeater-table.component.mjs +108 -0
  39. package/esm2020/lib/controls/TagsInput/TagsInput.component.mjs +277 -0
  40. package/esm2020/lib/controls/TextArea/TextArea.component.mjs +196 -0
  41. package/esm2020/lib/controls/TextBox/TextBox.component.mjs +312 -0
  42. package/esm2020/lib/controls/Toggleslide/toggleslide.component.mjs +90 -0
  43. package/esm2020/lib/controls/bbsf-controls.module.mjs +361 -0
  44. package/esm2020/lib/controls/page-header-component/page-header-component.component.mjs +37 -0
  45. package/{esm2015/public-api.js → esm2020/public-api.mjs} +2 -2
  46. package/fesm2015/{bnsights-bbsf-controls.js → bnsights-bbsf-controls.mjs} +2214 -2111
  47. package/fesm2015/bnsights-bbsf-controls.mjs.map +1 -0
  48. package/fesm2020/bnsights-bbsf-controls.mjs +9098 -0
  49. package/fesm2020/bnsights-bbsf-controls.mjs.map +1 -0
  50. package/index.d.ts +5 -0
  51. package/lib/Shared/Components/app-base-component.d.ts +7 -0
  52. package/lib/Shared/Components/ng-tag-input.d.ts +4 -1
  53. package/lib/Shared/Directives/template-name.directive.d.ts +3 -0
  54. package/lib/Shared/Models/DropdownListItem.d.ts +2 -2
  55. package/lib/Shared/Pipes/bbsf-date-time.pipe.d.ts +3 -0
  56. package/lib/Shared/Pipes/bbsf-date.pipe.d.ts +3 -0
  57. package/lib/Shared/default_intl.d.ts +3 -0
  58. package/lib/Shared/services/ControlUtility.d.ts +3 -0
  59. package/lib/Shared/services/GlobalSettings.service.d.ts +3 -0
  60. package/lib/Shared/services/OnPagingFiltersChange.service.d.ts +3 -0
  61. package/lib/Shared/services/render-component-service.service.d.ts +3 -0
  62. package/lib/Shared/services/validationErrorMassage.service.d.ts +4 -3
  63. package/lib/controls/AutocompleteTextBox/AutocompleteTextBox.component.d.ts +3 -0
  64. package/lib/controls/Calendar/Calendar.component.d.ts +3 -0
  65. package/lib/controls/CheckBox/CheckBox.component.d.ts +3 -0
  66. package/lib/controls/ConfirmationModal/ConfirmationModal.component.d.ts +3 -0
  67. package/lib/controls/DateTimePicker/DateTimePicker.component.d.ts +3 -0
  68. package/lib/controls/DropdownList/DropdownList.component.d.ts +5 -0
  69. package/lib/controls/FileUplaod/FileUplaod.component.d.ts +3 -0
  70. package/lib/controls/Form/Form.component.d.ts +3 -0
  71. package/lib/controls/HtmlEditor/HtmlEditor.component.d.ts +3 -0
  72. package/lib/controls/ImageUpload/ImageUpload.component.d.ts +3 -0
  73. package/lib/controls/MapAutoComplete/MapAutoComplete.component.d.ts +3 -0
  74. package/lib/controls/MultiLingualHtmlEditor/MultiLingualHtmlEditor.component.d.ts +3 -0
  75. package/lib/controls/MultiLingualTextArea/MultiLingualTextArea.component.d.ts +3 -0
  76. package/lib/controls/MultiLingualTextBox/MultiLingualTextBox.component.d.ts +3 -0
  77. package/lib/controls/Paging/JwPagination.component.d.ts +3 -0
  78. package/lib/controls/Paging/Paging.component.d.ts +3 -0
  79. package/lib/controls/Phone/Phone.component.d.ts +3 -0
  80. package/lib/controls/ProfileImageUploader/ProfileImageUploader.component.d.ts +3 -0
  81. package/lib/controls/RadioButton/RadioButton.component.d.ts +3 -0
  82. package/lib/controls/Recaptcha/Recaptcha.component.d.ts +3 -0
  83. package/lib/controls/Repeater/repeater/repeater.component.d.ts +3 -0
  84. package/lib/controls/Repeater/repeater-field-builder/repeater-field-builder.component.d.ts +3 -0
  85. package/lib/controls/Repeater/repeater-item-field/repeater-item-field.component.d.ts +3 -0
  86. package/lib/controls/Repeater/repeater-table/repeater-table.component.d.ts +3 -0
  87. package/lib/controls/TagsInput/TagsInput.component.d.ts +3 -0
  88. package/lib/controls/TextArea/TextArea.component.d.ts +3 -0
  89. package/lib/controls/TextBox/TextBox.component.d.ts +3 -0
  90. package/lib/controls/Toggleslide/toggleslide.component.d.ts +3 -0
  91. package/lib/controls/bbsf-controls.module.d.ts +71 -4
  92. package/lib/controls/page-header-component/page-header-component.component.d.ts +3 -0
  93. package/package.json +44 -48
  94. package/public-api.d.ts +1 -1
  95. package/bnsights-bbsf-controls-1.0.106.tgz +0 -0
  96. package/bnsights-bbsf-controls.d.ts +0 -5
  97. package/bnsights-bbsf-controls.metadata.json +0 -1
  98. package/bundles/bnsights-bbsf-controls.umd.js +0 -9636
  99. package/bundles/bnsights-bbsf-controls.umd.js.map +0 -1
  100. package/esm2015/bnsights-bbsf-controls.js +0 -6
  101. package/esm2015/lib/Shared/Components/app-base-component.js +0 -202
  102. package/esm2015/lib/Shared/Components/ng-tag-input.js +0 -323
  103. package/esm2015/lib/Shared/Directives/template-name.directive.js +0 -18
  104. package/esm2015/lib/Shared/Pipes/bbsf-date-time.pipe.js +0 -20
  105. package/esm2015/lib/Shared/Pipes/bbsf-date.pipe.js +0 -20
  106. package/esm2015/lib/Shared/default_intl.js +0 -29
  107. package/esm2015/lib/Shared/services/ControlUtility.js +0 -164
  108. package/esm2015/lib/Shared/services/GlobalSettings.service.js +0 -28
  109. package/esm2015/lib/Shared/services/OnPagingFiltersChange.service.js +0 -22
  110. package/esm2015/lib/Shared/services/render-component-service.service.js +0 -30
  111. package/esm2015/lib/Shared/services/validationErrorMassage.service.js +0 -172
  112. package/esm2015/lib/controls/AutocompleteTextBox/AutocompleteTextBox.component.js +0 -266
  113. package/esm2015/lib/controls/Calendar/Calendar.component.js +0 -177
  114. package/esm2015/lib/controls/CheckBox/CheckBox.component.js +0 -118
  115. package/esm2015/lib/controls/ConfirmationModal/ConfirmationModal.component.js +0 -139
  116. package/esm2015/lib/controls/DateTimePicker/DateTimePicker.component.js +0 -227
  117. package/esm2015/lib/controls/DropdownList/DropdownList.component.js +0 -192
  118. package/esm2015/lib/controls/FileUplaod/FileUplaod.component.js +0 -447
  119. package/esm2015/lib/controls/Form/Form.component.js +0 -106
  120. package/esm2015/lib/controls/HtmlEditor/HtmlEditor.component.js +0 -226
  121. package/esm2015/lib/controls/ImageUpload/ImageUpload.component.js +0 -347
  122. package/esm2015/lib/controls/MapAutoComplete/MapAutoComplete.component.js +0 -325
  123. package/esm2015/lib/controls/MultiLingualHtmlEditor/MultiLingualHtmlEditor.component.js +0 -429
  124. package/esm2015/lib/controls/MultiLingualTextArea/MultiLingualTextArea.component.js +0 -434
  125. package/esm2015/lib/controls/MultiLingualTextBox/MultiLingualTextBox.component.js +0 -433
  126. package/esm2015/lib/controls/Paging/JwPagination.component.js +0 -129
  127. package/esm2015/lib/controls/Paging/Paging.component.js +0 -312
  128. package/esm2015/lib/controls/Phone/Phone.component.js +0 -129
  129. package/esm2015/lib/controls/ProfileImageUploader/ProfileImageUploader.component.js +0 -371
  130. package/esm2015/lib/controls/RadioButton/RadioButton.component.js +0 -111
  131. package/esm2015/lib/controls/Recaptcha/Recaptcha.component.js +0 -135
  132. package/esm2015/lib/controls/Repeater/repeater/repeater.component.js +0 -117
  133. package/esm2015/lib/controls/Repeater/repeater-field-builder/repeater-field-builder.component.js +0 -748
  134. package/esm2015/lib/controls/Repeater/repeater-item-field/repeater-item-field.component.js +0 -19
  135. package/esm2015/lib/controls/Repeater/repeater-table/repeater-table.component.js +0 -108
  136. package/esm2015/lib/controls/TagsInput/TagsInput.component.js +0 -278
  137. package/esm2015/lib/controls/TextArea/TextArea.component.js +0 -197
  138. package/esm2015/lib/controls/TextBox/TextBox.component.js +0 -309
  139. package/esm2015/lib/controls/Toggleslide/toggleslide.component.js +0 -90
  140. package/esm2015/lib/controls/bbsf-controls.module.js +0 -240
  141. package/esm2015/lib/controls/page-header-component/page-header-component.component.js +0 -32
  142. package/fesm2015/bnsights-bbsf-controls.js.map +0 -1
  143. package/src/lib/assets/.gitkeep +0 -0
  144. /package/{esm2015/lib/Shared/Enums/CalendarView.js → esm2020/lib/Shared/Enums/CalendarView.mjs} +0 -0
  145. /package/{esm2015/lib/Shared/Enums/ControlLayout.js → esm2020/lib/Shared/Enums/ControlLayout.mjs} +0 -0
  146. /package/{esm2015/lib/Shared/Enums/Countries.js → esm2020/lib/Shared/Enums/Countries.mjs} +0 -0
  147. /package/{esm2015/lib/Shared/Enums/Enums.js → esm2020/lib/Shared/Enums/Enums.mjs} +0 -0
  148. /package/{esm2015/lib/Shared/Enums/FileType.js → esm2020/lib/Shared/Enums/FileType.mjs} +0 -0
  149. /package/{esm2015/lib/Shared/Enums/FilterType.js → esm2020/lib/Shared/Enums/FilterType.mjs} +0 -0
  150. /package/{esm2015/lib/Shared/Enums/FontSize.js → esm2020/lib/Shared/Enums/FontSize.mjs} +0 -0
  151. /package/{esm2015/lib/Shared/Enums/ForceDirection.js → esm2020/lib/Shared/Enums/ForceDirection.mjs} +0 -0
  152. /package/{esm2015/lib/Shared/Enums/IconPosition.js → esm2020/lib/Shared/Enums/IconPosition.mjs} +0 -0
  153. /package/{esm2015/lib/Shared/Enums/ImageType.js → esm2020/lib/Shared/Enums/ImageType.mjs} +0 -0
  154. /package/{esm2015/lib/Shared/Enums/InputType.js → esm2020/lib/Shared/Enums/InputType.mjs} +0 -0
  155. /package/{esm2015/lib/Shared/Enums/Insert.js → esm2020/lib/Shared/Enums/Insert.mjs} +0 -0
  156. /package/{esm2015/lib/Shared/Enums/LanguageMode.js → esm2020/lib/Shared/Enums/LanguageMode.mjs} +0 -0
  157. /package/{esm2015/lib/Shared/Enums/LanguageValidation.js → esm2020/lib/Shared/Enums/LanguageValidation.mjs} +0 -0
  158. /package/{esm2015/lib/Shared/Enums/Misc.js → esm2020/lib/Shared/Enums/Misc.mjs} +0 -0
  159. /package/{esm2015/lib/Shared/Enums/PagingActionMode.js → esm2020/lib/Shared/Enums/PagingActionMode.mjs} +0 -0
  160. /package/{esm2015/lib/Shared/Enums/Para.js → esm2020/lib/Shared/Enums/Para.mjs} +0 -0
  161. /package/{esm2015/lib/Shared/Enums/PickerType.js → esm2020/lib/Shared/Enums/PickerType.mjs} +0 -0
  162. /package/{esm2015/lib/Shared/Enums/SelectMode.js → esm2020/lib/Shared/Enums/SelectMode.mjs} +0 -0
  163. /package/{esm2015/lib/Shared/Enums/StartView.js → esm2020/lib/Shared/Enums/StartView.mjs} +0 -0
  164. /package/{esm2015/lib/Shared/Enums/Style.js → esm2020/lib/Shared/Enums/Style.mjs} +0 -0
  165. /package/{esm2015/lib/Shared/Enums/StyleConfirmationMode.js → esm2020/lib/Shared/Enums/StyleConfirmationMode.mjs} +0 -0
  166. /package/{esm2015/lib/Shared/Enums/TagInputView.js → esm2020/lib/Shared/Enums/TagInputView.mjs} +0 -0
  167. /package/{esm2015/lib/Shared/Enums/menu-list-enum.js → esm2020/lib/Shared/Enums/menu-list-enum.mjs} +0 -0
  168. /package/{esm2015/lib/Shared/Models/Attribute.js → esm2020/lib/Shared/Models/Attribute.mjs} +0 -0
  169. /package/{esm2015/lib/Shared/Models/AutocompleteDTO.js → esm2020/lib/Shared/Models/AutocompleteDTO.mjs} +0 -0
  170. /package/{esm2015/lib/Shared/Models/AutocompleteOptions.js → esm2020/lib/Shared/Models/AutocompleteOptions.mjs} +0 -0
  171. /package/{esm2015/lib/Shared/Models/CalendarEventDTO.js → esm2020/lib/Shared/Models/CalendarEventDTO.mjs} +0 -0
  172. /package/{esm2015/lib/Shared/Models/CalendarOptions.js → esm2020/lib/Shared/Models/CalendarOptions.mjs} +0 -0
  173. /package/{esm2015/lib/Shared/Models/CancelDTO.js → esm2020/lib/Shared/Models/CancelDTO.mjs} +0 -0
  174. /package/{esm2015/lib/Shared/Models/CaptchaStyle.js → esm2020/lib/Shared/Models/CaptchaStyle.mjs} +0 -0
  175. /package/{esm2015/lib/Shared/Models/CheckBoxOptions.js → esm2020/lib/Shared/Models/CheckBoxOptions.mjs} +0 -0
  176. /package/{esm2015/lib/Shared/Models/ConfirmationModalOptions.js → esm2020/lib/Shared/Models/ConfirmationModalOptions.mjs} +0 -0
  177. /package/{esm2015/lib/Shared/Models/ControlOptionsBase.js → esm2020/lib/Shared/Models/ControlOptionsBase.mjs} +0 -0
  178. /package/{esm2015/lib/Shared/Models/CustomValidation.js → esm2020/lib/Shared/Models/CustomValidation.mjs} +0 -0
  179. /package/{esm2015/lib/Shared/Models/DropdownOptions.js → esm2020/lib/Shared/Models/DropdownOptions.mjs} +0 -0
  180. /package/{esm2015/lib/Shared/Models/EditPersonalImage.js → esm2020/lib/Shared/Models/EditPersonalImage.mjs} +0 -0
  181. /package/{esm2015/lib/Shared/Models/EnglishArabicDTO.js → esm2020/lib/Shared/Models/EnglishArabicDTO.mjs} +0 -0
  182. /package/{esm2015/lib/Shared/Models/FileDTO.js → esm2020/lib/Shared/Models/FileDTO.mjs} +0 -0
  183. /package/{esm2015/lib/Shared/Models/FileUploadModel.js → esm2020/lib/Shared/Models/FileUploadModel.mjs} +0 -0
  184. /package/{esm2015/lib/Shared/Models/FileUploadOptions.js → esm2020/lib/Shared/Models/FileUploadOptions.mjs} +0 -0
  185. /package/{esm2015/lib/Shared/Models/FilterItem.js → esm2020/lib/Shared/Models/FilterItem.mjs} +0 -0
  186. /package/{esm2015/lib/Shared/Models/FormOptions.js → esm2020/lib/Shared/Models/FormOptions.mjs} +0 -0
  187. /package/{esm2015/lib/Shared/Models/HtmlEditorOptions.js → esm2020/lib/Shared/Models/HtmlEditorOptions.mjs} +0 -0
  188. /package/{esm2015/lib/Shared/Models/ImageUploadOptions.js → esm2020/lib/Shared/Models/ImageUploadOptions.mjs} +0 -0
  189. /package/{esm2015/lib/Shared/Models/MapAutoCompleteOptions.js → esm2020/lib/Shared/Models/MapAutoCompleteOptions.mjs} +0 -0
  190. /package/{esm2015/lib/Shared/Models/MapAutocompleteDTO.js → esm2020/lib/Shared/Models/MapAutocompleteDTO.mjs} +0 -0
  191. /package/{esm2015/lib/Shared/Models/MultiLingualHtmlEditorOptions.js → esm2020/lib/Shared/Models/MultiLingualHtmlEditorOptions.mjs} +0 -0
  192. /package/{esm2015/lib/Shared/Models/MultiLingualTextAreaOptions.js → esm2020/lib/Shared/Models/MultiLingualTextAreaOptions.mjs} +0 -0
  193. /package/{esm2015/lib/Shared/Models/MultilingualControlOptionsBase.js → esm2020/lib/Shared/Models/MultilingualControlOptionsBase.mjs} +0 -0
  194. /package/{esm2015/lib/Shared/Models/MultilingualTextBoxOptions.js → esm2020/lib/Shared/Models/MultilingualTextBoxOptions.mjs} +0 -0
  195. /package/{esm2015/lib/Shared/Models/MultipleFileUploadModel.js → esm2020/lib/Shared/Models/MultipleFileUploadModel.mjs} +0 -0
  196. /package/{esm2015/lib/Shared/Models/PagingDTO.js → esm2020/lib/Shared/Models/PagingDTO.mjs} +0 -0
  197. /package/{esm2015/lib/Shared/Models/PagingOptions.js → esm2020/lib/Shared/Models/PagingOptions.mjs} +0 -0
  198. /package/{esm2015/lib/Shared/Models/PagingPayload.js → esm2020/lib/Shared/Models/PagingPayload.mjs} +0 -0
  199. /package/{esm2015/lib/Shared/Models/PhoneOptions.js → esm2020/lib/Shared/Models/PhoneOptions.mjs} +0 -0
  200. /package/{esm2015/lib/Shared/Models/ProfileImageUploadOptions.js → esm2020/lib/Shared/Models/ProfileImageUploadOptions.mjs} +0 -0
  201. /package/{esm2015/lib/Shared/Models/ProfilePictureDTO.js → esm2020/lib/Shared/Models/ProfilePictureDTO.mjs} +0 -0
  202. /package/{esm2015/lib/Shared/Models/RadioButtonItem.js → esm2020/lib/Shared/Models/RadioButtonItem.mjs} +0 -0
  203. /package/{esm2015/lib/Shared/Models/RadioButtonOptions.js → esm2020/lib/Shared/Models/RadioButtonOptions.mjs} +0 -0
  204. /package/{esm2015/lib/Shared/Models/RangeNumber.js → esm2020/lib/Shared/Models/RangeNumber.mjs} +0 -0
  205. /package/{esm2015/lib/Shared/Models/Recaptcha.js → esm2020/lib/Shared/Models/Recaptcha.mjs} +0 -0
  206. /package/{esm2015/lib/Shared/Models/RecaptchaOptions.js → esm2020/lib/Shared/Models/RecaptchaOptions.mjs} +0 -0
  207. /package/{esm2015/lib/Shared/Models/RepeaterField.js → esm2020/lib/Shared/Models/RepeaterField.mjs} +0 -0
  208. /package/{esm2015/lib/Shared/Models/RepeaterOptions.js → esm2020/lib/Shared/Models/RepeaterOptions.mjs} +0 -0
  209. /package/{esm2015/lib/Shared/Models/SaveDTO.js → esm2020/lib/Shared/Models/SaveDTO.mjs} +0 -0
  210. /package/{esm2015/lib/Shared/Models/TagsInputDTO.js → esm2020/lib/Shared/Models/TagsInputDTO.mjs} +0 -0
  211. /package/{esm2015/lib/Shared/Models/TagsInputOptions.js → esm2020/lib/Shared/Models/TagsInputOptions.mjs} +0 -0
  212. /package/{esm2015/lib/Shared/Models/TextAreaOptions.js → esm2020/lib/Shared/Models/TextAreaOptions.mjs} +0 -0
  213. /package/{esm2015/lib/Shared/Models/TextBoxOptions.js → esm2020/lib/Shared/Models/TextBoxOptions.mjs} +0 -0
  214. /package/{esm2015/lib/Shared/Models/ToggleslideOptions.js → esm2020/lib/Shared/Models/ToggleslideOptions.mjs} +0 -0
  215. /package/{esm2015/lib/Shared/Models/UploadPersonalImage.js → esm2020/lib/Shared/Models/UploadPersonalImage.mjs} +0 -0
  216. /package/{esm2015/lib/Shared/Models/bread-crumb.js → esm2020/lib/Shared/Models/bread-crumb.mjs} +0 -0
  217. /package/{esm2015/lib/Shared/Models/control-filter-Item.js → esm2020/lib/Shared/Models/control-filter-Item.mjs} +0 -0
  218. /package/{esm2015/lib/Shared/Models/datePickerOptions.js → esm2020/lib/Shared/Models/datePickerOptions.mjs} +0 -0
  219. /package/{esm2015/lib/Shared/Models/filter-options.js → esm2020/lib/Shared/Models/filter-options.mjs} +0 -0
  220. /package/{esm2015/lib/Shared/Models/page-header-options.js → esm2020/lib/Shared/Models/page-header-options.mjs} +0 -0
  221. /package/{esm2015/lib/Shared/config/environment.js → esm2020/lib/Shared/config/environment.mjs} +0 -0
package/README.md CHANGED
@@ -5,6 +5,17 @@ BBSF Controls package is part of BBSF 3 packages. It has all the form controls t
5
5
  For more info please visit [BBSF Controls documenation](https://bbsfadmin.bnsights.com/controls) or [BBSF documentation](https://bnsightsprojects.visualstudio.com/BBSF%203/_wiki/wikis/BBSF-3.wiki/65/BBSF-Documentation)
6
6
 
7
7
  # Change Log
8
+ ## 1.0.109 / 3-12-2023
9
+ ===================
10
+ * Update Utilities Library
11
+
12
+ ## 1.0.108 / 3-12-2023
13
+ ===================
14
+ * Update Utilities Library
15
+
16
+ ## 1.0.107 / 29-11-2023
17
+ ===================
18
+ * Update Utilities Library
8
19
 
9
20
  ## 1.0.106 / 19-11-2023
10
21
  ===================
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public-api';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm5zaWdodHMtYmJzZi1jb250cm9scy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2Jic2YtY29udHJvbHMvc3JjL2Juc2lnaHRzLWJic2YtY29udHJvbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
@@ -0,0 +1,226 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { Title } from '@angular/platform-browser';
3
+ import { UtilityService, AuthService, ConfigurationService, } from '@bnsights/bbsf-utilities';
4
+ import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
5
+ import { ControlUtility } from '../services/ControlUtility';
6
+ import { CustomValidation } from '../Models/CustomValidation';
7
+ import { saveAs } from 'file-saver';
8
+ import { EnvironmentService } from '@bnsights/bbsf-utilities';
9
+ import * as i0 from "@angular/core";
10
+ export class AppBaseComponent {
11
+ constructor(injector) {
12
+ this.pageTitle = '';
13
+ this.PageCount = 12;
14
+ this.onSuccessAddHandler = (success) => {
15
+ this.utilityService.notifySuccessMessage(this.l('RecordAdded'), null, null, false);
16
+ };
17
+ this.onSuccessEditHandler = (success) => {
18
+ this.utilityService.notifySuccessMessage(this.l('RecordUpdated'), null, null, false);
19
+ };
20
+ this.onSuccessDeleteHandler = (success) => {
21
+ this.utilityService.notifySuccessMessage(this.l('RecordDeleted'), null, null, false);
22
+ };
23
+ this.utilityService = injector.get(UtilityService);
24
+ this.controlUtility = injector.get(ControlUtility);
25
+ this.configurationService = injector.get(ConfigurationService);
26
+ this.environmentService = injector.get(EnvironmentService);
27
+ this.modalService = injector.get(NgbModal);
28
+ this.titleService = injector.get(Title);
29
+ this.auhService = injector.get(AuthService);
30
+ this.exportLabel = this.utilityService.getResourceValue('Export');
31
+ this.filtersLabel = this.utilityService.getResourceValue('Filters');
32
+ this.addLabel = this.utilityService.getResourceValue('Add');
33
+ this.userName = this.auhService.name();
34
+ this.isEN = this.utilityService.isCurrentLanguageEnglish();
35
+ }
36
+ updatePageTitle(title) {
37
+ this.titleService.setTitle(this.calculatePageTitle(title));
38
+ }
39
+ l(key) {
40
+ return this.utilityService.getResourceValue(key);
41
+ }
42
+ getConfigurationValue(key) {
43
+ return this.configurationService.getConfigurationValue(key);
44
+ }
45
+ getLanguageModeValue() {
46
+ return this.configurationService.getConfigurationValue('LanguageMode');
47
+ }
48
+ stopBlockUI() {
49
+ this.utilityService.stopBlockUI();
50
+ }
51
+ startBlockUI() {
52
+ this.utilityService.startBlockUI();
53
+ }
54
+ openModal(modal, size) {
55
+ if (size)
56
+ this.modalService.open(modal, {
57
+ size: size,
58
+ backdrop: 'static',
59
+ keyboard: false,
60
+ });
61
+ else
62
+ this.modalService.open(modal, { backdrop: 'static', keyboard: false });
63
+ }
64
+ download(fileDTO, fileName) {
65
+ /*let blob = new Blob([file]);*/
66
+ let file = new Blob([fileDTO], {
67
+ type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
68
+ });
69
+ saveAs(file, fileName);
70
+ }
71
+ downloadPDF(fileDTO, fileName) {
72
+ let file = new Blob([fileDTO], { type: "application/pdf" });
73
+ saveAs(file, fileName);
74
+ }
75
+ downloadWord(fileDTO, fileName) {
76
+ let file = new Blob([fileDTO], { type: "application/vnd.openxmlformats-officedocument.wordprocessingml.document" });
77
+ saveAs(file, fileName);
78
+ }
79
+ base64toBlob(base64Data, contentType) {
80
+ contentType = contentType || '';
81
+ var sliceSize = 1024;
82
+ var byteCharacters = atob(base64Data);
83
+ var bytesLength = byteCharacters.length;
84
+ var slicesCount = Math.ceil(bytesLength / sliceSize);
85
+ var byteArrays = new Array(slicesCount);
86
+ for (var sliceIndex = 0; sliceIndex < slicesCount; ++sliceIndex) {
87
+ var begin = sliceIndex * sliceSize;
88
+ var end = Math.min(begin + sliceSize, bytesLength);
89
+ var bytes = new Array(end - begin);
90
+ for (var offset = begin, i = 0; offset < end; ++i, ++offset) {
91
+ bytes[i] = byteCharacters[offset].charCodeAt(0);
92
+ }
93
+ byteArrays[sliceIndex] = new Uint8Array(bytes);
94
+ }
95
+ return new Blob(byteArrays, { type: contentType });
96
+ }
97
+ calculatePageTitle(title) {
98
+ return title
99
+ ? title.substring(0, 100) + ` | ${this.l('ApplicationName')}`
100
+ : `${this.l('ApplicationName')}`;
101
+ }
102
+ getPagingFiltersValues(form, filters) {
103
+ let model = new Object();
104
+ for (var i = 0; i < filters.length; i++) {
105
+ let filterItem = filters[i];
106
+ if (form.controls[filterItem.FormControlName].value == undefined)
107
+ continue;
108
+ model[filterItem.ActionParameterName] =
109
+ form.controls[filterItem.FormControlName].value == undefined
110
+ ? ''
111
+ : form.controls[filterItem.FormControlName].value;
112
+ // params = params.append(filterItem.ActionParameterName, form.controls[filterItem.FormControlName].value == undefined ? '' : form.controls[filterItem.FormControlName].value);
113
+ }
114
+ return model;
115
+ }
116
+ removeControl(controlName, form) {
117
+ form.removeControl(controlName);
118
+ }
119
+ copyToClipboard(val) {
120
+ const selBox = document.createElement('textarea');
121
+ selBox.style.position = 'fixed';
122
+ selBox.style.left = '0';
123
+ selBox.style.top = '0';
124
+ selBox.style.opacity = '0';
125
+ selBox.value = val;
126
+ document.body.appendChild(selBox);
127
+ selBox.focus();
128
+ selBox.select();
129
+ document.execCommand('copy');
130
+ document.body.removeChild(selBox);
131
+ this.utilityService.notifySuccessMessage(this.l('CopiedSuccessfully'));
132
+ }
133
+ addRequiredRule(control, controlOptions) {
134
+ this.controlUtility.addRequiredToControl(control, controlOptions);
135
+ }
136
+ removeRequiredRule(control, controlOptions) {
137
+ this.controlUtility.removeRequiredFromControl(control, controlOptions);
138
+ }
139
+ validateDates(form, fromDateControl, toDateControl, validationMessageKey) {
140
+ var validator = new CustomValidation();
141
+ validator.functionBody = (control) => {
142
+ let fromDate = form.controls[fromDateControl].value;
143
+ let toDate = form.controls[toDateControl].value;
144
+ if (fromDate && toDate && toDate <= fromDate)
145
+ return { customerError: true };
146
+ return null;
147
+ };
148
+ validator.massage = this.l(validationMessageKey);
149
+ return validator;
150
+ }
151
+ recalculatePageTitle() {
152
+ this.titleService.setTitle(this.calculatePageTitle(''));
153
+ }
154
+ isEnglish() {
155
+ return this.utilityService.isCurrentLanguageEnglish();
156
+ }
157
+ calculateInitials(name) {
158
+ let language = localStorage.getItem('language');
159
+ let currentUser = this.auhService.user.profile;
160
+ console.log(currentUser);
161
+ let userName = language == 'en' ? currentUser.given_nameEn : currentUser.given_nameAr;
162
+ if (currentUser) {
163
+ let fullName = userName.split(' ');
164
+ let initials;
165
+ if (fullName.length > 1) {
166
+ if (this.isEN)
167
+ initials = fullName.shift().charAt(0) + fullName.pop().charAt(0);
168
+ else
169
+ initials =
170
+ fullName.shift().charAt(0) + ' ' + fullName.pop().charAt(0);
171
+ }
172
+ else {
173
+ initials = fullName.pop().charAt(0);
174
+ }
175
+ return initials.toUpperCase();
176
+ }
177
+ return '';
178
+ }
179
+ getCurrentUserInitials() {
180
+ return this.calculateInitials(this.auhService.name());
181
+ }
182
+ getCurrentFailOver(val) {
183
+ if (this.isEnglish()) {
184
+ if (val.English)
185
+ return val.English;
186
+ else
187
+ return val.Arabic;
188
+ }
189
+ else {
190
+ if (val.Arabic)
191
+ return val.Arabic;
192
+ else
193
+ return val.English;
194
+ }
195
+ }
196
+ //#region validation actions
197
+ addRequiredValidation(customControlOption, form, formOptions) {
198
+ customControlOption.forEach(control => {
199
+ if (form.get(control.Name))
200
+ this.addRequiredRule(form.get(control.Name), formOptions);
201
+ else
202
+ control.IsRequired = true;
203
+ });
204
+ }
205
+ removeRequiredValidation(customControlOption, form, formOptions) {
206
+ customControlOption.forEach(control => {
207
+ if (form.get(control.Name))
208
+ this.removeRequiredRule(form.get(control.Name), formOptions);
209
+ else
210
+ control.IsRequired = false;
211
+ });
212
+ }
213
+ resetFormControlsValue(customControlsOptions, form) {
214
+ customControlsOptions.forEach(option => {
215
+ let formControl = form.get(option.Name);
216
+ if (formControl)
217
+ formControl.reset();
218
+ });
219
+ }
220
+ }
221
+ AppBaseComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AppBaseComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
222
+ AppBaseComponent.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AppBaseComponent });
223
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AppBaseComponent, decorators: [{
224
+ type: Injectable
225
+ }], ctorParameters: function () { return [{ type: i0.Injector }]; } });
226
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLWJhc2UtY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1jb250cm9scy9zcmMvbGliL1NoYXJlZC9Db21wb25lbnRzL2FwcC1iYXNlLWNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQVksVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRCxPQUFPLEVBQ0wsY0FBYyxFQUNkLFdBQVcsRUFDWCxvQkFBb0IsR0FDckIsTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFdEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRTVELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRTlELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDcEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7O0FBSTlELE1BQU0sT0FBZ0IsZ0JBQWdCO0lBZ0JwQyxZQUFZLFFBQWtCO1FBRnZCLGNBQVMsR0FBVyxFQUFFLENBQUM7UUFDdkIsY0FBUyxHQUFXLEVBQUUsQ0FBQztRQXlKOUIsd0JBQW1CLEdBQUcsQ0FBQyxPQUFZLEVBQUUsRUFBRTtZQUNyQyxJQUFJLENBQUMsY0FBYyxDQUFDLG9CQUFvQixDQUN0QyxJQUFJLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxFQUNyQixJQUFJLEVBQ0osSUFBSSxFQUNKLEtBQUssQ0FDTixDQUFDO1FBQ0osQ0FBQyxDQUFDO1FBRUYseUJBQW9CLEdBQUcsQ0FBQyxPQUFZLEVBQUUsRUFBRTtZQUN0QyxJQUFJLENBQUMsY0FBYyxDQUFDLG9CQUFvQixDQUN0QyxJQUFJLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxFQUN2QixJQUFJLEVBQ0osSUFBSSxFQUNKLEtBQUssQ0FDTixDQUFDO1FBQ0osQ0FBQyxDQUFDO1FBRUYsMkJBQXNCLEdBQUcsQ0FBQyxPQUFZLEVBQUUsRUFBRTtZQUN4QyxJQUFJLENBQUMsY0FBYyxDQUFDLG9CQUFvQixDQUN0QyxJQUFJLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxFQUN2QixJQUFJLEVBQ0osSUFBSSxFQUNKLEtBQUssQ0FDTixDQUFDO1FBQ0osQ0FBQyxDQUFDO1FBaExBLElBQUksQ0FBQyxjQUFjLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsY0FBYyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDbkQsSUFBSSxDQUFDLG9CQUFvQixHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUMvRCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQzNELElBQUksQ0FBQyxZQUFZLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsWUFBWSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzVDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNsRSxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDcEUsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN2QyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztJQUM3RCxDQUFDO0lBQ0QsZUFBZSxDQUFDLEtBQXlCO1FBQ3ZDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRCxDQUFDLENBQUMsR0FBVztRQUNYLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBQ0QscUJBQXFCLENBQUMsR0FBVztRQUMvQixPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBQ0Qsb0JBQW9CO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLHFCQUFxQixDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFDRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDckMsQ0FBQztJQUVELFNBQVMsQ0FBQyxLQUFVLEVBQUUsSUFBYTtRQUNqQyxJQUFJLElBQUk7WUFDTixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUU7Z0JBQzVCLElBQUksRUFBRSxJQUFJO2dCQUNWLFFBQVEsRUFBRSxRQUFRO2dCQUNsQixRQUFRLEVBQUUsS0FBSzthQUNoQixDQUFDLENBQUM7O1lBQ0EsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBRUQsUUFBUSxDQUFDLE9BQVksRUFBRSxRQUFnQjtRQUNyQyxnQ0FBZ0M7UUFDaEMsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUM3QixJQUFJLEVBQUUsbUVBQW1FO1NBQzFFLENBQUMsQ0FBQztRQUNILE1BQU0sQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFZLEVBQUUsUUFBZ0I7UUFDeEMsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRSxDQUFDLENBQUM7UUFDNUQsTUFBTSxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBQ0QsWUFBWSxDQUFDLE9BQVksRUFBRSxRQUFnQjtRQUN6QyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLHlFQUF5RSxFQUFFLENBQUMsQ0FBQztRQUNwSCxNQUFNLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFHTyxZQUFZLENBQUMsVUFBVSxFQUFFLFdBQVc7UUFDMUMsV0FBVyxHQUFHLFdBQVcsSUFBSSxFQUFFLENBQUM7UUFDaEMsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLElBQUksY0FBYyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN0QyxJQUFJLFdBQVcsR0FBRyxjQUFjLENBQUMsTUFBTSxDQUFDO1FBQ3hDLElBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsQ0FBQyxDQUFDO1FBQ3JELElBQUksVUFBVSxHQUFHLElBQUksS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRXhDLEtBQUssSUFBSSxVQUFVLEdBQUcsQ0FBQyxFQUFFLFVBQVUsR0FBRyxXQUFXLEVBQUUsRUFBRSxVQUFVLEVBQUU7WUFDL0QsSUFBSSxLQUFLLEdBQUcsVUFBVSxHQUFHLFNBQVMsQ0FBQztZQUNuQyxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxTQUFTLEVBQUUsV0FBVyxDQUFDLENBQUM7WUFFbkQsSUFBSSxLQUFLLEdBQUcsSUFBSSxLQUFLLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDO1lBQ25DLEtBQUssSUFBSSxNQUFNLEdBQUcsS0FBSyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxHQUFHLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRTtnQkFDM0QsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDakQ7WUFDRCxVQUFVLENBQUMsVUFBVSxDQUFDLEdBQUcsSUFBSSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDaEQ7UUFDRCxPQUFPLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFTyxrQkFBa0IsQ0FBQyxLQUF5QjtRQUNsRCxPQUFPLEtBQUs7WUFDVixDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEdBQUcsTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLEVBQUU7WUFDN0QsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUM7SUFDckMsQ0FBQztJQUVELHNCQUFzQixDQUFDLElBQWUsRUFBRSxPQUFxQjtRQUMzRCxJQUFJLEtBQUssR0FBRyxJQUFJLE1BQU0sRUFBRSxDQUFDO1FBQ3pCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3ZDLElBQUksVUFBVSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM1QixJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQyxDQUFDLEtBQUssSUFBSSxTQUFTO2dCQUM5RCxTQUFTO1lBQ1gsS0FBSyxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQztnQkFDbkMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLENBQUMsS0FBSyxJQUFJLFNBQVM7b0JBQzFELENBQUMsQ0FBQyxFQUFFO29CQUNKLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsQ0FBQyxLQUFLLENBQUM7WUFDdEQsK0tBQStLO1NBQ2hMO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsYUFBYSxDQUFDLFdBQW1CLEVBQUUsSUFBZTtRQUNoRCxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxlQUFlLENBQUMsR0FBVztRQUN6QixNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2xELE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztRQUNoQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxHQUFHLENBQUM7UUFDeEIsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ3ZCLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQztRQUMzQixNQUFNLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQztRQUNuQixRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNsQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDZixNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDaEIsUUFBUSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM3QixRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsY0FBYyxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFFRCxlQUFlLENBQUMsT0FBd0IsRUFBRSxjQUFtQjtRQUMzRCxJQUFJLENBQUMsY0FBYyxDQUFDLG9CQUFvQixDQUFDLE9BQU8sRUFBRSxjQUFjLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQsa0JBQWtCLENBQUMsT0FBd0IsRUFBRSxjQUFtQjtRQUM5RCxJQUFJLENBQUMsY0FBYyxDQUFDLHlCQUF5QixDQUFDLE9BQU8sRUFBRSxjQUFjLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRUQsYUFBYSxDQUNYLElBQWUsRUFDZixlQUF1QixFQUN2QixhQUFxQixFQUNyQixvQkFBNEI7UUFFNUIsSUFBSSxTQUFTLEdBQUcsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3ZDLFNBQVMsQ0FBQyxZQUFZLEdBQUcsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUNuQyxJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxDQUFDLEtBQUssQ0FBQztZQUNwRCxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDLEtBQUssQ0FBQztZQUVoRCxJQUFJLFFBQVEsSUFBSSxNQUFNLElBQUksTUFBTSxJQUFJLFFBQVE7Z0JBQzFDLE9BQU8sRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLENBQUM7WUFFakMsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQUM7UUFDRixTQUFTLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUNqRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBNkJELG9CQUFvQjtRQUNsQixJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsU0FBUztRQUNQLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO0lBQ3hELENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxJQUFZO1FBQzVCLElBQUksUUFBUSxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDaEQsSUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQy9DLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDekIsSUFBSSxRQUFRLEdBQ1YsUUFBUSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQztRQUN6RSxJQUFJLFdBQVcsRUFBRTtZQUNmLElBQUksUUFBUSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDbkMsSUFBSSxRQUFnQixDQUFDO1lBQ3JCLElBQUksUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0JBQ3ZCLElBQUksSUFBSSxDQUFDLElBQUk7b0JBQ1gsUUFBUSxHQUFHLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQzs7b0JBRWpFLFFBQVE7d0JBQ04sUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNqRTtpQkFBTTtnQkFDTCxRQUFRLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNyQztZQUNELE9BQU8sUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQy9CO1FBQ0QsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsc0JBQXNCO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQsa0JBQWtCLENBQUMsR0FBcUI7UUFDdEMsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDcEIsSUFBSSxHQUFHLENBQUMsT0FBTztnQkFBRSxPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUM7O2dCQUMvQixPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUM7U0FDeEI7YUFBTTtZQUNMLElBQUksR0FBRyxDQUFDLE1BQU07Z0JBQUUsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDOztnQkFDN0IsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDO1NBQ3pCO0lBQ0gsQ0FBQztJQUdELDRCQUE0QjtJQUU1QixxQkFBcUIsQ0FBQyxtQkFBMEIsRUFBRSxJQUFlLEVBQUUsV0FBd0I7UUFDekYsbUJBQW1CLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ3BDLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO2dCQUN4QixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDOztnQkFFMUQsT0FBTyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDOUIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsd0JBQXdCLENBQUMsbUJBQTBCLEVBQUUsSUFBZSxFQUFFLFdBQXdCO1FBQzVGLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUNwQyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztnQkFDeEIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDOztnQkFFN0QsT0FBTyxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDL0IsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsc0JBQXNCLENBQUMscUJBQTRCLEVBQUUsSUFBZTtRQUNsRSxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDckMsSUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDeEMsSUFBSSxXQUFXO2dCQUNiLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN4QixDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7OzhHQTNRbUIsZ0JBQWdCO2tIQUFoQixnQkFBZ0I7NEZBQWhCLGdCQUFnQjtrQkFEckMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdG9yLCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRpdGxlIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmltcG9ydCB7XHJcbiAgVXRpbGl0eVNlcnZpY2UsXHJcbiAgQXV0aFNlcnZpY2UsXHJcbiAgQ29uZmlndXJhdGlvblNlcnZpY2UsXHJcbn0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtdXRpbGl0aWVzJztcclxuaW1wb3J0IHsgTmdiTW9kYWwgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBDb250cm9sVXRpbGl0eSB9IGZyb20gJy4uL3NlcnZpY2VzL0NvbnRyb2xVdGlsaXR5JztcclxuaW1wb3J0IHsgRmlsdGVySXRlbSB9IGZyb20gJy4uL01vZGVscy9GaWx0ZXJJdGVtJztcclxuaW1wb3J0IHsgQ3VzdG9tVmFsaWRhdGlvbiB9IGZyb20gJy4uL01vZGVscy9DdXN0b21WYWxpZGF0aW9uJztcclxuaW1wb3J0IHsgRW5nbGlzaEFyYWJpY0RUTyB9IGZyb20gJy4uL01vZGVscy9FbmdsaXNoQXJhYmljRFRPJztcclxuaW1wb3J0IHsgc2F2ZUFzIH0gZnJvbSAnZmlsZS1zYXZlcic7XHJcbmltcG9ydCB7IEVudmlyb25tZW50U2VydmljZSB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLXV0aWxpdGllcyc7XHJcbmltcG9ydCB7IEZvcm1PcHRpb25zIH0gZnJvbSAnLi4vTW9kZWxzL0Zvcm1PcHRpb25zJztcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFwcEJhc2VDb21wb25lbnQge1xyXG4gIHB1YmxpYyB1dGlsaXR5U2VydmljZTogVXRpbGl0eVNlcnZpY2U7XHJcbiAgcHVibGljIG1vZGFsU2VydmljZTogTmdiTW9kYWw7XHJcbiAgcHJpdmF0ZSBjb250cm9sVXRpbGl0eTogQ29udHJvbFV0aWxpdHk7XHJcbiAgcHJpdmF0ZSB0aXRsZVNlcnZpY2U6IFRpdGxlO1xyXG4gIHByaXZhdGUgYXVoU2VydmljZTogQXV0aFNlcnZpY2U7XHJcbiAgcHJpdmF0ZSBjb25maWd1cmF0aW9uU2VydmljZTogQ29uZmlndXJhdGlvblNlcnZpY2U7XHJcbiAgcHVibGljIGVudmlyb25tZW50U2VydmljZTogRW52aXJvbm1lbnRTZXJ2aWNlO1xyXG4gIHB1YmxpYyBpc0VOOiBib29sZWFuO1xyXG4gIC8vTGFiZWxzXHJcbiAgcHVibGljIGV4cG9ydExhYmVsOiBzdHJpbmc7XHJcbiAgcHVibGljIGZpbHRlcnNMYWJlbDogc3RyaW5nO1xyXG4gIHB1YmxpYyBhZGRMYWJlbDogc3RyaW5nO1xyXG4gIHB1YmxpYyB1c2VyTmFtZTogc3RyaW5nO1xyXG4gIHB1YmxpYyBwYWdlVGl0bGU6IHN0cmluZyA9ICcnO1xyXG4gIHB1YmxpYyBQYWdlQ291bnQ6IG51bWJlciA9IDEyO1xyXG4gIGNvbnN0cnVjdG9yKGluamVjdG9yOiBJbmplY3Rvcikge1xyXG4gICAgdGhpcy51dGlsaXR5U2VydmljZSA9IGluamVjdG9yLmdldChVdGlsaXR5U2VydmljZSk7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5ID0gaW5qZWN0b3IuZ2V0KENvbnRyb2xVdGlsaXR5KTtcclxuICAgIHRoaXMuY29uZmlndXJhdGlvblNlcnZpY2UgPSBpbmplY3Rvci5nZXQoQ29uZmlndXJhdGlvblNlcnZpY2UpO1xyXG4gICAgdGhpcy5lbnZpcm9ubWVudFNlcnZpY2UgPSBpbmplY3Rvci5nZXQoRW52aXJvbm1lbnRTZXJ2aWNlKTtcclxuICAgIHRoaXMubW9kYWxTZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KE5nYk1vZGFsKTtcclxuICAgIHRoaXMudGl0bGVTZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KFRpdGxlKTtcclxuICAgIHRoaXMuYXVoU2VydmljZSA9IGluamVjdG9yLmdldChBdXRoU2VydmljZSk7XHJcbiAgICB0aGlzLmV4cG9ydExhYmVsID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdFeHBvcnQnKTtcclxuICAgIHRoaXMuZmlsdGVyc0xhYmVsID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdGaWx0ZXJzJyk7XHJcbiAgICB0aGlzLmFkZExhYmVsID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdBZGQnKTtcclxuICAgIHRoaXMudXNlck5hbWUgPSB0aGlzLmF1aFNlcnZpY2UubmFtZSgpO1xyXG4gICAgdGhpcy5pc0VOID0gdGhpcy51dGlsaXR5U2VydmljZS5pc0N1cnJlbnRMYW5ndWFnZUVuZ2xpc2goKTtcclxuICB9XHJcbiAgdXBkYXRlUGFnZVRpdGxlKHRpdGxlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcclxuICAgIHRoaXMudGl0bGVTZXJ2aWNlLnNldFRpdGxlKHRoaXMuY2FsY3VsYXRlUGFnZVRpdGxlKHRpdGxlKSk7XHJcbiAgfVxyXG5cclxuICBsKGtleTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoa2V5KTtcclxuICB9XHJcbiAgZ2V0Q29uZmlndXJhdGlvblZhbHVlKGtleTogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jb25maWd1cmF0aW9uU2VydmljZS5nZXRDb25maWd1cmF0aW9uVmFsdWUoa2V5KTtcclxuICB9XHJcbiAgZ2V0TGFuZ3VhZ2VNb2RlVmFsdWUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jb25maWd1cmF0aW9uU2VydmljZS5nZXRDb25maWd1cmF0aW9uVmFsdWUoJ0xhbmd1YWdlTW9kZScpO1xyXG4gIH1cclxuICBzdG9wQmxvY2tVSSgpIHtcclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RvcEJsb2NrVUkoKTtcclxuICB9XHJcblxyXG4gIHN0YXJ0QmxvY2tVSSgpIHtcclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RhcnRCbG9ja1VJKCk7XHJcbiAgfVxyXG5cclxuICBvcGVuTW9kYWwobW9kYWw6IGFueSwgc2l6ZT86IHN0cmluZykge1xyXG4gICAgaWYgKHNpemUpXHJcbiAgICAgIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4obW9kYWwsIHtcclxuICAgICAgICBzaXplOiBzaXplLFxyXG4gICAgICAgIGJhY2tkcm9wOiAnc3RhdGljJyxcclxuICAgICAgICBrZXlib2FyZDogZmFsc2UsXHJcbiAgICAgIH0pO1xyXG4gICAgZWxzZSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKG1vZGFsLCB7IGJhY2tkcm9wOiAnc3RhdGljJywga2V5Ym9hcmQ6IGZhbHNlIH0pO1xyXG4gIH1cclxuXHJcbiAgZG93bmxvYWQoZmlsZURUTzogYW55LCBmaWxlTmFtZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAvKmxldCBibG9iID0gbmV3IEJsb2IoW2ZpbGVdKTsqL1xyXG4gICAgbGV0IGZpbGUgPSBuZXcgQmxvYihbZmlsZURUT10sIHtcclxuICAgICAgdHlwZTogJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0JyxcclxuICAgIH0pO1xyXG4gICAgc2F2ZUFzKGZpbGUsIGZpbGVOYW1lKTtcclxuICB9XHJcblxyXG4gIGRvd25sb2FkUERGKGZpbGVEVE86IGFueSwgZmlsZU5hbWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgbGV0IGZpbGUgPSBuZXcgQmxvYihbZmlsZURUT10sIHsgdHlwZTogXCJhcHBsaWNhdGlvbi9wZGZcIiB9KTtcclxuICAgIHNhdmVBcyhmaWxlLCBmaWxlTmFtZSk7XHJcbiAgfVxyXG4gIGRvd25sb2FkV29yZChmaWxlRFRPOiBhbnksIGZpbGVOYW1lOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGxldCBmaWxlID0gbmV3IEJsb2IoW2ZpbGVEVE9dLCB7IHR5cGU6IFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwuZG9jdW1lbnRcIiB9KTtcclxuICAgIHNhdmVBcyhmaWxlLCBmaWxlTmFtZSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgcHJpdmF0ZSBiYXNlNjR0b0Jsb2IoYmFzZTY0RGF0YSwgY29udGVudFR5cGUpIHtcclxuICAgIGNvbnRlbnRUeXBlID0gY29udGVudFR5cGUgfHwgJyc7XHJcbiAgICB2YXIgc2xpY2VTaXplID0gMTAyNDtcclxuICAgIHZhciBieXRlQ2hhcmFjdGVycyA9IGF0b2IoYmFzZTY0RGF0YSk7XHJcbiAgICB2YXIgYnl0ZXNMZW5ndGggPSBieXRlQ2hhcmFjdGVycy5sZW5ndGg7XHJcbiAgICB2YXIgc2xpY2VzQ291bnQgPSBNYXRoLmNlaWwoYnl0ZXNMZW5ndGggLyBzbGljZVNpemUpO1xyXG4gICAgdmFyIGJ5dGVBcnJheXMgPSBuZXcgQXJyYXkoc2xpY2VzQ291bnQpO1xyXG5cclxuICAgIGZvciAodmFyIHNsaWNlSW5kZXggPSAwOyBzbGljZUluZGV4IDwgc2xpY2VzQ291bnQ7ICsrc2xpY2VJbmRleCkge1xyXG4gICAgICB2YXIgYmVnaW4gPSBzbGljZUluZGV4ICogc2xpY2VTaXplO1xyXG4gICAgICB2YXIgZW5kID0gTWF0aC5taW4oYmVnaW4gKyBzbGljZVNpemUsIGJ5dGVzTGVuZ3RoKTtcclxuXHJcbiAgICAgIHZhciBieXRlcyA9IG5ldyBBcnJheShlbmQgLSBiZWdpbik7XHJcbiAgICAgIGZvciAodmFyIG9mZnNldCA9IGJlZ2luLCBpID0gMDsgb2Zmc2V0IDwgZW5kOyArK2ksICsrb2Zmc2V0KSB7XHJcbiAgICAgICAgYnl0ZXNbaV0gPSBieXRlQ2hhcmFjdGVyc1tvZmZzZXRdLmNoYXJDb2RlQXQoMCk7XHJcbiAgICAgIH1cclxuICAgICAgYnl0ZUFycmF5c1tzbGljZUluZGV4XSA9IG5ldyBVaW50OEFycmF5KGJ5dGVzKTtcclxuICAgIH1cclxuICAgIHJldHVybiBuZXcgQmxvYihieXRlQXJyYXlzLCB7IHR5cGU6IGNvbnRlbnRUeXBlIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjYWxjdWxhdGVQYWdlVGl0bGUodGl0bGU6IHN0cmluZyB8IHVuZGVmaW5lZCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGl0bGVcclxuICAgICAgPyB0aXRsZS5zdWJzdHJpbmcoMCwgMTAwKSArIGAgfCAke3RoaXMubCgnQXBwbGljYXRpb25OYW1lJyl9YFxyXG4gICAgICA6IGAke3RoaXMubCgnQXBwbGljYXRpb25OYW1lJyl9YDtcclxuICB9XHJcblxyXG4gIGdldFBhZ2luZ0ZpbHRlcnNWYWx1ZXMoZm9ybTogRm9ybUdyb3VwLCBmaWx0ZXJzOiBGaWx0ZXJJdGVtW10pOiBhbnkge1xyXG4gICAgbGV0IG1vZGVsID0gbmV3IE9iamVjdCgpO1xyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmaWx0ZXJzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCBmaWx0ZXJJdGVtID0gZmlsdGVyc1tpXTtcclxuICAgICAgaWYgKGZvcm0uY29udHJvbHNbZmlsdGVySXRlbS5Gb3JtQ29udHJvbE5hbWVdLnZhbHVlID09IHVuZGVmaW5lZClcclxuICAgICAgICBjb250aW51ZTtcclxuICAgICAgbW9kZWxbZmlsdGVySXRlbS5BY3Rpb25QYXJhbWV0ZXJOYW1lXSA9XHJcbiAgICAgICAgZm9ybS5jb250cm9sc1tmaWx0ZXJJdGVtLkZvcm1Db250cm9sTmFtZV0udmFsdWUgPT0gdW5kZWZpbmVkXHJcbiAgICAgICAgICA/ICcnXHJcbiAgICAgICAgICA6IGZvcm0uY29udHJvbHNbZmlsdGVySXRlbS5Gb3JtQ29udHJvbE5hbWVdLnZhbHVlO1xyXG4gICAgICAvLyBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKGZpbHRlckl0ZW0uQWN0aW9uUGFyYW1ldGVyTmFtZSwgZm9ybS5jb250cm9sc1tmaWx0ZXJJdGVtLkZvcm1Db250cm9sTmFtZV0udmFsdWUgPT0gdW5kZWZpbmVkID8gJycgOiBmb3JtLmNvbnRyb2xzW2ZpbHRlckl0ZW0uRm9ybUNvbnRyb2xOYW1lXS52YWx1ZSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbW9kZWw7XHJcbiAgfVxyXG5cclxuICByZW1vdmVDb250cm9sKGNvbnRyb2xOYW1lOiBzdHJpbmcsIGZvcm06IEZvcm1Hcm91cCkge1xyXG4gICAgZm9ybS5yZW1vdmVDb250cm9sKGNvbnRyb2xOYW1lKTtcclxuICB9XHJcblxyXG4gIGNvcHlUb0NsaXBib2FyZCh2YWw6IHN0cmluZykge1xyXG4gICAgY29uc3Qgc2VsQm94ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGV4dGFyZWEnKTtcclxuICAgIHNlbEJveC5zdHlsZS5wb3NpdGlvbiA9ICdmaXhlZCc7XHJcbiAgICBzZWxCb3guc3R5bGUubGVmdCA9ICcwJztcclxuICAgIHNlbEJveC5zdHlsZS50b3AgPSAnMCc7XHJcbiAgICBzZWxCb3guc3R5bGUub3BhY2l0eSA9ICcwJztcclxuICAgIHNlbEJveC52YWx1ZSA9IHZhbDtcclxuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoc2VsQm94KTtcclxuICAgIHNlbEJveC5mb2N1cygpO1xyXG4gICAgc2VsQm94LnNlbGVjdCgpO1xyXG4gICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ2NvcHknKTtcclxuICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoc2VsQm94KTtcclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uubm90aWZ5U3VjY2Vzc01lc3NhZ2UodGhpcy5sKCdDb3BpZWRTdWNjZXNzZnVsbHknKSk7XHJcbiAgfVxyXG5cclxuICBhZGRSZXF1aXJlZFJ1bGUoY29udHJvbDogQWJzdHJhY3RDb250cm9sLCBjb250cm9sT3B0aW9uczogYW55KSB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LmFkZFJlcXVpcmVkVG9Db250cm9sKGNvbnRyb2wsIGNvbnRyb2xPcHRpb25zKTtcclxuICB9XHJcblxyXG4gIHJlbW92ZVJlcXVpcmVkUnVsZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsIGNvbnRyb2xPcHRpb25zOiBhbnkpIHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkucmVtb3ZlUmVxdWlyZWRGcm9tQ29udHJvbChjb250cm9sLCBjb250cm9sT3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICB2YWxpZGF0ZURhdGVzKFxyXG4gICAgZm9ybTogRm9ybUdyb3VwLFxyXG4gICAgZnJvbURhdGVDb250cm9sOiBzdHJpbmcsXHJcbiAgICB0b0RhdGVDb250cm9sOiBzdHJpbmcsXHJcbiAgICB2YWxpZGF0aW9uTWVzc2FnZUtleTogc3RyaW5nXHJcbiAgKTogQ3VzdG9tVmFsaWRhdGlvbiB7XHJcbiAgICB2YXIgdmFsaWRhdG9yID0gbmV3IEN1c3RvbVZhbGlkYXRpb24oKTtcclxuICAgIHZhbGlkYXRvci5mdW5jdGlvbkJvZHkgPSAoY29udHJvbCkgPT4ge1xyXG4gICAgICBsZXQgZnJvbURhdGUgPSBmb3JtLmNvbnRyb2xzW2Zyb21EYXRlQ29udHJvbF0udmFsdWU7XHJcbiAgICAgIGxldCB0b0RhdGUgPSBmb3JtLmNvbnRyb2xzW3RvRGF0ZUNvbnRyb2xdLnZhbHVlO1xyXG5cclxuICAgICAgaWYgKGZyb21EYXRlICYmIHRvRGF0ZSAmJiB0b0RhdGUgPD0gZnJvbURhdGUpXHJcbiAgICAgICAgcmV0dXJuIHsgY3VzdG9tZXJFcnJvcjogdHJ1ZSB9O1xyXG5cclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9O1xyXG4gICAgdmFsaWRhdG9yLm1hc3NhZ2UgPSB0aGlzLmwodmFsaWRhdGlvbk1lc3NhZ2VLZXkpO1xyXG4gICAgcmV0dXJuIHZhbGlkYXRvcjtcclxuICB9XHJcblxyXG4gIG9uU3VjY2Vzc0FkZEhhbmRsZXIgPSAoc3VjY2VzczogYW55KSA9PiB7XHJcbiAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLm5vdGlmeVN1Y2Nlc3NNZXNzYWdlKFxyXG4gICAgICB0aGlzLmwoJ1JlY29yZEFkZGVkJyksXHJcbiAgICAgIG51bGwsXHJcbiAgICAgIG51bGwsXHJcbiAgICAgIGZhbHNlXHJcbiAgICApO1xyXG4gIH07XHJcblxyXG4gIG9uU3VjY2Vzc0VkaXRIYW5kbGVyID0gKHN1Y2Nlc3M6IGFueSkgPT4ge1xyXG4gICAgdGhpcy51dGlsaXR5U2VydmljZS5ub3RpZnlTdWNjZXNzTWVzc2FnZShcclxuICAgICAgdGhpcy5sKCdSZWNvcmRVcGRhdGVkJyksXHJcbiAgICAgIG51bGwsXHJcbiAgICAgIG51bGwsXHJcbiAgICAgIGZhbHNlXHJcbiAgICApO1xyXG4gIH07XHJcblxyXG4gIG9uU3VjY2Vzc0RlbGV0ZUhhbmRsZXIgPSAoc3VjY2VzczogYW55KSA9PiB7XHJcbiAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLm5vdGlmeVN1Y2Nlc3NNZXNzYWdlKFxyXG4gICAgICB0aGlzLmwoJ1JlY29yZERlbGV0ZWQnKSxcclxuICAgICAgbnVsbCxcclxuICAgICAgbnVsbCxcclxuICAgICAgZmFsc2VcclxuICAgICk7XHJcbiAgfTtcclxuXHJcbiAgcmVjYWxjdWxhdGVQYWdlVGl0bGUoKSB7XHJcbiAgICB0aGlzLnRpdGxlU2VydmljZS5zZXRUaXRsZSh0aGlzLmNhbGN1bGF0ZVBhZ2VUaXRsZSgnJykpO1xyXG4gIH1cclxuXHJcbiAgaXNFbmdsaXNoKCkge1xyXG4gICAgcmV0dXJuIHRoaXMudXRpbGl0eVNlcnZpY2UuaXNDdXJyZW50TGFuZ3VhZ2VFbmdsaXNoKCk7XHJcbiAgfVxyXG5cclxuICBjYWxjdWxhdGVJbml0aWFscyhuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgbGV0IGxhbmd1YWdlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2xhbmd1YWdlJyk7XHJcbiAgICBsZXQgY3VycmVudFVzZXIgPSB0aGlzLmF1aFNlcnZpY2UudXNlci5wcm9maWxlO1xyXG4gICAgY29uc29sZS5sb2coY3VycmVudFVzZXIpO1xyXG4gICAgbGV0IHVzZXJOYW1lID1cclxuICAgICAgbGFuZ3VhZ2UgPT0gJ2VuJyA/IGN1cnJlbnRVc2VyLmdpdmVuX25hbWVFbiA6IGN1cnJlbnRVc2VyLmdpdmVuX25hbWVBcjtcclxuICAgIGlmIChjdXJyZW50VXNlcikge1xyXG4gICAgICBsZXQgZnVsbE5hbWUgPSB1c2VyTmFtZS5zcGxpdCgnICcpO1xyXG4gICAgICBsZXQgaW5pdGlhbHM6IHN0cmluZztcclxuICAgICAgaWYgKGZ1bGxOYW1lLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICBpZiAodGhpcy5pc0VOKVxyXG4gICAgICAgICAgaW5pdGlhbHMgPSBmdWxsTmFtZS5zaGlmdCgpLmNoYXJBdCgwKSArIGZ1bGxOYW1lLnBvcCgpLmNoYXJBdCgwKTtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICBpbml0aWFscyA9XHJcbiAgICAgICAgICAgIGZ1bGxOYW1lLnNoaWZ0KCkuY2hhckF0KDApICsgJyAnICsgZnVsbE5hbWUucG9wKCkuY2hhckF0KDApO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGluaXRpYWxzID0gZnVsbE5hbWUucG9wKCkuY2hhckF0KDApO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBpbml0aWFscy50b1VwcGVyQ2FzZSgpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuICcnO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q3VycmVudFVzZXJJbml0aWFscygpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuY2FsY3VsYXRlSW5pdGlhbHModGhpcy5hdWhTZXJ2aWNlLm5hbWUoKSk7XHJcbiAgfVxyXG5cclxuICBnZXRDdXJyZW50RmFpbE92ZXIodmFsOiBFbmdsaXNoQXJhYmljRFRPKTogc3RyaW5nIHtcclxuICAgIGlmICh0aGlzLmlzRW5nbGlzaCgpKSB7XHJcbiAgICAgIGlmICh2YWwuRW5nbGlzaCkgcmV0dXJuIHZhbC5FbmdsaXNoO1xyXG4gICAgICBlbHNlIHJldHVybiB2YWwuQXJhYmljO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHZhbC5BcmFiaWMpIHJldHVybiB2YWwuQXJhYmljO1xyXG4gICAgICBlbHNlIHJldHVybiB2YWwuRW5nbGlzaDtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICAvLyNyZWdpb24gdmFsaWRhdGlvbiBhY3Rpb25zXHJcblxyXG4gIGFkZFJlcXVpcmVkVmFsaWRhdGlvbihjdXN0b21Db250cm9sT3B0aW9uOiBhbnlbXSwgZm9ybTogRm9ybUdyb3VwLCBmb3JtT3B0aW9uczogRm9ybU9wdGlvbnMpOiB2b2lkIHtcclxuICAgIGN1c3RvbUNvbnRyb2xPcHRpb24uZm9yRWFjaChjb250cm9sID0+IHtcclxuICAgICAgaWYgKGZvcm0uZ2V0KGNvbnRyb2wuTmFtZSkpXHJcbiAgICAgICAgdGhpcy5hZGRSZXF1aXJlZFJ1bGUoZm9ybS5nZXQoY29udHJvbC5OYW1lKSwgZm9ybU9wdGlvbnMpO1xyXG4gICAgICBlbHNlXHJcbiAgICAgICAgY29udHJvbC5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlUmVxdWlyZWRWYWxpZGF0aW9uKGN1c3RvbUNvbnRyb2xPcHRpb246IGFueVtdLCBmb3JtOiBGb3JtR3JvdXAsIGZvcm1PcHRpb25zOiBGb3JtT3B0aW9ucyk6IHZvaWQge1xyXG4gICAgY3VzdG9tQ29udHJvbE9wdGlvbi5mb3JFYWNoKGNvbnRyb2wgPT4ge1xyXG4gICAgICBpZiAoZm9ybS5nZXQoY29udHJvbC5OYW1lKSlcclxuICAgICAgICB0aGlzLnJlbW92ZVJlcXVpcmVkUnVsZShmb3JtLmdldChjb250cm9sLk5hbWUpLCBmb3JtT3B0aW9ucyk7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICBjb250cm9sLklzUmVxdWlyZWQgPSBmYWxzZTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcmVzZXRGb3JtQ29udHJvbHNWYWx1ZShjdXN0b21Db250cm9sc09wdGlvbnM6IGFueVtdLCBmb3JtOiBGb3JtR3JvdXApOiB2b2lkIHtcclxuICAgIGN1c3RvbUNvbnRyb2xzT3B0aW9ucy5mb3JFYWNoKG9wdGlvbiA9PiB7XHJcbiAgICAgIGxldCBmb3JtQ29udHJvbCA9IGZvcm0uZ2V0KG9wdGlvbi5OYW1lKTtcclxuICAgICAgaWYgKGZvcm1Db250cm9sKVxyXG4gICAgICAgIGZvcm1Db250cm9sLnJlc2V0KCk7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG59XHJcbiJdfQ==