general-library-union 2.5.14 → 2.5.16

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 (641) hide show
  1. package/esm2022/general-library-union.mjs +5 -0
  2. package/esm2022/public-api.mjs +177 -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 +153 -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 +272 -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 +67 -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 +57 -0
  24. package/esm2022/src/app/core/servicios/data-exporter-table.utils.mjs +44 -0
  25. package/esm2022/src/app/core/servicios/error-interceptor.service.mjs +148 -0
  26. package/esm2022/src/app/core/servicios/guardias/auth.guard.mjs +66 -0
  27. package/esm2022/src/app/core/servicios/guardias/publico.guard.mjs +35 -0
  28. package/esm2022/src/app/core/servicios/interceptores/token-interceptor.service.mjs +120 -0
  29. package/esm2022/src/app/core/servicios/loading.service.mjs +43 -0
  30. package/esm2022/src/app/core/servicios/menu.service.mjs +146 -0
  31. package/esm2022/src/app/core/servicios/storage.service.mjs +68 -0
  32. package/esm2022/src/app/core/servicios/template.service.mjs +99 -0
  33. package/esm2022/src/app/core/servicios/toast.service.mjs +91 -0
  34. package/esm2022/src/app/core/servicios/utils.service.mjs +324 -0
  35. package/esm2022/src/app/core/sharedlib.module.mjs +16 -0
  36. package/esm2022/src/app/core/utilidades/color.util.mjs +177 -0
  37. package/esm2022/src/app/layout/api/menuchangeevent.mjs +2 -0
  38. package/esm2022/src/app/layout/app.breadcrumb.component.mjs +71 -0
  39. package/esm2022/src/app/layout/app.footer.component.mjs +18 -0
  40. package/esm2022/src/app/layout/app.layout.component.mjs +188 -0
  41. package/esm2022/src/app/layout/app.layout.module.mjs +15 -0
  42. package/esm2022/src/app/layout/app.menu.component.mjs +51 -0
  43. package/esm2022/src/app/layout/app.menu.service.mjs +24 -0
  44. package/esm2022/src/app/layout/app.menuitem.component.mjs +296 -0
  45. package/esm2022/src/app/layout/app.menuprofile.component.mjs +78 -0
  46. package/esm2022/src/app/layout/app.rightmenu.component.mjs +24 -0
  47. package/esm2022/src/app/layout/app.sidebar.component.mjs +92 -0
  48. package/esm2022/src/app/layout/app.topbar.component.mjs +345 -0
  49. package/esm2022/src/app/layout/service/app.layout.service.mjs +134 -0
  50. package/esm2022/src/app/publico/pages/login/login.page.mjs +129 -0
  51. package/esm2022/src/app/publico/pages/not-found/not-found.page.mjs +51 -0
  52. package/esm2022/src/app/publico/pages/seleccion-rol/seleccion-rol.component.mjs +167 -0
  53. package/esm2022/src/app/publico/pages/timeout/timeout.page.mjs +20 -0
  54. package/esm2022/src/app/seguridad/constantes/ConstantesGenerales.mjs +30 -0
  55. package/esm2022/src/app/seguridad/constantes/ReporteEntradaConstantes.mjs +19 -0
  56. package/esm2022/src/app/seguridad/modelos/AplicacionModel.mjs +8 -0
  57. package/esm2022/src/app/seguridad/modelos/ArchivoPortalModel.mjs +14 -0
  58. package/esm2022/src/app/seguridad/modelos/AtributoPuntoModel.mjs +9 -0
  59. package/esm2022/src/app/seguridad/modelos/AtributoSSOportalModel.mjs +17 -0
  60. package/esm2022/src/app/seguridad/modelos/AuditoriaArchivoModel.mjs +11 -0
  61. package/esm2022/src/app/seguridad/modelos/CargueLineaModel.mjs +13 -0
  62. package/esm2022/src/app/seguridad/modelos/ColoresRGB.mjs +18 -0
  63. package/esm2022/src/app/seguridad/modelos/ColumnaFuenteModel.mjs +9 -0
  64. package/esm2022/src/app/seguridad/modelos/ColumnaWraperModel.mjs +6 -0
  65. package/esm2022/src/app/seguridad/modelos/ComplementoModel.mjs +7 -0
  66. package/esm2022/src/app/seguridad/modelos/ComponentePaginaModel.mjs +21 -0
  67. package/esm2022/src/app/seguridad/modelos/ConexionModel.mjs +14 -0
  68. package/esm2022/src/app/seguridad/modelos/ContenidoHtmlPortalModel.mjs +21 -0
  69. package/esm2022/src/app/seguridad/modelos/ControlFuncionModel.mjs +8 -0
  70. package/esm2022/src/app/seguridad/modelos/CorreoModel.mjs +35 -0
  71. package/esm2022/src/app/seguridad/modelos/CorreoWSModel.mjs +37 -0
  72. package/esm2022/src/app/seguridad/modelos/CruceRecursoPuntoModel.mjs +14 -0
  73. package/esm2022/src/app/seguridad/modelos/DatoInicioModel.mjs +6 -0
  74. package/esm2022/src/app/seguridad/modelos/EjecucionReporteDataModel.mjs +14 -0
  75. package/esm2022/src/app/seguridad/modelos/EmpresaModel.mjs +25 -0
  76. package/esm2022/src/app/seguridad/modelos/EmpresaSeguridadModel.mjs +19 -0
  77. package/esm2022/src/app/seguridad/modelos/EntradaComplementoModel.mjs +7 -0
  78. package/esm2022/src/app/seguridad/modelos/EtiquetaModel.mjs +5 -0
  79. package/esm2022/src/app/seguridad/modelos/Etiquetas.mjs +12 -0
  80. package/esm2022/src/app/seguridad/modelos/ForeingWraperModel.mjs +6 -0
  81. package/esm2022/src/app/seguridad/modelos/FuenteCampoAtributoModel.mjs +16 -0
  82. package/esm2022/src/app/seguridad/modelos/FuenteCampoModel.mjs +17 -0
  83. package/esm2022/src/app/seguridad/modelos/FuenteDato.mjs +19 -0
  84. package/esm2022/src/app/seguridad/modelos/FuenteEntradaModel.mjs +9 -0
  85. package/esm2022/src/app/seguridad/modelos/FuenteGeneralModel.mjs +37 -0
  86. package/esm2022/src/app/seguridad/modelos/FuenteLineaServicioModel.mjs +16 -0
  87. package/esm2022/src/app/seguridad/modelos/FuenteProcesoGeneralModel.mjs +11 -0
  88. package/esm2022/src/app/seguridad/modelos/FuenteServicioModel.mjs +51 -0
  89. package/esm2022/src/app/seguridad/modelos/FuncionalidadModel.mjs +10 -0
  90. package/esm2022/src/app/seguridad/modelos/GeneralModel.mjs +15 -0
  91. package/esm2022/src/app/seguridad/modelos/GrupoAccesoModel.mjs +7 -0
  92. package/esm2022/src/app/seguridad/modelos/GrupoControlFuncionModel.mjs +10 -0
  93. package/esm2022/src/app/seguridad/modelos/GrupoFuenteModel.mjs +13 -0
  94. package/esm2022/src/app/seguridad/modelos/GrupoPermisoModel.mjs +14 -0
  95. package/esm2022/src/app/seguridad/modelos/JoinFromModel.mjs +5 -0
  96. package/esm2022/src/app/seguridad/modelos/ListaServicioModel.mjs +17 -0
  97. package/esm2022/src/app/seguridad/modelos/LlaveForaneaModel.mjs +7 -0
  98. package/esm2022/src/app/seguridad/modelos/LoginModel.mjs +15 -0
  99. package/esm2022/src/app/seguridad/modelos/MensajeSistemaModel.mjs +8 -0
  100. package/esm2022/src/app/seguridad/modelos/MenuPortalModel.mjs +5 -0
  101. package/esm2022/src/app/seguridad/modelos/ModulosModel.mjs +18 -0
  102. package/esm2022/src/app/seguridad/modelos/ObjetoReporteModel.mjs +6 -0
  103. package/esm2022/src/app/seguridad/modelos/PaginaPortalModel.mjs +20 -0
  104. package/esm2022/src/app/seguridad/modelos/ParametroComponenteModel.mjs +9 -0
  105. package/esm2022/src/app/seguridad/modelos/ParametrosGeneralModel.mjs +15 -0
  106. package/esm2022/src/app/seguridad/modelos/PermisoFuncionModel.mjs +9 -0
  107. package/esm2022/src/app/seguridad/modelos/PermisocontenidoModel.mjs +20 -0
  108. package/esm2022/src/app/seguridad/modelos/PeticionModel.mjs +16 -0
  109. package/esm2022/src/app/seguridad/modelos/PreguntaSeguridadModel.mjs +7 -0
  110. package/esm2022/src/app/seguridad/modelos/PropiedadModel.mjs +10 -0
  111. package/esm2022/src/app/seguridad/modelos/PublicacionWebModel.mjs +27 -0
  112. package/esm2022/src/app/seguridad/modelos/PuntoProcesoModel.mjs +7 -0
  113. package/esm2022/src/app/seguridad/modelos/RecursoPunto.mjs +13 -0
  114. package/esm2022/src/app/seguridad/modelos/RecursoPuntoModel.mjs +13 -0
  115. package/esm2022/src/app/seguridad/modelos/ReporteBanda.mjs +8 -0
  116. package/esm2022/src/app/seguridad/modelos/ReporteColumna.mjs +33 -0
  117. package/esm2022/src/app/seguridad/modelos/ReporteColumnario.mjs +69 -0
  118. package/esm2022/src/app/seguridad/modelos/ReporteColumnarioMarcador.mjs +24 -0
  119. package/esm2022/src/app/seguridad/modelos/ReporteEntradaModel.mjs +20 -0
  120. package/esm2022/src/app/seguridad/modelos/ReporteFuenteModel.mjs +124 -0
  121. package/esm2022/src/app/seguridad/modelos/ReporteMarcador.mjs +40 -0
  122. package/esm2022/src/app/seguridad/modelos/ReporteSoporte.mjs +10 -0
  123. package/esm2022/src/app/seguridad/modelos/ReporteTabla.mjs +13 -0
  124. package/esm2022/src/app/seguridad/modelos/RespuestaModel.mjs +9 -0
  125. package/esm2022/src/app/seguridad/modelos/RolModel.mjs +39 -0
  126. package/esm2022/src/app/seguridad/modelos/ServidorCorreoModel.mjs +28 -0
  127. package/esm2022/src/app/seguridad/modelos/SistemaMensajeModel.mjs +9 -0
  128. package/esm2022/src/app/seguridad/modelos/SitioPortalModel.mjs +25 -0
  129. package/esm2022/src/app/seguridad/modelos/TablaFromModel.mjs +5 -0
  130. package/esm2022/src/app/seguridad/modelos/TareasModel.mjs +54 -0
  131. package/esm2022/src/app/seguridad/modelos/TextoModel.mjs +9 -0
  132. package/esm2022/src/app/seguridad/modelos/TipoEtiqueta.mjs +8 -0
  133. package/esm2022/src/app/seguridad/modelos/UnionModel.mjs +12 -0
  134. package/esm2022/src/app/seguridad/modelos/UsuarioModel.mjs +53 -0
  135. package/esm2022/src/app/seguridad/modelos/UsuariogrupoModel.mjs +24 -0
  136. package/esm2022/src/app/seguridad/modelos/aplicacion-propiedad-model.mjs +15 -0
  137. package/esm2022/src/app/seguridad/modelos/contenidoCorreoModel.mjs +10 -0
  138. package/esm2022/src/app/shared/componentes/input-helper-seleccion-plantilla/input-helper-seleccion-plantilla.component.mjs +151 -0
  139. package/esm2022/src/app/shared/servicios/cargar-archivos.service.mjs +54 -0
  140. package/esm2022/src/app/shared/servicios/cargar-mapas.service.mjs +46 -0
  141. package/esm2022/src/app/shared/servicios/encriptado-basico.service.mjs +53 -0
  142. package/esm2022/src/app/shared/servicios/general.service.mjs +104 -0
  143. package/esm2022/src/app/shared/servicios/parametros-navegacion.service.mjs +21 -0
  144. package/esm2022/src/app/webcommon/pages/cargue-plantilla/cargue-plantilla-general/cargue-plantilla-general.component.mjs +370 -0
  145. package/esm2022/src/app/webcommon/pages/ejecucion-reporte/detalle-campo-reporte/detalle-campo-reporte.component.mjs +187 -0
  146. package/esm2022/src/app/webcommon/pages/ejecucion-reporte/detalle-distribucion-reporte/detalle-distribucion-reporte.component.mjs +85 -0
  147. package/esm2022/src/app/webcommon/pages/ejecucion-reporte/detalle-ejecucion-reporte/detalle-ejecucion-reporte.page.mjs +347 -0
  148. package/esm2022/src/app/webcommon/pages/ejecucion-reporte/detalle-entrada-reporte/detalle-entrada-reporte.component.mjs +206 -0
  149. package/esm2022/src/app/webcommon/pages/ejecucion-reporte/detalle-punto-proceso-reporte/detalle-punto-proceso-reporte.component.mjs +328 -0
  150. package/esm2022/src/app/webcommon/pages/ejecucion-reporte/detalle-tipo-reporte/detalle-tipo-reporte.component.mjs +1569 -0
  151. package/esm2022/src/app/webcommon/pages/ejecucion-reporte/listado-ejecucion-reporte/listado-ejecucion-reporte.page.mjs +105 -0
  152. package/esm2022/src/app/webcommon/pages/ejecucion-reporte-externo/listado-ejecucion-reporte-externo/listado-ejecucion-reporte-externo.component.mjs +95 -0
  153. package/esm2022/src/app/webcommon/pages/fuente/importar-fuente-con/importar-fuente-con.component.mjs +588 -0
  154. package/esm2022/src/app/webcommon/pages/fuente/importar-fuente-general/importar-fuente-general.component.mjs +177 -0
  155. package/esm2022/src/app/webcommon/pages/fuente-reporte/fuente-reporte.component.mjs +749 -0
  156. package/esm2022/src/app/webcommon/pages/fuenteGeneral/fuente-general-servicio/fuente-general-servicio.component.mjs +331 -0
  157. package/esm2022/src/app/webcommon/pages/fuenteGeneral/listado-fuente-general/listado-fuente-general.page.mjs +96 -0
  158. package/esm2022/src/app/webcommon/pages/fuenteGeneral/mantenimiento-fuente-general/mantenimiento-fuente-general.page.mjs +675 -0
  159. package/esm2022/src/app/webcommon/pipes/dashboard.pipe.mjs +86 -0
  160. package/esm2022/src/app/webcommon/pipes/fuente.pipe.mjs +201 -0
  161. package/esm2022/src/app/webcommon/pipes/general.pipe.mjs +916 -0
  162. package/esm2022/src/app/webcommon/pipes/reporte-columnario.pipe.mjs +115 -0
  163. package/esm2022/src/app/webcommon/pipes/reporte-fuente.pipe.mjs +301 -0
  164. package/esm2022/src/app/webcommon/popups/popup-campos-fuente-general/popup-campos-fuente-general.component.mjs +267 -0
  165. package/esm2022/src/app/webcommon/popups/popup-convertir-plantillas/popup-convertir-plantillas.component.mjs +128 -0
  166. package/esm2022/src/app/webcommon/popups/popup-punto-proceso/popup-punto-proceso.component.mjs +293 -0
  167. package/esm2022/src/app/webcommon/popups/popup-recurso/popup-recurso.component.mjs +269 -0
  168. package/esm2022/src/app/webcommon/popups/popup-reporte/popup-reporte.component.mjs +509 -0
  169. package/esm2022/src/app/webcommon/popups/popup-sentencia/popup-sentencia.component.mjs +64 -0
  170. package/esm2022/src/app/webcommon/popups/popup-tablas-fuente/popup-tablas-fuente.component.mjs +159 -0
  171. package/esm2022/src/app/webcommon/popups/punto-proceso-comp/punto-proceso-comp.component.mjs +89 -0
  172. package/esm2022/src/app/webcommon/services/carguelinea.service.mjs +69 -0
  173. package/esm2022/src/app/webcommon/services/dashboard.service.mjs +253 -0
  174. package/esm2022/src/app/webcommon/services/ejecucionreporte.service.mjs +114 -0
  175. package/esm2022/src/app/webcommon/services/fechaUtils.service.mjs +88 -0
  176. package/esm2022/src/app/webcommon/services/fuentegeneral.service.mjs +68 -0
  177. package/esm2022/src/app/webcommon/services/homologacion.service.mjs +50 -0
  178. package/esm2022/src/app/webcommon/services/plantillas.service.mjs +129 -0
  179. package/esm2022/src/app/webcommon/services/reportes.service.mjs +95 -0
  180. package/esm2022/src/app/webcommon/webcommon.module.mjs +15 -0
  181. package/esm2022/src/environments/environment.mjs +24 -0
  182. package/fesm2022/general-library-union.mjs +15584 -0
  183. package/fesm2022/general-library-union.mjs.map +1 -0
  184. package/index.d.ts +5 -0
  185. package/package.json +17 -28
  186. package/{public-api.ts → public-api.d.ts} +35 -73
  187. package/src/app/core/componentes/breadcrumb/breadcrumb.component.d.ts +18 -0
  188. package/src/app/core/componentes/carga-pantalla-completa/carga-pantalla-completa.component.d.ts +14 -0
  189. package/src/app/core/componentes/filtro-general/filtro-general.component.d.ts +26 -0
  190. package/src/app/core/componentes/footer/footer.component.d.ts +9 -0
  191. package/src/app/core/componentes/formulariodinamico/formulariodinamico.component.d.ts +46 -0
  192. package/src/app/core/componentes/formulariodinamico/objetosformulario/{Cambio.ts → Cambio.d.ts} +3 -9
  193. package/src/app/core/componentes/formulariodinamico/objetosformulario/CampoFormulario.d.ts +44 -0
  194. package/src/app/core/componentes/formulariodinamico/objetosformulario/CampoFormularioCons.d.ts +45 -0
  195. package/src/app/core/componentes/formulariodinamico/objetosformulario/CampoFormularioNuevo.d.ts +33 -0
  196. package/src/app/core/componentes/formulariodinamico/objetosformulario/HashDirective.d.ts +9 -0
  197. package/src/app/core/componentes/inicio-component/inicio-component.component.d.ts +24 -0
  198. package/src/app/core/componentes/menu/menu.component.d.ts +16 -0
  199. package/src/app/core/componentes/tabla-general/tabla-general.component.d.ts +32 -0
  200. package/src/app/core/core.module.d.ts +8 -0
  201. package/src/app/core/errores/authentication.error.d.ts +3 -0
  202. package/src/app/core/modelos/error-response.model.d.ts +9 -0
  203. package/src/app/core/modelos/table-column.model.d.ts +12 -0
  204. package/src/app/core/modelos/user.model.d.ts +6 -0
  205. package/src/app/core/plantilla-general/plantilla-general.template.d.ts +89 -0
  206. package/src/app/core/servicios/auth.service.d.ts +52 -0
  207. package/src/app/core/servicios/cargar-control-funcionalidad.service.d.ts +19 -0
  208. package/src/app/core/servicios/data-exporter-table.utils.d.ts +8 -0
  209. package/src/app/core/servicios/error-interceptor.service.d.ts +41 -0
  210. package/src/app/core/servicios/guardias/auth.guard.d.ts +17 -0
  211. package/src/app/core/servicios/guardias/publico.guard.d.ts +13 -0
  212. package/src/app/core/servicios/interceptores/token-interceptor.service.d.ts +21 -0
  213. package/src/app/core/servicios/loading.service.d.ts +22 -0
  214. package/src/app/core/servicios/menu.service.d.ts +35 -0
  215. package/src/app/core/servicios/storage.service.d.ts +37 -0
  216. package/src/app/core/servicios/template.service.d.ts +20 -0
  217. package/src/app/core/servicios/toast.service.d.ts +46 -0
  218. package/src/app/core/servicios/utils.service.d.ts +42 -0
  219. package/src/app/core/sharedlib.module.d.ts +6 -0
  220. package/src/app/core/utilidades/color.util.d.ts +70 -0
  221. package/src/app/layout/api/{menuchangeevent.ts → menuchangeevent.d.ts} +1 -1
  222. package/src/app/layout/app.breadcrumb.component.d.ts +28 -0
  223. package/src/app/layout/app.footer.component.d.ts +8 -0
  224. package/src/app/layout/app.layout.component.d.ts +39 -0
  225. package/src/app/layout/app.layout.module.d.ts +6 -0
  226. package/src/app/layout/app.menu.component.d.ts +19 -0
  227. package/src/app/layout/app.menu.service.d.ts +12 -0
  228. package/src/app/layout/app.menuitem.component.d.ts +41 -0
  229. package/src/app/layout/app.menuprofile.component.d.ts +18 -0
  230. package/src/app/layout/app.rightmenu.component.d.ts +10 -0
  231. package/src/app/layout/app.sidebar.component.d.ts +34 -0
  232. package/src/app/layout/app.topbar.component.d.ts +79 -0
  233. package/src/app/layout/service/app.layout.service.d.ts +57 -0
  234. package/src/app/publico/pages/login/login.page.d.ts +40 -0
  235. package/src/app/publico/pages/not-found/not-found.page.d.ts +17 -0
  236. package/src/app/publico/pages/seleccion-rol/seleccion-rol.component.d.ts +41 -0
  237. package/src/app/publico/pages/timeout/timeout.page.d.ts +10 -0
  238. package/src/app/seguridad/constantes/ConstantesGenerales.d.ts +25 -0
  239. package/src/app/seguridad/constantes/ReporteEntradaConstantes.d.ts +7 -0
  240. package/src/app/seguridad/modelos/AplicacionModel.d.ts +7 -0
  241. package/src/app/seguridad/modelos/ArchivoPortalModel.d.ts +13 -0
  242. package/src/app/seguridad/modelos/AtributoPuntoModel.d.ts +8 -0
  243. package/src/app/seguridad/modelos/AtributoSSOportalModel.d.ts +16 -0
  244. package/src/app/seguridad/modelos/{AuditoriaArchivoModel.ts → AuditoriaArchivoModel.d.ts} +2 -5
  245. package/src/app/seguridad/modelos/CargueLineaModel.d.ts +12 -0
  246. package/src/app/seguridad/modelos/ColoresRGB.d.ts +17 -0
  247. package/src/app/seguridad/modelos/ColumnaFuenteModel.d.ts +8 -0
  248. package/src/app/seguridad/modelos/{ColumnaWraperModel.ts → ColumnaWraperModel.d.ts} +4 -5
  249. package/src/app/seguridad/modelos/ComplementoModel.d.ts +6 -0
  250. package/src/app/seguridad/modelos/ComponentePaginaModel.d.ts +20 -0
  251. package/src/app/seguridad/modelos/ConexionModel.d.ts +13 -0
  252. package/src/app/seguridad/modelos/{ContenidoHtmlPortalModel.ts → ContenidoHtmlPortalModel.d.ts} +2 -7
  253. package/src/app/seguridad/modelos/ControlFuncionModel.d.ts +7 -0
  254. package/src/app/seguridad/modelos/CorreoModel.d.ts +31 -0
  255. package/src/app/seguridad/modelos/CorreoWSModel.d.ts +33 -0
  256. package/src/app/seguridad/modelos/CruceRecursoPuntoModel.d.ts +13 -0
  257. package/src/app/seguridad/modelos/{DatoInicioModel.ts → DatoInicioModel.d.ts} +3 -4
  258. package/src/app/seguridad/modelos/{EjecucionReporteDataModel.ts → EjecucionReporteDataModel.d.ts} +2 -3
  259. package/src/app/seguridad/modelos/EmpresaModel.d.ts +23 -0
  260. package/src/app/seguridad/modelos/EmpresaSeguridadModel.d.ts +18 -0
  261. package/src/app/seguridad/modelos/{EntradaComplementoModel.ts → EntradaComplementoModel.d.ts} +2 -5
  262. package/src/app/seguridad/modelos/EtiquetaModel.d.ts +4 -0
  263. package/src/app/seguridad/modelos/Etiquetas.d.ts +10 -0
  264. package/src/app/seguridad/modelos/{ForeingWraperModel.ts → ForeingWraperModel.d.ts} +2 -5
  265. package/src/app/seguridad/modelos/FuenteCampoAtributoModel.d.ts +15 -0
  266. package/src/app/seguridad/modelos/{FuenteCampoModel.ts → FuenteCampoModel.d.ts} +2 -6
  267. package/src/app/seguridad/modelos/FuenteDato.d.ts +18 -0
  268. package/src/app/seguridad/modelos/FuenteEntradaModel.d.ts +8 -0
  269. package/src/app/seguridad/modelos/{FuenteGeneralModel.ts → FuenteGeneralModel.d.ts} +2 -21
  270. package/src/app/seguridad/modelos/FuenteLineaServicioModel.d.ts +16 -0
  271. package/src/app/seguridad/modelos/FuenteProcesoGeneralModel.d.ts +10 -0
  272. package/src/app/seguridad/modelos/{FuenteServicioModel.ts → FuenteServicioModel.d.ts} +2 -16
  273. package/src/app/seguridad/modelos/FuncionalidadModel.d.ts +8 -0
  274. package/src/app/seguridad/modelos/GeneralModel.d.ts +8 -0
  275. package/src/app/seguridad/modelos/{GrupoAccesoModel.ts → GrupoAccesoModel.d.ts} +2 -5
  276. package/src/app/seguridad/modelos/GrupoControlFuncionModel.d.ts +9 -0
  277. package/src/app/seguridad/modelos/GrupoFuenteModel.d.ts +13 -0
  278. package/src/app/seguridad/modelos/GrupoPermisoModel.d.ts +13 -0
  279. package/src/app/seguridad/modelos/{JoinFromModel.ts → JoinFromModel.d.ts} +2 -2
  280. package/src/app/seguridad/modelos/ListaServicioModel.d.ts +16 -0
  281. package/src/app/seguridad/modelos/LlaveForaneaModel.d.ts +6 -0
  282. package/src/app/seguridad/modelos/LoginModel.d.ts +17 -0
  283. package/src/app/seguridad/modelos/MensajeSistemaModel.d.ts +7 -0
  284. package/src/app/seguridad/modelos/{MenuPortalModel.ts → MenuPortalModel.d.ts} +1 -2
  285. package/src/app/seguridad/modelos/ModulosModel.d.ts +14 -0
  286. package/src/app/seguridad/modelos/{ObjetoReporteModel.ts → ObjetoReporteModel.d.ts} +2 -3
  287. package/src/app/seguridad/modelos/PaginaPortalModel.d.ts +19 -0
  288. package/src/app/seguridad/modelos/ParametroComponenteModel.d.ts +8 -0
  289. package/src/app/seguridad/modelos/ParametrosGeneralModel.d.ts +8 -0
  290. package/src/app/seguridad/modelos/PermisoFuncionModel.d.ts +8 -0
  291. package/src/app/seguridad/modelos/PermisocontenidoModel.d.ts +18 -0
  292. package/src/app/seguridad/modelos/{PeticionModel.ts → PeticionModel.d.ts} +1 -6
  293. package/src/app/seguridad/modelos/PreguntaSeguridadModel.d.ts +6 -0
  294. package/src/app/seguridad/modelos/PropiedadModel.d.ts +9 -0
  295. package/src/app/seguridad/modelos/PublicacionWebModel.d.ts +25 -0
  296. package/src/app/seguridad/modelos/PuntoProcesoModel.d.ts +6 -0
  297. package/src/app/seguridad/modelos/RecursoPunto.d.ts +12 -0
  298. package/src/app/seguridad/modelos/RecursoPuntoModel.d.ts +12 -0
  299. package/src/app/seguridad/modelos/ReporteBanda.d.ts +7 -0
  300. package/src/app/seguridad/modelos/ReporteColumna.d.ts +32 -0
  301. package/src/app/seguridad/modelos/ReporteColumnario.d.ts +68 -0
  302. package/src/app/seguridad/modelos/ReporteColumnarioMarcador.d.ts +23 -0
  303. package/src/app/seguridad/modelos/{ReporteEntradaModel.ts → ReporteEntradaModel.d.ts} +2 -4
  304. package/src/app/seguridad/modelos/{ReporteFuenteModel.ts → ReporteFuenteModel.d.ts} +16 -70
  305. package/src/app/seguridad/modelos/ReporteMarcador.d.ts +39 -0
  306. package/src/app/seguridad/modelos/ReporteSoporte.d.ts +9 -0
  307. package/src/app/seguridad/modelos/ReporteTabla.d.ts +12 -0
  308. package/src/app/seguridad/modelos/RespuestaModel.d.ts +8 -0
  309. package/src/app/seguridad/modelos/{RolModel.ts → RolModel.d.ts} +4 -8
  310. package/src/app/seguridad/modelos/ServidorCorreoModel.d.ts +25 -0
  311. package/src/app/seguridad/modelos/SistemaMensajeModel.d.ts +8 -0
  312. package/src/app/seguridad/modelos/SitioPortalModel.d.ts +24 -0
  313. package/src/app/seguridad/modelos/TablaFromModel.d.ts +4 -0
  314. package/src/app/seguridad/modelos/TareasModel.d.ts +49 -0
  315. package/src/app/seguridad/modelos/TextoModel.d.ts +8 -0
  316. package/src/app/seguridad/modelos/TipoEtiqueta.d.ts +7 -0
  317. package/src/app/seguridad/modelos/UnionModel.d.ts +11 -0
  318. package/src/app/seguridad/modelos/{UsuarioModel.ts → UsuarioModel.d.ts} +5 -16
  319. package/src/app/seguridad/modelos/UsuariogrupoModel.d.ts +22 -0
  320. package/src/app/seguridad/modelos/aplicacion-propiedad-model.d.ts +13 -0
  321. package/src/app/seguridad/modelos/contenidoCorreoModel.d.ts +9 -0
  322. package/src/app/shared/componentes/input-helper-seleccion-plantilla/input-helper-seleccion-plantilla.component.d.ts +47 -0
  323. package/src/app/shared/servicios/cargar-archivos.service.d.ts +15 -0
  324. package/src/app/shared/servicios/cargar-mapas.service.d.ts +18 -0
  325. package/src/app/shared/servicios/encriptado-basico.service.d.ts +10 -0
  326. package/src/app/shared/servicios/general.service.d.ts +24 -0
  327. package/src/app/shared/servicios/parametros-navegacion.service.d.ts +9 -0
  328. package/src/app/webcommon/pages/cargue-plantilla/cargue-plantilla-general/cargue-plantilla-general.component.d.ts +78 -0
  329. package/src/app/webcommon/pages/ejecucion-reporte/detalle-campo-reporte/detalle-campo-reporte.component.d.ts +79 -0
  330. package/src/app/webcommon/pages/ejecucion-reporte/detalle-distribucion-reporte/detalle-distribucion-reporte.component.d.ts +29 -0
  331. package/src/app/webcommon/pages/ejecucion-reporte/detalle-ejecucion-reporte/detalle-ejecucion-reporte.page.d.ts +69 -0
  332. package/src/app/webcommon/pages/ejecucion-reporte/detalle-entrada-reporte/detalle-entrada-reporte.component.d.ts +51 -0
  333. package/src/app/webcommon/pages/ejecucion-reporte/detalle-punto-proceso-reporte/detalle-punto-proceso-reporte.component.d.ts +77 -0
  334. package/src/app/webcommon/pages/ejecucion-reporte/detalle-tipo-reporte/detalle-tipo-reporte.component.d.ts +275 -0
  335. package/src/app/webcommon/pages/ejecucion-reporte/listado-ejecucion-reporte/listado-ejecucion-reporte.page.d.ts +42 -0
  336. package/src/app/webcommon/pages/ejecucion-reporte-externo/listado-ejecucion-reporte-externo/listado-ejecucion-reporte-externo.component.d.ts +33 -0
  337. package/src/app/webcommon/pages/fuente/importar-fuente-con/importar-fuente-con.component.d.ts +143 -0
  338. package/src/app/webcommon/pages/fuente/importar-fuente-general/importar-fuente-general.component.d.ts +49 -0
  339. package/src/app/webcommon/pages/fuente-reporte/fuente-reporte.component.d.ts +128 -0
  340. package/src/app/webcommon/pages/fuenteGeneral/fuente-general-servicio/fuente-general-servicio.component.d.ts +64 -0
  341. package/src/app/webcommon/pages/fuenteGeneral/listado-fuente-general/listado-fuente-general.page.d.ts +33 -0
  342. package/src/app/webcommon/pages/fuenteGeneral/mantenimiento-fuente-general/mantenimiento-fuente-general.page.d.ts +149 -0
  343. package/src/app/webcommon/pipes/dashboard.pipe.d.ts +48 -0
  344. package/src/app/webcommon/pipes/fuente.pipe.d.ts +136 -0
  345. package/src/app/webcommon/pipes/general.pipe.d.ts +646 -0
  346. package/src/app/webcommon/pipes/reporte-columnario.pipe.d.ts +59 -0
  347. package/src/app/webcommon/pipes/reporte-fuente.pipe.d.ts +193 -0
  348. package/src/app/webcommon/popups/popup-campos-fuente-general/popup-campos-fuente-general.component.d.ts +59 -0
  349. package/src/app/webcommon/popups/popup-convertir-plantillas/popup-convertir-plantillas.component.d.ts +27 -0
  350. package/src/app/webcommon/popups/popup-punto-proceso/popup-punto-proceso.component.d.ts +64 -0
  351. package/src/app/webcommon/popups/popup-recurso/popup-recurso.component.d.ts +63 -0
  352. package/src/app/webcommon/popups/popup-reporte/popup-reporte.component.d.ts +97 -0
  353. package/src/app/webcommon/popups/popup-sentencia/popup-sentencia.component.d.ts +21 -0
  354. package/src/app/webcommon/popups/popup-tablas-fuente/popup-tablas-fuente.component.d.ts +42 -0
  355. package/src/app/webcommon/popups/punto-proceso-comp/punto-proceso-comp.component.d.ts +30 -0
  356. package/src/app/webcommon/services/carguelinea.service.d.ts +19 -0
  357. package/src/app/webcommon/services/dashboard.service.d.ts +27 -0
  358. package/src/app/webcommon/services/ejecucionreporte.service.d.ts +34 -0
  359. package/src/app/webcommon/services/fechaUtils.service.d.ts +29 -0
  360. package/src/app/webcommon/services/fuentegeneral.service.d.ts +24 -0
  361. package/src/app/webcommon/services/homologacion.service.d.ts +17 -0
  362. package/src/app/webcommon/services/plantillas.service.d.ts +26 -0
  363. package/src/app/webcommon/services/reportes.service.d.ts +35 -0
  364. package/src/app/webcommon/webcommon.module.d.ts +6 -0
  365. package/src/environments/environment.d.ts +7 -0
  366. package/src/styles/primeng/sass/overrides/_theme_styles.scss +1 -1
  367. package/.browserslistrc +0 -15
  368. package/.editorconfig +0 -16
  369. package/.vscode/extensions.json +0 -4
  370. package/.vscode/launch.json +0 -20
  371. package/.vscode/tasks.json +0 -42
  372. package/angular.json +0 -143
  373. package/karma.conf.js +0 -44
  374. package/ng-package.json +0 -21
  375. package/src/app/app.component.html +0 -12
  376. package/src/app/app.component.scss +0 -0
  377. package/src/app/app.component.spec.ts +0 -29
  378. package/src/app/app.component.ts +0 -34
  379. package/src/app/app.config.ts +0 -43
  380. package/src/app/app.module.ts +0 -10
  381. package/src/app/app.routes.ts +0 -88
  382. package/src/app/core/componentes/breadcrumb/breadcrumb.component.html +0 -6
  383. package/src/app/core/componentes/breadcrumb/breadcrumb.component.scss +0 -0
  384. package/src/app/core/componentes/breadcrumb/breadcrumb.component.ts +0 -39
  385. package/src/app/core/componentes/carga-breadcrumb/carga-breadcrumb.component.html +0 -1
  386. package/src/app/core/componentes/carga-breadcrumb/carga-breadcrumb.component.scss +0 -0
  387. package/src/app/core/componentes/carga-breadcrumb/carga-breadcrumb.component.ts +0 -31
  388. package/src/app/core/componentes/carga-pantalla-completa/carga-pantalla-completa.component.html +0 -9
  389. package/src/app/core/componentes/carga-pantalla-completa/carga-pantalla-completa.component.scss +0 -28
  390. package/src/app/core/componentes/carga-pantalla-completa/carga-pantalla-completa.component.ts +0 -32
  391. package/src/app/core/componentes/filtro-general/filtro-general.component.html +0 -34
  392. package/src/app/core/componentes/filtro-general/filtro-general.component.scss +0 -3
  393. package/src/app/core/componentes/filtro-general/filtro-general.component.ts +0 -154
  394. package/src/app/core/componentes/footer/footer.component.html +0 -13
  395. package/src/app/core/componentes/footer/footer.component.scss +0 -3
  396. package/src/app/core/componentes/footer/footer.component.ts +0 -20
  397. package/src/app/core/componentes/formulariodinamico/formulariodinamico.component.html +0 -267
  398. package/src/app/core/componentes/formulariodinamico/formulariodinamico.component.scss +0 -21
  399. package/src/app/core/componentes/formulariodinamico/formulariodinamico.component.ts +0 -275
  400. package/src/app/core/componentes/formulariodinamico/objetosformulario/CampoFormulario.ts +0 -118
  401. package/src/app/core/componentes/formulariodinamico/objetosformulario/CampoFormularioCons.ts +0 -76
  402. package/src/app/core/componentes/formulariodinamico/objetosformulario/CampoFormularioNuevo.ts +0 -67
  403. package/src/app/core/componentes/formulariodinamico/objetosformulario/HashDirective.ts +0 -11
  404. package/src/app/core/componentes/inicio-component/inicio-component.component.html +0 -29
  405. package/src/app/core/componentes/inicio-component/inicio-component.component.scss +0 -69
  406. package/src/app/core/componentes/inicio-component/inicio-component.component.ts +0 -65
  407. package/src/app/core/componentes/menu/menu.component.html +0 -13
  408. package/src/app/core/componentes/menu/menu.component.scss +0 -36
  409. package/src/app/core/componentes/menu/menu.component.ts +0 -35
  410. package/src/app/core/componentes/tabla-general/tabla-general.component.html +0 -90
  411. package/src/app/core/componentes/tabla-general/tabla-general.component.scss +0 -0
  412. package/src/app/core/componentes/tabla-general/tabla-general.component.ts +0 -96
  413. package/src/app/core/core.module.ts +0 -22
  414. package/src/app/core/errores/authentication.error.ts +0 -6
  415. package/src/app/core/modelos/error-response.model.ts +0 -9
  416. package/src/app/core/modelos/table-column.model.ts +0 -10
  417. package/src/app/core/modelos/user.model.ts +0 -6
  418. package/src/app/core/plantilla-general/plantilla-general.template.html +0 -139
  419. package/src/app/core/plantilla-general/plantilla-general.template.scss +0 -37
  420. package/src/app/core/plantilla-general/plantilla-general.template.ts +0 -233
  421. package/src/app/core/servicios/auth.service.ts +0 -189
  422. package/src/app/core/servicios/cargar-control-funcionalidad.service.ts +0 -49
  423. package/src/app/core/servicios/data-exporter-table.utils.ts +0 -55
  424. package/src/app/core/servicios/error-interceptor.service.ts +0 -146
  425. package/src/app/core/servicios/guardias/auth.guard.ts +0 -51
  426. package/src/app/core/servicios/guardias/publico.guard.ts +0 -26
  427. package/src/app/core/servicios/interceptores/token-interceptor.service.ts +0 -110
  428. package/src/app/core/servicios/loading.service.ts +0 -48
  429. package/src/app/core/servicios/menu.service.ts +0 -153
  430. package/src/app/core/servicios/storage.service.ts +0 -68
  431. package/src/app/core/servicios/template.service.ts +0 -91
  432. package/src/app/core/servicios/toast.service.ts +0 -89
  433. package/src/app/core/servicios/utils.service.ts +0 -351
  434. package/src/app/core/sharedlib.module.ts +0 -11
  435. package/src/app/core/utilidades/color.util.ts +0 -197
  436. package/src/app/layout/app.breadcrumb.component.html +0 -20
  437. package/src/app/layout/app.breadcrumb.component.ts +0 -78
  438. package/src/app/layout/app.footer.component.html +0 -18
  439. package/src/app/layout/app.footer.component.ts +0 -15
  440. package/src/app/layout/app.layout.component.html +0 -20
  441. package/src/app/layout/app.layout.component.ts +0 -201
  442. package/src/app/layout/app.layout.module.ts +0 -9
  443. package/src/app/layout/app.menu.component.html +0 -6
  444. package/src/app/layout/app.menu.component.ts +0 -51
  445. package/src/app/layout/app.menu.service.ts +0 -23
  446. package/src/app/layout/app.menuitem.component.ts +0 -252
  447. package/src/app/layout/app.menuprofile.component.html +0 -35
  448. package/src/app/layout/app.menuprofile.component.ts +0 -60
  449. package/src/app/layout/app.rightmenu.component.html +0 -72
  450. package/src/app/layout/app.rightmenu.component.ts +0 -24
  451. package/src/app/layout/app.sidebar.component.html +0 -40
  452. package/src/app/layout/app.sidebar.component.ts +0 -81
  453. package/src/app/layout/app.topbar.component.html +0 -214
  454. package/src/app/layout/app.topbar.component.ts +0 -335
  455. package/src/app/layout/config/app.config.component.html +0 -125
  456. package/src/app/layout/config/app.config.component.ts +0 -206
  457. package/src/app/layout/config/app.config.module.ts +0 -11
  458. package/src/app/layout/service/app.layout.service.ts +0 -191
  459. package/src/app/publico/pages/login/login.page.html +0 -53
  460. package/src/app/publico/pages/login/login.page.scss +0 -166
  461. package/src/app/publico/pages/login/login.page.ts +0 -128
  462. package/src/app/publico/pages/not-found/not-found.page.html +0 -35
  463. package/src/app/publico/pages/not-found/not-found.page.scss +0 -2
  464. package/src/app/publico/pages/not-found/not-found.page.ts +0 -46
  465. package/src/app/publico/pages/seleccion-rol/seleccion-rol.component.html +0 -58
  466. package/src/app/publico/pages/seleccion-rol/seleccion-rol.component.scss +0 -49
  467. package/src/app/publico/pages/seleccion-rol/seleccion-rol.component.ts +0 -176
  468. package/src/app/publico/pages/timeout/timeout.page.html +0 -24
  469. package/src/app/publico/pages/timeout/timeout.page.scss +0 -2
  470. package/src/app/publico/pages/timeout/timeout.page.ts +0 -18
  471. package/src/app/seguridad/constantes/ConstantesGenerales.ts +0 -30
  472. package/src/app/seguridad/constantes/ReporteEntradaConstantes.ts +0 -18
  473. package/src/app/seguridad/constantes/ReporteFuenteConstantes.ts +0 -13
  474. package/src/app/seguridad/modelos/AplicacionModel.ts +0 -11
  475. package/src/app/seguridad/modelos/ArchivoPortalModel.ts +0 -16
  476. package/src/app/seguridad/modelos/AtributoPuntoModel.ts +0 -9
  477. package/src/app/seguridad/modelos/AtributoSSOportalModel.ts +0 -22
  478. package/src/app/seguridad/modelos/CargueLineaModel.ts +0 -17
  479. package/src/app/seguridad/modelos/ColoresRGB.ts +0 -17
  480. package/src/app/seguridad/modelos/ColumnaFuenteModel.ts +0 -9
  481. package/src/app/seguridad/modelos/ComplementoModel.ts +0 -10
  482. package/src/app/seguridad/modelos/ComponentePaginaModel.ts +0 -22
  483. package/src/app/seguridad/modelos/ConexionModel.ts +0 -15
  484. package/src/app/seguridad/modelos/ControlFuncionModel.ts +0 -10
  485. package/src/app/seguridad/modelos/CorreoModel.ts +0 -45
  486. package/src/app/seguridad/modelos/CorreoWSModel.ts +0 -49
  487. package/src/app/seguridad/modelos/CruceRecursoPuntoModel.ts +0 -14
  488. package/src/app/seguridad/modelos/EmpresaModel.ts +0 -25
  489. package/src/app/seguridad/modelos/EmpresaSeguridadModel.ts +0 -19
  490. package/src/app/seguridad/modelos/EtiquetaModel.ts +0 -4
  491. package/src/app/seguridad/modelos/Etiquetas.ts +0 -14
  492. package/src/app/seguridad/modelos/FuenteCampoAtributoModel.ts +0 -21
  493. package/src/app/seguridad/modelos/FuenteDato.ts +0 -19
  494. package/src/app/seguridad/modelos/FuenteEntradaModel.ts +0 -9
  495. package/src/app/seguridad/modelos/FuenteLineaServicioModel.ts +0 -19
  496. package/src/app/seguridad/modelos/FuenteProcesoGeneralModel.ts +0 -14
  497. package/src/app/seguridad/modelos/FuncionalidadModel.ts +0 -12
  498. package/src/app/seguridad/modelos/GeneralModel.ts +0 -16
  499. package/src/app/seguridad/modelos/GrupoControlFuncionModel.ts +0 -12
  500. package/src/app/seguridad/modelos/GrupoFuenteModel.ts +0 -17
  501. package/src/app/seguridad/modelos/GrupoPermisoModel.ts +0 -16
  502. package/src/app/seguridad/modelos/ListaServicioModel.ts +0 -18
  503. package/src/app/seguridad/modelos/LlaveForaneaModel.ts +0 -6
  504. package/src/app/seguridad/modelos/LoginModel.ts +0 -19
  505. package/src/app/seguridad/modelos/MensajeSistemaModel.ts +0 -10
  506. package/src/app/seguridad/modelos/ModulosModel.ts +0 -17
  507. package/src/app/seguridad/modelos/PaginaPortalModel.ts +0 -23
  508. package/src/app/seguridad/modelos/ParametroComponenteModel.ts +0 -9
  509. package/src/app/seguridad/modelos/ParametrosGeneralModel.ts +0 -16
  510. package/src/app/seguridad/modelos/PermisoFuncionModel.ts +0 -11
  511. package/src/app/seguridad/modelos/PermisocontenidoModel.ts +0 -20
  512. package/src/app/seguridad/modelos/PreguntaSeguridadModel.ts +0 -9
  513. package/src/app/seguridad/modelos/PropiedadModel.ts +0 -12
  514. package/src/app/seguridad/modelos/PublicacionWebModel.ts +0 -29
  515. package/src/app/seguridad/modelos/PuntoProcesoModel.ts +0 -7
  516. package/src/app/seguridad/modelos/RecursoPunto.ts +0 -13
  517. package/src/app/seguridad/modelos/RecursoPuntoModel.ts +0 -13
  518. package/src/app/seguridad/modelos/ReporteBanda.ts +0 -9
  519. package/src/app/seguridad/modelos/ReporteColumna.ts +0 -33
  520. package/src/app/seguridad/modelos/ReporteColumnario.ts +0 -82
  521. package/src/app/seguridad/modelos/ReporteColumnarioMarcador.ts +0 -31
  522. package/src/app/seguridad/modelos/ReporteMarcador.ts +0 -40
  523. package/src/app/seguridad/modelos/ReporteSoporte.ts +0 -10
  524. package/src/app/seguridad/modelos/ReporteTabla.ts +0 -14
  525. package/src/app/seguridad/modelos/RespuestaModel.ts +0 -10
  526. package/src/app/seguridad/modelos/ServidorCorreoModel.ts +0 -31
  527. package/src/app/seguridad/modelos/SistemaMensajeModel.ts +0 -11
  528. package/src/app/seguridad/modelos/SitioPortalModel.ts +0 -29
  529. package/src/app/seguridad/modelos/TablaFromModel.ts +0 -5
  530. package/src/app/seguridad/modelos/TareasModel.ts +0 -54
  531. package/src/app/seguridad/modelos/TextoModel.ts +0 -11
  532. package/src/app/seguridad/modelos/TipoEtiqueta.ts +0 -8
  533. package/src/app/seguridad/modelos/UnionModel.ts +0 -14
  534. package/src/app/seguridad/modelos/UsuariogrupoModel.ts +0 -27
  535. package/src/app/seguridad/modelos/aplicacion-propiedad-model.ts +0 -16
  536. package/src/app/seguridad/modelos/contenidoCorreoModel.ts +0 -13
  537. package/src/app/shared/componentes/input-helper-seleccion-plantilla/input-helper-seleccion-plantilla.component.html +0 -47
  538. package/src/app/shared/componentes/input-helper-seleccion-plantilla/input-helper-seleccion-plantilla.component.scss +0 -8
  539. package/src/app/shared/componentes/input-helper-seleccion-plantilla/input-helper-seleccion-plantilla.component.ts +0 -141
  540. package/src/app/shared/servicios/cargar-archivos.service.ts +0 -51
  541. package/src/app/shared/servicios/cargar-mapas.service.ts +0 -43
  542. package/src/app/shared/servicios/encriptado-basico.service.ts +0 -54
  543. package/src/app/shared/servicios/encriptador-simetrico.service.ts +0 -29
  544. package/src/app/shared/servicios/general.service.ts +0 -124
  545. package/src/app/shared/servicios/parametros-navegacion.service.ts +0 -20
  546. package/src/app/shared/servicios/plantillas.service.ts +0 -22
  547. package/src/app/shared/utilidades/translate-loader.util.ts +0 -44
  548. package/src/app/webcommon/pages/cargue-plantilla/cargue-plantilla-general/cargue-plantilla-general.component.html +0 -167
  549. package/src/app/webcommon/pages/cargue-plantilla/cargue-plantilla-general/cargue-plantilla-general.component.scss +0 -11
  550. package/src/app/webcommon/pages/cargue-plantilla/cargue-plantilla-general/cargue-plantilla-general.component.ts +0 -425
  551. package/src/app/webcommon/pages/ejecucion-reporte/detalle-campo-reporte/detalle-campo-reporte.component.html +0 -87
  552. package/src/app/webcommon/pages/ejecucion-reporte/detalle-campo-reporte/detalle-campo-reporte.component.scss +0 -0
  553. package/src/app/webcommon/pages/ejecucion-reporte/detalle-campo-reporte/detalle-campo-reporte.component.ts +0 -189
  554. package/src/app/webcommon/pages/ejecucion-reporte/detalle-distribucion-reporte/detalle-distribucion-reporte.component.html +0 -117
  555. package/src/app/webcommon/pages/ejecucion-reporte/detalle-distribucion-reporte/detalle-distribucion-reporte.component.scss +0 -0
  556. package/src/app/webcommon/pages/ejecucion-reporte/detalle-distribucion-reporte/detalle-distribucion-reporte.component.ts +0 -87
  557. package/src/app/webcommon/pages/ejecucion-reporte/detalle-ejecucion-reporte/detalle-ejecucion-reporte.page.html +0 -158
  558. package/src/app/webcommon/pages/ejecucion-reporte/detalle-ejecucion-reporte/detalle-ejecucion-reporte.page.scss +0 -6
  559. package/src/app/webcommon/pages/ejecucion-reporte/detalle-ejecucion-reporte/detalle-ejecucion-reporte.page.ts +0 -345
  560. package/src/app/webcommon/pages/ejecucion-reporte/detalle-entrada-reporte/detalle-entrada-reporte.component.html +0 -131
  561. package/src/app/webcommon/pages/ejecucion-reporte/detalle-entrada-reporte/detalle-entrada-reporte.component.scss +0 -0
  562. package/src/app/webcommon/pages/ejecucion-reporte/detalle-entrada-reporte/detalle-entrada-reporte.component.ts +0 -198
  563. package/src/app/webcommon/pages/ejecucion-reporte/detalle-punto-proceso-reporte/detalle-punto-proceso-reporte.component.html +0 -206
  564. package/src/app/webcommon/pages/ejecucion-reporte/detalle-punto-proceso-reporte/detalle-punto-proceso-reporte.component.scss +0 -3
  565. package/src/app/webcommon/pages/ejecucion-reporte/detalle-punto-proceso-reporte/detalle-punto-proceso-reporte.component.ts +0 -329
  566. package/src/app/webcommon/pages/ejecucion-reporte/detalle-tipo-reporte/detalle-tipo-reporte.component.html +0 -2114
  567. package/src/app/webcommon/pages/ejecucion-reporte/detalle-tipo-reporte/detalle-tipo-reporte.component.scss +0 -241
  568. package/src/app/webcommon/pages/ejecucion-reporte/detalle-tipo-reporte/detalle-tipo-reporte.component.ts +0 -1677
  569. package/src/app/webcommon/pages/ejecucion-reporte/listado-ejecucion-reporte/listado-ejecucion-reporte.page.html +0 -33
  570. package/src/app/webcommon/pages/ejecucion-reporte/listado-ejecucion-reporte/listado-ejecucion-reporte.page.scss +0 -0
  571. package/src/app/webcommon/pages/ejecucion-reporte/listado-ejecucion-reporte/listado-ejecucion-reporte.page.ts +0 -96
  572. package/src/app/webcommon/pages/ejecucion-reporte-externo/listado-ejecucion-reporte-externo/listado-ejecucion-reporte-externo.component.html +0 -47
  573. package/src/app/webcommon/pages/ejecucion-reporte-externo/listado-ejecucion-reporte-externo/listado-ejecucion-reporte-externo.component.scss +0 -0
  574. package/src/app/webcommon/pages/ejecucion-reporte-externo/listado-ejecucion-reporte-externo/listado-ejecucion-reporte-externo.component.ts +0 -95
  575. package/src/app/webcommon/pages/fuente/importar-fuente-con/importar-fuente-con.component.html +0 -394
  576. package/src/app/webcommon/pages/fuente/importar-fuente-con/importar-fuente-con.component.scss +0 -10
  577. package/src/app/webcommon/pages/fuente/importar-fuente-con/importar-fuente-con.component.ts +0 -599
  578. package/src/app/webcommon/pages/fuente/importar-fuente-general/importar-fuente-general.component.html +0 -130
  579. package/src/app/webcommon/pages/fuente/importar-fuente-general/importar-fuente-general.component.scss +0 -0
  580. package/src/app/webcommon/pages/fuente/importar-fuente-general/importar-fuente-general.component.ts +0 -172
  581. package/src/app/webcommon/pages/fuente-reporte/fuente-reporte.component.html +0 -376
  582. package/src/app/webcommon/pages/fuente-reporte/fuente-reporte.component.scss +0 -5
  583. package/src/app/webcommon/pages/fuente-reporte/fuente-reporte.component.ts +0 -749
  584. package/src/app/webcommon/pages/fuenteGeneral/fuente-general-servicio/fuente-general-servicio.component.html +0 -145
  585. package/src/app/webcommon/pages/fuenteGeneral/fuente-general-servicio/fuente-general-servicio.component.scss +0 -0
  586. package/src/app/webcommon/pages/fuenteGeneral/fuente-general-servicio/fuente-general-servicio.component.ts +0 -302
  587. package/src/app/webcommon/pages/fuenteGeneral/listado-fuente-general/listado-fuente-general.page.html +0 -19
  588. package/src/app/webcommon/pages/fuenteGeneral/listado-fuente-general/listado-fuente-general.page.scss +0 -0
  589. package/src/app/webcommon/pages/fuenteGeneral/listado-fuente-general/listado-fuente-general.page.ts +0 -89
  590. package/src/app/webcommon/pages/fuenteGeneral/mantenimiento-fuente-general/mantenimiento-fuente-general.page.html +0 -713
  591. package/src/app/webcommon/pages/fuenteGeneral/mantenimiento-fuente-general/mantenimiento-fuente-general.page.scss +0 -0
  592. package/src/app/webcommon/pages/fuenteGeneral/mantenimiento-fuente-general/mantenimiento-fuente-general.page.ts +0 -688
  593. package/src/app/webcommon/pipes/dashboard.pipe.ts +0 -79
  594. package/src/app/webcommon/pipes/fuente.pipe.ts +0 -207
  595. package/src/app/webcommon/pipes/general.pipe.ts +0 -1043
  596. package/src/app/webcommon/pipes/reporte-columnario.pipe.ts +0 -101
  597. package/src/app/webcommon/pipes/reporte-fuente.pipe.ts +0 -306
  598. package/src/app/webcommon/pipes/sara-general.pipe.ts +0 -289
  599. package/src/app/webcommon/popups/popup-campos-fuente-general/popup-campos-fuente-general.component.html +0 -90
  600. package/src/app/webcommon/popups/popup-campos-fuente-general/popup-campos-fuente-general.component.scss +0 -0
  601. package/src/app/webcommon/popups/popup-campos-fuente-general/popup-campos-fuente-general.component.ts +0 -262
  602. package/src/app/webcommon/popups/popup-convertir-plantillas/popup-convertir-plantillas.component.html +0 -50
  603. package/src/app/webcommon/popups/popup-convertir-plantillas/popup-convertir-plantillas.component.scss +0 -0
  604. package/src/app/webcommon/popups/popup-convertir-plantillas/popup-convertir-plantillas.component.ts +0 -135
  605. package/src/app/webcommon/popups/popup-punto-proceso/popup-punto-proceso.component.html +0 -41
  606. package/src/app/webcommon/popups/popup-punto-proceso/popup-punto-proceso.component.scss +0 -0
  607. package/src/app/webcommon/popups/popup-punto-proceso/popup-punto-proceso.component.ts +0 -283
  608. package/src/app/webcommon/popups/popup-recurso/popup-recurso.component.html +0 -179
  609. package/src/app/webcommon/popups/popup-recurso/popup-recurso.component.scss +0 -3
  610. package/src/app/webcommon/popups/popup-recurso/popup-recurso.component.ts +0 -266
  611. package/src/app/webcommon/popups/popup-reporte/popup-reporte.component.html +0 -261
  612. package/src/app/webcommon/popups/popup-reporte/popup-reporte.component.scss +0 -13
  613. package/src/app/webcommon/popups/popup-reporte/popup-reporte.component.ts +0 -513
  614. package/src/app/webcommon/popups/popup-sentencia/popup-sentencia.component.html +0 -10
  615. package/src/app/webcommon/popups/popup-sentencia/popup-sentencia.component.scss +0 -5
  616. package/src/app/webcommon/popups/popup-sentencia/popup-sentencia.component.ts +0 -58
  617. package/src/app/webcommon/popups/popup-tablas-fuente/popup-tablas-fuente.component.html +0 -71
  618. package/src/app/webcommon/popups/popup-tablas-fuente/popup-tablas-fuente.component.scss +0 -0
  619. package/src/app/webcommon/popups/popup-tablas-fuente/popup-tablas-fuente.component.ts +0 -151
  620. package/src/app/webcommon/popups/punto-proceso-comp/punto-proceso-comp.component.html +0 -11
  621. package/src/app/webcommon/popups/punto-proceso-comp/punto-proceso-comp.component.scss +0 -0
  622. package/src/app/webcommon/popups/punto-proceso-comp/punto-proceso-comp.component.ts +0 -82
  623. package/src/app/webcommon/services/carguelinea.service.ts +0 -72
  624. package/src/app/webcommon/services/dashboard.service.ts +0 -258
  625. package/src/app/webcommon/services/ejecucionreporte.service.ts +0 -160
  626. package/src/app/webcommon/services/fechaUtils.service.ts +0 -117
  627. package/src/app/webcommon/services/fuentegeneral.service.ts +0 -74
  628. package/src/app/webcommon/services/homologacion.service.ts +0 -49
  629. package/src/app/webcommon/services/plantillas.service.ts +0 -165
  630. package/src/app/webcommon/services/reportes.service.ts +0 -133
  631. package/src/app/webcommon/webcommon.module.ts +0 -11
  632. package/src/environments/environment.prod.ts +0 -3
  633. package/src/environments/environment.ts +0 -25
  634. package/src/favicon.ico +0 -0
  635. package/src/index.html +0 -14
  636. package/src/main.ts +0 -11
  637. package/src/polyfills.ts +0 -53
  638. package/src/test.ts +0 -14
  639. package/tsconfig.app.json +0 -15
  640. package/tsconfig.json +0 -35
  641. package/tsconfig.spec.json +0 -18
