@senior-gestao-pessoas/payroll-core 8.7.0 → 9.0.0

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 (872) hide show
  1. package/bundles/senior-gestao-pessoas-payroll-core.umd.js +3024 -10904
  2. package/bundles/senior-gestao-pessoas-payroll-core.umd.js.map +1 -1
  3. package/bundles/senior-gestao-pessoas-payroll-core.umd.min.js +1 -1
  4. package/bundles/senior-gestao-pessoas-payroll-core.umd.min.js.map +1 -1
  5. package/components/workstationgroup-lookup/autocomplete.service.d.ts +31 -0
  6. package/esm2015/components/admission-draft-summary/admission-draft-summary.component.js +106 -0
  7. package/esm2015/components/admission-draft-summary/admission-draft-summary.module.js +17 -0
  8. package/esm2015/components/admission-draft-summary/admission-draft-summary.service.js +27 -0
  9. package/esm2015/components/admission-draft-summary/index.js +4 -0
  10. package/esm2015/components/block-ui/block-ui.component.js +19 -0
  11. package/esm2015/components/block-ui/block-ui.module.js +25 -0
  12. package/esm2015/components/block-ui/index.js +3 -0
  13. package/esm2015/components/breadcrumb/breadcrumb.component.js +76 -0
  14. package/esm2015/components/breadcrumb/breadcrumb.module.js +25 -0
  15. package/esm2015/components/breadcrumb/index.js +3 -0
  16. package/esm2015/components/control-messages-error/control-messages-error.component.js +28 -0
  17. package/esm2015/components/control-messages-error/control-messages-error.module.js +17 -0
  18. package/esm2015/components/control-messages-error/index.js +3 -0
  19. package/esm2015/components/custom-fields/custom-fields.component.js +32 -0
  20. package/esm2015/components/custom-fields/custom-fields.module.js +31 -0
  21. package/esm2015/components/custom-fields/index.js +3 -0
  22. package/esm2015/components/data-list/data-list.component.js +305 -0
  23. package/esm2015/components/data-list/data-list.module.js +28 -0
  24. package/esm2015/components/data-list/data-list.service.js +19 -0
  25. package/esm2015/components/data-list/entity-odata-response.js +26 -0
  26. package/esm2015/components/data-list/index.js +2 -0
  27. package/esm2015/components/data-list-rest/data-list-rest.component.js +239 -0
  28. package/esm2015/components/data-list-rest/data-list-rest.module.js +28 -0
  29. package/esm2015/components/data-list-rest/data-list-rest.service.js +19 -0
  30. package/esm2015/components/data-list-rest/index.js +2 -0
  31. package/esm2015/components/directives/directives.module.js +17 -0
  32. package/esm2015/components/directives/index.js +4 -0
  33. package/esm2015/components/directives/name-not-spaces.directive.js +31 -0
  34. package/esm2015/components/directives/only-number.directive.js +41 -0
  35. package/esm2015/components/employee-selector/employee-selector.component.js +65 -0
  36. package/esm2015/components/employee-selector/employee-selector.module.js +18 -0
  37. package/esm2015/components/employee-selector/index.js +3 -0
  38. package/esm2015/components/employee-summary/employee-summary.component.js +108 -0
  39. package/esm2015/components/employee-summary/employee-summary.module.js +17 -0
  40. package/esm2015/components/employee-summary/employee-summary.service.js +33 -0
  41. package/esm2015/components/employee-summary/index.js +4 -0
  42. package/esm2015/components/error-page/error-page.component.js +15 -0
  43. package/esm2015/components/error-page/error-page.module.js +16 -0
  44. package/esm2015/components/error-page/index.js +3 -0
  45. package/esm2015/components/field-validator/field-validator.component.js +40 -0
  46. package/esm2015/components/field-validator/field-validator.module.js +18 -0
  47. package/esm2015/components/field-validator/index.js +3 -0
  48. package/esm2015/components/file-upload/file-upload.component.js +135 -0
  49. package/esm2015/components/file-upload/file-upload.module.js +19 -0
  50. package/esm2015/components/file-upload/file-upload.service.js +44 -0
  51. package/esm2015/components/file-upload/index.js +3 -0
  52. package/esm2015/components/from-to/from-to.component.js +16 -0
  53. package/esm2015/components/from-to/from-to.module.js +19 -0
  54. package/esm2015/components/from-to/index.js +3 -0
  55. package/esm2015/components/historical-bank-account/historical-bank-account-form/historical-bank-account-form.component.js +332 -0
  56. package/esm2015/components/historical-bank-account/historical-bank-account.component.js +329 -0
  57. package/esm2015/components/historical-bank-account/historical-bank-account.module.js +56 -0
  58. package/esm2015/components/historical-bank-account/historical-bank-account.service.js +20 -0
  59. package/esm2015/components/historical-bank-account/index.js +4 -0
  60. package/esm2015/components/historical-bank-account-list/historical-bank-account-list.component.js +223 -0
  61. package/esm2015/components/historical-bank-account-list/historical-bank-account-list.module.js +39 -0
  62. package/esm2015/components/historical-bank-account-list/historical-bank-account-list.service.js +35 -0
  63. package/esm2015/components/historical-bank-account-list/index.js +4 -0
  64. package/esm2015/components/image-cropper/image-crop.component.js +146 -0
  65. package/esm2015/components/image-cropper/image-crop.module.js +39 -0
  66. package/esm2015/components/image-cropper/image-crop.service.js +88 -0
  67. package/esm2015/components/image-cropper/index.js +4 -0
  68. package/esm2015/components/input-date/index.js +3 -0
  69. package/esm2015/components/input-date/input-date.component.js +115 -0
  70. package/esm2015/components/input-date/input-date.module.js +17 -0
  71. package/esm2015/components/input-date-model/index.js +3 -0
  72. package/esm2015/components/input-date-model/input-date-model.component.js +100 -0
  73. package/esm2015/components/input-date-model/input-date-model.module.js +17 -0
  74. package/esm2015/components/input-rest-auto-complete/index.js +4 -0
  75. package/esm2015/components/input-rest-auto-complete/input-rest-auto-complete.component.js +303 -0
  76. package/esm2015/components/input-rest-auto-complete/input-rest-auto-complete.module.js +21 -0
  77. package/esm2015/components/input-rest-auto-complete/input-rest-auto-complete.service.js +20 -0
  78. package/esm2015/components/input-rest-auto-complete-employee/index.js +3 -0
  79. package/esm2015/components/input-rest-auto-complete-employee/input-rest-auto-complete-employee.component.js +190 -0
  80. package/esm2015/components/input-rest-auto-complete-employee/input-rest-auto-complete-employee.module.js +28 -0
  81. package/esm2015/components/input-rest-auto-complete-employee/input-rest-auto-complete-employee.service.js +20 -0
  82. package/esm2015/components/input-rest-auto-complete-employee-model/index.js +3 -0
  83. package/esm2015/components/input-rest-auto-complete-employee-model/input-rest-auto-complete-employee-model.component.js +179 -0
  84. package/esm2015/components/input-rest-auto-complete-employee-model/input-rest-auto-complete-employee-model.module.js +28 -0
  85. package/esm2015/components/input-rest-auto-complete-employee-model/input-rest-auto-complete-employee-model.service.js +20 -0
  86. package/esm2015/components/input-rest-auto-complete-enum/index.js +4 -0
  87. package/esm2015/components/input-rest-auto-complete-enum/input-rest-auto-complete-enum.component.js +146 -0
  88. package/esm2015/components/input-rest-auto-complete-enum/input-rest-auto-complete-enum.module.js +28 -0
  89. package/esm2015/components/input-rest-auto-complete-enum/input-rest-auto-complete-enum.service.js +23 -0
  90. package/esm2015/components/input-rest-auto-complete-jobposition/index.js +4 -0
  91. package/esm2015/components/input-rest-auto-complete-jobposition/input-rest-auto-complete-jobposition.component.js +173 -0
  92. package/esm2015/components/input-rest-auto-complete-jobposition/input-rest-auto-complete-jobposition.module.js +28 -0
  93. package/esm2015/components/input-rest-auto-complete-jobposition/input-rest-auto-complete-jobposition.service.js +20 -0
  94. package/esm2015/components/input-rest-auto-complete-model/index.js +3 -0
  95. package/esm2015/components/input-rest-auto-complete-model/input-rest-auto-complete-model.component.js +227 -0
  96. package/esm2015/components/input-rest-auto-complete-model/input-rest-auto-complete-model.module.js +28 -0
  97. package/esm2015/components/input-rest-auto-complete-model/input-rest-auto-complete-model.service.js +20 -0
  98. package/esm2015/components/input-rest-auto-complete-model-enum/index.js +3 -0
  99. package/esm2015/components/input-rest-auto-complete-model-enum/input-rest-auto-complete-model-enum.component.js +124 -0
  100. package/esm2015/components/input-rest-auto-complete-model-enum/input-rest-auto-complete-model-enum.module.js +28 -0
  101. package/esm2015/components/input-rest-auto-complete-model-enum/input-rest-auto-complete-model-enum.service.js +23 -0
  102. package/esm2015/components/list-rest/index.js +3 -0
  103. package/esm2015/components/list-rest/list-rest.component.js +117 -0
  104. package/esm2015/components/list-rest/list-rest.module.js +33 -0
  105. package/esm2015/components/list-rest/list-rest.service.js +23 -0
  106. package/esm2015/components/lookup/index.js +2 -0
  107. package/esm2015/components/lookup/lookup.component.js +324 -0
  108. package/esm2015/components/lookup/lookup.module.js +20 -0
  109. package/esm2015/components/lookup/lookup.service.js +52 -0
  110. package/esm2015/components/shared/http-client.service.js +165 -0
  111. package/esm2015/components/shared/shared.module.js +21 -0
  112. package/esm2015/components/spinner/index.js +3 -0
  113. package/esm2015/components/spinner/spinner-loader.component.js +12 -0
  114. package/esm2015/components/spinner/spinner-loader.module.js +23 -0
  115. package/esm2015/components/toast/index.js +4 -0
  116. package/esm2015/components/toast/toast.component.js +88 -0
  117. package/esm2015/components/toast/toast.module.js +20 -0
  118. package/esm2015/components/toast/toast.service.js +42 -0
  119. package/esm2015/components/type-admission/index.js +3 -0
  120. package/esm2015/components/type-admission/type-admission.module.js +14 -0
  121. package/esm2015/components/type-admission/type-admission.services.js +62 -0
  122. package/esm2015/components/utils/cnpj-validator.js +62 -0
  123. package/esm2015/components/utils/cpf-validator.js +45 -0
  124. package/esm2015/components/utils/date-validator/date-validators.js +144 -0
  125. package/esm2015/components/utils/helpers.js +476 -0
  126. package/esm2015/components/utils/validations.js +127 -0
  127. package/esm2015/components/vanilla/string-methods.js +22 -0
  128. package/esm2015/components/workstationgroup-lookup/autocomplete.service.js +111 -0
  129. package/esm2015/components/workstationgroup-lookup/index.js +3 -0
  130. package/esm2015/components/workstationgroup-lookup/lookup.service.js +142 -0
  131. package/esm2015/components/workstationgroup-lookup/workstationgroup-lookup.component.js +587 -0
  132. package/esm2015/components/workstationgroup-lookup/workstationgroup-lookup.dto.js +48 -0
  133. package/esm2015/components/workstationgroup-lookup/workstationgroup-lookup.module.js +21 -0
  134. package/esm2015/core/entities/entity-odata-parameter.js +33 -0
  135. package/esm2015/core/entities/index.js +2 -0
  136. package/esm2015/core/enums/companyIndicationType.js +18 -0
  137. package/esm2015/core/enums/comparetype.enumeration.js +14 -0
  138. package/esm2015/core/enums/coreFieldType.js +5 -0
  139. package/esm2015/core/enums/direction.enumeration.js +6 -0
  140. package/esm2015/core/enums/httpRequestType.js +6 -0
  141. package/esm2015/core/enums/index.js +14 -0
  142. package/esm2015/core/enums/menu-type.enumeration.js +6 -0
  143. package/esm2015/core/enums/moduleType.js +22 -0
  144. package/esm2015/core/enums/operators.enumeration.js +14 -0
  145. package/esm2015/core/enums/parameter-type.enumeration.js +12 -0
  146. package/esm2015/core/enums/report-format.enumeration.js +12 -0
  147. package/esm2015/core/enums/report-stage.enumeration.js +12 -0
  148. package/esm2015/core/enums/serviceType.js +9 -0
  149. package/esm2015/core/enums/usingType.js +42 -0
  150. package/esm2015/core/interfaces/date-compare-options.js +1 -0
  151. package/esm2015/core/interfaces/date-validate-options.js +1 -0
  152. package/esm2015/core/interfaces/field-validators-object.js +1 -0
  153. package/esm2015/core/interfaces/index.js +1 -0
  154. package/esm2015/core/interfaces/pagination-data.js +1 -0
  155. package/esm2015/core/interfaces/report/domain-service.interface.js +1 -0
  156. package/esm2015/core/interfaces/report/generation-status.interface.js +1 -0
  157. package/esm2015/core/interfaces/report/get-parameters-out.interface.js +1 -0
  158. package/esm2015/core/interfaces/report/index.js +1 -0
  159. package/esm2015/core/interfaces/report/lookup-parameter.interface.js +1 -0
  160. package/esm2015/core/interfaces/report/parameter-def.interface.js +1 -0
  161. package/esm2015/core/interfaces/report/parameter-value.interface.js +1 -0
  162. package/esm2015/core/interfaces/report/report-header.interface.js +1 -0
  163. package/esm2015/core/interfaces/report/report-in.interface.js +1 -0
  164. package/esm2015/core/interfaces/report/report-menu.interface.js +1 -0
  165. package/esm2015/core/interfaces/report/report-out.interface.js +1 -0
  166. package/esm2015/core/interfaces/report/report.interface.js +1 -0
  167. package/esm2015/public_api.js +52 -58
  168. package/esm2015/senior-gestao-pessoas-payroll-core.js +19 -24
  169. package/esm2015/services/autocomplete-parameters.service.js +116 -0
  170. package/esm2015/services/company-indications.service.js +42 -0
  171. package/esm2015/services/form-comparator.service.js +99 -0
  172. package/esm2015/services/integration.service.js +19 -0
  173. package/esm2015/services/lookup-parameters.service.js +345 -0
  174. package/esm2015/services/permissions.service.js +89 -0
  175. package/esm2015/services/report.service.js +109 -0
  176. package/esm2015/services/services.module.js +29 -0
  177. package/esm2015/services/workflow-data.service.js +26 -0
  178. package/esm2015/services/workflow-integrator.service.js +248 -0
  179. package/esm5/components/admission-draft-summary/admission-draft-summary.component.js +109 -0
  180. package/esm5/components/admission-draft-summary/admission-draft-summary.module.js +20 -0
  181. package/esm5/components/admission-draft-summary/admission-draft-summary.service.js +28 -0
  182. package/esm5/components/admission-draft-summary/index.js +4 -0
  183. package/esm5/components/block-ui/block-ui.component.js +22 -0
  184. package/esm5/components/block-ui/block-ui.module.js +28 -0
  185. package/esm5/components/block-ui/index.js +3 -0
  186. package/esm5/components/breadcrumb/breadcrumb.component.js +79 -0
  187. package/esm5/components/breadcrumb/breadcrumb.module.js +28 -0
  188. package/esm5/components/breadcrumb/index.js +3 -0
  189. package/esm5/components/control-messages-error/control-messages-error.component.js +34 -0
  190. package/esm5/components/control-messages-error/control-messages-error.module.js +20 -0
  191. package/esm5/components/control-messages-error/index.js +3 -0
  192. package/esm5/components/custom-fields/custom-fields.component.js +33 -0
  193. package/esm5/components/custom-fields/custom-fields.module.js +34 -0
  194. package/esm5/components/custom-fields/index.js +3 -0
  195. package/esm5/components/data-list/data-list.component.js +338 -0
  196. package/esm5/components/data-list/data-list.module.js +31 -0
  197. package/esm5/components/data-list/data-list.service.js +20 -0
  198. package/esm5/components/data-list/entity-odata-response.js +40 -0
  199. package/esm5/components/data-list/index.js +2 -0
  200. package/esm5/components/data-list-rest/data-list-rest.component.js +264 -0
  201. package/esm5/components/data-list-rest/data-list-rest.module.js +31 -0
  202. package/esm5/components/data-list-rest/data-list-rest.service.js +20 -0
  203. package/esm5/components/data-list-rest/index.js +2 -0
  204. package/esm5/components/directives/directives.module.js +20 -0
  205. package/esm5/components/directives/index.js +4 -0
  206. package/esm5/components/directives/name-not-spaces.directive.js +32 -0
  207. package/esm5/components/directives/only-number.directive.js +42 -0
  208. package/esm5/components/employee-selector/employee-selector.component.js +75 -0
  209. package/esm5/components/employee-selector/employee-selector.module.js +21 -0
  210. package/esm5/components/employee-selector/index.js +3 -0
  211. package/esm5/components/employee-summary/employee-summary.component.js +111 -0
  212. package/esm5/components/employee-summary/employee-summary.module.js +20 -0
  213. package/esm5/components/employee-summary/employee-summary.service.js +34 -0
  214. package/esm5/components/employee-summary/index.js +4 -0
  215. package/esm5/components/error-page/error-page.component.js +17 -0
  216. package/esm5/components/error-page/error-page.module.js +19 -0
  217. package/esm5/components/error-page/index.js +3 -0
  218. package/esm5/components/field-validator/field-validator.component.js +42 -0
  219. package/esm5/components/field-validator/field-validator.module.js +21 -0
  220. package/esm5/components/field-validator/index.js +3 -0
  221. package/esm5/components/file-upload/file-upload.component.js +138 -0
  222. package/esm5/components/file-upload/file-upload.module.js +22 -0
  223. package/esm5/components/file-upload/file-upload.service.js +45 -0
  224. package/esm5/components/file-upload/index.js +3 -0
  225. package/esm5/components/from-to/from-to.component.js +18 -0
  226. package/esm5/components/from-to/from-to.module.js +22 -0
  227. package/esm5/components/from-to/index.js +3 -0
  228. package/esm5/components/historical-bank-account/historical-bank-account-form/historical-bank-account-form.component.js +353 -0
  229. package/esm5/components/historical-bank-account/historical-bank-account.component.js +363 -0
  230. package/esm5/components/historical-bank-account/historical-bank-account.module.js +59 -0
  231. package/esm5/components/historical-bank-account/historical-bank-account.service.js +22 -0
  232. package/esm5/components/historical-bank-account/index.js +4 -0
  233. package/esm5/components/historical-bank-account-list/historical-bank-account-list.component.js +243 -0
  234. package/esm5/components/historical-bank-account-list/historical-bank-account-list.module.js +42 -0
  235. package/esm5/components/historical-bank-account-list/historical-bank-account-list.service.js +37 -0
  236. package/esm5/components/historical-bank-account-list/index.js +4 -0
  237. package/esm5/components/image-cropper/image-crop.component.js +164 -0
  238. package/esm5/components/image-cropper/image-crop.module.js +41 -0
  239. package/esm5/components/image-cropper/image-crop.service.js +106 -0
  240. package/esm5/components/image-cropper/index.js +4 -0
  241. package/esm5/components/input-date/index.js +3 -0
  242. package/esm5/components/input-date/input-date.component.js +129 -0
  243. package/esm5/components/input-date/input-date.module.js +20 -0
  244. package/esm5/components/input-date-model/index.js +3 -0
  245. package/esm5/components/input-date-model/input-date-model.component.js +110 -0
  246. package/esm5/components/input-date-model/input-date-model.module.js +20 -0
  247. package/esm5/components/input-rest-auto-complete/index.js +4 -0
  248. package/esm5/components/input-rest-auto-complete/input-rest-auto-complete.component.js +317 -0
  249. package/esm5/components/input-rest-auto-complete/input-rest-auto-complete.module.js +24 -0
  250. package/esm5/components/input-rest-auto-complete/input-rest-auto-complete.service.js +22 -0
  251. package/esm5/components/input-rest-auto-complete-employee/index.js +3 -0
  252. package/esm5/components/input-rest-auto-complete-employee/input-rest-auto-complete-employee.component.js +192 -0
  253. package/esm5/components/input-rest-auto-complete-employee/input-rest-auto-complete-employee.module.js +31 -0
  254. package/esm5/components/input-rest-auto-complete-employee/input-rest-auto-complete-employee.service.js +21 -0
  255. package/esm5/components/input-rest-auto-complete-employee-model/index.js +3 -0
  256. package/esm5/components/input-rest-auto-complete-employee-model/input-rest-auto-complete-employee-model.component.js +185 -0
  257. package/esm5/components/input-rest-auto-complete-employee-model/input-rest-auto-complete-employee-model.module.js +31 -0
  258. package/esm5/components/input-rest-auto-complete-employee-model/input-rest-auto-complete-employee-model.service.js +21 -0
  259. package/esm5/components/input-rest-auto-complete-enum/index.js +4 -0
  260. package/esm5/components/input-rest-auto-complete-enum/input-rest-auto-complete-enum.component.js +162 -0
  261. package/esm5/components/input-rest-auto-complete-enum/input-rest-auto-complete-enum.module.js +31 -0
  262. package/esm5/components/input-rest-auto-complete-enum/input-rest-auto-complete-enum.service.js +24 -0
  263. package/esm5/components/input-rest-auto-complete-jobposition/index.js +4 -0
  264. package/esm5/components/input-rest-auto-complete-jobposition/input-rest-auto-complete-jobposition.component.js +176 -0
  265. package/esm5/components/input-rest-auto-complete-jobposition/input-rest-auto-complete-jobposition.module.js +31 -0
  266. package/esm5/components/input-rest-auto-complete-jobposition/input-rest-auto-complete-jobposition.service.js +21 -0
  267. package/esm5/components/input-rest-auto-complete-model/index.js +3 -0
  268. package/esm5/components/input-rest-auto-complete-model/input-rest-auto-complete-model.component.js +234 -0
  269. package/esm5/components/input-rest-auto-complete-model/input-rest-auto-complete-model.module.js +31 -0
  270. package/esm5/components/input-rest-auto-complete-model/input-rest-auto-complete-model.service.js +22 -0
  271. package/esm5/components/input-rest-auto-complete-model-enum/index.js +3 -0
  272. package/esm5/components/input-rest-auto-complete-model-enum/input-rest-auto-complete-model-enum.component.js +130 -0
  273. package/esm5/components/input-rest-auto-complete-model-enum/input-rest-auto-complete-model-enum.module.js +31 -0
  274. package/esm5/components/input-rest-auto-complete-model-enum/input-rest-auto-complete-model-enum.service.js +24 -0
  275. package/esm5/components/list-rest/index.js +3 -0
  276. package/esm5/components/list-rest/list-rest.component.js +119 -0
  277. package/esm5/components/list-rest/list-rest.module.js +36 -0
  278. package/esm5/components/list-rest/list-rest.service.js +24 -0
  279. package/esm5/components/lookup/index.js +2 -0
  280. package/esm5/components/lookup/lookup.component.js +339 -0
  281. package/esm5/components/lookup/lookup.module.js +23 -0
  282. package/esm5/components/lookup/lookup.service.js +54 -0
  283. package/esm5/components/shared/http-client.service.js +179 -0
  284. package/esm5/components/shared/shared.module.js +22 -0
  285. package/esm5/components/spinner/index.js +3 -0
  286. package/esm5/components/spinner/spinner-loader.component.js +15 -0
  287. package/esm5/components/spinner/spinner-loader.module.js +26 -0
  288. package/esm5/components/toast/index.js +4 -0
  289. package/esm5/components/toast/toast.component.js +88 -0
  290. package/esm5/components/toast/toast.module.js +23 -0
  291. package/esm5/components/toast/toast.service.js +47 -0
  292. package/esm5/components/type-admission/index.js +3 -0
  293. package/esm5/components/type-admission/type-admission.module.js +17 -0
  294. package/esm5/components/type-admission/type-admission.services.js +75 -0
  295. package/esm5/components/utils/cnpj-validator.js +66 -0
  296. package/esm5/components/utils/cpf-validator.js +49 -0
  297. package/esm5/components/utils/date-validator/date-validators.js +149 -0
  298. package/esm5/components/utils/helpers.js +502 -0
  299. package/esm5/components/utils/validations.js +131 -0
  300. package/esm5/components/vanilla/string-methods.js +24 -0
  301. package/esm5/components/workstationgroup-lookup/autocomplete.service.js +124 -0
  302. package/esm5/components/workstationgroup-lookup/index.js +3 -0
  303. package/esm5/components/workstationgroup-lookup/lookup.service.js +147 -0
  304. package/esm5/components/workstationgroup-lookup/workstationgroup-lookup.component.js +609 -0
  305. package/esm5/components/workstationgroup-lookup/workstationgroup-lookup.dto.js +50 -0
  306. package/esm5/components/workstationgroup-lookup/workstationgroup-lookup.module.js +24 -0
  307. package/esm5/core/entities/entity-odata-parameter.js +47 -0
  308. package/esm5/core/entities/index.js +2 -0
  309. package/esm5/core/enums/companyIndicationType.js +18 -0
  310. package/esm5/core/enums/comparetype.enumeration.js +14 -0
  311. package/esm5/core/enums/coreFieldType.js +5 -0
  312. package/esm5/core/enums/direction.enumeration.js +6 -0
  313. package/esm5/core/enums/httpRequestType.js +6 -0
  314. package/esm5/core/enums/index.js +14 -0
  315. package/esm5/core/enums/menu-type.enumeration.js +6 -0
  316. package/esm5/core/enums/moduleType.js +22 -0
  317. package/esm5/core/enums/operators.enumeration.js +14 -0
  318. package/esm5/core/enums/parameter-type.enumeration.js +12 -0
  319. package/esm5/core/enums/report-format.enumeration.js +12 -0
  320. package/esm5/core/enums/report-stage.enumeration.js +12 -0
  321. package/esm5/core/enums/serviceType.js +9 -0
  322. package/esm5/core/enums/usingType.js +42 -0
  323. package/esm5/core/interfaces/date-compare-options.js +1 -0
  324. package/esm5/core/interfaces/date-validate-options.js +1 -0
  325. package/esm5/core/interfaces/field-validators-object.js +1 -0
  326. package/esm5/core/interfaces/index.js +1 -0
  327. package/esm5/core/interfaces/pagination-data.js +1 -0
  328. package/esm5/core/interfaces/report/domain-service.interface.js +1 -0
  329. package/esm5/core/interfaces/report/generation-status.interface.js +1 -0
  330. package/esm5/core/interfaces/report/get-parameters-out.interface.js +1 -0
  331. package/esm5/core/interfaces/report/index.js +1 -0
  332. package/esm5/core/interfaces/report/lookup-parameter.interface.js +1 -0
  333. package/esm5/core/interfaces/report/parameter-def.interface.js +1 -0
  334. package/esm5/core/interfaces/report/parameter-value.interface.js +1 -0
  335. package/esm5/core/interfaces/report/report-header.interface.js +1 -0
  336. package/esm5/core/interfaces/report/report-in.interface.js +1 -0
  337. package/esm5/core/interfaces/report/report-menu.interface.js +1 -0
  338. package/esm5/core/interfaces/report/report-out.interface.js +1 -0
  339. package/esm5/core/interfaces/report/report.interface.js +1 -0
  340. package/esm5/public_api.js +52 -58
  341. package/esm5/senior-gestao-pessoas-payroll-core.js +19 -24
  342. package/esm5/services/autocomplete-parameters.service.js +129 -0
  343. package/esm5/services/company-indications.service.js +43 -0
  344. package/esm5/services/form-comparator.service.js +119 -0
  345. package/esm5/services/integration.service.js +20 -0
  346. package/esm5/services/lookup-parameters.service.js +362 -0
  347. package/esm5/services/permissions.service.js +100 -0
  348. package/esm5/services/report.service.js +110 -0
  349. package/esm5/services/services.module.js +32 -0
  350. package/esm5/services/workflow-data.service.js +27 -0
  351. package/esm5/services/workflow-integrator.service.js +361 -0
  352. package/fesm2015/senior-gestao-pessoas-payroll-core.js +2939 -8866
  353. package/fesm2015/senior-gestao-pessoas-payroll-core.js.map +1 -1
  354. package/fesm5/senior-gestao-pessoas-payroll-core.js +2999 -10876
  355. package/fesm5/senior-gestao-pessoas-payroll-core.js.map +1 -1
  356. package/package.json +7 -1
  357. package/public_api.d.ts +52 -52
  358. package/senior-gestao-pessoas-payroll-core.d.ts +17 -17
  359. package/senior-gestao-pessoas-payroll-core.metadata.json +1 -1
  360. package/esm2015/lib/components/admission-draft-summary/admission-draft-summary.component.js +0 -203
  361. package/esm2015/lib/components/admission-draft-summary/admission-draft-summary.module.js +0 -20
  362. package/esm2015/lib/components/admission-draft-summary/admission-draft-summary.service.js +0 -59
  363. package/esm2015/lib/components/admission-draft-summary/index.js +0 -9
  364. package/esm2015/lib/components/block-ui/block-ui.component.js +0 -26
  365. package/esm2015/lib/components/block-ui/block-ui.module.js +0 -28
  366. package/esm2015/lib/components/block-ui/index.js +0 -8
  367. package/esm2015/lib/components/breadcrumb/breadcrumb.component.js +0 -151
  368. package/esm2015/lib/components/breadcrumb/breadcrumb.module.js +0 -28
  369. package/esm2015/lib/components/breadcrumb/index.js +0 -8
  370. package/esm2015/lib/components/control-messages-error/control-messages-error.component.js +0 -41
  371. package/esm2015/lib/components/control-messages-error/control-messages-error.module.js +0 -20
  372. package/esm2015/lib/components/control-messages-error/index.js +0 -8
  373. package/esm2015/lib/components/custom-fields/custom-fields.component.js +0 -65
  374. package/esm2015/lib/components/custom-fields/custom-fields.module.js +0 -34
  375. package/esm2015/lib/components/custom-fields/index.js +0 -8
  376. package/esm2015/lib/components/data-list/data-list.component.js +0 -456
  377. package/esm2015/lib/components/data-list/data-list.module.js +0 -31
  378. package/esm2015/lib/components/data-list/data-list.service.js +0 -38
  379. package/esm2015/lib/components/data-list/entity-odata-response.js +0 -72
  380. package/esm2015/lib/components/data-list/index.js +0 -7
  381. package/esm2015/lib/components/data-list-rest/data-list-rest.component.js +0 -354
  382. package/esm2015/lib/components/data-list-rest/data-list-rest.module.js +0 -31
  383. package/esm2015/lib/components/data-list-rest/data-list-rest.service.js +0 -38
  384. package/esm2015/lib/components/data-list-rest/index.js +0 -7
  385. package/esm2015/lib/components/directives/directives.module.js +0 -20
  386. package/esm2015/lib/components/directives/index.js +0 -9
  387. package/esm2015/lib/components/directives/name-not-spaces.directive.js +0 -59
  388. package/esm2015/lib/components/directives/only-number.directive.js +0 -60
  389. package/esm2015/lib/components/employee-selector/employee-selector.component.js +0 -145
  390. package/esm2015/lib/components/employee-selector/employee-selector.module.js +0 -21
  391. package/esm2015/lib/components/employee-selector/index.js +0 -8
  392. package/esm2015/lib/components/employee-summary/employee-summary.component.js +0 -200
  393. package/esm2015/lib/components/employee-summary/employee-summary.module.js +0 -20
  394. package/esm2015/lib/components/employee-summary/employee-summary.service.js +0 -74
  395. package/esm2015/lib/components/employee-summary/index.js +0 -9
  396. package/esm2015/lib/components/error-page/error-page.component.js +0 -23
  397. package/esm2015/lib/components/error-page/error-page.module.js +0 -19
  398. package/esm2015/lib/components/error-page/index.js +0 -8
  399. package/esm2015/lib/components/field-validator/field-validator.component.js +0 -64
  400. package/esm2015/lib/components/field-validator/field-validator.module.js +0 -21
  401. package/esm2015/lib/components/field-validator/index.js +0 -8
  402. package/esm2015/lib/components/file-upload/file-upload.component.js +0 -220
  403. package/esm2015/lib/components/file-upload/file-upload.module.js +0 -22
  404. package/esm2015/lib/components/file-upload/file-upload.service.js +0 -83
  405. package/esm2015/lib/components/file-upload/index.js +0 -8
  406. package/esm2015/lib/components/from-to/from-to.component.js +0 -25
  407. package/esm2015/lib/components/from-to/from-to.module.js +0 -22
  408. package/esm2015/lib/components/from-to/index.js +0 -8
  409. package/esm2015/lib/components/historical-bank-account/historical-bank-account-form/historical-bank-account-form.component.js +0 -514
  410. package/esm2015/lib/components/historical-bank-account/historical-bank-account.component.js +0 -542
  411. package/esm2015/lib/components/historical-bank-account/historical-bank-account.module.js +0 -59
  412. package/esm2015/lib/components/historical-bank-account/historical-bank-account.service.js +0 -40
  413. package/esm2015/lib/components/historical-bank-account/index.js +0 -9
  414. package/esm2015/lib/components/historical-bank-account-list/historical-bank-account-list.component.js +0 -359
  415. package/esm2015/lib/components/historical-bank-account-list/historical-bank-account-list.module.js +0 -42
  416. package/esm2015/lib/components/historical-bank-account-list/historical-bank-account-list.service.js +0 -62
  417. package/esm2015/lib/components/historical-bank-account-list/index.js +0 -9
  418. package/esm2015/lib/components/image-cropper/image-crop.component.js +0 -248
  419. package/esm2015/lib/components/image-cropper/image-crop.module.js +0 -38
  420. package/esm2015/lib/components/image-cropper/image-crop.service.js +0 -164
  421. package/esm2015/lib/components/image-cropper/index.js +0 -9
  422. package/esm2015/lib/components/input-date/index.js +0 -8
  423. package/esm2015/lib/components/input-date/input-date.component.js +0 -189
  424. package/esm2015/lib/components/input-date/input-date.module.js +0 -20
  425. package/esm2015/lib/components/input-date-model/index.js +0 -8
  426. package/esm2015/lib/components/input-date-model/input-date-model.component.js +0 -169
  427. package/esm2015/lib/components/input-date-model/input-date-model.module.js +0 -20
  428. package/esm2015/lib/components/input-rest-auto-complete/index.js +0 -9
  429. package/esm2015/lib/components/input-rest-auto-complete/input-rest-auto-complete.component.js +0 -444
  430. package/esm2015/lib/components/input-rest-auto-complete/input-rest-auto-complete.module.js +0 -24
  431. package/esm2015/lib/components/input-rest-auto-complete/input-rest-auto-complete.service.js +0 -40
  432. package/esm2015/lib/components/input-rest-auto-complete-employee/index.js +0 -8
  433. package/esm2015/lib/components/input-rest-auto-complete-employee/input-rest-auto-complete-employee.component.js +0 -263
  434. package/esm2015/lib/components/input-rest-auto-complete-employee/input-rest-auto-complete-employee.module.js +0 -31
  435. package/esm2015/lib/components/input-rest-auto-complete-employee/input-rest-auto-complete-employee.service.js +0 -40
  436. package/esm2015/lib/components/input-rest-auto-complete-employee-model/index.js +0 -8
  437. package/esm2015/lib/components/input-rest-auto-complete-employee-model/input-rest-auto-complete-employee-model.component.js +0 -253
  438. package/esm2015/lib/components/input-rest-auto-complete-employee-model/input-rest-auto-complete-employee-model.module.js +0 -31
  439. package/esm2015/lib/components/input-rest-auto-complete-employee-model/input-rest-auto-complete-employee-model.service.js +0 -40
  440. package/esm2015/lib/components/input-rest-auto-complete-enum/index.js +0 -9
  441. package/esm2015/lib/components/input-rest-auto-complete-enum/input-rest-auto-complete-enum.component.js +0 -209
  442. package/esm2015/lib/components/input-rest-auto-complete-enum/input-rest-auto-complete-enum.module.js +0 -31
  443. package/esm2015/lib/components/input-rest-auto-complete-enum/input-rest-auto-complete-enum.service.js +0 -44
  444. package/esm2015/lib/components/input-rest-auto-complete-jobposition/index.js +0 -9
  445. package/esm2015/lib/components/input-rest-auto-complete-jobposition/input-rest-auto-complete-jobposition.component.js +0 -254
  446. package/esm2015/lib/components/input-rest-auto-complete-jobposition/input-rest-auto-complete-jobposition.module.js +0 -31
  447. package/esm2015/lib/components/input-rest-auto-complete-jobposition/input-rest-auto-complete-jobposition.service.js +0 -40
  448. package/esm2015/lib/components/input-rest-auto-complete-model/index.js +0 -8
  449. package/esm2015/lib/components/input-rest-auto-complete-model/input-rest-auto-complete-model.component.js +0 -331
  450. package/esm2015/lib/components/input-rest-auto-complete-model/input-rest-auto-complete-model.module.js +0 -31
  451. package/esm2015/lib/components/input-rest-auto-complete-model/input-rest-auto-complete-model.service.js +0 -40
  452. package/esm2015/lib/components/input-rest-auto-complete-model-enum/index.js +0 -8
  453. package/esm2015/lib/components/input-rest-auto-complete-model-enum/input-rest-auto-complete-model-enum.component.js +0 -176
  454. package/esm2015/lib/components/input-rest-auto-complete-model-enum/input-rest-auto-complete-model-enum.module.js +0 -31
  455. package/esm2015/lib/components/input-rest-auto-complete-model-enum/input-rest-auto-complete-model-enum.service.js +0 -44
  456. package/esm2015/lib/components/list-rest/index.js +0 -8
  457. package/esm2015/lib/components/list-rest/list-rest.component.js +0 -192
  458. package/esm2015/lib/components/list-rest/list-rest.module.js +0 -36
  459. package/esm2015/lib/components/list-rest/list-rest.service.js +0 -48
  460. package/esm2015/lib/components/lookup/index.js +0 -7
  461. package/esm2015/lib/components/lookup/lookup.component.js +0 -471
  462. package/esm2015/lib/components/lookup/lookup.module.js +0 -23
  463. package/esm2015/lib/components/lookup/lookup.service.js +0 -91
  464. package/esm2015/lib/components/shared/http-client.service.js +0 -293
  465. package/esm2015/lib/components/shared/shared.module.js +0 -26
  466. package/esm2015/lib/components/spinner/index.js +0 -8
  467. package/esm2015/lib/components/spinner/spinner-loader.component.js +0 -15
  468. package/esm2015/lib/components/spinner/spinner-loader.module.js +0 -26
  469. package/esm2015/lib/components/toast/index.js +0 -9
  470. package/esm2015/lib/components/toast/toast.component.js +0 -156
  471. package/esm2015/lib/components/toast/toast.module.js +0 -23
  472. package/esm2015/lib/components/toast/toast.service.js +0 -76
  473. package/esm2015/lib/components/type-admission/index.js +0 -8
  474. package/esm2015/lib/components/type-admission/type-admission.module.js +0 -17
  475. package/esm2015/lib/components/type-admission/type-admission.services.js +0 -135
  476. package/esm2015/lib/components/utils/cnpj-validator.js +0 -82
  477. package/esm2015/lib/components/utils/cpf-validator.js +0 -76
  478. package/esm2015/lib/components/utils/date-validator/date-validators.js +0 -184
  479. package/esm2015/lib/components/utils/helpers.js +0 -737
  480. package/esm2015/lib/components/utils/validations.js +0 -237
  481. package/esm2015/lib/components/vanilla/string-methods.js +0 -37
  482. package/esm2015/lib/components/workstationgroup-lookup/autocomplete.service.js +0 -175
  483. package/esm2015/lib/components/workstationgroup-lookup/index.js +0 -8
  484. package/esm2015/lib/components/workstationgroup-lookup/lookup.service.js +0 -254
  485. package/esm2015/lib/components/workstationgroup-lookup/workstationgroup-lookup.component.js +0 -832
  486. package/esm2015/lib/components/workstationgroup-lookup/workstationgroup-lookup.dto.js +0 -193
  487. package/esm2015/lib/components/workstationgroup-lookup/workstationgroup-lookup.module.js +0 -24
  488. package/esm2015/lib/core/entities/entity-odata-parameter.js +0 -82
  489. package/esm2015/lib/core/entities/index.js +0 -7
  490. package/esm2015/lib/core/enums/companyIndicationType.js +0 -24
  491. package/esm2015/lib/core/enums/comparetype.enumeration.js +0 -16
  492. package/esm2015/lib/core/enums/coreFieldType.js +0 -11
  493. package/esm2015/lib/core/enums/direction.enumeration.js +0 -12
  494. package/esm2015/lib/core/enums/httpRequestType.js +0 -12
  495. package/esm2015/lib/core/enums/index.js +0 -19
  496. package/esm2015/lib/core/enums/menu-type.enumeration.js +0 -12
  497. package/esm2015/lib/core/enums/moduleType.js +0 -28
  498. package/esm2015/lib/core/enums/operators.enumeration.js +0 -20
  499. package/esm2015/lib/core/enums/parameter-type.enumeration.js +0 -18
  500. package/esm2015/lib/core/enums/report-format.enumeration.js +0 -18
  501. package/esm2015/lib/core/enums/report-stage.enumeration.js +0 -18
  502. package/esm2015/lib/core/enums/serviceType.js +0 -15
  503. package/esm2015/lib/core/enums/usingType.js +0 -48
  504. package/esm2015/lib/core/interfaces/date-compare-options.js +0 -19
  505. package/esm2015/lib/core/interfaces/date-validate-options.js +0 -17
  506. package/esm2015/lib/core/interfaces/field-validators-object.js +0 -20
  507. package/esm2015/lib/core/interfaces/index.js +0 -10
  508. package/esm2015/lib/core/interfaces/pagination-data.js +0 -18
  509. package/esm2015/lib/core/interfaces/report/domain-service.interface.js +0 -16
  510. package/esm2015/lib/core/interfaces/report/generation-status.interface.js +0 -22
  511. package/esm2015/lib/core/interfaces/report/get-parameters-out.interface.js +0 -16
  512. package/esm2015/lib/core/interfaces/report/index.js +0 -15
  513. package/esm2015/lib/core/interfaces/report/lookup-parameter.interface.js +0 -20
  514. package/esm2015/lib/core/interfaces/report/parameter-def.interface.js +0 -20
  515. package/esm2015/lib/core/interfaces/report/parameter-value.interface.js +0 -16
  516. package/esm2015/lib/core/interfaces/report/report-header.interface.js +0 -16
  517. package/esm2015/lib/core/interfaces/report/report-in.interface.js +0 -20
  518. package/esm2015/lib/core/interfaces/report/report-menu.interface.js +0 -18
  519. package/esm2015/lib/core/interfaces/report/report-out.interface.js +0 -14
  520. package/esm2015/lib/core/interfaces/report/report.interface.js +0 -48
  521. package/esm2015/lib/services/autocomplete-parameters.service.js +0 -180
  522. package/esm2015/lib/services/company-indications.service.js +0 -101
  523. package/esm2015/lib/services/form-comparator.service.js +0 -208
  524. package/esm2015/lib/services/integration.service.js +0 -37
  525. package/esm2015/lib/services/lookup-parameters.service.js +0 -557
  526. package/esm2015/lib/services/permissions.service.js +0 -218
  527. package/esm2015/lib/services/report.service.js +0 -161
  528. package/esm2015/lib/services/services.module.js +0 -32
  529. package/esm2015/lib/services/workflow-data.service.js +0 -57
  530. package/esm2015/lib/services/workflow-integrator.service.js +0 -416
  531. package/esm5/lib/components/admission-draft-summary/admission-draft-summary.component.js +0 -214
  532. package/esm5/lib/components/admission-draft-summary/admission-draft-summary.module.js +0 -24
  533. package/esm5/lib/components/admission-draft-summary/admission-draft-summary.service.js +0 -71
  534. package/esm5/lib/components/admission-draft-summary/index.js +0 -9
  535. package/esm5/lib/components/block-ui/block-ui.component.js +0 -30
  536. package/esm5/lib/components/block-ui/block-ui.module.js +0 -32
  537. package/esm5/lib/components/block-ui/index.js +0 -8
  538. package/esm5/lib/components/breadcrumb/breadcrumb.component.js +0 -170
  539. package/esm5/lib/components/breadcrumb/breadcrumb.module.js +0 -32
  540. package/esm5/lib/components/breadcrumb/index.js +0 -8
  541. package/esm5/lib/components/control-messages-error/control-messages-error.component.js +0 -48
  542. package/esm5/lib/components/control-messages-error/control-messages-error.module.js +0 -24
  543. package/esm5/lib/components/control-messages-error/index.js +0 -8
  544. package/esm5/lib/components/custom-fields/custom-fields.component.js +0 -70
  545. package/esm5/lib/components/custom-fields/custom-fields.module.js +0 -38
  546. package/esm5/lib/components/custom-fields/index.js +0 -8
  547. package/esm5/lib/components/data-list/data-list.component.js +0 -557
  548. package/esm5/lib/components/data-list/data-list.module.js +0 -35
  549. package/esm5/lib/components/data-list/data-list.service.js +0 -42
  550. package/esm5/lib/components/data-list/entity-odata-response.js +0 -83
  551. package/esm5/lib/components/data-list/index.js +0 -7
  552. package/esm5/lib/components/data-list-rest/data-list-rest.component.js +0 -414
  553. package/esm5/lib/components/data-list-rest/data-list-rest.module.js +0 -35
  554. package/esm5/lib/components/data-list-rest/data-list-rest.service.js +0 -42
  555. package/esm5/lib/components/data-list-rest/index.js +0 -7
  556. package/esm5/lib/components/directives/directives.module.js +0 -24
  557. package/esm5/lib/components/directives/index.js +0 -9
  558. package/esm5/lib/components/directives/name-not-spaces.directive.js +0 -66
  559. package/esm5/lib/components/directives/only-number.directive.js +0 -63
  560. package/esm5/lib/components/employee-selector/employee-selector.component.js +0 -168
  561. package/esm5/lib/components/employee-selector/employee-selector.module.js +0 -25
  562. package/esm5/lib/components/employee-selector/index.js +0 -8
  563. package/esm5/lib/components/employee-summary/employee-summary.component.js +0 -212
  564. package/esm5/lib/components/employee-summary/employee-summary.module.js +0 -24
  565. package/esm5/lib/components/employee-summary/employee-summary.service.js +0 -95
  566. package/esm5/lib/components/employee-summary/index.js +0 -9
  567. package/esm5/lib/components/error-page/error-page.component.js +0 -29
  568. package/esm5/lib/components/error-page/error-page.module.js +0 -23
  569. package/esm5/lib/components/error-page/index.js +0 -8
  570. package/esm5/lib/components/field-validator/field-validator.component.js +0 -74
  571. package/esm5/lib/components/field-validator/field-validator.module.js +0 -25
  572. package/esm5/lib/components/field-validator/index.js +0 -8
  573. package/esm5/lib/components/file-upload/file-upload.component.js +0 -261
  574. package/esm5/lib/components/file-upload/file-upload.module.js +0 -26
  575. package/esm5/lib/components/file-upload/file-upload.service.js +0 -99
  576. package/esm5/lib/components/file-upload/index.js +0 -8
  577. package/esm5/lib/components/from-to/from-to.component.js +0 -28
  578. package/esm5/lib/components/from-to/from-to.module.js +0 -26
  579. package/esm5/lib/components/from-to/index.js +0 -8
  580. package/esm5/lib/components/historical-bank-account/historical-bank-account-form/historical-bank-account-form.component.js +0 -657
  581. package/esm5/lib/components/historical-bank-account/historical-bank-account.component.js +0 -624
  582. package/esm5/lib/components/historical-bank-account/historical-bank-account.module.js +0 -63
  583. package/esm5/lib/components/historical-bank-account/historical-bank-account.service.js +0 -46
  584. package/esm5/lib/components/historical-bank-account/index.js +0 -9
  585. package/esm5/lib/components/historical-bank-account-list/historical-bank-account-list.component.js +0 -402
  586. package/esm5/lib/components/historical-bank-account-list/historical-bank-account-list.module.js +0 -46
  587. package/esm5/lib/components/historical-bank-account-list/historical-bank-account-list.service.js +0 -68
  588. package/esm5/lib/components/historical-bank-account-list/index.js +0 -9
  589. package/esm5/lib/components/image-cropper/image-crop.component.js +0 -287
  590. package/esm5/lib/components/image-cropper/image-crop.module.js +0 -39
  591. package/esm5/lib/components/image-cropper/image-crop.service.js +0 -221
  592. package/esm5/lib/components/image-cropper/index.js +0 -9
  593. package/esm5/lib/components/input-date/index.js +0 -8
  594. package/esm5/lib/components/input-date/input-date.component.js +0 -218
  595. package/esm5/lib/components/input-date/input-date.module.js +0 -24
  596. package/esm5/lib/components/input-date-model/index.js +0 -8
  597. package/esm5/lib/components/input-date-model/input-date-model.component.js +0 -190
  598. package/esm5/lib/components/input-date-model/input-date-model.module.js +0 -24
  599. package/esm5/lib/components/input-rest-auto-complete/index.js +0 -9
  600. package/esm5/lib/components/input-rest-auto-complete/input-rest-auto-complete.component.js +0 -497
  601. package/esm5/lib/components/input-rest-auto-complete/input-rest-auto-complete.module.js +0 -28
  602. package/esm5/lib/components/input-rest-auto-complete/input-rest-auto-complete.service.js +0 -46
  603. package/esm5/lib/components/input-rest-auto-complete-employee/index.js +0 -8
  604. package/esm5/lib/components/input-rest-auto-complete-employee/input-rest-auto-complete-employee.component.js +0 -300
  605. package/esm5/lib/components/input-rest-auto-complete-employee/input-rest-auto-complete-employee.module.js +0 -35
  606. package/esm5/lib/components/input-rest-auto-complete-employee/input-rest-auto-complete-employee.service.js +0 -44
  607. package/esm5/lib/components/input-rest-auto-complete-employee-model/index.js +0 -8
  608. package/esm5/lib/components/input-rest-auto-complete-employee-model/input-rest-auto-complete-employee-model.component.js +0 -291
  609. package/esm5/lib/components/input-rest-auto-complete-employee-model/input-rest-auto-complete-employee-model.module.js +0 -35
  610. package/esm5/lib/components/input-rest-auto-complete-employee-model/input-rest-auto-complete-employee-model.service.js +0 -44
  611. package/esm5/lib/components/input-rest-auto-complete-enum/index.js +0 -9
  612. package/esm5/lib/components/input-rest-auto-complete-enum/input-rest-auto-complete-enum.component.js +0 -252
  613. package/esm5/lib/components/input-rest-auto-complete-enum/input-rest-auto-complete-enum.module.js +0 -35
  614. package/esm5/lib/components/input-rest-auto-complete-enum/input-rest-auto-complete-enum.service.js +0 -48
  615. package/esm5/lib/components/input-rest-auto-complete-jobposition/index.js +0 -9
  616. package/esm5/lib/components/input-rest-auto-complete-jobposition/input-rest-auto-complete-jobposition.component.js +0 -302
  617. package/esm5/lib/components/input-rest-auto-complete-jobposition/input-rest-auto-complete-jobposition.module.js +0 -35
  618. package/esm5/lib/components/input-rest-auto-complete-jobposition/input-rest-auto-complete-jobposition.service.js +0 -44
  619. package/esm5/lib/components/input-rest-auto-complete-model/index.js +0 -8
  620. package/esm5/lib/components/input-rest-auto-complete-model/input-rest-auto-complete-model.component.js +0 -379
  621. package/esm5/lib/components/input-rest-auto-complete-model/input-rest-auto-complete-model.module.js +0 -35
  622. package/esm5/lib/components/input-rest-auto-complete-model/input-rest-auto-complete-model.service.js +0 -46
  623. package/esm5/lib/components/input-rest-auto-complete-model-enum/index.js +0 -8
  624. package/esm5/lib/components/input-rest-auto-complete-model-enum/input-rest-auto-complete-model-enum.component.js +0 -206
  625. package/esm5/lib/components/input-rest-auto-complete-model-enum/input-rest-auto-complete-model-enum.module.js +0 -35
  626. package/esm5/lib/components/input-rest-auto-complete-model-enum/input-rest-auto-complete-model-enum.service.js +0 -48
  627. package/esm5/lib/components/list-rest/index.js +0 -8
  628. package/esm5/lib/components/list-rest/list-rest.component.js +0 -219
  629. package/esm5/lib/components/list-rest/list-rest.module.js +0 -40
  630. package/esm5/lib/components/list-rest/list-rest.service.js +0 -57
  631. package/esm5/lib/components/lookup/index.js +0 -7
  632. package/esm5/lib/components/lookup/lookup.component.js +0 -600
  633. package/esm5/lib/components/lookup/lookup.module.js +0 -27
  634. package/esm5/lib/components/lookup/lookup.service.js +0 -94
  635. package/esm5/lib/components/shared/http-client.service.js +0 -355
  636. package/esm5/lib/components/shared/shared.module.js +0 -28
  637. package/esm5/lib/components/spinner/index.js +0 -8
  638. package/esm5/lib/components/spinner/spinner-loader.component.js +0 -19
  639. package/esm5/lib/components/spinner/spinner-loader.module.js +0 -30
  640. package/esm5/lib/components/toast/index.js +0 -9
  641. package/esm5/lib/components/toast/toast.component.js +0 -173
  642. package/esm5/lib/components/toast/toast.module.js +0 -27
  643. package/esm5/lib/components/toast/toast.service.js +0 -123
  644. package/esm5/lib/components/type-admission/index.js +0 -8
  645. package/esm5/lib/components/type-admission/type-admission.module.js +0 -21
  646. package/esm5/lib/components/type-admission/type-admission.services.js +0 -191
  647. package/esm5/lib/components/utils/cnpj-validator.js +0 -94
  648. package/esm5/lib/components/utils/cpf-validator.js +0 -98
  649. package/esm5/lib/components/utils/date-validator/date-validators.js +0 -289
  650. package/esm5/lib/components/utils/helpers.js +0 -763
  651. package/esm5/lib/components/utils/validations.js +0 -241
  652. package/esm5/lib/components/vanilla/string-methods.js +0 -42
  653. package/esm5/lib/components/workstationgroup-lookup/autocomplete.service.js +0 -250
  654. package/esm5/lib/components/workstationgroup-lookup/index.js +0 -8
  655. package/esm5/lib/components/workstationgroup-lookup/lookup.service.js +0 -318
  656. package/esm5/lib/components/workstationgroup-lookup/workstationgroup-lookup.component.js +0 -908
  657. package/esm5/lib/components/workstationgroup-lookup/workstationgroup-lookup.dto.js +0 -200
  658. package/esm5/lib/components/workstationgroup-lookup/workstationgroup-lookup.module.js +0 -28
  659. package/esm5/lib/core/entities/entity-odata-parameter.js +0 -96
  660. package/esm5/lib/core/entities/index.js +0 -7
  661. package/esm5/lib/core/enums/companyIndicationType.js +0 -24
  662. package/esm5/lib/core/enums/comparetype.enumeration.js +0 -16
  663. package/esm5/lib/core/enums/coreFieldType.js +0 -11
  664. package/esm5/lib/core/enums/direction.enumeration.js +0 -12
  665. package/esm5/lib/core/enums/httpRequestType.js +0 -12
  666. package/esm5/lib/core/enums/index.js +0 -19
  667. package/esm5/lib/core/enums/menu-type.enumeration.js +0 -12
  668. package/esm5/lib/core/enums/moduleType.js +0 -28
  669. package/esm5/lib/core/enums/operators.enumeration.js +0 -20
  670. package/esm5/lib/core/enums/parameter-type.enumeration.js +0 -18
  671. package/esm5/lib/core/enums/report-format.enumeration.js +0 -18
  672. package/esm5/lib/core/enums/report-stage.enumeration.js +0 -18
  673. package/esm5/lib/core/enums/serviceType.js +0 -15
  674. package/esm5/lib/core/enums/usingType.js +0 -48
  675. package/esm5/lib/core/interfaces/date-compare-options.js +0 -19
  676. package/esm5/lib/core/interfaces/date-validate-options.js +0 -17
  677. package/esm5/lib/core/interfaces/field-validators-object.js +0 -20
  678. package/esm5/lib/core/interfaces/index.js +0 -10
  679. package/esm5/lib/core/interfaces/pagination-data.js +0 -18
  680. package/esm5/lib/core/interfaces/report/domain-service.interface.js +0 -16
  681. package/esm5/lib/core/interfaces/report/generation-status.interface.js +0 -22
  682. package/esm5/lib/core/interfaces/report/get-parameters-out.interface.js +0 -16
  683. package/esm5/lib/core/interfaces/report/index.js +0 -15
  684. package/esm5/lib/core/interfaces/report/lookup-parameter.interface.js +0 -20
  685. package/esm5/lib/core/interfaces/report/parameter-def.interface.js +0 -20
  686. package/esm5/lib/core/interfaces/report/parameter-value.interface.js +0 -16
  687. package/esm5/lib/core/interfaces/report/report-header.interface.js +0 -16
  688. package/esm5/lib/core/interfaces/report/report-in.interface.js +0 -20
  689. package/esm5/lib/core/interfaces/report/report-menu.interface.js +0 -18
  690. package/esm5/lib/core/interfaces/report/report-out.interface.js +0 -14
  691. package/esm5/lib/core/interfaces/report/report.interface.js +0 -48
  692. package/esm5/lib/services/autocomplete-parameters.service.js +0 -255
  693. package/esm5/lib/services/company-indications.service.js +0 -126
  694. package/esm5/lib/services/form-comparator.service.js +0 -278
  695. package/esm5/lib/services/integration.service.js +0 -40
  696. package/esm5/lib/services/lookup-parameters.service.js +0 -748
  697. package/esm5/lib/services/permissions.service.js +0 -253
  698. package/esm5/lib/services/report.service.js +0 -231
  699. package/esm5/lib/services/services.module.js +0 -36
  700. package/esm5/lib/services/workflow-data.service.js +0 -73
  701. package/esm5/lib/services/workflow-integrator.service.js +0 -715
  702. package/lib/components/workstationgroup-lookup/autocomplete.service.d.ts +0 -31
  703. /package/{lib/components → components}/admission-draft-summary/admission-draft-summary.component.d.ts +0 -0
  704. /package/{lib/components → components}/admission-draft-summary/admission-draft-summary.module.d.ts +0 -0
  705. /package/{lib/components → components}/admission-draft-summary/admission-draft-summary.service.d.ts +0 -0
  706. /package/{lib/components → components}/admission-draft-summary/index.d.ts +0 -0
  707. /package/{lib/components → components}/block-ui/block-ui.component.d.ts +0 -0
  708. /package/{lib/components → components}/block-ui/block-ui.module.d.ts +0 -0
  709. /package/{lib/components → components}/block-ui/index.d.ts +0 -0
  710. /package/{lib/components → components}/breadcrumb/breadcrumb.component.d.ts +0 -0
  711. /package/{lib/components → components}/breadcrumb/breadcrumb.module.d.ts +0 -0
  712. /package/{lib/components → components}/breadcrumb/index.d.ts +0 -0
  713. /package/{lib/components → components}/control-messages-error/control-messages-error.component.d.ts +0 -0
  714. /package/{lib/components → components}/control-messages-error/control-messages-error.module.d.ts +0 -0
  715. /package/{lib/components → components}/control-messages-error/index.d.ts +0 -0
  716. /package/{lib/components → components}/custom-fields/custom-fields.component.d.ts +0 -0
  717. /package/{lib/components → components}/custom-fields/custom-fields.module.d.ts +0 -0
  718. /package/{lib/components → components}/custom-fields/index.d.ts +0 -0
  719. /package/{lib/components → components}/data-list/data-list.component.d.ts +0 -0
  720. /package/{lib/components → components}/data-list/data-list.module.d.ts +0 -0
  721. /package/{lib/components → components}/data-list/data-list.service.d.ts +0 -0
  722. /package/{lib/components → components}/data-list/entity-odata-response.d.ts +0 -0
  723. /package/{lib/components → components}/data-list/index.d.ts +0 -0
  724. /package/{lib/components → components}/data-list-rest/data-list-rest.component.d.ts +0 -0
  725. /package/{lib/components → components}/data-list-rest/data-list-rest.module.d.ts +0 -0
  726. /package/{lib/components → components}/data-list-rest/data-list-rest.service.d.ts +0 -0
  727. /package/{lib/components → components}/data-list-rest/index.d.ts +0 -0
  728. /package/{lib/components → components}/directives/directives.module.d.ts +0 -0
  729. /package/{lib/components → components}/directives/index.d.ts +0 -0
  730. /package/{lib/components → components}/directives/name-not-spaces.directive.d.ts +0 -0
  731. /package/{lib/components → components}/directives/only-number.directive.d.ts +0 -0
  732. /package/{lib/components → components}/employee-selector/employee-selector.component.d.ts +0 -0
  733. /package/{lib/components → components}/employee-selector/employee-selector.module.d.ts +0 -0
  734. /package/{lib/components → components}/employee-selector/index.d.ts +0 -0
  735. /package/{lib/components → components}/employee-summary/employee-summary.component.d.ts +0 -0
  736. /package/{lib/components → components}/employee-summary/employee-summary.module.d.ts +0 -0
  737. /package/{lib/components → components}/employee-summary/employee-summary.service.d.ts +0 -0
  738. /package/{lib/components → components}/employee-summary/index.d.ts +0 -0
  739. /package/{lib/components → components}/error-page/error-page.component.d.ts +0 -0
  740. /package/{lib/components → components}/error-page/error-page.module.d.ts +0 -0
  741. /package/{lib/components → components}/error-page/index.d.ts +0 -0
  742. /package/{lib/components → components}/field-validator/field-validator.component.d.ts +0 -0
  743. /package/{lib/components → components}/field-validator/field-validator.module.d.ts +0 -0
  744. /package/{lib/components → components}/field-validator/index.d.ts +0 -0
  745. /package/{lib/components → components}/file-upload/file-upload.component.d.ts +0 -0
  746. /package/{lib/components → components}/file-upload/file-upload.module.d.ts +0 -0
  747. /package/{lib/components → components}/file-upload/file-upload.service.d.ts +0 -0
  748. /package/{lib/components → components}/file-upload/index.d.ts +0 -0
  749. /package/{lib/components → components}/from-to/from-to.component.d.ts +0 -0
  750. /package/{lib/components → components}/from-to/from-to.module.d.ts +0 -0
  751. /package/{lib/components → components}/from-to/index.d.ts +0 -0
  752. /package/{lib/components → components}/historical-bank-account/historical-bank-account-form/historical-bank-account-form.component.d.ts +0 -0
  753. /package/{lib/components → components}/historical-bank-account/historical-bank-account.component.d.ts +0 -0
  754. /package/{lib/components → components}/historical-bank-account/historical-bank-account.module.d.ts +0 -0
  755. /package/{lib/components → components}/historical-bank-account/historical-bank-account.service.d.ts +0 -0
  756. /package/{lib/components → components}/historical-bank-account/index.d.ts +0 -0
  757. /package/{lib/components → components}/historical-bank-account-list/historical-bank-account-list.component.d.ts +0 -0
  758. /package/{lib/components → components}/historical-bank-account-list/historical-bank-account-list.module.d.ts +0 -0
  759. /package/{lib/components → components}/historical-bank-account-list/historical-bank-account-list.service.d.ts +0 -0
  760. /package/{lib/components → components}/historical-bank-account-list/index.d.ts +0 -0
  761. /package/{lib/components → components}/image-cropper/image-crop.component.d.ts +0 -0
  762. /package/{lib/components → components}/image-cropper/image-crop.module.d.ts +0 -0
  763. /package/{lib/components → components}/image-cropper/image-crop.service.d.ts +0 -0
  764. /package/{lib/components → components}/image-cropper/index.d.ts +0 -0
  765. /package/{lib/components → components}/input-date/index.d.ts +0 -0
  766. /package/{lib/components → components}/input-date/input-date.component.d.ts +0 -0
  767. /package/{lib/components → components}/input-date/input-date.module.d.ts +0 -0
  768. /package/{lib/components → components}/input-date-model/index.d.ts +0 -0
  769. /package/{lib/components → components}/input-date-model/input-date-model.component.d.ts +0 -0
  770. /package/{lib/components → components}/input-date-model/input-date-model.module.d.ts +0 -0
  771. /package/{lib/components → components}/input-rest-auto-complete/index.d.ts +0 -0
  772. /package/{lib/components → components}/input-rest-auto-complete/input-rest-auto-complete.component.d.ts +0 -0
  773. /package/{lib/components → components}/input-rest-auto-complete/input-rest-auto-complete.module.d.ts +0 -0
  774. /package/{lib/components → components}/input-rest-auto-complete/input-rest-auto-complete.service.d.ts +0 -0
  775. /package/{lib/components → components}/input-rest-auto-complete-employee/index.d.ts +0 -0
  776. /package/{lib/components → components}/input-rest-auto-complete-employee/input-rest-auto-complete-employee.component.d.ts +0 -0
  777. /package/{lib/components → components}/input-rest-auto-complete-employee/input-rest-auto-complete-employee.module.d.ts +0 -0
  778. /package/{lib/components → components}/input-rest-auto-complete-employee/input-rest-auto-complete-employee.service.d.ts +0 -0
  779. /package/{lib/components → components}/input-rest-auto-complete-employee-model/index.d.ts +0 -0
  780. /package/{lib/components → components}/input-rest-auto-complete-employee-model/input-rest-auto-complete-employee-model.component.d.ts +0 -0
  781. /package/{lib/components → components}/input-rest-auto-complete-employee-model/input-rest-auto-complete-employee-model.module.d.ts +0 -0
  782. /package/{lib/components → components}/input-rest-auto-complete-employee-model/input-rest-auto-complete-employee-model.service.d.ts +0 -0
  783. /package/{lib/components → components}/input-rest-auto-complete-enum/index.d.ts +0 -0
  784. /package/{lib/components → components}/input-rest-auto-complete-enum/input-rest-auto-complete-enum.component.d.ts +0 -0
  785. /package/{lib/components → components}/input-rest-auto-complete-enum/input-rest-auto-complete-enum.module.d.ts +0 -0
  786. /package/{lib/components → components}/input-rest-auto-complete-enum/input-rest-auto-complete-enum.service.d.ts +0 -0
  787. /package/{lib/components → components}/input-rest-auto-complete-jobposition/index.d.ts +0 -0
  788. /package/{lib/components → components}/input-rest-auto-complete-jobposition/input-rest-auto-complete-jobposition.component.d.ts +0 -0
  789. /package/{lib/components → components}/input-rest-auto-complete-jobposition/input-rest-auto-complete-jobposition.module.d.ts +0 -0
  790. /package/{lib/components → components}/input-rest-auto-complete-jobposition/input-rest-auto-complete-jobposition.service.d.ts +0 -0
  791. /package/{lib/components → components}/input-rest-auto-complete-model/index.d.ts +0 -0
  792. /package/{lib/components → components}/input-rest-auto-complete-model/input-rest-auto-complete-model.component.d.ts +0 -0
  793. /package/{lib/components → components}/input-rest-auto-complete-model/input-rest-auto-complete-model.module.d.ts +0 -0
  794. /package/{lib/components → components}/input-rest-auto-complete-model/input-rest-auto-complete-model.service.d.ts +0 -0
  795. /package/{lib/components → components}/input-rest-auto-complete-model-enum/index.d.ts +0 -0
  796. /package/{lib/components → components}/input-rest-auto-complete-model-enum/input-rest-auto-complete-model-enum.component.d.ts +0 -0
  797. /package/{lib/components → components}/input-rest-auto-complete-model-enum/input-rest-auto-complete-model-enum.module.d.ts +0 -0
  798. /package/{lib/components → components}/input-rest-auto-complete-model-enum/input-rest-auto-complete-model-enum.service.d.ts +0 -0
  799. /package/{lib/components → components}/list-rest/index.d.ts +0 -0
  800. /package/{lib/components → components}/list-rest/list-rest.component.d.ts +0 -0
  801. /package/{lib/components → components}/list-rest/list-rest.module.d.ts +0 -0
  802. /package/{lib/components → components}/list-rest/list-rest.service.d.ts +0 -0
  803. /package/{lib/components → components}/lookup/index.d.ts +0 -0
  804. /package/{lib/components → components}/lookup/lookup.component.d.ts +0 -0
  805. /package/{lib/components → components}/lookup/lookup.module.d.ts +0 -0
  806. /package/{lib/components → components}/lookup/lookup.service.d.ts +0 -0
  807. /package/{lib/components → components}/shared/http-client.service.d.ts +0 -0
  808. /package/{lib/components → components}/shared/shared.module.d.ts +0 -0
  809. /package/{lib/components → components}/spinner/index.d.ts +0 -0
  810. /package/{lib/components → components}/spinner/spinner-loader.component.d.ts +0 -0
  811. /package/{lib/components → components}/spinner/spinner-loader.module.d.ts +0 -0
  812. /package/{lib/components → components}/toast/index.d.ts +0 -0
  813. /package/{lib/components → components}/toast/toast.component.d.ts +0 -0
  814. /package/{lib/components → components}/toast/toast.module.d.ts +0 -0
  815. /package/{lib/components → components}/toast/toast.service.d.ts +0 -0
  816. /package/{lib/components → components}/type-admission/index.d.ts +0 -0
  817. /package/{lib/components → components}/type-admission/type-admission.module.d.ts +0 -0
  818. /package/{lib/components → components}/type-admission/type-admission.services.d.ts +0 -0
  819. /package/{lib/components → components}/utils/cnpj-validator.d.ts +0 -0
  820. /package/{lib/components → components}/utils/cpf-validator.d.ts +0 -0
  821. /package/{lib/components → components}/utils/date-validator/date-validators.d.ts +0 -0
  822. /package/{lib/components → components}/utils/helpers.d.ts +0 -0
  823. /package/{lib/components → components}/utils/validations.d.ts +0 -0
  824. /package/{lib/components → components}/vanilla/string-methods.d.ts +0 -0
  825. /package/{lib/components → components}/workstationgroup-lookup/index.d.ts +0 -0
  826. /package/{lib/components → components}/workstationgroup-lookup/lookup.service.d.ts +0 -0
  827. /package/{lib/components → components}/workstationgroup-lookup/workstationgroup-lookup.component.d.ts +0 -0
  828. /package/{lib/components → components}/workstationgroup-lookup/workstationgroup-lookup.dto.d.ts +0 -0
  829. /package/{lib/components → components}/workstationgroup-lookup/workstationgroup-lookup.module.d.ts +0 -0
  830. /package/{lib/core → core}/entities/entity-odata-parameter.d.ts +0 -0
  831. /package/{lib/core → core}/entities/index.d.ts +0 -0
  832. /package/{lib/core → core}/enums/companyIndicationType.d.ts +0 -0
  833. /package/{lib/core → core}/enums/comparetype.enumeration.d.ts +0 -0
  834. /package/{lib/core → core}/enums/coreFieldType.d.ts +0 -0
  835. /package/{lib/core → core}/enums/direction.enumeration.d.ts +0 -0
  836. /package/{lib/core → core}/enums/httpRequestType.d.ts +0 -0
  837. /package/{lib/core → core}/enums/index.d.ts +0 -0
  838. /package/{lib/core → core}/enums/menu-type.enumeration.d.ts +0 -0
  839. /package/{lib/core → core}/enums/moduleType.d.ts +0 -0
  840. /package/{lib/core → core}/enums/operators.enumeration.d.ts +0 -0
  841. /package/{lib/core → core}/enums/parameter-type.enumeration.d.ts +0 -0
  842. /package/{lib/core → core}/enums/report-format.enumeration.d.ts +0 -0
  843. /package/{lib/core → core}/enums/report-stage.enumeration.d.ts +0 -0
  844. /package/{lib/core → core}/enums/serviceType.d.ts +0 -0
  845. /package/{lib/core → core}/enums/usingType.d.ts +0 -0
  846. /package/{lib/core → core}/interfaces/date-compare-options.d.ts +0 -0
  847. /package/{lib/core → core}/interfaces/date-validate-options.d.ts +0 -0
  848. /package/{lib/core → core}/interfaces/field-validators-object.d.ts +0 -0
  849. /package/{lib/core → core}/interfaces/index.d.ts +0 -0
  850. /package/{lib/core → core}/interfaces/pagination-data.d.ts +0 -0
  851. /package/{lib/core → core}/interfaces/report/domain-service.interface.d.ts +0 -0
  852. /package/{lib/core → core}/interfaces/report/generation-status.interface.d.ts +0 -0
  853. /package/{lib/core → core}/interfaces/report/get-parameters-out.interface.d.ts +0 -0
  854. /package/{lib/core → core}/interfaces/report/index.d.ts +0 -0
  855. /package/{lib/core → core}/interfaces/report/lookup-parameter.interface.d.ts +0 -0
  856. /package/{lib/core → core}/interfaces/report/parameter-def.interface.d.ts +0 -0
  857. /package/{lib/core → core}/interfaces/report/parameter-value.interface.d.ts +0 -0
  858. /package/{lib/core → core}/interfaces/report/report-header.interface.d.ts +0 -0
  859. /package/{lib/core → core}/interfaces/report/report-in.interface.d.ts +0 -0
  860. /package/{lib/core → core}/interfaces/report/report-menu.interface.d.ts +0 -0
  861. /package/{lib/core → core}/interfaces/report/report-out.interface.d.ts +0 -0
  862. /package/{lib/core → core}/interfaces/report/report.interface.d.ts +0 -0
  863. /package/{lib/services → services}/autocomplete-parameters.service.d.ts +0 -0
  864. /package/{lib/services → services}/company-indications.service.d.ts +0 -0
  865. /package/{lib/services → services}/form-comparator.service.d.ts +0 -0
  866. /package/{lib/services → services}/integration.service.d.ts +0 -0
  867. /package/{lib/services → services}/lookup-parameters.service.d.ts +0 -0
  868. /package/{lib/services → services}/permissions.service.d.ts +0 -0
  869. /package/{lib/services → services}/report.service.d.ts +0 -0
  870. /package/{lib/services → services}/services.module.d.ts +0 -0
  871. /package/{lib/services → services}/workflow-data.service.d.ts +0 -0
  872. /package/{lib/services → services}/workflow-integrator.service.d.ts +0 -0
