general-library-union 2.9.39 → 2.9.41

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 (649) hide show
  1. package/esm2022/general-library-union.mjs +5 -0
  2. package/esm2022/public-api.mjs +180 -0
  3. package/esm2022/src/app/core/componentes/breadcrumb/breadcrumb.component.mjs +40 -0
  4. package/esm2022/src/app/core/componentes/carga-pantalla-completa/carga-pantalla-completa.component.mjs +28 -0
  5. package/esm2022/src/app/core/componentes/filtro-general/filtro-general.component.mjs +194 -0
  6. package/esm2022/src/app/core/componentes/footer/footer.component.mjs +16 -0
  7. package/esm2022/src/app/core/componentes/formulariodinamico/formulariodinamico.component.mjs +272 -0
  8. package/esm2022/src/app/core/componentes/formulariodinamico/objetosformulario/Cambio.mjs +11 -0
  9. package/esm2022/src/app/core/componentes/formulariodinamico/objetosformulario/CampoFormulario.mjs +124 -0
  10. package/esm2022/src/app/core/componentes/formulariodinamico/objetosformulario/CampoFormularioCons.mjs +73 -0
  11. package/esm2022/src/app/core/componentes/formulariodinamico/objetosformulario/CampoFormularioNuevo.mjs +59 -0
  12. package/esm2022/src/app/core/componentes/formulariodinamico/objetosformulario/HashDirective.mjs +21 -0
  13. package/esm2022/src/app/core/componentes/inicio-component/inicio-component.component.mjs +67 -0
  14. package/esm2022/src/app/core/componentes/menu/menu.component.mjs +37 -0
  15. package/esm2022/src/app/core/componentes/tabla-general/tabla-general.component.mjs +93 -0
  16. package/esm2022/src/app/core/core.module.mjs +23 -0
  17. package/esm2022/src/app/core/errores/authentication.error.mjs +7 -0
  18. package/esm2022/src/app/core/modelos/error-response.model.mjs +2 -0
  19. package/esm2022/src/app/core/modelos/table-column.model.mjs +2 -0
  20. package/esm2022/src/app/core/modelos/user.model.mjs +7 -0
  21. package/esm2022/src/app/core/plantilla-general/plantilla-general.template.mjs +230 -0
  22. package/esm2022/src/app/core/servicios/auth.service.mjs +185 -0
  23. package/esm2022/src/app/core/servicios/cargar-control-funcionalidad.service.mjs +57 -0
  24. package/esm2022/src/app/core/servicios/data-exporter-table.utils.mjs +64 -0
  25. package/esm2022/src/app/core/servicios/error-interceptor.service.mjs +214 -0
  26. package/esm2022/src/app/core/servicios/guardias/auth.guard.mjs +66 -0
  27. package/esm2022/src/app/core/servicios/guardias/publico.guard.mjs +35 -0
  28. package/esm2022/src/app/core/servicios/interceptores/loading-interceptor.mjs +37 -0
  29. package/esm2022/src/app/core/servicios/interceptores/token-interceptor.service.mjs +180 -0
  30. package/esm2022/src/app/core/servicios/loading.service.mjs +43 -0
  31. package/esm2022/src/app/core/servicios/menu.service.mjs +146 -0
  32. package/esm2022/src/app/core/servicios/spinner-service.mjs +22 -0
  33. package/esm2022/src/app/core/servicios/storage.service.mjs +68 -0
  34. package/esm2022/src/app/core/servicios/template.service.mjs +99 -0
  35. package/esm2022/src/app/core/servicios/toast.service.mjs +120 -0
  36. package/esm2022/src/app/core/servicios/utils.service.mjs +335 -0
  37. package/esm2022/src/app/core/sharedlib.module.mjs +16 -0
  38. package/esm2022/src/app/core/utilidades/color.util.mjs +177 -0
  39. package/esm2022/src/app/layout/api/menuchangeevent.mjs +2 -0
  40. package/esm2022/src/app/layout/app.breadcrumb.component.mjs +71 -0
  41. package/esm2022/src/app/layout/app.footer.component.mjs +18 -0
  42. package/esm2022/src/app/layout/app.layout.component.mjs +188 -0
  43. package/esm2022/src/app/layout/app.layout.module.mjs +15 -0
  44. package/esm2022/src/app/layout/app.menu.component.mjs +51 -0
  45. package/esm2022/src/app/layout/app.menu.service.mjs +24 -0
  46. package/esm2022/src/app/layout/app.menuitem.component.mjs +296 -0
  47. package/esm2022/src/app/layout/app.menuprofile.component.mjs +78 -0
  48. package/esm2022/src/app/layout/app.rightmenu.component.mjs +24 -0
  49. package/esm2022/src/app/layout/app.sidebar.component.mjs +92 -0
  50. package/esm2022/src/app/layout/app.topbar.component.mjs +345 -0
  51. package/esm2022/src/app/layout/service/app.layout.service.mjs +134 -0
  52. package/esm2022/src/app/publico/pages/login/login.page.mjs +129 -0
  53. package/esm2022/src/app/publico/pages/not-found/not-found.page.mjs +51 -0
  54. package/esm2022/src/app/publico/pages/seleccion-rol/seleccion-rol.component.mjs +167 -0
  55. package/esm2022/src/app/publico/pages/timeout/timeout.page.mjs +20 -0
  56. package/esm2022/src/app/seguridad/constantes/ConstantesGenerales.mjs +30 -0
  57. package/esm2022/src/app/seguridad/constantes/ReporteEntradaConstantes.mjs +19 -0
  58. package/esm2022/src/app/seguridad/modelos/AplicacionModel.mjs +8 -0
  59. package/esm2022/src/app/seguridad/modelos/ArchivoPortalModel.mjs +14 -0
  60. package/esm2022/src/app/seguridad/modelos/AtributoPuntoModel.mjs +9 -0
  61. package/esm2022/src/app/seguridad/modelos/AtributoSSOportalModel.mjs +17 -0
  62. package/esm2022/src/app/seguridad/modelos/AuditoriaArchivoModel.mjs +11 -0
  63. package/esm2022/src/app/seguridad/modelos/CargueLineaModel.mjs +13 -0
  64. package/esm2022/src/app/seguridad/modelos/ColoresRGB.mjs +18 -0
  65. package/esm2022/src/app/seguridad/modelos/ColumnaFuenteModel.mjs +9 -0
  66. package/esm2022/src/app/seguridad/modelos/ColumnaWraperModel.mjs +6 -0
  67. package/esm2022/src/app/seguridad/modelos/ComplementoModel.mjs +7 -0
  68. package/esm2022/src/app/seguridad/modelos/ComponentePaginaModel.mjs +21 -0
  69. package/esm2022/src/app/seguridad/modelos/ConexionModel.mjs +14 -0
  70. package/esm2022/src/app/seguridad/modelos/ContenidoHtmlPortalModel.mjs +21 -0
  71. package/esm2022/src/app/seguridad/modelos/ControlFuncionModel.mjs +8 -0
  72. package/esm2022/src/app/seguridad/modelos/CorreoModel.mjs +35 -0
  73. package/esm2022/src/app/seguridad/modelos/CorreoWSModel.mjs +37 -0
  74. package/esm2022/src/app/seguridad/modelos/CruceRecursoPuntoModel.mjs +14 -0
  75. package/esm2022/src/app/seguridad/modelos/DatoInicioModel.mjs +6 -0
  76. package/esm2022/src/app/seguridad/modelos/EjecucionReporteDataModel.mjs +14 -0
  77. package/esm2022/src/app/seguridad/modelos/EmpresaModel.mjs +25 -0
  78. package/esm2022/src/app/seguridad/modelos/EmpresaSeguridadModel.mjs +19 -0
  79. package/esm2022/src/app/seguridad/modelos/EntradaComplementoModel.mjs +7 -0
  80. package/esm2022/src/app/seguridad/modelos/EtiquetaModel.mjs +5 -0
  81. package/esm2022/src/app/seguridad/modelos/Etiquetas.mjs +12 -0
  82. package/esm2022/src/app/seguridad/modelos/ForeingWraperModel.mjs +6 -0
  83. package/esm2022/src/app/seguridad/modelos/FuenteCampoAtributoModel.mjs +16 -0
  84. package/esm2022/src/app/seguridad/modelos/FuenteCampoModel.mjs +17 -0
  85. package/esm2022/src/app/seguridad/modelos/FuenteDato.mjs +19 -0
  86. package/esm2022/src/app/seguridad/modelos/FuenteEntradaModel.mjs +9 -0
  87. package/esm2022/src/app/seguridad/modelos/FuenteGeneralModel.mjs +37 -0
  88. package/esm2022/src/app/seguridad/modelos/FuenteLineaServicioModel.mjs +16 -0
  89. package/esm2022/src/app/seguridad/modelos/FuenteProcesoGeneralModel.mjs +11 -0
  90. package/esm2022/src/app/seguridad/modelos/FuenteServicioModel.mjs +51 -0
  91. package/esm2022/src/app/seguridad/modelos/FuncionalidadModel.mjs +10 -0
  92. package/esm2022/src/app/seguridad/modelos/GeneralModel.mjs +15 -0
  93. package/esm2022/src/app/seguridad/modelos/GrupoAccesoModel.mjs +7 -0
  94. package/esm2022/src/app/seguridad/modelos/GrupoControlFuncionModel.mjs +10 -0
  95. package/esm2022/src/app/seguridad/modelos/GrupoFuenteModel.mjs +13 -0
  96. package/esm2022/src/app/seguridad/modelos/GrupoPermisoModel.mjs +14 -0
  97. package/esm2022/src/app/seguridad/modelos/JoinFromModel.mjs +5 -0
  98. package/esm2022/src/app/seguridad/modelos/ListaServicioModel.mjs +17 -0
  99. package/esm2022/src/app/seguridad/modelos/LlaveForaneaModel.mjs +7 -0
  100. package/esm2022/src/app/seguridad/modelos/LoginModel.mjs +15 -0
  101. package/esm2022/src/app/seguridad/modelos/MensajeSistemaModel.mjs +8 -0
  102. package/esm2022/src/app/seguridad/modelos/MenuPortalModel.mjs +5 -0
  103. package/esm2022/src/app/seguridad/modelos/ModulosModel.mjs +18 -0
  104. package/esm2022/src/app/seguridad/modelos/ObjetoReporteModel.mjs +6 -0
  105. package/esm2022/src/app/seguridad/modelos/PaginaPortalModel.mjs +20 -0
  106. package/esm2022/src/app/seguridad/modelos/ParametroComponenteModel.mjs +9 -0
  107. package/esm2022/src/app/seguridad/modelos/ParametrosGeneralModel.mjs +15 -0
  108. package/esm2022/src/app/seguridad/modelos/PermisoFuncionModel.mjs +9 -0
  109. package/esm2022/src/app/seguridad/modelos/PermisocontenidoModel.mjs +20 -0
  110. package/esm2022/src/app/seguridad/modelos/PeticionModel.mjs +16 -0
  111. package/esm2022/src/app/seguridad/modelos/PreguntaSeguridadModel.mjs +7 -0
  112. package/esm2022/src/app/seguridad/modelos/PropiedadModel.mjs +10 -0
  113. package/esm2022/src/app/seguridad/modelos/PublicacionWebModel.mjs +27 -0
  114. package/esm2022/src/app/seguridad/modelos/PuntoProcesoModel.mjs +7 -0
  115. package/esm2022/src/app/seguridad/modelos/RecursoPunto.mjs +13 -0
  116. package/esm2022/src/app/seguridad/modelos/RecursoPuntoModel.mjs +13 -0
  117. package/esm2022/src/app/seguridad/modelos/ReporteBanda.mjs +8 -0
  118. package/esm2022/src/app/seguridad/modelos/ReporteColumna.mjs +33 -0
  119. package/esm2022/src/app/seguridad/modelos/ReporteColumnario.mjs +69 -0
  120. package/esm2022/src/app/seguridad/modelos/ReporteColumnarioMarcador.mjs +24 -0
  121. package/esm2022/src/app/seguridad/modelos/ReporteEntradaModel.mjs +20 -0
  122. package/esm2022/src/app/seguridad/modelos/ReporteFuenteModel.mjs +124 -0
  123. package/esm2022/src/app/seguridad/modelos/ReporteMarcador.mjs +40 -0
  124. package/esm2022/src/app/seguridad/modelos/ReporteSoporte.mjs +10 -0
  125. package/esm2022/src/app/seguridad/modelos/ReporteTabla.mjs +13 -0
  126. package/esm2022/src/app/seguridad/modelos/RespuestaModel.mjs +9 -0
  127. package/esm2022/src/app/seguridad/modelos/RolModel.mjs +39 -0
  128. package/esm2022/src/app/seguridad/modelos/ServidorCorreoModel.mjs +28 -0
  129. package/esm2022/src/app/seguridad/modelos/SistemaMensajeModel.mjs +9 -0
  130. package/esm2022/src/app/seguridad/modelos/SitioPortalModel.mjs +25 -0
  131. package/esm2022/src/app/seguridad/modelos/TablaFromModel.mjs +5 -0
  132. package/esm2022/src/app/seguridad/modelos/TareasModel.mjs +54 -0
  133. package/esm2022/src/app/seguridad/modelos/TextoModel.mjs +9 -0
  134. package/esm2022/src/app/seguridad/modelos/TipoEtiqueta.mjs +8 -0
  135. package/esm2022/src/app/seguridad/modelos/UnionModel.mjs +12 -0
  136. package/esm2022/src/app/seguridad/modelos/UsuarioModel.mjs +53 -0
  137. package/esm2022/src/app/seguridad/modelos/UsuariogrupoModel.mjs +24 -0
  138. package/esm2022/src/app/seguridad/modelos/aplicacion-propiedad-model.mjs +15 -0
  139. package/esm2022/src/app/seguridad/modelos/contenidoCorreoModel.mjs +10 -0
  140. package/esm2022/src/app/shared/componentes/input-helper-seleccion-plantilla/input-helper-seleccion-plantilla.component.mjs +154 -0
  141. package/esm2022/src/app/shared/servicios/cargar-archivos.service.mjs +54 -0
  142. package/esm2022/src/app/shared/servicios/cargar-mapas.service.mjs +46 -0
  143. package/esm2022/src/app/shared/servicios/encriptado-basico.service.mjs +53 -0
  144. package/esm2022/src/app/shared/servicios/general.service.mjs +104 -0
  145. package/esm2022/src/app/shared/servicios/parametros-navegacion.service.mjs +21 -0
  146. package/esm2022/src/app/webcommon/pages/cargue-plantilla/cargue-plantilla-general/cargue-plantilla-general.component.mjs +370 -0
  147. package/esm2022/src/app/webcommon/pages/ejecucion-reporte/detalle-campo-reporte/detalle-campo-reporte.component.mjs +187 -0
  148. package/esm2022/src/app/webcommon/pages/ejecucion-reporte/detalle-distribucion-reporte/detalle-distribucion-reporte.component.mjs +85 -0
  149. package/esm2022/src/app/webcommon/pages/ejecucion-reporte/detalle-ejecucion-reporte/detalle-ejecucion-reporte.page.mjs +347 -0
  150. package/esm2022/src/app/webcommon/pages/ejecucion-reporte/detalle-entrada-reporte/detalle-entrada-reporte.component.mjs +206 -0
  151. package/esm2022/src/app/webcommon/pages/ejecucion-reporte/detalle-punto-proceso-reporte/detalle-punto-proceso-reporte.component.mjs +328 -0
  152. package/esm2022/src/app/webcommon/pages/ejecucion-reporte/detalle-tipo-reporte/detalle-tipo-reporte.component.mjs +1569 -0
  153. package/esm2022/src/app/webcommon/pages/ejecucion-reporte/listado-ejecucion-reporte/listado-ejecucion-reporte.page.mjs +105 -0
  154. package/esm2022/src/app/webcommon/pages/ejecucion-reporte-externo/listado-ejecucion-reporte-externo/listado-ejecucion-reporte-externo.component.mjs +114 -0
  155. package/esm2022/src/app/webcommon/pages/fuente/importar-fuente-con/importar-fuente-con.component.mjs +588 -0
  156. package/esm2022/src/app/webcommon/pages/fuente/importar-fuente-general/importar-fuente-general.component.mjs +177 -0
  157. package/esm2022/src/app/webcommon/pages/fuente-reporte/fuente-reporte.component.mjs +749 -0
  158. package/esm2022/src/app/webcommon/pages/fuenteGeneral/fuente-general-servicio/fuente-general-servicio.component.mjs +331 -0
  159. package/esm2022/src/app/webcommon/pages/fuenteGeneral/listado-fuente-general/listado-fuente-general.page.mjs +96 -0
  160. package/esm2022/src/app/webcommon/pages/fuenteGeneral/mantenimiento-fuente-general/mantenimiento-fuente-general.page.mjs +675 -0
  161. package/esm2022/src/app/webcommon/pipes/dashboard.pipe.mjs +86 -0
  162. package/esm2022/src/app/webcommon/pipes/fuente.pipe.mjs +201 -0
  163. package/esm2022/src/app/webcommon/pipes/general.pipe.mjs +916 -0
  164. package/esm2022/src/app/webcommon/pipes/reporte-columnario.pipe.mjs +115 -0
  165. package/esm2022/src/app/webcommon/pipes/reporte-fuente.pipe.mjs +301 -0
  166. package/esm2022/src/app/webcommon/popups/popup-campos-fuente-general/popup-campos-fuente-general.component.mjs +267 -0
  167. package/esm2022/src/app/webcommon/popups/popup-convertir-plantillas/popup-convertir-plantillas.component.mjs +128 -0
  168. package/esm2022/src/app/webcommon/popups/popup-punto-proceso/popup-punto-proceso.component.mjs +293 -0
  169. package/esm2022/src/app/webcommon/popups/popup-recurso/popup-recurso.component.mjs +269 -0
  170. package/esm2022/src/app/webcommon/popups/popup-reporte/popup-reporte.component.mjs +515 -0
  171. package/esm2022/src/app/webcommon/popups/popup-sentencia/popup-sentencia.component.mjs +64 -0
  172. package/esm2022/src/app/webcommon/popups/popup-tablas-fuente/popup-tablas-fuente.component.mjs +159 -0
  173. package/esm2022/src/app/webcommon/popups/punto-proceso-comp/punto-proceso-comp.component.mjs +89 -0
  174. package/esm2022/src/app/webcommon/services/carguelinea.service.mjs +69 -0
  175. package/esm2022/src/app/webcommon/services/dashboard.service.mjs +253 -0
  176. package/esm2022/src/app/webcommon/services/ejecucionreporte.service.mjs +114 -0
  177. package/esm2022/src/app/webcommon/services/fechaUtils.service.mjs +88 -0
  178. package/esm2022/src/app/webcommon/services/fuentegeneral.service.mjs +68 -0
  179. package/esm2022/src/app/webcommon/services/homologacion.service.mjs +50 -0
  180. package/esm2022/src/app/webcommon/services/plantillas.service.mjs +129 -0
  181. package/esm2022/src/app/webcommon/services/reportes.service.mjs +95 -0
  182. package/esm2022/src/app/webcommon/webcommon.module.mjs +15 -0
  183. package/esm2022/src/environments/environment.mjs +24 -0
  184. package/fesm2022/general-library-union.mjs +15885 -0
  185. package/fesm2022/general-library-union.mjs.map +1 -0
  186. package/index.d.ts +5 -0
  187. package/package.json +62 -73
  188. package/{public-api.ts → public-api.d.ts} +161 -201
  189. package/src/app/core/componentes/breadcrumb/breadcrumb.component.d.ts +18 -0
  190. package/src/app/core/componentes/carga-pantalla-completa/carga-pantalla-completa.component.d.ts +14 -0
  191. package/src/app/core/componentes/filtro-general/filtro-general.component.d.ts +34 -0
  192. package/src/app/core/componentes/footer/footer.component.d.ts +9 -0
  193. package/src/app/core/componentes/formulariodinamico/formulariodinamico.component.d.ts +46 -0
  194. package/src/app/core/componentes/formulariodinamico/objetosformulario/{Cambio.ts → Cambio.d.ts} +7 -13
  195. package/src/app/core/componentes/formulariodinamico/objetosformulario/CampoFormulario.d.ts +44 -0
  196. package/src/app/core/componentes/formulariodinamico/objetosformulario/CampoFormularioCons.d.ts +45 -0
  197. package/src/app/core/componentes/formulariodinamico/objetosformulario/CampoFormularioNuevo.d.ts +33 -0
  198. package/src/app/core/componentes/formulariodinamico/objetosformulario/HashDirective.d.ts +9 -0
  199. package/src/app/core/componentes/inicio-component/inicio-component.component.d.ts +24 -0
  200. package/src/app/core/componentes/menu/menu.component.d.ts +16 -0
  201. package/src/app/core/componentes/tabla-general/tabla-general.component.d.ts +32 -0
  202. package/src/app/core/core.module.d.ts +8 -0
  203. package/src/app/core/errores/authentication.error.d.ts +3 -0
  204. package/src/app/core/modelos/error-response.model.d.ts +9 -0
  205. package/src/app/core/modelos/table-column.model.d.ts +12 -0
  206. package/src/app/core/modelos/user.model.d.ts +6 -0
  207. package/src/app/core/plantilla-general/plantilla-general.template.d.ts +89 -0
  208. package/src/app/core/servicios/auth.service.d.ts +52 -0
  209. package/src/app/core/servicios/cargar-control-funcionalidad.service.d.ts +19 -0
  210. package/src/app/core/servicios/data-exporter-table.utils.d.ts +11 -0
  211. package/src/app/core/servicios/error-interceptor.service.d.ts +41 -0
  212. package/src/app/core/servicios/guardias/auth.guard.d.ts +17 -0
  213. package/src/app/core/servicios/guardias/publico.guard.d.ts +13 -0
  214. package/src/app/core/servicios/interceptores/loading-interceptor.d.ts +11 -0
  215. package/src/app/core/servicios/interceptores/token-interceptor.service.d.ts +26 -0
  216. package/src/app/core/servicios/loading.service.d.ts +22 -0
  217. package/src/app/core/servicios/menu.service.d.ts +35 -0
  218. package/src/app/core/servicios/spinner-service.d.ts +9 -0
  219. package/src/app/core/servicios/storage.service.d.ts +37 -0
  220. package/src/app/core/servicios/template.service.d.ts +20 -0
  221. package/src/app/core/servicios/toast.service.d.ts +48 -0
  222. package/src/app/core/servicios/utils.service.d.ts +42 -0
  223. package/src/app/core/sharedlib.module.d.ts +6 -0
  224. package/src/app/core/utilidades/color.util.d.ts +70 -0
  225. package/src/app/layout/api/{menuchangeevent.ts → menuchangeevent.d.ts} +4 -4
  226. package/src/app/layout/app.breadcrumb.component.d.ts +28 -0
  227. package/src/app/layout/app.footer.component.d.ts +8 -0
  228. package/src/app/layout/app.layout.component.d.ts +39 -0
  229. package/src/app/layout/app.layout.module.d.ts +6 -0
  230. package/src/app/layout/app.menu.component.d.ts +19 -0
  231. package/src/app/layout/app.menu.service.d.ts +12 -0
  232. package/src/app/layout/app.menuitem.component.d.ts +41 -0
  233. package/src/app/layout/app.menuprofile.component.d.ts +18 -0
  234. package/src/app/layout/app.rightmenu.component.d.ts +10 -0
  235. package/src/app/layout/app.sidebar.component.d.ts +34 -0
  236. package/src/app/layout/app.topbar.component.d.ts +79 -0
  237. package/src/app/layout/service/app.layout.service.d.ts +57 -0
  238. package/src/app/publico/pages/login/login.page.d.ts +40 -0
  239. package/src/app/publico/pages/not-found/not-found.page.d.ts +17 -0
  240. package/src/app/publico/pages/seleccion-rol/seleccion-rol.component.d.ts +41 -0
  241. package/src/app/publico/pages/timeout/timeout.page.d.ts +10 -0
  242. package/src/app/seguridad/constantes/ConstantesGenerales.d.ts +25 -0
  243. package/src/app/seguridad/constantes/ReporteEntradaConstantes.d.ts +7 -0
  244. package/src/app/seguridad/modelos/AplicacionModel.d.ts +7 -0
  245. package/src/app/seguridad/modelos/ArchivoPortalModel.d.ts +13 -0
  246. package/src/app/seguridad/modelos/AtributoPuntoModel.d.ts +8 -0
  247. package/src/app/seguridad/modelos/AtributoSSOportalModel.d.ts +16 -0
  248. package/src/app/seguridad/modelos/{AuditoriaArchivoModel.ts → AuditoriaArchivoModel.d.ts} +10 -13
  249. package/src/app/seguridad/modelos/CargueLineaModel.d.ts +12 -0
  250. package/src/app/seguridad/modelos/ColoresRGB.d.ts +17 -0
  251. package/src/app/seguridad/modelos/ColumnaFuenteModel.d.ts +8 -0
  252. package/src/app/seguridad/modelos/{ColumnaWraperModel.ts → ColumnaWraperModel.d.ts} +6 -7
  253. package/src/app/seguridad/modelos/ComplementoModel.d.ts +6 -0
  254. package/src/app/seguridad/modelos/ComponentePaginaModel.d.ts +20 -0
  255. package/src/app/seguridad/modelos/ConexionModel.d.ts +13 -0
  256. package/src/app/seguridad/modelos/{ContenidoHtmlPortalModel.ts → ContenidoHtmlPortalModel.d.ts} +20 -25
  257. package/src/app/seguridad/modelos/ControlFuncionModel.d.ts +7 -0
  258. package/src/app/seguridad/modelos/CorreoModel.d.ts +31 -0
  259. package/src/app/seguridad/modelos/CorreoWSModel.d.ts +33 -0
  260. package/src/app/seguridad/modelos/CruceRecursoPuntoModel.d.ts +13 -0
  261. package/src/app/seguridad/modelos/{DatoInicioModel.ts → DatoInicioModel.d.ts} +6 -7
  262. package/src/app/seguridad/modelos/{EjecucionReporteDataModel.ts → EjecucionReporteDataModel.d.ts} +20 -21
  263. package/src/app/seguridad/modelos/EmpresaModel.d.ts +23 -0
  264. package/src/app/seguridad/modelos/EmpresaSeguridadModel.d.ts +18 -0
  265. package/src/app/seguridad/modelos/{EntradaComplementoModel.ts → EntradaComplementoModel.d.ts} +6 -9
  266. package/src/app/seguridad/modelos/EtiquetaModel.d.ts +4 -0
  267. package/src/app/seguridad/modelos/Etiquetas.d.ts +10 -0
  268. package/src/app/seguridad/modelos/{ForeingWraperModel.ts → ForeingWraperModel.d.ts} +6 -9
  269. package/src/app/seguridad/modelos/FuenteCampoAtributoModel.d.ts +15 -0
  270. package/src/app/seguridad/modelos/{FuenteCampoModel.ts → FuenteCampoModel.d.ts} +16 -20
  271. package/src/app/seguridad/modelos/FuenteDato.d.ts +18 -0
  272. package/src/app/seguridad/modelos/FuenteEntradaModel.d.ts +8 -0
  273. package/src/app/seguridad/modelos/{FuenteGeneralModel.ts → FuenteGeneralModel.d.ts} +36 -55
  274. package/src/app/seguridad/modelos/FuenteLineaServicioModel.d.ts +16 -0
  275. package/src/app/seguridad/modelos/FuenteProcesoGeneralModel.d.ts +10 -0
  276. package/src/app/seguridad/modelos/{FuenteServicioModel.ts → FuenteServicioModel.d.ts} +47 -61
  277. package/src/app/seguridad/modelos/FuncionalidadModel.d.ts +8 -0
  278. package/src/app/seguridad/modelos/GeneralModel.d.ts +8 -0
  279. package/src/app/seguridad/modelos/{GrupoAccesoModel.ts → GrupoAccesoModel.d.ts} +6 -9
  280. package/src/app/seguridad/modelos/GrupoControlFuncionModel.d.ts +9 -0
  281. package/src/app/seguridad/modelos/GrupoFuenteModel.d.ts +13 -0
  282. package/src/app/seguridad/modelos/GrupoPermisoModel.d.ts +13 -0
  283. package/src/app/seguridad/modelos/{JoinFromModel.ts → JoinFromModel.d.ts} +4 -4
  284. package/src/app/seguridad/modelos/ListaServicioModel.d.ts +16 -0
  285. package/src/app/seguridad/modelos/LlaveForaneaModel.d.ts +6 -0
  286. package/src/app/seguridad/modelos/LoginModel.d.ts +17 -0
  287. package/src/app/seguridad/modelos/MensajeSistemaModel.d.ts +7 -0
  288. package/src/app/seguridad/modelos/{MenuPortalModel.ts → MenuPortalModel.d.ts} +4 -5
  289. package/src/app/seguridad/modelos/ModulosModel.d.ts +14 -0
  290. package/src/app/seguridad/modelos/{ObjetoReporteModel.ts → ObjetoReporteModel.d.ts} +5 -6
  291. package/src/app/seguridad/modelos/PaginaPortalModel.d.ts +19 -0
  292. package/src/app/seguridad/modelos/ParametroComponenteModel.d.ts +8 -0
  293. package/src/app/seguridad/modelos/ParametrosGeneralModel.d.ts +8 -0
  294. package/src/app/seguridad/modelos/PermisoFuncionModel.d.ts +8 -0
  295. package/src/app/seguridad/modelos/PermisocontenidoModel.d.ts +18 -0
  296. package/src/app/seguridad/modelos/{PeticionModel.ts → PeticionModel.d.ts} +15 -20
  297. package/src/app/seguridad/modelos/PreguntaSeguridadModel.d.ts +6 -0
  298. package/src/app/seguridad/modelos/PropiedadModel.d.ts +9 -0
  299. package/src/app/seguridad/modelos/PublicacionWebModel.d.ts +25 -0
  300. package/src/app/seguridad/modelos/PuntoProcesoModel.d.ts +6 -0
  301. package/src/app/seguridad/modelos/RecursoPunto.d.ts +12 -0
  302. package/src/app/seguridad/modelos/RecursoPuntoModel.d.ts +12 -0
  303. package/src/app/seguridad/modelos/ReporteBanda.d.ts +7 -0
  304. package/src/app/seguridad/modelos/ReporteColumna.d.ts +32 -0
  305. package/src/app/seguridad/modelos/ReporteColumnario.d.ts +68 -0
  306. package/src/app/seguridad/modelos/ReporteColumnarioMarcador.d.ts +23 -0
  307. package/src/app/seguridad/modelos/{ReporteEntradaModel.ts → ReporteEntradaModel.d.ts} +19 -21
  308. package/src/app/seguridad/modelos/{ReporteFuenteModel.ts → ReporteFuenteModel.d.ts} +87 -141
  309. package/src/app/seguridad/modelos/ReporteMarcador.d.ts +39 -0
  310. package/src/app/seguridad/modelos/ReporteSoporte.d.ts +9 -0
  311. package/src/app/seguridad/modelos/ReporteTabla.d.ts +12 -0
  312. package/src/app/seguridad/modelos/RespuestaModel.d.ts +8 -0
  313. package/src/app/seguridad/modelos/{RolModel.ts → RolModel.d.ts} +37 -41
  314. package/src/app/seguridad/modelos/ServidorCorreoModel.d.ts +25 -0
  315. package/src/app/seguridad/modelos/SistemaMensajeModel.d.ts +8 -0
  316. package/src/app/seguridad/modelos/SitioPortalModel.d.ts +24 -0
  317. package/src/app/seguridad/modelos/TablaFromModel.d.ts +4 -0
  318. package/src/app/seguridad/modelos/TareasModel.d.ts +49 -0
  319. package/src/app/seguridad/modelos/TextoModel.d.ts +8 -0
  320. package/src/app/seguridad/modelos/TipoEtiqueta.d.ts +7 -0
  321. package/src/app/seguridad/modelos/UnionModel.d.ts +11 -0
  322. package/src/app/seguridad/modelos/{UsuarioModel.ts → UsuarioModel.d.ts} +49 -60
  323. package/src/app/seguridad/modelos/UsuariogrupoModel.d.ts +22 -0
  324. package/src/app/seguridad/modelos/aplicacion-propiedad-model.d.ts +13 -0
  325. package/src/app/seguridad/modelos/contenidoCorreoModel.d.ts +9 -0
  326. package/src/app/shared/componentes/input-helper-seleccion-plantilla/input-helper-seleccion-plantilla.component.d.ts +47 -0
  327. package/src/app/shared/servicios/cargar-archivos.service.d.ts +15 -0
  328. package/src/app/shared/servicios/cargar-mapas.service.d.ts +18 -0
  329. package/src/app/shared/servicios/encriptado-basico.service.d.ts +10 -0
  330. package/src/app/shared/servicios/general.service.d.ts +24 -0
  331. package/src/app/shared/servicios/parametros-navegacion.service.d.ts +9 -0
  332. package/src/app/webcommon/pages/cargue-plantilla/cargue-plantilla-general/cargue-plantilla-general.component.d.ts +78 -0
  333. package/src/app/webcommon/pages/ejecucion-reporte/detalle-campo-reporte/detalle-campo-reporte.component.d.ts +79 -0
  334. package/src/app/webcommon/pages/ejecucion-reporte/detalle-distribucion-reporte/detalle-distribucion-reporte.component.d.ts +29 -0
  335. package/src/app/webcommon/pages/ejecucion-reporte/detalle-ejecucion-reporte/detalle-ejecucion-reporte.page.d.ts +69 -0
  336. package/src/app/webcommon/pages/ejecucion-reporte/detalle-entrada-reporte/detalle-entrada-reporte.component.d.ts +51 -0
  337. package/src/app/webcommon/pages/ejecucion-reporte/detalle-punto-proceso-reporte/detalle-punto-proceso-reporte.component.d.ts +77 -0
  338. package/src/app/webcommon/pages/ejecucion-reporte/detalle-tipo-reporte/detalle-tipo-reporte.component.d.ts +275 -0
  339. package/src/app/webcommon/pages/ejecucion-reporte/listado-ejecucion-reporte/listado-ejecucion-reporte.page.d.ts +42 -0
  340. package/src/app/webcommon/pages/ejecucion-reporte-externo/listado-ejecucion-reporte-externo/listado-ejecucion-reporte-externo.component.d.ts +35 -0
  341. package/src/app/webcommon/pages/fuente/importar-fuente-con/importar-fuente-con.component.d.ts +143 -0
  342. package/src/app/webcommon/pages/fuente/importar-fuente-general/importar-fuente-general.component.d.ts +49 -0
  343. package/src/app/webcommon/pages/fuente-reporte/fuente-reporte.component.d.ts +128 -0
  344. package/src/app/webcommon/pages/fuenteGeneral/fuente-general-servicio/fuente-general-servicio.component.d.ts +64 -0
  345. package/src/app/webcommon/pages/fuenteGeneral/listado-fuente-general/listado-fuente-general.page.d.ts +33 -0
  346. package/src/app/webcommon/pages/fuenteGeneral/mantenimiento-fuente-general/mantenimiento-fuente-general.page.d.ts +149 -0
  347. package/src/app/webcommon/pipes/dashboard.pipe.d.ts +48 -0
  348. package/src/app/webcommon/pipes/fuente.pipe.d.ts +136 -0
  349. package/src/app/webcommon/pipes/general.pipe.d.ts +646 -0
  350. package/src/app/webcommon/pipes/reporte-columnario.pipe.d.ts +59 -0
  351. package/src/app/webcommon/pipes/reporte-fuente.pipe.d.ts +193 -0
  352. package/src/app/webcommon/popups/popup-campos-fuente-general/popup-campos-fuente-general.component.d.ts +59 -0
  353. package/src/app/webcommon/popups/popup-convertir-plantillas/popup-convertir-plantillas.component.d.ts +27 -0
  354. package/src/app/webcommon/popups/popup-punto-proceso/popup-punto-proceso.component.d.ts +64 -0
  355. package/src/app/webcommon/popups/popup-recurso/popup-recurso.component.d.ts +63 -0
  356. package/src/app/webcommon/popups/popup-reporte/popup-reporte.component.d.ts +97 -0
  357. package/src/app/webcommon/popups/popup-sentencia/popup-sentencia.component.d.ts +21 -0
  358. package/src/app/webcommon/popups/popup-tablas-fuente/popup-tablas-fuente.component.d.ts +42 -0
  359. package/src/app/webcommon/popups/punto-proceso-comp/punto-proceso-comp.component.d.ts +30 -0
  360. package/src/app/webcommon/services/carguelinea.service.d.ts +19 -0
  361. package/src/app/webcommon/services/dashboard.service.d.ts +27 -0
  362. package/src/app/webcommon/services/ejecucionreporte.service.d.ts +34 -0
  363. package/src/app/webcommon/services/fechaUtils.service.d.ts +29 -0
  364. package/src/app/webcommon/services/fuentegeneral.service.d.ts +24 -0
  365. package/src/app/webcommon/services/homologacion.service.d.ts +17 -0
  366. package/src/app/webcommon/services/plantillas.service.d.ts +26 -0
  367. package/src/app/webcommon/services/reportes.service.d.ts +35 -0
  368. package/src/app/webcommon/webcommon.module.d.ts +6 -0
  369. package/src/environments/environment.d.ts +7 -0
  370. package/src/styles/primeng/sass/overrides/_theme_styles.scss +1 -1
  371. package/src/styles/primeng/sass/overrides/_theme_styles_dark.scss +1 -1
  372. package/.browserslistrc +0 -15
  373. package/.editorconfig +0 -16
  374. package/.vscode/extensions.json +0 -4
  375. package/.vscode/launch.json +0 -20
  376. package/.vscode/tasks.json +0 -42
  377. package/angular.json +0 -143
  378. package/karma.conf.js +0 -44
  379. package/ng-package.json +0 -21
  380. package/src/app/app.component.html +0 -12
  381. package/src/app/app.component.scss +0 -0
  382. package/src/app/app.component.spec.ts +0 -29
  383. package/src/app/app.component.ts +0 -34
  384. package/src/app/app.config.ts +0 -43
  385. package/src/app/app.module.ts +0 -10
  386. package/src/app/app.routes.ts +0 -88
  387. package/src/app/core/componentes/breadcrumb/breadcrumb.component.html +0 -6
  388. package/src/app/core/componentes/breadcrumb/breadcrumb.component.scss +0 -0
  389. package/src/app/core/componentes/breadcrumb/breadcrumb.component.ts +0 -39
  390. package/src/app/core/componentes/carga-breadcrumb/carga-breadcrumb.component.html +0 -1
  391. package/src/app/core/componentes/carga-breadcrumb/carga-breadcrumb.component.scss +0 -0
  392. package/src/app/core/componentes/carga-breadcrumb/carga-breadcrumb.component.ts +0 -31
  393. package/src/app/core/componentes/carga-pantalla-completa/carga-pantalla-completa.component.html +0 -9
  394. package/src/app/core/componentes/carga-pantalla-completa/carga-pantalla-completa.component.scss +0 -28
  395. package/src/app/core/componentes/carga-pantalla-completa/carga-pantalla-completa.component.ts +0 -32
  396. package/src/app/core/componentes/filtro-general/filtro-general.component.html +0 -34
  397. package/src/app/core/componentes/filtro-general/filtro-general.component.scss +0 -3
  398. package/src/app/core/componentes/filtro-general/filtro-general.component.ts +0 -202
  399. package/src/app/core/componentes/footer/footer.component.html +0 -13
  400. package/src/app/core/componentes/footer/footer.component.scss +0 -3
  401. package/src/app/core/componentes/footer/footer.component.ts +0 -20
  402. package/src/app/core/componentes/formulariodinamico/formulariodinamico.component.html +0 -267
  403. package/src/app/core/componentes/formulariodinamico/formulariodinamico.component.scss +0 -21
  404. package/src/app/core/componentes/formulariodinamico/formulariodinamico.component.ts +0 -275
  405. package/src/app/core/componentes/formulariodinamico/objetosformulario/CampoFormulario.ts +0 -118
  406. package/src/app/core/componentes/formulariodinamico/objetosformulario/CampoFormularioCons.ts +0 -76
  407. package/src/app/core/componentes/formulariodinamico/objetosformulario/CampoFormularioNuevo.ts +0 -67
  408. package/src/app/core/componentes/formulariodinamico/objetosformulario/HashDirective.ts +0 -11
  409. package/src/app/core/componentes/inicio-component/inicio-component.component.html +0 -29
  410. package/src/app/core/componentes/inicio-component/inicio-component.component.scss +0 -69
  411. package/src/app/core/componentes/inicio-component/inicio-component.component.ts +0 -65
  412. package/src/app/core/componentes/menu/menu.component.html +0 -13
  413. package/src/app/core/componentes/menu/menu.component.scss +0 -36
  414. package/src/app/core/componentes/menu/menu.component.ts +0 -35
  415. package/src/app/core/componentes/tabla-general/tabla-general.component.html +0 -90
  416. package/src/app/core/componentes/tabla-general/tabla-general.component.scss +0 -0
  417. package/src/app/core/componentes/tabla-general/tabla-general.component.ts +0 -96
  418. package/src/app/core/core.module.ts +0 -22
  419. package/src/app/core/errores/authentication.error.ts +0 -6
  420. package/src/app/core/modelos/error-response.model.ts +0 -9
  421. package/src/app/core/modelos/table-column.model.ts +0 -10
  422. package/src/app/core/modelos/user.model.ts +0 -6
  423. package/src/app/core/plantilla-general/plantilla-general.template.html +0 -139
  424. package/src/app/core/plantilla-general/plantilla-general.template.scss +0 -37
  425. package/src/app/core/plantilla-general/plantilla-general.template.ts +0 -233
  426. package/src/app/core/servicios/auth.service.ts +0 -189
  427. package/src/app/core/servicios/cargar-control-funcionalidad.service.ts +0 -49
  428. package/src/app/core/servicios/data-exporter-table.utils.ts +0 -78
  429. package/src/app/core/servicios/error-interceptor.service.ts +0 -208
  430. package/src/app/core/servicios/guardias/auth.guard.ts +0 -51
  431. package/src/app/core/servicios/guardias/publico.guard.ts +0 -26
  432. package/src/app/core/servicios/interceptores/loading-interceptor.ts +0 -37
  433. package/src/app/core/servicios/interceptores/token-interceptor.service.ts +0 -177
  434. package/src/app/core/servicios/loading.service.ts +0 -48
  435. package/src/app/core/servicios/menu.service.ts +0 -153
  436. package/src/app/core/servicios/spinner-service.ts +0 -18
  437. package/src/app/core/servicios/storage.service.ts +0 -68
  438. package/src/app/core/servicios/template.service.ts +0 -91
  439. package/src/app/core/servicios/toast.service.ts +0 -114
  440. package/src/app/core/servicios/utils.service.ts +0 -362
  441. package/src/app/core/sharedlib.module.ts +0 -11
  442. package/src/app/core/utilidades/color.util.ts +0 -197
  443. package/src/app/layout/app.breadcrumb.component.html +0 -20
  444. package/src/app/layout/app.breadcrumb.component.ts +0 -78
  445. package/src/app/layout/app.footer.component.html +0 -18
  446. package/src/app/layout/app.footer.component.ts +0 -15
  447. package/src/app/layout/app.layout.component.html +0 -20
  448. package/src/app/layout/app.layout.component.ts +0 -201
  449. package/src/app/layout/app.layout.module.ts +0 -9
  450. package/src/app/layout/app.menu.component.html +0 -6
  451. package/src/app/layout/app.menu.component.ts +0 -51
  452. package/src/app/layout/app.menu.service.ts +0 -23
  453. package/src/app/layout/app.menuitem.component.ts +0 -252
  454. package/src/app/layout/app.menuprofile.component.html +0 -35
  455. package/src/app/layout/app.menuprofile.component.ts +0 -60
  456. package/src/app/layout/app.rightmenu.component.html +0 -72
  457. package/src/app/layout/app.rightmenu.component.ts +0 -24
  458. package/src/app/layout/app.sidebar.component.html +0 -40
  459. package/src/app/layout/app.sidebar.component.ts +0 -81
  460. package/src/app/layout/app.topbar.component.html +0 -214
  461. package/src/app/layout/app.topbar.component.ts +0 -335
  462. package/src/app/layout/config/app.config.component.html +0 -125
  463. package/src/app/layout/config/app.config.component.ts +0 -206
  464. package/src/app/layout/config/app.config.module.ts +0 -11
  465. package/src/app/layout/service/app.layout.service.ts +0 -191
  466. package/src/app/publico/pages/login/login.page.html +0 -53
  467. package/src/app/publico/pages/login/login.page.scss +0 -166
  468. package/src/app/publico/pages/login/login.page.ts +0 -128
  469. package/src/app/publico/pages/not-found/not-found.page.html +0 -35
  470. package/src/app/publico/pages/not-found/not-found.page.scss +0 -2
  471. package/src/app/publico/pages/not-found/not-found.page.ts +0 -46
  472. package/src/app/publico/pages/seleccion-rol/seleccion-rol.component.html +0 -58
  473. package/src/app/publico/pages/seleccion-rol/seleccion-rol.component.scss +0 -49
  474. package/src/app/publico/pages/seleccion-rol/seleccion-rol.component.ts +0 -176
  475. package/src/app/publico/pages/timeout/timeout.page.html +0 -24
  476. package/src/app/publico/pages/timeout/timeout.page.scss +0 -2
  477. package/src/app/publico/pages/timeout/timeout.page.ts +0 -18
  478. package/src/app/seguridad/constantes/ConstantesGenerales.ts +0 -30
  479. package/src/app/seguridad/constantes/ReporteEntradaConstantes.ts +0 -18
  480. package/src/app/seguridad/constantes/ReporteFuenteConstantes.ts +0 -13
  481. package/src/app/seguridad/modelos/AplicacionModel.ts +0 -11
  482. package/src/app/seguridad/modelos/ArchivoPortalModel.ts +0 -16
  483. package/src/app/seguridad/modelos/AtributoPuntoModel.ts +0 -9
  484. package/src/app/seguridad/modelos/AtributoSSOportalModel.ts +0 -22
  485. package/src/app/seguridad/modelos/CargueLineaModel.ts +0 -17
  486. package/src/app/seguridad/modelos/ColoresRGB.ts +0 -17
  487. package/src/app/seguridad/modelos/ColumnaFuenteModel.ts +0 -9
  488. package/src/app/seguridad/modelos/ComplementoModel.ts +0 -10
  489. package/src/app/seguridad/modelos/ComponentePaginaModel.ts +0 -22
  490. package/src/app/seguridad/modelos/ConexionModel.ts +0 -15
  491. package/src/app/seguridad/modelos/ControlFuncionModel.ts +0 -10
  492. package/src/app/seguridad/modelos/CorreoModel.ts +0 -45
  493. package/src/app/seguridad/modelos/CorreoWSModel.ts +0 -49
  494. package/src/app/seguridad/modelos/CruceRecursoPuntoModel.ts +0 -14
  495. package/src/app/seguridad/modelos/EmpresaModel.ts +0 -25
  496. package/src/app/seguridad/modelos/EmpresaSeguridadModel.ts +0 -19
  497. package/src/app/seguridad/modelos/EtiquetaModel.ts +0 -4
  498. package/src/app/seguridad/modelos/Etiquetas.ts +0 -14
  499. package/src/app/seguridad/modelos/FuenteCampoAtributoModel.ts +0 -21
  500. package/src/app/seguridad/modelos/FuenteDato.ts +0 -19
  501. package/src/app/seguridad/modelos/FuenteEntradaModel.ts +0 -9
  502. package/src/app/seguridad/modelos/FuenteLineaServicioModel.ts +0 -19
  503. package/src/app/seguridad/modelos/FuenteProcesoGeneralModel.ts +0 -14
  504. package/src/app/seguridad/modelos/FuncionalidadModel.ts +0 -12
  505. package/src/app/seguridad/modelos/GeneralModel.ts +0 -16
  506. package/src/app/seguridad/modelos/GrupoControlFuncionModel.ts +0 -12
  507. package/src/app/seguridad/modelos/GrupoFuenteModel.ts +0 -17
  508. package/src/app/seguridad/modelos/GrupoPermisoModel.ts +0 -16
  509. package/src/app/seguridad/modelos/ListaServicioModel.ts +0 -18
  510. package/src/app/seguridad/modelos/LlaveForaneaModel.ts +0 -6
  511. package/src/app/seguridad/modelos/LoginModel.ts +0 -19
  512. package/src/app/seguridad/modelos/MensajeSistemaModel.ts +0 -10
  513. package/src/app/seguridad/modelos/ModulosModel.ts +0 -17
  514. package/src/app/seguridad/modelos/PaginaPortalModel.ts +0 -23
  515. package/src/app/seguridad/modelos/ParametroComponenteModel.ts +0 -9
  516. package/src/app/seguridad/modelos/ParametrosGeneralModel.ts +0 -16
  517. package/src/app/seguridad/modelos/PermisoFuncionModel.ts +0 -11
  518. package/src/app/seguridad/modelos/PermisocontenidoModel.ts +0 -20
  519. package/src/app/seguridad/modelos/PreguntaSeguridadModel.ts +0 -9
  520. package/src/app/seguridad/modelos/PropiedadModel.ts +0 -12
  521. package/src/app/seguridad/modelos/PublicacionWebModel.ts +0 -29
  522. package/src/app/seguridad/modelos/PuntoProcesoModel.ts +0 -7
  523. package/src/app/seguridad/modelos/RecursoPunto.ts +0 -13
  524. package/src/app/seguridad/modelos/RecursoPuntoModel.ts +0 -13
  525. package/src/app/seguridad/modelos/ReporteBanda.ts +0 -9
  526. package/src/app/seguridad/modelos/ReporteColumna.ts +0 -33
  527. package/src/app/seguridad/modelos/ReporteColumnario.ts +0 -82
  528. package/src/app/seguridad/modelos/ReporteColumnarioMarcador.ts +0 -31
  529. package/src/app/seguridad/modelos/ReporteMarcador.ts +0 -40
  530. package/src/app/seguridad/modelos/ReporteSoporte.ts +0 -10
  531. package/src/app/seguridad/modelos/ReporteTabla.ts +0 -14
  532. package/src/app/seguridad/modelos/RespuestaModel.ts +0 -10
  533. package/src/app/seguridad/modelos/ServidorCorreoModel.ts +0 -31
  534. package/src/app/seguridad/modelos/SistemaMensajeModel.ts +0 -11
  535. package/src/app/seguridad/modelos/SitioPortalModel.ts +0 -29
  536. package/src/app/seguridad/modelos/TablaFromModel.ts +0 -5
  537. package/src/app/seguridad/modelos/TareasModel.ts +0 -54
  538. package/src/app/seguridad/modelos/TextoModel.ts +0 -11
  539. package/src/app/seguridad/modelos/TipoEtiqueta.ts +0 -8
  540. package/src/app/seguridad/modelos/UnionModel.ts +0 -14
  541. package/src/app/seguridad/modelos/UsuariogrupoModel.ts +0 -27
  542. package/src/app/seguridad/modelos/aplicacion-propiedad-model.ts +0 -16
  543. package/src/app/seguridad/modelos/contenidoCorreoModel.ts +0 -13
  544. package/src/app/shared/componentes/input-helper-seleccion-plantilla/input-helper-seleccion-plantilla.component.html +0 -47
  545. package/src/app/shared/componentes/input-helper-seleccion-plantilla/input-helper-seleccion-plantilla.component.scss +0 -8
  546. package/src/app/shared/componentes/input-helper-seleccion-plantilla/input-helper-seleccion-plantilla.component.ts +0 -144
  547. package/src/app/shared/servicios/cargar-archivos.service.ts +0 -51
  548. package/src/app/shared/servicios/cargar-mapas.service.ts +0 -43
  549. package/src/app/shared/servicios/encriptado-basico.service.ts +0 -54
  550. package/src/app/shared/servicios/encriptador-simetrico.service.ts +0 -29
  551. package/src/app/shared/servicios/general.service.ts +0 -124
  552. package/src/app/shared/servicios/parametros-navegacion.service.ts +0 -20
  553. package/src/app/shared/servicios/plantillas.service.ts +0 -22
  554. package/src/app/shared/servicios/tarea.service.ts +0 -71
  555. package/src/app/shared/utilidades/translate-loader.util.ts +0 -44
  556. package/src/app/webcommon/pages/cargue-plantilla/cargue-plantilla-general/cargue-plantilla-general.component.html +0 -167
  557. package/src/app/webcommon/pages/cargue-plantilla/cargue-plantilla-general/cargue-plantilla-general.component.scss +0 -11
  558. package/src/app/webcommon/pages/cargue-plantilla/cargue-plantilla-general/cargue-plantilla-general.component.ts +0 -425
  559. package/src/app/webcommon/pages/ejecucion-reporte/detalle-campo-reporte/detalle-campo-reporte.component.html +0 -87
  560. package/src/app/webcommon/pages/ejecucion-reporte/detalle-campo-reporte/detalle-campo-reporte.component.scss +0 -0
  561. package/src/app/webcommon/pages/ejecucion-reporte/detalle-campo-reporte/detalle-campo-reporte.component.ts +0 -189
  562. package/src/app/webcommon/pages/ejecucion-reporte/detalle-distribucion-reporte/detalle-distribucion-reporte.component.html +0 -117
  563. package/src/app/webcommon/pages/ejecucion-reporte/detalle-distribucion-reporte/detalle-distribucion-reporte.component.scss +0 -0
  564. package/src/app/webcommon/pages/ejecucion-reporte/detalle-distribucion-reporte/detalle-distribucion-reporte.component.ts +0 -87
  565. package/src/app/webcommon/pages/ejecucion-reporte/detalle-ejecucion-reporte/detalle-ejecucion-reporte.page.html +0 -158
  566. package/src/app/webcommon/pages/ejecucion-reporte/detalle-ejecucion-reporte/detalle-ejecucion-reporte.page.scss +0 -6
  567. package/src/app/webcommon/pages/ejecucion-reporte/detalle-ejecucion-reporte/detalle-ejecucion-reporte.page.ts +0 -345
  568. package/src/app/webcommon/pages/ejecucion-reporte/detalle-entrada-reporte/detalle-entrada-reporte.component.html +0 -131
  569. package/src/app/webcommon/pages/ejecucion-reporte/detalle-entrada-reporte/detalle-entrada-reporte.component.scss +0 -0
  570. package/src/app/webcommon/pages/ejecucion-reporte/detalle-entrada-reporte/detalle-entrada-reporte.component.ts +0 -198
  571. package/src/app/webcommon/pages/ejecucion-reporte/detalle-punto-proceso-reporte/detalle-punto-proceso-reporte.component.html +0 -206
  572. package/src/app/webcommon/pages/ejecucion-reporte/detalle-punto-proceso-reporte/detalle-punto-proceso-reporte.component.scss +0 -3
  573. package/src/app/webcommon/pages/ejecucion-reporte/detalle-punto-proceso-reporte/detalle-punto-proceso-reporte.component.ts +0 -329
  574. package/src/app/webcommon/pages/ejecucion-reporte/detalle-tipo-reporte/detalle-tipo-reporte.component.html +0 -2114
  575. package/src/app/webcommon/pages/ejecucion-reporte/detalle-tipo-reporte/detalle-tipo-reporte.component.scss +0 -241
  576. package/src/app/webcommon/pages/ejecucion-reporte/detalle-tipo-reporte/detalle-tipo-reporte.component.ts +0 -1677
  577. package/src/app/webcommon/pages/ejecucion-reporte/listado-ejecucion-reporte/listado-ejecucion-reporte.page.html +0 -33
  578. package/src/app/webcommon/pages/ejecucion-reporte/listado-ejecucion-reporte/listado-ejecucion-reporte.page.scss +0 -0
  579. package/src/app/webcommon/pages/ejecucion-reporte/listado-ejecucion-reporte/listado-ejecucion-reporte.page.ts +0 -96
  580. package/src/app/webcommon/pages/ejecucion-reporte-externo/listado-ejecucion-reporte-externo/listado-ejecucion-reporte-externo.component.html +0 -54
  581. package/src/app/webcommon/pages/ejecucion-reporte-externo/listado-ejecucion-reporte-externo/listado-ejecucion-reporte-externo.component.scss +0 -0
  582. package/src/app/webcommon/pages/ejecucion-reporte-externo/listado-ejecucion-reporte-externo/listado-ejecucion-reporte-externo.component.ts +0 -111
  583. package/src/app/webcommon/pages/fuente/importar-fuente-con/importar-fuente-con.component.html +0 -394
  584. package/src/app/webcommon/pages/fuente/importar-fuente-con/importar-fuente-con.component.scss +0 -10
  585. package/src/app/webcommon/pages/fuente/importar-fuente-con/importar-fuente-con.component.ts +0 -599
  586. package/src/app/webcommon/pages/fuente/importar-fuente-general/importar-fuente-general.component.html +0 -130
  587. package/src/app/webcommon/pages/fuente/importar-fuente-general/importar-fuente-general.component.scss +0 -0
  588. package/src/app/webcommon/pages/fuente/importar-fuente-general/importar-fuente-general.component.ts +0 -172
  589. package/src/app/webcommon/pages/fuente-reporte/fuente-reporte.component.html +0 -376
  590. package/src/app/webcommon/pages/fuente-reporte/fuente-reporte.component.scss +0 -5
  591. package/src/app/webcommon/pages/fuente-reporte/fuente-reporte.component.ts +0 -749
  592. package/src/app/webcommon/pages/fuenteGeneral/fuente-general-servicio/fuente-general-servicio.component.html +0 -145
  593. package/src/app/webcommon/pages/fuenteGeneral/fuente-general-servicio/fuente-general-servicio.component.scss +0 -0
  594. package/src/app/webcommon/pages/fuenteGeneral/fuente-general-servicio/fuente-general-servicio.component.ts +0 -302
  595. package/src/app/webcommon/pages/fuenteGeneral/listado-fuente-general/listado-fuente-general.page.html +0 -19
  596. package/src/app/webcommon/pages/fuenteGeneral/listado-fuente-general/listado-fuente-general.page.scss +0 -0
  597. package/src/app/webcommon/pages/fuenteGeneral/listado-fuente-general/listado-fuente-general.page.ts +0 -89
  598. package/src/app/webcommon/pages/fuenteGeneral/mantenimiento-fuente-general/mantenimiento-fuente-general.page.html +0 -714
  599. package/src/app/webcommon/pages/fuenteGeneral/mantenimiento-fuente-general/mantenimiento-fuente-general.page.scss +0 -0
  600. package/src/app/webcommon/pages/fuenteGeneral/mantenimiento-fuente-general/mantenimiento-fuente-general.page.ts +0 -688
  601. package/src/app/webcommon/pipes/dashboard.pipe.ts +0 -79
  602. package/src/app/webcommon/pipes/fuente.pipe.ts +0 -207
  603. package/src/app/webcommon/pipes/general.pipe.ts +0 -1043
  604. package/src/app/webcommon/pipes/reporte-columnario.pipe.ts +0 -101
  605. package/src/app/webcommon/pipes/reporte-fuente.pipe.ts +0 -306
  606. package/src/app/webcommon/pipes/sara-general.pipe.ts +0 -289
  607. package/src/app/webcommon/popups/popup-campos-fuente-general/popup-campos-fuente-general.component.html +0 -90
  608. package/src/app/webcommon/popups/popup-campos-fuente-general/popup-campos-fuente-general.component.scss +0 -0
  609. package/src/app/webcommon/popups/popup-campos-fuente-general/popup-campos-fuente-general.component.ts +0 -262
  610. package/src/app/webcommon/popups/popup-convertir-plantillas/popup-convertir-plantillas.component.html +0 -50
  611. package/src/app/webcommon/popups/popup-convertir-plantillas/popup-convertir-plantillas.component.scss +0 -0
  612. package/src/app/webcommon/popups/popup-convertir-plantillas/popup-convertir-plantillas.component.ts +0 -135
  613. package/src/app/webcommon/popups/popup-punto-proceso/popup-punto-proceso.component.html +0 -41
  614. package/src/app/webcommon/popups/popup-punto-proceso/popup-punto-proceso.component.scss +0 -0
  615. package/src/app/webcommon/popups/popup-punto-proceso/popup-punto-proceso.component.ts +0 -283
  616. package/src/app/webcommon/popups/popup-recurso/popup-recurso.component.html +0 -179
  617. package/src/app/webcommon/popups/popup-recurso/popup-recurso.component.scss +0 -3
  618. package/src/app/webcommon/popups/popup-recurso/popup-recurso.component.ts +0 -266
  619. package/src/app/webcommon/popups/popup-reporte/popup-reporte.component.html +0 -261
  620. package/src/app/webcommon/popups/popup-reporte/popup-reporte.component.scss +0 -13
  621. package/src/app/webcommon/popups/popup-reporte/popup-reporte.component.ts +0 -519
  622. package/src/app/webcommon/popups/popup-sentencia/popup-sentencia.component.html +0 -10
  623. package/src/app/webcommon/popups/popup-sentencia/popup-sentencia.component.scss +0 -5
  624. package/src/app/webcommon/popups/popup-sentencia/popup-sentencia.component.ts +0 -58
  625. package/src/app/webcommon/popups/popup-tablas-fuente/popup-tablas-fuente.component.html +0 -71
  626. package/src/app/webcommon/popups/popup-tablas-fuente/popup-tablas-fuente.component.scss +0 -0
  627. package/src/app/webcommon/popups/popup-tablas-fuente/popup-tablas-fuente.component.ts +0 -151
  628. package/src/app/webcommon/popups/punto-proceso-comp/punto-proceso-comp.component.html +0 -11
  629. package/src/app/webcommon/popups/punto-proceso-comp/punto-proceso-comp.component.scss +0 -0
  630. package/src/app/webcommon/popups/punto-proceso-comp/punto-proceso-comp.component.ts +0 -82
  631. package/src/app/webcommon/services/carguelinea.service.ts +0 -72
  632. package/src/app/webcommon/services/dashboard.service.ts +0 -258
  633. package/src/app/webcommon/services/ejecucionreporte.service.ts +0 -160
  634. package/src/app/webcommon/services/fechaUtils.service.ts +0 -117
  635. package/src/app/webcommon/services/fuentegeneral.service.ts +0 -74
  636. package/src/app/webcommon/services/homologacion.service.ts +0 -49
  637. package/src/app/webcommon/services/plantillas.service.ts +0 -165
  638. package/src/app/webcommon/services/reportes.service.ts +0 -133
  639. package/src/app/webcommon/webcommon.module.ts +0 -11
  640. package/src/environments/environment.prod.ts +0 -3
  641. package/src/environments/environment.ts +0 -25
  642. package/src/favicon.ico +0 -0
  643. package/src/index.html +0 -14
  644. package/src/main.ts +0 -12
  645. package/src/polyfills.ts +0 -53
  646. package/src/test.ts +0 -14
  647. package/tsconfig.app.json +0 -15
  648. package/tsconfig.json +0 -35
  649. package/tsconfig.spec.json +0 -18
