general-library-union 3.2.35 → 3.2.37

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 (657) hide show
  1. package/esm2022/general-library-union.mjs +5 -0
  2. package/esm2022/public-api.mjs +183 -0
  3. package/esm2022/src/app/core/componentes/breadcrumb/breadcrumb.component.mjs +40 -0
  4. package/esm2022/src/app/core/componentes/carga-pantalla-completa/carga-pantalla-completa.component.mjs +28 -0
  5. package/esm2022/src/app/core/componentes/filtro-general/filtro-general.component.mjs +203 -0
  6. package/esm2022/src/app/core/componentes/footer/footer.component.mjs +16 -0
  7. package/esm2022/src/app/core/componentes/formulariodinamico/formulariodinamico.component.mjs +276 -0
  8. package/esm2022/src/app/core/componentes/formulariodinamico/objetosformulario/Cambio.mjs +11 -0
  9. package/esm2022/src/app/core/componentes/formulariodinamico/objetosformulario/CampoFormulario.mjs +124 -0
  10. package/esm2022/src/app/core/componentes/formulariodinamico/objetosformulario/CampoFormularioCons.mjs +73 -0
  11. package/esm2022/src/app/core/componentes/formulariodinamico/objetosformulario/CampoFormularioNuevo.mjs +59 -0
  12. package/esm2022/src/app/core/componentes/formulariodinamico/objetosformulario/HashDirective.mjs +21 -0
  13. package/esm2022/src/app/core/componentes/inicio-component/inicio-component.component.mjs +72 -0
  14. package/esm2022/src/app/core/componentes/menu/menu.component.mjs +37 -0
  15. package/esm2022/src/app/core/componentes/tabla-general/tabla-general.component.mjs +93 -0
  16. package/esm2022/src/app/core/core.module.mjs +23 -0
  17. package/esm2022/src/app/core/errores/authentication.error.mjs +7 -0
  18. package/esm2022/src/app/core/modelos/error-response.model.mjs +2 -0
  19. package/esm2022/src/app/core/modelos/table-column.model.mjs +2 -0
  20. package/esm2022/src/app/core/modelos/user.model.mjs +7 -0
  21. package/esm2022/src/app/core/plantilla-general/plantilla-general.template.mjs +230 -0
  22. package/esm2022/src/app/core/servicios/auth.service.mjs +185 -0
  23. package/esm2022/src/app/core/servicios/cargar-control-funcionalidad.service.mjs +54 -0
  24. package/esm2022/src/app/core/servicios/click-posicion.service.mjs +20 -0
  25. package/esm2022/src/app/core/servicios/data-exporter-table.utils.mjs +64 -0
  26. package/esm2022/src/app/core/servicios/error-interceptor.service.mjs +214 -0
  27. package/esm2022/src/app/core/servicios/guardias/auth.guard.mjs +66 -0
  28. package/esm2022/src/app/core/servicios/guardias/publico.guard.mjs +35 -0
  29. package/esm2022/src/app/core/servicios/interceptores/loading-interceptor.mjs +37 -0
  30. package/esm2022/src/app/core/servicios/interceptores/token-interceptor.service.mjs +180 -0
  31. package/esm2022/src/app/core/servicios/loading.service.mjs +43 -0
  32. package/esm2022/src/app/core/servicios/menu.service.mjs +146 -0
  33. package/esm2022/src/app/core/servicios/spinner-service.mjs +22 -0
  34. package/esm2022/src/app/core/servicios/storage.service.mjs +68 -0
  35. package/esm2022/src/app/core/servicios/template.service.mjs +99 -0
  36. package/esm2022/src/app/core/servicios/toast.service.mjs +120 -0
  37. package/esm2022/src/app/core/servicios/utils.service.mjs +349 -0
  38. package/esm2022/src/app/core/sharedlib.module.mjs +16 -0
  39. package/esm2022/src/app/core/utilidades/color.util.mjs +177 -0
  40. package/esm2022/src/app/layout/api/menuchangeevent.mjs +2 -0
  41. package/esm2022/src/app/layout/app.breadcrumb.component.mjs +71 -0
  42. package/esm2022/src/app/layout/app.footer.component.mjs +18 -0
  43. package/esm2022/src/app/layout/app.layout.component.mjs +188 -0
  44. package/esm2022/src/app/layout/app.layout.module.mjs +15 -0
  45. package/esm2022/src/app/layout/app.menu.component.mjs +51 -0
  46. package/esm2022/src/app/layout/app.menu.service.mjs +24 -0
  47. package/esm2022/src/app/layout/app.menuitem.component.mjs +296 -0
  48. package/esm2022/src/app/layout/app.menuprofile.component.mjs +78 -0
  49. package/esm2022/src/app/layout/app.rightmenu.component.mjs +24 -0
  50. package/esm2022/src/app/layout/app.sidebar.component.mjs +92 -0
  51. package/esm2022/src/app/layout/app.topbar.component.mjs +346 -0
  52. package/esm2022/src/app/layout/service/app.layout.service.mjs +134 -0
  53. package/esm2022/src/app/publico/pages/login/login.page.mjs +132 -0
  54. package/esm2022/src/app/publico/pages/not-found/not-found.page.mjs +51 -0
  55. package/esm2022/src/app/publico/pages/seleccion-rol/seleccion-rol.component.mjs +167 -0
  56. package/esm2022/src/app/publico/pages/timeout/timeout.page.mjs +20 -0
  57. package/esm2022/src/app/seguridad/constantes/ConstantesGenerales.mjs +30 -0
  58. package/esm2022/src/app/seguridad/constantes/ReporteEntradaConstantes.mjs +19 -0
  59. package/esm2022/src/app/seguridad/modelos/AplicacionModel.mjs +8 -0
  60. package/esm2022/src/app/seguridad/modelos/ArchivoPortalModel.mjs +14 -0
  61. package/esm2022/src/app/seguridad/modelos/AtributoPuntoModel.mjs +9 -0
  62. package/esm2022/src/app/seguridad/modelos/AtributoSSOportalModel.mjs +17 -0
  63. package/esm2022/src/app/seguridad/modelos/AuditoriaArchivoModel.mjs +11 -0
  64. package/esm2022/src/app/seguridad/modelos/CargueLineaModel.mjs +13 -0
  65. package/esm2022/src/app/seguridad/modelos/ColoresRGB.mjs +18 -0
  66. package/esm2022/src/app/seguridad/modelos/ColumnaFuenteModel.mjs +9 -0
  67. package/esm2022/src/app/seguridad/modelos/ColumnaWraperModel.mjs +6 -0
  68. package/esm2022/src/app/seguridad/modelos/ComplementoModel.mjs +7 -0
  69. package/esm2022/src/app/seguridad/modelos/ComponentePaginaModel.mjs +21 -0
  70. package/esm2022/src/app/seguridad/modelos/ConexionModel.mjs +14 -0
  71. package/esm2022/src/app/seguridad/modelos/ContenidoHtmlPortalModel.mjs +21 -0
  72. package/esm2022/src/app/seguridad/modelos/ControlFuncionModel.mjs +8 -0
  73. package/esm2022/src/app/seguridad/modelos/CorreoModel.mjs +35 -0
  74. package/esm2022/src/app/seguridad/modelos/CorreoOrgEmpModModel.mjs +9 -0
  75. package/esm2022/src/app/seguridad/modelos/CorreoWSModel.mjs +37 -0
  76. package/esm2022/src/app/seguridad/modelos/CruceRecursoPuntoModel.mjs +14 -0
  77. package/esm2022/src/app/seguridad/modelos/DatoInicioModel.mjs +6 -0
  78. package/esm2022/src/app/seguridad/modelos/EjecucionReporteDataModel.mjs +14 -0
  79. package/esm2022/src/app/seguridad/modelos/EmpresaModel.mjs +25 -0
  80. package/esm2022/src/app/seguridad/modelos/EmpresaSeguridadModel.mjs +19 -0
  81. package/esm2022/src/app/seguridad/modelos/EntradaComplementoModel.mjs +7 -0
  82. package/esm2022/src/app/seguridad/modelos/EtiquetaModel.mjs +5 -0
  83. package/esm2022/src/app/seguridad/modelos/Etiquetas.mjs +12 -0
  84. package/esm2022/src/app/seguridad/modelos/ForeingWraperModel.mjs +6 -0
  85. package/esm2022/src/app/seguridad/modelos/FuenteCampoAtributoModel.mjs +16 -0
  86. package/esm2022/src/app/seguridad/modelos/FuenteCampoModel.mjs +17 -0
  87. package/esm2022/src/app/seguridad/modelos/FuenteDato.mjs +19 -0
  88. package/esm2022/src/app/seguridad/modelos/FuenteEntradaModel.mjs +9 -0
  89. package/esm2022/src/app/seguridad/modelos/FuenteGeneralModel.mjs +37 -0
  90. package/esm2022/src/app/seguridad/modelos/FuenteLineaServicioModel.mjs +16 -0
  91. package/esm2022/src/app/seguridad/modelos/FuenteProcesoGeneralModel.mjs +11 -0
  92. package/esm2022/src/app/seguridad/modelos/FuenteServicioModel.mjs +51 -0
  93. package/esm2022/src/app/seguridad/modelos/FuncionalidadModel.mjs +10 -0
  94. package/esm2022/src/app/seguridad/modelos/GeneralModel.mjs +15 -0
  95. package/esm2022/src/app/seguridad/modelos/GrupoAccesoModel.mjs +7 -0
  96. package/esm2022/src/app/seguridad/modelos/GrupoControlFuncionModel.mjs +10 -0
  97. package/esm2022/src/app/seguridad/modelos/GrupoFuenteModel.mjs +13 -0
  98. package/esm2022/src/app/seguridad/modelos/GrupoPermisoModel.mjs +14 -0
  99. package/esm2022/src/app/seguridad/modelos/JoinFromModel.mjs +5 -0
  100. package/esm2022/src/app/seguridad/modelos/ListaServicioModel.mjs +17 -0
  101. package/esm2022/src/app/seguridad/modelos/LlaveForaneaModel.mjs +7 -0
  102. package/esm2022/src/app/seguridad/modelos/LoginModel.mjs +15 -0
  103. package/esm2022/src/app/seguridad/modelos/MensajeSistemaModel.mjs +8 -0
  104. package/esm2022/src/app/seguridad/modelos/MenuPortalModel.mjs +5 -0
  105. package/esm2022/src/app/seguridad/modelos/ModulosModel.mjs +18 -0
  106. package/esm2022/src/app/seguridad/modelos/ObjetoReporteModel.mjs +6 -0
  107. package/esm2022/src/app/seguridad/modelos/PaginaPortalModel.mjs +20 -0
  108. package/esm2022/src/app/seguridad/modelos/ParametroComponenteModel.mjs +9 -0
  109. package/esm2022/src/app/seguridad/modelos/ParametrosGeneralModel.mjs +15 -0
  110. package/esm2022/src/app/seguridad/modelos/PermisoFuncionModel.mjs +9 -0
  111. package/esm2022/src/app/seguridad/modelos/PermisocontenidoModel.mjs +20 -0
  112. package/esm2022/src/app/seguridad/modelos/PeticionModel.mjs +16 -0
  113. package/esm2022/src/app/seguridad/modelos/PreguntaSeguridadModel.mjs +7 -0
  114. package/esm2022/src/app/seguridad/modelos/PropiedadModel.mjs +10 -0
  115. package/esm2022/src/app/seguridad/modelos/PublicacionWebModel.mjs +27 -0
  116. package/esm2022/src/app/seguridad/modelos/PuntoProcesoModel.mjs +7 -0
  117. package/esm2022/src/app/seguridad/modelos/RecursoPunto.mjs +13 -0
  118. package/esm2022/src/app/seguridad/modelos/RecursoPuntoModel.mjs +13 -0
  119. package/esm2022/src/app/seguridad/modelos/ReporteBanda.mjs +8 -0
  120. package/esm2022/src/app/seguridad/modelos/ReporteColumna.mjs +33 -0
  121. package/esm2022/src/app/seguridad/modelos/ReporteColumnario.mjs +69 -0
  122. package/esm2022/src/app/seguridad/modelos/ReporteColumnarioMarcador.mjs +24 -0
  123. package/esm2022/src/app/seguridad/modelos/ReporteEntradaModel.mjs +20 -0
  124. package/esm2022/src/app/seguridad/modelos/ReporteFuenteModel.mjs +124 -0
  125. package/esm2022/src/app/seguridad/modelos/ReporteMarcador.mjs +40 -0
  126. package/esm2022/src/app/seguridad/modelos/ReporteSoporte.mjs +10 -0
  127. package/esm2022/src/app/seguridad/modelos/ReporteTabla.mjs +13 -0
  128. package/esm2022/src/app/seguridad/modelos/RespuestaModel.mjs +9 -0
  129. package/esm2022/src/app/seguridad/modelos/RolModel.mjs +39 -0
  130. package/esm2022/src/app/seguridad/modelos/ServidorCorreoModel.mjs +28 -0
  131. package/esm2022/src/app/seguridad/modelos/SistemaMensajeModel.mjs +9 -0
  132. package/esm2022/src/app/seguridad/modelos/SitioPortalModel.mjs +25 -0
  133. package/esm2022/src/app/seguridad/modelos/TablaFromModel.mjs +5 -0
  134. package/esm2022/src/app/seguridad/modelos/TareasModel.mjs +54 -0
  135. package/esm2022/src/app/seguridad/modelos/TextoModel.mjs +9 -0
  136. package/esm2022/src/app/seguridad/modelos/TipoEtiqueta.mjs +8 -0
  137. package/esm2022/src/app/seguridad/modelos/UnionModel.mjs +12 -0
  138. package/esm2022/src/app/seguridad/modelos/UsuarioModel.mjs +53 -0
  139. package/esm2022/src/app/seguridad/modelos/UsuariogrupoModel.mjs +24 -0
  140. package/esm2022/src/app/seguridad/modelos/aplicacion-propiedad-model.mjs +15 -0
  141. package/esm2022/src/app/seguridad/modelos/contenidoCorreoModel.mjs +10 -0
  142. package/esm2022/src/app/shared/componentes/input-helper-seleccion-plantilla/input-helper-seleccion-plantilla.component.mjs +154 -0
  143. package/esm2022/src/app/shared/servicios/cargar-archivos.service.mjs +54 -0
  144. package/esm2022/src/app/shared/servicios/cargar-mapas.service.mjs +46 -0
  145. package/esm2022/src/app/shared/servicios/encriptado-basico.service.mjs +53 -0
  146. package/esm2022/src/app/shared/servicios/general.service.mjs +104 -0
  147. package/esm2022/src/app/shared/servicios/parametros-navegacion.service.mjs +21 -0
  148. package/esm2022/src/app/webcommon/pages/cargue-plantilla/cargue-plantilla-general/cargue-plantilla-general.component.mjs +378 -0
  149. package/esm2022/src/app/webcommon/pages/ejecucion-reporte/detalle-campo-reporte/detalle-campo-reporte.component.mjs +187 -0
  150. package/esm2022/src/app/webcommon/pages/ejecucion-reporte/detalle-distribucion-reporte/detalle-distribucion-reporte.component.mjs +85 -0
  151. package/esm2022/src/app/webcommon/pages/ejecucion-reporte/detalle-ejecucion-reporte/detalle-ejecucion-reporte.page.mjs +347 -0
  152. package/esm2022/src/app/webcommon/pages/ejecucion-reporte/detalle-entrada-reporte/detalle-entrada-reporte.component.mjs +206 -0
  153. package/esm2022/src/app/webcommon/pages/ejecucion-reporte/detalle-punto-proceso-reporte/detalle-punto-proceso-reporte.component.mjs +327 -0
  154. package/esm2022/src/app/webcommon/pages/ejecucion-reporte/detalle-tipo-reporte/detalle-tipo-reporte.component.mjs +1590 -0
  155. package/esm2022/src/app/webcommon/pages/ejecucion-reporte/listado-ejecucion-reporte/listado-ejecucion-reporte.page.mjs +105 -0
  156. package/esm2022/src/app/webcommon/pages/ejecucion-reporte-externo/listado-ejecucion-reporte-externo/listado-ejecucion-reporte-externo.component.mjs +114 -0
  157. package/esm2022/src/app/webcommon/pages/fuente/importar-fuente-con/importar-fuente-con.component.mjs +597 -0
  158. package/esm2022/src/app/webcommon/pages/fuente/importar-fuente-general/importar-fuente-general.component.mjs +177 -0
  159. package/esm2022/src/app/webcommon/pages/fuente-reporte/fuente-reporte.component.mjs +769 -0
  160. package/esm2022/src/app/webcommon/pages/fuenteGeneral/fuente-general-servicio/fuente-general-servicio.component.mjs +331 -0
  161. package/esm2022/src/app/webcommon/pages/fuenteGeneral/listado-fuente-general/listado-fuente-general.page.mjs +95 -0
  162. package/esm2022/src/app/webcommon/pages/fuenteGeneral/mantenimiento-fuente-general/mantenimiento-fuente-general.page.mjs +675 -0
  163. package/esm2022/src/app/webcommon/pipes/dashboard.pipe.mjs +86 -0
  164. package/esm2022/src/app/webcommon/pipes/fuente.pipe.mjs +201 -0
  165. package/esm2022/src/app/webcommon/pipes/general.pipe.mjs +918 -0
  166. package/esm2022/src/app/webcommon/pipes/reporte-columnario.pipe.mjs +115 -0
  167. package/esm2022/src/app/webcommon/pipes/reporte-fuente.pipe.mjs +301 -0
  168. package/esm2022/src/app/webcommon/popups/popup-campos-fuente-general/popup-campos-fuente-general.component.mjs +267 -0
  169. package/esm2022/src/app/webcommon/popups/popup-convertir-plantillas/popup-convertir-plantillas.component.mjs +128 -0
  170. package/esm2022/src/app/webcommon/popups/popup-editor-formula/popup-editor-formula.component.mjs +73 -0
  171. package/esm2022/src/app/webcommon/popups/popup-punto-proceso/popup-punto-proceso.component.mjs +293 -0
  172. package/esm2022/src/app/webcommon/popups/popup-recurso/popup-recurso.component.mjs +269 -0
  173. package/esm2022/src/app/webcommon/popups/popup-reporte/popup-reporte.component.mjs +563 -0
  174. package/esm2022/src/app/webcommon/popups/popup-sentencia/popup-sentencia.component.mjs +64 -0
  175. package/esm2022/src/app/webcommon/popups/popup-tablas-fuente/popup-tablas-fuente.component.mjs +162 -0
  176. package/esm2022/src/app/webcommon/popups/punto-proceso-comp/punto-proceso-comp.component.mjs +89 -0
  177. package/esm2022/src/app/webcommon/services/carguelinea.service.mjs +69 -0
  178. package/esm2022/src/app/webcommon/services/dashboard.service.mjs +253 -0
  179. package/esm2022/src/app/webcommon/services/ejecucionreporte.service.mjs +114 -0
  180. package/esm2022/src/app/webcommon/services/fechaUtils.service.mjs +97 -0
  181. package/esm2022/src/app/webcommon/services/fuentegeneral.service.mjs +68 -0
  182. package/esm2022/src/app/webcommon/services/homologacion.service.mjs +50 -0
  183. package/esm2022/src/app/webcommon/services/plantillas.service.mjs +129 -0
  184. package/esm2022/src/app/webcommon/services/reportes.service.mjs +95 -0
  185. package/esm2022/src/app/webcommon/webcommon.module.mjs +15 -0
  186. package/esm2022/src/environments/environment.mjs +24 -0
  187. package/fesm2022/general-library-union.mjs +16105 -0
  188. package/fesm2022/general-library-union.mjs.map +1 -0
  189. package/index.d.ts +5 -0
  190. package/package.json +62 -73
  191. package/{public-api.ts → public-api.d.ts} +164 -206
  192. package/src/app/core/componentes/breadcrumb/breadcrumb.component.d.ts +18 -0
  193. package/src/app/core/componentes/carga-pantalla-completa/carga-pantalla-completa.component.d.ts +14 -0
  194. package/src/app/core/componentes/filtro-general/filtro-general.component.d.ts +36 -0
  195. package/src/app/core/componentes/footer/footer.component.d.ts +9 -0
  196. package/src/app/core/componentes/formulariodinamico/formulariodinamico.component.d.ts +50 -0
  197. package/src/app/core/componentes/formulariodinamico/objetosformulario/{Cambio.ts → Cambio.d.ts} +7 -13
  198. package/src/app/core/componentes/formulariodinamico/objetosformulario/CampoFormulario.d.ts +44 -0
  199. package/src/app/core/componentes/formulariodinamico/objetosformulario/CampoFormularioCons.d.ts +45 -0
  200. package/src/app/core/componentes/formulariodinamico/objetosformulario/CampoFormularioNuevo.d.ts +33 -0
  201. package/src/app/core/componentes/formulariodinamico/objetosformulario/HashDirective.d.ts +9 -0
  202. package/src/app/core/componentes/inicio-component/inicio-component.component.d.ts +26 -0
  203. package/src/app/core/componentes/menu/menu.component.d.ts +16 -0
  204. package/src/app/core/componentes/tabla-general/tabla-general.component.d.ts +32 -0
  205. package/src/app/core/core.module.d.ts +8 -0
  206. package/src/app/core/errores/authentication.error.d.ts +3 -0
  207. package/src/app/core/modelos/error-response.model.d.ts +9 -0
  208. package/src/app/core/modelos/table-column.model.d.ts +12 -0
  209. package/src/app/core/modelos/user.model.d.ts +6 -0
  210. package/src/app/core/plantilla-general/plantilla-general.template.d.ts +89 -0
  211. package/src/app/core/servicios/auth.service.d.ts +52 -0
  212. package/src/app/core/servicios/cargar-control-funcionalidad.service.d.ts +19 -0
  213. package/src/app/core/servicios/click-posicion.service.d.ts +11 -0
  214. package/src/app/core/servicios/data-exporter-table.utils.d.ts +11 -0
  215. package/src/app/core/servicios/error-interceptor.service.d.ts +41 -0
  216. package/src/app/core/servicios/guardias/auth.guard.d.ts +17 -0
  217. package/src/app/core/servicios/guardias/publico.guard.d.ts +13 -0
  218. package/src/app/core/servicios/interceptores/loading-interceptor.d.ts +11 -0
  219. package/src/app/core/servicios/interceptores/token-interceptor.service.d.ts +26 -0
  220. package/src/app/core/servicios/loading.service.d.ts +22 -0
  221. package/src/app/core/servicios/menu.service.d.ts +35 -0
  222. package/src/app/core/servicios/spinner-service.d.ts +9 -0
  223. package/src/app/core/servicios/storage.service.d.ts +37 -0
  224. package/src/app/core/servicios/template.service.d.ts +20 -0
  225. package/src/app/core/servicios/toast.service.d.ts +48 -0
  226. package/src/app/core/servicios/utils.service.d.ts +45 -0
  227. package/src/app/core/sharedlib.module.d.ts +6 -0
  228. package/src/app/core/utilidades/color.util.d.ts +70 -0
  229. package/src/app/layout/api/{menuchangeevent.ts → menuchangeevent.d.ts} +4 -4
  230. package/src/app/layout/app.breadcrumb.component.d.ts +28 -0
  231. package/src/app/layout/app.footer.component.d.ts +8 -0
  232. package/src/app/layout/app.layout.component.d.ts +39 -0
  233. package/src/app/layout/app.layout.module.d.ts +6 -0
  234. package/src/app/layout/app.menu.component.d.ts +19 -0
  235. package/src/app/layout/app.menu.service.d.ts +12 -0
  236. package/src/app/layout/app.menuitem.component.d.ts +41 -0
  237. package/src/app/layout/app.menuprofile.component.d.ts +18 -0
  238. package/src/app/layout/app.rightmenu.component.d.ts +10 -0
  239. package/src/app/layout/app.sidebar.component.d.ts +34 -0
  240. package/src/app/layout/app.topbar.component.d.ts +79 -0
  241. package/src/app/layout/service/app.layout.service.d.ts +57 -0
  242. package/src/app/publico/pages/login/login.page.d.ts +40 -0
  243. package/src/app/publico/pages/not-found/not-found.page.d.ts +17 -0
  244. package/src/app/publico/pages/seleccion-rol/seleccion-rol.component.d.ts +41 -0
  245. package/src/app/publico/pages/timeout/timeout.page.d.ts +10 -0
  246. package/src/app/seguridad/constantes/ConstantesGenerales.d.ts +25 -0
  247. package/src/app/seguridad/constantes/ReporteEntradaConstantes.d.ts +7 -0
  248. package/src/app/seguridad/modelos/AplicacionModel.d.ts +7 -0
  249. package/src/app/seguridad/modelos/ArchivoPortalModel.d.ts +13 -0
  250. package/src/app/seguridad/modelos/AtributoPuntoModel.d.ts +8 -0
  251. package/src/app/seguridad/modelos/AtributoSSOportalModel.d.ts +16 -0
  252. package/src/app/seguridad/modelos/{AuditoriaArchivoModel.ts → AuditoriaArchivoModel.d.ts} +10 -13
  253. package/src/app/seguridad/modelos/CargueLineaModel.d.ts +12 -0
  254. package/src/app/seguridad/modelos/ColoresRGB.d.ts +17 -0
  255. package/src/app/seguridad/modelos/ColumnaFuenteModel.d.ts +8 -0
  256. package/src/app/seguridad/modelos/{ColumnaWraperModel.ts → ColumnaWraperModel.d.ts} +6 -7
  257. package/src/app/seguridad/modelos/ComplementoModel.d.ts +6 -0
  258. package/src/app/seguridad/modelos/ComponentePaginaModel.d.ts +20 -0
  259. package/src/app/seguridad/modelos/ConexionModel.d.ts +13 -0
  260. package/src/app/seguridad/modelos/{ContenidoHtmlPortalModel.ts → ContenidoHtmlPortalModel.d.ts} +20 -25
  261. package/src/app/seguridad/modelos/ControlFuncionModel.d.ts +7 -0
  262. package/src/app/seguridad/modelos/CorreoModel.d.ts +31 -0
  263. package/src/app/seguridad/modelos/{CorreoOrgEmpModModel.ts → CorreoOrgEmpModModel.d.ts} +8 -11
  264. package/src/app/seguridad/modelos/CorreoWSModel.d.ts +33 -0
  265. package/src/app/seguridad/modelos/CruceRecursoPuntoModel.d.ts +13 -0
  266. package/src/app/seguridad/modelos/{DatoInicioModel.ts → DatoInicioModel.d.ts} +6 -7
  267. package/src/app/seguridad/modelos/{EjecucionReporteDataModel.ts → EjecucionReporteDataModel.d.ts} +20 -21
  268. package/src/app/seguridad/modelos/EmpresaModel.d.ts +23 -0
  269. package/src/app/seguridad/modelos/EmpresaSeguridadModel.d.ts +18 -0
  270. package/src/app/seguridad/modelos/{EntradaComplementoModel.ts → EntradaComplementoModel.d.ts} +6 -9
  271. package/src/app/seguridad/modelos/EtiquetaModel.d.ts +4 -0
  272. package/src/app/seguridad/modelos/Etiquetas.d.ts +10 -0
  273. package/src/app/seguridad/modelos/{ForeingWraperModel.ts → ForeingWraperModel.d.ts} +6 -9
  274. package/src/app/seguridad/modelos/FuenteCampoAtributoModel.d.ts +15 -0
  275. package/src/app/seguridad/modelos/{FuenteCampoModel.ts → FuenteCampoModel.d.ts} +16 -20
  276. package/src/app/seguridad/modelos/FuenteDato.d.ts +18 -0
  277. package/src/app/seguridad/modelos/FuenteEntradaModel.d.ts +8 -0
  278. package/src/app/seguridad/modelos/{FuenteGeneralModel.ts → FuenteGeneralModel.d.ts} +36 -55
  279. package/src/app/seguridad/modelos/FuenteLineaServicioModel.d.ts +16 -0
  280. package/src/app/seguridad/modelos/FuenteProcesoGeneralModel.d.ts +10 -0
  281. package/src/app/seguridad/modelos/{FuenteServicioModel.ts → FuenteServicioModel.d.ts} +47 -61
  282. package/src/app/seguridad/modelos/FuncionalidadModel.d.ts +8 -0
  283. package/src/app/seguridad/modelos/GeneralModel.d.ts +8 -0
  284. package/src/app/seguridad/modelos/{GrupoAccesoModel.ts → GrupoAccesoModel.d.ts} +6 -9
  285. package/src/app/seguridad/modelos/GrupoControlFuncionModel.d.ts +9 -0
  286. package/src/app/seguridad/modelos/GrupoFuenteModel.d.ts +13 -0
  287. package/src/app/seguridad/modelos/GrupoPermisoModel.d.ts +13 -0
  288. package/src/app/seguridad/modelos/{JoinFromModel.ts → JoinFromModel.d.ts} +4 -4
  289. package/src/app/seguridad/modelos/ListaServicioModel.d.ts +16 -0
  290. package/src/app/seguridad/modelos/LlaveForaneaModel.d.ts +6 -0
  291. package/src/app/seguridad/modelos/LoginModel.d.ts +17 -0
  292. package/src/app/seguridad/modelos/MensajeSistemaModel.d.ts +7 -0
  293. package/src/app/seguridad/modelos/{MenuPortalModel.ts → MenuPortalModel.d.ts} +4 -5
  294. package/src/app/seguridad/modelos/ModulosModel.d.ts +14 -0
  295. package/src/app/seguridad/modelos/{ObjetoReporteModel.ts → ObjetoReporteModel.d.ts} +5 -6
  296. package/src/app/seguridad/modelos/PaginaPortalModel.d.ts +19 -0
  297. package/src/app/seguridad/modelos/ParametroComponenteModel.d.ts +8 -0
  298. package/src/app/seguridad/modelos/ParametrosGeneralModel.d.ts +8 -0
  299. package/src/app/seguridad/modelos/PermisoFuncionModel.d.ts +8 -0
  300. package/src/app/seguridad/modelos/PermisocontenidoModel.d.ts +18 -0
  301. package/src/app/seguridad/modelos/{PeticionModel.ts → PeticionModel.d.ts} +15 -20
  302. package/src/app/seguridad/modelos/PreguntaSeguridadModel.d.ts +6 -0
  303. package/src/app/seguridad/modelos/PropiedadModel.d.ts +9 -0
  304. package/src/app/seguridad/modelos/PublicacionWebModel.d.ts +25 -0
  305. package/src/app/seguridad/modelos/PuntoProcesoModel.d.ts +6 -0
  306. package/src/app/seguridad/modelos/RecursoPunto.d.ts +12 -0
  307. package/src/app/seguridad/modelos/RecursoPuntoModel.d.ts +12 -0
  308. package/src/app/seguridad/modelos/ReporteBanda.d.ts +7 -0
  309. package/src/app/seguridad/modelos/ReporteColumna.d.ts +32 -0
  310. package/src/app/seguridad/modelos/ReporteColumnario.d.ts +68 -0
  311. package/src/app/seguridad/modelos/ReporteColumnarioMarcador.d.ts +23 -0
  312. package/src/app/seguridad/modelos/{ReporteEntradaModel.ts → ReporteEntradaModel.d.ts} +19 -21
  313. package/src/app/seguridad/modelos/{ReporteFuenteModel.ts → ReporteFuenteModel.d.ts} +87 -141
  314. package/src/app/seguridad/modelos/ReporteMarcador.d.ts +39 -0
  315. package/src/app/seguridad/modelos/ReporteSoporte.d.ts +9 -0
  316. package/src/app/seguridad/modelos/ReporteTabla.d.ts +12 -0
  317. package/src/app/seguridad/modelos/RespuestaModel.d.ts +8 -0
  318. package/src/app/seguridad/modelos/{RolModel.ts → RolModel.d.ts} +37 -41
  319. package/src/app/seguridad/modelos/ServidorCorreoModel.d.ts +25 -0
  320. package/src/app/seguridad/modelos/SistemaMensajeModel.d.ts +8 -0
  321. package/src/app/seguridad/modelos/SitioPortalModel.d.ts +24 -0
  322. package/src/app/seguridad/modelos/TablaFromModel.d.ts +4 -0
  323. package/src/app/seguridad/modelos/TareasModel.d.ts +49 -0
  324. package/src/app/seguridad/modelos/TextoModel.d.ts +8 -0
  325. package/src/app/seguridad/modelos/TipoEtiqueta.d.ts +7 -0
  326. package/src/app/seguridad/modelos/UnionModel.d.ts +11 -0
  327. package/src/app/seguridad/modelos/{UsuarioModel.ts → UsuarioModel.d.ts} +49 -60
  328. package/src/app/seguridad/modelos/UsuariogrupoModel.d.ts +22 -0
  329. package/src/app/seguridad/modelos/aplicacion-propiedad-model.d.ts +13 -0
  330. package/src/app/seguridad/modelos/contenidoCorreoModel.d.ts +9 -0
  331. package/src/app/shared/componentes/input-helper-seleccion-plantilla/input-helper-seleccion-plantilla.component.d.ts +47 -0
  332. package/src/app/shared/servicios/cargar-archivos.service.d.ts +15 -0
  333. package/src/app/shared/servicios/cargar-mapas.service.d.ts +18 -0
  334. package/src/app/shared/servicios/encriptado-basico.service.d.ts +10 -0
  335. package/src/app/shared/servicios/general.service.d.ts +24 -0
  336. package/src/app/shared/servicios/parametros-navegacion.service.d.ts +9 -0
  337. package/src/app/webcommon/pages/cargue-plantilla/cargue-plantilla-general/cargue-plantilla-general.component.d.ts +79 -0
  338. package/src/app/webcommon/pages/ejecucion-reporte/detalle-campo-reporte/detalle-campo-reporte.component.d.ts +79 -0
  339. package/src/app/webcommon/pages/ejecucion-reporte/detalle-distribucion-reporte/detalle-distribucion-reporte.component.d.ts +29 -0
  340. package/src/app/webcommon/pages/ejecucion-reporte/detalle-ejecucion-reporte/detalle-ejecucion-reporte.page.d.ts +69 -0
  341. package/src/app/webcommon/pages/ejecucion-reporte/detalle-entrada-reporte/detalle-entrada-reporte.component.d.ts +51 -0
  342. package/src/app/webcommon/pages/ejecucion-reporte/detalle-punto-proceso-reporte/detalle-punto-proceso-reporte.component.d.ts +77 -0
  343. package/src/app/webcommon/pages/ejecucion-reporte/detalle-tipo-reporte/detalle-tipo-reporte.component.d.ts +279 -0
  344. package/src/app/webcommon/pages/ejecucion-reporte/listado-ejecucion-reporte/listado-ejecucion-reporte.page.d.ts +42 -0
  345. package/src/app/webcommon/pages/ejecucion-reporte-externo/listado-ejecucion-reporte-externo/listado-ejecucion-reporte-externo.component.d.ts +35 -0
  346. package/src/app/webcommon/pages/fuente/importar-fuente-con/importar-fuente-con.component.d.ts +146 -0
  347. package/src/app/webcommon/pages/fuente/importar-fuente-general/importar-fuente-general.component.d.ts +49 -0
  348. package/src/app/webcommon/pages/fuente-reporte/fuente-reporte.component.d.ts +132 -0
  349. package/src/app/webcommon/pages/fuenteGeneral/fuente-general-servicio/fuente-general-servicio.component.d.ts +64 -0
  350. package/src/app/webcommon/pages/fuenteGeneral/listado-fuente-general/listado-fuente-general.page.d.ts +33 -0
  351. package/src/app/webcommon/pages/fuenteGeneral/mantenimiento-fuente-general/mantenimiento-fuente-general.page.d.ts +149 -0
  352. package/src/app/webcommon/pipes/dashboard.pipe.d.ts +48 -0
  353. package/src/app/webcommon/pipes/fuente.pipe.d.ts +136 -0
  354. package/src/app/webcommon/pipes/general.pipe.d.ts +647 -0
  355. package/src/app/webcommon/pipes/reporte-columnario.pipe.d.ts +59 -0
  356. package/src/app/webcommon/pipes/reporte-fuente.pipe.d.ts +193 -0
  357. package/src/app/webcommon/popups/popup-campos-fuente-general/popup-campos-fuente-general.component.d.ts +59 -0
  358. package/src/app/webcommon/popups/popup-convertir-plantillas/popup-convertir-plantillas.component.d.ts +27 -0
  359. package/src/app/webcommon/popups/popup-editor-formula/popup-editor-formula.component.d.ts +21 -0
  360. package/src/app/webcommon/popups/popup-punto-proceso/popup-punto-proceso.component.d.ts +64 -0
  361. package/src/app/webcommon/popups/popup-recurso/popup-recurso.component.d.ts +63 -0
  362. package/src/app/webcommon/popups/popup-reporte/popup-reporte.component.d.ts +105 -0
  363. package/src/app/webcommon/popups/popup-sentencia/popup-sentencia.component.d.ts +21 -0
  364. package/src/app/webcommon/popups/popup-tablas-fuente/popup-tablas-fuente.component.d.ts +42 -0
  365. package/src/app/webcommon/popups/punto-proceso-comp/punto-proceso-comp.component.d.ts +30 -0
  366. package/src/app/webcommon/services/carguelinea.service.d.ts +19 -0
  367. package/src/app/webcommon/services/dashboard.service.d.ts +27 -0
  368. package/src/app/webcommon/services/ejecucionreporte.service.d.ts +34 -0
  369. package/src/app/webcommon/services/fechaUtils.service.d.ts +30 -0
  370. package/src/app/webcommon/services/fuentegeneral.service.d.ts +24 -0
  371. package/src/app/webcommon/services/homologacion.service.d.ts +17 -0
  372. package/src/app/webcommon/services/plantillas.service.d.ts +26 -0
  373. package/src/app/webcommon/services/reportes.service.d.ts +35 -0
  374. package/src/app/webcommon/webcommon.module.d.ts +6 -0
  375. package/src/environments/environment.d.ts +7 -0
  376. package/.browserslistrc +0 -15
  377. package/.editorconfig +0 -16
  378. package/.vscode/extensions.json +0 -4
  379. package/.vscode/launch.json +0 -20
  380. package/.vscode/tasks.json +0 -42
  381. package/angular.json +0 -143
  382. package/karma.conf.js +0 -44
  383. package/ng-package.json +0 -21
  384. package/src/app/app.component.html +0 -12
  385. package/src/app/app.component.scss +0 -0
  386. package/src/app/app.component.spec.ts +0 -29
  387. package/src/app/app.component.ts +0 -34
  388. package/src/app/app.config.ts +0 -43
  389. package/src/app/app.module.ts +0 -10
  390. package/src/app/app.routes.ts +0 -88
  391. package/src/app/core/componentes/breadcrumb/breadcrumb.component.html +0 -6
  392. package/src/app/core/componentes/breadcrumb/breadcrumb.component.scss +0 -0
  393. package/src/app/core/componentes/breadcrumb/breadcrumb.component.ts +0 -39
  394. package/src/app/core/componentes/carga-breadcrumb/carga-breadcrumb.component.html +0 -1
  395. package/src/app/core/componentes/carga-breadcrumb/carga-breadcrumb.component.scss +0 -0
  396. package/src/app/core/componentes/carga-breadcrumb/carga-breadcrumb.component.ts +0 -31
  397. package/src/app/core/componentes/carga-pantalla-completa/carga-pantalla-completa.component.html +0 -9
  398. package/src/app/core/componentes/carga-pantalla-completa/carga-pantalla-completa.component.scss +0 -28
  399. package/src/app/core/componentes/carga-pantalla-completa/carga-pantalla-completa.component.ts +0 -32
  400. package/src/app/core/componentes/filtro-general/filtro-general.component.html +0 -36
  401. package/src/app/core/componentes/filtro-general/filtro-general.component.scss +0 -3
  402. package/src/app/core/componentes/filtro-general/filtro-general.component.ts +0 -207
  403. package/src/app/core/componentes/footer/footer.component.html +0 -13
  404. package/src/app/core/componentes/footer/footer.component.scss +0 -3
  405. package/src/app/core/componentes/footer/footer.component.ts +0 -20
  406. package/src/app/core/componentes/formulariodinamico/formulariodinamico.component.html +0 -267
  407. package/src/app/core/componentes/formulariodinamico/formulariodinamico.component.scss +0 -21
  408. package/src/app/core/componentes/formulariodinamico/formulariodinamico.component.ts +0 -278
  409. package/src/app/core/componentes/formulariodinamico/objetosformulario/CampoFormulario.ts +0 -118
  410. package/src/app/core/componentes/formulariodinamico/objetosformulario/CampoFormularioCons.ts +0 -76
  411. package/src/app/core/componentes/formulariodinamico/objetosformulario/CampoFormularioNuevo.ts +0 -67
  412. package/src/app/core/componentes/formulariodinamico/objetosformulario/HashDirective.ts +0 -11
  413. package/src/app/core/componentes/inicio-component/inicio-component.component.html +0 -29
  414. package/src/app/core/componentes/inicio-component/inicio-component.component.scss +0 -63
  415. package/src/app/core/componentes/inicio-component/inicio-component.component.ts +0 -70
  416. package/src/app/core/componentes/menu/menu.component.html +0 -13
  417. package/src/app/core/componentes/menu/menu.component.scss +0 -36
  418. package/src/app/core/componentes/menu/menu.component.ts +0 -35
  419. package/src/app/core/componentes/tabla-general/tabla-general.component.html +0 -90
  420. package/src/app/core/componentes/tabla-general/tabla-general.component.scss +0 -0
  421. package/src/app/core/componentes/tabla-general/tabla-general.component.ts +0 -96
  422. package/src/app/core/core.module.ts +0 -22
  423. package/src/app/core/errores/authentication.error.ts +0 -6
  424. package/src/app/core/modelos/error-response.model.ts +0 -9
  425. package/src/app/core/modelos/table-column.model.ts +0 -10
  426. package/src/app/core/modelos/user.model.ts +0 -6
  427. package/src/app/core/plantilla-general/plantilla-general.template.html +0 -139
  428. package/src/app/core/plantilla-general/plantilla-general.template.scss +0 -37
  429. package/src/app/core/plantilla-general/plantilla-general.template.ts +0 -233
  430. package/src/app/core/servicios/auth.service.ts +0 -189
  431. package/src/app/core/servicios/cargar-control-funcionalidad.service.ts +0 -48
  432. package/src/app/core/servicios/click-posicion.service.ts +0 -16
  433. package/src/app/core/servicios/data-exporter-table.utils.ts +0 -78
  434. package/src/app/core/servicios/error-interceptor.service.ts +0 -208
  435. package/src/app/core/servicios/guardias/auth.guard.ts +0 -51
  436. package/src/app/core/servicios/guardias/publico.guard.ts +0 -26
  437. package/src/app/core/servicios/interceptores/loading-interceptor.ts +0 -37
  438. package/src/app/core/servicios/interceptores/token-interceptor.service.ts +0 -177
  439. package/src/app/core/servicios/loading.service.ts +0 -48
  440. package/src/app/core/servicios/menu.service.ts +0 -153
  441. package/src/app/core/servicios/spinner-service.ts +0 -18
  442. package/src/app/core/servicios/storage.service.ts +0 -68
  443. package/src/app/core/servicios/template.service.ts +0 -91
  444. package/src/app/core/servicios/toast.service.ts +0 -114
  445. package/src/app/core/servicios/utils.service.ts +0 -381
  446. package/src/app/core/sharedlib.module.ts +0 -11
  447. package/src/app/core/utilidades/color.util.ts +0 -197
  448. package/src/app/layout/app.breadcrumb.component.html +0 -20
  449. package/src/app/layout/app.breadcrumb.component.ts +0 -78
  450. package/src/app/layout/app.footer.component.html +0 -18
  451. package/src/app/layout/app.footer.component.ts +0 -15
  452. package/src/app/layout/app.layout.component.html +0 -20
  453. package/src/app/layout/app.layout.component.ts +0 -201
  454. package/src/app/layout/app.layout.module.ts +0 -9
  455. package/src/app/layout/app.menu.component.html +0 -6
  456. package/src/app/layout/app.menu.component.ts +0 -51
  457. package/src/app/layout/app.menu.service.ts +0 -23
  458. package/src/app/layout/app.menuitem.component.ts +0 -252
  459. package/src/app/layout/app.menuprofile.component.html +0 -35
  460. package/src/app/layout/app.menuprofile.component.ts +0 -60
  461. package/src/app/layout/app.rightmenu.component.html +0 -72
  462. package/src/app/layout/app.rightmenu.component.ts +0 -24
  463. package/src/app/layout/app.sidebar.component.html +0 -40
  464. package/src/app/layout/app.sidebar.component.ts +0 -81
  465. package/src/app/layout/app.topbar.component.html +0 -214
  466. package/src/app/layout/app.topbar.component.ts +0 -336
  467. package/src/app/layout/config/app.config.component.html +0 -125
  468. package/src/app/layout/config/app.config.component.ts +0 -206
  469. package/src/app/layout/config/app.config.module.ts +0 -11
  470. package/src/app/layout/service/app.layout.service.ts +0 -191
  471. package/src/app/publico/pages/login/login.page.html +0 -53
  472. package/src/app/publico/pages/login/login.page.scss +0 -210
  473. package/src/app/publico/pages/login/login.page.ts +0 -130
  474. package/src/app/publico/pages/not-found/not-found.page.html +0 -36
  475. package/src/app/publico/pages/not-found/not-found.page.scss +0 -2
  476. package/src/app/publico/pages/not-found/not-found.page.ts +0 -46
  477. package/src/app/publico/pages/seleccion-rol/seleccion-rol.component.html +0 -58
  478. package/src/app/publico/pages/seleccion-rol/seleccion-rol.component.scss +0 -49
  479. package/src/app/publico/pages/seleccion-rol/seleccion-rol.component.ts +0 -176
  480. package/src/app/publico/pages/timeout/timeout.page.html +0 -24
  481. package/src/app/publico/pages/timeout/timeout.page.scss +0 -2
  482. package/src/app/publico/pages/timeout/timeout.page.ts +0 -18
  483. package/src/app/seguridad/constantes/ConstantesGenerales.ts +0 -30
  484. package/src/app/seguridad/constantes/ReporteEntradaConstantes.ts +0 -18
  485. package/src/app/seguridad/constantes/ReporteFuenteConstantes.ts +0 -13
  486. package/src/app/seguridad/modelos/AplicacionModel.ts +0 -11
  487. package/src/app/seguridad/modelos/ArchivoPortalModel.ts +0 -16
  488. package/src/app/seguridad/modelos/AtributoPuntoModel.ts +0 -9
  489. package/src/app/seguridad/modelos/AtributoSSOportalModel.ts +0 -22
  490. package/src/app/seguridad/modelos/CargueLineaModel.ts +0 -17
  491. package/src/app/seguridad/modelos/ColoresRGB.ts +0 -17
  492. package/src/app/seguridad/modelos/ColumnaFuenteModel.ts +0 -9
  493. package/src/app/seguridad/modelos/ComplementoModel.ts +0 -10
  494. package/src/app/seguridad/modelos/ComponentePaginaModel.ts +0 -22
  495. package/src/app/seguridad/modelos/ConexionModel.ts +0 -15
  496. package/src/app/seguridad/modelos/ControlFuncionModel.ts +0 -10
  497. package/src/app/seguridad/modelos/CorreoModel.ts +0 -45
  498. package/src/app/seguridad/modelos/CorreoWSModel.ts +0 -49
  499. package/src/app/seguridad/modelos/CruceRecursoPuntoModel.ts +0 -14
  500. package/src/app/seguridad/modelos/EmpresaModel.ts +0 -25
  501. package/src/app/seguridad/modelos/EmpresaSeguridadModel.ts +0 -19
  502. package/src/app/seguridad/modelos/EtiquetaModel.ts +0 -4
  503. package/src/app/seguridad/modelos/Etiquetas.ts +0 -14
  504. package/src/app/seguridad/modelos/FuenteCampoAtributoModel.ts +0 -21
  505. package/src/app/seguridad/modelos/FuenteDato.ts +0 -19
  506. package/src/app/seguridad/modelos/FuenteEntradaModel.ts +0 -9
  507. package/src/app/seguridad/modelos/FuenteLineaServicioModel.ts +0 -19
  508. package/src/app/seguridad/modelos/FuenteProcesoGeneralModel.ts +0 -14
  509. package/src/app/seguridad/modelos/FuncionalidadModel.ts +0 -12
  510. package/src/app/seguridad/modelos/GeneralModel.ts +0 -16
  511. package/src/app/seguridad/modelos/GrupoControlFuncionModel.ts +0 -12
  512. package/src/app/seguridad/modelos/GrupoFuenteModel.ts +0 -17
  513. package/src/app/seguridad/modelos/GrupoPermisoModel.ts +0 -16
  514. package/src/app/seguridad/modelos/ListaServicioModel.ts +0 -18
  515. package/src/app/seguridad/modelos/LlaveForaneaModel.ts +0 -6
  516. package/src/app/seguridad/modelos/LoginModel.ts +0 -19
  517. package/src/app/seguridad/modelos/MensajeSistemaModel.ts +0 -10
  518. package/src/app/seguridad/modelos/ModulosModel.ts +0 -17
  519. package/src/app/seguridad/modelos/PaginaPortalModel.ts +0 -23
  520. package/src/app/seguridad/modelos/ParametroComponenteModel.ts +0 -9
  521. package/src/app/seguridad/modelos/ParametrosGeneralModel.ts +0 -16
  522. package/src/app/seguridad/modelos/PermisoFuncionModel.ts +0 -11
  523. package/src/app/seguridad/modelos/PermisocontenidoModel.ts +0 -20
  524. package/src/app/seguridad/modelos/PreguntaSeguridadModel.ts +0 -9
  525. package/src/app/seguridad/modelos/PropiedadModel.ts +0 -12
  526. package/src/app/seguridad/modelos/PublicacionWebModel.ts +0 -29
  527. package/src/app/seguridad/modelos/PuntoProcesoModel.ts +0 -7
  528. package/src/app/seguridad/modelos/RecursoPunto.ts +0 -13
  529. package/src/app/seguridad/modelos/RecursoPuntoModel.ts +0 -13
  530. package/src/app/seguridad/modelos/ReporteBanda.ts +0 -9
  531. package/src/app/seguridad/modelos/ReporteColumna.ts +0 -33
  532. package/src/app/seguridad/modelos/ReporteColumnario.ts +0 -82
  533. package/src/app/seguridad/modelos/ReporteColumnarioMarcador.ts +0 -31
  534. package/src/app/seguridad/modelos/ReporteMarcador.ts +0 -40
  535. package/src/app/seguridad/modelos/ReporteSoporte.ts +0 -10
  536. package/src/app/seguridad/modelos/ReporteTabla.ts +0 -14
  537. package/src/app/seguridad/modelos/RespuestaModel.ts +0 -9
  538. package/src/app/seguridad/modelos/ServidorCorreoModel.ts +0 -31
  539. package/src/app/seguridad/modelos/SistemaMensajeModel.ts +0 -11
  540. package/src/app/seguridad/modelos/SitioPortalModel.ts +0 -29
  541. package/src/app/seguridad/modelos/TablaFromModel.ts +0 -5
  542. package/src/app/seguridad/modelos/TareasModel.ts +0 -54
  543. package/src/app/seguridad/modelos/TextoModel.ts +0 -11
  544. package/src/app/seguridad/modelos/TipoEtiqueta.ts +0 -8
  545. package/src/app/seguridad/modelos/UnionModel.ts +0 -14
  546. package/src/app/seguridad/modelos/UsuariogrupoModel.ts +0 -27
  547. package/src/app/seguridad/modelos/aplicacion-propiedad-model.ts +0 -16
  548. package/src/app/seguridad/modelos/contenidoCorreoModel.ts +0 -13
  549. package/src/app/shared/componentes/input-helper-seleccion-plantilla/input-helper-seleccion-plantilla.component.html +0 -47
  550. package/src/app/shared/componentes/input-helper-seleccion-plantilla/input-helper-seleccion-plantilla.component.scss +0 -8
  551. package/src/app/shared/componentes/input-helper-seleccion-plantilla/input-helper-seleccion-plantilla.component.ts +0 -144
  552. package/src/app/shared/servicios/cargar-archivos.service.ts +0 -51
  553. package/src/app/shared/servicios/cargar-mapas.service.ts +0 -43
  554. package/src/app/shared/servicios/encriptado-basico.service.ts +0 -54
  555. package/src/app/shared/servicios/encriptador-simetrico.service.ts +0 -29
  556. package/src/app/shared/servicios/general.service.ts +0 -124
  557. package/src/app/shared/servicios/parametros-navegacion.service.ts +0 -20
  558. package/src/app/shared/servicios/plantillas.service.ts +0 -22
  559. package/src/app/shared/servicios/tarea.service.ts +0 -71
  560. package/src/app/shared/utilidades/translate-loader.util.ts +0 -44
  561. package/src/app/webcommon/pages/cargue-plantilla/cargue-plantilla-general/cargue-plantilla-general.component.html +0 -175
  562. package/src/app/webcommon/pages/cargue-plantilla/cargue-plantilla-general/cargue-plantilla-general.component.scss +0 -78
  563. package/src/app/webcommon/pages/cargue-plantilla/cargue-plantilla-general/cargue-plantilla-general.component.ts +0 -438
  564. package/src/app/webcommon/pages/ejecucion-reporte/detalle-campo-reporte/detalle-campo-reporte.component.html +0 -87
  565. package/src/app/webcommon/pages/ejecucion-reporte/detalle-campo-reporte/detalle-campo-reporte.component.scss +0 -0
  566. package/src/app/webcommon/pages/ejecucion-reporte/detalle-campo-reporte/detalle-campo-reporte.component.ts +0 -189
  567. package/src/app/webcommon/pages/ejecucion-reporte/detalle-distribucion-reporte/detalle-distribucion-reporte.component.html +0 -117
  568. package/src/app/webcommon/pages/ejecucion-reporte/detalle-distribucion-reporte/detalle-distribucion-reporte.component.scss +0 -0
  569. package/src/app/webcommon/pages/ejecucion-reporte/detalle-distribucion-reporte/detalle-distribucion-reporte.component.ts +0 -87
  570. package/src/app/webcommon/pages/ejecucion-reporte/detalle-ejecucion-reporte/detalle-ejecucion-reporte.page.html +0 -158
  571. package/src/app/webcommon/pages/ejecucion-reporte/detalle-ejecucion-reporte/detalle-ejecucion-reporte.page.scss +0 -6
  572. package/src/app/webcommon/pages/ejecucion-reporte/detalle-ejecucion-reporte/detalle-ejecucion-reporte.page.ts +0 -345
  573. package/src/app/webcommon/pages/ejecucion-reporte/detalle-entrada-reporte/detalle-entrada-reporte.component.html +0 -131
  574. package/src/app/webcommon/pages/ejecucion-reporte/detalle-entrada-reporte/detalle-entrada-reporte.component.scss +0 -0
  575. package/src/app/webcommon/pages/ejecucion-reporte/detalle-entrada-reporte/detalle-entrada-reporte.component.ts +0 -198
  576. package/src/app/webcommon/pages/ejecucion-reporte/detalle-punto-proceso-reporte/detalle-punto-proceso-reporte.component.html +0 -206
  577. package/src/app/webcommon/pages/ejecucion-reporte/detalle-punto-proceso-reporte/detalle-punto-proceso-reporte.component.scss +0 -3
  578. package/src/app/webcommon/pages/ejecucion-reporte/detalle-punto-proceso-reporte/detalle-punto-proceso-reporte.component.ts +0 -328
  579. package/src/app/webcommon/pages/ejecucion-reporte/detalle-tipo-reporte/detalle-tipo-reporte.component.html +0 -2121
  580. package/src/app/webcommon/pages/ejecucion-reporte/detalle-tipo-reporte/detalle-tipo-reporte.component.scss +0 -241
  581. package/src/app/webcommon/pages/ejecucion-reporte/detalle-tipo-reporte/detalle-tipo-reporte.component.ts +0 -1698
  582. package/src/app/webcommon/pages/ejecucion-reporte/listado-ejecucion-reporte/listado-ejecucion-reporte.page.html +0 -33
  583. package/src/app/webcommon/pages/ejecucion-reporte/listado-ejecucion-reporte/listado-ejecucion-reporte.page.scss +0 -0
  584. package/src/app/webcommon/pages/ejecucion-reporte/listado-ejecucion-reporte/listado-ejecucion-reporte.page.ts +0 -96
  585. package/src/app/webcommon/pages/ejecucion-reporte-externo/listado-ejecucion-reporte-externo/listado-ejecucion-reporte-externo.component.html +0 -54
  586. package/src/app/webcommon/pages/ejecucion-reporte-externo/listado-ejecucion-reporte-externo/listado-ejecucion-reporte-externo.component.scss +0 -0
  587. package/src/app/webcommon/pages/ejecucion-reporte-externo/listado-ejecucion-reporte-externo/listado-ejecucion-reporte-externo.component.ts +0 -111
  588. package/src/app/webcommon/pages/fuente/importar-fuente-con/importar-fuente-con.component.html +0 -394
  589. package/src/app/webcommon/pages/fuente/importar-fuente-con/importar-fuente-con.component.scss +0 -10
  590. package/src/app/webcommon/pages/fuente/importar-fuente-con/importar-fuente-con.component.ts +0 -610
  591. package/src/app/webcommon/pages/fuente/importar-fuente-general/importar-fuente-general.component.html +0 -130
  592. package/src/app/webcommon/pages/fuente/importar-fuente-general/importar-fuente-general.component.scss +0 -0
  593. package/src/app/webcommon/pages/fuente/importar-fuente-general/importar-fuente-general.component.ts +0 -172
  594. package/src/app/webcommon/pages/fuente-reporte/fuente-reporte.component.html +0 -404
  595. package/src/app/webcommon/pages/fuente-reporte/fuente-reporte.component.scss +0 -5
  596. package/src/app/webcommon/pages/fuente-reporte/fuente-reporte.component.ts +0 -763
  597. package/src/app/webcommon/pages/fuenteGeneral/fuente-general-servicio/fuente-general-servicio.component.html +0 -145
  598. package/src/app/webcommon/pages/fuenteGeneral/fuente-general-servicio/fuente-general-servicio.component.scss +0 -0
  599. package/src/app/webcommon/pages/fuenteGeneral/fuente-general-servicio/fuente-general-servicio.component.ts +0 -302
  600. package/src/app/webcommon/pages/fuenteGeneral/listado-fuente-general/listado-fuente-general.page.html +0 -19
  601. package/src/app/webcommon/pages/fuenteGeneral/listado-fuente-general/listado-fuente-general.page.scss +0 -0
  602. package/src/app/webcommon/pages/fuenteGeneral/listado-fuente-general/listado-fuente-general.page.ts +0 -88
  603. package/src/app/webcommon/pages/fuenteGeneral/mantenimiento-fuente-general/mantenimiento-fuente-general.page.html +0 -714
  604. package/src/app/webcommon/pages/fuenteGeneral/mantenimiento-fuente-general/mantenimiento-fuente-general.page.scss +0 -0
  605. package/src/app/webcommon/pages/fuenteGeneral/mantenimiento-fuente-general/mantenimiento-fuente-general.page.ts +0 -688
  606. package/src/app/webcommon/pipes/dashboard.pipe.ts +0 -79
  607. package/src/app/webcommon/pipes/fuente.pipe.ts +0 -207
  608. package/src/app/webcommon/pipes/general.pipe.ts +0 -1046
  609. package/src/app/webcommon/pipes/reporte-columnario.pipe.ts +0 -101
  610. package/src/app/webcommon/pipes/reporte-fuente.pipe.ts +0 -306
  611. package/src/app/webcommon/pipes/sara-general.pipe.ts +0 -289
  612. package/src/app/webcommon/popups/popup-campos-fuente-general/popup-campos-fuente-general.component.html +0 -90
  613. package/src/app/webcommon/popups/popup-campos-fuente-general/popup-campos-fuente-general.component.scss +0 -0
  614. package/src/app/webcommon/popups/popup-campos-fuente-general/popup-campos-fuente-general.component.ts +0 -262
  615. package/src/app/webcommon/popups/popup-convertir-plantillas/popup-convertir-plantillas.component.html +0 -50
  616. package/src/app/webcommon/popups/popup-convertir-plantillas/popup-convertir-plantillas.component.scss +0 -0
  617. package/src/app/webcommon/popups/popup-convertir-plantillas/popup-convertir-plantillas.component.ts +0 -135
  618. package/src/app/webcommon/popups/popup-editor-formula/popup-editor-formula.component.html +0 -44
  619. package/src/app/webcommon/popups/popup-editor-formula/popup-editor-formula.component.scss +0 -0
  620. package/src/app/webcommon/popups/popup-editor-formula/popup-editor-formula.component.ts +0 -66
  621. package/src/app/webcommon/popups/popup-punto-proceso/popup-punto-proceso.component.html +0 -41
  622. package/src/app/webcommon/popups/popup-punto-proceso/popup-punto-proceso.component.scss +0 -0
  623. package/src/app/webcommon/popups/popup-punto-proceso/popup-punto-proceso.component.ts +0 -283
  624. package/src/app/webcommon/popups/popup-recurso/popup-recurso.component.html +0 -179
  625. package/src/app/webcommon/popups/popup-recurso/popup-recurso.component.scss +0 -3
  626. package/src/app/webcommon/popups/popup-recurso/popup-recurso.component.ts +0 -266
  627. package/src/app/webcommon/popups/popup-reporte/popup-reporte.component.html +0 -273
  628. package/src/app/webcommon/popups/popup-reporte/popup-reporte.component.scss +0 -13
  629. package/src/app/webcommon/popups/popup-reporte/popup-reporte.component.ts +0 -564
  630. package/src/app/webcommon/popups/popup-sentencia/popup-sentencia.component.html +0 -10
  631. package/src/app/webcommon/popups/popup-sentencia/popup-sentencia.component.scss +0 -5
  632. package/src/app/webcommon/popups/popup-sentencia/popup-sentencia.component.ts +0 -58
  633. package/src/app/webcommon/popups/popup-tablas-fuente/popup-tablas-fuente.component.html +0 -71
  634. package/src/app/webcommon/popups/popup-tablas-fuente/popup-tablas-fuente.component.scss +0 -0
  635. package/src/app/webcommon/popups/popup-tablas-fuente/popup-tablas-fuente.component.ts +0 -154
  636. package/src/app/webcommon/popups/punto-proceso-comp/punto-proceso-comp.component.html +0 -11
  637. package/src/app/webcommon/popups/punto-proceso-comp/punto-proceso-comp.component.scss +0 -0
  638. package/src/app/webcommon/popups/punto-proceso-comp/punto-proceso-comp.component.ts +0 -82
  639. package/src/app/webcommon/services/carguelinea.service.ts +0 -74
  640. package/src/app/webcommon/services/dashboard.service.ts +0 -258
  641. package/src/app/webcommon/services/ejecucionreporte.service.ts +0 -160
  642. package/src/app/webcommon/services/fechaUtils.service.ts +0 -127
  643. package/src/app/webcommon/services/fuentegeneral.service.ts +0 -74
  644. package/src/app/webcommon/services/homologacion.service.ts +0 -49
  645. package/src/app/webcommon/services/plantillas.service.ts +0 -165
  646. package/src/app/webcommon/services/reportes.service.ts +0 -133
  647. package/src/app/webcommon/webcommon.module.ts +0 -11
  648. package/src/environments/environment.prod.ts +0 -3
  649. package/src/environments/environment.ts +0 -25
  650. package/src/favicon.ico +0 -0
  651. package/src/index.html +0 -14
  652. package/src/main.ts +0 -12
  653. package/src/polyfills.ts +0 -53
  654. package/src/test.ts +0 -14
  655. package/tsconfig.app.json +0 -15
  656. package/tsconfig.json +0 -35
  657. package/tsconfig.spec.json +0 -18
