general-library-union 2.3.35 → 2.3.36

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 (594) hide show
  1. package/.browserslistrc +15 -0
  2. package/.editorconfig +16 -0
  3. package/.vscode/extensions.json +4 -0
  4. package/.vscode/launch.json +20 -0
  5. package/.vscode/tasks.json +42 -0
  6. package/angular.json +130 -0
  7. package/karma.conf.js +44 -0
  8. package/ng-package.json +21 -0
  9. package/package.json +68 -57
  10. package/{public-api.d.ts → public-api.ts} +188 -154
  11. package/src/app/app.component.html +0 -0
  12. package/src/app/app.component.scss +0 -0
  13. package/src/app/app.component.spec.ts +29 -0
  14. package/src/app/app.component.ts +12 -0
  15. package/src/app/app.config.ts +8 -0
  16. package/src/app/app.module.ts +10 -0
  17. package/src/app/app.routes.ts +3 -0
  18. package/src/app/core/componentes/breadcrumb/breadcrumb.component.html +6 -0
  19. package/src/app/core/componentes/breadcrumb/breadcrumb.component.scss +0 -0
  20. package/src/app/core/componentes/breadcrumb/breadcrumb.component.ts +34 -0
  21. package/src/app/core/componentes/carga-breadcrumb/carga-breadcrumb.component.html +1 -0
  22. package/src/app/core/componentes/carga-breadcrumb/carga-breadcrumb.component.scss +0 -0
  23. package/src/app/core/componentes/carga-breadcrumb/carga-breadcrumb.component.ts +31 -0
  24. package/src/app/core/componentes/carga-pantalla-completa/carga-pantalla-completa.component.html +9 -0
  25. package/src/app/core/componentes/carga-pantalla-completa/carga-pantalla-completa.component.scss +28 -0
  26. package/src/app/core/componentes/carga-pantalla-completa/carga-pantalla-completa.component.ts +32 -0
  27. package/src/app/core/componentes/filtro-general/filtro-general.component.html +34 -0
  28. package/src/app/core/componentes/filtro-general/filtro-general.component.scss +3 -0
  29. package/src/app/core/componentes/filtro-general/filtro-general.component.ts +154 -0
  30. package/src/app/core/componentes/footer/footer.component.html +19 -0
  31. package/src/app/core/componentes/footer/footer.component.scss +3 -0
  32. package/src/app/core/componentes/footer/footer.component.ts +24 -0
  33. package/src/app/core/componentes/formulariodinamico/formulariodinamico.component.html +267 -0
  34. package/src/app/core/componentes/formulariodinamico/formulariodinamico.component.scss +21 -0
  35. package/src/app/core/componentes/formulariodinamico/formulariodinamico.component.ts +275 -0
  36. package/src/app/core/componentes/formulariodinamico/objetosformulario/{Cambio.d.ts → Cambio.ts} +13 -7
  37. package/src/app/core/componentes/formulariodinamico/objetosformulario/CampoFormulario.ts +118 -0
  38. package/src/app/core/componentes/formulariodinamico/objetosformulario/CampoFormularioCons.ts +76 -0
  39. package/src/app/core/componentes/formulariodinamico/objetosformulario/CampoFormularioNuevo.ts +67 -0
  40. package/src/app/core/componentes/formulariodinamico/objetosformulario/HashDirective.ts +11 -0
  41. package/src/app/core/componentes/inicio-component/inicio-component.component.html +29 -0
  42. package/src/app/core/componentes/inicio-component/inicio-component.component.scss +69 -0
  43. package/src/app/core/componentes/inicio-component/inicio-component.component.ts +65 -0
  44. package/src/app/core/componentes/menu/menu.component.html +13 -0
  45. package/src/app/core/componentes/menu/menu.component.scss +36 -0
  46. package/src/app/core/componentes/menu/menu.component.ts +35 -0
  47. package/src/app/core/componentes/tabla-general/tabla-general.component.html +90 -0
  48. package/src/app/core/componentes/tabla-general/tabla-general.component.scss +0 -0
  49. package/src/app/core/componentes/tabla-general/tabla-general.component.ts +96 -0
  50. package/src/app/core/core.module.ts +22 -0
  51. package/src/app/core/errores/authentication.error.ts +6 -0
  52. package/src/app/core/modelos/error-response.model.ts +9 -0
  53. package/src/app/core/modelos/table-column.model.ts +10 -0
  54. package/src/app/core/modelos/user.model.ts +6 -0
  55. package/src/app/core/plantilla-general/plantilla-general.template.html +139 -0
  56. package/src/app/core/plantilla-general/plantilla-general.template.scss +37 -0
  57. package/src/app/core/plantilla-general/plantilla-general.template.ts +229 -0
  58. package/src/app/core/servicios/auth.service.ts +183 -0
  59. package/src/app/core/servicios/cargar-control-funcionalidad.service.ts +49 -0
  60. package/src/app/core/servicios/data-exporter-table.utils.ts +55 -0
  61. package/src/app/core/servicios/error-interceptor.service.ts +145 -0
  62. package/src/app/core/servicios/guardias/auth.guard.ts +51 -0
  63. package/src/app/core/servicios/guardias/publico.guard.ts +22 -0
  64. package/src/app/core/servicios/interceptores/token-interceptor.service.ts +110 -0
  65. package/src/app/core/servicios/loading.service.ts +48 -0
  66. package/src/app/core/servicios/menu.service.ts +89 -0
  67. package/src/app/core/servicios/storage.service.ts +68 -0
  68. package/src/app/core/servicios/template.service.ts +91 -0
  69. package/src/app/core/servicios/toast.service.ts +89 -0
  70. package/src/app/core/servicios/utils.service.ts +331 -0
  71. package/src/app/core/sharedlib.module.ts +11 -0
  72. package/src/app/core/utilidades/color.util.ts +197 -0
  73. package/src/app/layout/api/{menuchangeevent.d.ts → menuchangeevent.ts} +4 -4
  74. package/src/app/layout/app.breadcrumb.component.html +20 -0
  75. package/src/app/layout/app.breadcrumb.component.ts +74 -0
  76. package/src/app/layout/app.footer.component.html +18 -0
  77. package/src/app/layout/app.footer.component.ts +15 -0
  78. package/src/app/layout/app.layout.component.html +20 -0
  79. package/src/app/layout/app.layout.component.ts +201 -0
  80. package/src/app/layout/app.layout.module.ts +9 -0
  81. package/src/app/layout/app.menu.component.html +6 -0
  82. package/src/app/layout/app.menu.component.ts +40 -0
  83. package/src/app/layout/app.menu.service.ts +23 -0
  84. package/src/app/layout/app.menuitem.component.ts +250 -0
  85. package/src/app/layout/app.menuprofile.component.html +35 -0
  86. package/src/app/layout/app.menuprofile.component.ts +60 -0
  87. package/src/app/layout/app.rightmenu.component.html +72 -0
  88. package/src/app/layout/app.rightmenu.component.ts +24 -0
  89. package/src/app/layout/app.sidebar.component.html +40 -0
  90. package/src/app/layout/app.sidebar.component.ts +80 -0
  91. package/src/app/layout/app.topbar.component.html +214 -0
  92. package/src/app/layout/app.topbar.component.ts +326 -0
  93. package/src/app/layout/config/app.config.component.html +125 -0
  94. package/src/app/layout/config/app.config.component.ts +206 -0
  95. package/src/app/layout/config/app.config.module.ts +11 -0
  96. package/src/app/layout/service/app.layout.service.ts +191 -0
  97. package/src/app/publico/pages/login/login.page.html +53 -0
  98. package/src/app/publico/pages/login/login.page.scss +122 -0
  99. package/src/app/publico/pages/login/login.page.ts +127 -0
  100. package/src/app/publico/pages/not-found/not-found.page.html +25 -0
  101. package/src/app/publico/pages/not-found/not-found.page.scss +2 -0
  102. package/src/app/publico/pages/not-found/not-found.page.ts +41 -0
  103. package/src/app/publico/pages/seleccion-rol/seleccion-rol.component.html +58 -0
  104. package/src/app/publico/pages/seleccion-rol/seleccion-rol.component.scss +49 -0
  105. package/src/app/publico/pages/seleccion-rol/seleccion-rol.component.ts +169 -0
  106. package/src/app/publico/pages/timeout/timeout.page.html +21 -0
  107. package/src/app/publico/pages/timeout/timeout.page.scss +2 -0
  108. package/src/app/publico/pages/timeout/timeout.page.ts +18 -0
  109. package/src/app/seguridad/constantes/ConstantesGenerales.ts +30 -0
  110. package/src/app/seguridad/constantes/ReporteEntradaConstantes.ts +18 -0
  111. package/src/app/seguridad/constantes/ReporteFuenteConstantes.ts +13 -0
  112. package/src/app/seguridad/modelos/AplicacionModel.ts +11 -0
  113. package/src/app/seguridad/modelos/ArchivoPortalModel.ts +16 -0
  114. package/src/app/seguridad/modelos/AtributoPuntoModel.ts +9 -0
  115. package/src/app/seguridad/modelos/AtributoSSOportalModel.ts +22 -0
  116. package/src/app/seguridad/modelos/{AuditoriaArchivoModel.d.ts → AuditoriaArchivoModel.ts} +13 -10
  117. package/src/app/seguridad/modelos/CargueLineaModel.ts +17 -0
  118. package/src/app/seguridad/modelos/ColoresRGB.ts +17 -0
  119. package/src/app/seguridad/modelos/ComplementoModel.ts +10 -0
  120. package/src/app/seguridad/modelos/ComponentePaginaModel.ts +22 -0
  121. package/src/app/seguridad/modelos/ConexionModel.ts +15 -0
  122. package/src/app/seguridad/modelos/{ContenidoHtmlPortalModel.d.ts → ContenidoHtmlPortalModel.ts} +25 -20
  123. package/src/app/seguridad/modelos/ControlFuncionModel.ts +10 -0
  124. package/src/app/seguridad/modelos/CorreoModel.ts +45 -0
  125. package/src/app/seguridad/modelos/CorreoWSModel.ts +49 -0
  126. package/src/app/seguridad/modelos/CruceRecursoPuntoModel.ts +14 -0
  127. package/src/app/seguridad/modelos/{DatoInicioModel.d.ts → DatoInicioModel.ts} +7 -6
  128. package/src/app/seguridad/modelos/{EjecucionReporteDataModel.d.ts → EjecucionReporteDataModel.ts} +21 -20
  129. package/src/app/seguridad/modelos/EmpresaModel.ts +25 -0
  130. package/src/app/seguridad/modelos/EmpresaSeguridadModel.ts +19 -0
  131. package/src/app/seguridad/modelos/{EntradaComplementoModel.d.ts → EntradaComplementoModel.ts} +9 -6
  132. package/src/app/seguridad/modelos/EtiquetaModel.ts +4 -0
  133. package/src/app/seguridad/modelos/Etiquetas.ts +14 -0
  134. package/src/app/seguridad/modelos/FuenteCampoAtributoModel.ts +21 -0
  135. package/src/app/seguridad/modelos/{FuenteCampoModel.d.ts → FuenteCampoModel.ts} +20 -16
  136. package/src/app/seguridad/modelos/FuenteDato.ts +19 -0
  137. package/src/app/seguridad/modelos/FuenteEntradaModel.ts +9 -0
  138. package/src/app/seguridad/modelos/{FuenteGeneralModel.d.ts → FuenteGeneralModel.ts} +55 -36
  139. package/src/app/seguridad/modelos/FuenteLineaServicioModel.ts +19 -0
  140. package/src/app/seguridad/modelos/FuenteProcesoGeneralModel.ts +14 -0
  141. package/src/app/seguridad/modelos/{FuenteServicioModel.d.ts → FuenteServicioModel.ts} +61 -47
  142. package/src/app/seguridad/modelos/FuncionalidadModel.ts +12 -0
  143. package/src/app/seguridad/modelos/GeneralModel.ts +16 -0
  144. package/src/app/seguridad/modelos/{GrupoAccesoModel.d.ts → GrupoAccesoModel.ts} +9 -6
  145. package/src/app/seguridad/modelos/GrupoControlFuncionModel.ts +12 -0
  146. package/src/app/seguridad/modelos/GrupoFuenteModel.ts +17 -0
  147. package/src/app/seguridad/modelos/GrupoPermisoModel.ts +16 -0
  148. package/src/app/seguridad/modelos/ListaServicioModel.ts +18 -0
  149. package/src/app/seguridad/modelos/LoginModel.ts +19 -0
  150. package/src/app/seguridad/modelos/MensajeSistemaModel.ts +10 -0
  151. package/src/app/seguridad/modelos/{MenuPortalModel.d.ts → MenuPortalModel.ts} +5 -4
  152. package/src/app/seguridad/modelos/ModulosModel.ts +17 -0
  153. package/src/app/seguridad/modelos/PaginaPortalModel.ts +23 -0
  154. package/src/app/seguridad/modelos/ParametroComponenteModel.ts +9 -0
  155. package/src/app/seguridad/modelos/ParametrosGeneralModel.ts +16 -0
  156. package/src/app/seguridad/modelos/PermisoFuncionModel.ts +11 -0
  157. package/src/app/seguridad/modelos/PermisocontenidoModel.ts +20 -0
  158. package/src/app/seguridad/modelos/{PeticionModel.d.ts → PeticionModel.ts} +20 -15
  159. package/src/app/seguridad/modelos/PreguntaSeguridadModel.ts +9 -0
  160. package/src/app/seguridad/modelos/PropiedadModel.ts +12 -0
  161. package/src/app/seguridad/modelos/PublicacionWebModel.ts +29 -0
  162. package/src/app/seguridad/modelos/PuntoProcesoModel.ts +7 -0
  163. package/src/app/seguridad/modelos/RecursoPunto.ts +13 -0
  164. package/src/app/seguridad/modelos/RecursoPuntoModel.ts +13 -0
  165. package/src/app/seguridad/modelos/ReporteBanda.ts +9 -0
  166. package/src/app/seguridad/modelos/ReporteColumna.ts +33 -0
  167. package/src/app/seguridad/modelos/ReporteColumnario.ts +82 -0
  168. package/src/app/seguridad/modelos/ReporteColumnarioMarcador.ts +31 -0
  169. package/src/app/seguridad/modelos/{ReporteEntradaModel.d.ts → ReporteEntradaModel.ts} +21 -19
  170. package/src/app/seguridad/modelos/{ReporteFuenteModel.d.ts → ReporteFuenteModel.ts} +141 -87
  171. package/src/app/seguridad/modelos/ReporteMarcador.ts +40 -0
  172. package/src/app/seguridad/modelos/ReporteSoporte.ts +10 -0
  173. package/src/app/seguridad/modelos/ReporteTabla.ts +14 -0
  174. package/src/app/seguridad/modelos/RespuestaModel.ts +10 -0
  175. package/src/app/seguridad/modelos/{RolModel.d.ts → RolModel.ts} +41 -37
  176. package/src/app/seguridad/modelos/ServidorCorreoModel.ts +31 -0
  177. package/src/app/seguridad/modelos/SistemaMensajeModel.ts +11 -0
  178. package/src/app/seguridad/modelos/SitioPortalModel.ts +29 -0
  179. package/src/app/seguridad/modelos/TareasModel.ts +54 -0
  180. package/src/app/seguridad/modelos/TextoModel.ts +11 -0
  181. package/src/app/seguridad/modelos/TipoEtiqueta.ts +8 -0
  182. package/src/app/seguridad/modelos/UnionModel.ts +14 -0
  183. package/src/app/seguridad/modelos/{UsuarioModel.d.ts → UsuarioModel.ts} +60 -49
  184. package/src/app/seguridad/modelos/UsuariogrupoModel.ts +27 -0
  185. package/src/app/seguridad/modelos/aplicacion-propiedad-model.ts +16 -0
  186. package/src/app/seguridad/modelos/contenidoCorreoModel.ts +13 -0
  187. package/src/app/shared/componentes/input-helper-seleccion-plantilla/input-helper-seleccion-plantilla.component.html +47 -0
  188. package/src/app/shared/componentes/input-helper-seleccion-plantilla/input-helper-seleccion-plantilla.component.scss +8 -0
  189. package/src/app/shared/componentes/input-helper-seleccion-plantilla/input-helper-seleccion-plantilla.component.ts +141 -0
  190. package/src/app/shared/servicios/cargar-archivos.service.ts +51 -0
  191. package/src/app/shared/servicios/cargar-mapas.service.ts +43 -0
  192. package/src/app/shared/servicios/encriptado-basico.service.ts +54 -0
  193. package/src/app/shared/servicios/encriptador-simetrico.service.ts +29 -0
  194. package/src/app/shared/servicios/general.service.ts +124 -0
  195. package/src/app/shared/servicios/parametros-navegacion.service.ts +20 -0
  196. package/src/app/shared/servicios/plantillas.service.ts +22 -0
  197. package/src/app/webcommon/pages/ejecucion-reporte/detalle-campo-reporte/detalle-campo-reporte.component.html +87 -0
  198. package/src/app/webcommon/pages/ejecucion-reporte/detalle-campo-reporte/detalle-campo-reporte.component.scss +0 -0
  199. package/src/app/webcommon/pages/ejecucion-reporte/detalle-campo-reporte/detalle-campo-reporte.component.ts +189 -0
  200. package/src/app/webcommon/pages/ejecucion-reporte/detalle-distribucion-reporte/detalle-distribucion-reporte.component.html +117 -0
  201. package/src/app/webcommon/pages/ejecucion-reporte/detalle-distribucion-reporte/detalle-distribucion-reporte.component.scss +0 -0
  202. package/src/app/webcommon/pages/ejecucion-reporte/detalle-distribucion-reporte/detalle-distribucion-reporte.component.ts +87 -0
  203. package/src/app/webcommon/pages/ejecucion-reporte/detalle-ejecucion-reporte/detalle-ejecucion-reporte.page.html +158 -0
  204. package/src/app/webcommon/pages/ejecucion-reporte/detalle-ejecucion-reporte/detalle-ejecucion-reporte.page.scss +6 -0
  205. package/src/app/webcommon/pages/ejecucion-reporte/detalle-ejecucion-reporte/detalle-ejecucion-reporte.page.ts +345 -0
  206. package/src/app/webcommon/pages/ejecucion-reporte/detalle-entrada-reporte/detalle-entrada-reporte.component.html +131 -0
  207. package/src/app/webcommon/pages/ejecucion-reporte/detalle-entrada-reporte/detalle-entrada-reporte.component.scss +0 -0
  208. package/src/app/webcommon/pages/ejecucion-reporte/detalle-entrada-reporte/detalle-entrada-reporte.component.ts +198 -0
  209. package/src/app/webcommon/pages/ejecucion-reporte/detalle-punto-proceso-reporte/detalle-punto-proceso-reporte.component.html +206 -0
  210. package/src/app/webcommon/pages/ejecucion-reporte/detalle-punto-proceso-reporte/detalle-punto-proceso-reporte.component.scss +3 -0
  211. package/src/app/webcommon/pages/ejecucion-reporte/detalle-punto-proceso-reporte/detalle-punto-proceso-reporte.component.ts +329 -0
  212. package/src/app/webcommon/pages/ejecucion-reporte/detalle-tipo-reporte/detalle-tipo-reporte.component.html +1940 -0
  213. package/src/app/webcommon/pages/ejecucion-reporte/detalle-tipo-reporte/detalle-tipo-reporte.component.scss +241 -0
  214. package/src/app/webcommon/pages/ejecucion-reporte/detalle-tipo-reporte/detalle-tipo-reporte.component.ts +1550 -0
  215. package/src/app/webcommon/pages/ejecucion-reporte/listado-ejecucion-reporte/listado-ejecucion-reporte.page.html +33 -0
  216. package/src/app/webcommon/pages/ejecucion-reporte/listado-ejecucion-reporte/listado-ejecucion-reporte.page.scss +0 -0
  217. package/src/app/webcommon/pages/ejecucion-reporte/listado-ejecucion-reporte/listado-ejecucion-reporte.page.ts +96 -0
  218. package/src/app/webcommon/pages/ejecucion-reporte-externo/listado-ejecucion-reporte-externo/listado-ejecucion-reporte-externo.component.html +47 -0
  219. package/src/app/webcommon/pages/ejecucion-reporte-externo/listado-ejecucion-reporte-externo/listado-ejecucion-reporte-externo.component.scss +0 -0
  220. package/src/app/webcommon/pages/ejecucion-reporte-externo/listado-ejecucion-reporte-externo/listado-ejecucion-reporte-externo.component.ts +95 -0
  221. package/src/app/webcommon/pages/fuente/importar-fuente-con/importar-fuente-con.component.html +391 -0
  222. package/src/app/webcommon/pages/fuente/importar-fuente-con/importar-fuente-con.component.scss +10 -0
  223. package/src/app/webcommon/pages/fuente/importar-fuente-con/importar-fuente-con.component.ts +612 -0
  224. package/src/app/webcommon/pages/fuente/importar-fuente-general/importar-fuente-general.component.html +130 -0
  225. package/src/app/webcommon/pages/fuente/importar-fuente-general/importar-fuente-general.component.scss +0 -0
  226. package/src/app/webcommon/pages/fuente/importar-fuente-general/importar-fuente-general.component.ts +172 -0
  227. package/src/app/webcommon/pages/fuenteGeneral/fuente-general-servicio/fuente-general-servicio.component.html +145 -0
  228. package/src/app/webcommon/pages/fuenteGeneral/fuente-general-servicio/fuente-general-servicio.component.scss +0 -0
  229. package/src/app/webcommon/pages/fuenteGeneral/fuente-general-servicio/fuente-general-servicio.component.ts +300 -0
  230. package/src/app/webcommon/pages/fuenteGeneral/listado-fuente-general/listado-fuente-general.page.html +19 -0
  231. package/src/app/webcommon/pages/fuenteGeneral/listado-fuente-general/listado-fuente-general.page.scss +0 -0
  232. package/src/app/webcommon/pages/fuenteGeneral/listado-fuente-general/listado-fuente-general.page.ts +86 -0
  233. package/src/app/webcommon/pages/fuenteGeneral/mantenimiento-fuente-general/mantenimiento-fuente-general.page.html +703 -0
  234. package/src/app/webcommon/pages/fuenteGeneral/mantenimiento-fuente-general/mantenimiento-fuente-general.page.scss +0 -0
  235. package/src/app/webcommon/pages/fuenteGeneral/mantenimiento-fuente-general/mantenimiento-fuente-general.page.ts +682 -0
  236. package/src/app/webcommon/pipes/fuente.pipe.ts +207 -0
  237. package/src/app/webcommon/pipes/general.pipe.ts +1034 -0
  238. package/src/app/webcommon/pipes/reporte-columnario.pipe.ts +101 -0
  239. package/src/app/webcommon/pipes/reporte-fuente.pipe.ts +300 -0
  240. package/src/app/webcommon/pipes/sara-general.pipe.ts +289 -0
  241. package/src/app/webcommon/popups/popup-campos-fuente-general/popup-campos-fuente-general.component.html +90 -0
  242. package/src/app/webcommon/popups/popup-campos-fuente-general/popup-campos-fuente-general.component.scss +0 -0
  243. package/src/app/webcommon/popups/popup-campos-fuente-general/popup-campos-fuente-general.component.ts +248 -0
  244. package/src/app/webcommon/popups/popup-punto-proceso/popup-punto-proceso.component.html +41 -0
  245. package/src/app/webcommon/popups/popup-punto-proceso/popup-punto-proceso.component.scss +0 -0
  246. package/src/app/webcommon/popups/popup-punto-proceso/popup-punto-proceso.component.ts +283 -0
  247. package/src/app/webcommon/popups/popup-recurso/popup-recurso.component.html +175 -0
  248. package/src/app/webcommon/popups/popup-recurso/popup-recurso.component.scss +3 -0
  249. package/src/app/webcommon/popups/popup-recurso/popup-recurso.component.ts +265 -0
  250. package/src/app/webcommon/popups/popup-reporte/popup-reporte.component.html +261 -0
  251. package/src/app/webcommon/popups/popup-reporte/popup-reporte.component.scss +13 -0
  252. package/src/app/webcommon/popups/popup-reporte/popup-reporte.component.ts +512 -0
  253. package/src/app/webcommon/popups/popup-sentencia/popup-sentencia.component.html +10 -0
  254. package/src/app/webcommon/popups/popup-sentencia/popup-sentencia.component.scss +5 -0
  255. package/src/app/webcommon/popups/popup-sentencia/popup-sentencia.component.ts +58 -0
  256. package/src/app/webcommon/popups/punto-proceso-comp/punto-proceso-comp.component.html +11 -0
  257. package/src/app/webcommon/popups/punto-proceso-comp/punto-proceso-comp.component.scss +0 -0
  258. package/src/app/webcommon/popups/punto-proceso-comp/punto-proceso-comp.component.ts +82 -0
  259. package/src/app/webcommon/services/carguelinea.service.ts +72 -0
  260. package/src/app/webcommon/services/ejecucionreporte.service.ts +158 -0
  261. package/src/app/webcommon/services/fechaUtils.service.ts +120 -0
  262. package/src/app/webcommon/services/fuentegeneral.service.ts +74 -0
  263. package/src/app/webcommon/services/homologacion.service.ts +49 -0
  264. package/src/app/webcommon/services/plantillas.service.ts +49 -0
  265. package/src/app/webcommon/services/reportes.service.ts +60 -0
  266. package/src/app/webcommon/webcommon.module.ts +11 -0
  267. package/src/environments/environment.prod.ts +3 -0
  268. package/src/environments/environment.ts +23 -0
  269. package/src/favicon.ico +0 -0
  270. package/src/index.html +14 -0
  271. package/src/main.ts +6 -0
  272. package/src/polyfills.ts +53 -0
  273. package/src/styles/primeng/sass/overrides/_theme_styles.scss +2 -0
  274. package/src/styles/primeng/sass/overrides/_theme_styles_dark.scss +2 -0
  275. package/src/test.ts +14 -0
  276. package/tsconfig.app.json +15 -0
  277. package/tsconfig.json +35 -0
  278. package/tsconfig.spec.json +18 -0
  279. package/esm2022/general-library-union.mjs +0 -5
  280. package/esm2022/public-api.mjs +0 -170
  281. package/esm2022/src/app/core/componentes/breadcrumb/breadcrumb.component.mjs +0 -35
  282. package/esm2022/src/app/core/componentes/carga-pantalla-completa/carga-pantalla-completa.component.mjs +0 -28
  283. package/esm2022/src/app/core/componentes/filtro-general/filtro-general.component.mjs +0 -153
  284. package/esm2022/src/app/core/componentes/footer/footer.component.mjs +0 -22
  285. package/esm2022/src/app/core/componentes/formulariodinamico/formulariodinamico.component.mjs +0 -272
  286. package/esm2022/src/app/core/componentes/formulariodinamico/objetosformulario/Cambio.mjs +0 -11
  287. package/esm2022/src/app/core/componentes/formulariodinamico/objetosformulario/CampoFormulario.mjs +0 -124
  288. package/esm2022/src/app/core/componentes/formulariodinamico/objetosformulario/CampoFormularioCons.mjs +0 -73
  289. package/esm2022/src/app/core/componentes/formulariodinamico/objetosformulario/CampoFormularioNuevo.mjs +0 -59
  290. package/esm2022/src/app/core/componentes/formulariodinamico/objetosformulario/HashDirective.mjs +0 -21
  291. package/esm2022/src/app/core/componentes/inicio-component/inicio-component.component.mjs +0 -67
  292. package/esm2022/src/app/core/componentes/menu/menu.component.mjs +0 -37
  293. package/esm2022/src/app/core/componentes/tabla-general/tabla-general.component.mjs +0 -93
  294. package/esm2022/src/app/core/core.module.mjs +0 -23
  295. package/esm2022/src/app/core/errores/authentication.error.mjs +0 -7
  296. package/esm2022/src/app/core/modelos/error-response.model.mjs +0 -2
  297. package/esm2022/src/app/core/modelos/table-column.model.mjs +0 -2
  298. package/esm2022/src/app/core/modelos/user.model.mjs +0 -7
  299. package/esm2022/src/app/core/plantilla-general/plantilla-general.template.mjs +0 -225
  300. package/esm2022/src/app/core/servicios/auth.service.mjs +0 -180
  301. package/esm2022/src/app/core/servicios/cargar-control-funcionalidad.service.mjs +0 -57
  302. package/esm2022/src/app/core/servicios/data-exporter-table.utils.mjs +0 -44
  303. package/esm2022/src/app/core/servicios/error-interceptor.service.mjs +0 -147
  304. package/esm2022/src/app/core/servicios/guardias/auth.guard.mjs +0 -66
  305. package/esm2022/src/app/core/servicios/guardias/publico.guard.mjs +0 -30
  306. package/esm2022/src/app/core/servicios/interceptores/token-interceptor.service.mjs +0 -120
  307. package/esm2022/src/app/core/servicios/loading.service.mjs +0 -43
  308. package/esm2022/src/app/core/servicios/menu.service.mjs +0 -88
  309. package/esm2022/src/app/core/servicios/storage.service.mjs +0 -68
  310. package/esm2022/src/app/core/servicios/template.service.mjs +0 -99
  311. package/esm2022/src/app/core/servicios/toast.service.mjs +0 -91
  312. package/esm2022/src/app/core/servicios/utils.service.mjs +0 -305
  313. package/esm2022/src/app/core/sharedlib.module.mjs +0 -16
  314. package/esm2022/src/app/core/utilidades/color.util.mjs +0 -177
  315. package/esm2022/src/app/layout/api/menuchangeevent.mjs +0 -2
  316. package/esm2022/src/app/layout/app.breadcrumb.component.mjs +0 -66
  317. package/esm2022/src/app/layout/app.footer.component.mjs +0 -21
  318. package/esm2022/src/app/layout/app.layout.component.mjs +0 -188
  319. package/esm2022/src/app/layout/app.layout.module.mjs +0 -15
  320. package/esm2022/src/app/layout/app.menu.component.mjs +0 -40
  321. package/esm2022/src/app/layout/app.menu.service.mjs +0 -24
  322. package/esm2022/src/app/layout/app.menuitem.component.mjs +0 -295
  323. package/esm2022/src/app/layout/app.menuprofile.component.mjs +0 -78
  324. package/esm2022/src/app/layout/app.rightmenu.component.mjs +0 -24
  325. package/esm2022/src/app/layout/app.sidebar.component.mjs +0 -91
  326. package/esm2022/src/app/layout/app.topbar.component.mjs +0 -334
  327. package/esm2022/src/app/layout/service/app.layout.service.mjs +0 -134
  328. package/esm2022/src/app/publico/pages/login/login.page.mjs +0 -127
  329. package/esm2022/src/app/publico/pages/not-found/not-found.page.mjs +0 -47
  330. package/esm2022/src/app/publico/pages/seleccion-rol/seleccion-rol.component.mjs +0 -159
  331. package/esm2022/src/app/publico/pages/timeout/timeout.page.mjs +0 -20
  332. package/esm2022/src/app/seguridad/modelos/AplicacionModel.mjs +0 -8
  333. package/esm2022/src/app/seguridad/modelos/ArchivoPortalModel.mjs +0 -14
  334. package/esm2022/src/app/seguridad/modelos/AtributoPuntoModel.mjs +0 -9
  335. package/esm2022/src/app/seguridad/modelos/AtributoSSOportalModel.mjs +0 -17
  336. package/esm2022/src/app/seguridad/modelos/AuditoriaArchivoModel.mjs +0 -11
  337. package/esm2022/src/app/seguridad/modelos/CargueLineaModel.mjs +0 -13
  338. package/esm2022/src/app/seguridad/modelos/ColoresRGB.mjs +0 -18
  339. package/esm2022/src/app/seguridad/modelos/ComplementoModel.mjs +0 -7
  340. package/esm2022/src/app/seguridad/modelos/ComponentePaginaModel.mjs +0 -21
  341. package/esm2022/src/app/seguridad/modelos/ConexionModel.mjs +0 -14
  342. package/esm2022/src/app/seguridad/modelos/ContenidoHtmlPortalModel.mjs +0 -21
  343. package/esm2022/src/app/seguridad/modelos/ControlFuncionModel.mjs +0 -8
  344. package/esm2022/src/app/seguridad/modelos/CorreoModel.mjs +0 -35
  345. package/esm2022/src/app/seguridad/modelos/CorreoWSModel.mjs +0 -37
  346. package/esm2022/src/app/seguridad/modelos/CruceRecursoPuntoModel.mjs +0 -14
  347. package/esm2022/src/app/seguridad/modelos/DatoInicioModel.mjs +0 -6
  348. package/esm2022/src/app/seguridad/modelos/EjecucionReporteDataModel.mjs +0 -14
  349. package/esm2022/src/app/seguridad/modelos/EmpresaModel.mjs +0 -25
  350. package/esm2022/src/app/seguridad/modelos/EmpresaSeguridadModel.mjs +0 -19
  351. package/esm2022/src/app/seguridad/modelos/EntradaComplementoModel.mjs +0 -7
  352. package/esm2022/src/app/seguridad/modelos/EtiquetaModel.mjs +0 -5
  353. package/esm2022/src/app/seguridad/modelos/Etiquetas.mjs +0 -12
  354. package/esm2022/src/app/seguridad/modelos/FuenteCampoAtributoModel.mjs +0 -16
  355. package/esm2022/src/app/seguridad/modelos/FuenteCampoModel.mjs +0 -17
  356. package/esm2022/src/app/seguridad/modelos/FuenteDato.mjs +0 -19
  357. package/esm2022/src/app/seguridad/modelos/FuenteEntradaModel.mjs +0 -9
  358. package/esm2022/src/app/seguridad/modelos/FuenteGeneralModel.mjs +0 -37
  359. package/esm2022/src/app/seguridad/modelos/FuenteLineaServicioModel.mjs +0 -16
  360. package/esm2022/src/app/seguridad/modelos/FuenteProcesoGeneralModel.mjs +0 -11
  361. package/esm2022/src/app/seguridad/modelos/FuenteServicioModel.mjs +0 -51
  362. package/esm2022/src/app/seguridad/modelos/FuncionalidadModel.mjs +0 -10
  363. package/esm2022/src/app/seguridad/modelos/GeneralModel.mjs +0 -15
  364. package/esm2022/src/app/seguridad/modelos/GrupoAccesoModel.mjs +0 -7
  365. package/esm2022/src/app/seguridad/modelos/GrupoControlFuncionModel.mjs +0 -10
  366. package/esm2022/src/app/seguridad/modelos/GrupoFuenteModel.mjs +0 -13
  367. package/esm2022/src/app/seguridad/modelos/GrupoPermisoModel.mjs +0 -14
  368. package/esm2022/src/app/seguridad/modelos/ListaServicioModel.mjs +0 -17
  369. package/esm2022/src/app/seguridad/modelos/LoginModel.mjs +0 -15
  370. package/esm2022/src/app/seguridad/modelos/MensajeSistemaModel.mjs +0 -8
  371. package/esm2022/src/app/seguridad/modelos/MenuPortalModel.mjs +0 -5
  372. package/esm2022/src/app/seguridad/modelos/ModulosModel.mjs +0 -18
  373. package/esm2022/src/app/seguridad/modelos/PaginaPortalModel.mjs +0 -20
  374. package/esm2022/src/app/seguridad/modelos/ParametroComponenteModel.mjs +0 -9
  375. package/esm2022/src/app/seguridad/modelos/ParametrosGeneralModel.mjs +0 -15
  376. package/esm2022/src/app/seguridad/modelos/PermisoFuncionModel.mjs +0 -9
  377. package/esm2022/src/app/seguridad/modelos/PermisocontenidoModel.mjs +0 -20
  378. package/esm2022/src/app/seguridad/modelos/PeticionModel.mjs +0 -16
  379. package/esm2022/src/app/seguridad/modelos/PreguntaSeguridadModel.mjs +0 -7
  380. package/esm2022/src/app/seguridad/modelos/PropiedadModel.mjs +0 -10
  381. package/esm2022/src/app/seguridad/modelos/PublicacionWebModel.mjs +0 -27
  382. package/esm2022/src/app/seguridad/modelos/PuntoProcesoModel.mjs +0 -7
  383. package/esm2022/src/app/seguridad/modelos/RecursoPunto.mjs +0 -13
  384. package/esm2022/src/app/seguridad/modelos/RecursoPuntoModel.mjs +0 -13
  385. package/esm2022/src/app/seguridad/modelos/ReporteBanda.mjs +0 -8
  386. package/esm2022/src/app/seguridad/modelos/ReporteColumna.mjs +0 -33
  387. package/esm2022/src/app/seguridad/modelos/ReporteColumnario.mjs +0 -69
  388. package/esm2022/src/app/seguridad/modelos/ReporteColumnarioMarcador.mjs +0 -24
  389. package/esm2022/src/app/seguridad/modelos/ReporteEntradaModel.mjs +0 -20
  390. package/esm2022/src/app/seguridad/modelos/ReporteFuenteModel.mjs +0 -124
  391. package/esm2022/src/app/seguridad/modelos/ReporteMarcador.mjs +0 -40
  392. package/esm2022/src/app/seguridad/modelos/ReporteSoporte.mjs +0 -10
  393. package/esm2022/src/app/seguridad/modelos/ReporteTabla.mjs +0 -13
  394. package/esm2022/src/app/seguridad/modelos/RespuestaModel.mjs +0 -9
  395. package/esm2022/src/app/seguridad/modelos/RolModel.mjs +0 -39
  396. package/esm2022/src/app/seguridad/modelos/ServidorCorreoModel.mjs +0 -28
  397. package/esm2022/src/app/seguridad/modelos/SistemaMensajeModel.mjs +0 -9
  398. package/esm2022/src/app/seguridad/modelos/SitioPortalModel.mjs +0 -25
  399. package/esm2022/src/app/seguridad/modelos/TareasModel.mjs +0 -54
  400. package/esm2022/src/app/seguridad/modelos/TextoModel.mjs +0 -9
  401. package/esm2022/src/app/seguridad/modelos/TipoEtiqueta.mjs +0 -8
  402. package/esm2022/src/app/seguridad/modelos/UnionModel.mjs +0 -12
  403. package/esm2022/src/app/seguridad/modelos/UsuarioModel.mjs +0 -53
  404. package/esm2022/src/app/seguridad/modelos/UsuariogrupoModel.mjs +0 -24
  405. package/esm2022/src/app/seguridad/modelos/aplicacion-propiedad-model.mjs +0 -15
  406. package/esm2022/src/app/seguridad/modelos/contenidoCorreoModel.mjs +0 -10
  407. package/esm2022/src/app/shared/componentes/input-helper-seleccion-plantilla/input-helper-seleccion-plantilla.component.mjs +0 -151
  408. package/esm2022/src/app/shared/servicios/cargar-archivos.service.mjs +0 -54
  409. package/esm2022/src/app/shared/servicios/cargar-mapas.service.mjs +0 -46
  410. package/esm2022/src/app/shared/servicios/encriptado-basico.service.mjs +0 -53
  411. package/esm2022/src/app/shared/servicios/general.service.mjs +0 -104
  412. package/esm2022/src/app/shared/servicios/parametros-navegacion.service.mjs +0 -21
  413. package/esm2022/src/app/webcommon/pages/ejecucion-reporte/detalle-campo-reporte/detalle-campo-reporte.component.mjs +0 -187
  414. package/esm2022/src/app/webcommon/pages/ejecucion-reporte/detalle-distribucion-reporte/detalle-distribucion-reporte.component.mjs +0 -85
  415. package/esm2022/src/app/webcommon/pages/ejecucion-reporte/detalle-ejecucion-reporte/detalle-ejecucion-reporte.page.mjs +0 -347
  416. package/esm2022/src/app/webcommon/pages/ejecucion-reporte/detalle-entrada-reporte/detalle-entrada-reporte.component.mjs +0 -206
  417. package/esm2022/src/app/webcommon/pages/ejecucion-reporte/detalle-punto-proceso-reporte/detalle-punto-proceso-reporte.component.mjs +0 -328
  418. package/esm2022/src/app/webcommon/pages/ejecucion-reporte/detalle-tipo-reporte/detalle-tipo-reporte.component.mjs +0 -1448
  419. package/esm2022/src/app/webcommon/pages/ejecucion-reporte/listado-ejecucion-reporte/listado-ejecucion-reporte.page.mjs +0 -105
  420. package/esm2022/src/app/webcommon/pages/ejecucion-reporte-externo/listado-ejecucion-reporte-externo/listado-ejecucion-reporte-externo.component.mjs +0 -95
  421. package/esm2022/src/app/webcommon/pages/fuente/importar-fuente-con/importar-fuente-con.component.mjs +0 -599
  422. package/esm2022/src/app/webcommon/pages/fuente/importar-fuente-general/importar-fuente-general.component.mjs +0 -177
  423. package/esm2022/src/app/webcommon/pages/fuenteGeneral/fuente-general-servicio/fuente-general-servicio.component.mjs +0 -327
  424. package/esm2022/src/app/webcommon/pages/fuenteGeneral/listado-fuente-general/listado-fuente-general.page.mjs +0 -93
  425. package/esm2022/src/app/webcommon/pages/fuenteGeneral/mantenimiento-fuente-general/mantenimiento-fuente-general.page.mjs +0 -671
  426. package/esm2022/src/app/webcommon/pipes/fuente.pipe.mjs +0 -201
  427. package/esm2022/src/app/webcommon/pipes/general.pipe.mjs +0 -907
  428. package/esm2022/src/app/webcommon/pipes/reporte-columnario.pipe.mjs +0 -115
  429. package/esm2022/src/app/webcommon/pipes/reporte-fuente.pipe.mjs +0 -296
  430. package/esm2022/src/app/webcommon/popups/popup-campos-fuente-general/popup-campos-fuente-general.component.mjs +0 -253
  431. package/esm2022/src/app/webcommon/popups/popup-punto-proceso/popup-punto-proceso.component.mjs +0 -293
  432. package/esm2022/src/app/webcommon/popups/popup-recurso/popup-recurso.component.mjs +0 -268
  433. package/esm2022/src/app/webcommon/popups/popup-reporte/popup-reporte.component.mjs +0 -508
  434. package/esm2022/src/app/webcommon/popups/popup-sentencia/popup-sentencia.component.mjs +0 -64
  435. package/esm2022/src/app/webcommon/popups/punto-proceso-comp/punto-proceso-comp.component.mjs +0 -89
  436. package/esm2022/src/app/webcommon/services/carguelinea.service.mjs +0 -69
  437. package/esm2022/src/app/webcommon/services/ejecucionreporte.service.mjs +0 -114
  438. package/esm2022/src/app/webcommon/services/fechaUtils.service.mjs +0 -88
  439. package/esm2022/src/app/webcommon/services/fuentegeneral.service.mjs +0 -68
  440. package/esm2022/src/app/webcommon/services/homologacion.service.mjs +0 -50
  441. package/esm2022/src/app/webcommon/services/plantillas.service.mjs +0 -53
  442. package/esm2022/src/app/webcommon/services/reportes.service.mjs +0 -53
  443. package/esm2022/src/app/webcommon/webcommon.module.mjs +0 -15
  444. package/esm2022/src/environments/environment.mjs +0 -22
  445. package/fesm2022/general-library-union.mjs +0 -13507
  446. package/fesm2022/general-library-union.mjs.map +0 -1
  447. package/index.d.ts +0 -5
  448. package/src/app/core/componentes/breadcrumb/breadcrumb.component.d.ts +0 -18
  449. package/src/app/core/componentes/carga-pantalla-completa/carga-pantalla-completa.component.d.ts +0 -14
  450. package/src/app/core/componentes/filtro-general/filtro-general.component.d.ts +0 -26
  451. package/src/app/core/componentes/footer/footer.component.d.ts +0 -11
  452. package/src/app/core/componentes/formulariodinamico/formulariodinamico.component.d.ts +0 -46
  453. package/src/app/core/componentes/formulariodinamico/objetosformulario/CampoFormulario.d.ts +0 -44
  454. package/src/app/core/componentes/formulariodinamico/objetosformulario/CampoFormularioCons.d.ts +0 -45
  455. package/src/app/core/componentes/formulariodinamico/objetosformulario/CampoFormularioNuevo.d.ts +0 -33
  456. package/src/app/core/componentes/formulariodinamico/objetosformulario/HashDirective.d.ts +0 -9
  457. package/src/app/core/componentes/inicio-component/inicio-component.component.d.ts +0 -24
  458. package/src/app/core/componentes/menu/menu.component.d.ts +0 -16
  459. package/src/app/core/componentes/tabla-general/tabla-general.component.d.ts +0 -32
  460. package/src/app/core/core.module.d.ts +0 -8
  461. package/src/app/core/errores/authentication.error.d.ts +0 -3
  462. package/src/app/core/modelos/error-response.model.d.ts +0 -9
  463. package/src/app/core/modelos/table-column.model.d.ts +0 -12
  464. package/src/app/core/modelos/user.model.d.ts +0 -6
  465. package/src/app/core/plantilla-general/plantilla-general.template.d.ts +0 -89
  466. package/src/app/core/servicios/auth.service.d.ts +0 -52
  467. package/src/app/core/servicios/cargar-control-funcionalidad.service.d.ts +0 -19
  468. package/src/app/core/servicios/data-exporter-table.utils.d.ts +0 -8
  469. package/src/app/core/servicios/error-interceptor.service.d.ts +0 -41
  470. package/src/app/core/servicios/guardias/auth.guard.d.ts +0 -17
  471. package/src/app/core/servicios/guardias/publico.guard.d.ts +0 -13
  472. package/src/app/core/servicios/interceptores/token-interceptor.service.d.ts +0 -21
  473. package/src/app/core/servicios/loading.service.d.ts +0 -22
  474. package/src/app/core/servicios/menu.service.d.ts +0 -34
  475. package/src/app/core/servicios/storage.service.d.ts +0 -37
  476. package/src/app/core/servicios/template.service.d.ts +0 -20
  477. package/src/app/core/servicios/toast.service.d.ts +0 -46
  478. package/src/app/core/servicios/utils.service.d.ts +0 -40
  479. package/src/app/core/sharedlib.module.d.ts +0 -6
  480. package/src/app/core/utilidades/color.util.d.ts +0 -70
  481. package/src/app/layout/app.breadcrumb.component.d.ts +0 -28
  482. package/src/app/layout/app.footer.component.d.ts +0 -10
  483. package/src/app/layout/app.layout.component.d.ts +0 -39
  484. package/src/app/layout/app.layout.module.d.ts +0 -6
  485. package/src/app/layout/app.menu.component.d.ts +0 -19
  486. package/src/app/layout/app.menu.service.d.ts +0 -12
  487. package/src/app/layout/app.menuitem.component.d.ts +0 -40
  488. package/src/app/layout/app.menuprofile.component.d.ts +0 -18
  489. package/src/app/layout/app.rightmenu.component.d.ts +0 -10
  490. package/src/app/layout/app.sidebar.component.d.ts +0 -33
  491. package/src/app/layout/app.topbar.component.d.ts +0 -78
  492. package/src/app/layout/service/app.layout.service.d.ts +0 -57
  493. package/src/app/publico/pages/login/login.page.d.ts +0 -40
  494. package/src/app/publico/pages/not-found/not-found.page.d.ts +0 -16
  495. package/src/app/publico/pages/seleccion-rol/seleccion-rol.component.d.ts +0 -41
  496. package/src/app/publico/pages/timeout/timeout.page.d.ts +0 -10
  497. package/src/app/seguridad/modelos/AplicacionModel.d.ts +0 -7
  498. package/src/app/seguridad/modelos/ArchivoPortalModel.d.ts +0 -13
  499. package/src/app/seguridad/modelos/AtributoPuntoModel.d.ts +0 -8
  500. package/src/app/seguridad/modelos/AtributoSSOportalModel.d.ts +0 -16
  501. package/src/app/seguridad/modelos/CargueLineaModel.d.ts +0 -12
  502. package/src/app/seguridad/modelos/ColoresRGB.d.ts +0 -17
  503. package/src/app/seguridad/modelos/ComplementoModel.d.ts +0 -6
  504. package/src/app/seguridad/modelos/ComponentePaginaModel.d.ts +0 -20
  505. package/src/app/seguridad/modelos/ConexionModel.d.ts +0 -13
  506. package/src/app/seguridad/modelos/ControlFuncionModel.d.ts +0 -7
  507. package/src/app/seguridad/modelos/CorreoModel.d.ts +0 -31
  508. package/src/app/seguridad/modelos/CorreoWSModel.d.ts +0 -33
  509. package/src/app/seguridad/modelos/CruceRecursoPuntoModel.d.ts +0 -13
  510. package/src/app/seguridad/modelos/EmpresaModel.d.ts +0 -23
  511. package/src/app/seguridad/modelos/EmpresaSeguridadModel.d.ts +0 -18
  512. package/src/app/seguridad/modelos/EtiquetaModel.d.ts +0 -4
  513. package/src/app/seguridad/modelos/Etiquetas.d.ts +0 -10
  514. package/src/app/seguridad/modelos/FuenteCampoAtributoModel.d.ts +0 -15
  515. package/src/app/seguridad/modelos/FuenteDato.d.ts +0 -18
  516. package/src/app/seguridad/modelos/FuenteEntradaModel.d.ts +0 -8
  517. package/src/app/seguridad/modelos/FuenteLineaServicioModel.d.ts +0 -16
  518. package/src/app/seguridad/modelos/FuenteProcesoGeneralModel.d.ts +0 -10
  519. package/src/app/seguridad/modelos/FuncionalidadModel.d.ts +0 -8
  520. package/src/app/seguridad/modelos/GeneralModel.d.ts +0 -8
  521. package/src/app/seguridad/modelos/GrupoControlFuncionModel.d.ts +0 -9
  522. package/src/app/seguridad/modelos/GrupoFuenteModel.d.ts +0 -13
  523. package/src/app/seguridad/modelos/GrupoPermisoModel.d.ts +0 -13
  524. package/src/app/seguridad/modelos/ListaServicioModel.d.ts +0 -16
  525. package/src/app/seguridad/modelos/LoginModel.d.ts +0 -17
  526. package/src/app/seguridad/modelos/MensajeSistemaModel.d.ts +0 -7
  527. package/src/app/seguridad/modelos/ModulosModel.d.ts +0 -14
  528. package/src/app/seguridad/modelos/PaginaPortalModel.d.ts +0 -19
  529. package/src/app/seguridad/modelos/ParametroComponenteModel.d.ts +0 -8
  530. package/src/app/seguridad/modelos/ParametrosGeneralModel.d.ts +0 -8
  531. package/src/app/seguridad/modelos/PermisoFuncionModel.d.ts +0 -8
  532. package/src/app/seguridad/modelos/PermisocontenidoModel.d.ts +0 -18
  533. package/src/app/seguridad/modelos/PreguntaSeguridadModel.d.ts +0 -6
  534. package/src/app/seguridad/modelos/PropiedadModel.d.ts +0 -9
  535. package/src/app/seguridad/modelos/PublicacionWebModel.d.ts +0 -25
  536. package/src/app/seguridad/modelos/PuntoProcesoModel.d.ts +0 -6
  537. package/src/app/seguridad/modelos/RecursoPunto.d.ts +0 -12
  538. package/src/app/seguridad/modelos/RecursoPuntoModel.d.ts +0 -12
  539. package/src/app/seguridad/modelos/ReporteBanda.d.ts +0 -7
  540. package/src/app/seguridad/modelos/ReporteColumna.d.ts +0 -32
  541. package/src/app/seguridad/modelos/ReporteColumnario.d.ts +0 -68
  542. package/src/app/seguridad/modelos/ReporteColumnarioMarcador.d.ts +0 -23
  543. package/src/app/seguridad/modelos/ReporteMarcador.d.ts +0 -39
  544. package/src/app/seguridad/modelos/ReporteSoporte.d.ts +0 -9
  545. package/src/app/seguridad/modelos/ReporteTabla.d.ts +0 -12
  546. package/src/app/seguridad/modelos/RespuestaModel.d.ts +0 -8
  547. package/src/app/seguridad/modelos/ServidorCorreoModel.d.ts +0 -25
  548. package/src/app/seguridad/modelos/SistemaMensajeModel.d.ts +0 -8
  549. package/src/app/seguridad/modelos/SitioPortalModel.d.ts +0 -24
  550. package/src/app/seguridad/modelos/TareasModel.d.ts +0 -49
  551. package/src/app/seguridad/modelos/TextoModel.d.ts +0 -8
  552. package/src/app/seguridad/modelos/TipoEtiqueta.d.ts +0 -7
  553. package/src/app/seguridad/modelos/UnionModel.d.ts +0 -11
  554. package/src/app/seguridad/modelos/UsuariogrupoModel.d.ts +0 -22
  555. package/src/app/seguridad/modelos/aplicacion-propiedad-model.d.ts +0 -13
  556. package/src/app/seguridad/modelos/contenidoCorreoModel.d.ts +0 -9
  557. package/src/app/shared/componentes/input-helper-seleccion-plantilla/input-helper-seleccion-plantilla.component.d.ts +0 -47
  558. package/src/app/shared/servicios/cargar-archivos.service.d.ts +0 -15
  559. package/src/app/shared/servicios/cargar-mapas.service.d.ts +0 -18
  560. package/src/app/shared/servicios/encriptado-basico.service.d.ts +0 -10
  561. package/src/app/shared/servicios/general.service.d.ts +0 -24
  562. package/src/app/shared/servicios/parametros-navegacion.service.d.ts +0 -9
  563. package/src/app/webcommon/pages/ejecucion-reporte/detalle-campo-reporte/detalle-campo-reporte.component.d.ts +0 -79
  564. package/src/app/webcommon/pages/ejecucion-reporte/detalle-distribucion-reporte/detalle-distribucion-reporte.component.d.ts +0 -29
  565. package/src/app/webcommon/pages/ejecucion-reporte/detalle-ejecucion-reporte/detalle-ejecucion-reporte.page.d.ts +0 -69
  566. package/src/app/webcommon/pages/ejecucion-reporte/detalle-entrada-reporte/detalle-entrada-reporte.component.d.ts +0 -51
  567. package/src/app/webcommon/pages/ejecucion-reporte/detalle-punto-proceso-reporte/detalle-punto-proceso-reporte.component.d.ts +0 -77
  568. package/src/app/webcommon/pages/ejecucion-reporte/detalle-tipo-reporte/detalle-tipo-reporte.component.d.ts +0 -251
  569. package/src/app/webcommon/pages/ejecucion-reporte/listado-ejecucion-reporte/listado-ejecucion-reporte.page.d.ts +0 -42
  570. package/src/app/webcommon/pages/ejecucion-reporte-externo/listado-ejecucion-reporte-externo/listado-ejecucion-reporte-externo.component.d.ts +0 -33
  571. package/src/app/webcommon/pages/fuente/importar-fuente-con/importar-fuente-con.component.d.ts +0 -143
  572. package/src/app/webcommon/pages/fuente/importar-fuente-general/importar-fuente-general.component.d.ts +0 -49
  573. package/src/app/webcommon/pages/fuenteGeneral/fuente-general-servicio/fuente-general-servicio.component.d.ts +0 -64
  574. package/src/app/webcommon/pages/fuenteGeneral/listado-fuente-general/listado-fuente-general.page.d.ts +0 -33
  575. package/src/app/webcommon/pages/fuenteGeneral/mantenimiento-fuente-general/mantenimiento-fuente-general.page.d.ts +0 -148
  576. package/src/app/webcommon/pipes/fuente.pipe.d.ts +0 -136
  577. package/src/app/webcommon/pipes/general.pipe.d.ts +0 -637
  578. package/src/app/webcommon/pipes/reporte-columnario.pipe.d.ts +0 -59
  579. package/src/app/webcommon/pipes/reporte-fuente.pipe.d.ts +0 -189
  580. package/src/app/webcommon/popups/popup-campos-fuente-general/popup-campos-fuente-general.component.d.ts +0 -58
  581. package/src/app/webcommon/popups/popup-punto-proceso/popup-punto-proceso.component.d.ts +0 -64
  582. package/src/app/webcommon/popups/popup-recurso/popup-recurso.component.d.ts +0 -63
  583. package/src/app/webcommon/popups/popup-reporte/popup-reporte.component.d.ts +0 -97
  584. package/src/app/webcommon/popups/popup-sentencia/popup-sentencia.component.d.ts +0 -21
  585. package/src/app/webcommon/popups/punto-proceso-comp/punto-proceso-comp.component.d.ts +0 -30
  586. package/src/app/webcommon/services/carguelinea.service.d.ts +0 -19
  587. package/src/app/webcommon/services/ejecucionreporte.service.d.ts +0 -34
  588. package/src/app/webcommon/services/fechaUtils.service.d.ts +0 -28
  589. package/src/app/webcommon/services/fuentegeneral.service.d.ts +0 -24
  590. package/src/app/webcommon/services/homologacion.service.d.ts +0 -17
  591. package/src/app/webcommon/services/plantillas.service.d.ts +0 -17
  592. package/src/app/webcommon/services/reportes.service.d.ts +0 -19
  593. package/src/app/webcommon/webcommon.module.d.ts +0 -6
  594. package/src/environments/environment.d.ts +0 -4