@@ -0,0 +1,509 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import { TranslateModule } from '@ngx-translate/core';
3
+ import { GeneralModel } from '../../../seguridad/modelos/GeneralModel';
4
+ import { ConfirmationService, MessageService } from 'primeng/api';
5
+ import { ReporteFuenteModel } from '../../../seguridad/modelos/ReporteFuenteModel';
6
+ import { DialogModule } from 'primeng/dialog';
7
+ import { ConfirmPopupModule } from 'primeng/confirmpopup';
8
+ import { AccordionModule } from 'primeng/accordion';
9
+ import { TableModule } from 'primeng/table';
10
+ import { CommonModule, DatePipe } from '@angular/common';
11
+ import { FieldsetModule } from 'primeng/fieldset';
12
+ import { InputNumberModule } from 'primeng/inputnumber';
13
+ import { InputTextModule } from 'primeng/inputtext';
14
+ import { DropdownModule } from 'primeng/dropdown';
15
+ import { CalendarModule } from 'primeng/calendar';
16
+ import { RadioButtonModule } from 'primeng/radiobutton';
17
+ import { PopupSentenciaComponent } from '../popup-sentencia/popup-sentencia.component';
18
+ import { FormsModule } from '@angular/forms';
19
+ import { FloatLabelModule } from 'primeng/floatlabel';
20
+ import * as i0 from "@angular/core";
21
+ import * as i1 from "../../../shared/servicios/general.service";
22
+ import * as i2 from "../../services/ejecucionreporte.service";
23
+ import * as i3 from "primeng/api";
24
+ import * as i4 from "../../../core/servicios/toast.service";
25
+ import * as i5 from "../../../core/servicios/auth.service";
26
+ import * as i6 from "@ngx-translate/core";
27
+ import * as i7 from "../../../shared/servicios/cargar-archivos.service";
28
+ import * as i8 from "../../../core/servicios/utils.service";
29
+ import * as i9 from "../../../core/servicios/cargar-control-funcionalidad.service";
30
+ import * as i10 from "../../../shared/servicios/encriptado-basico.service";
31
+ import * as i11 from "../../pipes/reporte-fuente.pipe";
32
+ import * as i12 from "../../pipes/general.pipe";
33
+ import * as i13 from "@angular/common";
34
+ import * as i14 from "primeng/dialog";
35
+ import * as i15 from "primeng/confirmpopup";
36
+ import * as i16 from "primeng/accordion";
37
+ import * as i17 from "primeng/table";
38
+ import * as i18 from "primeng/fieldset";
39
+ import * as i19 from "primeng/inputnumber";
40
+ import * as i20 from "primeng/inputtext";
41
+ import * as i21 from "primeng/dropdown";
42
+ import * as i22 from "primeng/calendar";
43
+ import * as i23 from "primeng/button";
44
+ import * as i24 from "primeng/radiobutton";
45
+ import * as i25 from "@angular/forms";
46
+ import * as i26 from "primeng/floatlabel";
47
+ export class PopupReporteComponent {
48
+ generalService;
49
+ ejecucionReporteService;
50
+ confirmationService;
51
+ notificacionService;
52
+ authService;
53
+ translateService;
54
+ cargarArchivoService;
55
+ utilsService;
56
+ controlFuncionalidad;
57
+ encriptadoBasico;
58
+ reporteFuentePipe;
59
+ generalPipe;
60
+ cargarArchivo;
61
+ encriptadorArchivo;
62
+ mostrar = false;
63
+ aplicacion;
64
+ reporte = new ReporteFuenteModel;
65
+ entradasPuntoProceso = [];
66
+ regresar = new EventEmitter();
67
+ panel = 'entrada';
68
+ operacion;
69
+ listaEntrada = [];
70
+ listaSegundoPlano = [];
71
+ parametros = [];
72
+ elementoBorrar = {};
73
+ generaciones = [];
74
+ operaciones = [];
75
+ mostrarOtraSeleccion;
76
+ mostrarArchivosSoporte;
77
+ mostrarConsultaCasoError;
78
+ correo;
79
+ tipoReporte;
80
+ soporteBase;
81
+ tipoArchivo;
82
+ bloquearCorreo;
83
+ mapaTipoArchivos;
84
+ listadoArchivoSoporte = [];
85
+ mostrarPopupSentencia;
86
+ items;
87
+ vistaVisualizar;
88
+ paginator = { rows: 2, totalRecords: 0 };
89
+ mostrarParametros;
90
+ mostrarQueDeseaHacer;
91
+ columnas = [];
92
+ listaRegistro = [];
93
+ existeJasper = false;
94
+ constructor(generalService, ejecucionReporteService, confirmationService, notificacionService, authService, translateService, cargarArchivoService, utilsService, controlFuncionalidad, encriptadoBasico, reporteFuentePipe, generalPipe, cargarArchivo, encriptadorArchivo) {
95
+ this.generalService = generalService;
96
+ this.ejecucionReporteService = ejecucionReporteService;
97
+ this.confirmationService = confirmationService;
98
+ this.notificacionService = notificacionService;
99
+ this.authService = authService;
100
+ this.translateService = translateService;
101
+ this.cargarArchivoService = cargarArchivoService;
102
+ this.utilsService = utilsService;
103
+ this.controlFuncionalidad = controlFuncionalidad;
104
+ this.encriptadoBasico = encriptadoBasico;
105
+ this.reporteFuentePipe = reporteFuentePipe;
106
+ this.generalPipe = generalPipe;
107
+ this.cargarArchivo = cargarArchivo;
108
+ this.encriptadorArchivo = encriptadorArchivo;
109
+ }
110
+ ngOnInit() {
111
+ this.mapaTipoArchivos = this.reporteFuentePipe.MAPA_TIPO_ARCHIVOS;
112
+ this.aplicacion = this.authService.getTokenKey('aplicacion');
113
+ }
114
+ async mostrarPopup() {
115
+ this.panel = 'entrada';
116
+ this.mostrarQueDeseaHacer = false;
117
+ this.tipoReporte = null;
118
+ this.mostrarConsultaCasoError = this.validarControlFuncionalidad('reporte:versentenciaerror');
119
+ this.operacion = null;
120
+ this.elementoBorrar = {};
121
+ this.listaSegundoPlano = [];
122
+ this.listaRegistro = [];
123
+ this.columnas = [];
124
+ this.existeJasper = false;
125
+ if (this.reporte.llave) {
126
+ var resultado = await this.ejecucionReporteService.getDatosEjecucionReporte({ llave: this.reporte.llave }).toPromise();
127
+ this.reporte = resultado.reporte;
128
+ delete this.reporte['alias'];
129
+ this.cargarListaEntrada();
130
+ this.traerSegundoPlano();
131
+ this.cargarCorreo();
132
+ await this.validarExisteJasper();
133
+ await this.cargarGeneraciones();
134
+ this.cargarOperaciones();
135
+ }
136
+ }
137
+ cargarMenu() {
138
+ this.items = [
139
+ {
140
+ label: this.translateService.instant('ejecucion'),
141
+ icon: 'glyphicons glyphicons-plus-sign',
142
+ command: (event) => {
143
+ this.vistaVisualizar = 'entrada';
144
+ },
145
+ },
146
+ {
147
+ label: this.translateService.instant('segundoplano'),
148
+ icon: 'glyphicons glyphicons-file-minus',
149
+ command: (event) => {
150
+ this.vistaVisualizar = 'segundoplano';
151
+ },
152
+ visible: this.listaSegundoPlano.length > 0,
153
+ }
154
+ ];
155
+ }
156
+ async cargarGeneraciones() {
157
+ this.generaciones = [];
158
+ if (this.utilsService.isNotBlank(this.reporte.tituloParametro) && this.existeJasper) {
159
+ this.generaciones.push({ value: this.reporteFuentePipe.GENERACION_JASPERDINAMICO,
160
+ label: this.reporteFuentePipe.DESC_GENERACION_JASPERDINAMICO });
161
+ }
162
+ if (this.utilsService.isNotBlank(this.reporte.jasperFijo) && this.utilsService.isNotBlank(this.reporte.modoFijo)) {
163
+ this.generaciones.push({ value: this.reporteFuentePipe.GENERACION_JASPERFIJO,
164
+ label: this.reporteFuentePipe.DESC_GENERACION_JASPERFIJO });
165
+ }
166
+ if (this.utilsService.isNotBlank(this.reporte.archivoTodo) && this.utilsService.isNotBlank(this.reporte.hojaExcel)) {
167
+ this.generaciones.push({ value: this.reporteFuentePipe.GENERACION_EXCEL,
168
+ label: this.reporteFuentePipe.DESC_GENERACION_EXCEL });
169
+ }
170
+ if (this.utilsService.isNotBlank(this.reporte.archivoIndividual) || this.reporte.unicoArchivo == 'N') {
171
+ this.generaciones.push({ value: this.reporteFuentePipe.GENERACION_PLANTILLA,
172
+ label: this.reporteFuentePipe.DESC_GENERACION_PLANTILLA });
173
+ }
174
+ if (this.utilsService.isNotBlank(this.reporte.separador)) {
175
+ this.generaciones.push({ value: this.reporteFuentePipe.GENERACION_ARCHIVOPLANO,
176
+ label: this.reporteFuentePipe.DESC_GENERACION_ARCHIVOPLANO });
177
+ }
178
+ if (this.utilsService.isNotBlank(this.reporte.nombreTabla)) {
179
+ this.generaciones.push({ value: this.reporteFuentePipe.GENERACION_TABLA,
180
+ label: this.reporteFuentePipe.DESC_GENERACION_TABLA });
181
+ }
182
+ if (this.utilsService.isNotBlank(this.reporte.tagEncabezado) && this.utilsService.isNotBlank(this.reporte.estructuraRegistro)) {
183
+ this.generaciones.push({ value: this.reporteFuentePipe.GENERACION_XML,
184
+ label: this.reporteFuentePipe.DESC_GENERACION_XML });
185
+ }
186
+ if (this.utilsService.isNotBlank(this.reporte.archivoExcelColumnario) && this.utilsService.isNotBlank(this.reporte.hojaExcelColumnario)) {
187
+ this.generaciones.push({ value: this.reporteFuentePipe.GENERACION_COLUMNARIO,
188
+ label: this.reporteFuentePipe.DESC_GENERACION_COLUMNARIO });
189
+ }
190
+ }
191
+ async validarExisteJasper() {
192
+ try {
193
+ var data = await this.cargarArchivo.descargarArchivo(this.encriptadorArchivo.encriptar('reportes/' + this.reporte.llave + '.jrxml'), 'ruta_plantillas', this.aplicacion).toPromise();
194
+ if (data) {
195
+ this.existeJasper = true;
196
+ }
197
+ }
198
+ catch (error) {
199
+ this.existeJasper = false;
200
+ }
201
+ }
202
+ cargarOperaciones() {
203
+ this.bloquearCorreo = true;
204
+ this.operaciones = [];
205
+ if (this.tipoReporte) {
206
+ if (this.tipoReporte != this.reporteFuentePipe.GENERACION_TABLA) {
207
+ this.operaciones.push({ value: this.reporteFuentePipe.OPERACION_DESCARGAR,
208
+ label: this.reporteFuentePipe.DESC_OPERACION_DESCARGAR });
209
+ if (this.validarControlFuncionalidad('reporte:enviocorreo')) {
210
+ this.bloquearCorreo = false;
211
+ }
212
+ this.operaciones.push({ value: this.reporteFuentePipe.OPERACION_ENVIARCORREO,
213
+ label: this.reporteFuentePipe.DESC_OPERACION_ENVIARCORREO });
214
+ if (this.reporteFuentePipe.MOMENTOS_SEGUNDO_PLANO == this.reporte.momento) {
215
+ this.operaciones.push({ value: this.reporteFuentePipe.OPERACION_SEGUNDOPLANO,
216
+ label: this.reporteFuentePipe.DESC_OPERACION_SEGUNDOPLANO });
217
+ }
218
+ if ((this.tipoReporte == this.reporteFuentePipe.GENERACION_JASPERFIJO && this.reporte.modoFijo == 'P')
219
+ || this.tipoReporte == this.reporteFuentePipe.GENERACION_PLANTILLA && this.reporte.descargarFuente != 'S') {
220
+ if (this.reporte.archivoHtml && this.reporte.campoEmail) {
221
+ this.operaciones.push({ value: this.reporteFuentePipe.OPERACION_ENVIOMASIVO,
222
+ label: this.reporteFuentePipe.DESC_OPERACION_ENVIOMASIVO });
223
+ }
224
+ if (this.reporte.publicacion && this.reporte.campoPublica) {
225
+ this.operaciones.push({ value: this.reporteFuentePipe.OPERACION_PUBLICAR,
226
+ label: this.reporteFuentePipe.DESC_OPERACION_PUBLICAR });
227
+ }
228
+ if (this.reporte.archivoHtml && this.reporte.campoEmail && this.reporte.publicacion && this.reporte.campoPublica) {
229
+ this.operaciones.push({ value: this.reporteFuentePipe.OPERACION_CORREOPUBLICAR,
230
+ label: this.reporteFuentePipe.DESC_OPERACION_CORREOPUBLICAR });
231
+ }
232
+ }
233
+ //pte proceso externo
234
+ }
235
+ }
236
+ }
237
+ cambioValorLista(event, parametro) {
238
+ if (event.value) {
239
+ let lista = event.value.split(':');
240
+ if (parametro.unionDTO.tipoDato == 'N') {
241
+ parametro.unionDTO.valor = parseInt(lista[0]);
242
+ }
243
+ else {
244
+ parametro.unionDTO.valor = lista[0];
245
+ }
246
+ }
247
+ }
248
+ cambioSoporteBase(event) {
249
+ if (this.soporteBase == null) {
250
+ this.cargarOperaciones();
251
+ return;
252
+ }
253
+ this.generalService.queryForObject(new GeneralModel('ReporteSoporteDTO', null, false, { llaveTabla: this.soporteBase })).subscribe(archivoBase => {
254
+ if (archivoBase == null) {
255
+ return;
256
+ }
257
+ this.soporteBase = archivoBase.llaveTabla;
258
+ this.reporte.archivoIndividual = archivoBase.archivoIndividual;
259
+ this.cargarOperaciones();
260
+ });
261
+ }
262
+ cargarCorreo() {
263
+ this.generalService.queryForObject(new GeneralModel('UsuarioDTO', null, true, { login: this.authService.getTokenKey('usuario') })).subscribe(data => {
264
+ this.correo = data.email;
265
+ });
266
+ }
267
+ cargarListaEntrada() {
268
+ this.mostrarParametros = false;
269
+ if (this.entradasPuntoProceso.length > 0) {
270
+ this.parametros = this.entradasPuntoProceso;
271
+ this.parametros.forEach(element => {
272
+ if (element.unionDTO.solicitar == 'S') {
273
+ this.mostrarParametros = true;
274
+ }
275
+ if (element.unionDTO.tipoDato == 'F' && element.unionDTO.valor != null) {
276
+ element.unionDTO.valor = new Date(element.unionDTO.valor);
277
+ }
278
+ });
279
+ }
280
+ else {
281
+ this.ejecucionReporteService.obtenerListaEntradaEjecucion(this.reporte).subscribe(data => {
282
+ this.parametros = data;
283
+ this.parametros.forEach(element => {
284
+ if (element.unionDTO.solicitar == 'S') {
285
+ this.mostrarParametros = true;
286
+ }
287
+ if (element.unionDTO.tipoDato == 'F' && element.unionDTO.valor != null) {
288
+ element.unionDTO.valor = new Date(element.unionDTO.valor);
289
+ }
290
+ });
291
+ });
292
+ }
293
+ }
294
+ traerSegundoPlano() {
295
+ let usuario = this.authService.getTokenKey('usuario');
296
+ this.generalService.queryForList(new GeneralModel('EjecucionReporteDTO', null, false, {
297
+ adicionado: usuario,
298
+ reporteFuente: this.reporte.llave
299
+ })).subscribe(data => {
300
+ this.listaSegundoPlano = data;
301
+ this.paginator.totalRecords = this.listaSegundoPlano.length;
302
+ });
303
+ }
304
+ verSegundoPlano(event) {
305
+ this.elementoBorrar = event.data;
306
+ this.elementoBorrar.fechaAdicionado = this.elementoBorrar.fechaAdicionado ? new Date(this.elementoBorrar.fechaAdicionado) : null;
307
+ this.elementoBorrar.inicia = this.elementoBorrar.inicia ? new Date(this.elementoBorrar.inicia) : null;
308
+ this.elementoBorrar.termina = this.elementoBorrar.termina ? new Date(this.elementoBorrar.termina) : null;
309
+ this.operacion = 'historico';
310
+ this.panel = 'resultado';
311
+ }
312
+ eliminarSegundoPlano(event) {
313
+ this.confirmationService.confirm({
314
+ target: event.target,
315
+ message: this.generalPipe.MENSAJE_ELIMINAR_CONFIRMAR,
316
+ acceptLabel: this.generalPipe.SI_DESC,
317
+ header: this.translateService.instant('confirmar'),
318
+ accept: () => {
319
+ this.ejecucionReporteService.eliminarEjecucionReporte(this.elementoBorrar).subscribe(data => {
320
+ this.notificacionService.showInfo(this.generalPipe.MENSAJE_ELIMINAR);
321
+ this.regresarSegundoPlano();
322
+ this.traerSegundoPlano();
323
+ });
324
+ }
325
+ });
326
+ }
327
+ descargarArchivo() {
328
+ this.cargarArchivoService.descargarArchivo(this.encriptadoBasico.encriptar(this.elementoBorrar.archivo)).subscribe(blob => {
329
+ const a = document.createElement('a');
330
+ const objectUrl = URL.createObjectURL(blob);
331
+ a.href = objectUrl;
332
+ let partes = this.elementoBorrar.archivo.split(".");
333
+ let extension = partes[partes.length - 1];
334
+ a.download = this.utilsService.generarLlave() + '.' + extension;
335
+ a.click();
336
+ URL.revokeObjectURL(objectUrl);
337
+ });
338
+ }
339
+ cambioTipoReporte(event) {
340
+ this.mostrarQueDeseaHacer = true;
341
+ if (this.tipoReporte == this.reporteFuentePipe.GENERACION_PLANTILLA && this.reporte.unicoArchivo == 'N') {
342
+ this.mostrarArchivosSoporte = true;
343
+ this.generalService.queryForList(new GeneralModel('ReporteSoporteDTO', null, false, {
344
+ reporteFuente: this.reporte.llave,
345
+ tipo: 'S'
346
+ })).subscribe(data => {
347
+ this.listadoArchivoSoporte = data;
348
+ });
349
+ }
350
+ else {
351
+ this.mostrarArchivosSoporte = false;
352
+ this.listadoArchivoSoporte = [];
353
+ this.tipoArchivo = null;
354
+ this.operacion = null;
355
+ this.cargarOperaciones();
356
+ //this.descargarArchivo = null;
357
+ }
358
+ }
359
+ cambioTipoArchivo(event) {
360
+ this.cargarOperaciones();
361
+ }
362
+ regresarSegundoPlano() {
363
+ this.elementoBorrar = {};
364
+ this.panel = 'entrada';
365
+ this.operacion = null;
366
+ }
367
+ ocultar() {
368
+ this.tipoReporte = null;
369
+ this.mostrar = false;
370
+ this.regresar.emit(false);
371
+ }
372
+ validarControlFuncionalidad(valor) {
373
+ return this.controlFuncionalidad.getControlFuncionalidad(valor);
374
+ }
375
+ sentencia() {
376
+ this.mostrarPopupSentencia = true;
377
+ }
378
+ regresarSentencia(event) {
379
+ this.mostrarPopupSentencia = false;
380
+ }
381
+ enviarSegundoPlano() {
382
+ let listaEntrada = [];
383
+ this.parametros.forEach(element => {
384
+ listaEntrada.push(element.unionDTO);
385
+ });
386
+ this.ejecucionReporteService.enviarSegundoPlano({
387
+ reporte: this.reporte,
388
+ parametros: listaEntrada,
389
+ tipoReporte: this.tipoReporte,
390
+ operacion: this.operacion,
391
+ correo: this.correo,
392
+ }).subscribe(data => {
393
+ this.notificacionService.showInfo(data.mensaje);
394
+ });
395
+ }
396
+ descargarReporte() {
397
+ if ('F' == this.tipoReporte) {
398
+ this.reporte.tipoArchivo = this.tipoArchivo;
399
+ }
400
+ let listaEntrada = [];
401
+ this.parametros.forEach(element => {
402
+ listaEntrada.push(element.unionDTO);
403
+ });
404
+ this.ejecucionReporteService.descargarReporte({
405
+ reporte: this.reporte,
406
+ parametros: listaEntrada,
407
+ tipoReporte: this.tipoReporte,
408
+ operacion: this.operacion,
409
+ correo: this.correo,
410
+ endpointGeneradorReportes: ''
411
+ }).subscribe({
412
+ next: data => {
413
+ console.log(data);
414
+ this.notificacionService.showInfo(data.mensaje);
415
+ if (!data.archivo) {
416
+ return;
417
+ }
418
+ const decodedData = atob(data.archivo);
419
+ const byteNumbers = new Array(decodedData.length);
420
+ for (let i = 0; i < decodedData.length; i++) {
421
+ byteNumbers[i] = decodedData.charCodeAt(i);
422
+ }
423
+ const byteArray = new Uint8Array(byteNumbers);
424
+ // Crea un objeto Blob con los bytes decodificados y el tipo MIME del archivo
425
+ const blob = new Blob([byteArray], { type: data.mime });
426
+ // Crea una URL del objeto Blob
427
+ const url = URL.createObjectURL(blob);
428
+ // Crea un enlace de descarga y haz clic en él para iniciar la descarga
429
+ const link = document.createElement('a');
430
+ link.href = url;
431
+ link.download = data.nombreArchivo + data.extension;
432
+ document.body.appendChild(link);
433
+ link.click();
434
+ // Limpia la URL creada
435
+ URL.revokeObjectURL(url);
436
+ }
437
+ });
438
+ }
439
+ descargarReporteSinHilo() {
440
+ let listaEntrada = [];
441
+ this.parametros.forEach(element => {
442
+ listaEntrada.push(element.unionDTO);
443
+ });
444
+ this.ejecucionReporteService.descargarReporte({
445
+ next: data => {
446
+ this.notificacionService.showInfo(data.mensaje);
447
+ const decodedData = atob(data.archivo);
448
+ const byteNumbers = new Array(decodedData.length);
449
+ for (let i = 0; i < decodedData.length; i++) {
450
+ byteNumbers[i] = decodedData.charCodeAt(i);
451
+ }
452
+ const byteArray = new Uint8Array(byteNumbers);
453
+ // Crea un objeto Blob con los bytes decodificados y el tipo MIME del archivo
454
+ const blob = new Blob([byteArray], { type: data.mime });
455
+ // Crea una URL del objeto Blob
456
+ const url = URL.createObjectURL(blob);
457
+ // Crea un enlace de descarga y haz clic en él para iniciar la descarga
458
+ const link = document.createElement('a');
459
+ link.href = url;
460
+ link.download = data.nombreArchivo + '.' + data.extension;
461
+ document.body.appendChild(link);
462
+ link.click();
463
+ // Limpia la URL creada
464
+ URL.revokeObjectURL(url);
465
+ },
466
+ error: err => {
467
+ this.notificacionService.showError(JSON.stringify(err.error.mensajeEtiqueta));
468
+ }
469
+ });
470
+ }
471
+ generarTabla() {
472
+ this.panel = 'resultado';
473
+ let listaEntrada = [];
474
+ this.columnas = [];
475
+ this.parametros.forEach(element => {
476
+ listaEntrada.push(element.unionDTO);
477
+ });
478
+ this.ejecucionReporteService.generarTabla({ reporte: this.reporte, parametros: listaEntrada }).subscribe(data => {
479
+ var columna;
480
+ data.columnas.forEach(element => {
481
+ columna = {
482
+ field: element.nombre.toLowerCase(),
483
+ header: element.nombre,
484
+ width: 300,
485
+ canOrder: true,
486
+ };
487
+ this.columnas.push(columna);
488
+ });
489
+ this.listaRegistro = data.listaRegistro;
490
+ });
491
+ }
492
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: PopupReporteComponent, deps: [{ token: i1.GeneralService }, { token: i2.EjecucionReporteService }, { token: i3.ConfirmationService }, { token: i4.ToastService }, { token: i5.AuthService }, { token: i6.TranslateService }, { token: i7.CargarArchivosService }, { token: i8.UtilsService }, { token: i9.CargarControlFuncionalidadService }, { token: i10.EncriptadoBasicoService }, { token: i11.ReporteFuentePipe }, { token: i12.GeneralPipe }, { token: i7.CargarArchivosService }, { token: i10.EncriptadoBasicoService }], target: i0.ɵɵFactoryTarget.Component });
493
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.4", type: PopupReporteComponent, isStandalone: true, selector: "app-popup-reporte", inputs: { mostrar: "mostrar", aplicacion: "aplicacion", reporte: "reporte", entradasPuntoProceso: "entradasPuntoProceso" }, outputs: { regresar: "regresar" }, providers: [MessageService, ConfirmationService], ngImport: i0, template: "<p-confirmPopup></p-confirmPopup>\n<p-dialog id='popupReporte' header=\"{{'reportesgenerales' | translate}}\" [(visible)]=\"mostrar\" (onShow)=\"mostrarPopup()\"\n [breakpoints]=\"{'960px': '75vw', '640px': '100vw'}\" [style]=\"{width: '50vw'}\" (onHide)=\"ocultar()\" [modal]=\"true\">\n\n <div *ngIf=\"panel == 'entrada'\">\n <!--Segundo plano-->\n <p-accordion [multiple]=\"true\">\n <p-accordionTab [selected]=\"true\" [header]=\"'segundoplano' | translate\" *ngIf=\"listaSegundoPlano.length > 0\">\n <p-table [value]=\"listaSegundoPlano\" responsiveLayout=\"scroll\" [scrollable]=\"true\" selectionMode=\"single\"\n [rows]=\"paginator.rows\" [totalRecords]=\"paginator.totalRecords\"\n [paginator]=\"paginator.totalRecords > paginator.rows\" (onRowSelect)=\"verSegundoPlano($event)\">\n <ng-template pTemplate=\"header\">\n\n <tr class=\"fondoTablaPincipal\">\n <th>{{'estado' | translate }} </th>\n <th>{{'fechainicial' | translate }} </th>\n </tr>\n <th>\n </ng-template>\n <ng-template pTemplate=\"body\" let-entrada>\n <tr [pSelectableRow]=\"entrada\">\n <td>{{entrada.nombreEstado}}</td>\n <td>{{entrada.inicia | date: 'dd/MM/yyyy h:mm a'}}</td>\n </tr>\n </ng-template>\n </p-table>\n </p-accordionTab>\n </p-accordion>\n <p-fieldset class=\"mt-0\" *ngIf=\"mostrarParametros\">\n <ng-template pTemplate=\"header\">\n <div>\n <span class=\"glyphicons glyphicons-book\" style=\"color:var(--color-400)\"></span>\n <span>{{'entrada' | translate}}</span>\n </div>\n </ng-template>\n <p-table [value]=\"parametros\" >\n <ng-template pTemplate=\"body\" let-parametro>\n <tr [pSelectableRow]=\"parametro\">\n <!--<td>\n <label *ngIf=\"parametro.unionDTO.solicitar == 'S'\">{{ parametro.unionDTO.descripcion }}</label>\n </td>-->\n <td *ngIf=\"parametro.unionDTO.solicitar == 'S'\">\n <p-floatLabel>\n <input pInputText [(ngModel)]=\"parametro.unionDTO.valor\"\n *ngIf=\"(parametro.unionDTO.tipoDato == 'T' || parametro.unionDTO.tipoDato == 'E') && parametro.unionDTO.tipo == 'D'\" />\n\n <input pInputText [(ngModel)]=\"parametro.unionDTO.valor\"\n *ngIf=\"parametro.unionDTO.tipoDato == 'U' && parametro.unionDTO.tipo == 'D'\" />\n\n\n <p-inputNumber [(ngModel)]=\"parametro.unionDTO.valor\"\n *ngIf=\"parametro.unionDTO.tipoDato == 'N' && parametro.unionDTO.tipo == 'D'\">\n </p-inputNumber>\n\n <p-inputNumber [(ngModel)]=\"parametro.unionDTO.valor\" mode=\"decimal\" [minFractionDigits]=\"2\"\n [maxFractionDigits]=\"16\"\n *ngIf=\"parametro.unionDTO.tipoDato == 'B' && parametro.unionDTO.tipo == 'D'\">\n </p-inputNumber>\n\n <p-dropdown [options]=\"parametro.lista\" [autoDisplayFirst]=\"false\" appendTo=\"body\"\n (onChange)=\"cambioValorLista($event, parametro)\" [(ngModel)]=\"parametro.unionDTO.llaveLista\"\n optionLabel=\"label\" optionValue=\"value\" *ngIf=\"parametro.unionDTO.tipo == 'L'\">\n </p-dropdown>\n\n <p-calendar type=\"text\" [(ngModel)]=\"parametro.unionDTO.valor\" dateFormat=\"dd/mm/yy\" appendTo=\"body\"\n *ngIf=\"parametro.unionDTO.tipoDato == 'F' && parametro.unionDTO.tipo == 'D'\"></p-calendar>\n\n <label *ngIf=\"parametro.unionDTO.solicitar == 'S'\">{{ parametro.unionDTO.descripcion }}</label>\n </p-floatLabel>\n </td>\n </tr>\n </ng-template>\n </p-table>\n </p-fieldset>\n <p-fieldset class=\"mt-0\" *ngIf=\"generaciones.length > 0\">\n <ng-template pTemplate=\"header\">\n <div>\n <span class=\"glyphicons glyphicons-book\" style=\"color:var(--color-400)\"></span>\n <span>{{'generar' | translate}}</span>\n </div>\n </ng-template>\n <div class=\"col-md-12\">\n <div class=\"p-fluid p-formgrid grid text-xs\">\n <div class=\"field col-12 md:col-6 lg:col-3 align-items-center mb-0\" *ngFor=\"let valor of generaciones\">\n <div class=\"field-radiobutton\">\n <p-radioButton (onClick)=\"cambioTipoReporte($event)\" [inputId]=\"valor.value\" name=\"tipoReporte\"\n [value]=\"valor.value\" [(ngModel)]=\"tipoReporte\" />\n <label [for]=\"valor.value\" class=\"ml-2\">\n {{ valor.label }}\n </label>\n </div>\n </div>\n </div>\n </div>\n </p-fieldset>\n\n <p-fieldset class=\"mt-0\" *ngIf=\"'A' != tipoReporte && mostrarQueDeseaHacer\" >\n <ng-template pTemplate=\"header\">\n <div>\n <span class=\"glyphicons glyphicons-book\" style=\"color:var(--color-400)\"></span>\n <span>\u00BFQu\u00E9 desea hacer?</span>\n </div>\n </ng-template>\n <label *ngIf=\"tipoReporte && 'F' == tipoReporte\">{{'seleccionetipoarchivodeseagenerar' | translate}}</label>\n\n <div *ngIf=\"tipoReporte && 'F' == tipoReporte\">\n <div class=\"col-md-12\">\n <div class=\"p-fluid p-formgrid grid text-xs\">\n <div class=\"field col-12 md:col-6 lg:col-3 align-items-center mb-0\" *ngFor=\"let valor of mapaTipoArchivos\">\n <div class=\"field-radiobutton\">\n <p-radioButton (onClick)=\"cambioTipoArchivo($event)\" [inputId]=\"valor.codigo\" name=\"tipoArchivo\"\n [value]=\"valor.codigo\" [(ngModel)]=\"tipoArchivo\" />\n <label [for]=\"valor.codigo\" class=\"ml-2\">\n {{ valor.nombre }}\n </label>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div *ngIf=\"mostrarArchivosSoporte\">\n <div class=\"Detallereporte\">\n <div class=\"p-fluid p-formgrid grid\">\n <div class=\"field col-12 md:col-12\">\n <p-floatLabel>\n <p-dropdown [options]=\"listadoArchivoSoporte\" [autoDisplayFirst]=\"false\" optionLabel=\"descripcion\" appendTo=\"body\"\n optionValue=\"llaveTabla\" [(ngModel)]=\"soporteBase\" (onChange)=\"cambioSoporteBase($event)\"></p-dropdown>\n <label>Soporte Base:</label>\n </p-floatLabel>\n </div>\n </div>\n </div>\n </div>\n\n <div *ngIf=\"tipoReporte == 'F' && tipoArchivo || tipoReporte != 'F' \">\n <div class=\"col-md-12\">\n <div class=\"p-fluid p-formgrid grid text-xs\">\n <div class=\"field col-12 md:col-6 lg:col-3 align-items-center mb-0\" *ngFor=\"let valor of operaciones\">\n <div class=\"field-radiobutton\">\n <p-radioButton [inputId]=\"valor.value\" name=\"operacion\" [value]=\"valor.value\"\n [(ngModel)]=\"operacion\" />\n <label [for]=\"valor.value\" class=\"ml-2\">\n {{ valor.label }}\n </label>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div *ngIf=\"operacion == 'E'\">\n <p-floatLabel>\n <input pInputText [(ngModel)]=\"correo\" type=\"text\" [disabled]=\"bloquearCorreo\" />\n <label>{{'correo' | translate}}</label>\n </p-floatLabel>\n </div>\n </p-fieldset>\n \n\n <div class=\"flex justify-content-end\">\n <button pButton pRipple class=\"m-2 mt-4 p-button p-button-outlined background-100\"\n *ngIf=\"validarControlFuncionalidad('ejecrepo:sentencia')\" label=\"Ver sentencia\" icon=\"glyphicons glyphicons-eye-open\"\n (click)=\"sentencia()\"></button>\n <button pButton pRipple class=\"m-2 mt-4 p-button-raised\" *ngIf=\"operacion == 'E'\" icon=\"glyphicons glyphicons-envelope\"\n label=\"{{'link_enviar' | translate}}\" (click)=\"enviarSegundoPlano()\"></button>\n <button pButton pRipple class=\"m-2 mt-4 p-button-raised\" *ngIf=\"operacion == 'D' && reporte.momento != 'D'\" icon=\"glyphicons glyphicons-check\"\n label=\"{{'generar' | translate}}\" (click)=\"descargarReporte()\"></button>\n <button pButton pRipple class=\"m-2 mt-4 p-button-raised\" *ngIf=\"operacion == 'D' && reporte.momento == 'D'\" icon=\"glyphicons glyphicons-check\"\n label=\"{{'generar' | translate}}\" (click)=\"descargarReporteSinHilo()\"></button>\n <button pButton pRipple class=\"m-2 mt-4 p-button-raised\" *ngIf=\"tipoReporte == 'A'\" icon=\"glyphicons glyphicons-check\"\n label=\"{{'generar' | translate}}\" (click)=\"generarTabla()\"></button>\n <!--pte proceso externo-->\n <button pButton pRipple class=\"m-2 mt-4 p-button-raised\" *ngIf=\"operacion == 'M' || operacion == 'MP'\" icon=\"glyphicons glyphicons-envelope\"\n label=\"{{'link_enviar' | translate}}\" (click)=\"enviarSegundoPlano()\"></button>\n <button pButton pRipple class=\"m-2 mt-4 p-button-raised\" *ngIf=\"operacion == 'P'\" icon=\"glyphicons glyphicons-folder-open\"\n label=\"{{'link_publicar' | translate}}\" (click)=\"enviarSegundoPlano()\"></button>\n <button pButton pRipple class=\"m-2 mt-4 p-button-raised\" *ngIf=\"operacion =='S'\" icon=\"glyphicons glyphicons-check\"\n label=\"{{'link_generar' | translate}}\" (click)=\"enviarSegundoPlano()\"></button>\n\n </div>\n </div>\n <div *ngIf=\"panel == 'resultado'\">\n <div *ngIf=\"operacion == 'historico'\">\n <div class=\"flex justify-content-between align-items-center mt-2 mb-2\">\n <h4 class=\"text-base mt-2 ml-2\">{{'detalle' | translate}} {{'segundoplano' | translate}}</h4>\n <button pButton pRipple icon=\"pi pi-chevron-left\" class=\"p-button-text font-semibold flex-shrink-0 ml-4\"\n (click)=\"regresarSegundoPlano()\" label=\"{{'link_regresar' | translate}}\" >\n </button>\n </div>\n <div class=\" Inputgroup\">\n <div class=\"col-md-12\">\n <div class=\"p-fluid p-formgrid grid\">\n <div class=\"field col-12 md:col-4 lg:col-4\">\n <p-floatLabel>\n <p-calendar type=\"text\" [(ngModel)]=\"elementoBorrar.inicia\" [disabled]=\"true\" appendTo=\"body\"\n [showTime]=\"true\" [showSeconds]=\"true\" dateFormat=\"dd/mm/yy\"></p-calendar>\n <label>{{('fechainicial') | translate}}</label>\n </p-floatLabel>\n </div>\n\n <div class=\"field col-12 md:col-4 lg:col-4\">\n <p-floatLabel>\n <p-calendar type=\"text\" [(ngModel)]=\"elementoBorrar.termina\" [disabled]=\"true\" appendTo=\"body\"\n [showTime]=\"true\" [showSeconds]=\"true\" dateFormat=\"dd/mm/yy\"></p-calendar>\n <label>{{('fechafinal') | translate}}</label>\n </p-floatLabel>\n </div>\n\n <div class=\"field col-12 md:col-4 lg:col-4\">\n <p-floatLabel>\n <input pInputText type=\"text\" [readonly]=\"false\"\n [(ngModel)]=\"elementoBorrar.nombreEstado\" [disabled]=\"true\" />\n <label>{{('estado') | translate}}</label>\n </p-floatLabel>\n </div>\n\n <div class=\"field col-12 md:col-12 lg:col-12\" *ngIf=\"elementoBorrar.estado == 'E'\">\n <label>{{('mensaje') | translate}}</label>\n <textarea class=\"min-w-full p-inputtextarea p-inputtext p-component p-element \"\n rows=\"5\" cols=\"30\" pInputTextarea [(ngModel)]=\"elementoBorrar.archivo\"\n [disabled]=\"true\"></textarea>\n </div>\n </div>\n <div class=\"flex justify-content-end\">\n <button pButton pRipple class=\"ml-2 p-button p-button-raised\"\n *ngIf=\"elementoBorrar.estado == 'T'\" icon=\"pi pi-download\"\n label=\"{{'link_descargar' | translate}}\" (click)=\"descargarArchivo()\">\n </button>\n <button pButton pRipple class=\"ml-2 p-button-outlined\" icon=\"glyphicons glyphicons-bin\"\n label=\"{{'link_eliminar' | translate}}\" (click)=\"eliminarSegundoPlano($event)\">\n </button>\n </div>\n </div>\n </div>\n </div>\n\n <div *ngIf=\"tipoReporte == 'A'\" >\n <p-table [value]=\"listaRegistro\" responsiveLayout=\"scroll\" [scrollable]=\"true\"\n [rows]=\"10\" [totalRecords]=\"listaRegistro.length\" [paginator]=\"listaRegistro.length > 10\" >\n <ng-template pTemplate=\"header\">\n <tr class=\"fondoTablaPincipal\">\n <th [style.width.px]=\"col.width || 200\" *ngFor=\"let col of columnas\">{{ col.header }}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\" let-entrada>\n <tr>\n <td [style.width.px]=\"col.width || 200\" *ngFor=\"let col of columnas\">{{ entrada[col.field] }}</td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"emptymessage\">\n <p class=\"p-3 font-medium emptymessage\">\n {{'mensajetablavacia' | translate}}\n </p>\n </ng-template>\n </p-table>\n </div>\n </div>\n\n</p-dialog>\n<app-popup-sentencia [reporte]=\"reporte\" [parametros]=\"parametros\" [mostrarPopup]=\"mostrarPopupSentencia\"\n (regresar)=\"regresarSentencia($event)\"></app-popup-sentencia>", styles: [":host ::ng-deep .p-button{width:auto}:host ::ng-deep .min-w-full2{min-height:150px;min-width:100%}h4{color:var(--color-500)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i13.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i13.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i13.DatePipe, name: "date" }, { kind: "ngmodule", type: DialogModule }, { kind: "component", type: i14.Dialog, selector: "p-dialog", inputs: ["header", "draggable", "resizable", "positionLeft", "positionTop", "contentStyle", "contentStyleClass", "modal", "closeOnEscape", "dismissableMask", "rtl", "closable", "responsive", "appendTo", "breakpoints", "styleClass", "maskStyleClass", "maskStyle", "showHeader", "breakpoint", "blockScroll", "autoZIndex", "baseZIndex", "minX", "minY", "focusOnShow", "maximizable", "keepInViewport", "focusTrap", "transitionOptions", "closeIcon", "closeAriaLabel", "closeTabindex", "minimizeIcon", "maximizeIcon", "visible", "style", "position"], outputs: ["onShow", "onHide", "visibleChange", "onResizeInit", "onResizeEnd", "onDragEnd", "onMaximize"] }, { kind: "directive", type: i3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "ngmodule", type: ConfirmPopupModule }, { kind: "component", type: i15.ConfirmPopup, selector: "p-confirmPopup", inputs: ["key", "defaultFocus", "showTransitionOptions", "hideTransitionOptions", "autoZIndex", "baseZIndex", "style", "styleClass", "visible"] }, { kind: "ngmodule", type: AccordionModule }, { kind: "component", type: i16.Accordion, selector: "p-accordion", inputs: ["multiple", "style", "styleClass", "expandIcon", "collapseIcon", "activeIndex", "selectOnFocus", "headerAriaLevel"], outputs: ["onClose", "onOpen", "activeIndexChange"] }, { kind: "component", type: i16.AccordionTab, selector: "p-accordionTab", inputs: ["id", "header", "headerStyle", "tabStyle", "contentStyle", "tabStyleClass", "headerStyleClass", "contentStyleClass", "disabled", "cache", "transitionOptions", "iconPos", "selected", "headerAriaLevel"], outputs: ["selectedChange"] }, { kind: "ngmodule", type: TableModule }, { kind: "component", type: i17.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "groupRowsByOrder", "responsiveLayout", "breakpoint", "paginatorLocale", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll", "virtualRowHeight"], outputs: ["contextMenuSelectionChange", "selectAllChange", "selectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i17.SelectableRow, selector: "[pSelectableRow]", inputs: ["pSelectableRow", "pSelectableRowIndex", "pSelectableRowDisabled"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: FieldsetModule }, { kind: "component", type: i18.Fieldset, selector: "p-fieldset", inputs: ["legend", "toggleable", "collapsed", "style", "styleClass", "transitionOptions"], outputs: ["collapsedChange", "onBeforeToggle", "onAfterToggle"] }, { kind: "ngmodule", type: InputNumberModule }, { kind: "component", type: i19.InputNumber, selector: "p-inputNumber", inputs: ["showButtons", "format", "buttonLayout", "inputId", "styleClass", "style", "placeholder", "size", "maxlength", "tabindex", "title", "ariaLabelledBy", "ariaLabel", "ariaRequired", "name", "required", "autocomplete", "min", "max", "incrementButtonClass", "decrementButtonClass", "incrementButtonIcon", "decrementButtonIcon", "readonly", "step", "allowEmpty", "locale", "localeMatcher", "mode", "currency", "currencyDisplay", "useGrouping", "variant", "minFractionDigits", "maxFractionDigits", "prefix", "suffix", "inputStyle", "inputStyleClass", "showClear", "autofocus", "disabled"], outputs: ["onInput", "onFocus", "onBlur", "onKeyDown", "onClear"] }, { kind: "ngmodule", type: InputTextModule }, { kind: "directive", type: i20.InputText, selector: "[pInputText]", inputs: ["variant"] }, { kind: "ngmodule", type: DropdownModule }, { kind: "component", type: i21.Dropdown, selector: "p-dropdown", inputs: ["id", "scrollHeight", "filter", "name", "style", "panelStyle", "styleClass", "panelStyleClass", "readonly", "required", "editable", "appendTo", "tabindex", "placeholder", "loadingIcon", "filterPlaceholder", "filterLocale", "variant", "inputId", "dataKey", "filterBy", "filterFields", "autofocus", "resetFilterOnHide", "checkmark", "dropdownIcon", "loading", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "autoDisplayFirst", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "maxlength", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "focusOnHover", "selectOnFocus", "autoOptionFocus", "autofocusFilter", "disabled", "itemSize", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "filterValue", "options"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "ngmodule", type: CalendarModule }, { kind: "component", type: i22.Calendar, selector: "p-calendar", inputs: ["iconDisplay", "style", "styleClass", "inputStyle", "inputId", "name", "inputStyleClass", "placeholder", "ariaLabelledBy", "ariaLabel", "iconAriaLabel", "disabled", "dateFormat", "multipleSeparator", "rangeSeparator", "inline", "showOtherMonths", "selectOtherMonths", "showIcon", "icon", "appendTo", "readonlyInput", "shortYearCutoff", "monthNavigator", "yearNavigator", "hourFormat", "timeOnly", "stepYearPicker", "stepHour", "stepMinute", "stepSecond", "showSeconds", "required", "showOnFocus", "showWeek", "startWeekFromFirstDayOfYear", "showClear", "dataType", "selectionMode", "maxDateCount", "showButtonBar", "todayButtonStyleClass", "clearButtonStyleClass", "autofocus", "autoZIndex", "baseZIndex", "panelStyleClass", "panelStyle", "keepInvalid", "hideOnDateTimeSelect", "touchUI", "timeSeparator", "focusTrap", "showTransitionOptions", "hideTransitionOptions", "tabindex", "variant", "minDate", "maxDate", "disabledDates", "disabledDays", "yearRange", "showTime", "responsiveOptions", "numberOfMonths", "firstDayOfWeek", "locale", "view", "defaultDate"], outputs: ["onFocus", "onBlur", "onClose", "onSelect", "onClear", "onInput", "onTodayClick", "onClearClick", "onMonthChange", "onYearChange", "onClickOutside", "onShow"] }, { kind: "directive", type: i23.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading", "severity", "raised", "rounded", "text", "outlined", "size", "plain"] }, { kind: "ngmodule", type: RadioButtonModule }, { kind: "component", type: i24.RadioButton, selector: "p-radioButton", inputs: ["value", "formControlName", "name", "disabled", "label", "variant", "tabindex", "inputId", "ariaLabelledBy", "ariaLabel", "style", "styleClass", "labelStyleClass", "autofocus"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "component", type: PopupSentenciaComponent, selector: "app-popup-sentencia", inputs: ["reporte", "parametros", "mostrarPopup"], outputs: ["regresar"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i25.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i25.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i25.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: FloatLabelModule }, { kind: "component", type: i26.FloatLabel, selector: "p-floatLabel" }] });
494
+ }
495
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: PopupReporteComponent, decorators: [{
496
+ type: Component,
497
+ args: [{ selector: 'app-popup-reporte', imports: [CommonModule, DialogModule, ConfirmPopupModule, AccordionModule, TableModule, TranslateModule, DatePipe, FieldsetModule, InputNumberModule, InputTextModule, DropdownModule, CalendarModule, RadioButtonModule, PopupSentenciaComponent, FormsModule, FloatLabelModule], standalone: true, providers: [MessageService, ConfirmationService], template: "<p-confirmPopup></p-confirmPopup>\n<p-dialog id='popupReporte' header=\"{{'reportesgenerales' | translate}}\" [(visible)]=\"mostrar\" (onShow)=\"mostrarPopup()\"\n [breakpoints]=\"{'960px': '75vw', '640px': '100vw'}\" [style]=\"{width: '50vw'}\" (onHide)=\"ocultar()\" [modal]=\"true\">\n\n <div *ngIf=\"panel == 'entrada'\">\n <!--Segundo plano-->\n <p-accordion [multiple]=\"true\">\n <p-accordionTab [selected]=\"true\" [header]=\"'segundoplano' | translate\" *ngIf=\"listaSegundoPlano.length > 0\">\n <p-table [value]=\"listaSegundoPlano\" responsiveLayout=\"scroll\" [scrollable]=\"true\" selectionMode=\"single\"\n [rows]=\"paginator.rows\" [totalRecords]=\"paginator.totalRecords\"\n [paginator]=\"paginator.totalRecords > paginator.rows\" (onRowSelect)=\"verSegundoPlano($event)\">\n <ng-template pTemplate=\"header\">\n\n <tr class=\"fondoTablaPincipal\">\n <th>{{'estado' | translate }} </th>\n <th>{{'fechainicial' | translate }} </th>\n </tr>\n <th>\n </ng-template>\n <ng-template pTemplate=\"body\" let-entrada>\n <tr [pSelectableRow]=\"entrada\">\n <td>{{entrada.nombreEstado}}</td>\n <td>{{entrada.inicia | date: 'dd/MM/yyyy h:mm a'}}</td>\n </tr>\n </ng-template>\n </p-table>\n </p-accordionTab>\n </p-accordion>\n <p-fieldset class=\"mt-0\" *ngIf=\"mostrarParametros\">\n <ng-template pTemplate=\"header\">\n <div>\n <span class=\"glyphicons glyphicons-book\" style=\"color:var(--color-400)\"></span>\n <span>{{'entrada' | translate}}</span>\n </div>\n </ng-template>\n <p-table [value]=\"parametros\" >\n <ng-template pTemplate=\"body\" let-parametro>\n <tr [pSelectableRow]=\"parametro\">\n <!--<td>\n <label *ngIf=\"parametro.unionDTO.solicitar == 'S'\">{{ parametro.unionDTO.descripcion }}</label>\n </td>-->\n <td *ngIf=\"parametro.unionDTO.solicitar == 'S'\">\n <p-floatLabel>\n <input pInputText [(ngModel)]=\"parametro.unionDTO.valor\"\n *ngIf=\"(parametro.unionDTO.tipoDato == 'T' || parametro.unionDTO.tipoDato == 'E') && parametro.unionDTO.tipo == 'D'\" />\n\n <input pInputText [(ngModel)]=\"parametro.unionDTO.valor\"\n *ngIf=\"parametro.unionDTO.tipoDato == 'U' && parametro.unionDTO.tipo == 'D'\" />\n\n\n <p-inputNumber [(ngModel)]=\"parametro.unionDTO.valor\"\n *ngIf=\"parametro.unionDTO.tipoDato == 'N' && parametro.unionDTO.tipo == 'D'\">\n </p-inputNumber>\n\n <p-inputNumber [(ngModel)]=\"parametro.unionDTO.valor\" mode=\"decimal\" [minFractionDigits]=\"2\"\n [maxFractionDigits]=\"16\"\n *ngIf=\"parametro.unionDTO.tipoDato == 'B' && parametro.unionDTO.tipo == 'D'\">\n </p-inputNumber>\n\n <p-dropdown [options]=\"parametro.lista\" [autoDisplayFirst]=\"false\" appendTo=\"body\"\n (onChange)=\"cambioValorLista($event, parametro)\" [(ngModel)]=\"parametro.unionDTO.llaveLista\"\n optionLabel=\"label\" optionValue=\"value\" *ngIf=\"parametro.unionDTO.tipo == 'L'\">\n </p-dropdown>\n\n <p-calendar type=\"text\" [(ngModel)]=\"parametro.unionDTO.valor\" dateFormat=\"dd/mm/yy\" appendTo=\"body\"\n *ngIf=\"parametro.unionDTO.tipoDato == 'F' && parametro.unionDTO.tipo == 'D'\"></p-calendar>\n\n <label *ngIf=\"parametro.unionDTO.solicitar == 'S'\">{{ parametro.unionDTO.descripcion }}</label>\n </p-floatLabel>\n </td>\n </tr>\n </ng-template>\n </p-table>\n </p-fieldset>\n <p-fieldset class=\"mt-0\" *ngIf=\"generaciones.length > 0\">\n <ng-template pTemplate=\"header\">\n <div>\n <span class=\"glyphicons glyphicons-book\" style=\"color:var(--color-400)\"></span>\n <span>{{'generar' | translate}}</span>\n </div>\n </ng-template>\n <div class=\"col-md-12\">\n <div class=\"p-fluid p-formgrid grid text-xs\">\n <div class=\"field col-12 md:col-6 lg:col-3 align-items-center mb-0\" *ngFor=\"let valor of generaciones\">\n <div class=\"field-radiobutton\">\n <p-radioButton (onClick)=\"cambioTipoReporte($event)\" [inputId]=\"valor.value\" name=\"tipoReporte\"\n [value]=\"valor.value\" [(ngModel)]=\"tipoReporte\" />\n <label [for]=\"valor.value\" class=\"ml-2\">\n {{ valor.label }}\n </label>\n </div>\n </div>\n </div>\n </div>\n </p-fieldset>\n\n <p-fieldset class=\"mt-0\" *ngIf=\"'A' != tipoReporte && mostrarQueDeseaHacer\" >\n <ng-template pTemplate=\"header\">\n <div>\n <span class=\"glyphicons glyphicons-book\" style=\"color:var(--color-400)\"></span>\n <span>\u00BFQu\u00E9 desea hacer?</span>\n </div>\n </ng-template>\n <label *ngIf=\"tipoReporte && 'F' == tipoReporte\">{{'seleccionetipoarchivodeseagenerar' | translate}}</label>\n\n <div *ngIf=\"tipoReporte && 'F' == tipoReporte\">\n <div class=\"col-md-12\">\n <div class=\"p-fluid p-formgrid grid text-xs\">\n <div class=\"field col-12 md:col-6 lg:col-3 align-items-center mb-0\" *ngFor=\"let valor of mapaTipoArchivos\">\n <div class=\"field-radiobutton\">\n <p-radioButton (onClick)=\"cambioTipoArchivo($event)\" [inputId]=\"valor.codigo\" name=\"tipoArchivo\"\n [value]=\"valor.codigo\" [(ngModel)]=\"tipoArchivo\" />\n <label [for]=\"valor.codigo\" class=\"ml-2\">\n {{ valor.nombre }}\n </label>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div *ngIf=\"mostrarArchivosSoporte\">\n <div class=\"Detallereporte\">\n <div class=\"p-fluid p-formgrid grid\">\n <div class=\"field col-12 md:col-12\">\n <p-floatLabel>\n <p-dropdown [options]=\"listadoArchivoSoporte\" [autoDisplayFirst]=\"false\" optionLabel=\"descripcion\" appendTo=\"body\"\n optionValue=\"llaveTabla\" [(ngModel)]=\"soporteBase\" (onChange)=\"cambioSoporteBase($event)\"></p-dropdown>\n <label>Soporte Base:</label>\n </p-floatLabel>\n </div>\n </div>\n </div>\n </div>\n\n <div *ngIf=\"tipoReporte == 'F' && tipoArchivo || tipoReporte != 'F' \">\n <div class=\"col-md-12\">\n <div class=\"p-fluid p-formgrid grid text-xs\">\n <div class=\"field col-12 md:col-6 lg:col-3 align-items-center mb-0\" *ngFor=\"let valor of operaciones\">\n <div class=\"field-radiobutton\">\n <p-radioButton [inputId]=\"valor.value\" name=\"operacion\" [value]=\"valor.value\"\n [(ngModel)]=\"operacion\" />\n <label [for]=\"valor.value\" class=\"ml-2\">\n {{ valor.label }}\n </label>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div *ngIf=\"operacion == 'E'\">\n <p-floatLabel>\n <input pInputText [(ngModel)]=\"correo\" type=\"text\" [disabled]=\"bloquearCorreo\" />\n <label>{{'correo' | translate}}</label>\n </p-floatLabel>\n </div>\n </p-fieldset>\n \n\n <div class=\"flex justify-content-end\">\n <button pButton pRipple class=\"m-2 mt-4 p-button p-button-outlined background-100\"\n *ngIf=\"validarControlFuncionalidad('ejecrepo:sentencia')\" label=\"Ver sentencia\" icon=\"glyphicons glyphicons-eye-open\"\n (click)=\"sentencia()\"></button>\n <button pButton pRipple class=\"m-2 mt-4 p-button-raised\" *ngIf=\"operacion == 'E'\" icon=\"glyphicons glyphicons-envelope\"\n label=\"{{'link_enviar' | translate}}\" (click)=\"enviarSegundoPlano()\"></button>\n <button pButton pRipple class=\"m-2 mt-4 p-button-raised\" *ngIf=\"operacion == 'D' && reporte.momento != 'D'\" icon=\"glyphicons glyphicons-check\"\n label=\"{{'generar' | translate}}\" (click)=\"descargarReporte()\"></button>\n <button pButton pRipple class=\"m-2 mt-4 p-button-raised\" *ngIf=\"operacion == 'D' && reporte.momento == 'D'\" icon=\"glyphicons glyphicons-check\"\n label=\"{{'generar' | translate}}\" (click)=\"descargarReporteSinHilo()\"></button>\n <button pButton pRipple class=\"m-2 mt-4 p-button-raised\" *ngIf=\"tipoReporte == 'A'\" icon=\"glyphicons glyphicons-check\"\n label=\"{{'generar' | translate}}\" (click)=\"generarTabla()\"></button>\n <!--pte proceso externo-->\n <button pButton pRipple class=\"m-2 mt-4 p-button-raised\" *ngIf=\"operacion == 'M' || operacion == 'MP'\" icon=\"glyphicons glyphicons-envelope\"\n label=\"{{'link_enviar' | translate}}\" (click)=\"enviarSegundoPlano()\"></button>\n <button pButton pRipple class=\"m-2 mt-4 p-button-raised\" *ngIf=\"operacion == 'P'\" icon=\"glyphicons glyphicons-folder-open\"\n label=\"{{'link_publicar' | translate}}\" (click)=\"enviarSegundoPlano()\"></button>\n <button pButton pRipple class=\"m-2 mt-4 p-button-raised\" *ngIf=\"operacion =='S'\" icon=\"glyphicons glyphicons-check\"\n label=\"{{'link_generar' | translate}}\" (click)=\"enviarSegundoPlano()\"></button>\n\n </div>\n </div>\n <div *ngIf=\"panel == 'resultado'\">\n <div *ngIf=\"operacion == 'historico'\">\n <div class=\"flex justify-content-between align-items-center mt-2 mb-2\">\n <h4 class=\"text-base mt-2 ml-2\">{{'detalle' | translate}} {{'segundoplano' | translate}}</h4>\n <button pButton pRipple icon=\"pi pi-chevron-left\" class=\"p-button-text font-semibold flex-shrink-0 ml-4\"\n (click)=\"regresarSegundoPlano()\" label=\"{{'link_regresar' | translate}}\" >\n </button>\n </div>\n <div class=\" Inputgroup\">\n <div class=\"col-md-12\">\n <div class=\"p-fluid p-formgrid grid\">\n <div class=\"field col-12 md:col-4 lg:col-4\">\n <p-floatLabel>\n <p-calendar type=\"text\" [(ngModel)]=\"elementoBorrar.inicia\" [disabled]=\"true\" appendTo=\"body\"\n [showTime]=\"true\" [showSeconds]=\"true\" dateFormat=\"dd/mm/yy\"></p-calendar>\n <label>{{('fechainicial') | translate}}</label>\n </p-floatLabel>\n </div>\n\n <div class=\"field col-12 md:col-4 lg:col-4\">\n <p-floatLabel>\n <p-calendar type=\"text\" [(ngModel)]=\"elementoBorrar.termina\" [disabled]=\"true\" appendTo=\"body\"\n [showTime]=\"true\" [showSeconds]=\"true\" dateFormat=\"dd/mm/yy\"></p-calendar>\n <label>{{('fechafinal') | translate}}</label>\n </p-floatLabel>\n </div>\n\n <div class=\"field col-12 md:col-4 lg:col-4\">\n <p-floatLabel>\n <input pInputText type=\"text\" [readonly]=\"false\"\n [(ngModel)]=\"elementoBorrar.nombreEstado\" [disabled]=\"true\" />\n <label>{{('estado') | translate}}</label>\n </p-floatLabel>\n </div>\n\n <div class=\"field col-12 md:col-12 lg:col-12\" *ngIf=\"elementoBorrar.estado == 'E'\">\n <label>{{('mensaje') | translate}}</label>\n <textarea class=\"min-w-full p-inputtextarea p-inputtext p-component p-element \"\n rows=\"5\" cols=\"30\" pInputTextarea [(ngModel)]=\"elementoBorrar.archivo\"\n [disabled]=\"true\"></textarea>\n </div>\n </div>\n <div class=\"flex justify-content-end\">\n <button pButton pRipple class=\"ml-2 p-button p-button-raised\"\n *ngIf=\"elementoBorrar.estado == 'T'\" icon=\"pi pi-download\"\n label=\"{{'link_descargar' | translate}}\" (click)=\"descargarArchivo()\">\n </button>\n <button pButton pRipple class=\"ml-2 p-button-outlined\" icon=\"glyphicons glyphicons-bin\"\n label=\"{{'link_eliminar' | translate}}\" (click)=\"eliminarSegundoPlano($event)\">\n </button>\n </div>\n </div>\n </div>\n </div>\n\n <div *ngIf=\"tipoReporte == 'A'\" >\n <p-table [value]=\"listaRegistro\" responsiveLayout=\"scroll\" [scrollable]=\"true\"\n [rows]=\"10\" [totalRecords]=\"listaRegistro.length\" [paginator]=\"listaRegistro.length > 10\" >\n <ng-template pTemplate=\"header\">\n <tr class=\"fondoTablaPincipal\">\n <th [style.width.px]=\"col.width || 200\" *ngFor=\"let col of columnas\">{{ col.header }}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\" let-entrada>\n <tr>\n <td [style.width.px]=\"col.width || 200\" *ngFor=\"let col of columnas\">{{ entrada[col.field] }}</td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"emptymessage\">\n <p class=\"p-3 font-medium emptymessage\">\n {{'mensajetablavacia' | translate}}\n </p>\n </ng-template>\n </p-table>\n </div>\n </div>\n\n</p-dialog>\n<app-popup-sentencia [reporte]=\"reporte\" [parametros]=\"parametros\" [mostrarPopup]=\"mostrarPopupSentencia\"\n (regresar)=\"regresarSentencia($event)\"></app-popup-sentencia>", styles: [":host ::ng-deep .p-button{width:auto}:host ::ng-deep .min-w-full2{min-height:150px;min-width:100%}h4{color:var(--color-500)}\n"] }]
498
+ }], ctorParameters: () => [{ type: i1.GeneralService }, { type: i2.EjecucionReporteService }, { type: i3.ConfirmationService }, { type: i4.ToastService }, { type: i5.AuthService }, { type: i6.TranslateService }, { type: i7.CargarArchivosService }, { type: i8.UtilsService }, { type: i9.CargarControlFuncionalidadService }, { type: i10.EncriptadoBasicoService }, { type: i11.ReporteFuentePipe }, { type: i12.GeneralPipe }, { type: i7.CargarArchivosService }, { type: i10.EncriptadoBasicoService }], propDecorators: { mostrar: [{
499
+ type: Input
500
+ }], aplicacion: [{
501
+ type: Input
502
+ }], reporte: [{
503
+ type: Input
504
+ }], entradasPuntoProceso: [{
505
+ type: Input
506
+ }], regresar: [{
507
+ type: Output
508
+ }] } });
509
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wdXAtcmVwb3J0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3dlYmNvbW1vbi9wb3B1cHMvcG9wdXAtcmVwb3J0ZS9wb3B1cC1yZXBvcnRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvd2ViY29tbW9uL3BvcHVwcy9wb3B1cC1yZXBvcnRlL3BvcHVwLXJlcG9ydGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsZUFBZSxFQUFvQixNQUFNLHFCQUFxQixDQUFDO0FBR3hFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUd2RSxPQUFPLEVBQUUsbUJBQW1CLEVBQVksY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRzVFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBUW5GLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1QyxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FB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QUUsV0FBVyxFQUFFLGdCQUFnQixDQUFDLGNBQ25RLElBQUksYUFDTCxDQUFDLGNBQWMsRUFBRSxtQkFBbUIsQ0FBQzs0Z0JBTWxDLE9BQU87c0JBQXRCLEtBQUs7Z0JBQ1UsVUFBVTtzQkFBekIsS0FBSztnQkFDVSxPQUFPO3NCQUF0QixLQUFLO2dCQUNVLG9CQUFvQjtzQkFBbkMsS0FBSztnQkFDVyxRQUFRO3NCQUF4QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlLCBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBHZW5lcmFsUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL2dlbmVyYWwucGlwZSc7XG5pbXBvcnQgeyBHZW5lcmFsU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9zZXJ2aWNpb3MvZ2VuZXJhbC5zZXJ2aWNlJztcbmltcG9ydCB7IEdlbmVyYWxNb2RlbCB9IGZyb20gJy4uLy4uLy4uL3NlZ3VyaWRhZC9tb2RlbG9zL0dlbmVyYWxNb2RlbCc7XG5pbXBvcnQgeyBDYXJnYXJBcmNoaXZvc1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvc2VydmljaW9zL2Nhcmdhci1hcmNoaXZvcy5zZXJ2aWNlJztcbmltcG9ydCB7IEVuY3JpcHRhZG9CYXNpY29TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3NlcnZpY2lvcy9lbmNyaXB0YWRvLWJhc2ljby5zZXJ2aWNlJztcbmltcG9ydCB7IENvbmZpcm1hdGlvblNlcnZpY2UsIE1lbnVJdGVtLCBNZXNzYWdlU2VydmljZSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7IFJlcG9ydGVGdWVudGVQaXBlIH0gZnJvbSAnLi4vLi4vcGlwZXMvcmVwb3J0ZS1mdWVudGUucGlwZSc7XG5pbXBvcnQgeyBFamVjdWNpb25SZXBvcnRlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2VqZWN1Y2lvbnJlcG9ydGUuc2VydmljZSc7XG5pbXBvcnQgeyBSZXBvcnRlRnVlbnRlTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9zZWd1cmlkYWQvbW9kZWxvcy9SZXBvcnRlRnVlbnRlTW9kZWwnO1xuaW1wb3J0IHsgUmVwb3J0ZUVudHJhZGFNb2RlbCB9IGZyb20gJy4uLy4uLy4uL3NlZ3VyaWRhZC9tb2RlbG9zL1JlcG9ydGVFbnRyYWRhTW9kZWwnO1xuaW1wb3J0IHsgUmVwb3J0ZVNvcG9ydGVNb2RlbCB9IGZyb20gJy4uLy4uLy4uL3NlZ3VyaWRhZC9tb2RlbG9zL1JlcG9ydGVTb3BvcnRlJztcbmltcG9ydCB7IFRhYmxlQ29sdW1uIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9tb2RlbG9zL3RhYmxlLWNvbHVtbi5tb2RlbCc7XG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2lvcy90b2FzdC5zZXJ2aWNlJztcbmltcG9ydCB7IFV0aWxzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NvcmUvc2VydmljaW9zL3V0aWxzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2lvcy9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2FyZ2FyQ29udHJvbEZ1bmNpb25hbGlkYWRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNpb3MvY2FyZ2FyLWNvbnRyb2wtZnVuY2lvbmFsaWRhZC5zZXJ2aWNlJztcbmltcG9ydCB7IERpYWxvZ01vZHVsZSB9IGZyb20gJ3ByaW1lbmcvZGlhbG9nJztcbmltcG9ydCB7IENvbmZpcm1Qb3B1cE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvY29uZmlybXBvcHVwJztcbmltcG9ydCB7IEFjY29yZGlvbk1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvYWNjb3JkaW9uJztcbmltcG9ydCB7IFRhYmxlTW9kdWxlIH0gZnJvbSAncHJpbWVuZy90YWJsZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUsIERhdGVQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZpZWxkc2V0TW9kdWxlIH0gZnJvbSAncHJpbWVuZy9maWVsZHNldCc7XG5pbXBvcnQgeyBJbnB1dE51bWJlck1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvaW5wdXRudW1iZXInO1xuaW1wb3J0IHsgSW5wdXRUZXh0TW9kdWxlIH0gZnJvbSAncHJpbWVuZy9pbnB1dHRleHQnO1xuaW1wb3J0IHsgRHJvcGRvd25Nb2R1bGUgfSBmcm9tICdwcmltZW5nL2Ryb3Bkb3duJztcbmltcG9ydCB7IENhbGVuZGFyTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9jYWxlbmRhcic7XG5pbXBvcnQgeyBSYWRpb0J1dHRvbk1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvcmFkaW9idXR0b24nO1xuaW1wb3J0IHsgUG9wdXBTZW50ZW5jaWFDb21wb25lbnQgfSBmcm9tICcuLi9wb3B1cC1zZW50ZW5jaWEvcG9wdXAtc2VudGVuY2lhLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEZsb2F0TGFiZWxNb2R1bGUgfSBmcm9tICdwcmltZW5nL2Zsb2F0bGFiZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtcG9wdXAtcmVwb3J0ZScsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIERpYWxvZ01vZHVsZSwgQ29uZmlybVBvcHVwTW9kdWxlLCBBY2NvcmRpb25Nb2R1bGUsIFRhYmxlTW9kdWxlLCBUcmFuc2xhdGVNb2R1bGUsIERhdGVQaXBlLCBGaWVsZHNldE1vZHVsZSwgSW5wdXROdW1iZXJNb2R1bGUsIElucHV0VGV4dE1vZHVsZSwgRHJvcGRvd25Nb2R1bGUsIENhbGVuZGFyTW9kdWxlLCBSYWRpb0J1dHRvbk1vZHVsZSwgUG9wdXBTZW50ZW5jaWFDb21wb25lbnQsIEZvcm1zTW9kdWxlLCBGbG9hdExhYmVsTW9kdWxlXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHByb3ZpZGVyczogW01lc3NhZ2VTZXJ2aWNlLCBDb25maXJtYXRpb25TZXJ2aWNlXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcG9wdXAtcmVwb3J0ZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3BvcHVwLXJlcG9ydGUuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBQb3B1cFJlcG9ydGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIEBJbnB1dCgpIHB1YmxpYyBtb3N0cmFyID0gZmFsc2U7XG4gIEBJbnB1dCgpIHB1YmxpYyBhcGxpY2FjaW9uOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHB1YmxpYyByZXBvcnRlOiBSZXBvcnRlRnVlbnRlTW9kZWwgPSBuZXcgUmVwb3J0ZUZ1ZW50ZU1vZGVsO1xuICBASW5wdXQoKSBwdWJsaWMgZW50cmFkYXNQdW50b1Byb2Nlc286IGFueVtdPVtdO1xuICBAT3V0cHV0KCkgcHVibGljIHJlZ3Jlc2FyOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBwdWJsaWMgcGFuZWw6IHN0cmluZyA9ICdlbnRyYWRhJztcbiAgcHVibGljIG9wZXJhY2lvbjogc3RyaW5nO1xuICBwdWJsaWMgbGlzdGFFbnRyYWRhOiBSZXBvcnRlRW50cmFkYU1vZGVsW10gPSBbXTtcbiAgcHVibGljIGxpc3RhU2VndW5kb1BsYW5vOiBhbnlbXSA9IFtdO1xuICBwdWJsaWMgcGFyYW1ldHJvczogYW55W10gPSBbXTtcbiAgcHVibGljIGVsZW1lbnRvQm9ycmFyOiBhbnkgPSB7fTtcbiAgcHVibGljIGdlbmVyYWNpb25lczogYW55W10gPSBbXTtcbiAgcHVibGljIG9wZXJhY2lvbmVzOiBhbnlbXSA9IFtdO1xuICBwdWJsaWMgbW9zdHJhck90cmFTZWxlY2Npb246IGJvb2xlYW47XG5cdHB1YmxpYyBtb3N0cmFyQXJjaGl2b3NTb3BvcnRlOiBib29sZWFuO1xuXHRwdWJsaWMgbW9zdHJhckNvbnN1bHRhQ2Fzb0Vycm9yOiBib29sZWFuO1xuICBwdWJsaWMgY29ycmVvOiBzdHJpbmc7XG4gIHB1YmxpYyB0aXBvUmVwb3J0ZTogc3RyaW5nO1xuICBwdWJsaWMgc29wb3J0ZUJhc2U6IHN0cmluZztcbiAgcHVibGljIHRpcG9BcmNoaXZvOiBzdHJpbmc7XG4gIHB1YmxpYyBibG9xdWVhckNvcnJlbzogYm9vbGVhbjtcbiAgcHVibGljIG1hcGFUaXBvQXJjaGl2b3M7XG4gIHB1YmxpYyBsaXN0YWRvQXJjaGl2b1NvcG9ydGU6IFJlcG9ydGVTb3BvcnRlTW9kZWxbXSA9IFtdO1xuICBwdWJsaWMgbW9zdHJhclBvcHVwU2VudGVuY2lhOiBib29sZWFuO1xuXG4gIHB1YmxpYyBpdGVtczogTWVudUl0ZW1bXTtcbiAgcHVibGljIHZpc3RhVmlzdWFsaXphcjogc3RyaW5nO1xuICBwYWdpbmF0b3I9e3Jvd3M6Mix0b3RhbFJlY29yZHM6MH1cbiAgcHVibGljIG1vc3RyYXJQYXJhbWV0cm9zOiBib29sZWFuO1xuXHRwdWJsaWMgbW9zdHJhclF1ZURlc2VhSGFjZXI6IGJvb2xlYW47XG5cbiAgcHVibGljIGNvbHVtbmFzOiBUYWJsZUNvbHVtbltdID0gW107XG4gIHB1YmxpYyBsaXN0YVJlZ2lzdHJvOiBhbnlbXSA9IFtdO1xuXG4gIHB1YmxpYyBleGlzdGVKYXNwZXI6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGdlbmVyYWxTZXJ2aWNlOiBHZW5lcmFsU2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBlamVjdWNpb25SZXBvcnRlU2VydmljZTogRWplY3VjaW9uUmVwb3J0ZVNlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgY29uZmlybWF0aW9uU2VydmljZTogQ29uZmlybWF0aW9uU2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBub3RpZmljYWNpb25TZXJ2aWNlOiBUb2FzdFNlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxuICAgICAgICAgICAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgY2FyZ2FyQXJjaGl2b1NlcnZpY2U6IENhcmdhckFyY2hpdm9zU2VydmljZSxcbiAgICAgICAgICAgICAgcHVibGljIHV0aWxzU2VydmljZTogVXRpbHNTZXJ2aWNlLFxuICAgICAgICAgICAgICBwcml2YXRlIGNvbnRyb2xGdW5jaW9uYWxpZGFkOiBDYXJnYXJDb250cm9sRnVuY2lvbmFsaWRhZFNlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgZW5jcmlwdGFkb0Jhc2ljbzogRW5jcmlwdGFkb0Jhc2ljb1NlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgcmVwb3J0ZUZ1ZW50ZVBpcGU6IFJlcG9ydGVGdWVudGVQaXBlLFxuICAgICAgICAgICAgICBwcml2YXRlIGdlbmVyYWxQaXBlOiBHZW5lcmFsUGlwZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBjYXJnYXJBcmNoaXZvOiBDYXJnYXJBcmNoaXZvc1NlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgZW5jcmlwdGFkb3JBcmNoaXZvOiBFbmNyaXB0YWRvQmFzaWNvU2VydmljZSwpIHsgfSAgICAgICAgIFxuICBcbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5tYXBhVGlwb0FyY2hpdm9zID0gdGhpcy5yZXBvcnRlRnVlbnRlUGlwZS5NQVBBX1RJUE9fQVJDSElWT1M7ICBcbiAgICB0aGlzLmFwbGljYWNpb24gPSB0aGlzLmF1dGhTZXJ2aWNlLmdldFRva2VuS2V5KCdhcGxpY2FjaW9uJylcbiAgfVxuXG4gIGFzeW5jIG1vc3RyYXJQb3B1cCgpe1xuICAgIHRoaXMucGFuZWwgPSAnZW50cmFkYSc7XG4gICAgdGhpcy5tb3N0cmFyUXVlRGVzZWFIYWNlciA9IGZhbHNlO1xuICAgIHRoaXMudGlwb1JlcG9ydGUgPSBudWxsO1xuICAgIHRoaXMubW9zdHJhckNvbnN1bHRhQ2Fzb0Vycm9yID0gdGhpcy52YWxpZGFyQ29udHJvbEZ1bmNpb25hbGlkYWQoJ3JlcG9ydGU6dmVyc2VudGVuY2lhZXJyb3InKTtcbiAgICB0aGlzLm9wZXJhY2lvbiA9IG51bGw7XG4gICAgdGhpcy5lbGVtZW50b0JvcnJhciA9IHt9XG4gICAgdGhpcy5saXN0YVNlZ3VuZG9QbGFubyA9IFtdXG4gICAgdGhpcy5saXN0YVJlZ2lzdHJvID0gW107XG4gICAgdGhpcy5jb2x1bW5hcyA9IFtdO1xuICAgIHRoaXMuZXhpc3RlSmFzcGVyID0gZmFsc2U7XG4gICAgaWYgKHRoaXMucmVwb3J0ZS5sbGF2ZSkge1xuICAgICAgdmFyIHJlc3VsdGFkbyA9IGF3YWl0IHRoaXMuZWplY3VjaW9uUmVwb3J0ZVNlcnZpY2UuZ2V0RGF0b3NFamVjdWNpb25SZXBvcnRlKHtsbGF2ZTogdGhpcy5yZXBvcnRlLmxsYXZlfSkudG9Qcm9taXNlKCk7XG4gICAgICB0aGlzLnJlcG9ydGUgPSByZXN1bHRhZG8ucmVwb3J0ZTtcbiAgICAgIGRlbGV0ZSB0aGlzLnJlcG9ydGVbJ2FsaWFzJ11cbiAgICAgIHRoaXMuY2FyZ2FyTGlzdGFFbnRyYWRhKCk7XG4gICAgICB0aGlzLnRyYWVyU2VndW5kb1BsYW5vKCk7XG4gICAgICB0aGlzLmNhcmdhckNvcnJlbygpO1xuICAgICAgYXdhaXQgdGhpcy52YWxpZGFyRXhpc3RlSmFzcGVyKCk7XG4gICAgICBhd2FpdCB0aGlzLmNhcmdhckdlbmVyYWNpb25lcygpO1xuICAgICAgdGhpcy5jYXJnYXJPcGVyYWNpb25lcygpO1xuICAgICAgXG4gICAgfVxuICB9XG5cbiAgY2FyZ2FyTWVudSgpe1xuICAgIHRoaXMuaXRlbXMgPSBbXG4gICAgICBcbiAgICAgIHtcbiAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdlamVjdWNpb24nKSxcbiAgICAgICAgaWNvbjogJ2dseXBoaWNvbnMgZ2x5cGhpY29ucy1wbHVzLXNpZ24nLFxuICAgICAgICBjb21tYW5kOiAoZXZlbnQpID0+IHtcbiAgICAgICAgICB0aGlzLnZpc3RhVmlzdWFsaXphciA9ICdlbnRyYWRhJztcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnc2VndW5kb3BsYW5vJyksXG4gICAgICAgIGljb246ICdnbHlwaGljb25zIGdseXBoaWNvbnMtZmlsZS1taW51cycsXG4gICAgICAgIGNvbW1hbmQ6IChldmVudCkgPT4ge1xuICAgICAgICAgIHRoaXMudmlzdGFWaXN1YWxpemFyID0gJ3NlZ3VuZG9wbGFubyc7XG4gICAgICAgIH0sXG4gICAgICAgIHZpc2libGU6IHRoaXMubGlzdGFTZWd1bmRvUGxhbm8ubGVuZ3RoID4gMCxcbiAgICAgIH1cbiAgICBdXG4gIH1cblxuICBhc3luYyBjYXJnYXJHZW5lcmFjaW9uZXMoKXtcbiAgICB0aGlzLmdlbmVyYWNpb25lcyA9IFtdO1xuICAgIGlmICggdGhpcy51dGlsc1NlcnZpY2UuaXNOb3RCbGFuayh0aGlzLnJlcG9ydGUudGl0dWxvUGFyYW1ldHJvKSAmJiB0aGlzLmV4aXN0ZUphc3Blcil7XG4gICAgICB0aGlzLmdlbmVyYWNpb25lcy5wdXNoKHt2YWx1ZTogdGhpcy5yZXBvcnRlRnVlbnRlUGlwZS5HRU5FUkFDSU9OX0pBU1BFUkRJTkFNSUNPLCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnJlcG9ydGVGdWVudGVQaXBlLkRFU0NfR0VORVJBQ0lPTl9KQVNQRVJESU5BTUlDT30pXG4gICAgfVxuICAgIGlmICh0aGlzLnV0aWxzU2VydmljZS5pc05vdEJsYW5rKHRoaXMucmVwb3J0ZS5qYXNwZXJGaWpvKSAmJiB0aGlzLnV0aWxzU2VydmljZS5pc05vdEJsYW5rKHRoaXMucmVwb3J0ZS5tb2RvRmlqbykpe1xuICAgICAgdGhpcy5nZW5lcmFjaW9uZXMucHVzaCh7dmFsdWU6IHRoaXMucmVwb3J0ZUZ1ZW50ZVBpcGUuR0VORVJBQ0lPTl9KQVNQRVJGSUpPLCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnJlcG9ydGVGdWVudGVQaXBlLkRFU0NfR0VORVJBQ0lPTl9KQVNQRVJGSUpPfSlcbiAgICB9XG4gICAgaWYgKHRoaXMudXRpbHNTZXJ2aWNlLmlzTm90QmxhbmsodGhpcy5yZXBvcnRlLmFyY2hpdm9Ub2RvKSAmJiB0aGlzLnV0aWxzU2VydmljZS5pc05vdEJsYW5rKHRoaXMucmVwb3J0ZS5ob2phRXhjZWwpKXtcbiAgICAgIHRoaXMuZ2VuZXJhY2lvbmVzLnB1c2goe3ZhbHVlOiB0aGlzLnJlcG9ydGVGdWVudGVQaXBlLkdFTkVSQUNJT05fRVhDRUwsIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMucmVwb3J0ZUZ1ZW50ZVBpcGUuREVTQ19HRU5FUkFDSU9OX0VYQ0VMfSlcbiAgICB9XG4gICAgaWYgKHRoaXMudXRpbHNTZXJ2aWNlLmlzTm90QmxhbmsodGhpcy5yZXBvcnRlLmFyY2hpdm9JbmRpdmlkdWFsKSB8fCB0aGlzLnJlcG9ydGUudW5pY29BcmNoaXZvID09ICdOJyl7XG4gICAgICB0aGlzLmdlbmVyYWNpb25lcy5wdXNoKHt2YWx1ZTogdGhpcy5yZXBvcnRlRnVlbnRlUGlwZS5HRU5FUkFDSU9OX1BMQU5USUxMQSwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy5yZXBvcnRlRnVlbnRlUGlwZS5ERVNDX0dFTkVSQUNJT05fUExBTlRJTExBfSlcbiAgICB9XG4gICAgaWYgKHRoaXMudXRpbHNTZXJ2aWNlLmlzTm90QmxhbmsodGhpcy5yZXBvcnRlLnNlcGFyYWRvcikpe1xuICAgICAgdGhpcy5nZW5lcmFjaW9uZXMucHVzaCh7dmFsdWU6IHRoaXMucmVwb3J0ZUZ1ZW50ZVBpcGUuR0VORVJBQ0lPTl9BUkNISVZPUExBTk8sIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMucmVwb3J0ZUZ1ZW50ZVBpcGUuREVTQ19HRU5FUkFDSU9OX0FSQ0hJVk9QTEFOT30pXG4gICAgfVxuICAgIGlmICh0aGlzLnV0aWxzU2VydmljZS5pc05vdEJsYW5rKHRoaXMucmVwb3J0ZS5ub21icmVUYWJsYSkpe1xuICAgICAgdGhpcy5nZW5lcmFjaW9uZXMucHVzaCh7dmFsdWU6IHRoaXMucmVwb3J0ZUZ1ZW50ZVBpcGUuR0VORVJBQ0lPTl9UQUJMQSwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy5yZXBvcnRlRnVlbnRlUGlwZS5ERVNDX0dFTkVSQUNJT05fVEFCTEF9KVxuICAgIH1cbiAgICBpZiAodGhpcy51dGlsc1NlcnZpY2UuaXNOb3RCbGFuayh0aGlzLnJlcG9ydGUudGFnRW5jYWJlemFkbykgJiYgdGhpcy51dGlsc1NlcnZpY2UuaXNOb3RCbGFuayh0aGlzLnJlcG9ydGUuZXN0cnVjdHVyYVJlZ2lzdHJvKSl7XG4gICAgICB0aGlzLmdlbmVyYWNpb25lcy5wdXNoKHt2YWx1ZTogdGhpcy5yZXBvcnRlRnVlbnRlUGlwZS5HRU5FUkFDSU9OX1hNTCwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy5yZXBvcnRlRnVlbnRlUGlwZS5ERVNDX0dFTkVSQUNJT05fWE1MfSlcbiAgICB9XG4gICAgaWYgKHRoaXMudXRpbHNTZXJ2aWNlLmlzTm90QmxhbmsodGhpcy5yZXBvcnRlLmFyY2hpdm9FeGNlbENvbHVtbmFyaW8pICYmIHRoaXMudXRpbHNTZXJ2aWNlLmlzTm90QmxhbmsodGhpcy5yZXBvcnRlLmhvamFFeGNlbENvbHVtbmFyaW8pKXtcbiAgICAgIHRoaXMuZ2VuZXJhY2lvbmVzLnB1c2goe3ZhbHVlOiB0aGlzLnJlcG9ydGVGdWVudGVQaXBlLkdFTkVSQUNJT05fQ09MVU1OQVJJTywgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy5yZXBvcnRlRnVlbnRlUGlwZS5ERVNDX0dFTkVSQUNJT05fQ09MVU1OQVJJT30pXG4gICAgfVxuICB9XG5cbiAgYXN5bmMgdmFsaWRhckV4aXN0ZUphc3Blcigpe1xuICAgIHRyeSB7XG4gICAgICB2YXIgZGF0YSA9IGF3YWl0IHRoaXMuY2FyZ2FyQXJjaGl2by5kZXNjYXJnYXJBcmNoaXZvKHRoaXMuZW5jcmlwdGFkb3JBcmNoaXZvLmVuY3JpcHRhcigncmVwb3J0ZXMvJyArIHRoaXMucmVwb3J0ZS5sbGF2ZSArICcuanJ4bWwnKSwgJ3J1dGFfcGxhbnRpbGxhcycsIHRoaXMuYXBsaWNhY2lvbikudG9Qcm9taXNlKCk7XG4gICAgICBpZiAoZGF0YSkge1xuICAgICAgICB0aGlzLmV4aXN0ZUphc3BlciA9IHRydWU7XG4gICAgICB9ICAgXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRoaXMuZXhpc3RlSmFzcGVyID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgY2FyZ2FyT3BlcmFjaW9uZXMoKXtcbiAgICB0aGlzLmJsb3F1ZWFyQ29ycmVvID0gdHJ1ZTtcbiAgICB0aGlzLm9wZXJhY2lvbmVzID0gW107XG4gICAgaWYgKHRoaXMudGlwb1JlcG9ydGUpe1xuICAgICAgaWYgKHRoaXMudGlwb1JlcG9ydGUgIT0gdGhpcy5yZXBvcnRlRnVlbnRlUGlwZS5HRU5FUkFDSU9OX1RBQkxBKSB7XG4gICAgICAgIHRoaXMub3BlcmFjaW9uZXMucHVzaCh7dmFsdWU6IHRoaXMucmVwb3J0ZUZ1ZW50ZVBpcGUuT1BFUkFDSU9OX0RFU0NBUkdBUixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy5yZXBvcnRlRnVlbnRlUGlwZS5ERVNDX09QRVJBQ0lPTl9ERVNDQVJHQVJ9KTtcbiAgICAgIFxuICAgICAgICBpZiAodGhpcy52YWxpZGFyQ29udHJvbEZ1bmNpb25hbGlkYWQoJ3JlcG9ydGU6ZW52aW9jb3JyZW8nKSl7XG4gICAgICAgICAgdGhpcy5ibG9xdWVhckNvcnJlbyA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub3BlcmFjaW9uZXMucHVzaCh7dmFsdWU6IHRoaXMucmVwb3J0ZUZ1ZW50ZVBpcGUuT1BFUkFDSU9OX0VOVklBUkNPUlJFTyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnJlcG9ydGVGdWVudGVQaXBlLkRFU0NfT1BFUkFDSU9OX0VOVklBUkNPUlJFT30pO1xuICAgICAgICBpZiAodGhpcy5yZXBvcnRlRnVlbnRlUGlwZS5NT01FTlRPU19TRUdVTkRPX1BMQU5PID09IHRoaXMucmVwb3J0ZS5tb21lbnRvKSB7XG4gICAgICAgICAgdGhpcy5vcGVyYWNpb25lcy5wdXNoKHt2YWx1ZTogdGhpcy5yZXBvcnRlRnVlbnRlUGlwZS5PUEVSQUNJT05fU0VHVU5ET1BMQU5PLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy5yZXBvcnRlRnVlbnRlUGlwZS5ERVNDX09QRVJBQ0lPTl9TRUdVTkRPUExBTk99KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoKHRoaXMudGlwb1JlcG9ydGUgPT0gdGhpcy5yZXBvcnRlRnVlbnRlUGlwZS5HRU5FUkFDSU9OX0pBU1BFUkZJSk8gJiYgdGhpcy5yZXBvcnRlLm1vZG9GaWpvID09ICdQJylcbiAgICAgICAgICB8fCB0aGlzLnRpcG9SZXBvcnRlID09IHRoaXMucmVwb3J0ZUZ1ZW50ZVBpcGUuR0VORVJBQ0lPTl9QTEFOVElMTEEgJiYgdGhpcy5yZXBvcnRlLmRlc2NhcmdhckZ1ZW50ZSAhPSAnUycpe1xuICAgICAgICAgIFxuICAgICAgICAgIGlmICh0aGlzLnJlcG9ydGUuYXJjaGl2b0h0bWwgJiYgdGhpcy5yZXBvcnRlLmNhbXBvRW1haWwpe1xuICAgICAgICAgICAgdGhpcy5vcGVyYWNpb25lcy5wdXNoKHt2YWx1ZTogdGhpcy5yZXBvcnRlRnVlbnRlUGlwZS5PUEVSQUNJT05fRU5WSU9NQVNJVk8sXG4gICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnJlcG9ydGVGdWVudGVQaXBlLkRFU0NfT1BFUkFDSU9OX0VOVklPTUFTSVZPfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh0aGlzLnJlcG9ydGUucHVibGljYWNpb24gJiYgdGhpcy5yZXBvcnRlLmNhbXBvUHVibGljYSl7XG4gICAgICAgICAgICB0aGlzLm9wZXJhY2lvbmVzLnB1c2goe3ZhbHVlOiB0aGlzLnJlcG9ydGVGdWVudGVQaXBlLk9QRVJBQ0lPTl9QVUJMSUNBUixcbiAgICAgICAgICAgICAgbGFiZWw6IHRoaXMucmVwb3J0ZUZ1ZW50ZVBpcGUuREVTQ19PUEVSQUNJT05fUFVCTElDQVJ9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHRoaXMucmVwb3J0ZS5hcmNoaXZvSHRtbCAmJiB0aGlzLnJlcG9ydGUuY2FtcG9FbWFpbCAmJiB0aGlzLnJlcG9ydGUucHVibGljYWNpb24gJiYgdGhpcy5yZXBvcnRlLmNhbXBvUHVibGljYSApe1xuICAgICAgICAgICAgdGhpcy5vcGVyYWNpb25lcy5wdXNoKHt2YWx1ZTogdGhpcy5yZXBvcnRlRnVlbnRlUGlwZS5PUEVSQUNJT05fQ09SUkVPUFVCTElDQVIsXG4gICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnJlcG9ydGVGdWVudGVQaXBlLkRFU0NfT1BFUkFDSU9OX0NPUlJFT1BVQkxJQ0FSfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vcHRlIHByb2Nlc28gZXh0ZXJub1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNhbWJpb1ZhbG9yTGlzdGEoZXZlbnQsIHBhcmFtZXRybyl7XG4gICAgaWYgKGV2ZW50LnZhbHVlKXtcbiAgICAgIGxldCBsaXN0YSA9IGV2ZW50LnZhbHVlLnNwbGl0KCc6JylcbiAgICAgIGlmIChwYXJhbWV0cm8udW5pb25EVE8udGlwb0RhdG8gPT0gJ04nKXtcbiAgICAgICAgcGFyYW1ldHJvLnVuaW9uRFRPLnZhbG9yID0gcGFyc2VJbnQobGlzdGFbMF0pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYXJhbWV0cm8udW5pb25EVE8udmFsb3IgPSBsaXN0YVswXVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBcbiAgY2FtYmlvU29wb3J0ZUJhc2UoZXZlbnQpIHtcbiAgICBpZiAodGhpcy5zb3BvcnRlQmFzZSA9PSBudWxsKSB7XG4gICAgICB0aGlzLmNhcmdhck9wZXJhY2lvbmVzKCk7XG4gICAgICByZXR1cm47XG4gICAgfSBcbiAgICB0aGlzLmdlbmVyYWxTZXJ2aWNlLnF1ZXJ5Rm9yT2JqZWN0KG5ldyBHZW5lcmFsTW9kZWwoJ1JlcG9ydGVTb3BvcnRlRFRPJywgbnVsbCwgZmFsc2UsIHtsbGF2ZVRhYmxhOiB0aGlzLnNvcG9ydGVCYXNlfSkpLnN1YnNjcmliZShhcmNoaXZvQmFzZSA9PiB7XG4gICAgICBpZiAoYXJjaGl2b0Jhc2UgPT0gbnVsbCkge1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHR0aGlzLnNvcG9ydGVCYXNlID0gYXJjaGl2b0Jhc2UubGxhdmVUYWJsYTtcblx0XHRcdHRoaXMucmVwb3J0ZS5hcmNoaXZvSW5kaXZpZHVhbCA9IGFyY2hpdm9CYXNlLmFyY2hpdm9JbmRpdmlkdWFsO1xuXHRcdFx0dGhpcy5jYXJnYXJPcGVyYWNpb25lcygpO1xuICAgIH0pO1xuICAgIFxuICB9XG5cbiAgY2FyZ2FyQ29ycmVvKCl7XG4gICAgdGhpcy5nZW5lcmFsU2VydmljZS5xdWVyeUZvck9iamVjdChuZXcgR2VuZXJhbE1vZGVsKCdVc3VhcmlvRFRPJywgbnVsbCwgdHJ1ZSwge2xvZ2luOiB0aGlzLmF1dGhTZXJ2aWNlLmdldFRva2VuS2V5KCd1c3VhcmlvJyl9KSkuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgdGhpcy5jb3JyZW8gPSBkYXRhLmVtYWlsO1xuICAgIH0pXG4gIH1cblxuICBjYXJnYXJMaXN0YUVudHJhZGEoKXtcbiAgICB0aGlzLm1vc3RyYXJQYXJhbWV0cm9zID0gZmFsc2U7XG4gICAgaWYgKHRoaXMuZW50cmFkYXNQdW50b1Byb2Nlc28ubGVuZ3RoID4gMCl7XG4gICAgICB0aGlzLnBhcmFtZXRyb3MgPSB0aGlzLmVudHJhZGFzUHVudG9Qcm9jZXNvOyAgXG4gICAgICB0aGlzLnBhcmFtZXRyb3MuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgaWYgKGVsZW1lbnQudW5pb25EVE8uc29saWNpdGFyID09ICdTJyl7XG4gICAgICAgICAgdGhpcy5tb3N0cmFyUGFyYW1ldHJvcyA9ICB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlbGVtZW50LnVuaW9uRFRPLnRpcG9EYXRvID09ICdGJyAmJiBlbGVtZW50LnVuaW9uRFRPLnZhbG9yICE9IG51bGwpe1xuICAgICAgICAgIGVsZW1lbnQudW5pb25EVE8udmFsb3IgPSBuZXcgRGF0ZShlbGVtZW50LnVuaW9uRFRPLnZhbG9yKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmVqZWN1Y2lvblJlcG9ydGVTZXJ2aWNlLm9idGVuZXJMaXN0YUVudHJhZGFFamVjdWNpb24odGhpcy5yZXBvcnRlKS5zdWJzY3JpYmUoZGF0YSA9PiB7XG4gICAgICAgIHRoaXMucGFyYW1ldHJvcyA9IGRhdGE7XG4gICAgICAgIHRoaXMucGFyYW1ldHJvcy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgICAgIGlmIChlbGVtZW50LnVuaW9uRFRPLnNvbGljaXRhciA9PSAnUycpe1xuICAgICAgICAgICAgdGhpcy5tb3N0cmFyUGFyYW1ldHJvcyA9ICB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZWxlbWVudC51bmlvbkRUTy50aXBvRGF0byA9PSAnRicgJiYgZWxlbWVudC51bmlvbkRUTy52YWxvciAhPSBudWxsKXtcbiAgICAgICAgICAgIGVsZW1lbnQudW5pb25EVE8udmFsb3IgPSBuZXcgRGF0ZShlbGVtZW50LnVuaW9uRFRPLnZhbG9yKVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgdHJhZXJTZWd1bmRvUGxhbm8oKXtcbiAgICBsZXQgdXN1YXJpbyA9IHRoaXMuYXV0aFNlcnZpY2UuZ2V0VG9rZW5LZXkoJ3VzdWFyaW8nKVxuICAgIHRoaXMuZ2VuZXJhbFNlcnZpY2UucXVlcnlGb3JMaXN0KG5ldyBHZW5lcmFsTW9kZWwoJ0VqZWN1Y2lvblJlcG9ydGVEVE8nLCBudWxsLCBmYWxzZSwge1xuICAgICAgYWRpY2lvbmFkbzogdXN1YXJpbywgXG4gICAgICByZXBvcnRlRnVlbnRlOiB0aGlzLnJlcG9ydGUubGxhdmV9KSkuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgICB0aGlzLmxpc3RhU2VndW5kb1BsYW5vID0gZGF0YTtcbiAgICAgICAgdGhpcy5wYWdpbmF0b3IudG90YWxSZWNvcmRzID0gdGhpcy5saXN0YVNlZ3VuZG9QbGFuby5sZW5ndGg7XG4gICAgICB9KVxuICB9XG4gIFxuICB2ZXJTZWd1bmRvUGxhbm8oZXZlbnQpe1xuICAgIHRoaXMuZWxlbWVudG9Cb3JyYXIgPSBldmVudC5kYXRhO1xuICAgIHRoaXMuZWxlbWVudG9Cb3JyYXIuZmVjaGFBZGljaW9uYWRvID0gdGhpcy5lbGVtZW50b0JvcnJhci5mZWNoYUFkaWNpb25hZG8gPyBuZXcgRGF0ZSh0aGlzLmVsZW1lbnRvQm9ycmFyLmZlY2hhQWRpY2lvbmFkbykgOiBudWxsXG4gICAgdGhpcy5lbGVtZW50b0JvcnJhci5pbmljaWEgPSB0aGlzLmVsZW1lbnRvQm9ycmFyLmluaWNpYSA/IG5ldyBEYXRlKHRoaXMuZWxlbWVudG9Cb3JyYXIuaW5pY2lhKSA6IG51bGxcbiAgICB0aGlzLmVsZW1lbnRvQm9ycmFyLnRlcm1pbmEgPSB0aGlzLmVsZW1lbnRvQm9ycmFyLnRlcm1pbmEgPyBuZXcgRGF0ZSh0aGlzLmVsZW1lbnRvQm9ycmFyLnRlcm1pbmEpIDogbnVsbFxuICAgIHRoaXMub3BlcmFjaW9uID0gJ2hpc3RvcmljbydcbiAgICB0aGlzLnBhbmVsID0gJ3Jlc3VsdGFkbydcbiAgfVxuXG4gIGVsaW1pbmFyU2VndW5kb1BsYW5vKGV2ZW50KXtcbiAgICB0aGlzLmNvbmZpcm1hdGlvblNlcnZpY2UuY29uZmlybSh7XG4gICAgICB0YXJnZXQ6IGV2ZW50LnRhcmdldCxcbiAgICAgIG1lc3NhZ2U6ICB0aGlzLmdlbmVyYWxQaXBlLk1FTlNBSkVfRUxJTUlOQVJfQ09ORklSTUFSLFxuICAgICAgYWNjZXB0TGFiZWw6IHRoaXMuZ2VuZXJhbFBpcGUuU0lfREVTQyxcbiAgICAgIGhlYWRlcjogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ2NvbmZpcm1hcicpLFxuICAgICAgYWNjZXB0OiAoKSA9PiB7XG4gICAgICAgIHRoaXMuZWplY3VjaW9uUmVwb3J0ZVNlcnZpY2UuZWxpbWluYXJFamVjdWNpb25SZXBvcnRlKHRoaXMuZWxlbWVudG9Cb3JyYXIpLnN1YnNjcmliZShkYXRhID0+e1xuICAgICAgICAgIHRoaXMubm90aWZpY2FjaW9uU2VydmljZS5zaG93SW5mbyh0aGlzLmdlbmVyYWxQaXBlLk1FTlNBSkVfRUxJTUlOQVIpXG4gICAgICAgICAgdGhpcy5yZWdyZXNhclNlZ3VuZG9QbGFubygpO1xuICAgICAgICAgIHRoaXMudHJhZXJTZWd1bmRvUGxhbm8oKTtcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgZGVzY2FyZ2FyQXJjaGl2bygpe1xuICAgIHRoaXMuY2FyZ2FyQXJjaGl2b1NlcnZpY2UuZGVzY2FyZ2FyQXJjaGl2byh0aGlzLmVuY3JpcHRhZG9CYXNpY28uZW5jcmlwdGFyKHRoaXMuZWxlbWVudG9Cb3JyYXIuYXJjaGl2bykpLnN1YnNjcmliZShibG9iID0+IHtcbiAgICAgIFxuICAgICAgY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKVxuICAgICAgY29uc3Qgb2JqZWN0VXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKVxuICAgICAgYS5ocmVmID0gb2JqZWN0VXJsXG4gICAgICBsZXQgcGFydGVzID0gdGhpcy5lbGVtZW50b0JvcnJhci5hcmNoaXZvLnNwbGl0KFwiLlwiKTtcbiAgICAgIGxldCBleHRlbnNpb24gPSBwYXJ0ZXNbcGFydGVzLmxlbmd0aCAtIDFdO1xuICAgICAgYS5kb3dubG9hZCA9IHRoaXMudXRpbHNTZXJ2aWNlLmdlbmVyYXJMbGF2ZSgpICsgJy4nICsgZXh0ZW5zaW9uO1xuICAgICAgYS5jbGljaygpO1xuICAgICAgVVJMLnJldm9rZU9iamVjdFVSTChvYmplY3RVcmwpO1xuICAgIH0pO1xuICB9XG5cbiAgY2FtYmlvVGlwb1JlcG9ydGUoZXZlbnQpe1xuICAgIHRoaXMubW9zdHJhclF1ZURlc2VhSGFjZXIgPSB0cnVlO1xuICAgIGlmICh0aGlzLnRpcG9SZXBvcnRlID09IHRoaXMucmVwb3J0ZUZ1ZW50ZVBpcGUuR0VORVJBQ0lPTl9QTEFOVElMTEEgJiYgdGhpcy5yZXBvcnRlLnVuaWNvQXJjaGl2byA9PSAnTicgKXtcbiAgICAgIHRoaXMubW9zdHJhckFyY2hpdm9zU29wb3J0ZSA9IHRydWU7XG4gICAgICB0aGlzLmdlbmVyYWxTZXJ2aWNlLnF1ZXJ5Rm9yTGlzdChuZXcgR2VuZXJhbE1vZGVsKCdSZXBvcnRlU29wb3J0ZURUTycsIG51bGwsIGZhbHNlLCB7XG4gICAgICAgIHJlcG9ydGVGdWVudGU6IHRoaXMucmVwb3J0ZS5sbGF2ZSxcbiAgICAgICAgdGlwbzonUydcbiAgICAgIH0pKS5zdWJzY3JpYmUoZGF0YSA9PiB7XG4gICAgICAgIHRoaXMubGlzdGFkb0FyY2hpdm9Tb3BvcnRlID0gZGF0YTtcbiAgICAgIH0pXG4gICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5tb3N0cmFyQXJjaGl2b3NTb3BvcnRlID0gZmFsc2U7XG4gICAgICAgIHRoaXMubGlzdGFkb0FyY2hpdm9Tb3BvcnRlID0gW107XG4gICAgICAgIHRoaXMudGlwb0FyY2hpdm8gPSBudWxsO1xuICAgICAgICB0aGlzLm9wZXJhY2lvbiA9IG51bGw7XG4gICAgICAgIHRoaXMuY2FyZ2FyT3BlcmFjaW9uZXMoKTtcbiAgICAgICAgLy90aGlzLmRlc2NhcmdhckFyY2hpdm8gPSBudWxsO1xuICAgIH0gXG4gIH1cblxuICBjYW1iaW9UaXBvQXJjaGl2byhldmVudCl7XG4gICAgdGhpcy5jYXJnYXJPcGVyYWNpb25lcygpO1xuICB9XG5cbiAgcmVncmVzYXJTZWd1bmRvUGxhbm8oKXtcbiAgICB0aGlzLmVsZW1lbnRvQm9ycmFyID0ge31cbiAgICB0aGlzLnBhbmVsID0gJ2VudHJhZGEnXG4gICAgdGhpcy5vcGVyYWNpb24gPSBudWxsO1xuICB9XG5cbiAgb2N1bHRhcigpe1xuICAgIHRoaXMudGlwb1JlcG9ydGUgPSBudWxsO1xuICAgIHRoaXMubW9zdHJhciA9IGZhbHNlO1xuICAgIHRoaXMucmVncmVzYXIuZW1pdChmYWxzZSk7XG4gIH1cblxuICB2YWxpZGFyQ29udHJvbEZ1bmNpb25hbGlkYWQodmFsb3I6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNvbnRyb2xGdW5jaW9uYWxpZGFkLmdldENvbnRyb2xGdW5jaW9uYWxpZGFkKHZhbG9yKTtcbiAgfVxuXG4gIHNlbnRlbmNpYSgpe1xuICAgIHRoaXMubW9zdHJhclBvcHVwU2VudGVuY2lhID0gdHJ1ZVxuICB9XG5cbiAgcmVncmVzYXJTZW50ZW5jaWEoZXZlbnQpe1xuICAgIHRoaXMubW9zdHJhclBvcHVwU2VudGVuY2lhID0gZmFsc2U7XG4gIH1cblxuICBlbnZpYXJTZWd1bmRvUGxhbm8oKXtcbiAgICBsZXQgbGlzdGFFbnRyYWRhID0gW11cbiAgICB0aGlzLnBhcmFtZXRyb3MuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgIGxpc3RhRW50cmFkYS5wdXNoKGVsZW1lbnQudW5pb25EVE8pXG4gICAgfSlcbiAgICB0aGlzLmVqZWN1Y2lvblJlcG9ydGVTZXJ2aWNlLmVudmlhclNlZ3VuZG9QbGFubyh7XG4gICAgICByZXBvcnRlOiB0aGlzLnJlcG9ydGUsXG4gICAgICBwYXJhbWV0cm9zOiBsaXN0YUVudHJhZGEsXG4gICAgICB0aXBvUmVwb3J0ZTogdGhpcy50aXBvUmVwb3J0ZSxcbiAgICAgIG9wZXJhY2lvbjogdGhpcy5vcGVyYWNpb24sXG4gICAgICBjb3JyZW86IHRoaXMuY29ycmVvLFxuICAgIH0pLnN1YnNjcmliZShkYXRhID0+IHtcbiAgICAgIHRoaXMubm90aWZpY2FjaW9uU2VydmljZS5zaG93SW5mbyhkYXRhLm1lbnNhamUpXG4gICAgfSlcbiAgfVxuXG4gIGRlc2NhcmdhclJlcG9ydGUoKXtcblxuICAgIGlmKCdGJyA9PSB0aGlzLnRpcG9SZXBvcnRlKXtcbiAgICAgIHRoaXMucmVwb3J0ZS50aXBvQXJjaGl2byA9IHRoaXMudGlwb0FyY2hpdm87XG4gICAgfVxuXG4gICAgbGV0IGxpc3RhRW50cmFkYSA9IFtdXG4gICAgdGhpcy5wYXJhbWV0cm9zLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICBsaXN0YUVudHJhZGEucHVzaChlbGVtZW50LnVuaW9uRFRPKVxuICAgIH0pXG4gICAgdGhpcy5lamVjdWNpb25SZXBvcnRlU2VydmljZS5kZXNjYXJnYXJSZXBvcnRlKHtcbiAgICAgIHJlcG9ydGU6IHRoaXMucmVwb3J0ZSxcbiAgICAgIHBhcmFtZXRyb3M6IGxpc3RhRW50cmFkYSxcbiAgICAgIHRpcG9SZXBvcnRlOiB0aGlzLnRpcG9SZXBvcnRlLFxuICAgICAgb3BlcmFjaW9uOiB0aGlzLm9wZXJhY2lvbixcbiAgICAgIGNvcnJlbzogdGhpcy5jb3JyZW8sXG4gICAgICBlbmRwb2ludEdlbmVyYWRvclJlcG9ydGVzOiAnJ1xuICAgIH0pLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiBkYXRhID0+e1xuICAgICAgICBjb25zb2xlLmxvZyhkYXRhKVxuICAgICAgICB0aGlzLm5vdGlmaWNhY2lvblNlcnZpY2Uuc2hvd0luZm8oZGF0YS5tZW5zYWplKVxuICAgICAgICBpZiAoIWRhdGEuYXJjaGl2bykge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkZWNvZGVkRGF0YSA9IGF0b2IoZGF0YS5hcmNoaXZvKTtcbiAgICAgICAgY29uc3QgYnl0ZU51bWJlcnMgPSBuZXcgQXJyYXkoZGVjb2RlZERhdGEubGVuZ3RoKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkZWNvZGVkRGF0YS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGJ5dGVOdW1iZXJzW2ldID0gZGVjb2RlZERhdGEuY2hhckNvZGVBdChpKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBieXRlQXJyYXkgPSBuZXcgVWludDhBcnJheShieXRlTnVtYmVycyk7XG5cbiAgICAgICAgLy8gQ3JlYSB1biBvYmpldG8gQmxvYiBjb24gbG9zIGJ5dGVzIGRlY29kaWZpY2Fkb3MgeSBlbCB0aXBvIE1JTUUgZGVsIGFyY2hpdm9cbiAgICAgICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtieXRlQXJyYXldLCB7IHR5cGU6IGRhdGEubWltZSB9KTtcblxuICAgICAgICAvLyBDcmVhIHVuYSBVUkwgZGVsIG9iamV0byBCbG9iXG4gICAgICAgIGNvbnN0IHVybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG5cbiAgICAgICAgLy8gQ3JlYSB1biBlbmxhY2UgZGUgZGVzY2FyZ2EgeSBoYXogY2xpYyBlbiDDqWwgcGFyYSBpbmljaWFyIGxhIGRlc2NhcmdhXG4gICAgICAgIGNvbnN0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgICAgIGxpbmsuaHJlZiA9IHVybDtcbiAgICAgICAgbGluay5kb3dubG9hZCA9IGRhdGEubm9tYnJlQXJjaGl2byAgKyBkYXRhLmV4dGVuc2lvbjtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChsaW5rKTtcbiAgICAgICAgbGluay5jbGljaygpO1xuXG4gICAgICAgIC8vIExpbXBpYSBsYSBVUkwgY3JlYWRhXG4gICAgICAgIFVSTC5yZXZva2VPYmplY3RVUkwodXJsKTtcbiAgICAgIH1cbiAgICB9KVxuICB9XG4gIFxuICBkZXNjYXJnYXJSZXBvcnRlU2luSGlsbygpe1xuICAgIGxldCBsaXN0YUVudHJhZGEgPSBbXVxuICAgIHRoaXMucGFyYW1ldHJvcy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgbGlzdGFFbnRyYWRhLnB1c2goZWxlbWVudC51bmlvbkRUTylcbiAgICB9KVxuICAgIHRoaXMuZWplY3VjaW9uUmVwb3J0ZVNlcnZpY2UuZGVzY2FyZ2FyUmVwb3J0ZSh7XG4gICAgICBuZXh0OiBkYXRhID0+e1xuICAgICAgICB0aGlzLm5vdGlmaWNhY2lvblNlcnZpY2Uuc2hvd0luZm8oZGF0YS5tZW5zYWplKVxuICAgICAgICBjb25zdCBkZWNvZGVkRGF0YSA9IGF0b2IoZGF0YS5hcmNoaXZvKTtcbiAgICAgICAgY29uc3QgYnl0ZU51bWJlcnMgPSBuZXcgQXJyYXkoZGVjb2RlZERhdGEubGVuZ3RoKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkZWNvZGVkRGF0YS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGJ5dGVOdW1iZXJzW2ldID0gZGVjb2RlZERhdGEuY2hhckNvZGVBdChpKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBieXRlQXJyYXkgPSBuZXcgVWludDhBcnJheShieXRlTnVtYmVycyk7XG5cbiAgICAgICAgLy8gQ3JlYSB1biBvYmpldG8gQmxvYiBjb24gbG9zIGJ5dGVzIGRlY29kaWZpY2Fkb3MgeSBlbCB0aXBvIE1JTUUgZGVsIGFyY2hpdm9cbiAgICAgICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtieXRlQXJyYXldLCB7IHR5cGU6IGRhdGEubWltZSB9KTtcblxuICAgICAgICAvLyBDcmVhIHVuYSBVUkwgZGVsIG9iamV0byBCbG9iXG4gICAgICAgIGNvbnN0IHVybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG5cbiAgICAgICAgLy8gQ3JlYSB1biBlbmxhY2UgZGUgZGVzY2FyZ2EgeSBoYXogY2xpYyBlbiDDqWwgcGFyYSBpbmljaWFyIGxhIGRlc2NhcmdhXG4gICAgICAgIGNvbnN0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgICAgIGxpbmsuaHJlZiA9IHVybDtcbiAgICAgICAgbGluay5kb3dubG9hZCA9IGRhdGEubm9tYnJlQXJjaGl2byArICcuJyArIGRhdGEuZXh0ZW5zaW9uO1xuICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmspO1xuICAgICAgICBsaW5rLmNsaWNrKCk7XG5cbiAgICAgICAgLy8gTGltcGlhIGxhIFVSTCBjcmVhZGFcbiAgICAgICAgVVJMLnJldm9rZU9iamVjdFVSTCh1cmwpO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiBlcnIgPT4ge1xuICAgICAgICB0aGlzLm5vdGlmaWNhY2lvblNlcnZpY2Uuc2hvd0Vycm9yKEpTT04uc3RyaW5naWZ5KGVyci5lcnJvci5tZW5zYWplRXRpcXVldGEpKVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICBnZW5lcmFyVGFibGEoKXtcbiAgICB0aGlzLnBhbmVsID0gJ3Jlc3VsdGFkbydcbiAgICBsZXQgbGlzdGFFbnRyYWRhID0gW11cbiAgICB0aGlzLmNvbHVtbmFzID0gW107XG4gICAgdGhpcy5wYXJhbWV0cm9zLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICBsaXN0YUVudHJhZGEucHVzaChlbGVtZW50LnVuaW9uRFRPKVxuICAgIH0pXG4gICAgdGhpcy5lamVjdWNpb25SZXBvcnRlU2VydmljZS5nZW5lcmFyVGFibGEoe3JlcG9ydGU6IHRoaXMucmVwb3J0ZSwgcGFyYW1ldHJvczogbGlzdGFFbnRyYWRhfSkuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgdmFyIGNvbHVtbmE6IFRhYmxlQ29sdW1uO1xuICAgICAgZGF0YS5jb2x1bW5hcy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgICBjb2x1bW5hID0ge1xuICAgICAgICAgIGZpZWxkOiBlbGVtZW50Lm5vbWJyZS50b0xvd2VyQ2FzZSgpLFxuICAgICAgICAgIGhlYWRlcjogZWxlbWVudC5ub21icmUsXG4gICAgICAgICAgd2lkdGg6IDMwMCxcbiAgICAgICAgICBjYW5PcmRlcjogdHJ1ZSxcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5jb2x1bW5hcy5wdXNoKGNvbHVtbmEpXG4gICAgICB9KTtcbiAgICAgIHRoaXMubGlzdGFSZWdpc3RybyA9IGRhdGEubGlzdGFSZWdpc3RybztcbiAgICB9KVxuICB9XG59XG4iLCI8cC1jb25maXJtUG9wdXA+PC9wLWNvbmZpcm1Qb3B1cD5cbjxwLWRpYWxvZyBpZD0ncG9wdXBSZXBvcnRlJyBoZWFkZXI9XCJ7eydyZXBvcnRlc2dlbmVyYWxlcycgfCB0cmFuc2xhdGV9fVwiIFsodmlzaWJsZSldPVwibW9zdHJhclwiIChvblNob3cpPVwibW9zdHJhclBvcHVwKClcIlxuICAgIFticmVha3BvaW50c109XCJ7Jzk2MHB4JzogJzc1dncnLCAnNjQwcHgnOiAnMTAwdncnfVwiIFtzdHlsZV09XCJ7d2lkdGg6ICc1MHZ3J31cIiAob25IaWRlKT1cIm9jdWx0YXIoKVwiIFttb2RhbF09XCJ0cnVlXCI+XG5cbiAgICA8ZGl2ICpuZ0lmPVwicGFuZWwgPT0gJ2VudHJhZGEnXCI+XG4gICAgICAgIDwhLS1TZWd1bmRvIHBsYW5vLS0+XG4gICAgICAgIDxwLWFjY29yZGlvbiBbbXVsdGlwbGVdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgPHAtYWNjb3JkaW9uVGFiIFtzZWxlY3RlZF09XCJ0cnVlXCIgW2hlYWRlcl09XCInc2VndW5kb3BsYW5vJyB8IHRyYW5zbGF0ZVwiICpuZ0lmPVwibGlzdGFTZWd1bmRvUGxhbm8ubGVuZ3RoID4gMFwiPlxuICAgICAgICAgICAgICAgIDxwLXRhYmxlIFt2YWx1ZV09XCJsaXN0YVNlZ3VuZG9QbGFub1wiIHJlc3BvbnNpdmVMYXlvdXQ9XCJzY3JvbGxcIiBbc2Nyb2xsYWJsZV09XCJ0cnVlXCIgc2VsZWN0aW9uTW9kZT1cInNpbmdsZVwiXG4gICAgICAgICAgICAgICAgICAgIFtyb3dzXT1cInBhZ2luYXRvci5yb3dzXCIgW3RvdGFsUmVjb3Jkc109XCJwYWdpbmF0b3IudG90YWxSZWNvcmRzXCJcbiAgICAgICAgICAgICAgICAgICAgW3BhZ2luYXRvcl09XCJwYWdpbmF0b3IudG90YWxSZWNvcmRzID4gcGFnaW5hdG9yLnJvd3NcIiAob25Sb3dTZWxlY3QpPVwidmVyU2VndW5kb1BsYW5vKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlclwiPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8dHIgY2xhc3M9XCJmb25kb1RhYmxhUGluY2lwYWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+e3snZXN0YWRvJyB8IHRyYW5zbGF0ZSB9fSA8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD57eydmZWNoYWluaWNpYWwnIHwgdHJhbnNsYXRlIH19IDwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiYm9keVwiIGxldC1lbnRyYWRhPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRyIFtwU2VsZWN0YWJsZVJvd109XCJlbnRyYWRhXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7ZW50cmFkYS5ub21icmVFc3RhZG99fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7ZW50cmFkYS5pbmljaWEgfCBkYXRlOiAnZGQvTU0veXl5eSBoOm1tIGEnfX08L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L3AtdGFibGU+XG4gICAgICAgICAgICA8L3AtYWNjb3JkaW9uVGFiPlxuICAgICAgICA8L3AtYWNjb3JkaW9uPlxuICAgICAgICA8cC1maWVsZHNldCBjbGFzcz1cIm10LTBcIiAgKm5nSWY9XCJtb3N0cmFyUGFyYW1ldHJvc1wiPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlclwiPlxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZ2x5cGhpY29ucyBnbHlwaGljb25zLWJvb2tcIiBzdHlsZT1cImNvbG9yOnZhcigtLWNvbG9yLTQwMClcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7J2VudHJhZGEnIHwgdHJhbnNsYXRlfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPHAtdGFibGUgW3ZhbHVlXT1cInBhcmFtZXRyb3NcIiA+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImJvZHlcIiBsZXQtcGFyYW1ldHJvPlxuICAgICAgICAgICAgICAgICAgICA8dHIgW3BTZWxlY3RhYmxlUm93XT1cInBhcmFtZXRyb1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLTx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgKm5nSWY9XCJwYXJhbWV0cm8udW5pb25EVE8uc29saWNpdGFyID09ICdTJ1wiPnt7IHBhcmFtZXRyby51bmlvbkRUTy5kZXNjcmlwY2lvbiB9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPi0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkICAqbmdJZj1cInBhcmFtZXRyby51bmlvbkRUTy5zb2xpY2l0YXIgPT0gJ1MnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtZmxvYXRMYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHBJbnB1dFRleHQgWyhuZ01vZGVsKV09XCJwYXJhbWV0cm8udW5pb25EVE8udmFsb3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIocGFyYW1ldHJvLnVuaW9uRFRPLnRpcG9EYXRvID09ICdUJyB8fCBwYXJhbWV0cm8udW5pb25EVE8udGlwb0RhdG8gPT0gJ0UnKSAmJiBwYXJhbWV0cm8udW5pb25EVE8udGlwbyA9PSAnRCdcIiAvPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBwSW5wdXRUZXh0IFsobmdNb2RlbCldPVwicGFyYW1ldHJvLnVuaW9uRFRPLnZhbG9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicGFyYW1ldHJvLnVuaW9uRFRPLnRpcG9EYXRvID09ICdVJyAmJiBwYXJhbWV0cm8udW5pb25EVE8udGlwbyA9PSAnRCdcIiAvPlxuXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtaW5wdXROdW1iZXIgWyhuZ01vZGVsKV09XCJwYXJhbWV0cm8udW5pb25EVE8udmFsb3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJwYXJhbWV0cm8udW5pb25EVE8udGlwb0RhdG8gPT0gJ04nICYmIHBhcmFtZXRyby51bmlvbkRUTy50aXBvID09ICdEJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3AtaW5wdXROdW1iZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtaW5wdXROdW1iZXIgWyhuZ01vZGVsKV09XCJwYXJhbWV0cm8udW5pb25EVE8udmFsb3JcIiBtb2RlPVwiZGVjaW1hbFwiIFttaW5GcmFjdGlvbkRpZ2l0c109XCIyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYXhGcmFjdGlvbkRpZ2l0c109XCIxNlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInBhcmFtZXRyby51bmlvbkRUTy50aXBvRGF0byA9PSAnQicgJiYgcGFyYW1ldHJvLnVuaW9uRFRPLnRpcG8gPT0gJ0QnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcC1pbnB1dE51bWJlcj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC1kcm9wZG93biBbb3B0aW9uc109XCJwYXJhbWV0cm8ubGlzdGFcIiBbYXV0b0Rpc3BsYXlGaXJzdF09XCJmYWxzZVwiIGFwcGVuZFRvPVwiYm9keVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25DaGFuZ2UpPVwiY2FtYmlvVmFsb3JMaXN0YSgkZXZlbnQsIHBhcmFtZXRybylcIiBbKG5nTW9kZWwpXT1cInBhcmFtZXRyby51bmlvbkRUTy5sbGF2ZUxpc3RhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbkxhYmVsPVwibGFiZWxcIiBvcHRpb25WYWx1ZT1cInZhbHVlXCIgKm5nSWY9XCJwYXJhbWV0cm8udW5pb25EVE8udGlwbyA9PSAnTCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wLWRyb3Bkb3duPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLWNhbGVuZGFyIHR5cGU9XCJ0ZXh0XCIgWyhuZ01vZGVsKV09XCJwYXJhbWV0cm8udW5pb25EVE8udmFsb3JcIiBkYXRlRm9ybWF0PVwiZGQvbW0veXlcIiBhcHBlbmRUbz1cImJvZHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJwYXJhbWV0cm8udW5pb25EVE8udGlwb0RhdG8gPT0gJ0YnICYmIHBhcmFtZXRyby51bmlvbkRUTy50aXBvID09ICdEJ1wiPjwvcC1jYWxlbmRhcj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgKm5nSWY9XCJwYXJhbWV0cm8udW5pb25EVE8uc29saWNpdGFyID09ICdTJ1wiPnt7IHBhcmFtZXRyby51bmlvbkRUTy5kZXNjcmlwY2lvbiB9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wLWZsb2F0TGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L3AtdGFibGU+XG4gICAgICAgIDwvcC1maWVsZHNldD5cbiAgICAgICAgPHAtZmllbGRzZXQgY2xhc3M9XCJtdC0wXCIgKm5nSWY9XCJnZW5lcmFjaW9uZXMubGVuZ3RoID4gMFwiPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlclwiPlxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZ2x5cGhpY29ucyBnbHlwaGljb25zLWJvb2tcIiBzdHlsZT1cImNvbG9yOnZhcigtLWNvbG9yLTQwMClcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7J2dlbmVyYXInIHwgdHJhbnNsYXRlfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWZsdWlkIHAtZm9ybWdyaWQgZ3JpZCB0ZXh0LXhzXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZCBjb2wtMTIgbWQ6Y29sLTYgbGc6Y29sLTMgYWxpZ24taXRlbXMtY2VudGVyIG1iLTBcIiAgKm5nRm9yPVwibGV0IHZhbG9yIG9mIGdlbmVyYWNpb25lc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkLXJhZGlvYnV0dG9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtcmFkaW9CdXR0b24gKG9uQ2xpY2spPVwiY2FtYmlvVGlwb1JlcG9ydGUoJGV2ZW50KVwiIFtpbnB1dElkXT1cInZhbG9yLnZhbHVlXCIgbmFtZT1cInRpcG9SZXBvcnRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cInZhbG9yLnZhbHVlXCIgWyhuZ01vZGVsKV09XCJ0aXBvUmVwb3J0ZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIFtmb3JdPVwidmFsb3IudmFsdWVcIiBjbGFzcz1cIm1sLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgdmFsb3IubGFiZWwgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvcC1maWVsZHNldD5cblxuICAgICAgICA8cC1maWVsZHNldCBjbGFzcz1cIm10LTBcIiAqbmdJZj1cIidBJyAhPSB0aXBvUmVwb3J0ZSAmJiBtb3N0cmFyUXVlRGVzZWFIYWNlclwiID5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJoZWFkZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImdseXBoaWNvbnMgZ2x5cGhpY29ucy1ib29rXCIgc3R5bGU9XCJjb2xvcjp2YXIoLS1jb2xvci00MDApXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj7Cv1F1w6kgZGVzZWEgaGFjZXI/PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDxsYWJlbCAqbmdJZj1cInRpcG9SZXBvcnRlICYmICdGJyA9PSB0aXBvUmVwb3J0ZVwiPnt7J3NlbGVjY2lvbmV0aXBvYXJjaGl2b2Rlc2VhZ2VuZXJhcicgfCB0cmFuc2xhdGV9fTwvbGFiZWw+XG5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ0aXBvUmVwb3J0ZSAmJiAnRicgPT0gdGlwb1JlcG9ydGVcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWZsdWlkIHAtZm9ybWdyaWQgZ3JpZCB0ZXh0LXhzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQgY29sLTEyIG1kOmNvbC02IGxnOmNvbC0zIGFsaWduLWl0ZW1zLWNlbnRlciBtYi0wXCIgICpuZ0Zvcj1cImxldCB2YWxvciBvZiBtYXBhVGlwb0FyY2hpdm9zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkLXJhZGlvYnV0dG9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLXJhZGlvQnV0dG9uIChvbkNsaWNrKT1cImNhbWJpb1RpcG9BcmNoaXZvKCRldmVudClcIiBbaW5wdXRJZF09XCJ2YWxvci5jb2RpZ29cIiBuYW1lPVwidGlwb0FyY2hpdm9cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cInZhbG9yLmNvZGlnb1wiICBbKG5nTW9kZWwpXT1cInRpcG9BcmNoaXZvXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIFtmb3JdPVwidmFsb3IuY29kaWdvXCIgY2xhc3M9XCJtbC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyB2YWxvci5ub21icmUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibW9zdHJhckFyY2hpdm9zU29wb3J0ZVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJEZXRhbGxlcmVwb3J0ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1mbHVpZCBwLWZvcm1ncmlkIGdyaWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZCBjb2wtMTIgbWQ6Y29sLTEyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtZmxvYXRMYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtZHJvcGRvd24gW29wdGlvbnNdPVwibGlzdGFkb0FyY2hpdm9Tb3BvcnRlXCIgW2F1dG9EaXNwbGF5Rmlyc3RdPVwiZmFsc2VcIiBvcHRpb25MYWJlbD1cImRlc2NyaXBjaW9uXCIgYXBwZW5kVG89XCJib2R5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvblZhbHVlPVwibGxhdmVUYWJsYVwiIFsobmdNb2RlbCldPVwic29wb3J0ZUJhc2VcIiAob25DaGFuZ2UpPVwiY2FtYmlvU29wb3J0ZUJhc2UoJGV2ZW50KVwiPjwvcC1kcm9wZG93bj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlNvcG9ydGUgQmFzZTo8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcC1mbG9hdExhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ0aXBvUmVwb3J0ZSA9PSAnRicgJiYgdGlwb0FyY2hpdm8gfHwgdGlwb1JlcG9ydGUgIT0gJ0YnIFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtZmx1aWQgcC1mb3JtZ3JpZCBncmlkIHRleHQteHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZCBjb2wtMTIgbWQ6Y29sLTYgbGc6Y29sLTMgYWxpZ24taXRlbXMtY2VudGVyIG1iLTBcIiAgKm5nRm9yPVwibGV0IHZhbG9yIG9mIG9wZXJhY2lvbmVzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkLXJhZGlvYnV0dG9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLXJhZGlvQnV0dG9uIFtpbnB1dElkXT1cInZhbG9yLnZhbHVlXCIgbmFtZT1cIm9wZXJhY2lvblwiIFt2YWx1ZV09XCJ2YWxvci52YWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIm9wZXJhY2lvblwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBbZm9yXT1cInZhbG9yLnZhbHVlXCIgY2xhc3M9XCJtbC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyB2YWxvci5sYWJlbCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwib3BlcmFjaW9uID09ICdFJ1wiPlxuICAgICAgICAgICAgICAgIDxwLWZsb2F0TGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBwSW5wdXRUZXh0IFsobmdNb2RlbCldPVwiY29ycmVvXCIgdHlwZT1cInRleHRcIiBbZGlzYWJsZWRdPVwiYmxvcXVlYXJDb3JyZW9cIiAvPlxuICAgICAgICAgICAgICAgICAgICA8bGFiZWw+e3snY29ycmVvJyB8IHRyYW5zbGF0ZX19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8L3AtZmxvYXRMYWJlbD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3AtZmllbGRzZXQ+XG4gICAgICAgIFxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktY29udGVudC1lbmRcIj5cbiAgICAgICAgICAgIDxidXR0b24gcEJ1dHRvbiBwUmlwcGxlIGNsYXNzPVwibS0yIG10LTQgcC1idXR0b24gcC1idXR0b24tb3V0bGluZWQgYmFja2dyb3VuZC0xMDBcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwidmFsaWRhckNvbnRyb2xGdW5jaW9uYWxpZGFkKCdlamVjcmVwbzpzZW50ZW5jaWEnKVwiIGxhYmVsPVwiVmVyIHNlbnRlbmNpYVwiIGljb249XCJnbHlwaGljb25zIGdseXBoaWNvbnMtZXllLW9wZW5cIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzZW50ZW5jaWEoKVwiPjwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvbiBwQnV0dG9uIHBSaXBwbGUgY2xhc3M9XCJtLTIgbXQtNCBwLWJ1dHRvbi1yYWlzZWRcIiAqbmdJZj1cIm9wZXJhY2lvbiA9PSAnRSdcIiBpY29uPVwiZ2x5cGhpY29ucyBnbHlwaGljb25zLWVudmVsb3BlXCJcbiAgICAgICAgICAgICAgICBsYWJlbD1cInt7J2xpbmtfZW52aWFyJyB8IHRyYW5zbGF0ZX19XCIgKGNsaWNrKT1cImVudmlhclNlZ3VuZG9QbGFubygpXCI+PC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIHBCdXR0b24gcFJpcHBsZSBjbGFzcz1cIm0tMiBtdC00IHAtYnV0dG9uLXJhaXNlZFwiICpuZ0lmPVwib3BlcmFjaW9uID09ICdEJyAmJiByZXBvcnRlLm1vbWVudG8gIT0gJ0QnXCIgaWNvbj1cImdseXBoaWNvbnMgZ2x5cGhpY29ucy1jaGVja1wiXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJ7eydnZW5lcmFyJyB8IHRyYW5zbGF0ZX19XCIgKGNsaWNrKT1cImRlc2NhcmdhclJlcG9ydGUoKVwiPjwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvbiBwQnV0dG9uIHBSaXBwbGUgY2xhc3M9XCJtLTIgbXQtNCBwLWJ1dHRvbi1yYWlzZWRcIiAqbmdJZj1cIm9wZXJhY2lvbiA9PSAnRCcgJiYgcmVwb3J0ZS5tb21lbnRvID09ICdEJ1wiIGljb249XCJnbHlwaGljb25zIGdseXBoaWNvbnMtY2hlY2tcIlxuICAgICAgICAgICAgICAgIGxhYmVsPVwie3snZ2VuZXJhcicgfCB0cmFuc2xhdGV9fVwiIChjbGljayk9XCJkZXNjYXJnYXJSZXBvcnRlU2luSGlsbygpXCI+PC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIHBCdXR0b24gcFJpcHBsZSBjbGFzcz1cIm0tMiBtdC00IHAtYnV0dG9uLXJhaXNlZFwiICpuZ0lmPVwidGlwb1JlcG9ydGUgPT0gJ0EnXCIgaWNvbj1cImdseXBoaWNvbnMgZ2x5cGhpY29ucy1jaGVja1wiXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJ7eydnZW5lcmFyJyB8IHRyYW5zbGF0ZX19XCIgKGNsaWNrKT1cImdlbmVyYXJUYWJsYSgpXCI+PC9idXR0b24+XG4gICAgICAgICAgICA8IS0tcHRlIHByb2Nlc28gZXh0ZXJuby0tPlxuICAgICAgICAgICAgPGJ1dHRvbiBwQnV0dG9uIHBSaXBwbGUgY2xhc3M9XCJtLTIgbXQtNCBwLWJ1dHRvbi1yYWlzZWRcIiAqbmdJZj1cIm9wZXJhY2lvbiA9PSAnTScgfHwgb3BlcmFjaW9uID09ICdNUCdcIiBpY29uPVwiZ2x5cGhpY29ucyBnbHlwaGljb25zLWVudmVsb3BlXCJcbiAgICAgICAgICAgICAgICBsYWJlbD1cInt7J2xpbmtfZW52aWFyJyB8IHRyYW5zbGF0ZX19XCIgKGNsaWNrKT1cImVudmlhclNlZ3VuZG9QbGFubygpXCI+PC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIHBCdXR0b24gcFJpcHBsZSBjbGFzcz1cIm0tMiBtdC00IHAtYnV0dG9uLXJhaXNlZFwiICpuZ0lmPVwib3BlcmFjaW9uID09ICdQJ1wiIGljb249XCJnbHlwaGljb25zIGdseXBoaWNvbnMtZm9sZGVyLW9wZW5cIlxuICAgICAgICAgICAgICAgIGxhYmVsPVwie3snbGlua19wdWJsaWNhcicgfCB0cmFuc2xhdGV9fVwiIChjbGljayk9XCJlbnZpYXJTZWd1bmRvUGxhbm8oKVwiPjwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvbiBwQnV0dG9uIHBSaXBwbGUgY2xhc3M9XCJtLTIgbXQtNCBwLWJ1dHRvbi1yYWlzZWRcIiAqbmdJZj1cIm9wZXJhY2lvbiA9PSdTJ1wiICBpY29uPVwiZ2x5cGhpY29ucyBnbHlwaGljb25zLWNoZWNrXCJcbiAgICAgICAgICAgICAgICBsYWJlbD1cInt7J2xpbmtfZ2VuZXJhcicgfCB0cmFuc2xhdGV9fVwiIChjbGljayk9XCJlbnZpYXJTZWd1bmRvUGxhbm8oKVwiPjwvYnV0dG9uPlxuXG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCJwYW5lbCA9PSAncmVzdWx0YWRvJ1wiPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwib3BlcmFjaW9uID09ICdoaXN0b3JpY28nXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgbXQtMiBtYi0yXCI+XG4gICAgICAgICAgICAgICAgPGg0IGNsYXNzPVwidGV4dC1iYXNlIG10LTIgbWwtMlwiPnt7J2RldGFsbGUnIHwgdHJhbnNsYXRlfX0ge3snc2VndW5kb3BsYW5vJyB8IHRyYW5zbGF0ZX19PC9oND5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIHBCdXR0b24gcFJpcHBsZSBpY29uPVwicGkgcGktY2hldnJvbi1sZWZ0XCIgY2xhc3M9XCJwLWJ1dHRvbi10ZXh0IGZvbnQtc2VtaWJvbGQgZmxleC1zaHJpbmstMCBtbC00XCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZWdyZXNhclNlZ3VuZG9QbGFubygpXCIgbGFiZWw9XCJ7eydsaW5rX3JlZ3Jlc2FyJyB8IHRyYW5zbGF0ZX19XCIgPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCIgSW5wdXRncm91cFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtZmx1aWQgcC1mb3JtZ3JpZCBncmlkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQgY29sLTEyIG1kOmNvbC00IGxnOmNvbC00XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtZmxvYXRMYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtY2FsZW5kYXIgdHlwZT1cInRleHRcIiBbKG5nTW9kZWwpXT1cImVsZW1lbnRvQm9ycmFyLmluaWNpYVwiIFtkaXNhYmxlZF09XCJ0cnVlXCIgYXBwZW5kVG89XCJib2R5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93VGltZV09XCJ0cnVlXCIgW3Nob3dTZWNvbmRzXT1cInRydWVcIiBkYXRlRm9ybWF0PVwiZGQvbW0veXlcIj48L3AtY2FsZW5kYXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD57eygnZmVjaGFpbmljaWFsJykgfCB0cmFuc2xhdGV9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wLWZsb2F0TGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkIGNvbC0xMiBtZDpjb2wtNCBsZzpjb2wtNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLWZsb2F0TGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLWNhbGVuZGFyIHR5cGU9XCJ0ZXh0XCIgWyhuZ01vZGVsKV09XCJlbGVtZW50b0JvcnJhci50ZXJtaW5hXCIgW2Rpc2FibGVkXT1cInRydWVcIiBhcHBlbmRUbz1cImJvZHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dUaW1lXT1cInRydWVcIiBbc2hvd1NlY29uZHNdPVwidHJ1ZVwiIGRhdGVGb3JtYXQ9XCJkZC9tbS95eVwiPjwvcC1jYWxlbmRhcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPnt7KCdmZWNoYWZpbmFsJykgfCB0cmFuc2xhdGV9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wLWZsb2F0TGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkIGNvbC0xMiBtZDpjb2wtNCBsZzpjb2wtNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLWZsb2F0TGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBwSW5wdXRUZXh0IHR5cGU9XCJ0ZXh0XCIgW3JlYWRvbmx5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZWxlbWVudG9Cb3JyYXIubm9tYnJlRXN0YWRvXCIgW2Rpc2FibGVkXT1cInRydWVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+e3soJ2VzdGFkbycpIHwgdHJhbnNsYXRlfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcC1mbG9hdExhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZCBjb2wtMTIgbWQ6Y29sLTEyIGxnOmNvbC0xMlwiICpuZ0lmPVwiZWxlbWVudG9Cb3JyYXIuZXN0YWRvID09ICdFJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD57eygnbWVuc2FqZScpIHwgdHJhbnNsYXRlfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBjbGFzcz1cIm1pbi13LWZ1bGwgcC1pbnB1dHRleHRhcmVhIHAtaW5wdXR0ZXh0IHAtY29tcG9uZW50IHAtZWxlbWVudCBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dzPVwiNVwiIGNvbHM9XCIzMFwiIHBJbnB1dFRleHRhcmVhIFsobmdNb2RlbCldPVwiZWxlbWVudG9Cb3JyYXIuYXJjaGl2b1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJ0cnVlXCI+PC90ZXh0YXJlYT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBwQnV0dG9uIHBSaXBwbGUgY2xhc3M9XCJtbC0yIHAtYnV0dG9uIHAtYnV0dG9uLXJhaXNlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJlbGVtZW50b0JvcnJhci5lc3RhZG8gPT0gJ1QnXCIgaWNvbj1cInBpIHBpLWRvd25sb2FkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD1cInt7J2xpbmtfZGVzY2FyZ2FyJyB8IHRyYW5zbGF0ZX19XCIgKGNsaWNrKT1cImRlc2NhcmdhckFyY2hpdm8oKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHBCdXR0b24gcFJpcHBsZSBjbGFzcz1cIm1sLTIgcC1idXR0b24tb3V0bGluZWRcIiBpY29uPVwiZ2x5cGhpY29ucyBnbHlwaGljb25zLWJpblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9XCJ7eydsaW5rX2VsaW1pbmFyJyB8IHRyYW5zbGF0ZX19XCIgKGNsaWNrKT1cImVsaW1pbmFyU2VndW5kb1BsYW5vKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2ICpuZ0lmPVwidGlwb1JlcG9ydGUgPT0gJ0EnXCIgPlxuICAgICAgICAgICAgPHAtdGFibGUgW3ZhbHVlXT1cImxpc3RhUmVnaXN0cm9cIiByZXNwb25zaXZlTGF5b3V0PVwic2Nyb2xsXCIgW3Njcm9sbGFibGVdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgW3Jvd3NdPVwiMTBcIiBbdG90YWxSZWNvcmRzXT1cImxpc3RhUmVnaXN0cm8ubGVuZ3RoXCIgW3BhZ2luYXRvcl09XCJsaXN0YVJlZ2lzdHJvLmxlbmd0aCA+IDEwXCIgPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJoZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPHRyIGNsYXNzPVwiZm9uZG9UYWJsYVBpbmNpcGFsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggW3N0eWxlLndpZHRoLnB4XT1cImNvbC53aWR0aCB8fCAyMDBcIiAqbmdGb3I9XCJsZXQgY29sIG9mIGNvbHVtbmFzXCI+e3sgY29sLmhlYWRlciB9fTwvdGg+XG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiYm9keVwiIGxldC1lbnRyYWRhPlxuICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgW3N0eWxlLndpZHRoLnB4XT1cImNvbC53aWR0aCB8fCAyMDBcIiAqbmdGb3I9XCJsZXQgY29sIG9mIGNvbHVtbmFzXCI+e3sgZW50cmFkYVtjb2wuZmllbGRdIH19PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJlbXB0eW1lc3NhZ2VcIj5cbiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJwLTMgZm9udC1tZWRpdW0gZW1wdHltZXNzYWdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eydtZW5zYWpldGFibGF2YWNpYScgfCB0cmFuc2xhdGV9fVxuICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvcC10YWJsZT5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbjwvcC1kaWFsb2c+XG48YXBwLXBvcHVwLXNlbnRlbmNpYSBbcmVwb3J0ZV09XCJyZXBvcnRlXCIgW3BhcmFtZXRyb3NdPVwicGFyYW1ldHJvc1wiIFttb3N0cmFyUG9wdXBdPVwibW9zdHJhclBvcHVwU2VudGVuY2lhXCJcbiAgICAocmVncmVzYXIpPVwicmVncmVzYXJTZW50ZW5jaWEoJGV2ZW50KVwiPjwvYXBwLXBvcHVwLXNlbnRlbmNpYT4iXX0=