@@ -0,0 +1,349 @@
1
+ import { Inject, Injectable } from '@angular/core';
2
+ import { DOCUMENT } from '@angular/common';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "ngx-cookie-service";
5
+ import * as i2 from "./click-posicion.service";
6
+ export class UtilsService {
7
+ cookieService;
8
+ document;
9
+ clickPositionService;
10
+ RESERVADAS_SQL_NOPUEDECONTENER = [';'];
11
+ reservadas = ['ALTER', 'DELETE', 'DROP', 'MODIFY', 'CREATE', 'DATABASE', 'TABLE', 'UPDATE', 'TRIGGER', 'GRANT', 'REVOKE', 'CALL', 'INSERT', 'TRUNCATE', 'USE', '--'];
12
+ constructor(cookieService, document, clickPositionService) {
13
+ this.cookieService = cookieService;
14
+ this.document = document;
15
+ this.clickPositionService = clickPositionService;
16
+ }
17
+ generarLlave() {
18
+ let result = '';
19
+ const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
20
+ const charactersLength = 32;
21
+ for (let i = 0; i < charactersLength; i++) {
22
+ result += characters.charAt(Math.floor(Math.random() * charactersLength));
23
+ }
24
+ return result.toLowerCase();
25
+ }
26
+ generarPin(cantidad) {
27
+ let result = '';
28
+ const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
29
+ for (let i = 0; i < cantidad; i++) {
30
+ result += characters.charAt(Math.floor(Math.random() * cantidad));
31
+ }
32
+ return result.toLowerCase();
33
+ }
34
+ rightpad(str, length, char) {
35
+ if (str === undefined) {
36
+ return null;
37
+ }
38
+ if (typeof str !== 'string' || typeof length !== 'number') {
39
+ throw new TypeError('Los argumentos deben ser una cadena y un número.');
40
+ }
41
+ if (str.length >= length) {
42
+ return str;
43
+ }
44
+ char = char || ' '; // Utiliza un espacio como carácter de relleno si no se proporciona uno
45
+ var padLength = length - str.length;
46
+ var padding = char.repeat(padLength);
47
+ return str + padding;
48
+ }
49
+ validarCampoNumerico(event) {
50
+ const input = event.target;
51
+ const regex = /[^0-9]/gi;
52
+ input.value = input.value.replace(regex, '');
53
+ }
54
+ isNotBlank(str) {
55
+ return str != null && str.trim().length > 0;
56
+ }
57
+ isBlank(str) {
58
+ return str == null || str?.trim() === '';
59
+ }
60
+ validarCampoObligatorio(valor) {
61
+ // Verificar si el valor no es null ni undefined
62
+ if (valor !== null && valor !== undefined) {
63
+ // Verificar si el valor no es una cadena vacía (en caso de ser una cadena)
64
+ if (typeof valor === 'string' && valor.trim() === '') {
65
+ return false;
66
+ }
67
+ // Verificar si el valor no es un arreglo vacío (en caso de ser un arreglo)
68
+ if (Array.isArray(valor) && valor.length === 0) {
69
+ return false;
70
+ }
71
+ /*if (typeof valor === 'object' && Object.keys(valor).length === 0) {
72
+ return false;
73
+ }*/
74
+ return true;
75
+ }
76
+ return false;
77
+ }
78
+ capitalizeFully(inputString) {
79
+ if (!inputString) {
80
+ return '';
81
+ }
82
+ const words = inputString.split(' ');
83
+ const capitalizedWords = words.map(word => {
84
+ if (word.length > 0) {
85
+ return word.charAt(0).toUpperCase() + word.slice(1).toLowerCase();
86
+ }
87
+ return '';
88
+ });
89
+ const result = capitalizedWords.join(' ');
90
+ return result;
91
+ }
92
+ ordenarSelectItemsAlfabeticamente(arrayDeObjetos) {
93
+ arrayDeObjetos.sort((a, b) => {
94
+ const nombreA = a.label.toLowerCase();
95
+ const nombreB = b.label.toLowerCase();
96
+ if (nombreA < nombreB) {
97
+ return -1;
98
+ }
99
+ if (nombreA > nombreB) {
100
+ return 1;
101
+ }
102
+ return 0;
103
+ });
104
+ return arrayDeObjetos;
105
+ }
106
+ obtenerParametroDeURL(urlString, parametro) {
107
+ const url = new URL(urlString);
108
+ const searchParams = new URLSearchParams(url.search);
109
+ return searchParams.get(parametro);
110
+ }
111
+ validarEmail(email) {
112
+ const patronEmail = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
113
+ return patronEmail.test(email);
114
+ }
115
+ obtenerBase() {
116
+ var basePortal = null;
117
+ var paginaActual = window.location.href;
118
+ var url = new URL(paginaActual);
119
+ var params = new URLSearchParams(url.search);
120
+ if (paginaActual.toString().includes('PortalSara')) {
121
+ for (var match of paginaActual.matchAll(/(?<inicio>.*)\/(?<seguridad>.*)\/(?<sitio>.*)\/(?<pagina>.*)/g)) {
122
+ basePortal = match.groups?.seguridad;
123
+ }
124
+ }
125
+ else if (params?.get('us_id')) {
126
+ paginaActual = window.parent.location.href;
127
+ for (var match of paginaActual.matchAll(/(?<inicio>.*)\/(?<seguridad>.*)\/(?<sitio>.*)\/(?<pagina>.*)/g)) {
128
+ basePortal = match.groups?.seguridad;
129
+ }
130
+ }
131
+ else {
132
+ const regex = /^.*?\/\/.*?\/(.*?)\//g; // Expresión regular para obtener la primera parte de la URL
133
+ const match = Array.from(paginaActual.matchAll(regex));
134
+ if (match && match[0] && match[0][1]) {
135
+ basePortal = match[0][1];
136
+ }
137
+ }
138
+ return basePortal;
139
+ }
140
+ validarEspacio(caracter) {
141
+ const regex = /\s/; // La expresión regular para espacios en blanco
142
+ return regex.test(caracter); // Devuelve true si el carácter es un espacio en blanco
143
+ }
144
+ validarTextoSQL(valor, obligatorio, select, longitud, validarSentencia) {
145
+ // Verifica obligatoriedad
146
+ if (obligatorio && (valor == null || valor.trim().length == 0 || valor == '--')) {
147
+ return 'Obligatorio';
148
+ }
149
+ // Verifica longitud máxima
150
+ if (longitud > 0) {
151
+ if (valor != null && valor != '--' && valor.length > longitud) {
152
+ return 'Longitud maxima de ' + longitud;
153
+ }
154
+ }
155
+ // Realiza las demás validacion solo en el caso de que la cadena SQL/valor no sea vacia
156
+ if (valor == null || valor.trim().length == 0 || valor == '--')
157
+ return null;
158
+ if (validarSentencia) {
159
+ if (select) {
160
+ if (!valor.toUpperCase().startsWith('SELECT')) {
161
+ return 'El texto debe iniciar con la palabra Select';
162
+ }
163
+ }
164
+ else {
165
+ if (valor.toUpperCase().includes('SELECT')) {
166
+ return 'No puede contener la palabra Select';
167
+ }
168
+ }
169
+ }
170
+ var indice;
171
+ var mensaje;
172
+ this.RESERVADAS_SQL_NOPUEDECONTENER.forEach(item => {
173
+ if (valor.includes(item)) {
174
+ mensaje = 'No puede contener ' + item;
175
+ }
176
+ });
177
+ this.reservadas.forEach(item => {
178
+ if (valor.toUpperCase().includes(item.toUpperCase())) {
179
+ indice = (valor.toUpperCase().indexOf(item.toUpperCase()));
180
+ if (indice == 0 || (this.validarEspacio(valor.charAt(indice - 1)) && this.validarEspacio(valor.charAt(item.length + indice)))) {
181
+ mensaje = 'No puede contener ' + item;
182
+ }
183
+ }
184
+ });
185
+ return mensaje;
186
+ }
187
+ sleep(ms) {
188
+ return new Promise((resolve) => setTimeout(resolve, ms));
189
+ }
190
+ validarTextoArchivoJasper(texto) {
191
+ if (texto.trim() == '' || texto == null) {
192
+ return "El campo no puede estar vacio";
193
+ }
194
+ if (texto.match("^[^\\D].*")) {
195
+ return "El campo no puede iniciar con numeros";
196
+ }
197
+ if (texto.match("^[^\\S].*")) {
198
+ return "El campo no puede iniciar con caracteres en blanco";
199
+ }
200
+ if (!texto.match("^[^\\W].*")) {
201
+ return "El campo no puede iniciar con caracteres especiales";
202
+ }
203
+ return null;
204
+ }
205
+ resizeWindowIFrame() {
206
+ if (window.frameElement != null) {
207
+ this.resizeIframeKeepPosition(window.frameElement);
208
+ }
209
+ }
210
+ /**
211
+ * Funcion para mantener la posición actual en el iframe.
212
+ * @param obj es un "FrameElement"
213
+ */
214
+ resizeIframeKeepPosition(obj) {
215
+ var ifrm = obj;
216
+ var doc = ifrm.contentDocument ? ifrm.contentDocument : ifrm.contentWindow.document;
217
+ var tamanio = this.getDocHeight(doc) + 40;
218
+ ifrm.style.height = tamanio + "px";
219
+ }
220
+ getDocHeight(doc) {
221
+ console.log('getDocHeight');
222
+ let navegador = this.obtenerNavegador().toLowerCase();
223
+ var height = 0;
224
+ doc = doc || document;
225
+ const appRoot = doc.querySelector('app-root');
226
+ const swalPopup = doc.querySelector('.swal2-popup');
227
+ if (swalPopup) {
228
+ return swalPopup.offsetHeight + 40;
229
+ }
230
+ // Si encuentra el elemento <app-root>, retorna su altura
231
+ if (appRoot) {
232
+ return appRoot.offsetHeight;
233
+ }
234
+ //var body = doc.body, html = doc.documentElement;
235
+ //height = Math.max( body.scrollHeight, body.offsetHeight,
236
+ //html.clientHeight, html.scrollHeight, html.offsetHeight );
237
+ if (navegador.indexOf('firefox') !== -1) {
238
+ if (doc.formDetalleConvocatoria) {
239
+ let cantidadMiles = height / 1000;
240
+ height = height + 600 + (cantidadMiles * 40);
241
+ }
242
+ }
243
+ // console.warn('FCO : llama a getDocHeight');
244
+ return height;
245
+ }
246
+ obtenerNavegador() {
247
+ var ua = navigator.userAgent, tem, M = ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i) || [];
248
+ if (/trident/i.test(M[1])) {
249
+ tem = /\brv[ :]+(\d+)/g.exec(ua) || [];
250
+ return 'IE ' + (tem[1] || '');
251
+ }
252
+ if (M[1] === 'Chrome') {
253
+ tem = ua.match(/\b(OPR|Edge)\/(\d+)/);
254
+ if (tem != null)
255
+ return tem.slice(1).join(' ').replace('OPR', 'Opera');
256
+ }
257
+ M = M[2] ? [M[1], M[2]] : [navigator.appName, navigator.appVersion, '-?'];
258
+ if ((tem = ua.match(/version\/(\d+)/i)) != null)
259
+ M.splice(1, 1, tem[1]);
260
+ return M.join(' ');
261
+ }
262
+ obtenerUrlApi(urlapi) {
263
+ if (urlapi) {
264
+ return urlapi;
265
+ }
266
+ switch (this.getTokenKey('aplicacion')) {
267
+ case '1':
268
+ return window['env']['urlapisara'] ? window['env']['urlapisara'] : this.cookieService.get('urlnucleo');
269
+ case '13':
270
+ return window['env']['urlapimana'] ? window['env']['urlapimana'] : this.cookieService.get('urlnucleo');
271
+ case '10':
272
+ return window['env']['urlapisara'] ? window['env']['urlapisara'] : this.cookieService.get('urlnucleo');
273
+ //return window['env']['urlapi'] ? window['env']['urlapi'] : this.cookieService.get('urlnucleo');
274
+ case '77':
275
+ return window['env']['urlapimanaaps'] ? window['env']['urlapimanaaps'] : this.cookieService.get('urlnucleo');
276
+ default:
277
+ return this.cookieService.get('urlnucleo');
278
+ }
279
+ }
280
+ getTokenKey(key) {
281
+ try {
282
+ const data = this._decodeToken();
283
+ return data[key].toString();
284
+ }
285
+ catch (error) {
286
+ return undefined;
287
+ }
288
+ }
289
+ _decodeToken() {
290
+ try {
291
+ const token = this.getItem('token', '');
292
+ const data = token.split('.')[1];
293
+ return JSON.parse(atob(data));
294
+ }
295
+ catch (error) {
296
+ throw error;
297
+ }
298
+ }
299
+ getItem(key, defaultValue) {
300
+ return localStorage.getItem(this.obtenerBase() + '_' + key) ?? defaultValue;
301
+ }
302
+ cambiarTema(tema) {
303
+ localStorage.setItem(this.obtenerBase() + '_' + 'tema', tema);
304
+ let linkTema = this.document.getElementById('temaApp');
305
+ linkTema.href = `${tema}.css`;
306
+ }
307
+ calcularPosicionDialog() {
308
+ const { x, y } = this.clickPositionService.getClickPosition();
309
+ console.log('lastClickPosition');
310
+ console.log(x);
311
+ console.log(y);
312
+ //const elemento = event.target as HTMLElement;
313
+ //const elementoCoordenada = elemento.getBoundingClientRect();
314
+ //const iframe = window.frameElement;
315
+ var ifrm = window.frameElement;
316
+ var doc = ifrm.contentDocument ? ifrm.contentDocument : ifrm.contentWindow.document;
317
+ var tamanio = this.getDocHeight(doc) + 40;
318
+ const iframeOffsetTop = tamanio ? -(tamanio / 2) : 0;
319
+ const dialog = document.querySelector('.p-dialog');
320
+ if (dialog) {
321
+ var topPosition = iframeOffsetTop + y;
322
+ const calculoPosicionPopup = y + (dialog.offsetHeight / 2);
323
+ if (calculoPosicionPopup > tamanio) {
324
+ var diferencia = calculoPosicionPopup - tamanio;
325
+ topPosition = topPosition - diferencia - 10;
326
+ }
327
+ dialog.style.top = `${topPosition}px`;
328
+ }
329
+ }
330
+ validarPalabra(texto) {
331
+ const pletras = /^[a-zA-Z][0-9a-zA-Z]*$/;
332
+ return pletras.test(texto);
333
+ }
334
+ isNumeric(value) {
335
+ return !isNaN(Number(value));
336
+ }
337
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: UtilsService, deps: [{ token: i1.CookieService }, { token: DOCUMENT }, { token: i2.ClickPosicionService }], target: i0.ɵɵFactoryTarget.Injectable });
338
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: UtilsService, providedIn: 'root' });
339
+ }
340
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: UtilsService, decorators: [{
341
+ type: Injectable,
342
+ args: [{
343
+ providedIn: 'root'
344
+ }]
345
+ }], ctorParameters: () => [{ type: i1.CookieService }, { type: Document, decorators: [{
346
+ type: Inject,
347
+ args: [DOCUMENT]
348
+ }] }, { type: i2.ClickPosicionService }] });
349
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS9zZXJ2aWNpb3MvdXRpbHMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7QUFNM0MsTUFBTSxPQUFPLFlBQVk7SUFLSDtJQUF3RDtJQUE0QjtJQUhoRyw4QkFBOEIsR0FBVSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQzdDLFVBQVUsR0FBVSxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFBO0lBRW5MLFlBQW9CLGFBQTRCLEVBQTRCLFFBQWtCLEVBQVUsb0JBQTBDO1FBQTlILGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQTRCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFBVSx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO0lBQ2xKLENBQUM7SUFFTSxZQUFZO1FBQ2pCLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNoQixNQUFNLFVBQVUsR0FBRyxnRUFBZ0UsQ0FBQztRQUNwRixNQUFNLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztRQUM1QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUMxQyxNQUFNLElBQUksVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7UUFDNUUsQ0FBQztRQUVELE9BQU8sTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFJTSxVQUFVLENBQUMsUUFBZ0I7UUFDaEMsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLE1BQU0sVUFBVSxHQUFHLGdFQUFnRSxDQUFDO1FBQ3BGLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxRQUFRLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNsQyxNQUFNLElBQUksVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQ3BFLENBQUM7UUFFRCxPQUFPLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRUQsUUFBUSxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsSUFBSTtRQUN4QixJQUFJLEdBQUcsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUN0QixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFDRCxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsSUFBSSxPQUFPLE1BQU0sS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUMxRCxNQUFNLElBQUksU0FBUyxDQUFDLGtEQUFrRCxDQUFDLENBQUM7UUFDMUUsQ0FBQztRQUVELElBQUksR0FBRyxDQUFDLE1BQU0sSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUN6QixPQUFPLEdBQUcsQ0FBQztRQUNiLENBQUM7UUFFRCxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsQ0FBQyxDQUFDLHVFQUF1RTtRQUUzRixJQUFJLFNBQVMsR0FBRyxNQUFNLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQztRQUNwQyxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRXJDLE9BQU8sR0FBRyxHQUFHLE9BQU8sQ0FBQztJQUN2QixDQUFDO0lBRUQsb0JBQW9CLENBQUMsS0FBVTtRQUM3QixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQzNCLE1BQU0sS0FBSyxHQUFHLFVBQVUsQ0FBQztRQUN6QixLQUFLLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsVUFBVSxDQUFDLEdBQXVDO1FBQ2hELE9BQU8sR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQsT0FBTyxDQUFDLEdBQXVDO1FBQzdDLE9BQU8sR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDO0lBQzNDLENBQUM7SUFFRCx1QkFBdUIsQ0FBQyxLQUFLO1FBQzNCLGdEQUFnRDtRQUNoRCxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzFDLDJFQUEyRTtZQUMzRSxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUM7Z0JBQ3JELE9BQU8sS0FBSyxDQUFDO1lBQ2YsQ0FBQztZQUNELDJFQUEyRTtZQUMzRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDL0MsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDO1lBQ0Q7O2VBRUc7WUFDSCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxlQUFlLENBQUMsV0FBbUI7UUFDakMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2pCLE9BQU8sRUFBRSxDQUFDO1FBQ1osQ0FBQztRQUNELE1BQU0sS0FBSyxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDckMsTUFBTSxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3hDLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDcEIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDcEUsQ0FBQztZQUNELE9BQU8sRUFBRSxDQUFDO1FBQ1osQ0FBQyxDQUFDLENBQUM7UUFDSCxNQUFNLE1BQU0sR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDMUMsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVELGlDQUFpQyxDQUFDLGNBQXFCO1FBQ3JELGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDM0IsTUFBTSxPQUFPLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN0QyxNQUFNLE9BQU8sR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBRXRDLElBQUksT0FBTyxHQUFHLE9BQU8sRUFBRSxDQUFDO2dCQUN0QixPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQ1osQ0FBQztZQUNELElBQUksT0FBTyxHQUFHLE9BQU8sRUFBRSxDQUFDO2dCQUN0QixPQUFPLENBQUMsQ0FBQztZQUNYLENBQUM7WUFDRCxPQUFPLENBQUMsQ0FBQztRQUNYLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxjQUFjLENBQUM7SUFDeEIsQ0FBQztJQUVELHFCQUFxQixDQUFDLFNBQWlCLEVBQUUsU0FBaUI7UUFDeEQsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDL0IsTUFBTSxZQUFZLEdBQUcsSUFBSSxlQUFlLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3JELE9BQU8sWUFBWSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQWE7UUFDeEIsTUFBTSxXQUFXLEdBQUcsa0RBQWtELENBQUM7UUFDdkUsT0FBTyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxXQUFXO1FBRVQsSUFBSSxVQUFVLEdBQVcsSUFBSSxDQUFDO1FBQzlCLElBQUksWUFBWSxHQUFRLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFBO1FBQzVDLElBQUksR0FBRyxHQUFHLElBQUksR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2hDLElBQUksTUFBTSxHQUFHLElBQUksZUFBZSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM3QyxJQUFJLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztZQUNuRCxLQUFLLElBQUksS0FBSyxJQUFJLFlBQVksQ0FBQyxRQUFRLENBQUMsK0RBQStELENBQUMsRUFBRSxDQUFDO2dCQUN6RyxVQUFVLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUM7WUFDdkMsQ0FBQztRQUNILENBQUM7YUFBTSxJQUFJLE1BQU0sRUFBRSxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNoQyxZQUFZLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1lBQzNDLEtBQUssSUFBSSxLQUFLLElBQUksWUFBWSxDQUFDLFFBQVEsQ0FBQywrREFBK0QsQ0FBQyxFQUFFLENBQUM7Z0JBQ3pHLFVBQVUsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQztZQUN2QyxDQUFDO1FBQ0gsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLEtBQUssR0FBRyx1QkFBdUIsQ0FBQyxDQUFDLDREQUE0RDtZQUNuRyxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUV2RCxJQUFJLEtBQUssSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ3JDLFVBQVUsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDM0IsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO0lBRU8sY0FBYyxDQUFDLFFBQWdCO1FBQ3JDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDLCtDQUErQztRQUNuRSxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyx1REFBdUQ7SUFDdEYsQ0FBQztJQUVNLGVBQWUsQ0FBQyxLQUFhLEVBQUUsV0FBb0IsRUFBRSxNQUFlLEVBQUUsUUFBZ0IsRUFBRSxnQkFBeUI7UUFDdEgsMEJBQTBCO1FBQzFCLElBQUksV0FBVyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNoRixPQUFPLGFBQWEsQ0FBQztRQUN2QixDQUFDO1FBQ0QsMkJBQTJCO1FBQzNCLElBQUksUUFBUSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ2pCLElBQUksS0FBSyxJQUFJLElBQUksSUFBSSxLQUFLLElBQUksSUFBSSxJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsUUFBUSxFQUFFLENBQUM7Z0JBQzlELE9BQU8scUJBQXFCLEdBQUcsUUFBUSxDQUFDO1lBQzFDLENBQUM7UUFDSCxDQUFDO1FBQ0QsdUZBQXVGO1FBQ3ZGLElBQUksS0FBSyxJQUFJLElBQUksSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxLQUFLLElBQUksSUFBSTtZQUM1RCxPQUFPLElBQUksQ0FBQztRQUVkLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztZQUNyQixJQUFJLE1BQU0sRUFBRSxDQUFDO2dCQUNYLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7b0JBQzlDLE9BQU8sNkNBQTZDLENBQUM7Z0JBQ3ZELENBQUM7WUFDSCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7b0JBQzNDLE9BQU8scUNBQXFDLENBQUM7Z0JBQy9DLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUNELElBQUksTUFBYyxDQUFDO1FBQ25CLElBQUksT0FBZSxDQUFDO1FBQ3BCLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDakQsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQ3pCLE9BQU8sR0FBRyxvQkFBb0IsR0FBRyxJQUFJLENBQUM7WUFDeEMsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFBO1FBQ0YsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDN0IsSUFBSSxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxFQUFFLENBQUM7Z0JBQ3JELE1BQU0sR0FBRyxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDM0QsSUFBSSxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUM5SCxPQUFPLEdBQUcsb0JBQW9CLEdBQUcsSUFBSSxDQUFDO2dCQUN4QyxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFBO1FBQ0YsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVELEtBQUssQ0FBQyxFQUFVO1FBQ2QsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRCx5QkFBeUIsQ0FBQyxLQUFhO1FBQ3JDLElBQUksS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxLQUFLLElBQUksSUFBSSxFQUFFLENBQUM7WUFDeEMsT0FBTywrQkFBK0IsQ0FBQztRQUN6QyxDQUFDO1FBQ0QsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7WUFDN0IsT0FBTyx1Q0FBdUMsQ0FBQztRQUNqRCxDQUFDO1FBQ0QsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7WUFDN0IsT0FBTyxvREFBb0QsQ0FBQztRQUM5RCxDQUFDO1FBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztZQUM5QixPQUFPLHFEQUFxRCxDQUFDO1FBQy9ELENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxrQkFBa0I7UUFDbEIsSUFBSyxNQUFNLENBQUMsWUFBWSxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ2xDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDcEQsQ0FBQztJQUNGLENBQUM7SUFFRDs7O09BR0c7SUFDSyx3QkFBd0IsQ0FBQyxHQUFHO1FBRW5DLElBQUksSUFBSSxHQUFHLEdBQUcsQ0FBQztRQUNmLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUEsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDO1FBQ2pGLElBQUksT0FBTyxHQUFXLElBQUksQ0FBQyxZQUFZLENBQUUsR0FBRyxDQUFFLEdBQUksRUFBRSxDQUFBO1FBQ3RELElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLE9BQU8sR0FBRyxJQUFJLENBQUM7SUFDcEMsQ0FBQztJQUVPLFlBQVksQ0FBQyxHQUFHO1FBQ3JCLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUE7UUFDN0IsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDdEQsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ2YsR0FBRyxHQUFHLEdBQUcsSUFBSSxRQUFRLENBQUM7UUFDcEIsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUU5QyxNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3BELElBQUksU0FBUyxFQUFFLENBQUM7WUFDWixPQUFPLFNBQVMsQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ3ZDLENBQUM7UUFFRCx5REFBeUQ7UUFDekQsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNWLE9BQU8sT0FBTyxDQUFDLFlBQVksQ0FBQztRQUNoQyxDQUFDO1FBQ0gsa0RBQWtEO1FBQ2xELDJEQUEyRDtRQUMzRCw0REFBNEQ7UUFFNUQsSUFBSSxTQUFTLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFDLENBQUM7WUFDeEMsSUFBRyxHQUFHLENBQUMsdUJBQXVCLEVBQUMsQ0FBQztnQkFDL0IsSUFBSSxhQUFhLEdBQUcsTUFBTSxHQUFHLElBQUksQ0FBQztnQkFDbEMsTUFBTSxHQUFHLE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxhQUFhLEdBQUMsRUFBRSxDQUFDLENBQUE7WUFDM0MsQ0FBQztRQUNGLENBQUM7UUFFRiw4Q0FBOEM7UUFFN0MsT0FBTyxNQUFNLENBQUM7SUFDZixDQUFDO0lBRUQsZ0JBQWdCO1FBQ2YsSUFBSSxFQUFFLEdBQUUsU0FBUyxDQUFDLFNBQVMsRUFBRSxHQUFHLEVBQ2hDLENBQUMsR0FBRSxFQUFFLENBQUMsS0FBSyxDQUFDLDhEQUE4RCxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2xGLElBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDO1lBQ3pCLEdBQUcsR0FBRyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3ZDLE9BQU8sS0FBSyxHQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzdCLENBQUM7UUFDRCxJQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSSxRQUFRLEVBQUMsQ0FBQztZQUNwQixHQUFHLEdBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1lBQ3JDLElBQUcsR0FBRyxJQUFHLElBQUk7Z0JBQUUsT0FBTyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3RFLENBQUM7UUFDRCxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDdkUsSUFBRyxDQUFDLEdBQUcsR0FBRSxFQUFFLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUMsSUFBRyxJQUFJO1lBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JFLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNwQixDQUFDO0lBRUEsYUFBYSxDQUFDLE1BQWU7UUFDM0IsSUFBSSxNQUFNLEVBQUMsQ0FBQztZQUNWLE9BQU8sTUFBTSxDQUFDO1FBQ2hCLENBQUM7UUFDRCxRQUFRLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztZQUN2QyxLQUFLLEdBQUc7Z0JBQ04sT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDekcsS0FBSyxJQUFJO2dCQUNQLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3pHLEtBQUssSUFBSTtnQkFDUCxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUN2RyxpR0FBaUc7WUFDbkcsS0FBSyxJQUFJO2dCQUNQLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQy9HO2dCQUNFLE9BQVEsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDaEQsQ0FBQztJQUNILENBQUM7SUFFTyxXQUFXLENBQUMsR0FBVztRQUM3QixJQUFJLENBQUM7WUFDSCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDakMsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDOUIsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDO0lBQ0gsQ0FBQztJQUVPLFlBQVk7UUFDbEIsSUFBSSxDQUFDO1lBQ0gsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDeEMsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNqQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDaEMsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixNQUFNLEtBQUssQ0FBQztRQUNkLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxDQUFDLEdBQVcsRUFBRSxZQUFxQjtRQUN4QyxPQUFPLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxHQUFHLEdBQUcsR0FBSSxHQUFHLENBQUMsSUFBSSxZQUFZLENBQUM7SUFDL0UsQ0FBQztJQUVELFdBQVcsQ0FBQyxJQUFtQztRQUM3QyxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsR0FBRyxHQUFHLEdBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzdELElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBb0IsQ0FBQztRQUMxRSxRQUFRLENBQUMsSUFBSSxHQUFHLEdBQUcsSUFBSSxNQUFNLENBQUE7SUFDL0IsQ0FBQztJQUVELHNCQUFzQjtRQUNwQixNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBRTlELE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQTtRQUNoQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ2QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUNkLCtDQUErQztRQUMvQyw4REFBOEQ7UUFFOUQsc0NBQXNDO1FBQ3RDLElBQUksSUFBSSxHQUFRLE1BQU0sQ0FBQyxZQUFZLENBQUM7UUFDdEMsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQSxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUM7UUFDakYsSUFBSSxPQUFPLEdBQVcsSUFBSSxDQUFDLFlBQVksQ0FBRSxHQUFHLENBQUUsR0FBSSxFQUFFLENBQUE7UUFDcEQsTUFBTSxlQUFlLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFbkQsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQWdCLENBQUM7UUFFbEUsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNYLElBQUksV0FBVyxHQUFHLGVBQWUsR0FBRyxDQUFDLENBQUM7WUFDdEMsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsWUFBWSxHQUFDLENBQUMsQ0FBQyxDQUFBO1lBQ3hELElBQUksb0JBQW9CLEdBQUcsT0FBTyxFQUFFLENBQUM7Z0JBQ25DLElBQUksVUFBVSxHQUFHLG9CQUFvQixHQUFHLE9BQU8sQ0FBQztnQkFDaEQsV0FBVyxHQUFHLFdBQVcsR0FBRyxVQUFVLEdBQUcsRUFBRSxDQUFDO1lBQzlDLENBQUM7WUFDRCxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxHQUFHLFdBQVcsSUFBSSxDQUFDO1FBQ3hDLENBQUM7SUFDSCxDQUFDO0lBRUQsY0FBYyxDQUFDLEtBQWE7UUFDMUIsTUFBTSxPQUFPLEdBQUcsd0JBQXdCLENBQUM7UUFDekMsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRCxTQUFTLENBQUMsS0FBYTtRQUNyQixPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQy9CLENBQUM7dUdBbFhVLFlBQVksK0NBS21DLFFBQVE7MkdBTHZELFlBQVksY0FGWCxNQUFNOzsyRkFFUCxZQUFZO2tCQUh4QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBTW9ELE1BQU07MkJBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb29raWVTZXJ2aWNlIH0gZnJvbSAnbmd4LWNvb2tpZS1zZXJ2aWNlJztcclxuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDbGlja1Bvc2ljaW9uU2VydmljZSB9IGZyb20gJy4vY2xpY2stcG9zaWNpb24uc2VydmljZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBVdGlsc1NlcnZpY2Uge1xyXG5cclxuICBwcml2YXRlIFJFU0VSVkFEQVNfU1FMX05PUFVFREVDT05URU5FUjogYW55W10gPSBbJzsnXVxyXG4gIHByaXZhdGUgcmVzZXJ2YWRhczogYW55W10gPSBbJ0FMVEVSJywgJ0RFTEVURScsICdEUk9QJywgJ01PRElGWScsICdDUkVBVEUnLCAnREFUQUJBU0UnLCAnVEFCTEUnLCAnVVBEQVRFJywgJ1RSSUdHRVInLCAnR1JBTlQnLCAnUkVWT0tFJywgJ0NBTEwnLCAnSU5TRVJUJywgJ1RSVU5DQVRFJywgJ1VTRScsICctLSddXHJcbiAgXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjb29raWVTZXJ2aWNlOiBDb29raWVTZXJ2aWNlLCBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGRvY3VtZW50OiBEb2N1bWVudCwgcHJpdmF0ZSBjbGlja1Bvc2l0aW9uU2VydmljZTogQ2xpY2tQb3NpY2lvblNlcnZpY2Upe1xyXG4gIH1cclxuICBcclxuICBwdWJsaWMgZ2VuZXJhckxsYXZlKCkge1xyXG4gICAgbGV0IHJlc3VsdCA9ICcnO1xyXG4gICAgY29uc3QgY2hhcmFjdGVycyA9ICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSc7XHJcbiAgICBjb25zdCBjaGFyYWN0ZXJzTGVuZ3RoID0gMzI7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNoYXJhY3RlcnNMZW5ndGg7IGkrKykge1xyXG4gICAgICByZXN1bHQgKz0gY2hhcmFjdGVycy5jaGFyQXQoTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogY2hhcmFjdGVyc0xlbmd0aCkpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiByZXN1bHQudG9Mb3dlckNhc2UoKTtcclxuICB9XHJcblxyXG5cclxuXHJcbiAgcHVibGljIGdlbmVyYXJQaW4oY2FudGlkYWQ6IG51bWJlcikge1xyXG4gICAgbGV0IHJlc3VsdCA9ICcnO1xyXG4gICAgY29uc3QgY2hhcmFjdGVycyA9ICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSc7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNhbnRpZGFkOyBpKyspIHtcclxuICAgICAgcmVzdWx0ICs9IGNoYXJhY3RlcnMuY2hhckF0KE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIGNhbnRpZGFkKSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHJlc3VsdC50b0xvd2VyQ2FzZSgpO1xyXG4gIH1cclxuXHJcbiAgcmlnaHRwYWQoc3RyLCBsZW5ndGgsIGNoYXIpIHtcclxuICAgIGlmIChzdHIgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIGlmICh0eXBlb2Ygc3RyICE9PSAnc3RyaW5nJyB8fCB0eXBlb2YgbGVuZ3RoICE9PSAnbnVtYmVyJykge1xyXG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdMb3MgYXJndW1lbnRvcyBkZWJlbiBzZXIgdW5hIGNhZGVuYSB5IHVuIG7Dum1lcm8uJyk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHN0ci5sZW5ndGggPj0gbGVuZ3RoKSB7XHJcbiAgICAgIHJldHVybiBzdHI7XHJcbiAgICB9XHJcblxyXG4gICAgY2hhciA9IGNoYXIgfHwgJyAnOyAvLyBVdGlsaXphIHVuIGVzcGFjaW8gY29tbyBjYXLDoWN0ZXIgZGUgcmVsbGVubyBzaSBubyBzZSBwcm9wb3JjaW9uYSB1bm9cclxuXHJcbiAgICB2YXIgcGFkTGVuZ3RoID0gbGVuZ3RoIC0gc3RyLmxlbmd0aDtcclxuICAgIHZhciBwYWRkaW5nID0gY2hhci5yZXBlYXQocGFkTGVuZ3RoKTtcclxuXHJcbiAgICByZXR1cm4gc3RyICsgcGFkZGluZztcclxuICB9XHJcblxyXG4gIHZhbGlkYXJDYW1wb051bWVyaWNvKGV2ZW50OiBhbnkpIHtcclxuICAgIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0O1xyXG4gICAgY29uc3QgcmVnZXggPSAvW14wLTldL2dpO1xyXG4gICAgaW5wdXQudmFsdWUgPSBpbnB1dC52YWx1ZS5yZXBsYWNlKHJlZ2V4LCAnJyk7XHJcbiAgfVxyXG5cclxuICBpc05vdEJsYW5rKHN0cjogc3RyaW5nIHwgU3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHN0ciAhPSBudWxsICYmIHN0ci50cmltKCkubGVuZ3RoID4gMDtcclxuICB9XHJcblxyXG4gIGlzQmxhbmsoc3RyOiBzdHJpbmcgfCBTdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gc3RyID09IG51bGwgfHwgc3RyPy50cmltKCkgPT09ICcnO1xyXG4gIH1cclxuXHJcbiAgdmFsaWRhckNhbXBvT2JsaWdhdG9yaW8odmFsb3IpOiBib29sZWFuIHtcclxuICAgIC8vIFZlcmlmaWNhciBzaSBlbCB2YWxvciBubyBlcyBudWxsIG5pIHVuZGVmaW5lZFxyXG4gICAgaWYgKHZhbG9yICE9PSBudWxsICYmIHZhbG9yICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgLy8gVmVyaWZpY2FyIHNpIGVsIHZhbG9yIG5vIGVzIHVuYSBjYWRlbmEgdmFjw61hIChlbiBjYXNvIGRlIHNlciB1bmEgY2FkZW5hKVxyXG4gICAgICBpZiAodHlwZW9mIHZhbG9yID09PSAnc3RyaW5nJyAmJiB2YWxvci50cmltKCkgPT09ICcnKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIC8vIFZlcmlmaWNhciBzaSBlbCB2YWxvciBubyBlcyB1biBhcnJlZ2xvIHZhY8OtbyAoZW4gY2FzbyBkZSBzZXIgdW4gYXJyZWdsbylcclxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsb3IpICYmIHZhbG9yLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICAvKmlmICh0eXBlb2YgdmFsb3IgPT09ICdvYmplY3QnICYmIE9iamVjdC5rZXlzKHZhbG9yKS5sZW5ndGggPT09IDApIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH0qL1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIGNhcGl0YWxpemVGdWxseShpbnB1dFN0cmluZzogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGlmICghaW5wdXRTdHJpbmcpIHtcclxuICAgICAgcmV0dXJuICcnO1xyXG4gICAgfVxyXG4gICAgY29uc3Qgd29yZHMgPSBpbnB1dFN0cmluZy5zcGxpdCgnICcpO1xyXG4gICAgY29uc3QgY2FwaXRhbGl6ZWRXb3JkcyA9IHdvcmRzLm1hcCh3b3JkID0+IHtcclxuICAgICAgaWYgKHdvcmQubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHJldHVybiB3b3JkLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgd29yZC5zbGljZSgxKS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiAnJztcclxuICAgIH0pO1xyXG4gICAgY29uc3QgcmVzdWx0ID0gY2FwaXRhbGl6ZWRXb3Jkcy5qb2luKCcgJyk7XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgb3JkZW5hclNlbGVjdEl0ZW1zQWxmYWJldGljYW1lbnRlKGFycmF5RGVPYmpldG9zOiBhbnlbXSk6IGFueVtdIHtcclxuICAgIGFycmF5RGVPYmpldG9zLnNvcnQoKGEsIGIpID0+IHtcclxuICAgICAgY29uc3Qgbm9tYnJlQSA9IGEubGFiZWwudG9Mb3dlckNhc2UoKTtcclxuICAgICAgY29uc3Qgbm9tYnJlQiA9IGIubGFiZWwudG9Mb3dlckNhc2UoKTtcclxuXHJcbiAgICAgIGlmIChub21icmVBIDwgbm9tYnJlQikge1xyXG4gICAgICAgIHJldHVybiAtMTtcclxuICAgICAgfVxyXG4gICAgICBpZiAobm9tYnJlQSA+IG5vbWJyZUIpIHtcclxuICAgICAgICByZXR1cm4gMTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gMDtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGFycmF5RGVPYmpldG9zO1xyXG4gIH1cclxuXHJcbiAgb2J0ZW5lclBhcmFtZXRyb0RlVVJMKHVybFN0cmluZzogc3RyaW5nLCBwYXJhbWV0cm86IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xyXG4gICAgY29uc3QgdXJsID0gbmV3IFVSTCh1cmxTdHJpbmcpO1xyXG4gICAgY29uc3Qgc2VhcmNoUGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh1cmwuc2VhcmNoKTtcclxuICAgIHJldHVybiBzZWFyY2hQYXJhbXMuZ2V0KHBhcmFtZXRybyk7XHJcbiAgfVxyXG5cclxuICB2YWxpZGFyRW1haWwoZW1haWw6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgcGF0cm9uRW1haWwgPSAvXlthLXpBLVowLTkuXyUrLV0rQFthLXpBLVowLTkuLV0rXFwuW2EtekEtWl17Mix9JC87XHJcbiAgICByZXR1cm4gcGF0cm9uRW1haWwudGVzdChlbWFpbCk7XHJcbiAgfVxyXG5cclxuICBvYnRlbmVyQmFzZSgpOiAoc3RyaW5nIHwgbnVsbCkge1xyXG5cclxuICAgIHZhciBiYXNlUG9ydGFsOiBzdHJpbmcgPSBudWxsO1xyXG4gICAgdmFyIHBhZ2luYUFjdHVhbDogYW55ID0gd2luZG93LmxvY2F0aW9uLmhyZWZcclxuICAgIHZhciB1cmwgPSBuZXcgVVJMKHBhZ2luYUFjdHVhbCk7XHJcbiAgICB2YXIgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh1cmwuc2VhcmNoKTtcclxuICAgIGlmIChwYWdpbmFBY3R1YWwudG9TdHJpbmcoKS5pbmNsdWRlcygnUG9ydGFsU2FyYScpKSB7XHJcbiAgICAgIGZvciAodmFyIG1hdGNoIG9mIHBhZ2luYUFjdHVhbC5tYXRjaEFsbCgvKD88aW5pY2lvPi4qKVxcLyg/PHNlZ3VyaWRhZD4uKilcXC8oPzxzaXRpbz4uKilcXC8oPzxwYWdpbmE+LiopL2cpKSB7XHJcbiAgICAgICAgYmFzZVBvcnRhbCA9IG1hdGNoLmdyb3Vwcz8uc2VndXJpZGFkO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKHBhcmFtcz8uZ2V0KCd1c19pZCcpKSB7XHJcbiAgICAgIHBhZ2luYUFjdHVhbCA9IHdpbmRvdy5wYXJlbnQubG9jYXRpb24uaHJlZjtcclxuICAgICAgZm9yICh2YXIgbWF0Y2ggb2YgcGFnaW5hQWN0dWFsLm1hdGNoQWxsKC8oPzxpbmljaW8+LiopXFwvKD88c2VndXJpZGFkPi4qKVxcLyg/PHNpdGlvPi4qKVxcLyg/PHBhZ2luYT4uKikvZykpIHtcclxuICAgICAgICBiYXNlUG9ydGFsID0gbWF0Y2guZ3JvdXBzPy5zZWd1cmlkYWQ7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IHJlZ2V4ID0gL14uKj9cXC9cXC8uKj9cXC8oLio/KVxcLy9nOyAvLyBFeHByZXNpw7NuIHJlZ3VsYXIgcGFyYSBvYnRlbmVyIGxhIHByaW1lcmEgcGFydGUgZGUgbGEgVVJMXHJcbiAgICAgIGNvbnN0IG1hdGNoID0gQXJyYXkuZnJvbShwYWdpbmFBY3R1YWwubWF0Y2hBbGwocmVnZXgpKTtcclxuXHJcbiAgICAgIGlmIChtYXRjaCAmJiBtYXRjaFswXSAmJiBtYXRjaFswXVsxXSkge1xyXG4gICAgICAgIGJhc2VQb3J0YWwgPSBtYXRjaFswXVsxXTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGJhc2VQb3J0YWw7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHZhbGlkYXJFc3BhY2lvKGNhcmFjdGVyOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IHJlZ2V4ID0gL1xccy87IC8vIExhIGV4cHJlc2nDs24gcmVndWxhciBwYXJhIGVzcGFjaW9zIGVuIGJsYW5jb1xyXG4gICAgcmV0dXJuIHJlZ2V4LnRlc3QoY2FyYWN0ZXIpOyAvLyBEZXZ1ZWx2ZSB0cnVlIHNpIGVsIGNhcsOhY3RlciBlcyB1biBlc3BhY2lvIGVuIGJsYW5jb1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHZhbGlkYXJUZXh0b1NRTCh2YWxvcjogc3RyaW5nLCBvYmxpZ2F0b3JpbzogYm9vbGVhbiwgc2VsZWN0OiBib29sZWFuLCBsb25naXR1ZDogbnVtYmVyLCB2YWxpZGFyU2VudGVuY2lhOiBib29sZWFuKTogKHN0cmluZyB8IG51bGwpIHtcclxuICAgIC8vIFZlcmlmaWNhIG9ibGlnYXRvcmllZGFkXHJcbiAgICBpZiAob2JsaWdhdG9yaW8gJiYgKHZhbG9yID09IG51bGwgfHwgdmFsb3IudHJpbSgpLmxlbmd0aCA9PSAwIHx8IHZhbG9yID09ICctLScpKSB7XHJcbiAgICAgIHJldHVybiAnT2JsaWdhdG9yaW8nO1xyXG4gICAgfVxyXG4gICAgLy8gVmVyaWZpY2EgbG9uZ2l0dWQgbcOheGltYVxyXG4gICAgaWYgKGxvbmdpdHVkID4gMCkge1xyXG4gICAgICBpZiAodmFsb3IgIT0gbnVsbCAmJiB2YWxvciAhPSAnLS0nICYmIHZhbG9yLmxlbmd0aCA+IGxvbmdpdHVkKSB7XHJcbiAgICAgICAgcmV0dXJuICdMb25naXR1ZCBtYXhpbWEgZGUgJyArIGxvbmdpdHVkO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyBSZWFsaXphIGxhcyBkZW3DoXMgdmFsaWRhY2lvbiBzb2xvIGVuIGVsIGNhc28gZGUgcXVlIGxhIGNhZGVuYSBTUUwvdmFsb3Igbm8gc2VhIHZhY2lhXHJcbiAgICBpZiAodmFsb3IgPT0gbnVsbCB8fCB2YWxvci50cmltKCkubGVuZ3RoID09IDAgfHwgdmFsb3IgPT0gJy0tJylcclxuICAgICAgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgaWYgKHZhbGlkYXJTZW50ZW5jaWEpIHtcclxuICAgICAgaWYgKHNlbGVjdCkge1xyXG4gICAgICAgIGlmICghdmFsb3IudG9VcHBlckNhc2UoKS5zdGFydHNXaXRoKCdTRUxFQ1QnKSkge1xyXG4gICAgICAgICAgcmV0dXJuICdFbCB0ZXh0byBkZWJlIGluaWNpYXIgY29uIGxhIHBhbGFicmEgU2VsZWN0JztcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKHZhbG9yLnRvVXBwZXJDYXNlKCkuaW5jbHVkZXMoJ1NFTEVDVCcpKSB7XHJcbiAgICAgICAgICByZXR1cm4gJ05vIHB1ZWRlIGNvbnRlbmVyIGxhIHBhbGFicmEgU2VsZWN0JztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHZhciBpbmRpY2U6IG51bWJlcjtcclxuICAgIHZhciBtZW5zYWplOiBzdHJpbmc7XHJcbiAgICB0aGlzLlJFU0VSVkFEQVNfU1FMX05PUFVFREVDT05URU5FUi5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICBpZiAodmFsb3IuaW5jbHVkZXMoaXRlbSkpIHtcclxuICAgICAgICBtZW5zYWplID0gJ05vIHB1ZWRlIGNvbnRlbmVyICcgKyBpdGVtO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gICAgdGhpcy5yZXNlcnZhZGFzLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgIGlmICh2YWxvci50b1VwcGVyQ2FzZSgpLmluY2x1ZGVzKGl0ZW0udG9VcHBlckNhc2UoKSkpIHtcclxuICAgICAgICBpbmRpY2UgPSAodmFsb3IudG9VcHBlckNhc2UoKS5pbmRleE9mKGl0ZW0udG9VcHBlckNhc2UoKSkpO1xyXG4gICAgICAgIGlmIChpbmRpY2UgPT0gMCB8fCAodGhpcy52YWxpZGFyRXNwYWNpbyh2YWxvci5jaGFyQXQoaW5kaWNlIC0gMSkpICYmIHRoaXMudmFsaWRhckVzcGFjaW8odmFsb3IuY2hhckF0KGl0ZW0ubGVuZ3RoICsgaW5kaWNlKSkpKSB7XHJcbiAgICAgICAgICBtZW5zYWplID0gJ05vIHB1ZWRlIGNvbnRlbmVyICcgKyBpdGVtO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSlcclxuICAgIHJldHVybiBtZW5zYWplO1xyXG4gIH1cclxuXHJcbiAgc2xlZXAobXM6IG51bWJlcik6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIG1zKSk7XHJcbiAgfVxyXG5cclxuICB2YWxpZGFyVGV4dG9BcmNoaXZvSmFzcGVyKHRleHRvOiBzdHJpbmcpOiAoc3RyaW5nIHwgbnVsbCkge1xyXG4gICAgaWYgKHRleHRvLnRyaW0oKSA9PSAnJyB8fCB0ZXh0byA9PSBudWxsKSB7XHJcbiAgICAgIHJldHVybiBcIkVsIGNhbXBvIG5vIHB1ZWRlIGVzdGFyIHZhY2lvXCI7XHJcbiAgICB9XHJcbiAgICBpZiAodGV4dG8ubWF0Y2goXCJeW15cXFxcRF0uKlwiKSkge1xyXG4gICAgICByZXR1cm4gXCJFbCBjYW1wbyBubyBwdWVkZSBpbmljaWFyIGNvbiBudW1lcm9zXCI7XHJcbiAgICB9XHJcbiAgICBpZiAodGV4dG8ubWF0Y2goXCJeW15cXFxcU10uKlwiKSkge1xyXG4gICAgICByZXR1cm4gXCJFbCBjYW1wbyBubyBwdWVkZSBpbmljaWFyIGNvbiBjYXJhY3RlcmVzIGVuIGJsYW5jb1wiO1xyXG4gICAgfVxyXG4gICAgaWYgKCF0ZXh0by5tYXRjaChcIl5bXlxcXFxXXS4qXCIpKSB7XHJcbiAgICAgIHJldHVybiBcIkVsIGNhbXBvIG5vIHB1ZWRlIGluaWNpYXIgY29uIGNhcmFjdGVyZXMgZXNwZWNpYWxlc1wiO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICByZXNpemVXaW5kb3dJRnJhbWUoKSB7XHJcblx0XHRpZiAoIHdpbmRvdy5mcmFtZUVsZW1lbnQgIT0gbnVsbCkge1xyXG5cdFx0XHR0aGlzLnJlc2l6ZUlmcmFtZUtlZXBQb3NpdGlvbih3aW5kb3cuZnJhbWVFbGVtZW50KTtcclxuXHRcdH1cclxuXHR9XHJcblx0XHJcblx0LyoqXHJcblx0ICogRnVuY2lvbiBwYXJhIG1hbnRlbmVyIGxhIHBvc2ljacOzbiBhY3R1YWwgZW4gZWwgaWZyYW1lLlxyXG5cdCAqIEBwYXJhbSBvYmogZXMgdW4gXCJGcmFtZUVsZW1lbnRcIlxyXG5cdCAqL1xyXG5cdHByaXZhdGUgcmVzaXplSWZyYW1lS2VlcFBvc2l0aW9uKG9iaikge1xyXG5cdFx0XHJcblx0XHR2YXIgaWZybSA9IG9iajtcclxuXHRcdHZhciBkb2MgPSBpZnJtLmNvbnRlbnREb2N1bWVudCA/IGlmcm0uY29udGVudERvY3VtZW50OiBpZnJtLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQ7XHJcbiAgICB2YXIgdGFtYW5pbzogbnVtYmVyPSAgdGhpcy5nZXREb2NIZWlnaHQoIGRvYyApICArIDQwXHJcblx0XHRpZnJtLnN0eWxlLmhlaWdodCA9IHRhbWFuaW8gKyBcInB4XCI7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGdldERvY0hlaWdodChkb2Mpe1xyXG4gICAgY29uc29sZS5sb2coJ2dldERvY0hlaWdodCcpXHJcblx0XHRsZXQgbmF2ZWdhZG9yID0gdGhpcy5vYnRlbmVyTmF2ZWdhZG9yKCkudG9Mb3dlckNhc2UoKTtcclxuXHRcdHZhciBoZWlnaHQgPSAwO1xyXG5cdFx0ZG9jID0gZG9jIHx8IGRvY3VtZW50O1xyXG4gICAgY29uc3QgYXBwUm9vdCA9IGRvYy5xdWVyeVNlbGVjdG9yKCdhcHAtcm9vdCcpO1xyXG5cclxuICAgIGNvbnN0IHN3YWxQb3B1cCA9IGRvYy5xdWVyeVNlbGVjdG9yKCcuc3dhbDItcG9wdXAnKTtcclxuICAgIGlmIChzd2FsUG9wdXApIHtcclxuICAgICAgICByZXR1cm4gc3dhbFBvcHVwLm9mZnNldEhlaWdodCArIDQwO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFNpIGVuY3VlbnRyYSBlbCBlbGVtZW50byA8YXBwLXJvb3Q+LCByZXRvcm5hIHN1IGFsdHVyYVxyXG4gICAgaWYgKGFwcFJvb3QpIHtcclxuICAgICAgICByZXR1cm4gYXBwUm9vdC5vZmZzZXRIZWlnaHQ7XHJcbiAgICB9XHJcblx0XHQvL3ZhciBib2R5ID0gZG9jLmJvZHksIGh0bWwgPSBkb2MuZG9jdW1lbnRFbGVtZW50O1xyXG5cdFx0Ly9oZWlnaHQgPSBNYXRoLm1heCggYm9keS5zY3JvbGxIZWlnaHQsIGJvZHkub2Zmc2V0SGVpZ2h0LCBcclxuXHRcdC8vaHRtbC5jbGllbnRIZWlnaHQsIGh0bWwuc2Nyb2xsSGVpZ2h0LCBodG1sLm9mZnNldEhlaWdodCApO1xyXG5cdFx0XHJcblx0XHRpZiAobmF2ZWdhZG9yLmluZGV4T2YoJ2ZpcmVmb3gnKSAhPT0gLTEpe1xyXG5cdFx0XHRpZihkb2MuZm9ybURldGFsbGVDb252b2NhdG9yaWEpe1xyXG5cdFx0XHRcdGxldCBjYW50aWRhZE1pbGVzID0gaGVpZ2h0IC8gMTAwMDtcclxuXHRcdFx0XHRoZWlnaHQgPSBoZWlnaHQgKyA2MDAgKyAoY2FudGlkYWRNaWxlcyo0MClcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0XHJcblx0Ly9cdGNvbnNvbGUud2FybignRkNPIDogbGxhbWEgYSBnZXREb2NIZWlnaHQnKTtcclxuXHRcclxuXHRcdHJldHVybiBoZWlnaHQ7XHJcblx0fVxyXG5cclxuXHRvYnRlbmVyTmF2ZWdhZG9yKCl7XHJcblx0XHR2YXIgdWE9IG5hdmlnYXRvci51c2VyQWdlbnQsIHRlbSwgXHJcblx0XHRNPSB1YS5tYXRjaCgvKG9wZXJhfGNocm9tZXxzYWZhcml8ZmlyZWZveHxtc2llfHRyaWRlbnQoPz1cXC8pKVxcLz9cXHMqKFxcZCspL2kpIHx8IFtdO1xyXG5cdFx0aWYoL3RyaWRlbnQvaS50ZXN0KE1bMV0pKXtcclxuXHRcdFx0dGVtPSAgL1xcYnJ2WyA6XSsoXFxkKykvZy5leGVjKHVhKSB8fCBbXTtcclxuXHRcdFx0cmV0dXJuICdJRSAnKyh0ZW1bMV0gfHwgJycpO1xyXG5cdFx0fVxyXG5cdFx0aWYoTVsxXT09PSAnQ2hyb21lJyl7XHJcblx0XHRcdHRlbT0gdWEubWF0Y2goL1xcYihPUFJ8RWRnZSlcXC8oXFxkKykvKTtcclxuXHRcdFx0aWYodGVtIT0gbnVsbCkgcmV0dXJuIHRlbS5zbGljZSgxKS5qb2luKCcgJykucmVwbGFjZSgnT1BSJywgJ09wZXJhJyk7XHJcblx0XHR9XHJcblx0XHRNPSBNWzJdPyBbTVsxXSwgTVsyXV06IFtuYXZpZ2F0b3IuYXBwTmFtZSwgbmF2aWdhdG9yLmFwcFZlcnNpb24sICctPyddO1xyXG5cdFx0aWYoKHRlbT0gdWEubWF0Y2goL3ZlcnNpb25cXC8oXFxkKykvaSkpIT0gbnVsbCkgTS5zcGxpY2UoMSwgMSwgdGVtWzFdKTtcclxuXHRcdHJldHVybiBNLmpvaW4oJyAnKTtcclxuXHR9XHJcblxyXG4gIG9idGVuZXJVcmxBcGkodXJsYXBpPzogc3RyaW5nICk6IHN0cmluZyB7XHJcbiAgICBpZiAodXJsYXBpKXtcclxuICAgICAgcmV0dXJuIHVybGFwaTtcclxuICAgIH1cclxuICAgIHN3aXRjaCAodGhpcy5nZXRUb2tlbktleSgnYXBsaWNhY2lvbicpKSB7XHJcbiAgICAgIGNhc2UgJzEnOlxyXG4gICAgICAgIHJldHVybiB3aW5kb3dbJ2VudiddWyd1cmxhcGlzYXJhJ10gPyB3aW5kb3dbJ2VudiddWyd1cmxhcGlzYXJhJ10gOiB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KCd1cmxudWNsZW8nKTtcclxuICAgICAgY2FzZSAnMTMnOlxyXG4gICAgICAgIHJldHVybiB3aW5kb3dbJ2VudiddWyd1cmxhcGltYW5hJ10gPyB3aW5kb3dbJ2VudiddWyd1cmxhcGltYW5hJ10gOiB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KCd1cmxudWNsZW8nKTtcclxuICAgICAgY2FzZSAnMTAnOlxyXG4gICAgICAgIHJldHVybiB3aW5kb3dbJ2VudiddWyd1cmxhcGlzYXJhJ10gPyB3aW5kb3dbJ2VudiddWyd1cmxhcGlzYXJhJ10gOiB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KCd1cmxudWNsZW8nKTtcclxuICAgICAgICAvL3JldHVybiB3aW5kb3dbJ2VudiddWyd1cmxhcGknXSA/IHdpbmRvd1snZW52J11bJ3VybGFwaSddIDogdGhpcy5jb29raWVTZXJ2aWNlLmdldCgndXJsbnVjbGVvJyk7XHJcbiAgICAgIGNhc2UgJzc3JzpcclxuICAgICAgICByZXR1cm4gd2luZG93WydlbnYnXVsndXJsYXBpbWFuYWFwcyddID8gd2luZG93WydlbnYnXVsndXJsYXBpbWFuYWFwcyddIDogdGhpcy5jb29raWVTZXJ2aWNlLmdldCgndXJsbnVjbGVvJyk7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuICB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KCd1cmxudWNsZW8nKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0VG9rZW5LZXkoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgZGF0YSA9IHRoaXMuX2RlY29kZVRva2VuKCk7XHJcbiAgICAgIHJldHVybiBkYXRhW2tleV0udG9TdHJpbmcoKTtcclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9kZWNvZGVUb2tlbigpOiBhbnkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgdG9rZW4gPSB0aGlzLmdldEl0ZW0oJ3Rva2VuJywgJycpO1xyXG4gICAgICBjb25zdCBkYXRhID0gdG9rZW4uc3BsaXQoJy4nKVsxXTtcclxuICAgICAgcmV0dXJuIEpTT04ucGFyc2UoYXRvYihkYXRhKSk7XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICB0aHJvdyBlcnJvcjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldEl0ZW0oa2V5OiBzdHJpbmcsIGRlZmF1bHRWYWx1ZT86IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5vYnRlbmVyQmFzZSgpICsgJ18nICsgIGtleSkgPz8gZGVmYXVsdFZhbHVlO1xyXG4gIH1cclxuXHJcbiAgY2FtYmlhclRlbWEodGVtYSA6ICgndGVtYUNsYXJvJyB8ICd0ZW1hT3NjdXJvJykpe1xyXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5vYnRlbmVyQmFzZSgpICsgJ18nICsndGVtYScsIHRlbWEpO1xyXG4gICAgbGV0IGxpbmtUZW1hID0gdGhpcy5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVtYUFwcCcpIGFzIEhUTUxMaW5rRWxlbWVudDtcclxuICAgIGxpbmtUZW1hLmhyZWYgPSBgJHt0ZW1hfS5jc3NgXHJcbiAgfVxyXG5cclxuICBjYWxjdWxhclBvc2ljaW9uRGlhbG9nKCkge1xyXG4gICAgY29uc3QgeyB4LCB5IH0gPSB0aGlzLmNsaWNrUG9zaXRpb25TZXJ2aWNlLmdldENsaWNrUG9zaXRpb24oKTtcclxuXHJcbiAgICBjb25zb2xlLmxvZygnbGFzdENsaWNrUG9zaXRpb24nKVxyXG4gICAgY29uc29sZS5sb2coeClcclxuICAgIGNvbnNvbGUubG9nKHkpXHJcbiAgICAvL2NvbnN0IGVsZW1lbnRvID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xyXG4gICAgLy9jb25zdCBlbGVtZW50b0Nvb3JkZW5hZGEgPSBlbGVtZW50by5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuXHJcbiAgICAvL2NvbnN0IGlmcmFtZSA9ICB3aW5kb3cuZnJhbWVFbGVtZW50O1xyXG4gICAgdmFyIGlmcm06IGFueSA9IHdpbmRvdy5mcmFtZUVsZW1lbnQ7XHJcblx0XHR2YXIgZG9jID0gaWZybS5jb250ZW50RG9jdW1lbnQgPyBpZnJtLmNvbnRlbnREb2N1bWVudDogaWZybS5jb250ZW50V2luZG93LmRvY3VtZW50O1xyXG4gICAgdmFyIHRhbWFuaW86IG51bWJlcj0gIHRoaXMuZ2V0RG9jSGVpZ2h0KCBkb2MgKSAgKyA0MFxyXG4gICAgY29uc3QgaWZyYW1lT2Zmc2V0VG9wID0gdGFtYW5pbyA/IC0odGFtYW5pby8yKSA6IDA7XHJcblxyXG4gICAgY29uc3QgZGlhbG9nID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnAtZGlhbG9nJykgYXMgSFRNTEVsZW1lbnQ7XHJcblxyXG4gICAgaWYgKGRpYWxvZykge1xyXG4gICAgICB2YXIgdG9wUG9zaXRpb24gPSBpZnJhbWVPZmZzZXRUb3AgKyB5O1xyXG4gICAgICBjb25zdCBjYWxjdWxvUG9zaWNpb25Qb3B1cCA9IHkgKyAoZGlhbG9nLm9mZnNldEhlaWdodC8yKVxyXG4gICAgICBpZiAoY2FsY3Vsb1Bvc2ljaW9uUG9wdXAgPiB0YW1hbmlvKSB7XHJcbiAgICAgICAgdmFyIGRpZmVyZW5jaWEgPSBjYWxjdWxvUG9zaWNpb25Qb3B1cCAtIHRhbWFuaW87XHJcbiAgICAgICAgdG9wUG9zaXRpb24gPSB0b3BQb3NpdGlvbiAtIGRpZmVyZW5jaWEgLSAxMDtcclxuICAgICAgfVxyXG4gICAgICBkaWFsb2cuc3R5bGUudG9wID0gYCR7dG9wUG9zaXRpb259cHhgO1xyXG4gICAgfVxyXG4gIH1cclxuICBcclxuICB2YWxpZGFyUGFsYWJyYSh0ZXh0bzogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBwbGV0cmFzID0gL15bYS16QS1aXVswLTlhLXpBLVpdKiQvO1xyXG4gICAgcmV0dXJuIHBsZXRyYXMudGVzdCh0ZXh0byk7XHJcbiAgfVxyXG5cclxuICBpc051bWVyaWModmFsdWU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICFpc05hTihOdW1iZXIodmFsdWUpKTtcclxuICB9XHJcbiAgXHJcbn0iXX0=
@@ -0,0 +1,16 @@
1
+ import { NgModule } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class SharedLibModule {
4
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: SharedLibModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
5
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.4", ngImport: i0, type: SharedLibModule });
6
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: SharedLibModule });
7
+ }
8
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: SharedLibModule, decorators: [{
9
+ type: NgModule,
10
+ args: [{
11
+ declarations: [],
12
+ imports: [],
13
+ exports: []
14
+ }]
15
+ }] });
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkbGliLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS9zaGFyZWRsaWIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBVXpDLE1BQU0sT0FBTyxlQUFlO3VHQUFmLGVBQWU7d0dBQWYsZUFBZTt3R0FBZixlQUFlOzsyRkFBZixlQUFlO2tCQVIzQixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxFQUNiO29CQUNELE9BQU8sRUFBRSxFQUNOO29CQUNILE9BQU8sRUFBRSxFQUNSO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgZGVjbGFyYXRpb25zOiBbXHJcbiAgXSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBdLFxyXG4gIGV4cG9ydHM6IFtcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTaGFyZWRMaWJNb2R1bGUge31cclxuIl19
@@ -0,0 +1,177 @@
1
+ export class ColorUtil {
2
+ /**
3
+ * Define las variables CSS del tema y las agrega al documento.
4
+ * Se definene 9 colores alternativos más el color principal.
5
+ * Adicional se agregan las componentes HSL del color para hacer
6
+ * variaciones personalizadas y ajustar la opacidad.
7
+ * @param color Color principal del tema
8
+ */
9
+ static addPalleteToRoot(color) {
10
+ const head = (document.head || document.getElementsByTagName('head')[0]);
11
+ const style = document.createElement('style');
12
+ const { hue, saturation, lightness } = this.RGB2HSL(color);
13
+ const contrast = this.contrastColor(color) === 1 ? '--color-50' : '--color-900';
14
+ const intermediateColors = [50, 75, 85];
15
+ let index = 0;
16
+ const css = ':root { ' +
17
+ this._generatePalette(color)
18
+ .map((color, position) => {
19
+ if (index < 100) {
20
+ index = intermediateColors[position] ? intermediateColors[position] : 100;
21
+ }
22
+ else {
23
+ index += 100;
24
+ }
25
+ return `--color-${index}: ${color};`;
26
+ })
27
+ .join('') +
28
+ `--color-h: ${hue};` +
29
+ `--color-s: ${saturation}%;` +
30
+ `--color-l: ${lightness}%;` +
31
+ `--color-contrast: var(${contrast});` +
32
+ '}';
33
+ style.type = 'text/css';
34
+ style.appendChild(document.createTextNode(css));
35
+ head.appendChild(style);
36
+ }
37
+ /**
38
+ * Mezcla dos colores en proporción a un porcentaje para obtener un
39
+ * nuevo color.
40
+ * @param baseColor Color base para mezclar
41
+ * @param color Color que se quiere mezclar
42
+ * @param weight Porcentaje que se quiere mezclar. Entre 0 y 1
43
+ * @returns Color resultante en formato RGB (#AABBCC)
44
+ */
45
+ static mix(baseColor, color, weight) {
46
+ const newColor = [];
47
+ baseColor = this._normalizeColor(baseColor);
48
+ color = this._normalizeColor(color);
49
+ const rgbColorBase = this._getRGBValues(baseColor);
50
+ const rgbColorAdjust = this._getRGBValues(color);
51
+ ['red', 'green', 'blue'].forEach((part) => {
52
+ newColor.push(Math.round(rgbColorAdjust[part] + (rgbColorBase[part] - rgbColorAdjust[part]) * weight)
53
+ .toString(16)
54
+ .padStart(2, '0'));
55
+ });
56
+ return '#' + newColor.join('');
57
+ }
58
+ /**
59
+ * Aclara un color proporcionalmente.
60
+ * @param color Color base para modificar
61
+ * @param percent Porcentaje de blanco que se agrega
62
+ * @returns Nuevo color más claro
63
+ */
64
+ static tint(color, percent) {
65
+ return this.mix('#fff', color, percent);
66
+ }
67
+ /**
68
+ * Oscurece un color proporcionalmente.
69
+ * @param color Color base para modificar
70
+ * @param percent Porcentaje de negro que se agrega
71
+ * @returns Nuevo color más oscuro
72
+ */
73
+ static shade(color, percent) {
74
+ return this.mix('#000', color, percent);
75
+ }
76
+ /**
77
+ * Transforma un color en RGB a su equivalente en formato HSL
78
+ * @param color Color en formato RGB
79
+ * @returns Arreglo de componentes HSL
80
+ */
81
+ static RGB2HSL(color) {
82
+ color = this._normalizeColor(color);
83
+ let { red, green, blue } = this._getRGBValues(color);
84
+ red /= 255;
85
+ green /= 255;
86
+ blue /= 255;
87
+ const max = Math.max(red, green, blue);
88
+ const min = Math.min(red, green, blue);
89
+ let hue = 0;
90
+ let saturation = 0;
91
+ let lightness = (max + min) / 2;
92
+ if (max != min) {
93
+ const delta = max - min;
94
+ saturation = lightness > 0.5 ? delta / (2 - max - min) : delta / (max + min);
95
+ switch (max) {
96
+ case red:
97
+ hue = (green - blue) / delta + (green < blue ? 6 : 0);
98
+ break;
99
+ case green:
100
+ hue = (blue - red) / delta + 2;
101
+ break;
102
+ case blue:
103
+ hue = (red - green) / delta + 4;
104
+ break;
105
+ }
106
+ hue /= 6;
107
+ }
108
+ hue = Math.round(hue * 360);
109
+ saturation = Math.round(saturation * 100);
110
+ lightness = Math.round(lightness * 100);
111
+ return { hue, saturation, lightness };
112
+ }
113
+ /**
114
+ * Retorna 1 (blanco) o 0 (negro) para contrastar el color enviado.
115
+ * @param color Color del cual se quiere buscar el contraste
116
+ * @returns Blanco o Negro en RGB
117
+ */
118
+ static contrastColor(color) {
119
+ color = this._normalizeColor(color);
120
+ const { red, green, blue } = this._getRGBValues(color);
121
+ return red * 0.299 + green * 0.587 + blue * 0.114 > 186 ? 0 : 1;
122
+ }
123
+ /**
124
+ * Valida que la cadena de texto represente un color RGB válido y
125
+ * retorna las componentes del color en formato de seis caracteres.
126
+ * @param color Color en formato RGB. Ejemplo: (#000)
127
+ * @returns String del color sin el simbolo #
128
+ */
129
+ static _normalizeColor(color) {
130
+ const rgbColor = color.match(/^#([0-9A-F]{3}|[0-9A-F]{6})$/i);
131
+ if (!rgbColor) {
132
+ throw new Error(`${color} is not a RGB color.`);
133
+ }
134
+ const colorParts = rgbColor[1].toLowerCase();
135
+ if (colorParts.length === 3) {
136
+ return colorParts.replace(/(.)/g, '$1$1');
137
+ }
138
+ return colorParts;
139
+ }
140
+ /**
141
+ * Transforma un color Hexadecimal a Decimal en sus respectivas
142
+ * comopnenetes.
143
+ * @param color Color en Hecadecimal para descomponer
144
+ * @returns Un objeto {red, green, blue} en decimal
145
+ */
146
+ static _getRGBValues(color) {
147
+ const red = parseInt(color.slice(0, 2), 16);
148
+ const green = parseInt(color.slice(2, 4), 16);
149
+ const blue = parseInt(color.slice(4, 6), 16);
150
+ return { red, green, blue };
151
+ }
152
+ /**
153
+ * Define una paleta de 10 colores, 5 más claros y 4 más oscuros basados
154
+ * en el color principal. El color principal será el color medio de la paleta
155
+ * @param color Color base para definir los demás colores
156
+ * @returns Arreglo de todos los colores de la paleta
157
+ */
158
+ static _generatePalette(color) {
159
+ const palette = [];
160
+ for (let i = 0; i < 5; i++) {
161
+ if (i === 0) {
162
+ palette.push(this.tint(color, (5 - i) * 0.19));
163
+ palette.push(this.tint(color, (4.8 - i) * 0.19));
164
+ palette.push(this.tint(color, (4.55 - i) * 0.19));
165
+ }
166
+ else {
167
+ palette.push(this.tint(color, (5 - i) * 0.19));
168
+ }
169
+ }
170
+ palette.push(color);
171
+ for (let i = 1; i < 5; i++) {
172
+ palette.push(this.shade(color, i * 0.15));
173
+ }
174
+ return palette;
175
+ }
176
+ }
177
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3IudXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS91dGlsaWRhZGVzL2NvbG9yLnV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLFNBQVM7SUFDcEI7Ozs7OztPQU1HO0lBQ0gsTUFBTSxDQUFDLGdCQUFnQixDQUFDLEtBQWE7UUFDbkMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxJQUFJLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBb0IsQ0FBQztRQUM1RixNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBcUIsQ0FBQztRQUNsRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQztRQUVoRixNQUFNLGtCQUFrQixHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUN2QyxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDZCxNQUFNLEdBQUcsR0FDUCxVQUFVO1lBQ1YsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQztpQkFDekIsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxFQUFFO2dCQUN2QixJQUFHLEtBQUssR0FBRyxHQUFHLEVBQUMsQ0FBQztvQkFDZCxLQUFLLEdBQUcsa0JBQWtCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFH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O1FBQ0gsQ0FBQztRQUNELE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDcEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQzNCLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDNUMsQ0FBQztRQUNELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBDb2xvclV0aWwge1xyXG4gIC8qKlxyXG4gICAqIERlZmluZSBsYXMgdmFyaWFibGVzIENTUyBkZWwgdGVtYSB5IGxhcyBhZ3JlZ2EgYWwgZG9jdW1lbnRvLlxyXG4gICAqIFNlIGRlZmluZW5lIDkgY29sb3JlcyBhbHRlcm5hdGl2b3MgbcOhcyBlbCBjb2xvciBwcmluY2lwYWwuXHJcbiAgICogQWRpY2lvbmFsIHNlIGFncmVnYW4gbGFzIGNvbXBvbmVudGVzIEhTTCBkZWwgY29sb3IgcGFyYSBoYWNlclxyXG4gICAqIHZhcmlhY2lvbmVzIHBlcnNvbmFsaXphZGFzIHkgYWp1c3RhciBsYSBvcGFjaWRhZC5cclxuICAgKiBAcGFyYW0gY29sb3IgQ29sb3IgcHJpbmNpcGFsIGRlbCB0ZW1hXHJcbiAgICovXHJcbiAgc3RhdGljIGFkZFBhbGxldGVUb1Jvb3QoY29sb3I6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgY29uc3QgaGVhZCA9IChkb2N1bWVudC5oZWFkIHx8IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF0pIGFzIEhUTUxIZWFkRWxlbWVudDtcclxuICAgIGNvbnN0IHN0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKSBhcyBIVE1MU3R5bGVFbGVtZW50O1xyXG4gICAgY29uc3QgeyBodWUsIHNhdHVyYXRpb24sIGxpZ2h0bmVzcyB9ID0gdGhpcy5SR0IySFNMKGNvbG9yKTtcclxuICAgIGNvbnN0IGNvbnRyYXN0ID0gdGhpcy5jb250cmFzdENvbG9yKGNvbG9yKSA9PT0gMSA/ICctLWNvbG9yLTUwJyA6ICctLWNvbG9yLTkwMCc7XHJcblxyXG4gICAgY29uc3QgaW50ZXJtZWRpYXRlQ29sb3JzID0gWzUwLCA3NSwgODVdXHJcbiAgICBsZXQgaW5kZXggPSAwO1xyXG4gICAgY29uc3QgY3NzID1cclxuICAgICAgJzpyb290IHsgJyArXHJcbiAgICAgIHRoaXMuX2dlbmVyYXRlUGFsZXR0ZShjb2xvcilcclxuICAgICAgICAubWFwKChjb2xvciwgcG9zaXRpb24pID0+IHtcclxuICAgICAgICAgIGlmKGluZGV4IDwgMTAwKXtcclxuICAgICAgICAgICAgaW5kZXggPSBpbnRlcm1lZGlhdGVDb2xvcnNbcG9zaXRpb25dID8gaW50ZXJtZWRpYXRlQ29sb3JzW3Bvc2l0aW9uXSA6IDEwMDtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGluZGV4ICs9IDEwMDtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJldHVybiBgLS1jb2xvci0ke2luZGV4fTogJHtjb2xvcn07YDtcclxuICAgICAgICB9KVxyXG4gICAgICAgIC5qb2luKCcnKSArXHJcbiAgICAgIGAtLWNvbG9yLWg6ICR7aHVlfTtgICtcclxuICAgICAgYC0tY29sb3ItczogJHtzYXR1cmF0aW9ufSU7YCArXHJcbiAgICAgIGAtLWNvbG9yLWw6ICR7bGlnaHRuZXNzfSU7YCArXHJcbiAgICAgIGAtLWNvbG9yLWNvbnRyYXN0OiB2YXIoJHtjb250cmFzdH0pO2AgK1xyXG4gICAgICAnfSc7XHJcbiAgICBzdHlsZS50eXBlID0gJ3RleHQvY3NzJztcclxuICAgIHN0eWxlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNzcykpO1xyXG4gICAgaGVhZC5hcHBlbmRDaGlsZChzdHlsZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXpjbGEgZG9zIGNvbG9yZXMgZW4gcHJvcG9yY2nDs24gYSB1biBwb3JjZW50YWplIHBhcmEgb2J0ZW5lciB1blxyXG4gICAqIG51ZXZvIGNvbG9yLlxyXG4gICAqIEBwYXJhbSBiYXNlQ29sb3IgQ29sb3IgYmFzZSBwYXJhIG1lemNsYXJcclxuICAgKiBAcGFyYW0gY29sb3IgQ29sb3IgcXVlIHNlIHF1aWVyZSBtZXpjbGFyXHJcbiAgICogQHBhcmFtIHdlaWdodCBQb3JjZW50YWplIHF1ZSBzZSBxdWllcmUgbWV6Y2xhci4gRW50cmUgMCB5IDFcclxuICAgKiBAcmV0dXJucyBDb2xvciByZXN1bHRhbnRlIGVuIGZvcm1hdG8gUkdCICgjQUFCQkNDKVxyXG4gICAqL1xyXG4gIHN0YXRpYyBtaXgoYmFzZUNvbG9yOiBzdHJpbmcsIGNvbG9yOiBzdHJpbmcsIHdlaWdodDogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IG5ld0NvbG9yID0gW107XHJcbiAgICBiYXNlQ29sb3IgPSB0aGlzLl9ub3JtYWxpemVDb2xvcihiYXNlQ29sb3IpO1xyXG4gICAgY29sb3IgPSB0aGlzLl9ub3JtYWxpemVDb2xvcihjb2xvcik7XHJcblxyXG4gICAgY29uc3QgcmdiQ29sb3JCYXNlID0gdGhpcy5fZ2V0UkdCVmFsdWVzKGJhc2VDb2xvcik7XHJcbiAgICBjb25zdCByZ2JDb2xvckFkanVzdCA9IHRoaXMuX2dldFJHQlZhbHVlcyhjb2xvcik7XHJcblxyXG4gICAgWydyZWQnLCAnZ3JlZW4nLCAnYmx1ZSddLmZvckVhY2goKHBhcnQpID0+IHtcclxuICAgICAgbmV3Q29sb3IucHVzaChcclxuICAgICAgICBNYXRoLnJvdW5kKHJnYkNvbG9yQWRqdXN0W3BhcnRdICsgKHJnYkNvbG9yQmFzZVtwYXJ0XSAtIHJnYkNvbG9yQWRqdXN0W3BhcnRdKSAqIHdlaWdodClcclxuICAgICAgICAgIC50b1N0cmluZygxNilcclxuICAgICAgICAgIC5wYWRTdGFydCgyLCAnMCcpXHJcbiAgICAgICk7XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gJyMnICsgbmV3Q29sb3Iuam9pbignJyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBY2xhcmEgdW4gY29sb3IgcHJvcG9yY2lvbmFsbWVudGUuXHJcbiAgICogQHBhcmFtIGNvbG9yIENvbG9yIGJhc2UgcGFyYSBtb2RpZmljYXJcclxuICAgKiBAcGFyYW0gcGVyY2VudCBQb3JjZW50YWplIGRlIGJsYW5jbyBxdWUgc2UgYWdyZWdhXHJcbiAgICogQHJldHVybnMgTnVldm8gY29sb3IgbcOhcyBjbGFyb1xyXG4gICAqL1xyXG4gIHN0YXRpYyB0aW50KGNvbG9yOiBzdHJpbmcsIHBlcmNlbnQ6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5taXgoJyNmZmYnLCBjb2xvciwgcGVyY2VudCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBPc2N1cmVjZSB1biBjb2xvciBwcm9wb3JjaW9uYWxtZW50ZS5cclxuICAgKiBAcGFyYW0gY29sb3IgQ29sb3IgYmFzZSBwYXJhIG1vZGlmaWNhclxyXG4gICAqIEBwYXJhbSBwZXJjZW50ICBQb3JjZW50YWplIGRlIG5lZ3JvIHF1ZSBzZSBhZ3JlZ2FcclxuICAgKiBAcmV0dXJucyBOdWV2byBjb2xvciBtw6FzIG9zY3Vyb1xyXG4gICAqL1xyXG4gIHN0YXRpYyBzaGFkZShjb2xvcjogc3RyaW5nLCBwZXJjZW50OiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMubWl4KCcjMDAwJywgY29sb3IsIHBlcmNlbnQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVHJhbnNmb3JtYSB1biBjb2xvciBlbiBSR0IgYSBzdSBlcXVpdmFsZW50ZSBlbiBmb3JtYXRvIEhTTFxyXG4gICAqIEBwYXJhbSBjb2xvciBDb2xvciBlbiBmb3JtYXRvIFJHQlxyXG4gICAqIEByZXR1cm5zIEFycmVnbG8gZGUgY29tcG9uZW50ZXMgSFNMXHJcbiAgICovXHJcbiAgc3RhdGljIFJHQjJIU0woY29sb3I6IHN0cmluZyk6IHsgaHVlOiBudW1iZXI7IHNhdHVyYXRpb246IG51bWJlcjsgbGlnaHRuZXNzOiBudW1iZXIgfSB7XHJcbiAgICBjb2xvciA9IHRoaXMuX25vcm1hbGl6ZUNvbG9yKGNvbG9yKTtcclxuXHJcbiAgICBsZXQgeyByZWQsIGdyZWVuLCBibHVlIH0gPSB0aGlzLl9nZXRSR0JWYWx1ZXMoY29sb3IpO1xyXG4gICAgcmVkIC89IDI1NTtcclxuICAgIGdyZWVuIC89IDI1NTtcclxuICAgIGJsdWUgLz0gMjU1O1xyXG5cclxuICAgIGNvbnN0IG1heCA9IE1hdGgubWF4KHJlZCwgZ3JlZW4sIGJsdWUpO1xyXG4gICAgY29uc3QgbWluID0gTWF0aC5taW4ocmVkLCBncmVlbiwgYmx1ZSk7XHJcblxyXG4gICAgbGV0IGh1ZSA9IDA7XHJcbiAgICBsZXQgc2F0dXJhdGlvbiA9IDA7XHJcbiAgICBsZXQgbGlnaHRuZXNzID0gKG1heCArIG1pbikgLyAyO1xyXG5cclxuICAgIGlmIChtYXggIT0gbWluKSB7XHJcbiAgICAgIGNvbnN0IGRlbHRhID0gbWF4IC0gbWluO1xyXG4gICAgICBzYXR1cmF0aW9uID0gbGlnaHRuZXNzID4gMC41ID8gZGVsdGEgLyAoMiAtIG1heCAtIG1pbikgOiBkZWx0YSAvIChtYXggKyBtaW4pO1xyXG4gICAgICBzd2l0Y2ggKG1heCkge1xyXG4gICAgICAgIGNhc2UgcmVkOlxyXG4gICAgICAgICAgaHVlID0gKGdyZWVuIC0gYmx1ZSkgLyBkZWx0YSArIChncmVlbiA8IGJsdWUgPyA2IDogMCk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIGdyZWVuOlxyXG4gICAgICAgICAgaHVlID0gKGJsdWUgLSByZWQpIC8gZGVsdGEgKyAyO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBibHVlOlxyXG4gICAgICAgICAgaHVlID0gKHJlZCAtIGdyZWVuKSAvIGRlbHRhICsgNDtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGh1ZSAvPSA2O1xyXG4gICAgfVxyXG5cclxuICAgIGh1ZSA9IE1hdGgucm91bmQoaHVlICogMzYwKTtcclxuICAgIHNhdHVyYXRpb24gPSBNYXRoLnJvdW5kKHNhdHVyYXRpb24gKiAxMDApO1xyXG4gICAgbGlnaHRuZXNzID0gTWF0aC5yb3VuZChsaWdodG5lc3MgKiAxMDApO1xyXG5cclxuICAgIHJldHVybiB7IGh1ZSwgc2F0dXJhdGlvbiwgbGlnaHRuZXNzIH07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRvcm5hIDEgKGJsYW5jbykgbyAwIChuZWdybykgcGFyYSBjb250cmFzdGFyIGVsIGNvbG9yIGVudmlhZG8uXHJcbiAgICogQHBhcmFtIGNvbG9yIENvbG9yIGRlbCBjdWFsIHNlIHF1aWVyZSBidXNjYXIgZWwgY29udHJhc3RlXHJcbiAgICogQHJldHVybnMgQmxhbmNvIG8gTmVncm8gZW4gUkdCXHJcbiAgICovXHJcbiAgc3RhdGljIGNvbnRyYXN0Q29sb3IoY29sb3I6IHN0cmluZyk6IG51bWJlciB7XHJcbiAgICBjb2xvciA9IHRoaXMuX25vcm1hbGl6ZUNvbG9yKGNvbG9yKTtcclxuICAgIGNvbnN0IHsgcmVkLCBncmVlbiwgYmx1ZSB9ID0gdGhpcy5fZ2V0UkdCVmFsdWVzKGNvbG9yKTtcclxuICAgIHJldHVybiByZWQgKiAwLjI5OSArIGdyZWVuICogMC41ODcgKyBibHVlICogMC4xMTQgPiAxODYgPyAwIDogMTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFZhbGlkYSBxdWUgbGEgY2FkZW5hIGRlIHRleHRvIHJlcHJlc2VudGUgdW4gY29sb3IgUkdCIHbDoWxpZG8geVxyXG4gICAqIHJldG9ybmEgbGFzIGNvbXBvbmVudGVzIGRlbCBjb2xvciBlbiBmb3JtYXRvIGRlIHNlaXMgY2FyYWN0ZXJlcy5cclxuICAgKiBAcGFyYW0gY29sb3IgQ29sb3IgZW4gZm9ybWF0byBSR0IuIEVqZW1wbG86ICgjMDAwKVxyXG4gICAqIEByZXR1cm5zIFN0cmluZyBkZWwgY29sb3Igc2luIGVsIHNpbWJvbG8gI1xyXG4gICAqL1xyXG4gIHByaXZhdGUgc3RhdGljIF9ub3JtYWxpemVDb2xvcihjb2xvcjogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHJnYkNvbG9yID0gY29sb3IubWF0Y2goL14jKFswLTlBLUZdezN9fFswLTlBLUZdezZ9KSQvaSk7XHJcbiAgICBpZiAoIXJnYkNvbG9yKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJHtjb2xvcn0gaXMgbm90IGEgUkdCIGNvbG9yLmApO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGNvbG9yUGFydHMgPSByZ2JDb2xvclsxXS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgaWYgKGNvbG9yUGFydHMubGVuZ3RoID09PSAzKSB7XHJcbiAgICAgIHJldHVybiBjb2xvclBhcnRzLnJlcGxhY2UoLyguKS9nLCAnJDEkMScpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBjb2xvclBhcnRzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVHJhbnNmb3JtYSB1biBjb2xvciBIZXhhZGVjaW1hbCBhIERlY2ltYWwgZW4gc3VzIHJlc3BlY3RpdmFzXHJcbiAgICogY29tb3BuZW5ldGVzLlxyXG4gICAqIEBwYXJhbSBjb2xvciBDb2xvciBlbiBIZWNhZGVjaW1hbCBwYXJhIGRlc2NvbXBvbmVyXHJcbiAgICogQHJldHVybnMgVW4gb2JqZXRvIHtyZWQsIGdyZWVuLCBibHVlfSBlbiBkZWNpbWFsXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzdGF0aWMgX2dldFJHQlZhbHVlcyhjb2xvcjogc3RyaW5nKTogeyByZWQ6IG51bWJlcjsgZ3JlZW46IG51bWJlcjsgYmx1ZTogbnVtYmVyIH0ge1xyXG4gICAgY29uc3QgcmVkID0gcGFyc2VJbnQoY29sb3Iuc2xpY2UoMCwgMiksIDE2KTtcclxuICAgIGNvbnN0IGdyZWVuID0gcGFyc2VJbnQoY29sb3Iuc2xpY2UoMiwgNCksIDE2KTtcclxuICAgIGNvbnN0IGJsdWUgPSBwYXJzZUludChjb2xvci5zbGljZSg0LCA2KSwgMTYpO1xyXG4gICAgcmV0dXJuIHsgcmVkLCBncmVlbiwgYmx1ZSB9O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGVmaW5lIHVuYSBwYWxldGEgZGUgMTAgY29sb3JlcywgNSBtw6FzIGNsYXJvcyB5IDQgbcOhcyBvc2N1cm9zIGJhc2Fkb3NcclxuICAgKiBlbiBlbCBjb2xvciBwcmluY2lwYWwuIEVsIGNvbG9yIHByaW5jaXBhbCBzZXLDoSBlbCBjb2xvciBtZWRpbyBkZSBsYSBwYWxldGFcclxuICAgKiBAcGFyYW0gY29sb3IgQ29sb3IgYmFzZSBwYXJhIGRlZmluaXIgbG9zIGRlbcOhcyBjb2xvcmVzXHJcbiAgICogQHJldHVybnMgQXJyZWdsbyBkZSB0b2RvcyBsb3MgY29sb3JlcyBkZSBsYSBwYWxldGFcclxuICAgKi9cclxuICBwcml2YXRlIHN0YXRpYyBfZ2VuZXJhdGVQYWxldHRlKGNvbG9yOiBzdHJpbmcpOiBzdHJpbmdbXSB7XHJcbiAgICBjb25zdCBwYWxldHRlID0gW107XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IDU7IGkrKykge1xyXG4gICAgICBpZihpID09PSAwKSB7XHJcbiAgICAgICAgcGFsZXR0ZS5wdXNoKHRoaXMudGludChjb2xvciwgKDUgLSBpKSAqIDAuMTkpKTtcclxuICAgICAgICBwYWxldHRlLnB1c2godGhpcy50aW50KGNvbG9yLCAoNC44IC0gaSkgKiAwLjE5KSk7XHJcbiAgICAgICAgcGFsZXR0ZS5wdXNoKHRoaXMudGludChjb2xvciwgKDQuNTUgLSBpKSAqIDAuMTkpKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBwYWxldHRlLnB1c2godGhpcy50aW50KGNvbG9yLCAoNSAtIGkpICogMC4xOSkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBwYWxldHRlLnB1c2goY29sb3IpO1xyXG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPCA1OyBpKyspIHtcclxuICAgICAgcGFsZXR0ZS5wdXNoKHRoaXMuc2hhZGUoY29sb3IsIGkgKiAwLjE1KSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcGFsZXR0ZTtcclxuICB9XHJcbn1cclxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudWNoYW5nZWV2ZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9sYXlvdXQvYXBpL21lbnVjaGFuZ2VldmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBNZW51Q2hhbmdlRXZlbnQge1xyXG4gICAga2V5OiBzdHJpbmc7XHJcbiAgICByb3V0ZUV2ZW50PzogYm9vbGVhbjtcclxufSJdfQ==