@@ -0,0 +1,476 @@
1
+ import { FormArray, FormControl, FormGroup, Validators } from '@angular/forms';
2
+ import * as chance from 'chance';
3
+ import * as momentImported from 'moment';
4
+ import business from 'moment-business';
5
+ const moment = momentImported;
6
+ export function isObject(item) {
7
+ return item && typeof item === 'object' && !Array.isArray(item);
8
+ }
9
+ export function isShallow(item) {
10
+ return Array.isArray(item) && item.find(value => typeof value === 'object') ? false : true;
11
+ }
12
+ export function convertBooleanString(value) {
13
+ if (typeof value === 'boolean') {
14
+ return value === true ? 'true' : 'false';
15
+ }
16
+ return value;
17
+ }
18
+ export function convertStringToBoolean(value) {
19
+ return value === true || value.toLowerCase() === 'true';
20
+ }
21
+ export function assign(target, ...sources) {
22
+ if (!sources.length) {
23
+ return target;
24
+ }
25
+ const source = sources.shift();
26
+ if (isObject(target) && isObject(source)) {
27
+ for (const key in source) {
28
+ if (isObject(source[key])) {
29
+ if (!target[key]) {
30
+ Object.assign(target, { [key]: {} });
31
+ }
32
+ assign(target[key], source[key]);
33
+ }
34
+ else {
35
+ if (isShallow(source[key])) {
36
+ Object.assign(target, { [key]: source[key] });
37
+ }
38
+ else {
39
+ if (!target[key]) {
40
+ Object.assign(target, { [key]: [] });
41
+ }
42
+ Object.assign(target, { [key]: source[key].map((item, index) => assign(target[key][index] || {}, item)) });
43
+ }
44
+ }
45
+ }
46
+ }
47
+ return assign(target, ...sources);
48
+ }
49
+ export function isValid(value) {
50
+ return value === 0 || typeof value === 'boolean' ? true : value !== undefined && value !== null && value !== '';
51
+ }
52
+ export function isValidDate(value, withDays = true) {
53
+ if (value && isFullDate(value, withDays)) {
54
+ if (withDays) {
55
+ return moment(value.replace(/[^\d]+/g, ''), 'DDMMYYYY').isValid();
56
+ }
57
+ else {
58
+ return moment(value.replace(/[^\d]+/g, ''), 'MMYYYY').isValid();
59
+ }
60
+ }
61
+ return true;
62
+ }
63
+ export function isFullDate(value, withDays = true) {
64
+ if (value) {
65
+ let totalLength;
66
+ if (withDays) {
67
+ totalLength = 8;
68
+ }
69
+ else {
70
+ totalLength = 6;
71
+ }
72
+ return value.replace(/[^\d]+/g, '').length === totalLength;
73
+ }
74
+ return true;
75
+ }
76
+ export function autoCompleteObjectForIdObject(tableIdObject) {
77
+ if (!isObject(tableIdObject)) {
78
+ console.error('Paramentro não é um objeto');
79
+ return false;
80
+ }
81
+ if (tableIdObject.hasOwnProperty('tableId')) {
82
+ console.error('Paramentro não é um objeto Auto Complete válido, falta tableId');
83
+ }
84
+ if (!isValid(tableIdObject.tableId)) {
85
+ console.error('tableId esta vazio');
86
+ }
87
+ return { id: tableIdObject.tableId };
88
+ }
89
+ export function isDateField(name, value) {
90
+ const testDate = name.search('Date');
91
+ if (testDate !== -1) {
92
+ return invertFieldDate(value);
93
+ }
94
+ return value;
95
+ }
96
+ export function invertFieldDate(value, inFormat = 'DDMMYYYY', outFormat = 'YYYY-MM-DD') {
97
+ if (!isValid(value)) {
98
+ return;
99
+ }
100
+ const formatIn = getFormatDate(value, inFormat);
101
+ return moment(value.replace(/[^\d]+/g, ''), formatIn).format(outFormat);
102
+ }
103
+ export function getAddWeekDaysBusiness(value, quantidade) {
104
+ return business.addWeekDays(getMoment(value), quantidade).format('DD/MM/YYYY');
105
+ }
106
+ export function getWeekDaysBusiness(startDate, endDate) {
107
+ const endMoment = endDate ? getMoment(endDate) : getMoment(startDate).endOf('month');
108
+ return business.weekDays(getMoment(startDate), endMoment);
109
+ }
110
+ export function getFormatDate(value, inFormat) {
111
+ if (value.search('/') !== -1) {
112
+ return 'DDMMYYYY';
113
+ }
114
+ else if (value.search('-') !== -1) {
115
+ return 'YYYYMMDD';
116
+ }
117
+ return inFormat;
118
+ }
119
+ /**
120
+ * FIXME - Está fixo para uso do calendário portugues Brasil
121
+ * @param value
122
+ * @param outFormat
123
+ * @returns
124
+ */
125
+ export function ngCalendarFormat(value, outFormat = 'DD/MM/YYYY') {
126
+ if (isValidDate(value)) {
127
+ if (typeof value === 'string') {
128
+ return value;
129
+ }
130
+ else {
131
+ return _moment(value).format(outFormat);
132
+ }
133
+ }
134
+ }
135
+ export function getNowDate(outFormat = 'YYYY-MM-DD') {
136
+ return moment().format(outFormat);
137
+ }
138
+ export function getMoment(value, inFormat = 'DDMMYYYY') {
139
+ const formatIn = getFormatDate(value, inFormat);
140
+ return moment(value.replace(/[^\d]+/g, ''), formatIn);
141
+ }
142
+ export function _moment(value, format) {
143
+ if (format) {
144
+ return moment(value, format);
145
+ }
146
+ return moment(value);
147
+ }
148
+ export function getObjValids(objs) {
149
+ const json = Object.assign({}, objs);
150
+ const jsonReturn = {};
151
+ Object.keys(json).map(key => {
152
+ if (isValid(json[key])) {
153
+ jsonReturn[key] = isDateField(key, json[key]);
154
+ }
155
+ });
156
+ return jsonReturn;
157
+ }
158
+ export function removeEmpty(obj) {
159
+ Object.keys(obj).forEach(k => (obj[k] && typeof obj[k] === 'object' && removeEmpty(obj[k])) || (!obj[k] && obj[k] !== undefined && delete obj[k]));
160
+ return obj;
161
+ }
162
+ export function formatMoney(value, i18n = 'EN') {
163
+ switch (i18n) {
164
+ case 'EN':
165
+ return isValid(value)
166
+ ? value
167
+ .toString()
168
+ .replace('.', '')
169
+ .replace(',', '.')
170
+ : '';
171
+ case 'BR':
172
+ return isValid(value)
173
+ ? value
174
+ .toString()
175
+ .replace('.', ',')
176
+ .replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1.')
177
+ : '';
178
+ default:
179
+ return isValid(value)
180
+ ? value
181
+ .toString()
182
+ .replace('.', '')
183
+ .replace(',', '.')
184
+ : '';
185
+ }
186
+ }
187
+ export function uiid() {
188
+ return new chance()
189
+ .guid()
190
+ .replace(/[^a-zA-Z0-9.]/g, '')
191
+ .toUpperCase();
192
+ }
193
+ export function mountCustomForSave(custom, customEntity = null, locale = null) {
194
+ const custonField = [];
195
+ if (customEntity && custom.length) {
196
+ customEntity.map((val, key) => {
197
+ const field = Object.keys(custom[key]).toString();
198
+ const valOrnull = isValid(custom[key][field]) ? custom[key][field] : null;
199
+ const value = val.type === 'date' && locale && isValid(valOrnull) ? moment(valOrnull, getFormat(locale)).format('YYYY-MM-DD') : valOrnull;
200
+ custonField.push({
201
+ field: field,
202
+ value: value,
203
+ });
204
+ });
205
+ }
206
+ return custonField.length ? custonField : null;
207
+ }
208
+ /**
209
+ * Prepara o objeto de campos customizados para salvar as entidades que
210
+ * são utilizadas a partir do CRUD customizado.
211
+ * @param objectFields objeto com os campos customizados da entidade.
212
+ */
213
+ export function mountCustomToSave(objectFields) {
214
+ const customFields = [];
215
+ Object.entries(objectFields).forEach(([field, value]) => {
216
+ customFields.push({
217
+ field: field,
218
+ value: value,
219
+ });
220
+ });
221
+ return customFields;
222
+ }
223
+ /**
224
+ * Prepara o objeto de campos customizados para exibir as entidades que
225
+ * são utilizadas a partir do CRUD customizado.
226
+ * @param customFields objeto com os campos customizados da entidade.
227
+ */
228
+ export function mountCustomToShow(customFields) {
229
+ const customFieldsToShow = {};
230
+ if (customFields && customFields.length) {
231
+ customFields.forEach(item => {
232
+ if (item.type === 'date' && item.value) {
233
+ item.value = _moment(item.value).format('L');
234
+ }
235
+ customFieldsToShow[item.field] = item.value;
236
+ });
237
+ }
238
+ return customFieldsToShow;
239
+ }
240
+ /**
241
+ * Prepara o objeto de campos customizados para salvar as entidades que
242
+ * são utilizadas a partir do CRUD gerado.
243
+ * @param objectFields objeto com os campos customizados da entidade.
244
+ */
245
+ export function mountGeneratedCustomToSave(objectFields) {
246
+ Object.entries(objectFields).forEach(([key, value]) => {
247
+ if (!value) {
248
+ delete objectFields[key];
249
+ }
250
+ });
251
+ return objectFields;
252
+ }
253
+ export function mountCustomForShow(custom) {
254
+ const customField = [];
255
+ Object.keys(custom || {}).forEach(val => {
256
+ if (custom[val].type === 'date' && custom[val].value) {
257
+ custom[val].value = _moment(custom[val].value).format('L');
258
+ }
259
+ customField.push(custom[val]);
260
+ });
261
+ return customField;
262
+ }
263
+ export function setValueCustom(custonFields, custom) {
264
+ const isCustons = custom ? Object.keys(custom).length : 0;
265
+ custonFields.map(val => {
266
+ val.value = isCustons > 0 ? custom[val.field] : null;
267
+ });
268
+ return custonFields;
269
+ }
270
+ /**
271
+ * Adiciona um erro no controle do formulário. Deve ser chamado com .call passando o contexto da class.
272
+ * Ex.: setErrors.call(this.contractGroup, 'registerEmployeeNumber', 'exist', !payload)
273
+ *
274
+ * @param formControlName Nome do controle do formulário.
275
+ * @param keyError Nome do error a ser exibido em tela.
276
+ * @param isInvalid Se houver algum erro de validação no campo.
277
+ */
278
+ export function setErrors(formControlName, keyError, isInvalid) {
279
+ setTimeout(() => {
280
+ if (isInvalid) {
281
+ const errors = Object.assign({}, this.get(formControlName).errors);
282
+ errors[keyError] = isInvalid;
283
+ this.get(formControlName).setErrors(errors);
284
+ }
285
+ else {
286
+ const errors = this.get(formControlName).errors;
287
+ if (errors && Object.keys(errors).length) {
288
+ delete errors[keyError];
289
+ if (!Object.keys(errors).length) {
290
+ this.get(formControlName).setErrors(null);
291
+ }
292
+ }
293
+ }
294
+ }, 0);
295
+ }
296
+ /**
297
+ * Faz loop do nos controls do formulário e subArray caso existir
298
+ * setando os inválidos
299
+ * Ex.: verifyValidationsForm.call(this.initialGroup);
300
+ */
301
+ export function verifyValidationsForm() {
302
+ Object.keys(this.controls).map(field => {
303
+ const control = this.get(field);
304
+ control.markAsDirty();
305
+ if (control instanceof FormGroup || control instanceof FormArray) {
306
+ verifyValidationsForm.call(control);
307
+ }
308
+ });
309
+ }
310
+ /**
311
+ * Retorna a idade de acordo com a data de nascimento.
312
+ *
313
+ * @param birthdayDate Data de nascimento.
314
+ */
315
+ export function getYears(birthday) {
316
+ const currentDate = moment();
317
+ const years = currentDate.diff(birthday, 'years', false);
318
+ return years;
319
+ }
320
+ export function setCustonFields(customFields) {
321
+ customFields.map(val => {
322
+ const addCuston = {};
323
+ let value = val.value || null;
324
+ if (typeof value === 'boolean') {
325
+ value = value ? 'true' : 'false';
326
+ }
327
+ addCuston[val.field] = new FormControl(value);
328
+ this.push(new FormGroup(addCuston));
329
+ });
330
+ return customFields;
331
+ }
332
+ export function setRequired(formGroup, name, required, validators) {
333
+ if (required) {
334
+ formGroup.controls[name].setValidators(Validators.compose(validators && validators.length ? validators : [Validators.required]));
335
+ formGroup.controls[name].updateValueAndValidity();
336
+ }
337
+ else {
338
+ formGroup.controls[name].setValidators(null);
339
+ formGroup.controls[name].updateValueAndValidity();
340
+ }
341
+ }
342
+ /**
343
+ * Esse método tem como função setar os campos enable ou disable.
344
+ * @param formGroup FormGroup onde se encontra os campos a serem alterados.
345
+ * @param condition Condição para validação. True = enabled, False = disabled.
346
+ * @param fields Campos a serem manipulados.
347
+ * @param fieldsToClear Campos a serem limpos. É opicional e se não foi passado o método limpará os mesmos campos dos fields.
348
+ */
349
+ export function configEnabledFields(formGroup, condition, fields, fieldsToClear) {
350
+ if (condition) {
351
+ fields.forEach(field => formGroup.get(field).enable());
352
+ }
353
+ else {
354
+ fields.forEach(field => formGroup.get(field).disable());
355
+ clearValues(formGroup, fieldsToClear ? fieldsToClear : fields);
356
+ }
357
+ }
358
+ /**
359
+ * Esse método tem como função setar os campos como requeridos ou não.
360
+ *
361
+ * @param formGroup FormGroup onde se encontra os campos a serem alterados.
362
+ * @param condition Se será ou não requeridos.
363
+ * @param fields Lista de campos.
364
+ */
365
+ export function setRequiredFields(formGroup, condition, fields) {
366
+ if (condition) {
367
+ fields.forEach(field => setRequired(formGroup, field, true, [Validators.required]));
368
+ }
369
+ else {
370
+ fields.forEach(field => setRequired(formGroup, field, false));
371
+ }
372
+ }
373
+ /**
374
+ * Esse método tem como função setar validações dinâmicas nos campos.
375
+ *
376
+ * @param formGroup FormGroup onde se encontra os campos a serem alterados.
377
+ * @param fields Lista de objetos [{field: campo, validators: validações, disable: boolean}].
378
+ */
379
+ export function setValidatorsAndDisableFields(formGroup, fields) {
380
+ fields.forEach((currentField) => {
381
+ setValidator(formGroup, currentField.field, currentField.validators);
382
+ setDisableField(formGroup, currentField.disabled, currentField.field, currentField.clearValue);
383
+ });
384
+ }
385
+ export function setValidator(formGroup, name, validators) {
386
+ if (validators && validators.length) {
387
+ formGroup.controls[name].setValidators(Validators.compose(validators));
388
+ formGroup.controls[name].updateValueAndValidity();
389
+ }
390
+ else {
391
+ formGroup.controls[name].setValidators(null);
392
+ formGroup.controls[name].updateValueAndValidity();
393
+ }
394
+ }
395
+ /**
396
+ * Esse método tem como função setar os campos enable ou disable.
397
+ * @param formGroup FormGroup onde se encontra os campos a serem alterados.
398
+ * @param condition Condição para validação. True = disabled, False = enabled.
399
+ * @param field Campo a ser manipulados.
400
+ * @param clearValue Campos a ser limpos. É opicional e se não foi passado o método limpará o campo do field.
401
+ */
402
+ export function setDisableField(formGroup, condition, field, clearValue = true) {
403
+ if (condition) {
404
+ formGroup.get(field).disable();
405
+ if (clearValue)
406
+ formGroup.get(field).reset();
407
+ }
408
+ else {
409
+ formGroup.get(field).enable();
410
+ }
411
+ }
412
+ /**
413
+ * Ordena array de objetos
414
+ * @param key o campo que deseja ordenar
415
+ * @param order a ordem que deseja ordenar o campo
416
+ */
417
+ export function compareValues(key, order = "ASC") {
418
+ return function innerSort(a, b) {
419
+ if (!a.hasOwnProperty(key) || !b.hasOwnProperty(key)) {
420
+ return 0;
421
+ }
422
+ const varA = (typeof a[key] === "string")
423
+ ? a[key].toUpperCase() : a[key];
424
+ const varB = (typeof b[key] === "string")
425
+ ? b[key].toUpperCase() : b[key];
426
+ let comparison = 0;
427
+ if (varA > varB) {
428
+ comparison = 1;
429
+ }
430
+ else if (varA < varB) {
431
+ comparison = -1;
432
+ }
433
+ return ((order === "DESC") ? (comparison * -1) : comparison);
434
+ };
435
+ }
436
+ /**
437
+ * Esse método tem como função limpar o valor dos campos.
438
+ *
439
+ * @param formGroup FormGroup onde se encontra os campos a serem limpos.
440
+ * @param fields Campos a serem limpos.
441
+ */
442
+ export function clearValues(formGroup, fields) {
443
+ fields.forEach(field => formGroup.get(field).reset());
444
+ }
445
+ /**
446
+ *
447
+ * @param qs = window.location.search
448
+ * @returns Object com parametros query string
449
+ */
450
+ export function getQueryParams(qs) {
451
+ qs = qs.split('+').join(' ');
452
+ const params = {};
453
+ let tokens;
454
+ const re = /[?&]?([^=]+)=([^&]*)/g;
455
+ while ((tokens = re.exec(qs))) {
456
+ params[decodeURIComponent(tokens[1])] = decodeURIComponent(tokens[2]);
457
+ }
458
+ return params;
459
+ }
460
+ export function getFormat(locale) {
461
+ if (locale) {
462
+ let dateFormat = locale.calendar.dateFormat.toString();
463
+ dateFormat = dateFormat.replace(/[y]/g, 'YY');
464
+ dateFormat = dateFormat.replace(/[/]/g, '');
465
+ return dateFormat.toUpperCase();
466
+ }
467
+ }
468
+ /**
469
+ * Remove os caracteres que não sejam números do valor
470
+ * @param value valor a ser tratado
471
+ * @returns string O valor sem caracteres especiais
472
+ */
473
+ export function removeCharacteresSpecials(value) {
474
+ return value ? value.toString().replace(/[&\/\\#,+()$~%.'":*?<>{}-]/g, "") : null;
475
+ }
476
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3ItZ2VzdGFvLXBlc3NvYXMvcGF5cm9sbC1jb3JlLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy91dGlscy9oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUvRSxPQUFPLEtBQUssTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUNqQyxPQUFPLEtBQUssY0FBYyxNQUFNLFFBQVEsQ0FBQztBQUN6QyxPQUFPLFFBQVEsTUFBTSxpQkFBaUIsQ0FBQztBQUl2QyxNQUFNLE1BQU0sR0FBRyxjQUFjLENBQUM7QUFFOUIsTUFBTSxVQUFVLFFBQVEsQ0FBQyxJQUFJO0lBQzNCLE9BQU8sSUFBSSxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDbEUsQ0FBQztBQUVELE1BQU0sVUFBVSxTQUFTLENBQUMsSUFBSTtJQUM1QixPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUM3RixDQUFDO0FBRUQsTUFBTSxVQUFVLG9CQUFvQixDQUFDLEtBQUs7SUFDeEMsSUFBSSxPQUFPLEtBQUssS0FBSyxTQUFTLEVBQUU7UUFDOUIsT0FBTyxLQUFLLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztLQUMxQztJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUVELE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxLQUFLO0lBQzFD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QyxDQUFDLEVBQUU7UUFDN0IsTUFBTSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDdkU7SUFFRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBRUQsTUFBTSxVQUFVLFNBQVMsQ0FBQyxNQUFNO0lBQzlCLElBQUksTUFBTSxFQUFFO1FBQ1YsSUFBSSxVQUFVLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDdkQsVUFBVSxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzlDLFVBQVUsR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztRQUM1QyxPQUFPLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztLQUNqQztBQUNILENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLHlCQUF5QixDQUFDLEtBQVU7SUFDaEQsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsNkJBQTZCLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUN0RixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9ybUFycmF5LCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgVmFsaWRhdG9yRm4gfSBmcm9tICdAYW5ndWxhci9mb3Jtcy8nO1xuaW1wb3J0ICogYXMgY2hhbmNlIGZyb20gJ2NoYW5jZSc7XG5pbXBvcnQgKiBhcyBtb21lbnRJbXBvcnRlZCBmcm9tICdtb21lbnQnO1xuaW1wb3J0IGJ1c2luZXNzIGZyb20gJ21vbWVudC1idXNpbmVzcyc7XG5pbXBvcnQgeyBMb2NhbGVPcHRpb25zIH0gZnJvbSAnQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cyc7XG5pbXBvcnQgeyBGaWVsZFZhbGlkYXRvcnNPYmplY3QgfSBmcm9tICcuLi8uLi9jb3JlL2ludGVyZmFjZXMvZmllbGQtdmFsaWRhdG9ycy1vYmplY3QnO1xuXG5jb25zdCBtb21lbnQgPSBtb21lbnRJbXBvcnRlZDtcblxuZXhwb3J0IGZ1bmN0aW9uIGlzT2JqZWN0KGl0ZW0pIHtcbiAgcmV0dXJuIGl0ZW0gJiYgdHlwZW9mIGl0ZW0gPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KGl0ZW0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNTaGFsbG93KGl0ZW0pIHtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkoaXRlbSkgJiYgaXRlbS5maW5kKHZhbHVlID0+IHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpID8gZmFsc2UgOiB0cnVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29udmVydEJvb2xlYW5TdHJpbmcodmFsdWUpIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgcmV0dXJuIHZhbHVlID09PSB0cnVlID8gJ3RydWUnIDogJ2ZhbHNlJztcbiAgfVxuICByZXR1cm4gdmFsdWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0U3RyaW5nVG9Cb29sZWFuKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSA9PT0gdHJ1ZSB8fCB2YWx1ZS50b0xvd2VyQ2FzZSgpID09PSAndHJ1ZSc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhc3NpZ24odGFyZ2V0LCAuLi5zb3VyY2VzKSB7XG4gIGlmICghc291cmNlcy5sZW5ndGgpIHtcbiAgICByZXR1cm4gdGFyZ2V0O1xuICB9XG5cbiAgY29uc3Qgc291cmNlID0gc291cmNlcy5zaGlmdCgpO1xuICBpZiAoaXNPYmplY3QodGFyZ2V0KSAmJiBpc09iamVjdChzb3VyY2UpKSB7XG4gICAgZm9yIChjb25zdCBrZXkgaW4gc291cmNlKSB7XG4gICAgICBpZiAoaXNPYmplY3Qoc291cmNlW2tleV0pKSB7XG4gICAgICAgIGlmICghdGFyZ2V0W2tleV0pIHtcbiAgICAgICAgICBPYmplY3QuYXNzaWduKHRhcmdldCwgeyBba2V5XToge30gfSk7XG4gICAgICAgIH1cbiAgICAgICAgYXNzaWduKHRhcmdldFtrZXldLCBzb3VyY2Vba2V5XSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoaXNTaGFsbG93KHNvdXJjZVtrZXldKSkge1xuICAgICAgICAgIE9iamVjdC5hc3NpZ24odGFyZ2V0LCB7IFtrZXldOiBzb3VyY2Vba2V5XSB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoIXRhcmdldFtrZXldKSB7XG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKHRhcmdldCwgeyBba2V5XTogW10gfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIE9iamVjdC5hc3NpZ24odGFyZ2V0LCB7IFtrZXldOiBzb3VyY2Vba2V5XS5tYXAoKGl0ZW0sIGluZGV4KSA9PiBhc3NpZ24odGFyZ2V0W2tleV1baW5kZXhdIHx8IHt9LCBpdGVtKSkgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGFzc2lnbih0YXJnZXQsIC4uLnNvdXJjZXMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZCh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgPT09IDAgfHwgdHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbicgPyB0cnVlIDogdmFsdWUgIT09IHVuZGVmaW5lZCAmJiB2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gJyc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkRGF0ZSh2YWx1ZSwgd2l0aERheXMgPSB0cnVlKSB7XG4gIGlmICh2YWx1ZSAmJiBpc0Z1bGxEYXRlKHZhbHVlLCB3aXRoRGF5cykpIHtcbiAgICBpZiAod2l0aERheXMpIHtcbiAgICAgIHJldHVybiBtb21lbnQodmFsdWUucmVwbGFjZSgvW15cXGRdKy9nLCAnJyksICdERE1NWVlZWScpLmlzVmFsaWQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG1vbWVudCh2YWx1ZS5yZXBsYWNlKC9bXlxcZF0rL2csICcnKSwgJ01NWVlZWScpLmlzVmFsaWQoKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0Z1bGxEYXRlKHZhbHVlLCB3aXRoRGF5cyA9IHRydWUpIHtcbiAgaWYgKHZhbHVlKSB7XG4gICAgbGV0IHRvdGFsTGVuZ3RoO1xuICAgIGlmICh3aXRoRGF5cykge1xuICAgICAgdG90YWxMZW5ndGggPSA4O1xuICAgIH0gZWxzZSB7XG4gICAgICB0b3RhbExlbmd0aCA9IDY7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZS5yZXBsYWNlKC9bXlxcZF0rL2csICcnKS5sZW5ndGggPT09IHRvdGFsTGVuZ3RoO1xuICB9XG4gIHJldHVybiB0cnVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXV0b0NvbXBsZXRlT2JqZWN0Rm9ySWRPYmplY3QodGFibGVJZE9iamVjdCkge1xuICBpZiAoIWlzT2JqZWN0KHRhYmxlSWRPYmplY3QpKSB7XG4gICAgY29uc29sZS5lcnJvcignUGFyYW1lbnRybyBuw6NvIMOpIHVtIG9iamV0bycpO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICh0YWJsZUlkT2JqZWN0Lmhhc093blByb3BlcnR5KCd0YWJsZUlkJykpIHtcbiAgICBjb25zb2xlLmVycm9yKCdQYXJhbWVudHJvIG7Do28gw6kgdW0gb2JqZXRvIEF1dG8gQ29tcGxldGUgdsOhbGlkbywgZmFsdGEgdGFibGVJZCcpO1xuICB9XG5cbiAgaWYgKCFpc1ZhbGlkKHRhYmxlSWRPYmplY3QudGFibGVJZCkpIHtcbiAgICBjb25zb2xlLmVycm9yKCd0YWJsZUlkIGVzdGEgdmF6aW8nKTtcbiAgfVxuXG4gIHJldHVybiB7IGlkOiB0YWJsZUlkT2JqZWN0LnRhYmxlSWQgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRGF0ZUZpZWxkKG5hbWUsIHZhbHVlKSB7XG4gIGNvbnN0IHRlc3REYXRlID0gbmFtZS5zZWFyY2goJ0RhdGUnKTtcbiAgaWYgKHRlc3REYXRlICE9PSAtMSkge1xuICAgIHJldHVybiBpbnZlcnRGaWVsZERhdGUodmFsdWUpO1xuICB9XG4gIHJldHVybiB2YWx1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGludmVydEZpZWxkRGF0ZSh2YWx1ZSwgaW5Gb3JtYXQgPSAnRERNTVlZWVknLCBvdXRGb3JtYXQgPSAnWVlZWS1NTS1ERCcpIHtcbiAgaWYgKCFpc1ZhbGlkKHZhbHVlKSkge1xuICAgIHJldHVybjtcbiAgfVxuICBjb25zdCBmb3JtYXRJbiA9IGdldEZvcm1hdERhdGUodmFsdWUsIGluRm9ybWF0KTtcbiAgcmV0dXJuIG1vbWVudCh2YWx1ZS5yZXBsYWNlKC9bXlxcZF0rL2csICcnKSwgZm9ybWF0SW4pLmZvcm1hdChvdXRGb3JtYXQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWRkV2Vla0RheXNCdXNpbmVzcyh2YWx1ZSwgcXVhbnRpZGFkZSkge1xuICByZXR1cm4gYnVzaW5lc3MuYWRkV2Vla0RheXMoZ2V0TW9tZW50KHZhbHVlKSwgcXVhbnRpZGFkZSkuZm9ybWF0KCdERC9NTS9ZWVlZJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRXZWVrRGF5c0J1c2luZXNzKHN0YXJ0RGF0ZSwgZW5kRGF0ZSkge1xuICBjb25zdCBlbmRNb21lbnQgPSBlbmREYXRlID8gZ2V0TW9tZW50KGVuZERhdGUpIDogZ2V0TW9tZW50KHN0YXJ0RGF0ZSkuZW5kT2YoJ21vbnRoJyk7XG4gIHJldHVybiBidXNpbmVzcy53ZWVrRGF5cyhnZXRNb21lbnQoc3RhcnREYXRlKSwgZW5kTW9tZW50KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZvcm1hdERhdGUodmFsdWUsIGluRm9ybWF0KSB7XG4gIGlmICh2YWx1ZS5zZWFyY2goJy8nKSAhPT0gLTEpIHtcbiAgICByZXR1cm4gJ0RETU1ZWVlZJztcbiAgfSBlbHNlIGlmICh2YWx1ZS5zZWFyY2goJy0nKSAhPT0gLTEpIHtcbiAgICByZXR1cm4gJ1lZWVlNTUREJztcbiAgfVxuICByZXR1cm4gaW5Gb3JtYXQ7XG59XG5cbi8qKlxuICogRklYTUUgLSBFc3TDoSBmaXhvIHBhcmEgdXNvIGRvIGNhbGVuZMOhcmlvIHBvcnR1Z3VlcyBCcmFzaWxcbiAqIEBwYXJhbSB2YWx1ZVxuICogQHBhcmFtIG91dEZvcm1hdFxuICogQHJldHVybnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5nQ2FsZW5kYXJGb3JtYXQodmFsdWUsIG91dEZvcm1hdCA9ICdERC9NTS9ZWVlZJykge1xuICBpZiAoaXNWYWxpZERhdGUodmFsdWUpKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIF9tb21lbnQodmFsdWUpLmZvcm1hdChvdXRGb3JtYXQpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Tm93RGF0ZShvdXRGb3JtYXQgPSAnWVlZWS1NTS1ERCcpIHtcbiAgcmV0dXJuIG1vbWVudCgpLmZvcm1hdChvdXRGb3JtYXQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TW9tZW50KHZhbHVlLCBpbkZvcm1hdCA9ICdERE1NWVlZWScpIHtcbiAgY29uc3QgZm9ybWF0SW4gPSBnZXRGb3JtYXREYXRlKHZhbHVlLCBpbkZvcm1hdCk7XG4gIHJldHVybiBtb21lbnQodmFsdWUucmVwbGFjZSgvW15cXGRdKy9nLCAnJyksIGZvcm1hdEluKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9tb21lbnQodmFsdWUsIGZvcm1hdD86IHN0cmluZykge1xuICBpZiAoZm9ybWF0KSB7XG4gICAgcmV0dXJuIG1vbWVudCh2YWx1ZSwgZm9ybWF0KTtcbiAgfVxuICByZXR1cm4gbW9tZW50KHZhbHVlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE9ialZhbGlkcyhvYmpzKSB7XG4gIGNvbnN0IGpzb24gPSBPYmplY3QuYXNzaWduKHt9LCBvYmpzKTtcbiAgY29uc3QganNvblJldHVybiA9IHt9O1xuICBPYmplY3Qua2V5cyhqc29uKS5tYXAoa2V5ID0+IHtcbiAgICBpZiAoaXNWYWxpZChqc29uW2tleV0pKSB7XG4gICAgICBqc29uUmV0dXJuW2tleV0gPSBpc0RhdGVGaWVsZChrZXksIGpzb25ba2V5XSk7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIGpzb25SZXR1cm47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVFbXB0eShvYmopIHtcbiAgT2JqZWN0LmtleXMob2JqKS5mb3JFYWNoKFxuICAgIGsgPT4gKG9ialtrXSAmJiB0eXBlb2Ygb2JqW2tdID09PSAnb2JqZWN0JyAmJiByZW1vdmVFbXB0eShvYmpba10pKSB8fCAoIW9ialtrXSAmJiBvYmpba10gIT09IHVuZGVmaW5lZCAmJiBkZWxldGUgb2JqW2tdKVxuICApO1xuICByZXR1cm4gb2JqO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0TW9uZXkodmFsdWUsIGkxOG4gPSAnRU4nKSB7XG4gIHN3aXRjaCAoaTE4bikge1xuICAgIGNhc2UgJ0VOJzpcbiAgICAgIHJldHVybiBpc1ZhbGlkKHZhbHVlKVxuICAgICAgICA/IHZhbHVlXG4gICAgICAgICAgICAudG9TdHJpbmcoKVxuICAgICAgICAgICAgLnJlcGxhY2UoJy4nLCAnJylcbiAgICAgICAgICAgIC5yZXBsYWNlKCcsJywgJy4nKVxuICAgICAgICA6ICcnO1xuICAgIGNhc2UgJ0JSJzpcbiAgICAgIHJldHVybiBpc1ZhbGlkKHZhbHVlKVxuICAgICAgICA/IHZhbHVlXG4gICAgICAgICAgICAudG9TdHJpbmcoKVxuICAgICAgICAgICAgLnJlcGxhY2UoJy4nLCAnLCcpXG4gICAgICAgICAgICAucmVwbGFjZSgvKFxcZCkoPz0oXFxkezN9KSsoPyFcXGQpKS9nLCAnJDEuJylcbiAgICAgICAgOiAnJztcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGlzVmFsaWQodmFsdWUpXG4gICAgICAgID8gdmFsdWVcbiAgICAgICAgICAgIC50b1N0cmluZygpXG4gICAgICAgICAgICAucmVwbGFjZSgnLicsICcnKVxuICAgICAgICAgICAgLnJlcGxhY2UoJywnLCAnLicpXG4gICAgICAgIDogJyc7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVpaWQoKSB7XG4gIHJldHVybiBuZXcgY2hhbmNlKClcbiAgICAuZ3VpZCgpXG4gICAgLnJlcGxhY2UoL1teYS16QS1aMC05Ll0vZywgJycpXG4gICAgLnRvVXBwZXJDYXNlKCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtb3VudEN1c3RvbUZvclNhdmUoY3VzdG9tLCBjdXN0b21FbnRpdHkgPSBudWxsLCBsb2NhbGUgPSBudWxsKSB7XG4gIGNvbnN0IGN1c3RvbkZpZWxkID0gW107XG4gIGlmIChjdXN0b21FbnRpdHkgJiYgY3VzdG9tLmxlbmd0aCkge1xuICAgIGN1c3RvbUVudGl0eS5tYXAoKHZhbCwga2V5KSA9PiB7XG4gICAgICBjb25zdCBmaWVsZCA9IE9iamVjdC5rZXlzKGN1c3RvbVtrZXldKS50b1N0cmluZygpO1xuICAgICAgY29uc3QgdmFsT3JudWxsID0gaXNWYWxpZChjdXN0b21ba2V5XVtmaWVsZF0pID8gY3VzdG9tW2tleV1bZmllbGRdIDogbnVsbDtcbiAgICAgIGNvbnN0IHZhbHVlID1cbiAgICAgICAgdmFsLnR5cGUgPT09ICdkYXRlJyAmJiBsb2NhbGUgJiYgaXNWYWxpZCh2YWxPcm51bGwpID8gbW9tZW50KHZhbE9ybnVsbCwgZ2V0Rm9ybWF0KGxvY2FsZSkpLmZvcm1hdCgnWVlZWS1NTS1ERCcpIDogdmFsT3JudWxsO1xuICAgICAgY3VzdG9uRmllbGQucHVzaCh7XG4gICAgICAgIGZpZWxkOiBmaWVsZCxcbiAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIGN1c3RvbkZpZWxkLmxlbmd0aCA/IGN1c3RvbkZpZWxkIDogbnVsbDtcbn1cblxuLyoqXG4gKiBQcmVwYXJhIG8gb2JqZXRvIGRlIGNhbXBvcyBjdXN0b21pemFkb3MgcGFyYSBzYWx2YXIgYXMgZW50aWRhZGVzIHF1ZVxuICogc8OjbyB1dGlsaXphZGFzIGEgcGFydGlyIGRvIENSVUQgY3VzdG9taXphZG8uXG4gKiBAcGFyYW0gb2JqZWN0RmllbGRzIG9iamV0byBjb20gb3MgY2FtcG9zIGN1c3RvbWl6YWRvcyBkYSBlbnRpZGFkZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1vdW50Q3VzdG9tVG9TYXZlKG9iamVjdEZpZWxkcykge1xuICBjb25zdCBjdXN0b21GaWVsZHMgPSBbXTtcbiAgT2JqZWN0LmVudHJpZXMob2JqZWN0RmllbGRzKS5mb3JFYWNoKChbZmllbGQsIHZhbHVlXSkgPT4ge1xuICAgIGN1c3RvbUZpZWxkcy5wdXNoKHtcbiAgICAgIGZpZWxkOiBmaWVsZCxcbiAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICB9KTtcbiAgfSk7XG4gIHJldHVybiBjdXN0b21GaWVsZHM7XG59XG5cbi8qKlxuICogUHJlcGFyYSBvIG9iamV0byBkZSBjYW1wb3MgY3VzdG9taXphZG9zIHBhcmEgZXhpYmlyIGFzIGVudGlkYWRlcyBxdWVcbiAqIHPDo28gdXRpbGl6YWRhcyBhIHBhcnRpciBkbyBDUlVEIGN1c3RvbWl6YWRvLlxuICogQHBhcmFtIGN1c3RvbUZpZWxkcyBvYmpldG8gY29tIG9zIGNhbXBvcyBjdXN0b21pemFkb3MgZGEgZW50aWRhZGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtb3VudEN1c3RvbVRvU2hvdyhjdXN0b21GaWVsZHMpIHtcbiAgY29uc3QgY3VzdG9tRmllbGRzVG9TaG93ID0ge307XG4gIGlmIChjdXN0b21GaWVsZHMgJiYgY3VzdG9tRmllbGRzLmxlbmd0aCkge1xuICAgIGN1c3RvbUZpZWxkcy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgaWYgKGl0ZW0udHlwZSA9PT0gJ2RhdGUnICYmIGl0ZW0udmFsdWUpIHtcbiAgICAgICAgaXRlbS52YWx1ZSA9IF9tb21lbnQoaXRlbS52YWx1ZSkuZm9ybWF0KCdMJyk7XG4gICAgICB9XG4gICAgICBjdXN0b21GaWVsZHNUb1Nob3dbaXRlbS5maWVsZF0gPSBpdGVtLnZhbHVlO1xuICAgIH0pO1xuICB9XG4gIHJldHVybiBjdXN0b21GaWVsZHNUb1Nob3c7XG59XG5cbi8qKlxuICogUHJlcGFyYSBvIG9iamV0byBkZSBjYW1wb3MgY3VzdG9taXphZG9zIHBhcmEgc2FsdmFyIGFzIGVudGlkYWRlcyBxdWVcbiAqIHPDo28gdXRpbGl6YWRhcyBhIHBhcnRpciBkbyBDUlVEIGdlcmFkby5cbiAqIEBwYXJhbSBvYmplY3RGaWVsZHMgb2JqZXRvIGNvbSBvcyBjYW1wb3MgY3VzdG9taXphZG9zIGRhIGVudGlkYWRlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbW91bnRHZW5lcmF0ZWRDdXN0b21Ub1NhdmUob2JqZWN0RmllbGRzKSB7XG4gIE9iamVjdC5lbnRyaWVzKG9iamVjdEZpZWxkcykuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgZGVsZXRlIG9iamVjdEZpZWxkc1trZXldO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBvYmplY3RGaWVsZHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtb3VudEN1c3RvbUZvclNob3coY3VzdG9tKSB7XG4gIGNvbnN0IGN1c3RvbUZpZWxkID0gW107XG4gIE9iamVjdC5rZXlzKGN1c3RvbSB8fCB7fSkuZm9yRWFjaCh2YWwgPT4ge1xuICAgIGlmIChjdXN0b21bdmFsXS50eXBlID09PSAnZGF0ZScgJiYgY3VzdG9tW3ZhbF0udmFsdWUpIHtcbiAgICAgIGN1c3RvbVt2YWxdLnZhbHVlID0gX21vbWVudChjdXN0b21bdmFsXS52YWx1ZSkuZm9ybWF0KCdMJyk7XG4gICAgfVxuICAgIGN1c3RvbUZpZWxkLnB1c2goY3VzdG9tW3ZhbF0pO1xuICB9KTtcbiAgcmV0dXJuIGN1c3RvbUZpZWxkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0VmFsdWVDdXN0b20oY3VzdG9uRmllbGRzLCBjdXN0b20pIHtcbiAgY29uc3QgaXNDdXN0b25zID0gY3VzdG9tID8gT2JqZWN0LmtleXMoY3VzdG9tKS5sZW5ndGggOiAwO1xuICBjdXN0b25GaWVsZHMubWFwKHZhbCA9PiB7XG4gICAgdmFsLnZhbHVlID0gaXNDdXN0b25zID4gMCA/IGN1c3RvbVt2YWwuZmllbGRdIDogbnVsbDtcbiAgfSk7XG4gIHJldHVybiBjdXN0b25GaWVsZHM7XG59XG5cbi8qKlxuICogIEFkaWNpb25hIHVtIGVycm8gbm8gY29udHJvbGUgZG8gZm9ybXVsw6FyaW8uIERldmUgc2VyIGNoYW1hZG8gY29tIC5jYWxsIHBhc3NhbmRvIG8gY29udGV4dG8gZGEgY2xhc3MuXG4gKiAgRXguOiBzZXRFcnJvcnMuY2FsbCh0aGlzLmNvbnRyYWN0R3JvdXAsICdyZWdpc3RlckVtcGxveWVlTnVtYmVyJywgJ2V4aXN0JywgIXBheWxvYWQpXG4gKlxuICogQHBhcmFtIGZvcm1Db250cm9sTmFtZSBOb21lIGRvIGNvbnRyb2xlIGRvIGZvcm11bMOhcmlvLlxuICogQHBhcmFtIGtleUVycm9yIE5vbWUgZG8gZXJyb3IgYSBzZXIgZXhpYmlkbyBlbSB0ZWxhLlxuICogQHBhcmFtIGlzSW52YWxpZCBTZSBob3V2ZXIgYWxndW0gZXJybyBkZSB2YWxpZGHDp8OjbyBubyBjYW1wby5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldEVycm9ycyhmb3JtQ29udHJvbE5hbWU6IHN0cmluZywga2V5RXJyb3I6IHN0cmluZywgaXNJbnZhbGlkOiBib29sZWFuKTogdm9pZCB7XG4gIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgIGlmIChpc0ludmFsaWQpIHtcbiAgICAgIGNvbnN0IGVycm9ycyA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMuZ2V0KGZvcm1Db250cm9sTmFtZSkuZXJyb3JzKTtcbiAgICAgIGVycm9yc1trZXlFcnJvcl0gPSBpc0ludmFsaWQ7XG4gICAgICB0aGlzLmdldChmb3JtQ29udHJvbE5hbWUpLnNldEVycm9ycyhlcnJvcnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBlcnJvcnMgPSB0aGlzLmdldChmb3JtQ29udHJvbE5hbWUpLmVycm9ycztcblxuICAgICAgaWYgKGVycm9ycyAmJiBPYmplY3Qua2V5cyhlcnJvcnMpLmxlbmd0aCkge1xuICAgICAgICBkZWxldGUgZXJyb3JzW2tleUVycm9yXTtcblxuICAgICAgICBpZiAoIU9iamVjdC5rZXlzKGVycm9ycykubGVuZ3RoKSB7XG4gICAgICAgICAgdGhpcy5nZXQoZm9ybUNvbnRyb2xOYW1lKS5zZXRFcnJvcnMobnVsbCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0sIDApO1xufVxuXG4vKipcbiAqIEZheiBsb29wIGRvIG5vcyBjb250cm9scyBkbyBmb3JtdWzDoXJpbyBlIHN1YkFycmF5IGNhc28gZXhpc3RpclxuICogc2V0YW5kbyBvcyBpbnbDoWxpZG9zXG4gKiBFeC46IHZlcmlmeVZhbGlkYXRpb25zRm9ybS5jYWxsKHRoaXMuaW5pdGlhbEdyb3VwKTtcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZlcmlmeVZhbGlkYXRpb25zRm9ybSgpIHtcbiAgT2JqZWN0LmtleXModGhpcy5jb250cm9scykubWFwKGZpZWxkID0+IHtcbiAgICBjb25zdCBjb250cm9sID0gdGhpcy5nZXQoZmllbGQpO1xuICAgIGNvbnRyb2wubWFya0FzRGlydHkoKTtcbiAgICBpZiAoY29udHJvbCBpbnN0YW5jZW9mIEZvcm1Hcm91cCB8fCBjb250cm9sIGluc3RhbmNlb2YgRm9ybUFycmF5KSB7XG4gICAgICB2ZXJpZnlWYWxpZGF0aW9uc0Zvcm0uY2FsbChjb250cm9sKTtcbiAgICB9XG4gIH0pO1xufVxuXG4vKipcbiAqIFJldG9ybmEgYSBpZGFkZSBkZSBhY29yZG8gY29tIGEgZGF0YSBkZSBuYXNjaW1lbnRvLlxuICpcbiAqIEBwYXJhbSBiaXJ0aGRheURhdGUgRGF0YSBkZSBuYXNjaW1lbnRvLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0WWVhcnMoYmlydGhkYXkpIHtcbiAgY29uc3QgY3VycmVudERhdGUgPSBtb21lbnQoKTtcbiAgY29uc3QgeWVhcnMgPSBjdXJyZW50RGF0ZS5kaWZmKGJpcnRoZGF5LCAneWVhcnMnLCBmYWxzZSk7XG4gIHJldHVybiB5ZWFycztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldEN1c3RvbkZpZWxkcyhjdXN0b21GaWVsZHMpIHtcbiAgY3VzdG9tRmllbGRzLm1hcCh2YWwgPT4ge1xuICAgIGNvbnN0IGFkZEN1c3RvbiA9IHt9O1xuICAgIGxldCB2YWx1ZSA9IHZhbC52YWx1ZSB8fCBudWxsO1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJykge1xuICAgICAgdmFsdWUgPSB2YWx1ZSA/ICd0cnVlJyA6ICdmYWxzZSc7XG4gICAgfVxuICAgIGFkZEN1c3Rvblt2YWwuZmllbGRdID0gbmV3IEZvcm1Db250cm9sKHZhbHVlKTtcbiAgICB0aGlzLnB1c2gobmV3IEZvcm1Hcm91cChhZGRDdXN0b24pKTtcbiAgfSk7XG4gIHJldHVybiBjdXN0b21GaWVsZHM7XG59XG5cbiAgICBleHBvcnQgZnVuY3Rpb24gc2V0UmVxdWlyZWQoZm9ybUdyb3VwOiBGb3JtR3JvdXAsIG5hbWU6IHN0cmluZywgcmVxdWlyZWQ6IGJvb2xlYW4sIHZhbGlkYXRvcnM/OiBWYWxpZGF0b3JGbltdKSB7XG4gIGlmIChyZXF1aXJlZCkge1xuICAgIGZvcm1Hcm91cC5jb250cm9sc1tuYW1lXS5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMuY29tcG9zZSh2YWxpZGF0b3JzICYmIHZhbGlkYXRvcnMubGVuZ3RoID8gdmFsaWRhdG9ycyA6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSkpO1xuICAgIGZvcm1Hcm91cC5jb250cm9sc1tuYW1lXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gIH0gZWxzZSB7XG4gICAgZm9ybUdyb3VwLmNvbnRyb2xzW25hbWVdLnNldFZhbGlkYXRvcnMobnVsbCk7XG4gICAgZm9ybUdyb3VwLmNvbnRyb2xzW25hbWVdLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgfVxufVxuXG4vKipcbiAqIEVzc2UgbcOpdG9kbyB0ZW0gY29tbyBmdW7Dp8OjbyBzZXRhciBvcyBjYW1wb3MgZW5hYmxlIG91IGRpc2FibGUuXG4gKiBAcGFyYW0gZm9ybUdyb3VwIEZvcm1Hcm91cCBvbmRlIHNlIGVuY29udHJhIG9zIGNhbXBvcyBhIHNlcmVtIGFsdGVyYWRvcy5cbiAqIEBwYXJhbSBjb25kaXRpb24gQ29uZGnDp8OjbyBwYXJhIHZhbGlkYcOnw6NvLiBUcnVlID0gZW5hYmxlZCwgRmFsc2UgPSBkaXNhYmxlZC5cbiAqIEBwYXJhbSBmaWVsZHMgQ2FtcG9zIGEgc2VyZW0gbWFuaXB1bGFkb3MuXG4gKiBAcGFyYW0gZmllbGRzVG9DbGVhciBDYW1wb3MgYSBzZXJlbSBsaW1wb3MuIMOJIG9waWNpb25hbCBlIHNlIG7Do28gZm9pIHBhc3NhZG8gbyBtw6l0b2RvIGxpbXBhcsOhIG9zIG1lc21vcyBjYW1wb3MgZG9zIGZpZWxkcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbmZpZ0VuYWJsZWRGaWVsZHMoZm9ybUdyb3VwOiBGb3JtR3JvdXAsIGNvbmRpdGlvbjogYm9vbGVhbiwgZmllbGRzOiBBcnJheTxzdHJpbmc+LCBmaWVsZHNUb0NsZWFyPzogQXJyYXk8c3RyaW5nPikge1xuICBpZiAoY29uZGl0aW9uKSB7XG4gICAgZmllbGRzLmZvckVhY2goZmllbGQgPT4gZm9ybUdyb3VwLmdldChmaWVsZCkuZW5hYmxlKCkpO1xuICB9IGVsc2Uge1xuICAgIGZpZWxkcy5mb3JFYWNoKGZpZWxkID0+IGZvcm1Hcm91cC5nZXQoZmllbGQpLmRpc2FibGUoKSk7XG4gICAgY2xlYXJWYWx1ZXMoZm9ybUdyb3VwLCBmaWVsZHNUb0NsZWFyID8gZmllbGRzVG9DbGVhciA6IGZpZWxkcyk7XG4gIH1cbn1cblxuLyoqXG4gKiBFc3NlIG3DqXRvZG8gdGVtIGNvbW8gZnVuw6fDo28gc2V0YXIgb3MgY2FtcG9zIGNvbW8gcmVxdWVyaWRvcyBvdSBuw6NvLlxuICpcbiAqIEBwYXJhbSBmb3JtR3JvdXAgRm9ybUdyb3VwIG9uZGUgc2UgZW5jb250cmEgb3MgY2FtcG9zIGEgc2VyZW0gYWx0ZXJhZG9zLlxuICogQHBhcmFtIGNvbmRpdGlvbiBTZSBzZXLDoSBvdSBuw6NvIHJlcXVlcmlkb3MuXG4gKiBAcGFyYW0gZmllbGRzIExpc3RhIGRlIGNhbXBvcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldFJlcXVpcmVkRmllbGRzKGZvcm1Hcm91cDogRm9ybUdyb3VwLCBjb25kaXRpb246IGJvb2xlYW4sIGZpZWxkczogQXJyYXk8c3RyaW5nPikge1xuICBpZiAoY29uZGl0aW9uKSB7XG4gICAgZmllbGRzLmZvckVhY2goZmllbGQgPT4gc2V0UmVxdWlyZWQoZm9ybUdyb3VwLCBmaWVsZCwgdHJ1ZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSk7XG4gIH0gZWxzZSB7XG4gICAgZmllbGRzLmZvckVhY2goZmllbGQgPT4gc2V0UmVxdWlyZWQoZm9ybUdyb3VwLCBmaWVsZCwgZmFsc2UpKTtcbiAgfVxufVxuXG5cbi8qKlxuICogRXNzZSBtw6l0b2RvIHRlbSBjb21vIGZ1bsOnw6NvIHNldGFyIHZhbGlkYcOnw7VlcyBkaW7Dom1pY2FzIG5vcyBjYW1wb3MuXG4gKlxuICogQHBhcmFtIGZvcm1Hcm91cCBGb3JtR3JvdXAgb25kZSBzZSBlbmNvbnRyYSBvcyBjYW1wb3MgYSBzZXJlbSBhbHRlcmFkb3MuXG4gKiBAcGFyYW0gZmllbGRzIExpc3RhIGRlIG9iamV0b3MgW3tmaWVsZDogY2FtcG8sIHZhbGlkYXRvcnM6IHZhbGlkYcOnw7VlcywgZGlzYWJsZTogYm9vbGVhbn1dLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0VmFsaWRhdG9yc0FuZERpc2FibGVGaWVsZHMoZm9ybUdyb3VwOiBGb3JtR3JvdXAsIGZpZWxkczogQXJyYXk8RmllbGRWYWxpZGF0b3JzT2JqZWN0Pikge1xuICAgIGZpZWxkcy5mb3JFYWNoKChjdXJyZW50RmllbGQ6IEZpZWxkVmFsaWRhdG9yc09iamVjdCkgPT4ge1xuICAgICAgICBzZXRWYWxpZGF0b3IoZm9ybUdyb3VwLCBjdXJyZW50RmllbGQuZmllbGQsICBjdXJyZW50RmllbGQudmFsaWRhdG9ycyk7XG4gICAgICAgIHNldERpc2FibGVGaWVsZChmb3JtR3JvdXAsIGN1cnJlbnRGaWVsZC5kaXNhYmxlZCwgIGN1cnJlbnRGaWVsZC5maWVsZCwgY3VycmVudEZpZWxkLmNsZWFyVmFsdWUpO1xuICAgIH0pO1xufVxuXG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRWYWxpZGF0b3IoZm9ybUdyb3VwOiBGb3JtR3JvdXAsIG5hbWU6IHN0cmluZywgdmFsaWRhdG9ycz86IFZhbGlkYXRvckZuW10pIHtcbiAgICBpZiAodmFsaWRhdG9ycyAmJiB2YWxpZGF0b3JzLmxlbmd0aCkge1xuICAgICAgICBmb3JtR3JvdXAuY29udHJvbHNbbmFtZV0uc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLmNvbXBvc2UodmFsaWRhdG9ycykpO1xuICAgICAgICBmb3JtR3JvdXAuY29udHJvbHNbbmFtZV0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGZvcm1Hcm91cC5jb250cm9sc1tuYW1lXS5zZXRWYWxpZGF0b3JzKG51bGwpO1xuICAgICAgICBmb3JtR3JvdXAuY29udHJvbHNbbmFtZV0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgIH1cbn1cblxuXG4vKipcbiAqIEVzc2UgbcOpdG9kbyB0ZW0gY29tbyBmdW7Dp8OjbyBzZXRhciBvcyBjYW1wb3MgZW5hYmxlIG91IGRpc2FibGUuXG4gKiBAcGFyYW0gZm9ybUdyb3VwIEZvcm1Hcm91cCBvbmRlIHNlIGVuY29udHJhIG9zIGNhbXBvcyBhIHNlcmVtIGFsdGVyYWRvcy5cbiAqIEBwYXJhbSBjb25kaXRpb24gQ29uZGnDp8OjbyBwYXJhIHZhbGlkYcOnw6NvLiBUcnVlID0gZGlzYWJsZWQsIEZhbHNlID0gZW5hYmxlZC5cbiAqIEBwYXJhbSBmaWVsZCBDYW1wbyBhIHNlciBtYW5pcHVsYWRvcy5cbiAqIEBwYXJhbSBjbGVhclZhbHVlIENhbXBvcyBhIHNlciBsaW1wb3MuIMOJIG9waWNpb25hbCBlIHNlIG7Do28gZm9pIHBhc3NhZG8gbyBtw6l0b2RvIGxpbXBhcsOhIG8gY2FtcG8gZG8gZmllbGQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXREaXNhYmxlRmllbGQoZm9ybUdyb3VwOiBGb3JtR3JvdXAsIGNvbmRpdGlvbjogYm9vbGVhbiwgZmllbGQ6IHN0cmluZywgY2xlYXJWYWx1ZTogYm9vbGVhbiA9IHRydWUpIHtcbiAgICBpZiAoY29uZGl0aW9uKSB7XG4gICAgICAgIGZvcm1Hcm91cC5nZXQoZmllbGQpLmRpc2FibGUoKTtcbiAgICAgICAgaWYgKGNsZWFyVmFsdWUpIGZvcm1Hcm91cC5nZXQoZmllbGQpLnJlc2V0KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgZm9ybUdyb3VwLmdldChmaWVsZCkuZW5hYmxlKCk7XG4gICAgfVxufVxuXG4vKipcbiAqIE9yZGVuYSBhcnJheSBkZSBvYmpldG9zXG4gKiBAcGFyYW0ga2V5IG8gY2FtcG8gcXVlIGRlc2VqYSBvcmRlbmFyXG4gKiBAcGFyYW0gb3JkZXIgYSBvcmRlbSBxdWUgZGVzZWphIG9yZGVuYXIgbyBjYW1wb1xuICovXG5leHBvcnQgZnVuY3Rpb24gY29tcGFyZVZhbHVlcyhrZXk6IHN0cmluZywgb3JkZXI6IHN0cmluZyA9IFwiQVNDXCIpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gaW5uZXJTb3J0KGE6IGFueSwgYjogYW55KSB7XG4gICAgICAgIGlmICghYS5oYXNPd25Qcm9wZXJ0eShrZXkpIHx8ICFiLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdmFyQSA9ICh0eXBlb2YgYVtrZXldID09PSBcInN0cmluZ1wiKVxuICAgICAgICAgICAgPyBhW2tleV0udG9VcHBlckNhc2UoKSA6IGFba2V5XTtcbiAgICAgICAgY29uc3QgdmFyQiA9ICh0eXBlb2YgYltrZXldID09PSBcInN0cmluZ1wiKVxuICAgICAgICAgICAgPyBiW2tleV0udG9VcHBlckNhc2UoKSA6IGJba2V5XTtcblxuICAgICAgICBsZXQgY29tcGFyaXNvbiA9IDA7XG4gICAgICAgIGlmICh2YXJBID4gdmFyQikge1xuICAgICAgICAgICAgY29tcGFyaXNvbiA9IDE7XG4gICAgICAgIH0gZWxzZSBpZiAodmFyQSA8IHZhckIpIHtcbiAgICAgICAgICAgIGNvbXBhcmlzb24gPSAtMTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgKG9yZGVyID09PSBcIkRFU0NcIikgPyAoY29tcGFyaXNvbiAqIC0xKSA6IGNvbXBhcmlzb25cbiAgICAgICAgKTtcbiAgICB9O1xufVxuXG4vKipcbiAqIEVzc2UgbcOpdG9kbyB0ZW0gY29tbyBmdW7Dp8OjbyBsaW1wYXIgbyB2YWxvciBkb3MgY2FtcG9zLlxuICpcbiAqIEBwYXJhbSBmb3JtR3JvdXAgRm9ybUdyb3VwIG9uZGUgc2UgZW5jb250cmEgb3MgY2FtcG9zIGEgc2VyZW0gbGltcG9zLlxuICogQHBhcmFtIGZpZWxkcyBDYW1wb3MgYSBzZXJlbSBsaW1wb3MuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjbGVhclZhbHVlcyhmb3JtR3JvdXA6IEZvcm1Hcm91cCwgZmllbGRzOiBBcnJheTxzdHJpbmc+KSB7XG4gIGZpZWxkcy5mb3JFYWNoKGZpZWxkID0+IGZvcm1Hcm91cC5nZXQoZmllbGQpLnJlc2V0KCkpO1xufVxuXG4vKipcbiAqXG4gKiBAcGFyYW0gcXMgPSB3aW5kb3cubG9jYXRpb24uc2VhcmNoXG4gKiBAcmV0dXJucyBPYmplY3QgY29tIHBhcmFtZXRyb3MgcXVlcnkgc3RyaW5nXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRRdWVyeVBhcmFtcyhxcykge1xuICBxcyA9IHFzLnNwbGl0KCcrJykuam9pbignICcpO1xuXG4gIGNvbnN0IHBhcmFtcyA9IHt9O1xuICBsZXQgdG9rZW5zO1xuICBjb25zdCByZSA9IC9bPyZdPyhbXj1dKyk9KFteJl0qKS9nO1xuXG4gIHdoaWxlICgodG9rZW5zID0gcmUuZXhlYyhxcykpKSB7XG4gICAgcGFyYW1zW2RlY29kZVVSSUNvbXBvbmVudCh0b2tlbnNbMV0pXSA9IGRlY29kZVVSSUNvbXBvbmVudCh0b2tlbnNbMl0pO1xuICB9XG5cbiAgcmV0dXJuIHBhcmFtcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZvcm1hdChsb2NhbGUpIHtcbiAgaWYgKGxvY2FsZSkge1xuICAgIGxldCBkYXRlRm9ybWF0ID0gbG9jYWxlLmNhbGVuZGFyLmRhdGVGb3JtYXQudG9TdHJpbmcoKTtcbiAgICBkYXRlRm9ybWF0ID0gZGF0ZUZvcm1hdC5yZXBsYWNlKC9beV0vZywgJ1lZJyk7XG4gICAgZGF0ZUZvcm1hdCA9IGRhdGVGb3JtYXQucmVwbGFjZSgvWy9dL2csICcnKTtcbiAgICByZXR1cm4gZGF0ZUZvcm1hdC50b1VwcGVyQ2FzZSgpO1xuICB9XG59XG5cbi8qKlxuICogUmVtb3ZlIG9zIGNhcmFjdGVyZXMgcXVlIG7Do28gc2VqYW0gbsO6bWVyb3MgZG8gdmFsb3JcbiAqIEBwYXJhbSB2YWx1ZSB2YWxvciBhIHNlciB0cmF0YWRvXG4gKiBAcmV0dXJucyBzdHJpbmcgTyB2YWxvciBzZW0gY2FyYWN0ZXJlcyBlc3BlY2lhaXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZUNoYXJhY3RlcmVzU3BlY2lhbHModmFsdWU6IGFueSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHZhbHVlID8gdmFsdWUudG9TdHJpbmcoKS5yZXBsYWNlKC9bJlxcL1xcXFwjLCsoKSR+JS4nXCI6Kj88Pnt9LV0vZywgXCJcIikgOiBudWxsO1xufVxuIl19