@@ -1,508 +0,0 @@
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
- }
113
- async mostrarPopup() {
114
- this.panel = 'entrada';
115
- this.mostrarQueDeseaHacer = false;
116
- this.tipoReporte = null;
117
- this.mostrarConsultaCasoError = this.validarControlFuncionalidad('reporte:versentenciaerror');
118
- this.operacion = null;
119
- this.elementoBorrar = {};
120
- this.listaSegundoPlano = [];
121
- this.listaRegistro = [];
122
- this.columnas = [];
123
- this.existeJasper = false;
124
- if (this.reporte.llave) {
125
- var resultado = await this.ejecucionReporteService.getDatosEjecucionReporte({ llave: this.reporte.llave }).toPromise();
126
- this.reporte = resultado.reporte;
127
- delete this.reporte['alias'];
128
- this.cargarListaEntrada();
129
- this.traerSegundoPlano();
130
- this.cargarCorreo();
131
- await this.validarExisteJasper();
132
- await this.cargarGeneraciones();
133
- this.cargarOperaciones();
134
- }
135
- }
136
- cargarMenu() {
137
- this.items = [
138
- {
139
- label: this.translateService.instant('ejecucion'),
140
- icon: 'glyphicons glyphicons-plus-sign',
141
- command: (event) => {
142
- this.vistaVisualizar = 'entrada';
143
- },
144
- },
145
- {
146
- label: this.translateService.instant('segundoplano'),
147
- icon: 'glyphicons glyphicons-file-minus',
148
- command: (event) => {
149
- this.vistaVisualizar = 'segundoplano';
150
- },
151
- visible: this.listaSegundoPlano.length > 0,
152
- }
153
- ];
154
- }
155
- async cargarGeneraciones() {
156
- this.generaciones = [];
157
- if (this.utilsService.isNotBlank(this.reporte.tituloParametro) && this.existeJasper) {
158
- this.generaciones.push({ value: this.reporteFuentePipe.GENERACION_JASPERDINAMICO,
159
- label: this.reporteFuentePipe.DESC_GENERACION_JASPERDINAMICO });
160
- }
161
- if (this.utilsService.isNotBlank(this.reporte.jasperFijo) && this.utilsService.isNotBlank(this.reporte.modoFijo)) {
162
- this.generaciones.push({ value: this.reporteFuentePipe.GENERACION_JASPERFIJO,
163
- label: this.reporteFuentePipe.DESC_GENERACION_JASPERFIJO });
164
- }
165
- if (this.utilsService.isNotBlank(this.reporte.archivoTodo) && this.utilsService.isNotBlank(this.reporte.hojaExcel)) {
166
- this.generaciones.push({ value: this.reporteFuentePipe.GENERACION_EXCEL,
167
- label: this.reporteFuentePipe.DESC_GENERACION_EXCEL });
168
- }
169
- if (this.utilsService.isNotBlank(this.reporte.archivoIndividual) || this.reporte.unicoArchivo == 'N') {
170
- this.generaciones.push({ value: this.reporteFuentePipe.GENERACION_PLANTILLA,
171
- label: this.reporteFuentePipe.DESC_GENERACION_PLANTILLA });
172
- }
173
- if (this.utilsService.isNotBlank(this.reporte.separador)) {
174
- this.generaciones.push({ value: this.reporteFuentePipe.GENERACION_ARCHIVOPLANO,
175
- label: this.reporteFuentePipe.DESC_GENERACION_ARCHIVOPLANO });
176
- }
177
- if (this.utilsService.isNotBlank(this.reporte.nombreTabla)) {
178
- this.generaciones.push({ value: this.reporteFuentePipe.GENERACION_TABLA,
179
- label: this.reporteFuentePipe.DESC_GENERACION_TABLA });
180
- }
181
- if (this.utilsService.isNotBlank(this.reporte.tagEncabezado) && this.utilsService.isNotBlank(this.reporte.estructuraRegistro)) {
182
- this.generaciones.push({ value: this.reporteFuentePipe.GENERACION_XML,
183
- label: this.reporteFuentePipe.DESC_GENERACION_XML });
184
- }
185
- if (this.utilsService.isNotBlank(this.reporte.archivoExcelColumnario) && this.utilsService.isNotBlank(this.reporte.hojaExcelColumnario)) {
186
- this.generaciones.push({ value: this.reporteFuentePipe.GENERACION_COLUMNARIO,
187
- label: this.reporteFuentePipe.DESC_GENERACION_COLUMNARIO });
188
- }
189
- }
190
- async validarExisteJasper() {
191
- try {
192
- var data = await this.cargarArchivo.descargarArchivo(this.encriptadorArchivo.encriptar('reportes/' + this.reporte.llave + '.jrxml'), 'ruta_plantillas', this.aplicacion).toPromise();
193
- if (data) {
194
- this.existeJasper = true;
195
- }
196
- }
197
- catch (error) {
198
- this.existeJasper = false;
199
- }
200
- }
201
- cargarOperaciones() {
202
- this.bloquearCorreo = true;
203
- this.operaciones = [];
204
- if (this.tipoReporte) {
205
- if (this.tipoReporte != this.reporteFuentePipe.GENERACION_TABLA) {
206
- this.operaciones.push({ value: this.reporteFuentePipe.OPERACION_DESCARGAR,
207
- label: this.reporteFuentePipe.DESC_OPERACION_DESCARGAR });
208
- if (this.validarControlFuncionalidad('reporte:enviocorreo')) {
209
- this.bloquearCorreo = false;
210
- }
211
- this.operaciones.push({ value: this.reporteFuentePipe.OPERACION_ENVIARCORREO,
212
- label: this.reporteFuentePipe.DESC_OPERACION_ENVIARCORREO });
213
- if (this.reporteFuentePipe.MOMENTOS_SEGUNDO_PLANO == this.reporte.momento) {
214
- this.operaciones.push({ value: this.reporteFuentePipe.OPERACION_SEGUNDOPLANO,
215
- label: this.reporteFuentePipe.DESC_OPERACION_SEGUNDOPLANO });
216
- }
217
- if ((this.tipoReporte == this.reporteFuentePipe.GENERACION_JASPERFIJO && this.reporte.modoFijo == 'P')
218
- || this.tipoReporte == this.reporteFuentePipe.GENERACION_PLANTILLA && this.reporte.descargarFuente != 'S') {
219
- if (this.reporte.archivoHtml && this.reporte.campoEmail) {
220
- this.operaciones.push({ value: this.reporteFuentePipe.OPERACION_ENVIOMASIVO,
221
- label: this.reporteFuentePipe.DESC_OPERACION_ENVIOMASIVO });
222
- }
223
- if (this.reporte.publicacion && this.reporte.campoPublica) {
224
- this.operaciones.push({ value: this.reporteFuentePipe.OPERACION_PUBLICAR,
225
- label: this.reporteFuentePipe.DESC_OPERACION_PUBLICAR });
226
- }
227
- if (this.reporte.archivoHtml && this.reporte.campoEmail && this.reporte.publicacion && this.reporte.campoPublica) {
228
- this.operaciones.push({ value: this.reporteFuentePipe.OPERACION_CORREOPUBLICAR,
229
- label: this.reporteFuentePipe.DESC_OPERACION_CORREOPUBLICAR });
230
- }
231
- }
232
- //pte proceso externo
233
- }
234
- }
235
- }
236
- cambioValorLista(event, parametro) {
237
- if (event.value) {
238
- let lista = event.value.split(':');
239
- if (parametro.unionDTO.tipoDato == 'N') {
240
- parametro.unionDTO.valor = parseInt(lista[0]);
241
- }
242
- else {
243
- parametro.unionDTO.valor = lista[0];
244
- }
245
- }
246
- }
247
- cambioSoporteBase(event) {
248
- if (this.soporteBase == null) {
249
- this.cargarOperaciones();
250
- return;
251
- }
252
- this.generalService.queryForObject(new GeneralModel('ReporteSoporteDTO', null, false, { llaveTabla: this.soporteBase })).subscribe(archivoBase => {
253
- if (archivoBase == null) {
254
- return;
255
- }
256
- this.soporteBase = archivoBase.llaveTabla;
257
- this.reporte.archivoIndividual = archivoBase.archivoIndividual;
258
- this.cargarOperaciones();
259
- });
260
- }
261
- cargarCorreo() {
262
- this.generalService.queryForObject(new GeneralModel('UsuarioDTO', null, true, { login: this.authService.getTokenKey('usuario') })).subscribe(data => {
263
- this.correo = data.email;
264
- });
265
- }
266
- cargarListaEntrada() {
267
- this.mostrarParametros = false;
268
- if (this.entradasPuntoProceso.length > 0) {
269
- this.parametros = this.entradasPuntoProceso;
270
- this.parametros.forEach(element => {
271
- if (element.unionDTO.solicitar == 'S') {
272
- this.mostrarParametros = true;
273
- }
274
- if (element.unionDTO.tipoDato == 'F' && element.unionDTO.valor != null) {
275
- element.unionDTO.valor = new Date(element.unionDTO.valor);
276
- }
277
- });
278
- }
279
- else {
280
- this.ejecucionReporteService.obtenerListaEntradaEjecucion(this.reporte).subscribe(data => {
281
- this.parametros = data;
282
- this.parametros.forEach(element => {
283
- if (element.unionDTO.solicitar == 'S') {
284
- this.mostrarParametros = true;
285
- }
286
- if (element.unionDTO.tipoDato == 'F' && element.unionDTO.valor != null) {
287
- element.unionDTO.valor = new Date(element.unionDTO.valor);
288
- }
289
- });
290
- });
291
- }
292
- }
293
- traerSegundoPlano() {
294
- let usuario = this.authService.getTokenKey('usuario');
295
- this.generalService.queryForList(new GeneralModel('EjecucionReporteDTO', null, false, {
296
- adicionado: usuario,
297
- reporteFuente: this.reporte.llave
298
- })).subscribe(data => {
299
- this.listaSegundoPlano = data;
300
- this.paginator.totalRecords = this.listaSegundoPlano.length;
301
- });
302
- }
303
- verSegundoPlano(event) {
304
- this.elementoBorrar = event.data;
305
- this.elementoBorrar.fechaAdicionado = this.elementoBorrar.fechaAdicionado ? new Date(this.elementoBorrar.fechaAdicionado) : null;
306
- this.elementoBorrar.inicia = this.elementoBorrar.inicia ? new Date(this.elementoBorrar.inicia) : null;
307
- this.elementoBorrar.termina = this.elementoBorrar.termina ? new Date(this.elementoBorrar.termina) : null;
308
- this.operacion = 'historico';
309
- this.panel = 'resultado';
310
- }
311
- eliminarSegundoPlano(event) {
312
- this.confirmationService.confirm({
313
- target: event.target,
314
- message: this.generalPipe.MENSAJE_ELIMINAR_CONFIRMAR,
315
- acceptLabel: this.generalPipe.SI_DESC,
316
- header: this.translateService.instant('confirmar'),
317
- accept: () => {
318
- this.ejecucionReporteService.eliminarEjecucionReporte(this.elementoBorrar).subscribe(data => {
319
- this.notificacionService.showInfo(this.generalPipe.MENSAJE_ELIMINAR);
320
- this.regresarSegundoPlano();
321
- this.traerSegundoPlano();
322
- });
323
- }
324
- });
325
- }
326
- descargarArchivo() {
327
- this.cargarArchivoService.descargarArchivo(this.encriptadoBasico.encriptar(this.elementoBorrar.archivo)).subscribe(blob => {
328
- const a = document.createElement('a');
329
- const objectUrl = URL.createObjectURL(blob);
330
- a.href = objectUrl;
331
- let partes = this.elementoBorrar.archivo.split(".");
332
- let extension = partes[partes.length - 1];
333
- a.download = this.utilsService.generarLlave() + '.' + extension;
334
- a.click();
335
- URL.revokeObjectURL(objectUrl);
336
- });
337
- }
338
- cambioTipoReporte(event) {
339
- this.mostrarQueDeseaHacer = true;
340
- if (this.tipoReporte == this.reporteFuentePipe.GENERACION_PLANTILLA && this.reporte.unicoArchivo == 'N') {
341
- this.mostrarArchivosSoporte = true;
342
- this.generalService.queryForList(new GeneralModel('ReporteSoporteDTO', null, false, {
343
- reporteFuente: this.reporte.llave,
344
- tipo: 'S'
345
- })).subscribe(data => {
346
- this.listadoArchivoSoporte = data;
347
- });
348
- }
349
- else {
350
- this.mostrarArchivosSoporte = false;
351
- this.listadoArchivoSoporte = [];
352
- this.tipoArchivo = null;
353
- this.operacion = null;
354
- this.cargarOperaciones();
355
- //this.descargarArchivo = null;
356
- }
357
- }
358
- cambioTipoArchivo(event) {
359
- this.cargarOperaciones();
360
- }
361
- regresarSegundoPlano() {
362
- this.elementoBorrar = {};
363
- this.panel = 'entrada';
364
- this.operacion = null;
365
- }
366
- ocultar() {
367
- this.tipoReporte = null;
368
- this.mostrar = false;
369
- this.regresar.emit(false);
370
- }
371
- validarControlFuncionalidad(valor) {
372
- return this.controlFuncionalidad.getControlFuncionalidad(valor);
373
- }
374
- sentencia() {
375
- this.mostrarPopupSentencia = true;
376
- }
377
- regresarSentencia(event) {
378
- this.mostrarPopupSentencia = false;
379
- }
380
- enviarSegundoPlano() {
381
- let listaEntrada = [];
382
- this.parametros.forEach(element => {
383
- listaEntrada.push(element.unionDTO);
384
- });
385
- this.ejecucionReporteService.enviarSegundoPlano({
386
- reporte: this.reporte,
387
- parametros: listaEntrada,
388
- tipoReporte: this.tipoReporte,
389
- operacion: this.operacion,
390
- correo: this.correo,
391
- }).subscribe(data => {
392
- this.notificacionService.showInfo(data.mensaje);
393
- });
394
- }
395
- descargarReporte() {
396
- if ('F' == this.tipoReporte) {
397
- this.reporte.tipoArchivo = this.tipoArchivo;
398
- }
399
- let listaEntrada = [];
400
- this.parametros.forEach(element => {
401
- listaEntrada.push(element.unionDTO);
402
- });
403
- this.ejecucionReporteService.descargarReporte({
404
- reporte: this.reporte,
405
- parametros: listaEntrada,
406
- tipoReporte: this.tipoReporte,
407
- operacion: this.operacion,
408
- correo: this.correo,
409
- endpointGeneradorReportes: ''
410
- }).subscribe({
411
- next: data => {
412
- console.log(data);
413
- this.notificacionService.showInfo(data.mensaje);
414
- if (!data.archivo) {
415
- return;
416
- }
417
- const decodedData = atob(data.archivo);
418
- const byteNumbers = new Array(decodedData.length);
419
- for (let i = 0; i < decodedData.length; i++) {
420
- byteNumbers[i] = decodedData.charCodeAt(i);
421
- }
422
- const byteArray = new Uint8Array(byteNumbers);
423
- // Crea un objeto Blob con los bytes decodificados y el tipo MIME del archivo
424
- const blob = new Blob([byteArray], { type: data.mime });
425
- // Crea una URL del objeto Blob
426
- const url = URL.createObjectURL(blob);
427
- // Crea un enlace de descarga y haz clic en él para iniciar la descarga
428
- const link = document.createElement('a');
429
- link.href = url;
430
- link.download = data.nombreArchivo + data.extension;
431
- document.body.appendChild(link);
432
- link.click();
433
- // Limpia la URL creada
434
- URL.revokeObjectURL(url);
435
- }
436
- });
437
- }
438
- descargarReporteSinHilo() {
439
- let listaEntrada = [];
440
- this.parametros.forEach(element => {
441
- listaEntrada.push(element.unionDTO);
442
- });
443
- this.ejecucionReporteService.descargarReporte({
444
- next: data => {
445
- this.notificacionService.showInfo(data.mensaje);
446
- const decodedData = atob(data.archivo);
447
- const byteNumbers = new Array(decodedData.length);
448
- for (let i = 0; i < decodedData.length; i++) {
449
- byteNumbers[i] = decodedData.charCodeAt(i);
450
- }
451
- const byteArray = new Uint8Array(byteNumbers);
452
- // Crea un objeto Blob con los bytes decodificados y el tipo MIME del archivo
453
- const blob = new Blob([byteArray], { type: data.mime });
454
- // Crea una URL del objeto Blob
455
- const url = URL.createObjectURL(blob);
456
- // Crea un enlace de descarga y haz clic en él para iniciar la descarga
457
- const link = document.createElement('a');
458
- link.href = url;
459
- link.download = data.nombreArchivo + '.' + data.extension;
460
- document.body.appendChild(link);
461
- link.click();
462
- // Limpia la URL creada
463
- URL.revokeObjectURL(url);
464
- },
465
- error: err => {
466
- this.notificacionService.showError(JSON.stringify(err.error.mensajeEtiqueta));
467
- }
468
- });
469
- }
470
- generarTabla() {
471
- this.panel = 'resultado';
472
- let listaEntrada = [];
473
- this.columnas = [];
474
- this.parametros.forEach(element => {
475
- listaEntrada.push(element.unionDTO);
476
- });
477
- this.ejecucionReporteService.generarTabla({ reporte: this.reporte, parametros: listaEntrada }).subscribe(data => {
478
- var columna;
479
- data.columnas.forEach(element => {
480
- columna = {
481
- field: element.nombre.toLowerCase(),
482
- header: element.nombre,
483
- width: 300,
484
- canOrder: true,
485
- };
486
- this.columnas.push(columna);
487
- });
488
- this.listaRegistro = data.listaRegistro;
489
- });
490
- }
491
- 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 });
492
- 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>\r\n<p-dialog id='popupReporte' header=\"{{'reportesgenerales' | translate}}\" [(visible)]=\"mostrar\" (onShow)=\"mostrarPopup()\"\r\n [breakpoints]=\"{'960px': '75vw', '640px': '100vw'}\" [style]=\"{width: '50vw'}\" (onHide)=\"ocultar()\" [modal]=\"true\">\r\n\r\n <div *ngIf=\"panel == 'entrada'\">\r\n <!--Segundo plano-->\r\n <p-accordion [multiple]=\"true\">\r\n <p-accordionTab [selected]=\"true\" [header]=\"'segundoplano' | translate\" *ngIf=\"listaSegundoPlano.length > 0\">\r\n <p-table [value]=\"listaSegundoPlano\" responsiveLayout=\"scroll\" [scrollable]=\"true\" selectionMode=\"single\"\r\n [rows]=\"paginator.rows\" [totalRecords]=\"paginator.totalRecords\"\r\n [paginator]=\"paginator.totalRecords > paginator.rows\" (onRowSelect)=\"verSegundoPlano($event)\">\r\n <ng-template pTemplate=\"header\">\r\n\r\n <tr class=\"fondoTablaPincipal\">\r\n <th>{{'estado' | translate }} </th>\r\n <th>{{'fechainicial' | translate }} </th>\r\n </tr>\r\n <th>\r\n </ng-template>\r\n <ng-template pTemplate=\"body\" let-entrada>\r\n <tr [pSelectableRow]=\"entrada\">\r\n <td>{{entrada.nombreEstado}}</td>\r\n <td>{{entrada.inicia | date: 'dd/MM/yyyy h:mm a'}}</td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n </p-accordionTab>\r\n </p-accordion>\r\n <p-fieldset class=\"mt-0\" *ngIf=\"mostrarParametros\">\r\n <ng-template pTemplate=\"header\">\r\n <div>\r\n <span class=\"glyphicons glyphicons-book\" style=\"color:var(--color-400)\"></span>\r\n <span>{{'entrada' | translate}}</span>\r\n </div>\r\n </ng-template>\r\n <p-table [value]=\"parametros\" >\r\n <ng-template pTemplate=\"body\" let-parametro>\r\n <tr [pSelectableRow]=\"parametro\">\r\n <!--<td>\r\n <label *ngIf=\"parametro.unionDTO.solicitar == 'S'\">{{ parametro.unionDTO.descripcion }}</label>\r\n </td>-->\r\n <td *ngIf=\"parametro.unionDTO.solicitar == 'S'\">\r\n <p-floatLabel>\r\n <input pInputText [(ngModel)]=\"parametro.unionDTO.valor\"\r\n *ngIf=\"(parametro.unionDTO.tipoDato == 'T' || parametro.unionDTO.tipoDato == 'E') && parametro.unionDTO.tipo == 'D'\" />\r\n\r\n <input pInputText [(ngModel)]=\"parametro.unionDTO.valor\"\r\n *ngIf=\"parametro.unionDTO.tipoDato == 'U' && parametro.unionDTO.tipo == 'D'\" />\r\n\r\n\r\n <p-inputNumber [(ngModel)]=\"parametro.unionDTO.valor\"\r\n *ngIf=\"parametro.unionDTO.tipoDato == 'N' && parametro.unionDTO.tipo == 'D'\">\r\n </p-inputNumber>\r\n\r\n <p-inputNumber [(ngModel)]=\"parametro.unionDTO.valor\" mode=\"decimal\" [minFractionDigits]=\"2\"\r\n [maxFractionDigits]=\"16\"\r\n *ngIf=\"parametro.unionDTO.tipoDato == 'B' && parametro.unionDTO.tipo == 'D'\">\r\n </p-inputNumber>\r\n\r\n <p-dropdown [options]=\"parametro.lista\" [autoDisplayFirst]=\"false\" appendTo=\"body\"\r\n (onChange)=\"cambioValorLista($event, parametro)\" [(ngModel)]=\"parametro.unionDTO.llaveLista\"\r\n optionLabel=\"label\" optionValue=\"value\" *ngIf=\"parametro.unionDTO.tipo == 'L'\">\r\n </p-dropdown>\r\n\r\n <p-calendar type=\"text\" [(ngModel)]=\"parametro.unionDTO.valor\" dateFormat=\"dd/mm/yy\" appendTo=\"body\"\r\n *ngIf=\"parametro.unionDTO.tipoDato == 'F' && parametro.unionDTO.tipo == 'D'\"></p-calendar>\r\n\r\n <label *ngIf=\"parametro.unionDTO.solicitar == 'S'\">{{ parametro.unionDTO.descripcion }}</label>\r\n </p-floatLabel>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n </p-fieldset>\r\n <p-fieldset class=\"mt-0\" *ngIf=\"generaciones.length > 0\">\r\n <ng-template pTemplate=\"header\">\r\n <div>\r\n <span class=\"glyphicons glyphicons-book\" style=\"color:var(--color-400)\"></span>\r\n <span>{{'generar' | translate}}</span>\r\n </div>\r\n </ng-template>\r\n <div class=\"p-fluid p-formgrid grid Inputgroup pb-0 col-md-12\">\r\n <div *ngFor=\"let valor of generaciones\" >\r\n <div class=\"field ml-2\">\r\n <div class=\"field-radiobutton\">\r\n <p-radioButton (onClick)=\"cambioTipoReporte($event)\" [inputId]=\"valor.value\" name=\"tipoReporte\"\r\n [value]=\"valor.value\" [(ngModel)]=\"tipoReporte\" />\r\n <label [for]=\"valor.value\" class=\"ml-2\">\r\n {{ valor.label }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </p-fieldset>\r\n\r\n <p-fieldset class=\"mt-0\" *ngIf=\"'A' != tipoReporte && mostrarQueDeseaHacer\" >\r\n <ng-template pTemplate=\"header\">\r\n <div>\r\n <span class=\"glyphicons glyphicons-book\" style=\"color:var(--color-400)\"></span>\r\n <span>\u00BFQu\u00E9 desea hacer?</span>\r\n </div>\r\n </ng-template>\r\n <label *ngIf=\"tipoReporte && 'F' == tipoReporte\">{{'seleccionetipoarchivodeseagenerar' | translate}}</label>\r\n\r\n <div *ngIf=\"tipoReporte && 'F' == tipoReporte\">\r\n <div class=\"p-fluid p-formgrid grid Inputgroup pb-0 col-md-12 mt-2\">\r\n <div class=\"field ml-2\">\r\n <div class=\"field-radiobutton\">\r\n <div class=\"field-checkbox\" *ngFor=\"let valor of mapaTipoArchivos\">\r\n <p-radioButton (onClick)=\"cambioTipoArchivo($event)\" [inputId]=\"valor.codigo\" name=\"tipoArchivo\"\r\n [value]=\"valor.codigo\" [(ngModel)]=\"tipoArchivo\" />\r\n <label [for]=\"valor.codigo\" class=\"ml-2\">\r\n {{ valor.nombre }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"mostrarArchivosSoporte\">\r\n <div class=\"Detallereporte\">\r\n <div class=\"p-fluid p-formgrid grid\">\r\n <div class=\"field col-12 md:col-12\">\r\n <p-floatLabel>\r\n <p-dropdown [options]=\"listadoArchivoSoporte\" [autoDisplayFirst]=\"false\" optionLabel=\"descripcion\" appendTo=\"body\"\r\n optionValue=\"llaveTabla\" [(ngModel)]=\"soporteBase\" (onChange)=\"cambioSoporteBase($event)\"></p-dropdown>\r\n <label>Soporte Base:</label>\r\n </p-floatLabel>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"tipoReporte == 'F' && tipoArchivo || tipoReporte != 'F' \">\r\n <div class=\"p-fluid p-formgrid grid Inputgroup pb-0 col-md-12\">\r\n <div *ngFor=\"let valor of operaciones\" >\r\n <div class=\"field ml-2\">\r\n <div class=\"field-radiobutton\">\r\n <p-radioButton [inputId]=\"valor.value\" name=\"operacion\" [value]=\"valor.value\"\r\n [(ngModel)]=\"operacion\" />\r\n <label [for]=\"valor.value\" class=\"ml-2\">\r\n {{ valor.label }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"operacion == 'E'\">\r\n <p-floatLabel>\r\n <input pInputText [(ngModel)]=\"correo\" type=\"text\" [disabled]=\"bloquearCorreo\" />\r\n <label>{{'correo' | translate}}</label>\r\n </p-floatLabel>\r\n </div>\r\n </p-fieldset>\r\n \r\n\r\n <div class=\"flex justify-content-end\">\r\n <button pButton pRipple class=\"m-2 mt-4 p-button p-button-outlined background-100\"\r\n *ngIf=\"validarControlFuncionalidad('ejecrepo:sentencia')\" label=\"Ver sentencia\" icon=\"glyphicons glyphicons-eye-open\"\r\n (click)=\"sentencia()\"></button>\r\n <button pButton pRipple class=\"m-2 mt-4 p-button-raised\" *ngIf=\"operacion == 'E'\" icon=\"glyphicons glyphicons-envelope\"\r\n label=\"{{'link_enviar' | translate}}\" (click)=\"enviarSegundoPlano()\"></button>\r\n <button pButton pRipple class=\"m-2 mt-4 p-button-raised\" *ngIf=\"operacion == 'D' && reporte.momento != 'D'\" icon=\"glyphicons glyphicons-check\"\r\n label=\"{{'generar' | translate}}\" (click)=\"descargarReporte()\"></button>\r\n <button pButton pRipple class=\"m-2 mt-4 p-button-raised\" *ngIf=\"operacion == 'D' && reporte.momento == 'D'\" icon=\"glyphicons glyphicons-check\"\r\n label=\"{{'generar' | translate}}\" (click)=\"descargarReporteSinHilo()\"></button>\r\n <button pButton pRipple class=\"m-2 mt-4 p-button-raised\" *ngIf=\"tipoReporte == 'A'\" icon=\"glyphicons glyphicons-check\"\r\n label=\"{{'generar' | translate}}\" (click)=\"generarTabla()\"></button>\r\n <!--pte proceso externo-->\r\n <button pButton pRipple class=\"m-2 mt-4 p-button-raised\" *ngIf=\"operacion == 'M' || operacion == 'MP'\" icon=\"glyphicons glyphicons-envelope\"\r\n label=\"{{'link_enviar' | translate}}\" (click)=\"enviarSegundoPlano()\"></button>\r\n <button pButton pRipple class=\"m-2 mt-4 p-button-raised\" *ngIf=\"operacion == 'P'\" icon=\"glyphicons glyphicons-folder-open\"\r\n label=\"{{'link_publicar' | translate}}\" (click)=\"enviarSegundoPlano()\"></button>\r\n <button pButton pRipple class=\"m-2 mt-4 p-button-raised\" *ngIf=\"operacion =='S'\" icon=\"glyphicons glyphicons-check\"\r\n label=\"{{'link_generar' | translate}}\" (click)=\"enviarSegundoPlano()\"></button>\r\n\r\n </div>\r\n </div>\r\n <div *ngIf=\"panel == 'resultado'\">\r\n <div *ngIf=\"operacion == 'historico'\">\r\n <div class=\"flex justify-content-between align-items-center mt-2 mb-2\">\r\n <h4 class=\"text-base mt-2 ml-2\">{{'detalle' | translate}} {{'segundoplano' | translate}}</h4>\r\n <button pButton pRipple icon=\"pi pi-chevron-left\" class=\"p-button-text font-semibold flex-shrink-0 ml-4\"\r\n (click)=\"regresarSegundoPlano()\" label=\"{{'link_regresar' | translate}}\" >\r\n </button>\r\n </div>\r\n <div class=\" Inputgroup\">\r\n <div class=\"col-md-12\">\r\n <div class=\"p-fluid p-formgrid grid\">\r\n <div class=\"field col-12 md:col-4 lg:col-4\">\r\n <p-floatLabel>\r\n <p-calendar type=\"text\" [(ngModel)]=\"elementoBorrar.inicia\" [disabled]=\"true\" appendTo=\"body\"\r\n [showTime]=\"true\" [showSeconds]=\"true\" dateFormat=\"dd/mm/yy\"></p-calendar>\r\n <label>{{('fechainicial') | translate}}</label>\r\n </p-floatLabel>\r\n </div>\r\n\r\n <div class=\"field col-12 md:col-4 lg:col-4\">\r\n <p-floatLabel>\r\n <p-calendar type=\"text\" [(ngModel)]=\"elementoBorrar.termina\" [disabled]=\"true\" appendTo=\"body\"\r\n [showTime]=\"true\" [showSeconds]=\"true\" dateFormat=\"dd/mm/yy\"></p-calendar>\r\n <label>{{('fechafinal') | translate}}</label>\r\n </p-floatLabel>\r\n </div>\r\n\r\n <div class=\"field col-12 md:col-4 lg:col-4\">\r\n <p-floatLabel>\r\n <input pInputText type=\"text\" [readonly]=\"false\"\r\n [(ngModel)]=\"elementoBorrar.nombreEstado\" [disabled]=\"true\" />\r\n <label>{{('estado') | translate}}</label>\r\n </p-floatLabel>\r\n </div>\r\n\r\n <div class=\"field col-12 md:col-12 lg:col-12\" *ngIf=\"elementoBorrar.estado == 'E'\">\r\n <label>{{('mensaje') | translate}}</label>\r\n <textarea class=\"min-w-full2 p-inputtextarea p-inputtext p-component p-element \"\r\n rows=\"5\" cols=\"30\" pInputTextarea [(ngModel)]=\"elementoBorrar.archivo\"\r\n [disabled]=\"true\"></textarea>\r\n </div>\r\n </div>\r\n <div class=\"flex justify-content-end\">\r\n <button pButton pRipple class=\"ml-2 p-button p-button-raised\"\r\n *ngIf=\"elementoBorrar.estado == 'T'\" icon=\"pi pi-download\"\r\n label=\"{{'link_descargar' | translate}}\" (click)=\"descargarArchivo()\">\r\n </button>\r\n <button pButton pRipple class=\"ml-2 p-button-outlined\" icon=\"glyphicons glyphicons-bin\"\r\n label=\"{{'link_eliminar' | translate}}\" (click)=\"eliminarSegundoPlano($event)\">\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"tipoReporte == 'A'\" >\r\n <p-table [value]=\"listaRegistro\" responsiveLayout=\"scroll\" [scrollable]=\"true\"\r\n [rows]=\"10\" [totalRecords]=\"listaRegistro.length\" [paginator]=\"listaRegistro.length > 10\" >\r\n <ng-template pTemplate=\"header\">\r\n <tr class=\"fondoTablaPincipal\">\r\n <th [style.width.px]=\"col.width || 200\" *ngFor=\"let col of columnas\">{{ col.header }}</th>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"body\" let-entrada>\r\n <tr>\r\n <td [style.width.px]=\"col.width || 200\" *ngFor=\"let col of columnas\">{{ entrada[col.field] }}</td>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"emptymessage\">\r\n <p class=\"p-3 font-medium emptymessage\">\r\n {{'mensajetablavacia' | translate}}\r\n </p>\r\n </ng-template>\r\n </p-table>\r\n </div>\r\n </div>\r\n\r\n</p-dialog>\r\n<app-popup-sentencia [reporte]=\"reporte\" [parametros]=\"parametros\" [mostrarPopup]=\"mostrarPopupSentencia\"\r\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" }] });
493
- }
494
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: PopupReporteComponent, decorators: [{
495
- type: Component,
496
- 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>\r\n<p-dialog id='popupReporte' header=\"{{'reportesgenerales' | translate}}\" [(visible)]=\"mostrar\" (onShow)=\"mostrarPopup()\"\r\n [breakpoints]=\"{'960px': '75vw', '640px': '100vw'}\" [style]=\"{width: '50vw'}\" (onHide)=\"ocultar()\" [modal]=\"true\">\r\n\r\n <div *ngIf=\"panel == 'entrada'\">\r\n <!--Segundo plano-->\r\n <p-accordion [multiple]=\"true\">\r\n <p-accordionTab [selected]=\"true\" [header]=\"'segundoplano' | translate\" *ngIf=\"listaSegundoPlano.length > 0\">\r\n <p-table [value]=\"listaSegundoPlano\" responsiveLayout=\"scroll\" [scrollable]=\"true\" selectionMode=\"single\"\r\n [rows]=\"paginator.rows\" [totalRecords]=\"paginator.totalRecords\"\r\n [paginator]=\"paginator.totalRecords > paginator.rows\" (onRowSelect)=\"verSegundoPlano($event)\">\r\n <ng-template pTemplate=\"header\">\r\n\r\n <tr class=\"fondoTablaPincipal\">\r\n <th>{{'estado' | translate }} </th>\r\n <th>{{'fechainicial' | translate }} </th>\r\n </tr>\r\n <th>\r\n </ng-template>\r\n <ng-template pTemplate=\"body\" let-entrada>\r\n <tr [pSelectableRow]=\"entrada\">\r\n <td>{{entrada.nombreEstado}}</td>\r\n <td>{{entrada.inicia | date: 'dd/MM/yyyy h:mm a'}}</td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n </p-accordionTab>\r\n </p-accordion>\r\n <p-fieldset class=\"mt-0\" *ngIf=\"mostrarParametros\">\r\n <ng-template pTemplate=\"header\">\r\n <div>\r\n <span class=\"glyphicons glyphicons-book\" style=\"color:var(--color-400)\"></span>\r\n <span>{{'entrada' | translate}}</span>\r\n </div>\r\n </ng-template>\r\n <p-table [value]=\"parametros\" >\r\n <ng-template pTemplate=\"body\" let-parametro>\r\n <tr [pSelectableRow]=\"parametro\">\r\n <!--<td>\r\n <label *ngIf=\"parametro.unionDTO.solicitar == 'S'\">{{ parametro.unionDTO.descripcion }}</label>\r\n </td>-->\r\n <td *ngIf=\"parametro.unionDTO.solicitar == 'S'\">\r\n <p-floatLabel>\r\n <input pInputText [(ngModel)]=\"parametro.unionDTO.valor\"\r\n *ngIf=\"(parametro.unionDTO.tipoDato == 'T' || parametro.unionDTO.tipoDato == 'E') && parametro.unionDTO.tipo == 'D'\" />\r\n\r\n <input pInputText [(ngModel)]=\"parametro.unionDTO.valor\"\r\n *ngIf=\"parametro.unionDTO.tipoDato == 'U' && parametro.unionDTO.tipo == 'D'\" />\r\n\r\n\r\n <p-inputNumber [(ngModel)]=\"parametro.unionDTO.valor\"\r\n *ngIf=\"parametro.unionDTO.tipoDato == 'N' && parametro.unionDTO.tipo == 'D'\">\r\n </p-inputNumber>\r\n\r\n <p-inputNumber [(ngModel)]=\"parametro.unionDTO.valor\" mode=\"decimal\" [minFractionDigits]=\"2\"\r\n [maxFractionDigits]=\"16\"\r\n *ngIf=\"parametro.unionDTO.tipoDato == 'B' && parametro.unionDTO.tipo == 'D'\">\r\n </p-inputNumber>\r\n\r\n <p-dropdown [options]=\"parametro.lista\" [autoDisplayFirst]=\"false\" appendTo=\"body\"\r\n (onChange)=\"cambioValorLista($event, parametro)\" [(ngModel)]=\"parametro.unionDTO.llaveLista\"\r\n optionLabel=\"label\" optionValue=\"value\" *ngIf=\"parametro.unionDTO.tipo == 'L'\">\r\n </p-dropdown>\r\n\r\n <p-calendar type=\"text\" [(ngModel)]=\"parametro.unionDTO.valor\" dateFormat=\"dd/mm/yy\" appendTo=\"body\"\r\n *ngIf=\"parametro.unionDTO.tipoDato == 'F' && parametro.unionDTO.tipo == 'D'\"></p-calendar>\r\n\r\n <label *ngIf=\"parametro.unionDTO.solicitar == 'S'\">{{ parametro.unionDTO.descripcion }}</label>\r\n </p-floatLabel>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n </p-fieldset>\r\n <p-fieldset class=\"mt-0\" *ngIf=\"generaciones.length > 0\">\r\n <ng-template pTemplate=\"header\">\r\n <div>\r\n <span class=\"glyphicons glyphicons-book\" style=\"color:var(--color-400)\"></span>\r\n <span>{{'generar' | translate}}</span>\r\n </div>\r\n </ng-template>\r\n <div class=\"p-fluid p-formgrid grid Inputgroup pb-0 col-md-12\">\r\n <div *ngFor=\"let valor of generaciones\" >\r\n <div class=\"field ml-2\">\r\n <div class=\"field-radiobutton\">\r\n <p-radioButton (onClick)=\"cambioTipoReporte($event)\" [inputId]=\"valor.value\" name=\"tipoReporte\"\r\n [value]=\"valor.value\" [(ngModel)]=\"tipoReporte\" />\r\n <label [for]=\"valor.value\" class=\"ml-2\">\r\n {{ valor.label }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </p-fieldset>\r\n\r\n <p-fieldset class=\"mt-0\" *ngIf=\"'A' != tipoReporte && mostrarQueDeseaHacer\" >\r\n <ng-template pTemplate=\"header\">\r\n <div>\r\n <span class=\"glyphicons glyphicons-book\" style=\"color:var(--color-400)\"></span>\r\n <span>\u00BFQu\u00E9 desea hacer?</span>\r\n </div>\r\n </ng-template>\r\n <label *ngIf=\"tipoReporte && 'F' == tipoReporte\">{{'seleccionetipoarchivodeseagenerar' | translate}}</label>\r\n\r\n <div *ngIf=\"tipoReporte && 'F' == tipoReporte\">\r\n <div class=\"p-fluid p-formgrid grid Inputgroup pb-0 col-md-12 mt-2\">\r\n <div class=\"field ml-2\">\r\n <div class=\"field-radiobutton\">\r\n <div class=\"field-checkbox\" *ngFor=\"let valor of mapaTipoArchivos\">\r\n <p-radioButton (onClick)=\"cambioTipoArchivo($event)\" [inputId]=\"valor.codigo\" name=\"tipoArchivo\"\r\n [value]=\"valor.codigo\" [(ngModel)]=\"tipoArchivo\" />\r\n <label [for]=\"valor.codigo\" class=\"ml-2\">\r\n {{ valor.nombre }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"mostrarArchivosSoporte\">\r\n <div class=\"Detallereporte\">\r\n <div class=\"p-fluid p-formgrid grid\">\r\n <div class=\"field col-12 md:col-12\">\r\n <p-floatLabel>\r\n <p-dropdown [options]=\"listadoArchivoSoporte\" [autoDisplayFirst]=\"false\" optionLabel=\"descripcion\" appendTo=\"body\"\r\n optionValue=\"llaveTabla\" [(ngModel)]=\"soporteBase\" (onChange)=\"cambioSoporteBase($event)\"></p-dropdown>\r\n <label>Soporte Base:</label>\r\n </p-floatLabel>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"tipoReporte == 'F' && tipoArchivo || tipoReporte != 'F' \">\r\n <div class=\"p-fluid p-formgrid grid Inputgroup pb-0 col-md-12\">\r\n <div *ngFor=\"let valor of operaciones\" >\r\n <div class=\"field ml-2\">\r\n <div class=\"field-radiobutton\">\r\n <p-radioButton [inputId]=\"valor.value\" name=\"operacion\" [value]=\"valor.value\"\r\n [(ngModel)]=\"operacion\" />\r\n <label [for]=\"valor.value\" class=\"ml-2\">\r\n {{ valor.label }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"operacion == 'E'\">\r\n <p-floatLabel>\r\n <input pInputText [(ngModel)]=\"correo\" type=\"text\" [disabled]=\"bloquearCorreo\" />\r\n <label>{{'correo' | translate}}</label>\r\n </p-floatLabel>\r\n </div>\r\n </p-fieldset>\r\n \r\n\r\n <div class=\"flex justify-content-end\">\r\n <button pButton pRipple class=\"m-2 mt-4 p-button p-button-outlined background-100\"\r\n *ngIf=\"validarControlFuncionalidad('ejecrepo:sentencia')\" label=\"Ver sentencia\" icon=\"glyphicons glyphicons-eye-open\"\r\n (click)=\"sentencia()\"></button>\r\n <button pButton pRipple class=\"m-2 mt-4 p-button-raised\" *ngIf=\"operacion == 'E'\" icon=\"glyphicons glyphicons-envelope\"\r\n label=\"{{'link_enviar' | translate}}\" (click)=\"enviarSegundoPlano()\"></button>\r\n <button pButton pRipple class=\"m-2 mt-4 p-button-raised\" *ngIf=\"operacion == 'D' && reporte.momento != 'D'\" icon=\"glyphicons glyphicons-check\"\r\n label=\"{{'generar' | translate}}\" (click)=\"descargarReporte()\"></button>\r\n <button pButton pRipple class=\"m-2 mt-4 p-button-raised\" *ngIf=\"operacion == 'D' && reporte.momento == 'D'\" icon=\"glyphicons glyphicons-check\"\r\n label=\"{{'generar' | translate}}\" (click)=\"descargarReporteSinHilo()\"></button>\r\n <button pButton pRipple class=\"m-2 mt-4 p-button-raised\" *ngIf=\"tipoReporte == 'A'\" icon=\"glyphicons glyphicons-check\"\r\n label=\"{{'generar' | translate}}\" (click)=\"generarTabla()\"></button>\r\n <!--pte proceso externo-->\r\n <button pButton pRipple class=\"m-2 mt-4 p-button-raised\" *ngIf=\"operacion == 'M' || operacion == 'MP'\" icon=\"glyphicons glyphicons-envelope\"\r\n label=\"{{'link_enviar' | translate}}\" (click)=\"enviarSegundoPlano()\"></button>\r\n <button pButton pRipple class=\"m-2 mt-4 p-button-raised\" *ngIf=\"operacion == 'P'\" icon=\"glyphicons glyphicons-folder-open\"\r\n label=\"{{'link_publicar' | translate}}\" (click)=\"enviarSegundoPlano()\"></button>\r\n <button pButton pRipple class=\"m-2 mt-4 p-button-raised\" *ngIf=\"operacion =='S'\" icon=\"glyphicons glyphicons-check\"\r\n label=\"{{'link_generar' | translate}}\" (click)=\"enviarSegundoPlano()\"></button>\r\n\r\n </div>\r\n </div>\r\n <div *ngIf=\"panel == 'resultado'\">\r\n <div *ngIf=\"operacion == 'historico'\">\r\n <div class=\"flex justify-content-between align-items-center mt-2 mb-2\">\r\n <h4 class=\"text-base mt-2 ml-2\">{{'detalle' | translate}} {{'segundoplano' | translate}}</h4>\r\n <button pButton pRipple icon=\"pi pi-chevron-left\" class=\"p-button-text font-semibold flex-shrink-0 ml-4\"\r\n (click)=\"regresarSegundoPlano()\" label=\"{{'link_regresar' | translate}}\" >\r\n </button>\r\n </div>\r\n <div class=\" Inputgroup\">\r\n <div class=\"col-md-12\">\r\n <div class=\"p-fluid p-formgrid grid\">\r\n <div class=\"field col-12 md:col-4 lg:col-4\">\r\n <p-floatLabel>\r\n <p-calendar type=\"text\" [(ngModel)]=\"elementoBorrar.inicia\" [disabled]=\"true\" appendTo=\"body\"\r\n [showTime]=\"true\" [showSeconds]=\"true\" dateFormat=\"dd/mm/yy\"></p-calendar>\r\n <label>{{('fechainicial') | translate}}</label>\r\n </p-floatLabel>\r\n </div>\r\n\r\n <div class=\"field col-12 md:col-4 lg:col-4\">\r\n <p-floatLabel>\r\n <p-calendar type=\"text\" [(ngModel)]=\"elementoBorrar.termina\" [disabled]=\"true\" appendTo=\"body\"\r\n [showTime]=\"true\" [showSeconds]=\"true\" dateFormat=\"dd/mm/yy\"></p-calendar>\r\n <label>{{('fechafinal') | translate}}</label>\r\n </p-floatLabel>\r\n </div>\r\n\r\n <div class=\"field col-12 md:col-4 lg:col-4\">\r\n <p-floatLabel>\r\n <input pInputText type=\"text\" [readonly]=\"false\"\r\n [(ngModel)]=\"elementoBorrar.nombreEstado\" [disabled]=\"true\" />\r\n <label>{{('estado') | translate}}</label>\r\n </p-floatLabel>\r\n </div>\r\n\r\n <div class=\"field col-12 md:col-12 lg:col-12\" *ngIf=\"elementoBorrar.estado == 'E'\">\r\n <label>{{('mensaje') | translate}}</label>\r\n <textarea class=\"min-w-full2 p-inputtextarea p-inputtext p-component p-element \"\r\n rows=\"5\" cols=\"30\" pInputTextarea [(ngModel)]=\"elementoBorrar.archivo\"\r\n [disabled]=\"true\"></textarea>\r\n </div>\r\n </div>\r\n <div class=\"flex justify-content-end\">\r\n <button pButton pRipple class=\"ml-2 p-button p-button-raised\"\r\n *ngIf=\"elementoBorrar.estado == 'T'\" icon=\"pi pi-download\"\r\n label=\"{{'link_descargar' | translate}}\" (click)=\"descargarArchivo()\">\r\n </button>\r\n <button pButton pRipple class=\"ml-2 p-button-outlined\" icon=\"glyphicons glyphicons-bin\"\r\n label=\"{{'link_eliminar' | translate}}\" (click)=\"eliminarSegundoPlano($event)\">\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"tipoReporte == 'A'\" >\r\n <p-table [value]=\"listaRegistro\" responsiveLayout=\"scroll\" [scrollable]=\"true\"\r\n [rows]=\"10\" [totalRecords]=\"listaRegistro.length\" [paginator]=\"listaRegistro.length > 10\" >\r\n <ng-template pTemplate=\"header\">\r\n <tr class=\"fondoTablaPincipal\">\r\n <th [style.width.px]=\"col.width || 200\" *ngFor=\"let col of columnas\">{{ col.header }}</th>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"body\" let-entrada>\r\n <tr>\r\n <td [style.width.px]=\"col.width || 200\" *ngFor=\"let col of columnas\">{{ entrada[col.field] }}</td>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"emptymessage\">\r\n <p class=\"p-3 font-medium emptymessage\">\r\n {{'mensajetablavacia' | translate}}\r\n </p>\r\n </ng-template>\r\n </p-table>\r\n </div>\r\n </div>\r\n\r\n</p-dialog>\r\n<app-popup-sentencia [reporte]=\"reporte\" [parametros]=\"parametros\" [mostrarPopup]=\"mostrarPopupSentencia\"\r\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"] }]
497
- }], 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: [{
498
- type: Input
499
- }], aplicacion: [{
500
- type: Input
501
- }], reporte: [{
502
- type: Input
503
- }], entradasPuntoProceso: [{
504
- type: Input
505
- }], regresar: [{
506
- type: Output
507
- }] } });
508
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wdXAtcmVwb3J0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3dlYmNvbW1vbi9wb3B1cHMvcG9wdXAtcmVwb3J0ZS9wb3B1cC1yZXBvcnRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvd2ViY29tbW9uL3BvcHVwcy9wb3B1cC1yZXBvcnRlL3BvcHVwLXJlcG9ydGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsZUFBZSxFQUFvQixNQUFNLHFCQUFxQixDQUFDO0FBR3hFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUd2RSxPQUFPLEVBQUUsbUJBQW1CLEVBQVksY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRzVFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBUW5GLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1QyxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FB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QkFNbEMsT0FBTztzQkFBdEIsS0FBSztnQkFDVSxVQUFVO3NCQUF6QixLQUFLO2dCQUNVLE9BQU87c0JBQXRCLEtBQUs7Z0JBQ1Usb0JBQW9CO3NCQUFuQyxLQUFLO2dCQUNXLFFBQVE7c0JBQXhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSwgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQgeyBHZW5lcmFsUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL2dlbmVyYWwucGlwZSc7XHJcbmltcG9ydCB7IEdlbmVyYWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3NlcnZpY2lvcy9nZW5lcmFsLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBHZW5lcmFsTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9zZWd1cmlkYWQvbW9kZWxvcy9HZW5lcmFsTW9kZWwnO1xyXG5pbXBvcnQgeyBDYXJnYXJBcmNoaXZvc1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvc2VydmljaW9zL2Nhcmdhci1hcmNoaXZvcy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRW5jcmlwdGFkb0Jhc2ljb1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvc2VydmljaW9zL2VuY3JpcHRhZG8tYmFzaWNvLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb25maXJtYXRpb25TZXJ2aWNlLCBNZW51SXRlbSwgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcbmltcG9ydCB7IFJlcG9ydGVGdWVudGVQaXBlIH0gZnJvbSAnLi4vLi4vcGlwZXMvcmVwb3J0ZS1mdWVudGUucGlwZSc7XHJcbmltcG9ydCB7IEVqZWN1Y2lvblJlcG9ydGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZWplY3VjaW9ucmVwb3J0ZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUmVwb3J0ZUZ1ZW50ZU1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vc2VndXJpZGFkL21vZGVsb3MvUmVwb3J0ZUZ1ZW50ZU1vZGVsJztcclxuaW1wb3J0IHsgUmVwb3J0ZUVudHJhZGFNb2RlbCB9IGZyb20gJy4uLy4uLy4uL3NlZ3VyaWRhZC9tb2RlbG9zL1JlcG9ydGVFbnRyYWRhTW9kZWwnO1xyXG5pbXBvcnQgeyBSZXBvcnRlU29wb3J0ZU1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vc2VndXJpZGFkL21vZGVsb3MvUmVwb3J0ZVNvcG9ydGUnO1xyXG5pbXBvcnQgeyBUYWJsZUNvbHVtbiB9IGZyb20gJy4uLy4uLy4uL2NvcmUvbW9kZWxvcy90YWJsZS1jb2x1bW4ubW9kZWwnO1xyXG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2lvcy90b2FzdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVXRpbHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNpb3MvdXRpbHMuc2VydmljZSc7XHJcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNpb3MvYXV0aC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ2FyZ2FyQ29udHJvbEZ1bmNpb25hbGlkYWRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNpb3MvY2FyZ2FyLWNvbnRyb2wtZnVuY2lvbmFsaWRhZC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGlhbG9nTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9kaWFsb2cnO1xyXG5pbXBvcnQgeyBDb25maXJtUG9wdXBNb2R1bGUgfSBmcm9tICdwcmltZW5nL2NvbmZpcm1wb3B1cCc7XHJcbmltcG9ydCB7IEFjY29yZGlvbk1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvYWNjb3JkaW9uJztcclxuaW1wb3J0IHsgVGFibGVNb2R1bGUgfSBmcm9tICdwcmltZW5nL3RhYmxlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlLCBEYXRlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEZpZWxkc2V0TW9kdWxlIH0gZnJvbSAncHJpbWVuZy9maWVsZHNldCc7XHJcbmltcG9ydCB7IElucHV0TnVtYmVyTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9pbnB1dG51bWJlcic7XHJcbmltcG9ydCB7IElucHV0VGV4dE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvaW5wdXR0ZXh0JztcclxuaW1wb3J0IHsgRHJvcGRvd25Nb2R1bGUgfSBmcm9tICdwcmltZW5nL2Ryb3Bkb3duJztcclxuaW1wb3J0IHsgQ2FsZW5kYXJNb2R1bGUgfSBmcm9tICdwcmltZW5nL2NhbGVuZGFyJztcclxuaW1wb3J0IHsgUmFkaW9CdXR0b25Nb2R1bGUgfSBmcm9tICdwcmltZW5nL3JhZGlvYnV0dG9uJztcclxuaW1wb3J0IHsgUG9wdXBTZW50ZW5jaWFDb21wb25lbnQgfSBmcm9tICcuLi9wb3B1cC1zZW50ZW5jaWEvcG9wdXAtc2VudGVuY2lhLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBGbG9hdExhYmVsTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9mbG9hdGxhYmVsJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLXBvcHVwLXJlcG9ydGUnLFxyXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIERpYWxvZ01vZHVsZSwgQ29uZmlybVBvcHVwTW9kdWxlLCBBY2NvcmRpb25Nb2R1bGUsIFRhYmxlTW9kdWxlLCBUcmFuc2xhdGVNb2R1bGUsIERhdGVQaXBlLCBGaWVsZHNldE1vZHVsZSwgSW5wdXROdW1iZXJNb2R1bGUsIElucHV0VGV4dE1vZHVsZSwgRHJvcGRvd25Nb2R1bGUsIENhbGVuZGFyTW9kdWxlLCBSYWRpb0J1dHRvbk1vZHVsZSwgUG9wdXBTZW50ZW5jaWFDb21wb25lbnQsIEZvcm1zTW9kdWxlLCBGbG9hdExhYmVsTW9kdWxlXSxcclxuICAgIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgICBwcm92aWRlcnM6IFtNZXNzYWdlU2VydmljZSwgQ29uZmlybWF0aW9uU2VydmljZV0sXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vcG9wdXAtcmVwb3J0ZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vcG9wdXAtcmVwb3J0ZS5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQb3B1cFJlcG9ydGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBASW5wdXQoKSBwdWJsaWMgbW9zdHJhciA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBhcGxpY2FjaW9uOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgcHVibGljIHJlcG9ydGU6IFJlcG9ydGVGdWVudGVNb2RlbCA9IG5ldyBSZXBvcnRlRnVlbnRlTW9kZWw7XHJcbiAgQElucHV0KCkgcHVibGljIGVudHJhZGFzUHVudG9Qcm9jZXNvOiBhbnlbXT1bXTtcclxuICBAT3V0cHV0KCkgcHVibGljIHJlZ3Jlc2FyOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgcHVibGljIHBhbmVsOiBzdHJpbmcgPSAnZW50cmFkYSc7XHJcbiAgcHVibGljIG9wZXJhY2lvbjogc3RyaW5nO1xyXG4gIHB1YmxpYyBsaXN0YUVudHJhZGE6IFJlcG9ydGVFbnRyYWRhTW9kZWxbXSA9IFtdO1xyXG4gIHB1YmxpYyBsaXN0YVNlZ3VuZG9QbGFubzogYW55W10gPSBbXTtcclxuICBwdWJsaWMgcGFyYW1ldHJvczogYW55W10gPSBbXTtcclxuICBwdWJsaWMgZWxlbWVudG9Cb3JyYXI6IGFueSA9IHt9O1xyXG4gIHB1YmxpYyBnZW5lcmFjaW9uZXM6IGFueVtdID0gW107XHJcbiAgcHVibGljIG9wZXJhY2lvbmVzOiBhbnlbXSA9IFtdO1xyXG4gIHB1YmxpYyBtb3N0cmFyT3RyYVNlbGVjY2lvbjogYm9vbGVhbjtcclxuXHRwdWJsaWMgbW9zdHJhckFyY2hpdm9zU29wb3J0ZTogYm9vbGVhbjtcclxuXHRwdWJsaWMgbW9zdHJhckNvbnN1bHRhQ2Fzb0Vycm9yOiBib29sZWFuO1xyXG4gIHB1YmxpYyBjb3JyZW86IHN0cmluZztcclxuICBwdWJsaWMgdGlwb1JlcG9ydGU6IHN0cmluZztcclxuICBwdWJsaWMgc29wb3J0ZUJhc2U6IHN0cmluZztcclxuICBwdWJsaWMgdGlwb0FyY2hpdm86IHN0cmluZztcclxuICBwdWJsaWMgYmxvcXVlYXJDb3JyZW86IGJvb2xlYW47XHJcbiAgcHVibGljIG1hcGFUaXBvQXJjaGl2b3M7XHJcbiAgcHVibGljIGxpc3RhZG9BcmNoaXZvU29wb3J0ZTogUmVwb3J0ZVNvcG9ydGVNb2RlbFtdID0gW107XHJcbiAgcHVibGljIG1vc3RyYXJQb3B1cFNlbnRlbmNpYTogYm9vbGVhbjtcclxuXHJcbiAgcHVibGljIGl0ZW1zOiBNZW51SXRlbVtdO1xyXG4gIHB1YmxpYyB2aXN0YVZpc3VhbGl6YXI6IHN0cmluZztcclxuICBwYWdpbmF0b3I9e3Jvd3M6Mix0b3RhbFJlY29yZHM6MH1cclxuICBwdWJsaWMgbW9zdHJhclBhcmFtZXRyb3M6IGJvb2xlYW47XHJcblx0cHVibGljIG1vc3RyYXJRdWVEZXNlYUhhY2VyOiBib29sZWFuO1xyXG5cclxuICBwdWJsaWMgY29sdW1uYXM6IFRhYmxlQ29sdW1uW10gPSBbXTtcclxuICBwdWJsaWMgbGlzdGFSZWdpc3RybzogYW55W10gPSBbXTtcclxuXHJcbiAgcHVibGljIGV4aXN0ZUphc3BlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGdlbmVyYWxTZXJ2aWNlOiBHZW5lcmFsU2VydmljZSxcclxuICAgICAgICAgICAgICBwcml2YXRlIGVqZWN1Y2lvblJlcG9ydGVTZXJ2aWNlOiBFamVjdWNpb25SZXBvcnRlU2VydmljZSxcclxuICAgICAgICAgICAgICBwcml2YXRlIGNvbmZpcm1hdGlvblNlcnZpY2U6IENvbmZpcm1hdGlvblNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSBub3RpZmljYWNpb25TZXJ2aWNlOiBUb2FzdFNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgY2FyZ2FyQXJjaGl2b1NlcnZpY2U6IENhcmdhckFyY2hpdm9zU2VydmljZSxcclxuICAgICAgICAgICAgICBwdWJsaWMgdXRpbHNTZXJ2aWNlOiBVdGlsc1NlcnZpY2UsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSBjb250cm9sRnVuY2lvbmFsaWRhZDogQ2FyZ2FyQ29udHJvbEZ1bmNpb25hbGlkYWRTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgZW5jcmlwdGFkb0Jhc2ljbzogRW5jcmlwdGFkb0Jhc2ljb1NlcnZpY2UsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSByZXBvcnRlRnVlbnRlUGlwZTogUmVwb3J0ZUZ1ZW50ZVBpcGUsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSBnZW5lcmFsUGlwZTogR2VuZXJhbFBpcGUsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSBjYXJnYXJBcmNoaXZvOiBDYXJnYXJBcmNoaXZvc1NlcnZpY2UsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSBlbmNyaXB0YWRvckFyY2hpdm86IEVuY3JpcHRhZG9CYXNpY29TZXJ2aWNlLCkgeyB9ICAgICAgICAgXHJcbiAgXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLm1hcGFUaXBvQXJjaGl2b3MgPSB0aGlzLnJlcG9ydGVGdWVudGVQaXBlLk1BUEFfVElQT19BUkNISVZPUzsgIFxyXG4gIH1cclxuXHJcbiAgYXN5bmMgbW9zdHJhclBvcHVwKCl7XHJcbiAgICB0aGlzLnBhbmVsID0gJ2VudHJhZGEnO1xyXG4gICAgdGhpcy5tb3N0cmFyUXVlRGVzZWFIYWNlciA9IGZhbHNlO1xyXG4gICAgdGhpcy50aXBvUmVwb3J0ZSA9IG51bGw7XHJcbiAgICB0aGlzLm1vc3RyYXJDb25zdWx0YUNhc29FcnJvciA9IHRoaXMudmFsaWRhckNvbnRyb2xGdW5jaW9uYWxpZGFkKCdyZXBvcnRlOnZlcnNlbnRlbmNpYWVycm9yJyk7XHJcbiAgICB0aGlzLm9wZXJhY2lvbiA9IG51bGw7XHJcbiAgICB0aGlzLmVsZW1lbnRvQm9ycmFyID0ge31cclxuICAgIHRoaXMubGlzdGFTZWd1bmRvUGxhbm8gPSBbXVxyXG4gICAgdGhpcy5saXN0YVJlZ2lzdHJvID0gW107XHJcbiAgICB0aGlzLmNvbHVtbmFzID0gW107XHJcbiAgICB0aGlzLmV4aXN0ZUphc3BlciA9IGZhbHNlO1xyXG4gICAgaWYgKHRoaXMucmVwb3J0ZS5sbGF2ZSkge1xyXG4gICAgICB2YXIgcmVzdWx0YWRvID0gYXdhaXQgdGhpcy5lamVjdWNpb25SZXBvcnRlU2VydmljZS5nZXREYXRvc0VqZWN1Y2lvblJlcG9ydGUoe2xsYXZlOiB0aGlzLnJlcG9ydGUubGxhdmV9KS50b1Byb21pc2UoKTtcclxuICAgICAgdGhpcy5yZXBvcnRlID0gcmVzdWx0YWRvLnJlcG9ydGU7XHJcbiAgICAgIGRlbGV0ZSB0aGlzLnJlcG9ydGVbJ2FsaWFzJ11cclxuICAgICAgdGhpcy5jYXJnYXJMaXN0YUVudHJhZGEoKTtcclxuICAgICAgdGhpcy50cmFlclNlZ3VuZG9QbGFubygpO1xyXG4gICAgICB0aGlzLmNhcmdhckNvcnJlbygpO1xyXG4gICAgICBhd2FpdCB0aGlzLnZhbGlkYXJFeGlzdGVKYXNwZXIoKTtcclxuICAgICAgYXdhaXQgdGhpcy5jYXJnYXJHZW5lcmFjaW9uZXMoKTtcclxuICAgICAgdGhpcy5jYXJnYXJPcGVyYWNpb25lcygpO1xyXG4gICAgICBcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNhcmdhck1lbnUoKXtcclxuICAgIHRoaXMuaXRlbXMgPSBbXHJcbiAgICAgIFxyXG4gICAgICB7XHJcbiAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdlamVjdWNpb24nKSxcclxuICAgICAgICBpY29uOiAnZ2x5cGhpY29ucyBnbHlwaGljb25zLXBsdXMtc2lnbicsXHJcbiAgICAgICAgY29tbWFuZDogKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnZpc3RhVmlzdWFsaXphciA9ICdlbnRyYWRhJztcclxuICAgICAgICB9LFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdzZWd1bmRvcGxhbm8nKSxcclxuICAgICAgICBpY29uOiAnZ2x5cGhpY29ucyBnbHlwaGljb25zLWZpbGUtbWludXMnLFxyXG4gICAgICAgIGNvbW1hbmQ6IChldmVudCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy52aXN0YVZpc3VhbGl6YXIgPSAnc2VndW5kb3BsYW5vJztcclxuICAgICAgICB9LFxyXG4gICAgICAgIHZpc2libGU6IHRoaXMubGlzdGFTZWd1bmRvUGxhbm8ubGVuZ3RoID4gMCxcclxuICAgICAgfVxyXG4gICAgXVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgY2FyZ2FyR2VuZXJhY2lvbmVzKCl7XHJcbiAgICB0aGlzLmdlbmVyYWNpb25lcyA9IFtdO1xyXG4gICAgaWYgKCB0aGlzLnV0aWxzU2VydmljZS5pc05vdEJsYW5rKHRoaXMucmVwb3J0ZS50aXR1bG9QYXJhbWV0cm8pICYmIHRoaXMuZXhpc3RlSmFzcGVyKXtcclxuICAgICAgdGhpcy5nZW5lcmFjaW9uZXMucHVzaCh7dmFsdWU6IHRoaXMucmVwb3J0ZUZ1ZW50ZVBpcGUuR0VORVJBQ0lPTl9KQVNQRVJESU5BTUlDTywgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnJlcG9ydGVGdWVudGVQaXBlLkRFU0NfR0VORVJBQ0lPTl9KQVNQRVJESU5BTUlDT30pXHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy51dGlsc1NlcnZpY2UuaXNOb3RCbGFuayh0aGlzLnJlcG9ydGUuamFzcGVyRmlqbykgJiYgdGhpcy51dGlsc1NlcnZpY2UuaXNOb3RCbGFuayh0aGlzLnJlcG9ydGUubW9kb0Zpam8pKXtcclxuICAgICAgdGhpcy5nZW5lcmFjaW9uZXMucHVzaCh7dmFsdWU6IHRoaXMucmVwb3J0ZUZ1ZW50ZVBpcGUuR0VORVJBQ0lPTl9KQVNQRVJGSUpPLCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMucmVwb3J0ZUZ1ZW50ZVBpcGUuREVTQ19HRU5FUkFDSU9OX0pBU1BFUkZJSk99KVxyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMudXRpbHNTZXJ2aWNlLmlzTm90QmxhbmsodGhpcy5yZXBvcnRlLmFyY2hpdm9Ub2RvKSAmJiB0aGlzLnV0aWxzU2VydmljZS5pc05vdEJsYW5rKHRoaXMucmVwb3J0ZS5ob2phRXhjZWwpKXtcclxuICAgICAgdGhpcy5nZW5lcmFjaW9uZXMucHVzaCh7dmFsdWU6IHRoaXMucmVwb3J0ZUZ1ZW50ZVBpcGUuR0VORVJBQ0lPTl9FWENFTCwgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnJlcG9ydGVGdWVudGVQaXBlLkRFU0NfR0VORVJBQ0lPTl9FWENFTH0pXHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy51dGlsc1NlcnZpY2UuaXNOb3RCbGFuayh0aGlzLnJlcG9ydGUuYXJjaGl2b0luZGl2aWR1YWwpIHx8IHRoaXMucmVwb3J0ZS51bmljb0FyY2hpdm8gPT0gJ04nKXtcclxuICAgICAgdGhpcy5nZW5lcmFjaW9uZXMucHVzaCh7dmFsdWU6IHRoaXMucmVwb3J0ZUZ1ZW50ZVBpcGUuR0VORVJBQ0lPTl9QTEFOVElMTEEsIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy5yZXBvcnRlRnVlbnRlUGlwZS5ERVNDX0dFTkVSQUNJT05fUExBTlRJTExBfSlcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnV0aWxzU2VydmljZS5pc05vdEJsYW5rKHRoaXMucmVwb3J0ZS5zZXBhcmFkb3IpKXtcclxuICAgICAgdGhpcy5nZW5lcmFjaW9uZXMucHVzaCh7dmFsdWU6IHRoaXMucmVwb3J0ZUZ1ZW50ZVBpcGUuR0VORVJBQ0lPTl9BUkNISVZPUExBTk8sIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy5yZXBvcnRlRnVlbnRlUGlwZS5ERVNDX0dFTkVSQUNJT05fQVJDSElWT1BMQU5PfSlcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnV0aWxzU2VydmljZS5pc05vdEJsYW5rKHRoaXMucmVwb3J0ZS5ub21icmVUYWJsYSkpe1xyXG4gICAgICB0aGlzLmdlbmVyYWNpb25lcy5wdXNoKHt2YWx1ZTogdGhpcy5yZXBvcnRlRnVlbnRlUGlwZS5HRU5FUkFDSU9OX1RBQkxBLCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMucmVwb3J0ZUZ1ZW50ZVBpcGUuREVTQ19HRU5FUkFDSU9OX1RBQkxBfSlcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnV0aWxzU2VydmljZS5pc05vdEJsYW5rKHRoaXMucmVwb3J0ZS50YWdFbmNhYmV6YWRvKSAmJiB0aGlzLnV0aWxzU2VydmljZS5pc05vdEJsYW5rKHRoaXMucmVwb3J0ZS5lc3RydWN0dXJhUmVnaXN0cm8pKXtcclxuICAgICAgdGhpcy5nZW5lcmFjaW9uZXMucHVzaCh7dmFsdWU6IHRoaXMucmVwb3J0ZUZ1ZW50ZVBpcGUuR0VORVJBQ0lPTl9YTUwsIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy5yZXBvcnRlRnVlbnRlUGlwZS5ERVNDX0dFTkVSQUNJT05fWE1MfSlcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnV0aWxzU2VydmljZS5pc05vdEJsYW5rKHRoaXMucmVwb3J0ZS5hcmNoaXZvRXhjZWxDb2x1bW5hcmlvKSAmJiB0aGlzLnV0aWxzU2VydmljZS5pc05vdEJsYW5rKHRoaXMucmVwb3J0ZS5ob2phRXhjZWxDb2x1bW5hcmlvKSl7XHJcbiAgICAgIHRoaXMuZ2VuZXJhY2lvbmVzLnB1c2goe3ZhbHVlOiB0aGlzLnJlcG9ydGVGdWVudGVQaXBlLkdFTkVSQUNJT05fQ09MVU1OQVJJTywgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnJlcG9ydGVGdWVudGVQaXBlLkRFU0NfR0VORVJBQ0lPTl9DT0xVTU5BUklPfSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIHZhbGlkYXJFeGlzdGVKYXNwZXIoKXtcclxuICAgIHRyeSB7XHJcbiAgICAgIHZhciBkYXRhID0gYXdhaXQgdGhpcy5jYXJnYXJBcmNoaXZvLmRlc2NhcmdhckFyY2hpdm8odGhpcy5lbmNyaXB0YWRvckFyY2hpdm8uZW5jcmlwdGFyKCdyZXBvcnRlcy8nICsgdGhpcy5yZXBvcnRlLmxsYXZlICsgJy5qcnhtbCcpLCAncnV0YV9wbGFudGlsbGFzJywgdGhpcy5hcGxpY2FjaW9uKS50b1Byb21pc2UoKTtcclxuICAgICAgaWYgKGRhdGEpIHtcclxuICAgICAgICB0aGlzLmV4aXN0ZUphc3BlciA9IHRydWU7XHJcbiAgICAgIH0gICBcclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIHRoaXMuZXhpc3RlSmFzcGVyID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjYXJnYXJPcGVyYWNpb25lcygpe1xyXG4gICAgdGhpcy5ibG9xdWVhckNvcnJlbyA9IHRydWU7XHJcbiAgICB0aGlzLm9wZXJhY2lvbmVzID0gW107XHJcbiAgICBpZiAodGhpcy50aXBvUmVwb3J0ZSl7XHJcbiAgICAgIGlmICh0aGlzLnRpcG9SZXBvcnRlICE9IHRoaXMucmVwb3J0ZUZ1ZW50ZVBpcGUuR0VORVJBQ0lPTl9UQUJMQSkge1xyXG4gICAgICAgIHRoaXMub3BlcmFjaW9uZXMucHVzaCh7dmFsdWU6IHRoaXMucmVwb3J0ZUZ1ZW50ZVBpcGUuT1BFUkFDSU9OX0RFU0NBUkdBUixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnJlcG9ydGVGdWVudGVQaXBlLkRFU0NfT1BFUkFDSU9OX0RFU0NBUkdBUn0pO1xyXG4gICAgICBcclxuICAgICAgICBpZiAodGhpcy52YWxpZGFyQ29udHJvbEZ1bmNpb25hbGlkYWQoJ3JlcG9ydGU6ZW52aW9jb3JyZW8nKSl7XHJcbiAgICAgICAgICB0aGlzLmJsb3F1ZWFyQ29ycmVvID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMub3BlcmFjaW9uZXMucHVzaCh7dmFsdWU6IHRoaXMucmVwb3J0ZUZ1ZW50ZVBpcGUuT1BFUkFDSU9OX0VOVklBUkNPUlJFTyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMucmVwb3J0ZUZ1ZW50ZVBpcGUuREVTQ19PUEVSQUNJT05fRU5WSUFSQ09SUkVPfSk7XHJcbiAgICAgICAgaWYgKHRoaXMucmVwb3J0ZUZ1ZW50ZVBpcGUuTU9NRU5UT1NfU0VHVU5ET19QTEFOTyA9PSB0aGlzLnJlcG9ydGUubW9tZW50bykge1xyXG4gICAgICAgICAgdGhpcy5vcGVyYWNpb25lcy5wdXNoKHt2YWx1ZTogdGhpcy5yZXBvcnRlRnVlbnRlUGlwZS5PUEVSQUNJT05fU0VHVU5ET1BMQU5PLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnJlcG9ydGVGdWVudGVQaXBlLkRFU0NfT1BFUkFDSU9OX1NFR1VORE9QTEFOT30pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoKHRoaXMudGlwb1JlcG9ydGUgPT0gdGhpcy5yZXBvcnRlRnVlbnRlUGlwZS5HRU5FUkFDSU9OX0pBU1BFUkZJSk8gJiYgdGhpcy5yZXBvcnRlLm1vZG9GaWpvID09ICdQJylcclxuICAgICAgICAgIHx8IHRoaXMudGlwb1JlcG9ydGUgPT0gdGhpcy5yZXBvcnRlRnVlbnRlUGlwZS5HRU5FUkFDSU9OX1BMQU5USUxMQSAmJiB0aGlzLnJlcG9ydGUuZGVzY2FyZ2FyRnVlbnRlICE9ICdTJyl7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIGlmICh0aGlzLnJlcG9ydGUuYXJjaGl2b0h0bWwgJiYgdGhpcy5yZXBvcnRlLmNhbXBvRW1haWwpe1xyXG4gICAgICAgICAgICB0aGlzLm9wZXJhY2lvbmVzLnB1c2goe3ZhbHVlOiB0aGlzLnJlcG9ydGVGdWVudGVQaXBlLk9QRVJBQ0lPTl9FTlZJT01BU0lWTyxcclxuICAgICAgICAgICAgICBsYWJlbDogdGhpcy5yZXBvcnRlRnVlbnRlUGlwZS5ERVNDX09QRVJBQ0lPTl9FTlZJT01BU0lWT30pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoaXMucmVwb3J0ZS5wdWJsaWNhY2lvbiAmJiB0aGlzLnJlcG9ydGUuY2FtcG9QdWJsaWNhKXtcclxuICAgICAgICAgICAgdGhpcy5vcGVyYWNpb25lcy5wdXNoKHt2YWx1ZTogdGhpcy5yZXBvcnRlRnVlbnRlUGlwZS5PUEVSQUNJT05fUFVCTElDQVIsXHJcbiAgICAgICAgICAgICAgbGFiZWw6IHRoaXMucmVwb3J0ZUZ1ZW50ZVBpcGUuREVTQ19PUEVSQUNJT05fUFVCTElDQVJ9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0aGlzLnJlcG9ydGUuYXJjaGl2b0h0bWwgJiYgdGhpcy5yZXBvcnRlLmNhbXBvRW1haWwgJiYgdGhpcy5yZXBvcnRlLnB1YmxpY2FjaW9uICYmIHRoaXMucmVwb3J0ZS5jYW1wb1B1YmxpY2EgKXtcclxuICAgICAgICAgICAgdGhpcy5vcGVyYWNpb25lcy5wdXNoKHt2YWx1ZTogdGhpcy5yZXBvcnRlRnVlbnRlUGlwZS5PUEVSQUNJT05fQ09SUkVPUFVCTElDQVIsXHJcbiAgICAgICAgICAgICAgbGFiZWw6IHRoaXMucmVwb3J0ZUZ1ZW50ZVBpcGUuREVTQ19PUEVSQUNJT05fQ09SUkVPUFVCTElDQVJ9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgLy9wdGUgcHJvY2VzbyBleHRlcm5vXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNhbWJpb1ZhbG9yTGlzdGEoZXZlbnQsIHBhcmFtZXRybyl7XHJcbiAgICBpZiAoZXZlbnQudmFsdWUpe1xyXG4gICAgICBsZXQgbGlzdGEgPSBldmVudC52YWx1ZS5zcGxpdCgnOicpXHJcbiAgICAgIGlmIChwYXJhbWV0cm8udW5pb25EVE8udGlwb0RhdG8gPT0gJ04nKXtcclxuICAgICAgICBwYXJhbWV0cm8udW5pb25EVE8udmFsb3IgPSBwYXJzZUludChsaXN0YVswXSlcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBwYXJhbWV0cm8udW5pb25EVE8udmFsb3IgPSBsaXN0YVswXVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIFxyXG4gIGNhbWJpb1NvcG9ydGVCYXNlKGV2ZW50KSB7XHJcbiAgICBpZiAodGhpcy5zb3BvcnRlQmFzZSA9PSBudWxsKSB7XHJcbiAgICAgIHRoaXMuY2FyZ2FyT3BlcmFjaW9uZXMoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfSBcclxuICAgIHRoaXMuZ2VuZXJhbFNlcnZpY2UucXVlcnlGb3JPYmplY3QobmV3IEdlbmVyYWxNb2RlbCgnUmVwb3J0ZVNvcG9ydGVEVE8nLCBudWxsLCBmYWxzZSwge2xsYXZlVGFibGE6IHRoaXMuc29wb3J0ZUJhc2V9KSkuc3Vic2NyaWJlKGFyY2hpdm9CYXNlID0+IHtcclxuICAgICAgaWYgKGFyY2hpdm9CYXNlID09IG51bGwpIHtcclxuXHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdH1cclxuXHRcdFx0dGhpcy5zb3BvcnRlQmFzZSA9IGFyY2hpdm9CYXNlLmxsYXZlVGFibGE7XHJcblx0XHRcdHRoaXMucmVwb3J0ZS5hcmNoaXZvSW5kaXZpZHVhbCA9IGFyY2hpdm9CYXNlLmFyY2hpdm9JbmRpdmlkdWFsO1xyXG5cdFx0XHR0aGlzLmNhcmdhck9wZXJhY2lvbmVzKCk7XHJcbiAgICB9KTtcclxuICAgIFxyXG4gIH1cclxuXHJcbiAgY2FyZ2FyQ29ycmVvKCl7XHJcbiAgICB0aGlzLmdlbmVyYWxTZXJ2aWNlLnF1ZXJ5Rm9yT2JqZWN0KG5ldyBHZW5lcmFsTW9kZWwoJ1VzdWFyaW9EVE8nLCBudWxsLCB0cnVlLCB7bG9naW46IHRoaXMuYXV0aFNlcnZpY2UuZ2V0VG9rZW5LZXkoJ3VzdWFyaW8nKX0pKS5zdWJzY3JpYmUoZGF0YSA9PiB7XHJcbiAgICAgIHRoaXMuY29ycmVvID0gZGF0YS5lbWFpbDtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBjYXJnYXJMaXN0YUVudHJhZGEoKXtcclxuICAgIHRoaXMubW9zdHJhclBhcmFtZXRyb3MgPSBmYWxzZTtcclxuICAgIGlmICh0aGlzLmVudHJhZGFzUHVudG9Qcm9jZXNvLmxlbmd0aCA+IDApe1xyXG4gICAgICB0aGlzLnBhcmFtZXRyb3MgPSB0aGlzLmVudHJhZGFzUHVudG9Qcm9jZXNvOyAgXHJcbiAgICAgIHRoaXMucGFyYW1ldHJvcy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgIGlmIChlbGVtZW50LnVuaW9uRFRPLnNvbGljaXRhciA9PSAnUycpe1xyXG4gICAgICAgICAgdGhpcy5tb3N0cmFyUGFyYW1ldHJvcyA9ICB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZWxlbWVudC51bmlvbkRUTy50aXBvRGF0byA9PSAnRicgJiYgZWxlbWVudC51bmlvbkRUTy52YWxvciAhPSBudWxsKXtcclxuICAgICAgICAgIGVsZW1lbnQudW5pb25EVE8udmFsb3IgPSBuZXcgRGF0ZShlbGVtZW50LnVuaW9uRFRPLnZhbG9yKVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZWplY3VjaW9uUmVwb3J0ZVNlcnZpY2Uub2J0ZW5lckxpc3RhRW50cmFkYUVqZWN1Y2lvbih0aGlzLnJlcG9ydGUpLnN1YnNjcmliZShkYXRhID0+IHtcclxuICAgICAgICB0aGlzLnBhcmFtZXRyb3MgPSBkYXRhO1xyXG4gICAgICAgIHRoaXMucGFyYW1ldHJvcy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgICAgaWYgKGVsZW1lbnQudW5pb25EVE8uc29saWNpdGFyID09ICdTJyl7XHJcbiAgICAgICAgICAgIHRoaXMubW9zdHJhclBhcmFtZXRyb3MgPSAgdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChlbGVtZW50LnVuaW9uRFRPLnRpcG9EYXRvID09ICdGJyAmJiBlbGVtZW50LnVuaW9uRFRPLnZhbG9yICE9IG51bGwpe1xyXG4gICAgICAgICAgICBlbGVtZW50LnVuaW9uRFRPLnZhbG9yID0gbmV3IERhdGUoZWxlbWVudC51bmlvbkRUTy52YWxvcilcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdHJhZXJTZWd1bmRvUGxhbm8oKXtcclxuICAgIGxldCB1c3VhcmlvID0gdGhpcy5hdXRoU2VydmljZS5nZXRUb2tlbktleSgndXN1YXJpbycpXHJcbiAgICB0aGlzLmdlbmVyYWxTZXJ2aWNlLnF1ZXJ5Rm9yTGlzdChuZXcgR2VuZXJhbE1vZGVsKCdFamVjdWNpb25SZXBvcnRlRFRPJywgbnVsbCwgZmFsc2UsIHtcclxuICAgICAgYWRpY2lvbmFkbzogdXN1YXJpbywgXHJcbiAgICAgIHJlcG9ydGVGdWVudGU6IHRoaXMucmVwb3J0ZS5sbGF2ZX0pKS5zdWJzY3JpYmUoZGF0YSA9PiB7XHJcbiAgICAgICAgdGhpcy5saXN0YVNlZ3VuZG9QbGFubyA9IGRhdGE7XHJcbiAgICAgICAgdGhpcy5wYWdpbmF0b3IudG90YWxSZWNvcmRzID0gdGhpcy5saXN0YVNlZ3VuZG9QbGFuby5sZW5ndGg7XHJcbiAgICAgIH0pXHJcbiAgfVxyXG4gIFxyXG4gIHZlclNlZ3VuZG9QbGFubyhldmVudCl7XHJcbiAgICB0aGlzLmVsZW1lbnRvQm9ycmFyID0gZXZlbnQuZGF0YTtcclxuICAgIHRoaXMuZWxlbWVudG9Cb3JyYXIuZmVjaGFBZGljaW9uYWRvID0gdGhpcy5lbGVtZW50b0JvcnJhci5mZWNoYUFkaWNpb25hZG8gPyBuZXcgRGF0ZSh0aGlzLmVsZW1lbnRvQm9ycmFyLmZlY2hhQWRpY2lvbmFkbykgOiBudWxsXHJcbiAgICB0aGlzLmVsZW1lbnRvQm9ycmFyLmluaWNpYSA9IHRoaXMuZWxlbWVudG9Cb3JyYXIuaW5pY2lhID8gbmV3IERhdGUodGhpcy5lbGVtZW50b0JvcnJhci5pbmljaWEpIDogbnVsbFxyXG4gICAgdGhpcy5lbGVtZW50b0JvcnJhci50ZXJtaW5hID0gdGhpcy5lbGVtZW50b0JvcnJhci50ZXJtaW5hID8gbmV3IERhdGUodGhpcy5lbGVtZW50b0JvcnJhci50ZXJtaW5hKSA6IG51bGxcclxuICAgIHRoaXMub3BlcmFjaW9uID0gJ2hpc3RvcmljbydcclxuICAgIHRoaXMucGFuZWwgPSAncmVzdWx0YWRvJ1xyXG4gIH1cclxuXHJcbiAgZWxpbWluYXJTZWd1bmRvUGxhbm8oZXZlbnQpe1xyXG4gICAgdGhpcy5jb25maXJtYXRpb25TZXJ2aWNlLmNvbmZpcm0oe1xyXG4gICAgICB0YXJnZXQ6IGV2ZW50LnRhcmdldCxcclxuICAgICAgbWVzc2FnZTogIHRoaXMuZ2VuZXJhbFBpcGUuTUVOU0FKRV9FTElNSU5BUl9DT05GSVJNQVIsXHJcbiAgICAgIGFjY2VwdExhYmVsOiB0aGlzLmdlbmVyYWxQaXBlLlNJX0RFU0MsXHJcbiAgICAgIGhlYWRlcjogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ2NvbmZpcm1hcicpLFxyXG4gICAgICBhY2NlcHQ6ICgpID0+IHtcclxuICAgICAgICB0aGlzLmVqZWN1Y2lvblJlcG9ydGVTZXJ2aWNlLmVsaW1pbmFyRWplY3VjaW9uUmVwb3J0ZSh0aGlzLmVsZW1lbnRvQm9ycmFyKS5zdWJzY3JpYmUoZGF0YSA9PntcclxuICAgICAgICAgIHRoaXMubm90aWZpY2FjaW9uU2VydmljZS5zaG93SW5mbyh0aGlzLmdlbmVyYWxQaXBlLk1FTlNBSkVfRUxJTUlOQVIpXHJcbiAgICAgICAgICB0aGlzLnJlZ3Jlc2FyU2VndW5kb1BsYW5vKCk7XHJcbiAgICAgICAgICB0aGlzLnRyYWVyU2VndW5kb1BsYW5vKCk7XHJcbiAgICAgICAgfSlcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGRlc2NhcmdhckFyY2hpdm8oKXtcclxuICAgIHRoaXMuY2FyZ2FyQXJjaGl2b1NlcnZpY2UuZGVzY2FyZ2FyQXJjaGl2byh0aGlzLmVuY3JpcHRhZG9CYXNpY28uZW5jcmlwdGFyKHRoaXMuZWxlbWVudG9Cb3JyYXIuYXJjaGl2bykpLnN1YnNjcmliZShibG9iID0+IHtcclxuICAgICAgXHJcbiAgICAgIGNvbnN0IGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJylcclxuICAgICAgY29uc3Qgb2JqZWN0VXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKVxyXG4gICAgICBhLmhyZWYgPSBvYmplY3RVcmxcclxuICAgICAgbGV0IHBhcnRlcyA9IHRoaXMuZWxlbWVudG9Cb3JyYXIuYXJjaGl2by5zcGxpdChcIi5cIik7XHJcbiAgICAgIGxldCBleHRlbnNpb24gPSBwYXJ0ZXNbcGFydGVzLmxlbmd0aCAtIDFdO1xyXG4gICAgICBhLmRvd25sb2FkID0gdGhpcy51dGlsc1NlcnZpY2UuZ2VuZXJhckxsYXZlKCkgKyAnLicgKyBleHRlbnNpb247XHJcbiAgICAgIGEuY2xpY2soKTtcclxuICAgICAgVVJMLnJldm9rZU9iamVjdFVSTChvYmplY3RVcmwpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBjYW1iaW9UaXBvUmVwb3J0ZShldmVudCl7XHJcbiAgICB0aGlzLm1vc3RyYXJRdWVEZXNlYUhhY2VyID0gdHJ1ZTtcclxuICAgIGlmICh0aGlzLnRpcG9SZXBvcnRlID09IHRoaXMucmVwb3J0ZUZ1ZW50ZVBpcGUuR0VORVJBQ0lPTl9QTEFOVElMTEEgJiYgdGhpcy5yZXBvcnRlLnVuaWNvQXJjaGl2byA9PSAnTicgKXtcclxuICAgICAgdGhpcy5tb3N0cmFyQXJjaGl2b3NTb3BvcnRlID0gdHJ1ZTtcclxuICAgICAgdGhpcy5nZW5lcmFsU2VydmljZS5xdWVyeUZvckxpc3QobmV3IEdlbmVyYWxNb2RlbCgnUmVwb3J0ZVNvcG9ydGVEVE8nLCBudWxsLCBmYWxzZSwge1xyXG4gICAgICAgIHJlcG9ydGVGdWVudGU6IHRoaXMucmVwb3J0ZS5sbGF2ZSxcclxuICAgICAgICB0aXBvOidTJ1xyXG4gICAgICB9KSkuc3Vic2NyaWJlKGRhdGEgPT4ge1xyXG4gICAgICAgIHRoaXMubGlzdGFkb0FyY2hpdm9Tb3BvcnRlID0gZGF0YTtcclxuICAgICAgfSlcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5tb3N0cmFyQXJjaGl2b3NTb3BvcnRlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5saXN0YWRvQXJjaGl2b1NvcG9ydGUgPSBbXTtcclxuICAgICAgICB0aGlzLnRpcG9BcmNoaXZvID0gbnVsbDtcclxuICAgICAgICB0aGlzLm9wZXJhY2lvbiA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5jYXJnYXJPcGVyYWNpb25lcygpO1xyXG4gICAgICAgIC8vdGhpcy5kZXNjYXJnYXJBcmNoaXZvID0gbnVsbDtcclxuICAgIH0gXHJcbiAgfVxyXG5cclxuICBjYW1iaW9UaXBvQXJjaGl2byhldmVudCl7XHJcbiAgICB0aGlzLmNhcmdhck9wZXJhY2lvbmVzKCk7XHJcbiAgfVxyXG5cclxuICByZWdyZXNhclNlZ3VuZG9QbGFubygpe1xyXG4gICAgdGhpcy5lbGVtZW50b0JvcnJhciA9IHt9XHJcbiAgICB0aGlzLnBhbmVsID0gJ2VudHJhZGEnXHJcbiAgICB0aGlzLm9wZXJhY2lvbiA9IG51bGw7XHJcbiAgfVxyXG5cclxuICBvY3VsdGFyKCl7XHJcbiAgICB0aGlzLnRpcG9SZXBvcnRlID0gbnVsbDtcclxuICAgIHRoaXMubW9zdHJhciA9IGZhbHNlO1xyXG4gICAgdGhpcy5yZWdyZXNhci5lbWl0KGZhbHNlKTtcclxuICB9XHJcblxyXG4gIHZhbGlkYXJDb250cm9sRnVuY2lvbmFsaWRhZCh2YWxvcjogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5jb250cm9sRnVuY2lvbmFsaWRhZC5nZXRDb250cm9sRnVuY2lvbmFsaWRhZCh2YWxvcik7XHJcbiAgfVxyXG5cclxuICBzZW50ZW5jaWEoKXtcclxuICAgIHRoaXMubW9zdHJhclBvcHVwU2VudGVuY2lhID0gdHJ1ZVxyXG4gIH1cclxuXHJcbiAgcmVncmVzYXJTZW50ZW5jaWEoZXZlbnQpe1xyXG4gICAgdGhpcy5tb3N0cmFyUG9wdXBTZW50ZW5jaWEgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIGVudmlhclNlZ3VuZG9QbGFubygpe1xyXG4gICAgbGV0IGxpc3RhRW50cmFkYSA9IFtdXHJcbiAgICB0aGlzLnBhcmFtZXRyb3MuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgbGlzdGFFbnRyYWRhLnB1c2goZWxlbWVudC51bmlvbkRUTylcclxuICAgIH0pXHJcbiAgICB0aGlzLmVqZWN1Y2lvblJlcG9ydGVTZXJ2aWNlLmVudmlhclNlZ3VuZG9QbGFubyh7XHJcbiAgICAgIHJlcG9ydGU6IHRoaXMucmVwb3J0ZSxcclxuICAgICAgcGFyYW1ldHJvczogbGlzdGFFbnRyYWRhLFxyXG4gICAgICB0aXBvUmVwb3J0ZTogdGhpcy50aXBvUmVwb3J0ZSxcclxuICAgICAgb3BlcmFjaW9uOiB0aGlzLm9wZXJhY2lvbixcclxuICAgICAgY29ycmVvOiB0aGlzLmNvcnJlbyxcclxuICAgIH0pLnN1YnNjcmliZShkYXRhID0+IHtcclxuICAgICAgdGhpcy5ub3RpZmljYWNpb25TZXJ2aWNlLnNob3dJbmZvKGRhdGEubWVuc2FqZSlcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBkZXNjYXJnYXJSZXBvcnRlKCl7XHJcblxyXG4gICAgaWYoJ0YnID09IHRoaXMudGlwb1JlcG9ydGUpe1xyXG4gICAgICB0aGlzLnJlcG9ydGUudGlwb0FyY2hpdm8gPSB0aGlzLnRpcG9BcmNoaXZvO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBsaXN0YUVudHJhZGEgPSBbXVxyXG4gICAgdGhpcy5wYXJhbWV0cm9zLmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgIGxpc3RhRW50cmFkYS5wdXNoKGVsZW1lbnQudW5pb25EVE8pXHJcbiAgICB9KVxyXG4gICAgdGhpcy5lamVjdWNpb25SZXBvcnRlU2VydmljZS5kZXNjYXJnYXJSZXBvcnRlKHtcclxuICAgICAgcmVwb3J0ZTogdGhpcy5yZXBvcnRlLFxyXG4gICAgICBwYXJhbWV0cm9zOiBsaXN0YUVudHJhZGEsXHJcbiAgICAgIHRpcG9SZXBvcnRlOiB0aGlzLnRpcG9SZXBvcnRlLFxyXG4gICAgICBvcGVyYWNpb246IHRoaXMub3BlcmFjaW9uLFxyXG4gICAgICBjb3JyZW86IHRoaXMuY29ycmVvLFxyXG4gICAgICBlbmRwb2ludEdlbmVyYWRvclJlcG9ydGVzOiAnJ1xyXG4gICAgfSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogZGF0YSA9PntcclxuICAgICAgICBjb25zb2xlLmxvZyhkYXRhKVxyXG4gICAgICAgIHRoaXMubm90aWZpY2FjaW9uU2VydmljZS5zaG93SW5mbyhkYXRhLm1lbnNhamUpXHJcbiAgICAgICAgaWYgKCFkYXRhLmFyY2hpdm8pIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgZGVjb2RlZERhdGEgPSBhdG9iKGRhdGEuYXJjaGl2byk7XHJcbiAgICAgICAgY29uc3QgYnl0ZU51bWJlcnMgPSBuZXcgQXJyYXkoZGVjb2RlZERhdGEubGVuZ3RoKTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRlY29kZWREYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBieXRlTnVtYmVyc1tpXSA9IGRlY29kZWREYXRhLmNoYXJDb2RlQXQoaSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGJ5dGVBcnJheSA9IG5ldyBVaW50OEFycmF5KGJ5dGVOdW1iZXJzKTtcclxuXHJcbiAgICAgICAgLy8gQ3JlYSB1biBvYmpldG8gQmxvYiBjb24gbG9zIGJ5dGVzIGRlY29kaWZpY2Fkb3MgeSBlbCB0aXBvIE1JTUUgZGVsIGFyY2hpdm9cclxuICAgICAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW2J5dGVBcnJheV0sIHsgdHlwZTogZGF0YS5taW1lIH0pO1xyXG5cclxuICAgICAgICAvLyBDcmVhIHVuYSBVUkwgZGVsIG9iamV0byBCbG9iXHJcbiAgICAgICAgY29uc3QgdXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcclxuXHJcbiAgICAgICAgLy8gQ3JlYSB1biBlbmxhY2UgZGUgZGVzY2FyZ2EgeSBoYXogY2xpYyBlbiDDqWwgcGFyYSBpbmljaWFyIGxhIGRlc2NhcmdhXHJcbiAgICAgICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcclxuICAgICAgICBsaW5rLmhyZWYgPSB1cmw7XHJcbiAgICAgICAgbGluay5kb3dubG9hZCA9IGRhdGEubm9tYnJlQXJjaGl2byAgKyBkYXRhLmV4dGVuc2lvbjtcclxuICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmspO1xyXG4gICAgICAgIGxpbmsuY2xpY2soKTtcclxuXHJcbiAgICAgICAgLy8gTGltcGlhIGxhIFVSTCBjcmVhZGFcclxuICAgICAgICBVUkwucmV2b2tlT2JqZWN0VVJMKHVybCk7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG4gIFxyXG4gIGRlc2NhcmdhclJlcG9ydGVTaW5IaWxvKCl7XHJcbiAgICBsZXQgbGlzdGFFbnRyYWRhID0gW11cclxuICAgIHRoaXMucGFyYW1ldHJvcy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICBsaXN0YUVudHJhZGEucHVzaChlbGVtZW50LnVuaW9uRFRPKVxyXG4gICAgfSlcclxuICAgIHRoaXMuZWplY3VjaW9uUmVwb3J0ZVNlcnZpY2UuZGVzY2FyZ2FyUmVwb3J0ZSh7XHJcbiAgICAgIG5leHQ6IGRhdGEgPT57XHJcbiAgICAgICAgdGhpcy5ub3RpZmljYWNpb25TZXJ2aWNlLnNob3dJbmZvKGRhdGEubWVuc2FqZSlcclxuICAgICAgICBjb25zdCBkZWNvZGVkRGF0YSA9IGF0b2IoZGF0YS5hcmNoaXZvKTtcclxuICAgICAgICBjb25zdCBieXRlTnVtYmVycyA9IG5ldyBBcnJheShkZWNvZGVkRGF0YS5sZW5ndGgpO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGVjb2RlZERhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGJ5dGVOdW1iZXJzW2ldID0gZGVjb2RlZERhdGEuY2hhckNvZGVBdChpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgYnl0ZUFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoYnl0ZU51bWJlcnMpO1xyXG5cclxuICAgICAgICAvLyBDcmVhIHVuIG9iamV0byBCbG9iIGNvbiBsb3MgYnl0ZXMgZGVjb2RpZmljYWRvcyB5IGVsIHRpcG8gTUlNRSBkZWwgYXJjaGl2b1xyXG4gICAgICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbYnl0ZUFycmF5XSwgeyB0eXBlOiBkYXRhLm1pbWUgfSk7XHJcblxyXG4gICAgICAgIC8vIENyZWEgdW5hIFVSTCBkZWwgb2JqZXRvIEJsb2JcclxuICAgICAgICBjb25zdCB1cmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xyXG5cclxuICAgICAgICAvLyBDcmVhIHVuIGVubGFjZSBkZSBkZXNjYXJnYSB5IGhheiBjbGljIGVuIMOpbCBwYXJhIGluaWNpYXIgbGEgZGVzY2FyZ2FcclxuICAgICAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xyXG4gICAgICAgIGxpbmsuaHJlZiA9IHVybDtcclxuICAgICAgICBsaW5rLmRvd25sb2FkID0gZGF0YS5ub21icmVBcmNoaXZvICsgJy4nICsgZGF0YS5leHRlbnNpb247XHJcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChsaW5rKTtcclxuICAgICAgICBsaW5rLmNsaWNrKCk7XHJcblxyXG4gICAgICAgIC8vIExpbXBpYSBsYSBVUkwgY3JlYWRhXHJcbiAgICAgICAgVVJMLnJldm9rZU9iamVjdFVSTCh1cmwpO1xyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogZXJyID0+IHtcclxuICAgICAgICB0aGlzLm5vdGlmaWNhY2lvblNlcnZpY2Uuc2hvd0Vycm9yKEpTT04uc3RyaW5naWZ5KGVyci5lcnJvci5tZW5zYWplRXRpcXVldGEpKVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2VuZXJhclRhYmxhKCl7XHJcbiAgICB0aGlzLnBhbmVsID0gJ3Jlc3VsdGFkbydcclxuICAgIGxldCBsaXN0YUVudHJhZGEgPSBbXVxyXG4gICAgdGhpcy5jb2x1bW5hcyA9IFtdO1xyXG4gICAgdGhpcy5wYXJhbWV0cm9zLmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgIGxpc3RhRW50cmFkYS5wdXNoKGVsZW1lbnQudW5pb25EVE8pXHJcbiAgICB9KVxyXG4gICAgdGhpcy5lamVjdWNpb25SZXBvcnRlU2VydmljZS5nZW5lcmFyVGFibGEoe3JlcG9ydGU6IHRoaXMucmVwb3J0ZSwgcGFyYW1ldHJvczogbGlzdGFFbnRyYWRhfSkuc3Vic2NyaWJlKGRhdGEgPT4ge1xyXG4gICAgICB2YXIgY29sdW1uYTogVGFibGVDb2x1bW47XHJcbiAgICAgIGRhdGEuY29sdW1uYXMuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICBjb2x1bW5hID0ge1xyXG4gICAgICAgICAgZmllbGQ6IGVsZW1lbnQubm9tYnJlLnRvTG93ZXJDYXNlKCksXHJcbiAgICAgICAgICBoZWFkZXI6IGVsZW1lbnQubm9tYnJlLFxyXG4gICAgICAgICAgd2lkdGg6IDMwMCxcclxuICAgICAgICAgIGNhbk9yZGVyOiB0cnVlLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy5jb2x1bW5hcy5wdXNoKGNvbHVtbmEpXHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLmxpc3RhUmVnaXN0cm8gPSBkYXRhLmxpc3RhUmVnaXN0cm87XHJcbiAgICB9KVxyXG4gIH1cclxufVxyXG4iLCI8cC1jb25maXJtUG9wdXA+PC9wLWNvbmZpcm1Qb3B1cD5cclxuPHAtZGlhbG9nIGlkPSdwb3B1cFJlcG9ydGUnIGhlYWRlcj1cInt7J3JlcG9ydGVzZ2VuZXJhbGVzJyB8IHRyYW5zbGF0ZX19XCIgWyh2aXNpYmxlKV09XCJtb3N0cmFyXCIgKG9uU2hvdyk9XCJtb3N0cmFyUG9wdXAoKVwiXHJcbiAgICBbYnJlYWtwb2ludHNdPVwieyc5NjBweCc6ICc3NXZ3JywgJzY0MHB4JzogJzEwMHZ3J31cIiBbc3R5bGVdPVwie3dpZHRoOiAnNTB2dyd9XCIgKG9uSGlkZSk9XCJvY3VsdGFyKClcIiBbbW9kYWxdPVwidHJ1ZVwiPlxyXG5cclxuICAgIDxkaXYgKm5nSWY9XCJwYW5lbCA9PSAnZW50cmFkYSdcIj5cclxuICAgICAgICA8IS0tU2VndW5kbyBwbGFuby0tPlxyXG4gICAgICAgIDxwLWFjY29yZGlvbiBbbXVsdGlwbGVdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICA8cC1hY2NvcmRpb25UYWIgW3NlbGVjdGVkXT1cInRydWVcIiBbaGVhZGVyXT1cIidzZWd1bmRvcGxhbm8nIHwgdHJhbnNsYXRlXCIgKm5nSWY9XCJsaXN0YVNlZ3VuZG9QbGFuby5sZW5ndGggPiAwXCI+XHJcbiAgICAgICAgICAgICAgICA8cC10YWJsZSBbdmFsdWVdPVwibGlzdGFTZWd1bmRvUGxhbm9cIiByZXNwb25zaXZlTGF5b3V0PVwic2Nyb2xsXCIgW3Njcm9sbGFibGVdPVwidHJ1ZVwiIHNlbGVjdGlvbk1vZGU9XCJzaW5nbGVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtyb3dzXT1cInBhZ2luYXRvci5yb3dzXCIgW3RvdGFsUmVjb3Jkc109XCJwYWdpbmF0b3IudG90YWxSZWNvcmRzXCJcclxuICAgICAgICAgICAgICAgICAgICBbcGFnaW5hdG9yXT1cInBhZ2luYXRvci50b3RhbFJlY29yZHMgPiBwYWdpbmF0b3Iucm93c1wiIChvblJvd1NlbGVjdCk9XCJ2ZXJTZWd1bmRvUGxhbm8oJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJoZWFkZXJcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ciBjbGFzcz1cImZvbmRvVGFibGFQaW5jaXBhbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPnt7J2VzdGFkbycgfCB0cmFuc2xhdGUgfX0gPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD57eydmZWNoYWluaWNpYWwnIHwgdHJhbnNsYXRlIH19IDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJib2R5XCIgbGV0LWVudHJhZGE+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ciBbcFNlbGVjdGFibGVSb3ddPVwiZW50cmFkYVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7ZW50cmFkYS5ub21icmVFc3RhZG99fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tlbnRyYWRhLmluaWNpYSB8IGRhdGU6ICdkZC9NTS95eXl5IGg6bW0gYSd9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgIDwvcC10YWJsZT5cclxuICAgICAgICAgICAgPC9wLWFjY29yZGlvblRhYj5cclxuICAgICAgICA8L3AtYWNjb3JkaW9uPlxyXG4gICAgICAgIDxwLWZpZWxkc2V0IGNsYXNzPVwibXQtMFwiICAqbmdJZj1cIm1vc3RyYXJQYXJhbWV0cm9zXCI+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJoZWFkZXJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJnbHlwaGljb25zIGdseXBoaWNvbnMtYm9va1wiIHN0eWxlPVwiY29sb3I6dmFyKC0tY29sb3ItNDAwKVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eydlbnRyYWRhJyB8IHRyYW5zbGF0ZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDxwLXRhYmxlIFt2YWx1ZV09XCJwYXJhbWV0cm9zXCIgPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImJvZHlcIiBsZXQtcGFyYW1ldHJvPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ciBbcFNlbGVjdGFibGVSb3ddPVwicGFyYW1ldHJvXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS08dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgKm5nSWY9XCJwYXJhbWV0cm8udW5pb25EVE8uc29saWNpdGFyID09ICdTJ1wiPnt7IHBhcmFtZXRyby51bmlvbkRUTy5kZXNjcmlwY2lvbiB9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+LS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCAgKm5nSWY9XCJwYXJhbWV0cm8udW5pb25EVE8uc29saWNpdGFyID09ICdTJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtZmxvYXRMYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgcElucHV0VGV4dCBbKG5nTW9kZWwpXT1cInBhcmFtZXRyby51bmlvbkRUTy52YWxvclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiKHBhcmFtZXRyby51bmlvbkRUTy50aXBvRGF0byA9PSAnVCcgfHwgcGFyYW1ldHJvLnVuaW9uRFRPLnRpcG9EYXRvID09ICdFJykgJiYgcGFyYW1ldHJvLnVuaW9uRFRPLnRpcG8gPT0gJ0QnXCIgLz5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHBJbnB1dFRleHQgWyhuZ01vZGVsKV09XCJwYXJhbWV0cm8udW5pb25EVE8udmFsb3JcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInBhcmFtZXRyby51bmlvbkRUTy50aXBvRGF0byA9PSAnVScgJiYgcGFyYW1ldHJvLnVuaW9uRFRPLnRpcG8gPT0gJ0QnXCIgLz5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLWlucHV0TnVtYmVyIFsobmdNb2RlbCldPVwicGFyYW1ldHJvLnVuaW9uRFRPLnZhbG9yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJwYXJhbWV0cm8udW5pb25EVE8udGlwb0RhdG8gPT0gJ04nICYmIHBhcmFtZXRyby51bmlvbkRUTy50aXBvID09ICdEJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcC1pbnB1dE51bWJlcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtaW5wdXROdW1iZXIgWyhuZ01vZGVsKV09XCJwYXJhbWV0cm8udW5pb25EVE8udmFsb3JcIiBtb2RlPVwiZGVjaW1hbFwiIFttaW5GcmFjdGlvbkRpZ2l0c109XCIyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21heEZyYWN0aW9uRGlnaXRzXT1cIjE2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJwYXJhbWV0cm8udW5pb25EVE8udGlwb0RhdG8gPT0gJ0InICYmIHBhcmFtZXRyby51bmlvbkRUTy50aXBvID09ICdEJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcC1pbnB1dE51bWJlcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtZHJvcGRvd24gW29wdGlvbnNdPVwicGFyYW1ldHJvLmxpc3RhXCIgW2F1dG9EaXNwbGF5Rmlyc3RdPVwiZmFsc2VcIiBhcHBlbmRUbz1cImJvZHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25DaGFuZ2UpPVwiY2FtYmlvVmFsb3JMaXN0YSgkZXZlbnQsIHBhcmFtZXRybylcIiBbKG5nTW9kZWwpXT1cInBhcmFtZXRyby51bmlvbkRUTy5sbGF2ZUxpc3RhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uTGFiZWw9XCJsYWJlbFwiIG9wdGlvblZhbHVlPVwidmFsdWVcIiAqbmdJZj1cInBhcmFtZXRyby51bmlvbkRUTy50aXBvID09ICdMJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcC1kcm9wZG93bj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtY2FsZW5kYXIgdHlwZT1cInRleHRcIiBbKG5nTW9kZWwpXT1cInBhcmFtZXRyby51bmlvbkRUTy52YWxvclwiIGRhdGVGb3JtYXQ9XCJkZC9tbS95eVwiIGFwcGVuZFRvPVwiYm9keVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicGFyYW1ldHJvLnVuaW9uRFRPLnRpcG9EYXRvID09ICdGJyAmJiBwYXJhbWV0cm8udW5pb25EVE8udGlwbyA9PSAnRCdcIj48L3AtY2FsZW5kYXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCAqbmdJZj1cInBhcmFtZXRyby51bmlvbkRUTy5zb2xpY2l0YXIgPT0gJ1MnXCI+e3sgcGFyYW1ldHJvLnVuaW9uRFRPLmRlc2NyaXBjaW9uIH19PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcC1mbG9hdExhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICA8L3AtdGFibGU+XHJcbiAgICAgICAgPC9wLWZpZWxkc2V0PlxyXG4gICAgICAgIDxwLWZpZWxkc2V0IGNsYXNzPVwibXQtMFwiICpuZ0lmPVwiZ2VuZXJhY2lvbmVzLmxlbmd0aCA+IDBcIj5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImdseXBoaWNvbnMgZ2x5cGhpY29ucy1ib29rXCIgc3R5bGU9XCJjb2xvcjp2YXIoLS1jb2xvci00MDApXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7J2dlbmVyYXInIHwgdHJhbnNsYXRlfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtZmx1aWQgcC1mb3JtZ3JpZCBncmlkIElucHV0Z3JvdXAgcGItMCBjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHZhbG9yIG9mIGdlbmVyYWNpb25lc1wiID5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQgbWwtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQtcmFkaW9idXR0b25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLXJhZGlvQnV0dG9uIChvbkNsaWNrKT1cImNhbWJpb1RpcG9SZXBvcnRlKCRldmVudClcIiBbaW5wdXRJZF09XCJ2YWxvci52YWx1ZVwiIG5hbWU9XCJ0aXBvUmVwb3J0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cInZhbG9yLnZhbHVlXCIgWyhuZ01vZGVsKV09XCJ0aXBvUmVwb3J0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgW2Zvcl09XCJ2YWxvci52YWx1ZVwiIGNsYXNzPVwibWwtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHZhbG9yLmxhYmVsIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L3AtZmllbGRzZXQ+XHJcblxyXG4gICAgICAgIDxwLWZpZWxkc2V0IGNsYXNzPVwibXQtMFwiICpuZ0lmPVwiJ0EnICE9IHRpcG9SZXBvcnRlICYmIG1vc3RyYXJRdWVEZXNlYUhhY2VyXCIgPlxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZ2x5cGhpY29ucyBnbHlwaGljb25zLWJvb2tcIiBzdHlsZT1cImNvbG9yOnZhcigtLWNvbG9yLTQwMClcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+wr9RdcOpIGRlc2VhIGhhY2VyPzwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICA8bGFiZWwgKm5nSWY9XCJ0aXBvUmVwb3J0ZSAmJiAnRicgPT0gdGlwb1JlcG9ydGVcIj57eydzZWxlY2Npb25ldGlwb2FyY2hpdm9kZXNlYWdlbmVyYXInIHwgdHJhbnNsYXRlfX08L2xhYmVsPlxyXG5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInRpcG9SZXBvcnRlICYmICdGJyA9PSB0aXBvUmVwb3J0ZVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtZmx1aWQgcC1mb3JtZ3JpZCBncmlkIElucHV0Z3JvdXAgcGItMCBjb2wtbWQtMTIgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZCBtbC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZC1yYWRpb2J1dHRvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkLWNoZWNrYm94XCIgKm5nRm9yPVwibGV0IHZhbG9yIG9mIG1hcGFUaXBvQXJjaGl2b3NcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC1yYWRpb0J1dHRvbiAob25DbGljayk9XCJjYW1iaW9UaXBvQXJjaGl2bygkZXZlbnQpXCIgW2lucHV0SWRdPVwidmFsb3IuY29kaWdvXCIgbmFtZT1cInRpcG9BcmNoaXZvXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cInZhbG9yLmNvZGlnb1wiICBbKG5nTW9kZWwpXT1cInRpcG9BcmNoaXZvXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgW2Zvcl09XCJ2YWxvci5jb2RpZ29cIiBjbGFzcz1cIm1sLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgdmFsb3Iubm9tYnJlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJtb3N0cmFyQXJjaGl2b3NTb3BvcnRlXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiRGV0YWxsZXJlcG9ydGVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1mbHVpZCBwLWZvcm1ncmlkIGdyaWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkIGNvbC0xMiBtZDpjb2wtMTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLWZsb2F0TGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtZHJvcGRvd24gW29wdGlvbnNdPVwibGlzdGFkb0FyY2hpdm9Tb3BvcnRlXCIgW2F1dG9EaXNwbGF5Rmlyc3RdPVwiZmFsc2VcIiBvcHRpb25MYWJlbD1cImRlc2NyaXBjaW9uXCIgYXBwZW5kVG89XCJib2R5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uVmFsdWU9XCJsbGF2ZVRhYmxhXCIgWyhuZ01vZGVsKV09XCJzb3BvcnRlQmFzZVwiIChvbkNoYW5nZSk9XCJjYW1iaW9Tb3BvcnRlQmFzZSgkZXZlbnQpXCI+PC9wLWRyb3Bkb3duPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5Tb3BvcnRlIEJhc2U6PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcC1mbG9hdExhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ0aXBvUmVwb3J0ZSA9PSAnRicgJiYgdGlwb0FyY2hpdm8gfHwgdGlwb1JlcG9ydGUgIT0gJ0YnIFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtZmx1aWQgcC1mb3JtZ3JpZCBncmlkIElucHV0Z3JvdXAgcGItMCBjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCB2YWxvciBvZiBvcGVyYWNpb25lc1wiID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkIG1sLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZC1yYWRpb2J1dHRvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLXJhZGlvQnV0dG9uIFtpbnB1dElkXT1cInZhbG9yLnZhbHVlXCIgbmFtZT1cIm9wZXJhY2lvblwiIFt2YWx1ZV09XCJ2YWxvci52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwib3BlcmFjaW9uXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgW2Zvcl09XCJ2YWxvci52YWx1ZVwiIGNsYXNzPVwibWwtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyB2YWxvci5sYWJlbCB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJvcGVyYWNpb24gPT0gJ0UnXCI+XHJcbiAgICAgICAgICAgICAgICA8cC1mbG9hdExhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBwSW5wdXRUZXh0IFsobmdNb2RlbCldPVwiY29ycmVvXCIgdHlwZT1cInRleHRcIiBbZGlzYWJsZWRdPVwiYmxvcXVlYXJDb3JyZW9cIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbD57eydjb3JyZW8nIHwgdHJhbnNsYXRlfX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgPC9wLWZsb2F0TGFiZWw+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvcC1maWVsZHNldD5cclxuICAgICAgICBcclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHBCdXR0b24gcFJpcHBsZSBjbGFzcz1cIm0tMiBtdC00IHAtYnV0dG9uIHAtYnV0dG9uLW91dGxpbmVkIGJhY2tncm91bmQtMTAwXCJcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwidmFsaWRhckNvbnRyb2xGdW5jaW9uYWxpZGFkKCdlamVjcmVwbzpzZW50ZW5jaWEnKVwiIGxhYmVsPVwiVmVyIHNlbnRlbmNpYVwiIGljb249XCJnbHlwaGljb25zIGdseXBoaWNvbnMtZXllLW9wZW5cIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbnRlbmNpYSgpXCI+PC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gcEJ1dHRvbiBwUmlwcGxlIGNsYXNzPVwibS0yIG10LTQgcC1idXR0b24tcmFpc2VkXCIgKm5nSWY9XCJvcGVyYWNpb24gPT0gJ0UnXCIgaWNvbj1cImdseXBoaWNvbnMgZ2x5cGhpY29ucy1lbnZlbG9wZVwiXHJcbiAgICAgICAgICAgICAgICBsYWJlbD1cInt7J2xpbmtfZW52aWFyJyB8IHRyYW5zbGF0ZX19XCIgKGNsaWNrKT1cImVudmlhclNlZ3VuZG9QbGFubygpXCI+PC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gcEJ1dHRvbiBwUmlwcGxlIGNsYXNzPVwibS0yIG10LTQgcC1idXR0b24tcmFpc2VkXCIgKm5nSWY9XCJvcGVyYWNpb24gPT0gJ0QnICYmIHJlcG9ydGUubW9tZW50byAhPSAnRCdcIiBpY29uPVwiZ2x5cGhpY29ucyBnbHlwaGljb25zLWNoZWNrXCJcclxuICAgICAgICAgICAgICAgIGxhYmVsPVwie3snZ2VuZXJhcicgfCB0cmFuc2xhdGV9fVwiIChjbGljayk9XCJkZXNjYXJnYXJSZXBvcnRlKClcIj48L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBwQnV0dG9uIHBSaXBwbGUgY2xhc3M9XCJtLTIgbXQtNCBwLWJ1dHRvbi1yYWlzZWRcIiAqbmdJZj1cIm9wZXJhY2lvbiA9PSAnRCcgJiYgcmVwb3J0ZS5tb21lbnRvID09ICdEJ1wiIGljb249XCJnbHlwaGljb25zIGdseXBoaWNvbnMtY2hlY2tcIlxyXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJ7eydnZW5lcmFyJyB8IHRyYW5zbGF0ZX19XCIgKGNsaWNrKT1cImRlc2NhcmdhclJlcG9ydGVTaW5IaWxvKClcIj48L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBwQnV0dG9uIHBSaXBwbGUgY2xhc3M9XCJtLTIgbXQtNCBwLWJ1dHRvbi1yYWlzZWRcIiAqbmdJZj1cInRpcG9SZXBvcnRlID09ICdBJ1wiIGljb249XCJnbHlwaGljb25zIGdseXBoaWNvbnMtY2hlY2tcIlxyXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJ7eydnZW5lcmFyJyB8IHRyYW5zbGF0ZX19XCIgKGNsaWNrKT1cImdlbmVyYXJUYWJsYSgpXCI+PC9idXR0b24+XHJcbiAgICAgICAgICAgIDwhLS1wdGUgcHJvY2VzbyBleHRlcm5vLS0+XHJcbiAgICAgICAgICAgIDxidXR0b24gcEJ1dHRvbiBwUmlwcGxlIGNsYXNzPVwibS0yIG10LTQgcC1idXR0b24tcmFpc2VkXCIgKm5nSWY9XCJvcGVyYWNpb24gPT0gJ00nIHx8IG9wZXJhY2lvbiA9PSAnTVAnXCIgaWNvbj1cImdseXBoaWNvbnMgZ2x5cGhpY29ucy1lbnZlbG9wZVwiXHJcbiAgICAgICAgICAgICAgICBsYWJlbD1cInt7J2xpbmtfZW52aWFyJyB8IHRyYW5zbGF0ZX19XCIgKGNsaWNrKT1cImVudmlhclNlZ3VuZG9QbGFubygpXCI+PC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gcEJ1dHRvbiBwUmlwcGxlIGNsYXNzPVwibS0yIG10LTQgcC1idXR0b24tcmFpc2VkXCIgKm5nSWY9XCJvcGVyYWNpb24gPT0gJ1AnXCIgaWNvbj1cImdseXBoaWNvbnMgZ2x5cGhpY29ucy1mb2xkZXItb3BlblwiXHJcbiAgICAgICAgICAgICAgICBsYWJlbD1cInt7J2xpbmtfcHVibGljYXInIHwgdHJhbnNsYXRlfX1cIiAoY2xpY2spPVwiZW52aWFyU2VndW5kb1BsYW5vKClcIj48L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBwQnV0dG9uIHBSaXBwbGUgY2xhc3M9XCJtLTIgbXQtNCBwLWJ1dHRvbi1yYWlzZWRcIiAqbmdJZj1cIm9wZXJhY2lvbiA9PSdTJ1wiICBpY29uPVwiZ2x5cGhpY29ucyBnbHlwaGljb25zLWNoZWNrXCJcclxuICAgICAgICAgICAgICAgIGxhYmVsPVwie3snbGlua19nZW5lcmFyJyB8IHRyYW5zbGF0ZX19XCIgKGNsaWNrKT1cImVudmlhclNlZ3VuZG9QbGFubygpXCI+PC9idXR0b24+XHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2ICpuZ0lmPVwicGFuZWwgPT0gJ3Jlc3VsdGFkbydcIj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwib3BlcmFjaW9uID09ICdoaXN0b3JpY28nXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBtdC0yIG1iLTJcIj5cclxuICAgICAgICAgICAgICAgIDxoNCBjbGFzcz1cInRleHQtYmFzZSBtdC0yIG1sLTJcIj57eydkZXRhbGxlJyB8IHRyYW5zbGF0ZX19IHt7J3NlZ3VuZG9wbGFubycgfCB0cmFuc2xhdGV9fTwvaDQ+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIHBCdXR0b24gcFJpcHBsZSBpY29uPVwicGkgcGktY2hldnJvbi1sZWZ0XCIgY2xhc3M9XCJwLWJ1dHRvbi10ZXh0IGZvbnQtc2VtaWJvbGQgZmxleC1zaHJpbmstMCBtbC00XCJcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlZ3Jlc2FyU2VndW5kb1BsYW5vKClcIiBsYWJlbD1cInt7J2xpbmtfcmVncmVzYXInIHwgdHJhbnNsYXRlfX1cIiA+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIiBJbnB1dGdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtZmx1aWQgcC1mb3JtZ3JpZCBncmlkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZCBjb2wtMTIgbWQ6Y29sLTQgbGc6Y29sLTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLWZsb2F0TGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtY2FsZW5kYXIgdHlwZT1cInRleHRcIiBbKG5nTW9kZWwpXT1cImVsZW1lbnRvQm9ycmFyLmluaWNpYVwiIFtkaXNhYmxlZF09XCJ0cnVlXCIgYXBwZW5kVG89XCJib2R5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dUaW1lXT1cInRydWVcIiBbc2hvd1NlY29uZHNdPVwidHJ1ZVwiIGRhdGVGb3JtYXQ9XCJkZC9tbS95eVwiPjwvcC1jYWxlbmRhcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+e3soJ2ZlY2hhaW5pY2lhbCcpIHwgdHJhbnNsYXRlfX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wLWZsb2F0TGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkIGNvbC0xMiBtZDpjb2wtNCBsZzpjb2wtNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtZmxvYXRMYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC1jYWxlbmRhciB0eXBlPVwidGV4dFwiIFsobmdNb2RlbCldPVwiZWxlbWVudG9Cb3JyYXIudGVybWluYVwiIFtkaXNhYmxlZF09XCJ0cnVlXCIgYXBwZW5kVG89XCJib2R5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dUaW1lXT1cInRydWVcIiBbc2hvd1NlY29uZHNdPVwidHJ1ZVwiIGRhdGVGb3JtYXQ9XCJkZC9tbS95eVwiPjwvcC1jYWxlbmRhcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+e3soJ2ZlY2hhZmluYWwnKSB8IHRyYW5zbGF0ZX19PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcC1mbG9hdExhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZCBjb2wtMTIgbWQ6Y29sLTQgbGc6Y29sLTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLWZsb2F0TGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHBJbnB1dFRleHQgdHlwZT1cInRleHRcIiBbcmVhZG9ubHldPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImVsZW1lbnRvQm9ycmFyLm5vbWJyZUVzdGFkb1wiIFtkaXNhYmxlZF09XCJ0cnVlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+e3soJ2VzdGFkbycpIHwgdHJhbnNsYXRlfX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wLWZsb2F0TGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkIGNvbC0xMiBtZDpjb2wtMTIgbGc6Y29sLTEyXCIgKm5nSWY9XCJlbGVtZW50b0JvcnJhci5lc3RhZG8gPT0gJ0UnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+e3soJ21lbnNhamUnKSB8IHRyYW5zbGF0ZX19PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBjbGFzcz1cIm1pbi13LWZ1bGwyIHAtaW5wdXR0ZXh0YXJlYSBwLWlucHV0dGV4dCBwLWNvbXBvbmVudCBwLWVsZW1lbnQgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dzPVwiNVwiIGNvbHM9XCIzMFwiIHBJbnB1dFRleHRhcmVhIFsobmdNb2RlbCldPVwiZWxlbWVudG9Cb3JyYXIuYXJjaGl2b1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInRydWVcIj48L3RleHRhcmVhPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gcEJ1dHRvbiBwUmlwcGxlIGNsYXNzPVwibWwtMiBwLWJ1dHRvbiBwLWJ1dHRvbi1yYWlzZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJlbGVtZW50b0JvcnJhci5lc3RhZG8gPT0gJ1QnXCIgaWNvbj1cInBpIHBpLWRvd25sb2FkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPVwie3snbGlua19kZXNjYXJnYXInIHwgdHJhbnNsYXRlfX1cIiAoY2xpY2spPVwiZGVzY2FyZ2FyQXJjaGl2bygpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHBCdXR0b24gcFJpcHBsZSBjbGFzcz1cIm1sLTIgcC1idXR0b24tb3V0bGluZWRcIiBpY29uPVwiZ2x5cGhpY29ucyBnbHlwaGljb25zLWJpblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD1cInt7J2xpbmtfZWxpbWluYXInIHwgdHJhbnNsYXRlfX1cIiAoY2xpY2spPVwiZWxpbWluYXJTZWd1bmRvUGxhbm8oJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInRpcG9SZXBvcnRlID09ICdBJ1wiID5cclxuICAgICAgICAgICAgPHAtdGFibGUgW3ZhbHVlXT1cImxpc3RhUmVnaXN0cm9cIiByZXNwb25zaXZlTGF5b3V0PVwic2Nyb2xsXCIgW3Njcm9sbGFibGVdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICBbcm93c109XCIxMFwiIFt0b3RhbFJlY29yZHNdPVwibGlzdGFSZWdpc3Ryby5sZW5ndGhcIiBbcGFnaW5hdG9yXT1cImxpc3RhUmVnaXN0cm8ubGVuZ3RoID4gMTBcIiA+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRyIGNsYXNzPVwiZm9uZG9UYWJsYVBpbmNpcGFsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBbc3R5bGUud2lkdGgucHhdPVwiY29sLndpZHRoIHx8IDIwMFwiICpuZ0Zvcj1cImxldCBjb2wgb2YgY29sdW1uYXNcIj57eyBjb2wuaGVhZGVyIH19PC90aD5cclxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJib2R5XCIgbGV0LWVudHJhZGE+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgW3N0eWxlLndpZHRoLnB4XT1cImNvbC53aWR0aCB8fCAyMDBcIiAqbmdGb3I9XCJsZXQgY29sIG9mIGNvbHVtbmFzXCI+e3sgZW50cmFkYVtjb2wuZmllbGRdIH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJlbXB0eW1lc3NhZ2VcIj5cclxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInAtMyBmb250LW1lZGl1bSBlbXB0eW1lc3NhZ2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3snbWVuc2FqZXRhYmxhdmFjaWEnIHwgdHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICA8L3AtdGFibGU+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbjwvcC1kaWFsb2c+XHJcbjxhcHAtcG9wdXAtc2VudGVuY2lhIFtyZXBvcnRlXT1cInJlcG9ydGVcIiBbcGFyYW1ldHJvc109XCJwYXJhbWV0cm9zXCIgW21vc3RyYXJQb3B1cF09XCJtb3N0cmFyUG9wdXBTZW50ZW5jaWFcIlxyXG4gICAgKHJlZ3Jlc2FyKT1cInJlZ3Jlc2FyU2VudGVuY2lhKCRldmVudClcIj48L2FwcC1wb3B1cC1zZW50ZW5jaWE+Il19