@@ -0,0 +1,515 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import { TranslateModule } from '@ngx-translate/core';
3
+ import { GeneralModel } from '../../../seguridad/modelos/GeneralModel';
4
+ import { ConfirmationService, MessageService } from 'primeng/api';
5
+ import { ReporteFuenteModel } from '../../../seguridad/modelos/ReporteFuenteModel';
6
+ import { DialogModule } from 'primeng/dialog';
7
+ import { ConfirmPopupModule } from 'primeng/confirmpopup';
8
+ import { AccordionModule } from 'primeng/accordion';
9
+ import { TableModule } from 'primeng/table';
10
+ import { CommonModule, DatePipe } from '@angular/common';
11
+ import { FieldsetModule } from 'primeng/fieldset';
12
+ import { InputNumberModule } from 'primeng/inputnumber';
13
+ import { InputTextModule } from 'primeng/inputtext';
14
+ import { DropdownModule } from 'primeng/dropdown';
15
+ import { CalendarModule } from 'primeng/calendar';
16
+ import { RadioButtonModule } from 'primeng/radiobutton';
17
+ import { PopupSentenciaComponent } from '../popup-sentencia/popup-sentencia.component';
18
+ import { FormsModule } from '@angular/forms';
19
+ import { FloatLabelModule } from 'primeng/floatlabel';
20
+ import * as i0 from "@angular/core";
21
+ import * as i1 from "../../../shared/servicios/general.service";
22
+ import * as i2 from "../../services/ejecucionreporte.service";
23
+ import * as i3 from "primeng/api";
24
+ import * as i4 from "../../../core/servicios/toast.service";
25
+ import * as i5 from "../../../core/servicios/auth.service";
26
+ import * as i6 from "@ngx-translate/core";
27
+ import * as i7 from "../../../shared/servicios/cargar-archivos.service";
28
+ import * as i8 from "../../../core/servicios/utils.service";
29
+ import * as i9 from "../../../core/servicios/cargar-control-funcionalidad.service";
30
+ import * as i10 from "../../../shared/servicios/encriptado-basico.service";
31
+ import * as i11 from "../../pipes/reporte-fuente.pipe";
32
+ import * as i12 from "../../pipes/general.pipe";
33
+ import * as i13 from "@angular/common";
34
+ import * as i14 from "primeng/dialog";
35
+ import * as i15 from "primeng/confirmpopup";
36
+ import * as i16 from "primeng/accordion";
37
+ import * as i17 from "primeng/table";
38
+ import * as i18 from "primeng/fieldset";
39
+ import * as i19 from "primeng/inputnumber";
40
+ import * as i20 from "primeng/inputtext";
41
+ import * as i21 from "primeng/dropdown";
42
+ import * as i22 from "primeng/calendar";
43
+ import * as i23 from "primeng/button";
44
+ import * as i24 from "primeng/radiobutton";
45
+ import * as i25 from "@angular/forms";
46
+ import * as i26 from "primeng/floatlabel";
47
+ export class PopupReporteComponent {
48
+ generalService;
49
+ ejecucionReporteService;
50
+ confirmationService;
51
+ notificacionService;
52
+ authService;
53
+ translateService;
54
+ cargarArchivoService;
55
+ utilsService;
56
+ controlFuncionalidad;
57
+ encriptadoBasico;
58
+ reporteFuentePipe;
59
+ generalPipe;
60
+ cargarArchivo;
61
+ encriptadorArchivo;
62
+ mostrar = false;
63
+ aplicacion;
64
+ reporte = new ReporteFuenteModel;
65
+ entradasPuntoProceso = [];
66
+ regresar = new EventEmitter();
67
+ panel = 'entrada';
68
+ operacion;
69
+ listaEntrada = [];
70
+ listaSegundoPlano = [];
71
+ parametros = [];
72
+ elementoBorrar = {};
73
+ generaciones = [];
74
+ operaciones = [];
75
+ mostrarOtraSeleccion;
76
+ mostrarArchivosSoporte;
77
+ mostrarConsultaCasoError;
78
+ correo;
79
+ tipoReporte;
80
+ soporteBase;
81
+ tipoArchivo;
82
+ bloquearCorreo;
83
+ mapaTipoArchivos;
84
+ listadoArchivoSoporte = [];
85
+ mostrarPopupSentencia;
86
+ items;
87
+ vistaVisualizar;
88
+ paginator = { rows: 2, totalRecords: 0 };
89
+ mostrarParametros;
90
+ mostrarQueDeseaHacer;
91
+ columnas = [];
92
+ listaRegistro = [];
93
+ existeJasper = false;
94
+ constructor(generalService, ejecucionReporteService, confirmationService, notificacionService, authService, translateService, cargarArchivoService, utilsService, controlFuncionalidad, encriptadoBasico, reporteFuentePipe, generalPipe, cargarArchivo, encriptadorArchivo) {
95
+ this.generalService = generalService;
96
+ this.ejecucionReporteService = ejecucionReporteService;
97
+ this.confirmationService = confirmationService;
98
+ this.notificacionService = notificacionService;
99
+ this.authService = authService;
100
+ this.translateService = translateService;
101
+ this.cargarArchivoService = cargarArchivoService;
102
+ this.utilsService = utilsService;
103
+ this.controlFuncionalidad = controlFuncionalidad;
104
+ this.encriptadoBasico = encriptadoBasico;
105
+ this.reporteFuentePipe = reporteFuentePipe;
106
+ this.generalPipe = generalPipe;
107
+ this.cargarArchivo = cargarArchivo;
108
+ this.encriptadorArchivo = encriptadorArchivo;
109
+ }
110
+ ngOnInit() {
111
+ this.mapaTipoArchivos = this.reporteFuentePipe.MAPA_TIPO_ARCHIVOS;
112
+ this.aplicacion = this.authService.getTokenKey('aplicacion');
113
+ }
114
+ async mostrarPopup() {
115
+ this.panel = 'entrada';
116
+ this.mostrarQueDeseaHacer = false;
117
+ this.tipoReporte = null;
118
+ this.mostrarConsultaCasoError = this.validarControlFuncionalidad('reporte:versentenciaerror');
119
+ this.operacion = null;
120
+ this.elementoBorrar = {};
121
+ this.listaSegundoPlano = [];
122
+ this.listaRegistro = [];
123
+ this.columnas = [];
124
+ this.existeJasper = false;
125
+ if (this.reporte.llave) {
126
+ var resultado = await this.ejecucionReporteService.getDatosEjecucionReporte({ llave: this.reporte.llave }).toPromise();
127
+ this.reporte = resultado.reporte;
128
+ delete this.reporte['alias'];
129
+ this.cargarListaEntrada();
130
+ this.traerSegundoPlano();
131
+ this.cargarCorreo();
132
+ await this.validarExisteJasper();
133
+ await this.cargarGeneraciones();
134
+ this.cargarOperaciones();
135
+ this.utilsService.resizeWindowIFrame();
136
+ }
137
+ this.utilsService.resizeWindowIFrame();
138
+ }
139
+ cargarMenu() {
140
+ this.items = [
141
+ {
142
+ label: this.translateService.instant('ejecucion'),
143
+ icon: 'glyphicons glyphicons-plus-sign',
144
+ command: (event) => {
145
+ this.vistaVisualizar = 'entrada';
146
+ },
147
+ },
148
+ {
149
+ label: this.translateService.instant('segundoplano'),
150
+ icon: 'glyphicons glyphicons-file-minus',
151
+ command: (event) => {
152
+ this.vistaVisualizar = 'segundoplano';
153
+ },
154
+ visible: this.listaSegundoPlano.length > 0,
155
+ }
156
+ ];
157
+ }
158
+ async cargarGeneraciones() {
159
+ this.generaciones = [];
160
+ if (this.utilsService.isNotBlank(this.reporte.tituloParametro) && this.existeJasper) {
161
+ this.generaciones.push({ value: this.reporteFuentePipe.GENERACION_JASPERDINAMICO,
162
+ label: this.reporteFuentePipe.DESC_GENERACION_JASPERDINAMICO });
163
+ }
164
+ if (this.utilsService.isNotBlank(this.reporte.jasperFijo) && this.utilsService.isNotBlank(this.reporte.modoFijo)) {
165
+ this.generaciones.push({ value: this.reporteFuentePipe.GENERACION_JASPERFIJO,
166
+ label: this.reporteFuentePipe.DESC_GENERACION_JASPERFIJO });
167
+ }
168
+ if (this.utilsService.isNotBlank(this.reporte.archivoTodo) && this.utilsService.isNotBlank(this.reporte.hojaExcel)) {
169
+ this.generaciones.push({ value: this.reporteFuentePipe.GENERACION_EXCEL,
170
+ label: this.reporteFuentePipe.DESC_GENERACION_EXCEL });
171
+ }
172
+ if (this.utilsService.isNotBlank(this.reporte.archivoIndividual) || this.reporte.unicoArchivo == 'N') {
173
+ this.generaciones.push({ value: this.reporteFuentePipe.GENERACION_PLANTILLA,
174
+ label: this.reporteFuentePipe.DESC_GENERACION_PLANTILLA });
175
+ }
176
+ if (this.utilsService.isNotBlank(this.reporte.separador)) {
177
+ this.generaciones.push({ value: this.reporteFuentePipe.GENERACION_ARCHIVOPLANO,
178
+ label: this.reporteFuentePipe.DESC_GENERACION_ARCHIVOPLANO });
179
+ }
180
+ if (this.utilsService.isNotBlank(this.reporte.nombreTabla)) {
181
+ this.generaciones.push({ value: this.reporteFuentePipe.GENERACION_TABLA,
182
+ label: this.reporteFuentePipe.DESC_GENERACION_TABLA });
183
+ }
184
+ if (this.utilsService.isNotBlank(this.reporte.tagEncabezado) && this.utilsService.isNotBlank(this.reporte.estructuraRegistro)) {
185
+ this.generaciones.push({ value: this.reporteFuentePipe.GENERACION_XML,
186
+ label: this.reporteFuentePipe.DESC_GENERACION_XML });
187
+ }
188
+ if (this.utilsService.isNotBlank(this.reporte.archivoExcelColumnario) && this.utilsService.isNotBlank(this.reporte.hojaExcelColumnario)) {
189
+ this.generaciones.push({ value: this.reporteFuentePipe.GENERACION_COLUMNARIO,
190
+ label: this.reporteFuentePipe.DESC_GENERACION_COLUMNARIO });
191
+ }
192
+ }
193
+ async validarExisteJasper() {
194
+ try {
195
+ var data = await this.cargarArchivo.descargarArchivo(this.encriptadorArchivo.encriptar('reportes/' + this.reporte.llave + '.jrxml'), 'ruta_plantillas', this.aplicacion).toPromise();
196
+ if (data) {
197
+ this.existeJasper = true;
198
+ }
199
+ }
200
+ catch (error) {
201
+ this.existeJasper = false;
202
+ }
203
+ }
204
+ cargarOperaciones() {
205
+ this.bloquearCorreo = true;
206
+ this.operaciones = [];
207
+ if (this.tipoReporte) {
208
+ if (this.tipoReporte != this.reporteFuentePipe.GENERACION_TABLA) {
209
+ this.operaciones.push({ value: this.reporteFuentePipe.OPERACION_DESCARGAR,
210
+ label: this.reporteFuentePipe.DESC_OPERACION_DESCARGAR });
211
+ if (this.validarControlFuncionalidad('reporte:enviocorreo')) {
212
+ this.bloquearCorreo = false;
213
+ }
214
+ this.operaciones.push({ value: this.reporteFuentePipe.OPERACION_ENVIARCORREO,
215
+ label: this.reporteFuentePipe.DESC_OPERACION_ENVIARCORREO });
216
+ if (this.reporteFuentePipe.MOMENTOS_SEGUNDO_PLANO == this.reporte.momento) {
217
+ this.operaciones.push({ value: this.reporteFuentePipe.OPERACION_SEGUNDOPLANO,
218
+ label: this.reporteFuentePipe.DESC_OPERACION_SEGUNDOPLANO });
219
+ }
220
+ if ((this.tipoReporte == this.reporteFuentePipe.GENERACION_JASPERFIJO && this.reporte.modoFijo == 'P')
221
+ || this.tipoReporte == this.reporteFuentePipe.GENERACION_PLANTILLA && this.reporte.descargarFuente != 'S') {
222
+ if (this.reporte.archivoHtml && this.reporte.campoEmail) {
223
+ this.operaciones.push({ value: this.reporteFuentePipe.OPERACION_ENVIOMASIVO,
224
+ label: this.reporteFuentePipe.DESC_OPERACION_ENVIOMASIVO });
225
+ }
226
+ if (this.reporte.publicacion && this.reporte.campoPublica) {
227
+ this.operaciones.push({ value: this.reporteFuentePipe.OPERACION_PUBLICAR,
228
+ label: this.reporteFuentePipe.DESC_OPERACION_PUBLICAR });
229
+ }
230
+ if (this.reporte.archivoHtml && this.reporte.campoEmail && this.reporte.publicacion && this.reporte.campoPublica) {
231
+ this.operaciones.push({ value: this.reporteFuentePipe.OPERACION_CORREOPUBLICAR,
232
+ label: this.reporteFuentePipe.DESC_OPERACION_CORREOPUBLICAR });
233
+ }
234
+ }
235
+ //pte proceso externo
236
+ }
237
+ }
238
+ }
239
+ cambioValorLista(event, parametro) {
240
+ if (event.value) {
241
+ let lista = event.value.split(':');
242
+ if (parametro.unionDTO.tipoDato == 'N') {
243
+ parametro.unionDTO.valor = parseInt(lista[0]);
244
+ }
245
+ else {
246
+ parametro.unionDTO.valor = lista[0];
247
+ }
248
+ }
249
+ this.utilsService.resizeWindowIFrame();
250
+ }
251
+ cambioSoporteBase(event) {
252
+ if (this.soporteBase == null) {
253
+ this.cargarOperaciones();
254
+ return;
255
+ }
256
+ this.generalService.queryForObject(new GeneralModel('ReporteSoporteDTO', null, false, { llaveTabla: this.soporteBase })).subscribe(archivoBase => {
257
+ if (archivoBase == null) {
258
+ return;
259
+ }
260
+ this.soporteBase = archivoBase.llaveTabla;
261
+ this.reporte.archivoIndividual = archivoBase.archivoIndividual;
262
+ this.cargarOperaciones();
263
+ this.utilsService.resizeWindowIFrame();
264
+ });
265
+ }
266
+ cargarCorreo() {
267
+ this.generalService.queryForObject(new GeneralModel('UsuarioDTO', null, true, { login: this.authService.getTokenKey('usuario') })).subscribe(data => {
268
+ this.correo = data.email;
269
+ });
270
+ }
271
+ cargarListaEntrada() {
272
+ this.mostrarParametros = false;
273
+ if (this.entradasPuntoProceso.length > 0) {
274
+ this.parametros = this.entradasPuntoProceso;
275
+ this.parametros.forEach(element => {
276
+ if (element.unionDTO.solicitar == 'S') {
277
+ this.mostrarParametros = true;
278
+ }
279
+ if (element.unionDTO.tipoDato == 'F' && element.unionDTO.valor != null) {
280
+ element.unionDTO.valor = new Date(element.unionDTO.valor);
281
+ }
282
+ });
283
+ this.utilsService.resizeWindowIFrame();
284
+ }
285
+ else {
286
+ this.ejecucionReporteService.obtenerListaEntradaEjecucion(this.reporte).subscribe(data => {
287
+ this.parametros = data;
288
+ this.parametros.forEach(element => {
289
+ if (element.unionDTO.solicitar == 'S') {
290
+ this.mostrarParametros = true;
291
+ }
292
+ if (element.unionDTO.tipoDato == 'F' && element.unionDTO.valor != null) {
293
+ element.unionDTO.valor = new Date(element.unionDTO.valor);
294
+ }
295
+ });
296
+ this.utilsService.resizeWindowIFrame();
297
+ });
298
+ }
299
+ }
300
+ traerSegundoPlano() {
301
+ let usuario = this.authService.getTokenKey('usuario');
302
+ this.generalService.queryForList(new GeneralModel('EjecucionReporteDTO', null, false, {
303
+ adicionado: usuario,
304
+ reporteFuente: this.reporte.llave
305
+ })).subscribe(data => {
306
+ this.listaSegundoPlano = data;
307
+ this.paginator.totalRecords = this.listaSegundoPlano.length;
308
+ });
309
+ }
310
+ verSegundoPlano(event) {
311
+ this.elementoBorrar = event.data;
312
+ this.elementoBorrar.fechaAdicionado = this.elementoBorrar.fechaAdicionado ? new Date(this.elementoBorrar.fechaAdicionado) : null;
313
+ this.elementoBorrar.inicia = this.elementoBorrar.inicia ? new Date(this.elementoBorrar.inicia) : null;
314
+ this.elementoBorrar.termina = this.elementoBorrar.termina ? new Date(this.elementoBorrar.termina) : null;
315
+ this.operacion = 'historico';
316
+ this.panel = 'resultado';
317
+ }
318
+ eliminarSegundoPlano(event) {
319
+ this.confirmationService.confirm({
320
+ target: event.target,
321
+ message: this.generalPipe.MENSAJE_ELIMINAR_CONFIRMAR,
322
+ acceptLabel: this.generalPipe.SI_DESC,
323
+ header: this.translateService.instant('confirmar'),
324
+ accept: () => {
325
+ this.ejecucionReporteService.eliminarEjecucionReporte(this.elementoBorrar).subscribe(data => {
326
+ this.notificacionService.showInfo(this.generalPipe.MENSAJE_ELIMINAR);
327
+ this.regresarSegundoPlano();
328
+ this.traerSegundoPlano();
329
+ });
330
+ }
331
+ });
332
+ }
333
+ descargarArchivo() {
334
+ this.cargarArchivoService.descargarArchivo(this.encriptadoBasico.encriptar(this.elementoBorrar.archivo)).subscribe(blob => {
335
+ const a = document.createElement('a');
336
+ const objectUrl = URL.createObjectURL(blob);
337
+ a.href = objectUrl;
338
+ let partes = this.elementoBorrar.archivo.split(".");
339
+ let extension = partes[partes.length - 1];
340
+ a.download = this.utilsService.generarLlave() + '.' + extension;
341
+ a.click();
342
+ URL.revokeObjectURL(objectUrl);
343
+ });
344
+ }
345
+ cambioTipoReporte(event) {
346
+ this.mostrarQueDeseaHacer = true;
347
+ if (this.tipoReporte == this.reporteFuentePipe.GENERACION_PLANTILLA && this.reporte.unicoArchivo == 'N') {
348
+ this.mostrarArchivosSoporte = true;
349
+ this.generalService.queryForList(new GeneralModel('ReporteSoporteDTO', null, false, {
350
+ reporteFuente: this.reporte.llave,
351
+ tipo: 'S'
352
+ })).subscribe(data => {
353
+ this.listadoArchivoSoporte = data;
354
+ });
355
+ }
356
+ else {
357
+ this.mostrarArchivosSoporte = false;
358
+ this.listadoArchivoSoporte = [];
359
+ this.tipoArchivo = null;
360
+ this.operacion = null;
361
+ this.cargarOperaciones();
362
+ //this.descargarArchivo = null;
363
+ }
364
+ }
365
+ cambioTipoArchivo(event) {
366
+ this.cargarOperaciones();
367
+ }
368
+ regresarSegundoPlano() {
369
+ this.elementoBorrar = {};
370
+ this.panel = 'entrada';
371
+ this.operacion = null;
372
+ }
373
+ ocultar() {
374
+ this.tipoReporte = null;
375
+ this.mostrar = false;
376
+ this.regresar.emit(false);
377
+ }
378
+ validarControlFuncionalidad(valor) {
379
+ return this.controlFuncionalidad.getControlFuncionalidad(valor);
380
+ }
381
+ sentencia() {
382
+ this.mostrarPopupSentencia = true;
383
+ }
384
+ regresarSentencia(event) {
385
+ this.mostrarPopupSentencia = false;
386
+ }
387
+ enviarSegundoPlano() {
388
+ let listaEntrada = [];
389
+ this.parametros.forEach(element => {
390
+ listaEntrada.push(element.unionDTO);
391
+ });
392
+ this.ejecucionReporteService.enviarSegundoPlano({
393
+ reporte: this.reporte,
394
+ parametros: listaEntrada,
395
+ tipoReporte: this.tipoReporte,
396
+ operacion: this.operacion,
397
+ correo: this.correo,
398
+ }).subscribe(data => {
399
+ this.notificacionService.showInfo(data.mensaje);
400
+ });
401
+ }
402
+ descargarReporte() {
403
+ if ('F' == this.tipoReporte) {
404
+ this.reporte.tipoArchivo = this.tipoArchivo;
405
+ }
406
+ let listaEntrada = [];
407
+ this.parametros.forEach(element => {
408
+ listaEntrada.push(element.unionDTO);
409
+ });
410
+ this.ejecucionReporteService.descargarReporte({
411
+ reporte: this.reporte,
412
+ parametros: listaEntrada,
413
+ tipoReporte: this.tipoReporte,
414
+ operacion: this.operacion,
415
+ correo: this.correo,
416
+ endpointGeneradorReportes: ''
417
+ }).subscribe({
418
+ next: data => {
419
+ console.log(data);
420
+ this.notificacionService.showInfo(data.mensaje);
421
+ if (!data.archivo) {
422
+ return;
423
+ }
424
+ const decodedData = atob(data.archivo);
425
+ const byteNumbers = new Array(decodedData.length);
426
+ for (let i = 0; i < decodedData.length; i++) {
427
+ byteNumbers[i] = decodedData.charCodeAt(i);
428
+ }
429
+ const byteArray = new Uint8Array(byteNumbers);
430
+ // Crea un objeto Blob con los bytes decodificados y el tipo MIME del archivo
431
+ const blob = new Blob([byteArray], { type: data.mime });
432
+ // Crea una URL del objeto Blob
433
+ const url = URL.createObjectURL(blob);
434
+ // Crea un enlace de descarga y haz clic en él para iniciar la descarga
435
+ const link = document.createElement('a');
436
+ link.href = url;
437
+ link.download = data.nombreArchivo + data.extension;
438
+ document.body.appendChild(link);
439
+ link.click();
440
+ // Limpia la URL creada
441
+ URL.revokeObjectURL(url);
442
+ }
443
+ });
444
+ }
445
+ descargarReporteSinHilo() {
446
+ let listaEntrada = [];
447
+ this.parametros.forEach(element => {
448
+ listaEntrada.push(element.unionDTO);
449
+ });
450
+ this.ejecucionReporteService.descargarReporte({
451
+ next: data => {
452
+ this.notificacionService.showInfo(data.mensaje);
453
+ const decodedData = atob(data.archivo);
454
+ const byteNumbers = new Array(decodedData.length);
455
+ for (let i = 0; i < decodedData.length; i++) {
456
+ byteNumbers[i] = decodedData.charCodeAt(i);
457
+ }
458
+ const byteArray = new Uint8Array(byteNumbers);
459
+ // Crea un objeto Blob con los bytes decodificados y el tipo MIME del archivo
460
+ const blob = new Blob([byteArray], { type: data.mime });
461
+ // Crea una URL del objeto Blob
462
+ const url = URL.createObjectURL(blob);
463
+ // Crea un enlace de descarga y haz clic en él para iniciar la descarga
464
+ const link = document.createElement('a');
465
+ link.href = url;
466
+ link.download = data.nombreArchivo + '.' + data.extension;
467
+ document.body.appendChild(link);
468
+ link.click();
469
+ // Limpia la URL creada
470
+ URL.revokeObjectURL(url);
471
+ },
472
+ error: err => {
473
+ this.notificacionService.showError(JSON.stringify(err.error.mensajeEtiqueta));
474
+ }
475
+ });
476
+ }
477
+ generarTabla() {
478
+ this.panel = 'resultado';
479
+ let listaEntrada = [];
480
+ this.columnas = [];
481
+ this.parametros.forEach(element => {
482
+ listaEntrada.push(element.unionDTO);
483
+ });
484
+ this.ejecucionReporteService.generarTabla({ reporte: this.reporte, parametros: listaEntrada }).subscribe(data => {
485
+ var columna;
486
+ data.columnas.forEach(element => {
487
+ columna = {
488
+ field: element.nombre.toLowerCase(),
489
+ header: element.nombre,
490
+ width: 300,
491
+ canOrder: true,
492
+ };
493
+ this.columnas.push(columna);
494
+ });
495
+ this.listaRegistro = data.listaRegistro;
496
+ });
497
+ }
498
+ 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 });
499
+ 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=\"col-md-12\">\r\n <div class=\"p-fluid p-formgrid grid text-xs\">\r\n <div class=\"field col-12 md:col-6 lg:col-3 align-items-center mb-0\" *ngFor=\"let valor of generaciones\">\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=\"col-md-12\">\r\n <div class=\"p-fluid p-formgrid grid text-xs\">\r\n <div class=\"field col-12 md:col-6 lg:col-3 align-items-center mb-0\" *ngFor=\"let valor of mapaTipoArchivos\">\r\n <div class=\"field-radiobutton\">\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=\"col-md-12\">\r\n <div class=\"p-fluid p-formgrid grid text-xs\">\r\n <div class=\"field col-12 md:col-6 lg:col-3 align-items-center mb-0\" *ngFor=\"let valor of operaciones\">\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-full 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" }] });
500
+ }
501
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: PopupReporteComponent, decorators: [{
502
+ type: Component,
503
+ 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=\"col-md-12\">\r\n <div class=\"p-fluid p-formgrid grid text-xs\">\r\n <div class=\"field col-12 md:col-6 lg:col-3 align-items-center mb-0\" *ngFor=\"let valor of generaciones\">\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=\"col-md-12\">\r\n <div class=\"p-fluid p-formgrid grid text-xs\">\r\n <div class=\"field col-12 md:col-6 lg:col-3 align-items-center mb-0\" *ngFor=\"let valor of mapaTipoArchivos\">\r\n <div class=\"field-radiobutton\">\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=\"col-md-12\">\r\n <div class=\"p-fluid p-formgrid grid text-xs\">\r\n <div class=\"field col-12 md:col-6 lg:col-3 align-items-center mb-0\" *ngFor=\"let valor of operaciones\">\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-full 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"] }]
504
+ }], 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: [{
505
+ type: Input
506
+ }], aplicacion: [{
507
+ type: Input
508
+ }], reporte: [{
509
+ type: Input
510
+ }], entradasPuntoProceso: [{
511
+ type: Input
512
+ }], regresar: [{
513
+ type: Output
514
+ }] } });
515
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wdXAtcmVwb3J0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3dlYmNvbW1vbi9wb3B1cHMvcG9wdXAtcmVwb3J0ZS9wb3B1cC1yZXBvcnRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvd2ViY29tbW9uL3BvcHVwcy9wb3B1cC1yZXBvcnRlL3BvcHVwLXJlcG9ydGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsZUFBZSxFQUFvQixNQUFNLHFCQUFxQixDQUFDO0FBR3hFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUd2RSxPQUFPLEVBQUUsbUJBQW1CLEVBQVksY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRzVFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBUW5GLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1QyxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FB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NHFDQUFFLGNBQWMsMGdEQUFFLGlCQUFpQiw4VUFBRSx1QkFBdUIseUlBQUUsV0FBVyxpbkJBQUUsZ0JBQWdCOzsyRkFNclEscUJBQXFCO2tCQVJqQyxTQUFTOytCQUNFLG1CQUFtQixXQUNwQixDQUFDLFlBQVksRUFBRSxZQUFZLEVBQUUsa0JBQWtCLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRSxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxpQkFBaUIsRUFBRSx1QkFBdUIsRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLENBQUMsY0FDblEsSUFBSSxhQUNMLENBQUMsY0FBYyxFQUFFLG1CQUFtQixDQUFDOzRnQkFNbEMsT0FBTztzQkFBdEIsS0FBSztnQkFDVSxVQUFVO3NCQUF6QixLQUFLO2dCQUNVLE9BQU87c0JBQXRCLEtBQUs7Z0JBQ1Usb0JBQW9CO3NCQUFuQyxLQUFLO2dCQUNXLFFBQVE7c0JBQXhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSwgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQgeyBHZW5lcmFsUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL2dlbmVyYWwucGlwZSc7XHJcbmltcG9ydCB7IEdlbmVyYWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3NlcnZpY2lvcy9nZW5lcmFsLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBHZW5lcmFsTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9zZWd1cmlkYWQvbW9kZWxvcy9HZW5lcmFsTW9kZWwnO1xyXG5pbXBvcnQgeyBDYXJnYXJBcmNoaXZvc1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvc2VydmljaW9zL2Nhcmdhci1hcmNoaXZvcy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRW5jcmlwdGFkb0Jhc2ljb1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvc2VydmljaW9zL2VuY3JpcHRhZG8tYmFzaWNvLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb25maXJtYXRpb25TZXJ2aWNlLCBNZW51SXRlbSwgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcbmltcG9ydCB7IFJlcG9ydGVGdWVudGVQaXBlIH0gZnJvbSAnLi4vLi4vcGlwZXMvcmVwb3J0ZS1mdWVudGUucGlwZSc7XHJcbmltcG9ydCB7IEVqZWN1Y2lvblJlcG9ydGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZWplY3VjaW9ucmVwb3J0ZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUmVwb3J0ZUZ1ZW50ZU1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vc2VndXJpZGFkL21vZGVsb3MvUmVwb3J0ZUZ1ZW50ZU1vZGVsJztcclxuaW1wb3J0IHsgUmVwb3J0ZUVudHJhZGFNb2RlbCB9IGZyb20gJy4uLy4uLy4uL3NlZ3VyaWRhZC9tb2RlbG9zL1JlcG9ydGVFbnRyYWRhTW9kZWwnO1xyXG5pbXBvcnQgeyBSZXBvcnRlU29wb3J0ZU1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vc2VndXJpZGFkL21vZGVsb3MvUmVwb3J0ZVNvcG9ydGUnO1xyXG5pbXBvcnQgeyBUYWJsZUNvbHVtbiB9IGZyb20gJy4uLy4uLy4uL2NvcmUvbW9kZWxvcy90YWJsZS1jb2x1bW4ubW9kZWwnO1xyXG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2lvcy90b2FzdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVXRpbHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNpb3MvdXRpbHMuc2VydmljZSc7XHJcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNpb3MvYXV0aC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ2FyZ2FyQ29udHJvbEZ1bmNpb25hbGlkYWRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNpb3MvY2FyZ2FyLWNvbnRyb2wtZnVuY2lvbmFsaWRhZC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGlhbG9nTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9kaWFsb2cnO1xyXG5pbXBvcnQgeyBDb25maXJtUG9wdXBNb2R1bGUgfSBmcm9tICdwcmltZW5nL2NvbmZpcm1wb3B1cCc7XHJcbmltcG9ydCB7IEFjY29yZGlvbk1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvYWNjb3JkaW9uJztcclxuaW1wb3J0IHsgVGFibGVNb2R1bGUgfSBmcm9tICdwcmltZW5nL3RhYmxlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlLCBEYXRlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEZpZWxkc2V0TW9kdWxlIH0gZnJvbSAncHJpbWVuZy9maWVsZHNldCc7XHJcbmltcG9ydCB7IElucHV0TnVtYmVyTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9pbnB1dG51bWJlcic7XHJcbmltcG9ydCB7IElucHV0VGV4dE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvaW5wdXR0ZXh0JztcclxuaW1wb3J0IHsgRHJvcGRvd25Nb2R1bGUgfSBmcm9tICdwcmltZW5nL2Ryb3Bkb3duJztcclxuaW1wb3J0IHsgQ2FsZW5kYXJNb2R1bGUgfSBmcm9tICdwcmltZW5nL2NhbGVuZGFyJztcclxuaW1wb3J0IHsgUmFkaW9CdXR0b25Nb2R1bGUgfSBmcm9tICdwcmltZW5nL3JhZGlvYnV0dG9uJztcclxuaW1wb3J0IHsgUG9wdXBTZW50ZW5jaWFDb21wb25lbnQgfSBmcm9tICcuLi9wb3B1cC1zZW50ZW5jaWEvcG9wdXAtc2VudGVuY2lhLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBGbG9hdExhYmVsTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9mbG9hdGxhYmVsJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLXBvcHVwLXJlcG9ydGUnLFxyXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIERpYWxvZ01vZHVsZSwgQ29uZmlybVBvcHVwTW9kdWxlLCBBY2NvcmRpb25Nb2R1bGUsIFRhYmxlTW9kdWxlLCBUcmFuc2xhdGVNb2R1bGUsIERhdGVQaXBlLCBGaWVsZHNldE1vZHVsZSwgSW5wdXROdW1iZXJNb2R1bGUsIElucHV0VGV4dE1vZHVsZSwgRHJvcGRvd25Nb2R1bGUsIENhbGVuZGFyTW9kdWxlLCBSYWRpb0J1dHRvbk1vZHVsZSwgUG9wdXBTZW50ZW5jaWFDb21wb25lbnQsIEZvcm1zTW9kdWxlLCBGbG9hdExhYmVsTW9kdWxlXSxcclxuICAgIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgICBwcm92aWRlcnM6IFtNZXNzYWdlU2VydmljZSwgQ29uZmlybWF0aW9uU2VydmljZV0sXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vcG9wdXAtcmVwb3J0ZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vcG9wdXAtcmVwb3J0ZS5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQb3B1cFJlcG9ydGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBASW5wdXQoKSBwdWJsaWMgbW9zdHJhciA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBhcGxpY2FjaW9uOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgcHVibGljIHJlcG9ydGU6IFJlcG9ydGVGdWVudGVNb2RlbCA9IG5ldyBSZXBvcnRlRnVlbnRlTW9kZWw7XHJcbiAgQElucHV0KCkgcHVibGljIGVudHJhZGFzUHVudG9Qcm9jZXNvOiBhbnlbXT1bXTtcclxuICBAT3V0cHV0KCkgcHVibGljIHJlZ3Jlc2FyOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgcHVibGljIHBhbmVsOiBzdHJpbmcgPSAnZW50cmFkYSc7XHJcbiAgcHVibGljIG9wZXJhY2lvbjogc3RyaW5nO1xyXG4gIHB1YmxpYyBsaXN0YUVudHJhZGE6IFJlcG9ydGVFbnRyYWRhTW9kZWxbXSA9IFtdO1xyXG4gIHB1YmxpYyBsaXN0YVNlZ3VuZG9QbGFubzogYW55W10gPSBbXTtcclxuICBwdWJsaWMgcGFyYW1ldHJvczogYW55W10gPSBbXTtcclxuICBwdWJsaWMgZWxlbWVudG9Cb3JyYXI6IGFueSA9IHt9O1xyXG4gIHB1YmxpYyBnZW5lcmFjaW9uZXM6IGFueVtdID0gW107XHJcbiAgcHVibGljIG9wZXJhY2lvbmVzOiBhbnlbXSA9IFtdO1xyXG4gIHB1YmxpYyBtb3N0cmFyT3RyYVNlbGVjY2lvbjogYm9vbGVhbjtcclxuXHRwdWJsaWMgbW9zdHJhckFyY2hpdm9zU29wb3J0ZTogYm9vbGVhbjtcclxuXHRwdWJsaWMgbW9zdHJhckNvbnN1bHRhQ2Fzb0Vycm9yOiBib29sZWFuO1xyXG4gIHB1YmxpYyBjb3JyZW86IHN0cmluZztcclxuICBwdWJsaWMgdGlwb1JlcG9ydGU6IHN0cmluZztcclxuICBwdWJsaWMgc29wb3J0ZUJhc2U6IHN0cmluZztcclxuICBwdWJsaWMgdGlwb0FyY2hpdm86IHN0cmluZztcclxuICBwdWJsaWMgYmxvcXVlYXJDb3JyZW86IGJvb2xlYW47XHJcbiAgcHVibGljIG1hcGFUaXBvQXJjaGl2b3M7XHJcbiAgcHVibGljIGxpc3RhZG9BcmNoaXZvU29wb3J0ZTogUmVwb3J0ZVNvcG9ydGVNb2RlbFtdID0gW107XHJcbiAgcHVibGljIG1vc3RyYXJQb3B1cFNlbnRlbmNpYTogYm9vbGVhbjtcclxuXHJcbiAgcHVibGljIGl0ZW1zOiBNZW51SXRlbVtdO1xyXG4gIHB1YmxpYyB2aXN0YVZpc3VhbGl6YXI6IHN0cmluZztcclxuICBwYWdpbmF0b3I9e3Jvd3M6Mix0b3RhbFJlY29yZHM6MH1cclxuICBwdWJsaWMgbW9zdHJhclBhcmFtZXRyb3M6IGJvb2xlYW47XHJcblx0cHVibGljIG1vc3RyYXJRdWVEZXNlYUhhY2VyOiBib29sZWFuO1xyXG5cclxuICBwdWJsaWMgY29sdW1uYXM6IFRhYmxlQ29sdW1uW10gPSBbXTtcclxuICBwdWJsaWMgbGlzdGFSZWdpc3RybzogYW55W10gPSBbXTtcclxuXHJcbiAgcHVibGljIGV4aXN0ZUphc3BlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGdlbmVyYWxTZXJ2aWNlOiBHZW5lcmFsU2VydmljZSxcclxuICAgICAgICAgICAgICBwcml2YXRlIGVqZWN1Y2lvblJlcG9ydGVTZXJ2aWNlOiBFamVjdWNpb25SZXBvcnRlU2VydmljZSxcclxuICAgICAgICAgICAgICBwcml2YXRlIGNvbmZpcm1hdGlvblNlcnZpY2U6IENvbmZpcm1hdGlvblNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSBub3RpZmljYWNpb25TZXJ2aWNlOiBUb2FzdFNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgY2FyZ2FyQXJjaGl2b1NlcnZpY2U6IENhcmdhckFyY2hpdm9zU2VydmljZSxcclxuICAgICAgICAgICAgICBwdWJsaWMgdXRpbHNTZXJ2aWNlOiBVdGlsc1NlcnZpY2UsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSBjb250cm9sRnVuY2lvbmFsaWRhZDogQ2FyZ2FyQ29udHJvbEZ1bmNpb25hbGlkYWRTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgZW5jcmlwdGFkb0Jhc2ljbzogRW5jcmlwdGFkb0Jhc2ljb1NlcnZpY2UsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSByZXBvcnRlRnVlbnRlUGlwZTogUmVwb3J0ZUZ1ZW50ZVBpcGUsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSBnZW5lcmFsUGlwZTogR2VuZXJhbFBpcGUsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSBjYXJnYXJBcmNoaXZvOiBDYXJnYXJBcmNoaXZvc1NlcnZpY2UsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSBlbmNyaXB0YWRvckFyY2hpdm86IEVuY3JpcHRhZG9CYXNpY29TZXJ2aWNlLCkgeyB9ICAgICAgICAgXHJcbiAgXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLm1hcGFUaXBvQXJjaGl2b3MgPSB0aGlzLnJlcG9ydGVGdWVudGVQaXBlLk1BUEFfVElQT19BUkNISVZPUzsgIFxyXG4gICAgdGhpcy5hcGxpY2FjaW9uID0gdGhpcy5hdXRoU2VydmljZS5nZXRUb2tlbktleSgnYXBsaWNhY2lvbicpXHJcbiAgfVxyXG5cclxuICBhc3luYyBtb3N0cmFyUG9wdXAoKXtcclxuICAgIHRoaXMucGFuZWwgPSAnZW50cmFkYSc7XHJcbiAgICB0aGlzLm1vc3RyYXJRdWVEZXNlYUhhY2VyID0gZmFsc2U7XHJcbiAgICB0aGlzLnRpcG9SZXBvcnRlID0gbnVsbDtcclxuICAgIHRoaXMubW9zdHJhckNvbnN1bHRhQ2Fzb0Vycm9yID0gdGhpcy52YWxpZGFyQ29udHJvbEZ1bmNpb25hbGlkYWQoJ3JlcG9ydGU6dmVyc2VudGVuY2lhZXJyb3InKTtcclxuICAgIHRoaXMub3BlcmFjaW9uID0gbnVsbDtcclxuICAgIHRoaXMuZWxlbWVudG9Cb3JyYXIgPSB7fVxyXG4gICAgdGhpcy5saXN0YVNlZ3VuZG9QbGFubyA9IFtdXHJcbiAgICB0aGlzLmxpc3RhUmVnaXN0cm8gPSBbXTtcclxuICAgIHRoaXMuY29sdW1uYXMgPSBbXTtcclxuICAgIHRoaXMuZXhpc3RlSmFzcGVyID0gZmFsc2U7XHJcbiAgICBpZiAodGhpcy5yZXBvcnRlLmxsYXZlKSB7XHJcbiAgICAgIHZhciByZXN1bHRhZG8gPSBhd2FpdCB0aGlzLmVqZWN1Y2lvblJlcG9ydGVTZXJ2aWNlLmdldERhdG9zRWplY3VjaW9uUmVwb3J0ZSh7bGxhdmU6IHRoaXMucmVwb3J0ZS5sbGF2ZX0pLnRvUHJvbWlzZSgpO1xyXG4gICAgICB0aGlzLnJlcG9ydGUgPSByZXN1bHRhZG8ucmVwb3J0ZTtcclxuICAgICAgZGVsZXRlIHRoaXMucmVwb3J0ZVsnYWxpYXMnXVxyXG4gICAgICB0aGlzLmNhcmdhckxpc3RhRW50cmFkYSgpO1xyXG4gICAgICB0aGlzLnRyYWVyU2VndW5kb1BsYW5vKCk7XHJcbiAgICAgIHRoaXMuY2FyZ2FyQ29ycmVvKCk7XHJcbiAgICAgIGF3YWl0IHRoaXMudmFsaWRhckV4aXN0ZUphc3BlcigpO1xyXG4gICAgICBhd2FpdCB0aGlzLmNhcmdhckdlbmVyYWNpb25lcygpO1xyXG4gICAgICB0aGlzLmNhcmdhck9wZXJhY2lvbmVzKCk7XHJcbiAgICAgIHRoaXMudXRpbHNTZXJ2aWNlLnJlc2l6ZVdpbmRvd0lGcmFtZSgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy51dGlsc1NlcnZpY2UucmVzaXplV2luZG93SUZyYW1lKCk7XHJcbiAgfVxyXG5cclxuICBjYXJnYXJNZW51KCl7XHJcbiAgICB0aGlzLml0ZW1zID0gW1xyXG4gICAgICBcclxuICAgICAge1xyXG4gICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnZWplY3VjaW9uJyksXHJcbiAgICAgICAgaWNvbjogJ2dseXBoaWNvbnMgZ2x5cGhpY29ucy1wbHVzLXNpZ24nLFxyXG4gICAgICAgIGNvbW1hbmQ6IChldmVudCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy52aXN0YVZpc3VhbGl6YXIgPSAnZW50cmFkYSc7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnc2VndW5kb3BsYW5vJyksXHJcbiAgICAgICAgaWNvbjogJ2dseXBoaWNvbnMgZ2x5cGhpY29ucy1maWxlLW1pbnVzJyxcclxuICAgICAgICBjb21tYW5kOiAoZXZlbnQpID0+IHtcclxuICAgICAgICAgIHRoaXMudmlzdGFWaXN1YWxpemFyID0gJ3NlZ3VuZG9wbGFubyc7XHJcbiAgICAgICAgfSxcclxuICAgICAgICB2aXNpYmxlOiB0aGlzLmxpc3RhU2VndW5kb1BsYW5vLmxlbmd0aCA+IDAsXHJcbiAgICAgIH1cclxuICAgIF1cclxuICB9XHJcblxyXG4gIGFzeW5jIGNhcmdhckdlbmVyYWNpb25lcygpe1xyXG4gICAgdGhpcy5nZW5lcmFjaW9uZXMgPSBbXTtcclxuICAgIGlmICggdGhpcy51dGlsc1NlcnZpY2UuaXNOb3RCbGFuayh0aGlzLnJlcG9ydGUudGl0dWxvUGFyYW1ldHJvKSAmJiB0aGlzLmV4aXN0ZUphc3Blcil7XHJcbiAgICAgIHRoaXMuZ2VuZXJhY2lvbmVzLnB1c2goe3ZhbHVlOiB0aGlzLnJlcG9ydGVGdWVudGVQaXBlLkdFTkVSQUNJT05fSkFTUEVSRElOQU1JQ08sIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy5yZXBvcnRlRnVlbnRlUGlwZS5ERVNDX0dFTkVSQUNJT05fSkFTUEVSRElOQU1JQ099KVxyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMudXRpbHNTZXJ2aWNlLmlzTm90QmxhbmsodGhpcy5yZXBvcnRlLmphc3BlckZpam8pICYmIHRoaXMudXRpbHNTZXJ2aWNlLmlzTm90QmxhbmsodGhpcy5yZXBvcnRlLm1vZG9GaWpvKSl7XHJcbiAgICAgIHRoaXMuZ2VuZXJhY2lvbmVzLnB1c2goe3ZhbHVlOiB0aGlzLnJlcG9ydGVGdWVudGVQaXBlLkdFTkVSQUNJT05fSkFTUEVSRklKTywgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnJlcG9ydGVGdWVudGVQaXBlLkRFU0NfR0VORVJBQ0lPTl9KQVNQRVJGSUpPfSlcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnV0aWxzU2VydmljZS5pc05vdEJsYW5rKHRoaXMucmVwb3J0ZS5hcmNoaXZvVG9kbykgJiYgdGhpcy51dGlsc1NlcnZpY2UuaXNOb3RCbGFuayh0aGlzLnJlcG9ydGUuaG9qYUV4Y2VsKSl7XHJcbiAgICAgIHRoaXMuZ2VuZXJhY2lvbmVzLnB1c2goe3ZhbHVlOiB0aGlzLnJlcG9ydGVGdWVudGVQaXBlLkdFTkVSQUNJT05fRVhDRUwsIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy5yZXBvcnRlRnVlbnRlUGlwZS5ERVNDX0dFTkVSQUNJT05fRVhDRUx9KVxyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMudXRpbHNTZXJ2aWNlLmlzTm90QmxhbmsodGhpcy5yZXBvcnRlLmFyY2hpdm9JbmRpdmlkdWFsKSB8fCB0aGlzLnJlcG9ydGUudW5pY29BcmNoaXZvID09ICdOJyl7XHJcbiAgICAgIHRoaXMuZ2VuZXJhY2lvbmVzLnB1c2goe3ZhbHVlOiB0aGlzLnJlcG9ydGVGdWVudGVQaXBlLkdFTkVSQUNJT05fUExBTlRJTExBLCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMucmVwb3J0ZUZ1ZW50ZVBpcGUuREVTQ19HRU5FUkFDSU9OX1BMQU5USUxMQX0pXHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy51dGlsc1NlcnZpY2UuaXNOb3RCbGFuayh0aGlzLnJlcG9ydGUuc2VwYXJhZG9yKSl7XHJcbiAgICAgIHRoaXMuZ2VuZXJhY2lvbmVzLnB1c2goe3ZhbHVlOiB0aGlzLnJlcG9ydGVGdWVudGVQaXBlLkdFTkVSQUNJT05fQVJDSElWT1BMQU5PLCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMucmVwb3J0ZUZ1ZW50ZVBpcGUuREVTQ19HRU5FUkFDSU9OX0FSQ0hJVk9QTEFOT30pXHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy51dGlsc1NlcnZpY2UuaXNOb3RCbGFuayh0aGlzLnJlcG9ydGUubm9tYnJlVGFibGEpKXtcclxuICAgICAgdGhpcy5nZW5lcmFjaW9uZXMucHVzaCh7dmFsdWU6IHRoaXMucmVwb3J0ZUZ1ZW50ZVBpcGUuR0VORVJBQ0lPTl9UQUJMQSwgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnJlcG9ydGVGdWVudGVQaXBlLkRFU0NfR0VORVJBQ0lPTl9UQUJMQX0pXHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy51dGlsc1NlcnZpY2UuaXNOb3RCbGFuayh0aGlzLnJlcG9ydGUudGFnRW5jYWJlemFkbykgJiYgdGhpcy51dGlsc1NlcnZpY2UuaXNOb3RCbGFuayh0aGlzLnJlcG9ydGUuZXN0cnVjdHVyYVJlZ2lzdHJvKSl7XHJcbiAgICAgIHRoaXMuZ2VuZXJhY2lvbmVzLnB1c2goe3ZhbHVlOiB0aGlzLnJlcG9ydGVGdWVudGVQaXBlLkdFTkVSQUNJT05fWE1MLCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMucmVwb3J0ZUZ1ZW50ZVBpcGUuREVTQ19HRU5FUkFDSU9OX1hNTH0pXHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy51dGlsc1NlcnZpY2UuaXNOb3RCbGFuayh0aGlzLnJlcG9ydGUuYXJjaGl2b0V4Y2VsQ29sdW1uYXJpbykgJiYgdGhpcy51dGlsc1NlcnZpY2UuaXNOb3RCbGFuayh0aGlzLnJlcG9ydGUuaG9qYUV4Y2VsQ29sdW1uYXJpbykpe1xyXG4gICAgICB0aGlzLmdlbmVyYWNpb25lcy5wdXNoKHt2YWx1ZTogdGhpcy5yZXBvcnRlRnVlbnRlUGlwZS5HRU5FUkFDSU9OX0NPTFVNTkFSSU8sIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy5yZXBvcnRlRnVlbnRlUGlwZS5ERVNDX0dFTkVSQUNJT05fQ09MVU1OQVJJT30pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyB2YWxpZGFyRXhpc3RlSmFzcGVyKCl7XHJcbiAgICB0cnkge1xyXG4gICAgICB2YXIgZGF0YSA9IGF3YWl0IHRoaXMuY2FyZ2FyQXJjaGl2by5kZXNjYXJnYXJBcmNoaXZvKHRoaXMuZW5jcmlwdGFkb3JBcmNoaXZvLmVuY3JpcHRhcigncmVwb3J0ZXMvJyArIHRoaXMucmVwb3J0ZS5sbGF2ZSArICcuanJ4bWwnKSwgJ3J1dGFfcGxhbnRpbGxhcycsIHRoaXMuYXBsaWNhY2lvbikudG9Qcm9taXNlKCk7XHJcbiAgICAgIGlmIChkYXRhKSB7XHJcbiAgICAgICAgdGhpcy5leGlzdGVKYXNwZXIgPSB0cnVlO1xyXG4gICAgICB9ICAgXHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICB0aGlzLmV4aXN0ZUphc3BlciA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2FyZ2FyT3BlcmFjaW9uZXMoKXtcclxuICAgIHRoaXMuYmxvcXVlYXJDb3JyZW8gPSB0cnVlO1xyXG4gICAgdGhpcy5vcGVyYWNpb25lcyA9IFtdO1xyXG4gICAgaWYgKHRoaXMudGlwb1JlcG9ydGUpe1xyXG4gICAgICBpZiAodGhpcy50aXBvUmVwb3J0ZSAhPSB0aGlzLnJlcG9ydGVGdWVudGVQaXBlLkdFTkVSQUNJT05fVEFCTEEpIHtcclxuICAgICAgICB0aGlzLm9wZXJhY2lvbmVzLnB1c2goe3ZhbHVlOiB0aGlzLnJlcG9ydGVGdWVudGVQaXBlLk9QRVJBQ0lPTl9ERVNDQVJHQVIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy5yZXBvcnRlRnVlbnRlUGlwZS5ERVNDX09QRVJBQ0lPTl9ERVNDQVJHQVJ9KTtcclxuICAgICAgXHJcbiAgICAgICAgaWYgKHRoaXMudmFsaWRhckNvbnRyb2xGdW5jaW9uYWxpZGFkKCdyZXBvcnRlOmVudmlvY29ycmVvJykpe1xyXG4gICAgICAgICAgdGhpcy5ibG9xdWVhckNvcnJlbyA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLm9wZXJhY2lvbmVzLnB1c2goe3ZhbHVlOiB0aGlzLnJlcG9ydGVGdWVudGVQaXBlLk9QRVJBQ0lPTl9FTlZJQVJDT1JSRU8sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnJlcG9ydGVGdWVudGVQaXBlLkRFU0NfT1BFUkFDSU9OX0VOVklBUkNPUlJFT30pO1xyXG4gICAgICAgIGlmICh0aGlzLnJlcG9ydGVGdWVudGVQaXBlLk1PTUVOVE9TX1NFR1VORE9fUExBTk8gPT0gdGhpcy5yZXBvcnRlLm1vbWVudG8pIHtcclxuICAgICAgICAgIHRoaXMub3BlcmFjaW9uZXMucHVzaCh7dmFsdWU6IHRoaXMucmVwb3J0ZUZ1ZW50ZVBpcGUuT1BFUkFDSU9OX1NFR1VORE9QTEFOTyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy5yZXBvcnRlRnVlbnRlUGlwZS5ERVNDX09QRVJBQ0lPTl9TRUdVTkRPUExBTk99KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCh0aGlzLnRpcG9SZXBvcnRlID09IHRoaXMucmVwb3J0ZUZ1ZW50ZVBpcGUuR0VORVJBQ0lPTl9KQVNQRVJGSUpPICYmIHRoaXMucmVwb3J0ZS5tb2RvRmlqbyA9PSAnUCcpXHJcbiAgICAgICAgICB8fCB0aGlzLnRpcG9SZXBvcnRlID09IHRoaXMucmVwb3J0ZUZ1ZW50ZVBpcGUuR0VORVJBQ0lPTl9QTEFOVElMTEEgJiYgdGhpcy5yZXBvcnRlLmRlc2NhcmdhckZ1ZW50ZSAhPSAnUycpe1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICBpZiAodGhpcy5yZXBvcnRlLmFyY2hpdm9IdG1sICYmIHRoaXMucmVwb3J0ZS5jYW1wb0VtYWlsKXtcclxuICAgICAgICAgICAgdGhpcy5vcGVyYWNpb25lcy5wdXNoKHt2YWx1ZTogdGhpcy5yZXBvcnRlRnVlbnRlUGlwZS5PUEVSQUNJT05fRU5WSU9NQVNJVk8sXHJcbiAgICAgICAgICAgICAgbGFiZWw6IHRoaXMucmVwb3J0ZUZ1ZW50ZVBpcGUuREVTQ19PUEVSQUNJT05fRU5WSU9NQVNJVk99KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0aGlzLnJlcG9ydGUucHVibGljYWNpb24gJiYgdGhpcy5yZXBvcnRlLmNhbXBvUHVibGljYSl7XHJcbiAgICAgICAgICAgIHRoaXMub3BlcmFjaW9uZXMucHVzaCh7dmFsdWU6IHRoaXMucmVwb3J0ZUZ1ZW50ZVBpcGUuT1BFUkFDSU9OX1BVQkxJQ0FSLFxyXG4gICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnJlcG9ydGVGdWVudGVQaXBlLkRFU0NfT1BFUkFDSU9OX1BVQkxJQ0FSfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAodGhpcy5yZXBvcnRlLmFyY2hpdm9IdG1sICYmIHRoaXMucmVwb3J0ZS5jYW1wb0VtYWlsICYmIHRoaXMucmVwb3J0ZS5wdWJsaWNhY2lvbiAmJiB0aGlzLnJlcG9ydGUuY2FtcG9QdWJsaWNhICl7XHJcbiAgICAgICAgICAgIHRoaXMub3BlcmFjaW9uZXMucHVzaCh7dmFsdWU6IHRoaXMucmVwb3J0ZUZ1ZW50ZVBpcGUuT1BFUkFDSU9OX0NPUlJFT1BVQkxJQ0FSLFxyXG4gICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnJlcG9ydGVGdWVudGVQaXBlLkRFU0NfT1BFUkFDSU9OX0NPUlJFT1BVQkxJQ0FSfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vcHRlIHByb2Nlc28gZXh0ZXJub1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjYW1iaW9WYWxvckxpc3RhKGV2ZW50LCBwYXJhbWV0cm8pe1xyXG4gICAgaWYgKGV2ZW50LnZhbHVlKXtcclxuICAgICAgbGV0IGxpc3RhID0gZXZlbnQudmFsdWUuc3BsaXQoJzonKVxyXG4gICAgICBpZiAocGFyYW1ldHJvLnVuaW9uRFRPLnRpcG9EYXRvID09ICdOJyl7XHJcbiAgICAgICAgcGFyYW1ldHJvLnVuaW9uRFRPLnZhbG9yID0gcGFyc2VJbnQobGlzdGFbMF0pXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcGFyYW1ldHJvLnVuaW9uRFRPLnZhbG9yID0gbGlzdGFbMF1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy51dGlsc1NlcnZpY2UucmVzaXplV2luZG93SUZyYW1lKCk7XHJcbiAgfVxyXG4gIFxyXG4gIGNhbWJpb1NvcG9ydGVCYXNlKGV2ZW50KSB7XHJcbiAgICBpZiAodGhpcy5zb3BvcnRlQmFzZSA9PSBudWxsKSB7XHJcbiAgICAgIHRoaXMuY2FyZ2FyT3BlcmFjaW9uZXMoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfSBcclxuICAgIHRoaXMuZ2VuZXJhbFNlcnZpY2UucXVlcnlGb3JPYmplY3QobmV3IEdlbmVyYWxNb2RlbCgnUmVwb3J0ZVNvcG9ydGVEVE8nLCBudWxsLCBmYWxzZSwge2xsYXZlVGFibGE6IHRoaXMuc29wb3J0ZUJhc2V9KSkuc3Vic2NyaWJlKGFyY2hpdm9CYXNlID0+IHtcclxuICAgICAgaWYgKGFyY2hpdm9CYXNlID09IG51bGwpIHtcclxuXHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdH1cclxuXHRcdFx0dGhpcy5zb3BvcnRlQmFzZSA9IGFyY2hpdm9CYXNlLmxsYXZlVGFibGE7XHJcblx0XHRcdHRoaXMucmVwb3J0ZS5hcmNoaXZvSW5kaXZpZHVhbCA9IGFyY2hpdm9CYXNlLmFyY2hpdm9JbmRpdmlkdWFsO1xyXG5cdFx0XHR0aGlzLmNhcmdhck9wZXJhY2lvbmVzKCk7XHJcbiAgICAgIHRoaXMudXRpbHNTZXJ2aWNlLnJlc2l6ZVdpbmRvd0lGcmFtZSgpO1xyXG4gICAgfSk7XHJcbiAgICBcclxuICB9XHJcblxyXG4gIGNhcmdhckNvcnJlbygpe1xyXG4gICAgdGhpcy5nZW5lcmFsU2VydmljZS5xdWVyeUZvck9iamVjdChuZXcgR2VuZXJhbE1vZGVsKCdVc3VhcmlvRFRPJywgbnVsbCwgdHJ1ZSwge2xvZ2luOiB0aGlzLmF1dGhTZXJ2aWNlLmdldFRva2VuS2V5KCd1c3VhcmlvJyl9KSkuc3Vic2NyaWJlKGRhdGEgPT4ge1xyXG4gICAgICB0aGlzLmNvcnJlbyA9IGRhdGEuZW1haWw7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgY2FyZ2FyTGlzdGFFbnRyYWRhKCl7XHJcbiAgICB0aGlzLm1vc3RyYXJQYXJhbWV0cm9zID0gZmFsc2U7XHJcbiAgICBpZiAodGhpcy5lbnRyYWRhc1B1bnRvUHJvY2Vzby5sZW5ndGggPiAwKXtcclxuICAgICAgdGhpcy5wYXJhbWV0cm9zID0gdGhpcy5lbnRyYWRhc1B1bnRvUHJvY2VzbzsgIFxyXG4gICAgICB0aGlzLnBhcmFtZXRyb3MuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICBpZiAoZWxlbWVudC51bmlvbkRUTy5zb2xpY2l0YXIgPT0gJ1MnKXtcclxuICAgICAgICAgIHRoaXMubW9zdHJhclBhcmFtZXRyb3MgPSAgdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGVsZW1lbnQudW5pb25EVE8udGlwb0RhdG8gPT0gJ0YnICYmIGVsZW1lbnQudW5pb25EVE8udmFsb3IgIT0gbnVsbCl7XHJcbiAgICAgICAgICBlbGVtZW50LnVuaW9uRFRPLnZhbG9yID0gbmV3IERhdGUoZWxlbWVudC51bmlvbkRUTy52YWxvcilcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMudXRpbHNTZXJ2aWNlLnJlc2l6ZVdpbmRvd0lGcmFtZSgpO1xyXG5cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZWplY3VjaW9uUmVwb3J0ZVNlcnZpY2Uub2J0ZW5lckxpc3RhRW50cmFkYUVqZWN1Y2lvbih0aGlzLnJlcG9ydGUpLnN1YnNjcmliZShkYXRhID0+IHtcclxuICAgICAgICB0aGlzLnBhcmFtZXRyb3MgPSBkYXRhO1xyXG4gICAgICAgIHRoaXMucGFyYW1ldHJvcy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgICAgaWYgKGVsZW1lbnQudW5pb25EVE8uc29saWNpdGFyID09ICdTJyl7XHJcbiAgICAgICAgICAgIHRoaXMubW9zdHJhclBhcmFtZXRyb3MgPSAgdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChlbGVtZW50LnVuaW9uRFRPLnRpcG9EYXRvID09ICdGJyAmJiBlbGVtZW50LnVuaW9uRFRPLnZhbG9yICE9IG51bGwpe1xyXG4gICAgICAgICAgICBlbGVtZW50LnVuaW9uRFRPLnZhbG9yID0gbmV3IERhdGUoZWxlbWVudC51bmlvbkRUTy52YWxvcilcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMudXRpbHNTZXJ2aWNlLnJlc2l6ZVdpbmRvd0lGcmFtZSgpO1xyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdHJhZXJTZWd1bmRvUGxhbm8oKXtcclxuICAgIGxldCB1c3VhcmlvID0gdGhpcy5hdXRoU2VydmljZS5nZXRUb2tlbktleSgndXN1YXJpbycpXHJcbiAgICB0aGlzLmdlbmVyYWxTZXJ2aWNlLnF1ZXJ5Rm9yTGlzdChuZXcgR2VuZXJhbE1vZGVsKCdFamVjdWNpb25SZXBvcnRlRFRPJywgbnVsbCwgZmFsc2UsIHtcclxuICAgICAgYWRpY2lvbmFkbzogdXN1YXJpbywgXHJcbiAgICAgIHJlcG9ydGVGdWVudGU6IHRoaXMucmVwb3J0ZS5sbGF2ZX0pKS5zdWJzY3JpYmUoZGF0YSA9PiB7XHJcbiAgICAgICAgdGhpcy5saXN0YVNlZ3VuZG9QbGFubyA9IGRhdGE7XHJcbiAgICAgICAgdGhpcy5wYWdpbmF0b3IudG90YWxSZWNvcmRzID0gdGhpcy5saXN0YVNlZ3VuZG9QbGFuby5sZW5ndGg7XHJcbiAgICAgIH0pXHJcbiAgfVxyXG4gIFxyXG4gIHZlclNlZ3VuZG9QbGFubyhldmVudCl7XHJcbiAgICB0aGlzLmVsZW1lbnRvQm9ycmFyID0gZXZlbnQuZGF0YTtcclxuICAgIHRoaXMuZWxlbWVudG9Cb3JyYXIuZmVjaGFBZGljaW9uYWRvID0gdGhpcy5lbGVtZW50b0JvcnJhci5mZWNoYUFkaWNpb25hZG8gPyBuZXcgRGF0ZSh0aGlzLmVsZW1lbnRvQm9ycmFyLmZlY2hhQWRpY2lvbmFkbykgOiBudWxsXHJcbiAgICB0aGlzLmVsZW1lbnRvQm9ycmFyLmluaWNpYSA9IHRoaXMuZWxlbWVudG9Cb3JyYXIuaW5pY2lhID8gbmV3IERhdGUodGhpcy5lbGVtZW50b0JvcnJhci5pbmljaWEpIDogbnVsbFxyXG4gICAgdGhpcy5lbGVtZW50b0JvcnJhci50ZXJtaW5hID0gdGhpcy5lbGVtZW50b0JvcnJhci50ZXJtaW5hID8gbmV3IERhdGUodGhpcy5lbGVtZW50b0JvcnJhci50ZXJtaW5hKSA6IG51bGxcclxuICAgIHRoaXMub3BlcmFjaW9uID0gJ2hpc3RvcmljbydcclxuICAgIHRoaXMucGFuZWwgPSAncmVzdWx0YWRvJ1xyXG4gIH1cclxuXHJcbiAgZWxpbWluYXJTZWd1bmRvUGxhbm8oZXZlbnQpe1xyXG4gICAgdGhpcy5jb25maXJtYXRpb25TZXJ2aWNlLmNvbmZpcm0oe1xyXG4gICAgICB0YXJnZXQ6IGV2ZW50LnRhcmdldCxcclxuICAgICAgbWVzc2FnZTogIHRoaXMuZ2VuZXJhbFBpcGUuTUVOU0FKRV9FTElNSU5BUl9DT05GSVJNQVIsXHJcbiAgICAgIGFjY2VwdExhYmVsOiB0aGlzLmdlbmVyYWxQaXBlLlNJX0RFU0MsXHJcbiAgICAgIGhlYWRlcjogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ2NvbmZpcm1hcicpLFxyXG4gICAgICBhY2NlcHQ6ICgpID0+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+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtZmx1aWQgcC1mb3JtZ3JpZCBncmlkIHRleHQteHNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQgY29sLTEyIG1kOmNvbC02IGxnOmNvbC0zIGFsaWduLWl0ZW1zLWNlbnRlciBtYi0wXCIgICpuZ0Zvcj1cImxldCB2YWxvciBvZiBnZW5lcmFjaW9uZXNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkLXJhZGlvYnV0dG9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC1yYWRpb0J1dHRvbiAob25DbGljayk9XCJjYW1iaW9UaXBvUmVwb3J0ZSgkZXZlbnQpXCIgW2lucHV0SWRdPVwidmFsb3IudmFsdWVcIiBuYW1lPVwidGlwb1JlcG9ydGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJ2YWxvci52YWx1ZVwiIFsobmdNb2RlbCldPVwidGlwb1JlcG9ydGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIFtmb3JdPVwidmFsb3IudmFsdWVcIiBjbGFzcz1cIm1sLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyB2YWxvci5sYWJlbCB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9wLWZpZWxkc2V0PlxyXG5cclxuICAgICAgICA8cC1maWVsZHNldCBjbGFzcz1cIm10LTBcIiAqbmdJZj1cIidBJyAhPSB0aXBvUmVwb3J0ZSAmJiBtb3N0cmFyUXVlRGVzZWFIYWNlclwiID5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImdseXBoaWNvbnMgZ2x5cGhpY29ucy1ib29rXCIgc3R5bGU9XCJjb2xvcjp2YXIoLS1jb2xvci00MDApXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPsK/UXXDqSBkZXNlYSBoYWNlcj88L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPGxhYmVsICpuZ0lmPVwidGlwb1JlcG9ydGUgJiYgJ0YnID09IHRpcG9SZXBvcnRlXCI+e3snc2VsZWNjaW9uZXRpcG9hcmNoaXZvZGVzZWFnZW5lcmFyJyB8IHRyYW5zbGF0ZX19PC9sYWJlbD5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ0aXBvUmVwb3J0ZSAmJiAnRicgPT0gdGlwb1JlcG9ydGVcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1mbHVpZCBwLWZvcm1ncmlkIGdyaWQgdGV4dC14c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQgY29sLTEyIG1kOmNvbC02IGxnOmNvbC0zIGFsaWduLWl0ZW1zLWNlbnRlciBtYi0wXCIgICpuZ0Zvcj1cImxldCB2YWxvciBvZiBtYXBhVGlwb0FyY2hpdm9zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQtcmFkaW9idXR0b25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC1yYWRpb0J1dHRvbiAob25DbGljayk9XCJjYW1iaW9UaXBvQXJjaGl2bygkZXZlbnQpXCIgW2lucHV0SWRdPVwidmFsb3IuY29kaWdvXCIgbmFtZT1cInRpcG9BcmNoaXZvXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cInZhbG9yLmNvZGlnb1wiICBbKG5nTW9kZWwpXT1cInRpcG9BcmNoaXZvXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgW2Zvcl09XCJ2YWxvci5jb2RpZ29cIiBjbGFzcz1cIm1sLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgdmFsb3Iubm9tYnJlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJtb3N0cmFyQXJjaGl2b3NTb3BvcnRlXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiRGV0YWxsZXJlcG9ydGVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1mbHVpZCBwLWZvcm1ncmlkIGdyaWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkIGNvbC0xMiBtZDpjb2wtMTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLWZsb2F0TGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtZHJvcGRvd24gW29wdGlvbnNdPVwibGlzdGFkb0FyY2hpdm9Tb3BvcnRlXCIgW2F1dG9EaXNwbGF5Rmlyc3RdPVwiZmFsc2VcIiBvcHRpb25MYWJlbD1cImRlc2NyaXBjaW9uXCIgYXBwZW5kVG89XCJib2R5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uVmFsdWU9XCJsbGF2ZVRhYmxhXCIgWyhuZ01vZGVsKV09XCJzb3BvcnRlQmFzZVwiIChvbkNoYW5nZSk9XCJjYW1iaW9Tb3BvcnRlQmFzZSgkZXZlbnQpXCI+PC9wLWRyb3Bkb3duPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5Tb3BvcnRlIEJhc2U6PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcC1mbG9hdExhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ0aXBvUmVwb3J0ZSA9PSAnRicgJiYgdGlwb0FyY2hpdm8gfHwgdGlwb1JlcG9ydGUgIT0gJ0YnIFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWZsdWlkIHAtZm9ybWdyaWQgZ3JpZCB0ZXh0LXhzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZCBjb2wtMTIgbWQ6Y29sLTYgbGc6Y29sLTMgYWxpZ24taXRlbXMtY2VudGVyIG1iLTBcIiAgKm5nRm9yPVwibGV0IHZhbG9yIG9mIG9wZXJhY2lvbmVzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQtcmFkaW9idXR0b25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC1yYWRpb0J1dHRvbiBbaW5wdXRJZF09XCJ2YWxvci52YWx1ZVwiIG5hbWU9XCJvcGVyYWNpb25cIiBbdmFsdWVdPVwidmFsb3IudmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIm9wZXJhY2lvblwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIFtmb3JdPVwidmFsb3IudmFsdWVcIiBjbGFzcz1cIm1sLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgdmFsb3IubGFiZWwgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwib3BlcmFjaW9uID09ICdFJ1wiPlxyXG4gICAgICAgICAgICAgICAgPHAtZmxvYXRMYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgcElucHV0VGV4dCBbKG5nTW9kZWwpXT1cImNvcnJlb1wiIHR5cGU9XCJ0ZXh0XCIgW2Rpc2FibGVkXT1cImJsb3F1ZWFyQ29ycmVvXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWw+e3snY29ycmVvJyB8IHRyYW5zbGF0ZX19PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDwvcC1mbG9hdExhYmVsPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L3AtZmllbGRzZXQ+XHJcbiAgICAgICAgXHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBwQnV0dG9uIHBSaXBwbGUgY2xhc3M9XCJtLTIgbXQtNCBwLWJ1dHRvbiBwLWJ1dHRvbi1vdXRsaW5lZCBiYWNrZ3JvdW5kLTEwMFwiXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cInZhbGlkYXJDb250cm9sRnVuY2lvbmFsaWRhZCgnZWplY3JlcG86c2VudGVuY2lhJylcIiBsYWJlbD1cIlZlciBzZW50ZW5jaWFcIiBpY29uPVwiZ2x5cGhpY29ucyBnbHlwaGljb25zLWV5ZS1vcGVuXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzZW50ZW5jaWEoKVwiPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHBCdXR0b24gcFJpcHBsZSBjbGFzcz1cIm0tMiBtdC00IHAtYnV0dG9uLXJhaXNlZFwiICpuZ0lmPVwib3BlcmFjaW9uID09ICdFJ1wiIGljb249XCJnbHlwaGljb25zIGdseXBoaWNvbnMtZW52ZWxvcGVcIlxyXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJ7eydsaW5rX2VudmlhcicgfCB0cmFuc2xhdGV9fVwiIChjbGljayk9XCJlbnZpYXJTZWd1bmRvUGxhbm8oKVwiPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHBCdXR0b24gcFJpcHBsZSBjbGFzcz1cIm0tMiBtdC00IHAtYnV0dG9uLXJhaXNlZFwiICpuZ0lmPVwib3BlcmFjaW9uID09ICdEJyAmJiByZXBvcnRlLm1vbWVudG8gIT0gJ0QnXCIgaWNvbj1cImdseXBoaWNvbnMgZ2x5cGhpY29ucy1jaGVja1wiXHJcbiAgICAgICAgICAgICAgICBsYWJlbD1cInt7J2dlbmVyYXInIHwgdHJhbnNsYXRlfX1cIiAoY2xpY2spPVwiZGVzY2FyZ2FyUmVwb3J0ZSgpXCI+PC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gcEJ1dHRvbiBwUmlwcGxlIGNsYXNzPVwibS0yIG10LTQgcC1idXR0b24tcmFpc2VkXCIgKm5nSWY9XCJvcGVyYWNpb24gPT0gJ0QnICYmIHJlcG9ydGUubW9tZW50byA9PSAnRCdcIiBpY29uPVwiZ2x5cGhpY29ucyBnbHlwaGljb25zLWNoZWNrXCJcclxuICAgICAgICAgICAgICAgIGxhYmVsPVwie3snZ2VuZXJhcicgfCB0cmFuc2xhdGV9fVwiIChjbGljayk9XCJkZXNjYXJnYXJSZXBvcnRlU2luSGlsbygpXCI+PC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gcEJ1dHRvbiBwUmlwcGxlIGNsYXNzPVwibS0yIG10LTQgcC1idXR0b24tcmFpc2VkXCIgKm5nSWY9XCJ0aXBvUmVwb3J0ZSA9PSAnQSdcIiBpY29uPVwiZ2x5cGhpY29ucyBnbHlwaGljb25zLWNoZWNrXCJcclxuICAgICAgICAgICAgICAgIGxhYmVsPVwie3snZ2VuZXJhcicgfCB0cmFuc2xhdGV9fVwiIChjbGljayk9XCJnZW5lcmFyVGFibGEoKVwiPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8IS0tcHRlIHByb2Nlc28gZXh0ZXJuby0tPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHBCdXR0b24gcFJpcHBsZSBjbGFzcz1cIm0tMiBtdC00IHAtYnV0dG9uLXJhaXNlZFwiICpuZ0lmPVwib3BlcmFjaW9uID09ICdNJyB8fCBvcGVyYWNpb24gPT0gJ01QJ1wiIGljb249XCJnbHlwaGljb25zIGdseXBoaWNvbnMtZW52ZWxvcGVcIlxyXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJ7eydsaW5rX2VudmlhcicgfCB0cmFuc2xhdGV9fVwiIChjbGljayk9XCJlbnZpYXJTZWd1bmRvUGxhbm8oKVwiPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHBCdXR0b24gcFJpcHBsZSBjbGFzcz1cIm0tMiBtdC00IHAtYnV0dG9uLXJhaXNlZFwiICpuZ0lmPVwib3BlcmFjaW9uID09ICdQJ1wiIGljb249XCJnbHlwaGljb25zIGdseXBoaWNvbnMtZm9sZGVyLW9wZW5cIlxyXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJ7eydsaW5rX3B1YmxpY2FyJyB8IHRyYW5zbGF0ZX19XCIgKGNsaWNrKT1cImVudmlhclNlZ3VuZG9QbGFubygpXCI+PC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gcEJ1dHRvbiBwUmlwcGxlIGNsYXNzPVwibS0yIG10LTQgcC1idXR0b24tcmFpc2VkXCIgKm5nSWY9XCJvcGVyYWNpb24gPT0nUydcIiAgaWNvbj1cImdseXBoaWNvbnMgZ2x5cGhpY29ucy1jaGVja1wiXHJcbiAgICAgICAgICAgICAgICBsYWJlbD1cInt7J2xpbmtfZ2VuZXJhcicgfCB0cmFuc2xhdGV9fVwiIChjbGljayk9XCJlbnZpYXJTZWd1bmRvUGxhbm8oKVwiPjwvYnV0dG9uPlxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiAqbmdJZj1cInBhbmVsID09ICdyZXN1bHRhZG8nXCI+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cIm9wZXJhY2lvbiA9PSAnaGlzdG9yaWNvJ1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgbXQtMiBtYi0yXCI+XHJcbiAgICAgICAgICAgICAgICA8aDQgY2xhc3M9XCJ0ZXh0LWJhc2UgbXQtMiBtbC0yXCI+e3snZGV0YWxsZScgfCB0cmFuc2xhdGV9fSB7eydzZWd1bmRvcGxhbm8nIHwgdHJhbnNsYXRlfX08L2g0PlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBwQnV0dG9uIHBSaXBwbGUgaWNvbj1cInBpIHBpLWNoZXZyb24tbGVmdFwiIGNsYXNzPVwicC1idXR0b24tdGV4dCBmb250LXNlbWlib2xkIGZsZXgtc2hyaW5rLTAgbWwtNFwiXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZWdyZXNhclNlZ3VuZG9QbGFubygpXCIgbGFiZWw9XCJ7eydsaW5rX3JlZ3Jlc2FyJyB8IHRyYW5zbGF0ZX19XCIgPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCIgSW5wdXRncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWZsdWlkIHAtZm9ybWdyaWQgZ3JpZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQgY29sLTEyIG1kOmNvbC00IGxnOmNvbC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC1mbG9hdExhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLWNhbGVuZGFyIHR5cGU9XCJ0ZXh0XCIgWyhuZ01vZGVsKV09XCJlbGVtZW50b0JvcnJhci5pbmljaWFcIiBbZGlzYWJsZWRdPVwidHJ1ZVwiIGFwcGVuZFRvPVwiYm9keVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93VGltZV09XCJ0cnVlXCIgW3Nob3dTZWNvbmRzXT1cInRydWVcIiBkYXRlRm9ybWF0PVwiZGQvbW0veXlcIj48L3AtY2FsZW5kYXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPnt7KCdmZWNoYWluaWNpYWwnKSB8IHRyYW5zbGF0ZX19PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcC1mbG9hdExhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZCBjb2wtMTIgbWQ6Y29sLTQgbGc6Y29sLTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLWZsb2F0TGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtY2FsZW5kYXIgdHlwZT1cInRleHRcIiBbKG5nTW9kZWwpXT1cImVsZW1lbnRvQm9ycmFyLnRlcm1pbmFcIiBbZGlzYWJsZWRdPVwidHJ1ZVwiIGFwcGVuZFRvPVwiYm9keVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93VGltZV09XCJ0cnVlXCIgW3Nob3dTZWNvbmRzXT1cInRydWVcIiBkYXRlRm9ybWF0PVwiZGQvbW0veXlcIj48L3AtY2FsZW5kYXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPnt7KCdmZWNoYWZpbmFsJykgfCB0cmFuc2xhdGV9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3AtZmxvYXRMYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQgY29sLTEyIG1kOmNvbC00IGxnOmNvbC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC1mbG9hdExhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBwSW5wdXRUZXh0IHR5cGU9XCJ0ZXh0XCIgW3JlYWRvbmx5XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJlbGVtZW50b0JvcnJhci5ub21icmVFc3RhZG9cIiBbZGlzYWJsZWRdPVwidHJ1ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPnt7KCdlc3RhZG8nKSB8IHRyYW5zbGF0ZX19PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcC1mbG9hdExhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZCBjb2wtMTIgbWQ6Y29sLTEyIGxnOmNvbC0xMlwiICpuZ0lmPVwiZWxlbWVudG9Cb3JyYXIuZXN0YWRvID09ICdFJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPnt7KCdtZW5zYWplJykgfCB0cmFuc2xhdGV9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgY2xhc3M9XCJtaW4tdy1mdWxsIHAtaW5wdXR0ZXh0YXJlYSBwLWlucHV0dGV4dCBwLWNvbXBvbmVudCBwLWVsZW1lbnQgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dzPVwiNVwiIGNvbHM9XCIzMFwiIHBJbnB1dFRleHRhcmVhIFsobmdNb2RlbCldPVwiZWxlbWVudG9Cb3JyYXIuYXJjaGl2b1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInRydWVcIj48L3RleHRhcmVhPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gcEJ1dHRvbiBwUmlwcGxlIGNsYXNzPVwibWwtMiBwLWJ1dHRvbiBwLWJ1dHRvbi1yYWlzZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJlbGVtZW50b0JvcnJhci5lc3RhZG8gPT0gJ1QnXCIgaWNvbj1cInBpIHBpLWRvd25sb2FkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPVwie3snbGlua19kZXNjYXJnYXInIHwgdHJhbnNsYXRlfX1cIiAoY2xpY2spPVwiZGVzY2FyZ2FyQXJjaGl2bygpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHBCdXR0b24gcFJpcHBsZSBjbGFzcz1cIm1sLTIgcC1idXR0b24tb3V0bGluZWRcIiBpY29uPVwiZ2x5cGhpY29ucyBnbHlwaGljb25zLWJpblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD1cInt7J2xpbmtfZWxpbWluYXInIHwgdHJhbnNsYXRlfX1cIiAoY2xpY2spPVwiZWxpbWluYXJTZWd1bmRvUGxhbm8oJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInRpcG9SZXBvcnRlID09ICdBJ1wiID5cclxuICAgICAgICAgICAgPHAtdGFibGUgW3ZhbHVlXT1cImxpc3RhUmVnaXN0cm9cIiByZXNwb25zaXZlTGF5b3V0PVwic2Nyb2xsXCIgW3Njcm9sbGFibGVdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICBbcm93c109XCIxMFwiIFt0b3RhbFJlY29yZHNdPVwibGlzdGFSZWdpc3Ryby5sZW5ndGhcIiBbcGFnaW5hdG9yXT1cImxpc3RhUmVnaXN0cm8ubGVuZ3RoID4gMTBcIiA+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRyIGNsYXNzPVwiZm9uZG9UYWJsYVBpbmNpcGFsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBbc3R5bGUud2lkdGgucHhdPVwiY29sLndpZHRoIHx8IDIwMFwiICpuZ0Zvcj1cImxldCBjb2wgb2YgY29sdW1uYXNcIj57eyBjb2wuaGVhZGVyIH19PC90aD5cclxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJib2R5XCIgbGV0LWVudHJhZGE+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgW3N0eWxlLndpZHRoLnB4XT1cImNvbC53aWR0aCB8fCAyMDBcIiAqbmdGb3I9XCJsZXQgY29sIG9mIGNvbHVtbmFzXCI+e3sgZW50cmFkYVtjb2wuZmllbGRdIH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJlbXB0eW1lc3NhZ2VcIj5cclxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInAtMyBmb250LW1lZGl1bSBlbXB0eW1lc3NhZ2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3snbWVuc2FqZXRhYmxhdmFjaWEnIHwgdHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICA8L3AtdGFibGU+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbjwvcC1kaWFsb2c+XHJcbjxhcHAtcG9wdXAtc2VudGVuY2lhIFtyZXBvcnRlXT1cInJlcG9ydGVcIiBbcGFyYW1ldHJvc109XCJwYXJhbWV0cm9zXCIgW21vc3RyYXJQb3B1cF09XCJtb3N0cmFyUG9wdXBTZW50ZW5jaWFcIlxyXG4gICAgKHJlZ3Jlc2FyKT1cInJlZ3Jlc2FyU2VudGVuY2lhKCRldmVudClcIj48L2FwcC1wb3B1cC1zZW50ZW5jaWE+Il19