general-library-union 3.0.49 → 3.0.51

Sign up to get free protection for your applications and to get access to all the features.
Files changed (653) 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 +196 -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 +72 -0
  14. package/esm2022/src/app/core/componentes/menu/menu.component.mjs +37 -0
  15. package/esm2022/src/app/core/componentes/tabla-general/tabla-general.component.mjs +93 -0
  16. package/esm2022/src/app/core/core.module.mjs +23 -0
  17. package/esm2022/src/app/core/errores/authentication.error.mjs +7 -0
  18. package/esm2022/src/app/core/modelos/error-response.model.mjs +2 -0
  19. package/esm2022/src/app/core/modelos/table-column.model.mjs +2 -0
  20. package/esm2022/src/app/core/modelos/user.model.mjs +7 -0
  21. package/esm2022/src/app/core/plantilla-general/plantilla-general.template.mjs +230 -0
  22. package/esm2022/src/app/core/servicios/auth.service.mjs +185 -0
  23. package/esm2022/src/app/core/servicios/cargar-control-funcionalidad.service.mjs +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 +338 -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 +346 -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 +378 -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 +329 -0
  152. package/esm2022/src/app/webcommon/pages/ejecucion-reporte/detalle-tipo-reporte/detalle-tipo-reporte.component.mjs +1583 -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 +767 -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-editor-formula/popup-editor-formula.component.mjs +73 -0
  169. package/esm2022/src/app/webcommon/popups/popup-punto-proceso/popup-punto-proceso.component.mjs +293 -0
  170. package/esm2022/src/app/webcommon/popups/popup-recurso/popup-recurso.component.mjs +269 -0
  171. package/esm2022/src/app/webcommon/popups/popup-reporte/popup-reporte.component.mjs +555 -0
  172. package/esm2022/src/app/webcommon/popups/popup-sentencia/popup-sentencia.component.mjs +64 -0
  173. package/esm2022/src/app/webcommon/popups/popup-tablas-fuente/popup-tablas-fuente.component.mjs +162 -0
  174. package/esm2022/src/app/webcommon/popups/punto-proceso-comp/punto-proceso-comp.component.mjs +89 -0
  175. package/esm2022/src/app/webcommon/services/carguelinea.service.mjs +69 -0
  176. package/esm2022/src/app/webcommon/services/dashboard.service.mjs +253 -0
  177. package/esm2022/src/app/webcommon/services/ejecucionreporte.service.mjs +114 -0
  178. package/esm2022/src/app/webcommon/services/fechaUtils.service.mjs +97 -0
  179. package/esm2022/src/app/webcommon/services/fuentegeneral.service.mjs +68 -0
  180. package/esm2022/src/app/webcommon/services/homologacion.service.mjs +50 -0
  181. package/esm2022/src/app/webcommon/services/plantillas.service.mjs +129 -0
  182. package/esm2022/src/app/webcommon/services/reportes.service.mjs +95 -0
  183. package/esm2022/src/app/webcommon/webcommon.module.mjs +15 -0
  184. package/esm2022/src/environments/environment.mjs +24 -0
  185. package/fesm2022/general-library-union.mjs +16036 -0
  186. package/fesm2022/general-library-union.mjs.map +1 -0
  187. package/index.d.ts +5 -0
  188. package/package.json +62 -73
  189. package/{public-api.ts → public-api.d.ts} +161 -201
  190. package/src/app/core/componentes/breadcrumb/breadcrumb.component.d.ts +18 -0
  191. package/src/app/core/componentes/carga-pantalla-completa/carga-pantalla-completa.component.d.ts +14 -0
  192. package/src/app/core/componentes/filtro-general/filtro-general.component.d.ts +34 -0
  193. package/src/app/core/componentes/footer/footer.component.d.ts +9 -0
  194. package/src/app/core/componentes/formulariodinamico/formulariodinamico.component.d.ts +46 -0
  195. package/src/app/core/componentes/formulariodinamico/objetosformulario/{Cambio.ts → Cambio.d.ts} +7 -13
  196. package/src/app/core/componentes/formulariodinamico/objetosformulario/CampoFormulario.d.ts +44 -0
  197. package/src/app/core/componentes/formulariodinamico/objetosformulario/CampoFormularioCons.d.ts +45 -0
  198. package/src/app/core/componentes/formulariodinamico/objetosformulario/CampoFormularioNuevo.d.ts +33 -0
  199. package/src/app/core/componentes/formulariodinamico/objetosformulario/HashDirective.d.ts +9 -0
  200. package/src/app/core/componentes/inicio-component/inicio-component.component.d.ts +26 -0
  201. package/src/app/core/componentes/menu/menu.component.d.ts +16 -0
  202. package/src/app/core/componentes/tabla-general/tabla-general.component.d.ts +32 -0
  203. package/src/app/core/core.module.d.ts +8 -0
  204. package/src/app/core/errores/authentication.error.d.ts +3 -0
  205. package/src/app/core/modelos/error-response.model.d.ts +9 -0
  206. package/src/app/core/modelos/table-column.model.d.ts +12 -0
  207. package/src/app/core/modelos/user.model.d.ts +6 -0
  208. package/src/app/core/plantilla-general/plantilla-general.template.d.ts +89 -0
  209. package/src/app/core/servicios/auth.service.d.ts +52 -0
  210. package/src/app/core/servicios/cargar-control-funcionalidad.service.d.ts +19 -0
  211. package/src/app/core/servicios/data-exporter-table.utils.d.ts +11 -0
  212. package/src/app/core/servicios/error-interceptor.service.d.ts +41 -0
  213. package/src/app/core/servicios/guardias/auth.guard.d.ts +17 -0
  214. package/src/app/core/servicios/guardias/publico.guard.d.ts +13 -0
  215. package/src/app/core/servicios/interceptores/loading-interceptor.d.ts +11 -0
  216. package/src/app/core/servicios/interceptores/token-interceptor.service.d.ts +26 -0
  217. package/src/app/core/servicios/loading.service.d.ts +22 -0
  218. package/src/app/core/servicios/menu.service.d.ts +35 -0
  219. package/src/app/core/servicios/spinner-service.d.ts +9 -0
  220. package/src/app/core/servicios/storage.service.d.ts +37 -0
  221. package/src/app/core/servicios/template.service.d.ts +20 -0
  222. package/src/app/core/servicios/toast.service.d.ts +48 -0
  223. package/src/app/core/servicios/utils.service.d.ts +43 -0
  224. package/src/app/core/sharedlib.module.d.ts +6 -0
  225. package/src/app/core/utilidades/color.util.d.ts +70 -0
  226. package/src/app/layout/api/{menuchangeevent.ts → menuchangeevent.d.ts} +4 -4
  227. package/src/app/layout/app.breadcrumb.component.d.ts +28 -0
  228. package/src/app/layout/app.footer.component.d.ts +8 -0
  229. package/src/app/layout/app.layout.component.d.ts +39 -0
  230. package/src/app/layout/app.layout.module.d.ts +6 -0
  231. package/src/app/layout/app.menu.component.d.ts +19 -0
  232. package/src/app/layout/app.menu.service.d.ts +12 -0
  233. package/src/app/layout/app.menuitem.component.d.ts +41 -0
  234. package/src/app/layout/app.menuprofile.component.d.ts +18 -0
  235. package/src/app/layout/app.rightmenu.component.d.ts +10 -0
  236. package/src/app/layout/app.sidebar.component.d.ts +34 -0
  237. package/src/app/layout/app.topbar.component.d.ts +79 -0
  238. package/src/app/layout/service/app.layout.service.d.ts +57 -0
  239. package/src/app/publico/pages/login/login.page.d.ts +40 -0
  240. package/src/app/publico/pages/not-found/not-found.page.d.ts +17 -0
  241. package/src/app/publico/pages/seleccion-rol/seleccion-rol.component.d.ts +41 -0
  242. package/src/app/publico/pages/timeout/timeout.page.d.ts +10 -0
  243. package/src/app/seguridad/constantes/ConstantesGenerales.d.ts +25 -0
  244. package/src/app/seguridad/constantes/ReporteEntradaConstantes.d.ts +7 -0
  245. package/src/app/seguridad/modelos/AplicacionModel.d.ts +7 -0
  246. package/src/app/seguridad/modelos/ArchivoPortalModel.d.ts +13 -0
  247. package/src/app/seguridad/modelos/AtributoPuntoModel.d.ts +8 -0
  248. package/src/app/seguridad/modelos/AtributoSSOportalModel.d.ts +16 -0
  249. package/src/app/seguridad/modelos/{AuditoriaArchivoModel.ts → AuditoriaArchivoModel.d.ts} +10 -13
  250. package/src/app/seguridad/modelos/CargueLineaModel.d.ts +12 -0
  251. package/src/app/seguridad/modelos/ColoresRGB.d.ts +17 -0
  252. package/src/app/seguridad/modelos/ColumnaFuenteModel.d.ts +8 -0
  253. package/src/app/seguridad/modelos/{ColumnaWraperModel.ts → ColumnaWraperModel.d.ts} +6 -7
  254. package/src/app/seguridad/modelos/ComplementoModel.d.ts +6 -0
  255. package/src/app/seguridad/modelos/ComponentePaginaModel.d.ts +20 -0
  256. package/src/app/seguridad/modelos/ConexionModel.d.ts +13 -0
  257. package/src/app/seguridad/modelos/{ContenidoHtmlPortalModel.ts → ContenidoHtmlPortalModel.d.ts} +20 -25
  258. package/src/app/seguridad/modelos/ControlFuncionModel.d.ts +7 -0
  259. package/src/app/seguridad/modelos/CorreoModel.d.ts +31 -0
  260. package/src/app/seguridad/modelos/CorreoWSModel.d.ts +33 -0
  261. package/src/app/seguridad/modelos/CruceRecursoPuntoModel.d.ts +13 -0
  262. package/src/app/seguridad/modelos/{DatoInicioModel.ts → DatoInicioModel.d.ts} +6 -7
  263. package/src/app/seguridad/modelos/{EjecucionReporteDataModel.ts → EjecucionReporteDataModel.d.ts} +20 -21
  264. package/src/app/seguridad/modelos/EmpresaModel.d.ts +23 -0
  265. package/src/app/seguridad/modelos/EmpresaSeguridadModel.d.ts +18 -0
  266. package/src/app/seguridad/modelos/{EntradaComplementoModel.ts → EntradaComplementoModel.d.ts} +6 -9
  267. package/src/app/seguridad/modelos/EtiquetaModel.d.ts +4 -0
  268. package/src/app/seguridad/modelos/Etiquetas.d.ts +10 -0
  269. package/src/app/seguridad/modelos/{ForeingWraperModel.ts → ForeingWraperModel.d.ts} +6 -9
  270. package/src/app/seguridad/modelos/FuenteCampoAtributoModel.d.ts +15 -0
  271. package/src/app/seguridad/modelos/{FuenteCampoModel.ts → FuenteCampoModel.d.ts} +16 -20
  272. package/src/app/seguridad/modelos/FuenteDato.d.ts +18 -0
  273. package/src/app/seguridad/modelos/FuenteEntradaModel.d.ts +8 -0
  274. package/src/app/seguridad/modelos/{FuenteGeneralModel.ts → FuenteGeneralModel.d.ts} +36 -55
  275. package/src/app/seguridad/modelos/FuenteLineaServicioModel.d.ts +16 -0
  276. package/src/app/seguridad/modelos/FuenteProcesoGeneralModel.d.ts +10 -0
  277. package/src/app/seguridad/modelos/{FuenteServicioModel.ts → FuenteServicioModel.d.ts} +47 -61
  278. package/src/app/seguridad/modelos/FuncionalidadModel.d.ts +8 -0
  279. package/src/app/seguridad/modelos/GeneralModel.d.ts +8 -0
  280. package/src/app/seguridad/modelos/{GrupoAccesoModel.ts → GrupoAccesoModel.d.ts} +6 -9
  281. package/src/app/seguridad/modelos/GrupoControlFuncionModel.d.ts +9 -0
  282. package/src/app/seguridad/modelos/GrupoFuenteModel.d.ts +13 -0
  283. package/src/app/seguridad/modelos/GrupoPermisoModel.d.ts +13 -0
  284. package/src/app/seguridad/modelos/{JoinFromModel.ts → JoinFromModel.d.ts} +4 -4
  285. package/src/app/seguridad/modelos/ListaServicioModel.d.ts +16 -0
  286. package/src/app/seguridad/modelos/LlaveForaneaModel.d.ts +6 -0
  287. package/src/app/seguridad/modelos/LoginModel.d.ts +17 -0
  288. package/src/app/seguridad/modelos/MensajeSistemaModel.d.ts +7 -0
  289. package/src/app/seguridad/modelos/{MenuPortalModel.ts → MenuPortalModel.d.ts} +4 -5
  290. package/src/app/seguridad/modelos/ModulosModel.d.ts +14 -0
  291. package/src/app/seguridad/modelos/{ObjetoReporteModel.ts → ObjetoReporteModel.d.ts} +5 -6
  292. package/src/app/seguridad/modelos/PaginaPortalModel.d.ts +19 -0
  293. package/src/app/seguridad/modelos/ParametroComponenteModel.d.ts +8 -0
  294. package/src/app/seguridad/modelos/ParametrosGeneralModel.d.ts +8 -0
  295. package/src/app/seguridad/modelos/PermisoFuncionModel.d.ts +8 -0
  296. package/src/app/seguridad/modelos/PermisocontenidoModel.d.ts +18 -0
  297. package/src/app/seguridad/modelos/{PeticionModel.ts → PeticionModel.d.ts} +15 -20
  298. package/src/app/seguridad/modelos/PreguntaSeguridadModel.d.ts +6 -0
  299. package/src/app/seguridad/modelos/PropiedadModel.d.ts +9 -0
  300. package/src/app/seguridad/modelos/PublicacionWebModel.d.ts +25 -0
  301. package/src/app/seguridad/modelos/PuntoProcesoModel.d.ts +6 -0
  302. package/src/app/seguridad/modelos/RecursoPunto.d.ts +12 -0
  303. package/src/app/seguridad/modelos/RecursoPuntoModel.d.ts +12 -0
  304. package/src/app/seguridad/modelos/ReporteBanda.d.ts +7 -0
  305. package/src/app/seguridad/modelos/ReporteColumna.d.ts +32 -0
  306. package/src/app/seguridad/modelos/ReporteColumnario.d.ts +68 -0
  307. package/src/app/seguridad/modelos/ReporteColumnarioMarcador.d.ts +23 -0
  308. package/src/app/seguridad/modelos/{ReporteEntradaModel.ts → ReporteEntradaModel.d.ts} +19 -21
  309. package/src/app/seguridad/modelos/{ReporteFuenteModel.ts → ReporteFuenteModel.d.ts} +87 -141
  310. package/src/app/seguridad/modelos/ReporteMarcador.d.ts +39 -0
  311. package/src/app/seguridad/modelos/ReporteSoporte.d.ts +9 -0
  312. package/src/app/seguridad/modelos/ReporteTabla.d.ts +12 -0
  313. package/src/app/seguridad/modelos/RespuestaModel.d.ts +8 -0
  314. package/src/app/seguridad/modelos/{RolModel.ts → RolModel.d.ts} +37 -41
  315. package/src/app/seguridad/modelos/ServidorCorreoModel.d.ts +25 -0
  316. package/src/app/seguridad/modelos/SistemaMensajeModel.d.ts +8 -0
  317. package/src/app/seguridad/modelos/SitioPortalModel.d.ts +24 -0
  318. package/src/app/seguridad/modelos/TablaFromModel.d.ts +4 -0
  319. package/src/app/seguridad/modelos/TareasModel.d.ts +49 -0
  320. package/src/app/seguridad/modelos/TextoModel.d.ts +8 -0
  321. package/src/app/seguridad/modelos/TipoEtiqueta.d.ts +7 -0
  322. package/src/app/seguridad/modelos/UnionModel.d.ts +11 -0
  323. package/src/app/seguridad/modelos/{UsuarioModel.ts → UsuarioModel.d.ts} +49 -60
  324. package/src/app/seguridad/modelos/UsuariogrupoModel.d.ts +22 -0
  325. package/src/app/seguridad/modelos/aplicacion-propiedad-model.d.ts +13 -0
  326. package/src/app/seguridad/modelos/contenidoCorreoModel.d.ts +9 -0
  327. package/src/app/shared/componentes/input-helper-seleccion-plantilla/input-helper-seleccion-plantilla.component.d.ts +47 -0
  328. package/src/app/shared/servicios/cargar-archivos.service.d.ts +15 -0
  329. package/src/app/shared/servicios/cargar-mapas.service.d.ts +18 -0
  330. package/src/app/shared/servicios/encriptado-basico.service.d.ts +10 -0
  331. package/src/app/shared/servicios/general.service.d.ts +24 -0
  332. package/src/app/shared/servicios/parametros-navegacion.service.d.ts +9 -0
  333. package/src/app/webcommon/pages/cargue-plantilla/cargue-plantilla-general/cargue-plantilla-general.component.d.ts +79 -0
  334. package/src/app/webcommon/pages/ejecucion-reporte/detalle-campo-reporte/detalle-campo-reporte.component.d.ts +79 -0
  335. package/src/app/webcommon/pages/ejecucion-reporte/detalle-distribucion-reporte/detalle-distribucion-reporte.component.d.ts +29 -0
  336. package/src/app/webcommon/pages/ejecucion-reporte/detalle-ejecucion-reporte/detalle-ejecucion-reporte.page.d.ts +69 -0
  337. package/src/app/webcommon/pages/ejecucion-reporte/detalle-entrada-reporte/detalle-entrada-reporte.component.d.ts +51 -0
  338. package/src/app/webcommon/pages/ejecucion-reporte/detalle-punto-proceso-reporte/detalle-punto-proceso-reporte.component.d.ts +77 -0
  339. package/src/app/webcommon/pages/ejecucion-reporte/detalle-tipo-reporte/detalle-tipo-reporte.component.d.ts +278 -0
  340. package/src/app/webcommon/pages/ejecucion-reporte/listado-ejecucion-reporte/listado-ejecucion-reporte.page.d.ts +42 -0
  341. package/src/app/webcommon/pages/ejecucion-reporte-externo/listado-ejecucion-reporte-externo/listado-ejecucion-reporte-externo.component.d.ts +35 -0
  342. package/src/app/webcommon/pages/fuente/importar-fuente-con/importar-fuente-con.component.d.ts +143 -0
  343. package/src/app/webcommon/pages/fuente/importar-fuente-general/importar-fuente-general.component.d.ts +49 -0
  344. package/src/app/webcommon/pages/fuente-reporte/fuente-reporte.component.d.ts +131 -0
  345. package/src/app/webcommon/pages/fuenteGeneral/fuente-general-servicio/fuente-general-servicio.component.d.ts +64 -0
  346. package/src/app/webcommon/pages/fuenteGeneral/listado-fuente-general/listado-fuente-general.page.d.ts +33 -0
  347. package/src/app/webcommon/pages/fuenteGeneral/mantenimiento-fuente-general/mantenimiento-fuente-general.page.d.ts +149 -0
  348. package/src/app/webcommon/pipes/dashboard.pipe.d.ts +48 -0
  349. package/src/app/webcommon/pipes/fuente.pipe.d.ts +136 -0
  350. package/src/app/webcommon/pipes/general.pipe.d.ts +646 -0
  351. package/src/app/webcommon/pipes/reporte-columnario.pipe.d.ts +59 -0
  352. package/src/app/webcommon/pipes/reporte-fuente.pipe.d.ts +193 -0
  353. package/src/app/webcommon/popups/popup-campos-fuente-general/popup-campos-fuente-general.component.d.ts +59 -0
  354. package/src/app/webcommon/popups/popup-convertir-plantillas/popup-convertir-plantillas.component.d.ts +27 -0
  355. package/src/app/webcommon/popups/popup-editor-formula/popup-editor-formula.component.d.ts +21 -0
  356. package/src/app/webcommon/popups/popup-punto-proceso/popup-punto-proceso.component.d.ts +64 -0
  357. package/src/app/webcommon/popups/popup-recurso/popup-recurso.component.d.ts +63 -0
  358. package/src/app/webcommon/popups/popup-reporte/popup-reporte.component.d.ts +105 -0
  359. package/src/app/webcommon/popups/popup-sentencia/popup-sentencia.component.d.ts +21 -0
  360. package/src/app/webcommon/popups/popup-tablas-fuente/popup-tablas-fuente.component.d.ts +42 -0
  361. package/src/app/webcommon/popups/punto-proceso-comp/punto-proceso-comp.component.d.ts +30 -0
  362. package/src/app/webcommon/services/carguelinea.service.d.ts +19 -0
  363. package/src/app/webcommon/services/dashboard.service.d.ts +27 -0
  364. package/src/app/webcommon/services/ejecucionreporte.service.d.ts +34 -0
  365. package/src/app/webcommon/services/fechaUtils.service.d.ts +30 -0
  366. package/src/app/webcommon/services/fuentegeneral.service.d.ts +24 -0
  367. package/src/app/webcommon/services/homologacion.service.d.ts +17 -0
  368. package/src/app/webcommon/services/plantillas.service.d.ts +26 -0
  369. package/src/app/webcommon/services/reportes.service.d.ts +35 -0
  370. package/src/app/webcommon/webcommon.module.d.ts +6 -0
  371. package/src/environments/environment.d.ts +7 -0
  372. package/src/styles/primeng/sass/overrides/_theme_styles.scss +7 -3
  373. package/.browserslistrc +0 -15
  374. package/.editorconfig +0 -16
  375. package/.vscode/extensions.json +0 -4
  376. package/.vscode/launch.json +0 -20
  377. package/.vscode/tasks.json +0 -42
  378. package/angular.json +0 -143
  379. package/karma.conf.js +0 -44
  380. package/ng-package.json +0 -21
  381. package/src/app/app.component.html +0 -12
  382. package/src/app/app.component.scss +0 -0
  383. package/src/app/app.component.spec.ts +0 -29
  384. package/src/app/app.component.ts +0 -34
  385. package/src/app/app.config.ts +0 -43
  386. package/src/app/app.module.ts +0 -10
  387. package/src/app/app.routes.ts +0 -88
  388. package/src/app/core/componentes/breadcrumb/breadcrumb.component.html +0 -6
  389. package/src/app/core/componentes/breadcrumb/breadcrumb.component.scss +0 -0
  390. package/src/app/core/componentes/breadcrumb/breadcrumb.component.ts +0 -39
  391. package/src/app/core/componentes/carga-breadcrumb/carga-breadcrumb.component.html +0 -1
  392. package/src/app/core/componentes/carga-breadcrumb/carga-breadcrumb.component.scss +0 -0
  393. package/src/app/core/componentes/carga-breadcrumb/carga-breadcrumb.component.ts +0 -31
  394. package/src/app/core/componentes/carga-pantalla-completa/carga-pantalla-completa.component.html +0 -9
  395. package/src/app/core/componentes/carga-pantalla-completa/carga-pantalla-completa.component.scss +0 -28
  396. package/src/app/core/componentes/carga-pantalla-completa/carga-pantalla-completa.component.ts +0 -32
  397. package/src/app/core/componentes/filtro-general/filtro-general.component.html +0 -36
  398. package/src/app/core/componentes/filtro-general/filtro-general.component.scss +0 -3
  399. package/src/app/core/componentes/filtro-general/filtro-general.component.ts +0 -203
  400. package/src/app/core/componentes/footer/footer.component.html +0 -13
  401. package/src/app/core/componentes/footer/footer.component.scss +0 -3
  402. package/src/app/core/componentes/footer/footer.component.ts +0 -20
  403. package/src/app/core/componentes/formulariodinamico/formulariodinamico.component.html +0 -267
  404. package/src/app/core/componentes/formulariodinamico/formulariodinamico.component.scss +0 -21
  405. package/src/app/core/componentes/formulariodinamico/formulariodinamico.component.ts +0 -275
  406. package/src/app/core/componentes/formulariodinamico/objetosformulario/CampoFormulario.ts +0 -118
  407. package/src/app/core/componentes/formulariodinamico/objetosformulario/CampoFormularioCons.ts +0 -76
  408. package/src/app/core/componentes/formulariodinamico/objetosformulario/CampoFormularioNuevo.ts +0 -67
  409. package/src/app/core/componentes/formulariodinamico/objetosformulario/HashDirective.ts +0 -11
  410. package/src/app/core/componentes/inicio-component/inicio-component.component.html +0 -29
  411. package/src/app/core/componentes/inicio-component/inicio-component.component.scss +0 -69
  412. package/src/app/core/componentes/inicio-component/inicio-component.component.ts +0 -70
  413. package/src/app/core/componentes/menu/menu.component.html +0 -13
  414. package/src/app/core/componentes/menu/menu.component.scss +0 -36
  415. package/src/app/core/componentes/menu/menu.component.ts +0 -35
  416. package/src/app/core/componentes/tabla-general/tabla-general.component.html +0 -90
  417. package/src/app/core/componentes/tabla-general/tabla-general.component.scss +0 -0
  418. package/src/app/core/componentes/tabla-general/tabla-general.component.ts +0 -96
  419. package/src/app/core/core.module.ts +0 -22
  420. package/src/app/core/errores/authentication.error.ts +0 -6
  421. package/src/app/core/modelos/error-response.model.ts +0 -9
  422. package/src/app/core/modelos/table-column.model.ts +0 -10
  423. package/src/app/core/modelos/user.model.ts +0 -6
  424. package/src/app/core/plantilla-general/plantilla-general.template.html +0 -139
  425. package/src/app/core/plantilla-general/plantilla-general.template.scss +0 -37
  426. package/src/app/core/plantilla-general/plantilla-general.template.ts +0 -233
  427. package/src/app/core/servicios/auth.service.ts +0 -189
  428. package/src/app/core/servicios/cargar-control-funcionalidad.service.ts +0 -49
  429. package/src/app/core/servicios/data-exporter-table.utils.ts +0 -78
  430. package/src/app/core/servicios/error-interceptor.service.ts +0 -208
  431. package/src/app/core/servicios/guardias/auth.guard.ts +0 -51
  432. package/src/app/core/servicios/guardias/publico.guard.ts +0 -26
  433. package/src/app/core/servicios/interceptores/loading-interceptor.ts +0 -37
  434. package/src/app/core/servicios/interceptores/token-interceptor.service.ts +0 -177
  435. package/src/app/core/servicios/loading.service.ts +0 -48
  436. package/src/app/core/servicios/menu.service.ts +0 -153
  437. package/src/app/core/servicios/spinner-service.ts +0 -18
  438. package/src/app/core/servicios/storage.service.ts +0 -68
  439. package/src/app/core/servicios/template.service.ts +0 -91
  440. package/src/app/core/servicios/toast.service.ts +0 -114
  441. package/src/app/core/servicios/utils.service.ts +0 -367
  442. package/src/app/core/sharedlib.module.ts +0 -11
  443. package/src/app/core/utilidades/color.util.ts +0 -197
  444. package/src/app/layout/app.breadcrumb.component.html +0 -20
  445. package/src/app/layout/app.breadcrumb.component.ts +0 -78
  446. package/src/app/layout/app.footer.component.html +0 -18
  447. package/src/app/layout/app.footer.component.ts +0 -15
  448. package/src/app/layout/app.layout.component.html +0 -20
  449. package/src/app/layout/app.layout.component.ts +0 -201
  450. package/src/app/layout/app.layout.module.ts +0 -9
  451. package/src/app/layout/app.menu.component.html +0 -6
  452. package/src/app/layout/app.menu.component.ts +0 -51
  453. package/src/app/layout/app.menu.service.ts +0 -23
  454. package/src/app/layout/app.menuitem.component.ts +0 -252
  455. package/src/app/layout/app.menuprofile.component.html +0 -35
  456. package/src/app/layout/app.menuprofile.component.ts +0 -60
  457. package/src/app/layout/app.rightmenu.component.html +0 -72
  458. package/src/app/layout/app.rightmenu.component.ts +0 -24
  459. package/src/app/layout/app.sidebar.component.html +0 -40
  460. package/src/app/layout/app.sidebar.component.ts +0 -81
  461. package/src/app/layout/app.topbar.component.html +0 -214
  462. package/src/app/layout/app.topbar.component.ts +0 -336
  463. package/src/app/layout/config/app.config.component.html +0 -125
  464. package/src/app/layout/config/app.config.component.ts +0 -206
  465. package/src/app/layout/config/app.config.module.ts +0 -11
  466. package/src/app/layout/service/app.layout.service.ts +0 -191
  467. package/src/app/publico/pages/login/login.page.html +0 -53
  468. package/src/app/publico/pages/login/login.page.scss +0 -166
  469. package/src/app/publico/pages/login/login.page.ts +0 -128
  470. package/src/app/publico/pages/not-found/not-found.page.html +0 -35
  471. package/src/app/publico/pages/not-found/not-found.page.scss +0 -2
  472. package/src/app/publico/pages/not-found/not-found.page.ts +0 -46
  473. package/src/app/publico/pages/seleccion-rol/seleccion-rol.component.html +0 -58
  474. package/src/app/publico/pages/seleccion-rol/seleccion-rol.component.scss +0 -49
  475. package/src/app/publico/pages/seleccion-rol/seleccion-rol.component.ts +0 -176
  476. package/src/app/publico/pages/timeout/timeout.page.html +0 -24
  477. package/src/app/publico/pages/timeout/timeout.page.scss +0 -2
  478. package/src/app/publico/pages/timeout/timeout.page.ts +0 -18
  479. package/src/app/seguridad/constantes/ConstantesGenerales.ts +0 -30
  480. package/src/app/seguridad/constantes/ReporteEntradaConstantes.ts +0 -18
  481. package/src/app/seguridad/constantes/ReporteFuenteConstantes.ts +0 -13
  482. package/src/app/seguridad/modelos/AplicacionModel.ts +0 -11
  483. package/src/app/seguridad/modelos/ArchivoPortalModel.ts +0 -16
  484. package/src/app/seguridad/modelos/AtributoPuntoModel.ts +0 -9
  485. package/src/app/seguridad/modelos/AtributoSSOportalModel.ts +0 -22
  486. package/src/app/seguridad/modelos/CargueLineaModel.ts +0 -17
  487. package/src/app/seguridad/modelos/ColoresRGB.ts +0 -17
  488. package/src/app/seguridad/modelos/ColumnaFuenteModel.ts +0 -9
  489. package/src/app/seguridad/modelos/ComplementoModel.ts +0 -10
  490. package/src/app/seguridad/modelos/ComponentePaginaModel.ts +0 -22
  491. package/src/app/seguridad/modelos/ConexionModel.ts +0 -15
  492. package/src/app/seguridad/modelos/ControlFuncionModel.ts +0 -10
  493. package/src/app/seguridad/modelos/CorreoModel.ts +0 -45
  494. package/src/app/seguridad/modelos/CorreoWSModel.ts +0 -49
  495. package/src/app/seguridad/modelos/CruceRecursoPuntoModel.ts +0 -14
  496. package/src/app/seguridad/modelos/EmpresaModel.ts +0 -25
  497. package/src/app/seguridad/modelos/EmpresaSeguridadModel.ts +0 -19
  498. package/src/app/seguridad/modelos/EtiquetaModel.ts +0 -4
  499. package/src/app/seguridad/modelos/Etiquetas.ts +0 -14
  500. package/src/app/seguridad/modelos/FuenteCampoAtributoModel.ts +0 -21
  501. package/src/app/seguridad/modelos/FuenteDato.ts +0 -19
  502. package/src/app/seguridad/modelos/FuenteEntradaModel.ts +0 -9
  503. package/src/app/seguridad/modelos/FuenteLineaServicioModel.ts +0 -19
  504. package/src/app/seguridad/modelos/FuenteProcesoGeneralModel.ts +0 -14
  505. package/src/app/seguridad/modelos/FuncionalidadModel.ts +0 -12
  506. package/src/app/seguridad/modelos/GeneralModel.ts +0 -16
  507. package/src/app/seguridad/modelos/GrupoControlFuncionModel.ts +0 -12
  508. package/src/app/seguridad/modelos/GrupoFuenteModel.ts +0 -17
  509. package/src/app/seguridad/modelos/GrupoPermisoModel.ts +0 -16
  510. package/src/app/seguridad/modelos/ListaServicioModel.ts +0 -18
  511. package/src/app/seguridad/modelos/LlaveForaneaModel.ts +0 -6
  512. package/src/app/seguridad/modelos/LoginModel.ts +0 -19
  513. package/src/app/seguridad/modelos/MensajeSistemaModel.ts +0 -10
  514. package/src/app/seguridad/modelos/ModulosModel.ts +0 -17
  515. package/src/app/seguridad/modelos/PaginaPortalModel.ts +0 -23
  516. package/src/app/seguridad/modelos/ParametroComponenteModel.ts +0 -9
  517. package/src/app/seguridad/modelos/ParametrosGeneralModel.ts +0 -16
  518. package/src/app/seguridad/modelos/PermisoFuncionModel.ts +0 -11
  519. package/src/app/seguridad/modelos/PermisocontenidoModel.ts +0 -20
  520. package/src/app/seguridad/modelos/PreguntaSeguridadModel.ts +0 -9
  521. package/src/app/seguridad/modelos/PropiedadModel.ts +0 -12
  522. package/src/app/seguridad/modelos/PublicacionWebModel.ts +0 -29
  523. package/src/app/seguridad/modelos/PuntoProcesoModel.ts +0 -7
  524. package/src/app/seguridad/modelos/RecursoPunto.ts +0 -13
  525. package/src/app/seguridad/modelos/RecursoPuntoModel.ts +0 -13
  526. package/src/app/seguridad/modelos/ReporteBanda.ts +0 -9
  527. package/src/app/seguridad/modelos/ReporteColumna.ts +0 -33
  528. package/src/app/seguridad/modelos/ReporteColumnario.ts +0 -82
  529. package/src/app/seguridad/modelos/ReporteColumnarioMarcador.ts +0 -31
  530. package/src/app/seguridad/modelos/ReporteMarcador.ts +0 -40
  531. package/src/app/seguridad/modelos/ReporteSoporte.ts +0 -10
  532. package/src/app/seguridad/modelos/ReporteTabla.ts +0 -14
  533. package/src/app/seguridad/modelos/RespuestaModel.ts +0 -10
  534. package/src/app/seguridad/modelos/ServidorCorreoModel.ts +0 -31
  535. package/src/app/seguridad/modelos/SistemaMensajeModel.ts +0 -11
  536. package/src/app/seguridad/modelos/SitioPortalModel.ts +0 -29
  537. package/src/app/seguridad/modelos/TablaFromModel.ts +0 -5
  538. package/src/app/seguridad/modelos/TareasModel.ts +0 -54
  539. package/src/app/seguridad/modelos/TextoModel.ts +0 -11
  540. package/src/app/seguridad/modelos/TipoEtiqueta.ts +0 -8
  541. package/src/app/seguridad/modelos/UnionModel.ts +0 -14
  542. package/src/app/seguridad/modelos/UsuariogrupoModel.ts +0 -27
  543. package/src/app/seguridad/modelos/aplicacion-propiedad-model.ts +0 -16
  544. package/src/app/seguridad/modelos/contenidoCorreoModel.ts +0 -13
  545. package/src/app/shared/componentes/input-helper-seleccion-plantilla/input-helper-seleccion-plantilla.component.html +0 -47
  546. package/src/app/shared/componentes/input-helper-seleccion-plantilla/input-helper-seleccion-plantilla.component.scss +0 -8
  547. package/src/app/shared/componentes/input-helper-seleccion-plantilla/input-helper-seleccion-plantilla.component.ts +0 -144
  548. package/src/app/shared/servicios/cargar-archivos.service.ts +0 -51
  549. package/src/app/shared/servicios/cargar-mapas.service.ts +0 -43
  550. package/src/app/shared/servicios/encriptado-basico.service.ts +0 -54
  551. package/src/app/shared/servicios/encriptador-simetrico.service.ts +0 -29
  552. package/src/app/shared/servicios/general.service.ts +0 -124
  553. package/src/app/shared/servicios/parametros-navegacion.service.ts +0 -20
  554. package/src/app/shared/servicios/plantillas.service.ts +0 -22
  555. package/src/app/shared/servicios/tarea.service.ts +0 -71
  556. package/src/app/shared/utilidades/translate-loader.util.ts +0 -44
  557. package/src/app/webcommon/pages/cargue-plantilla/cargue-plantilla-general/cargue-plantilla-general.component.html +0 -175
  558. package/src/app/webcommon/pages/cargue-plantilla/cargue-plantilla-general/cargue-plantilla-general.component.scss +0 -78
  559. package/src/app/webcommon/pages/cargue-plantilla/cargue-plantilla-general/cargue-plantilla-general.component.ts +0 -438
  560. package/src/app/webcommon/pages/ejecucion-reporte/detalle-campo-reporte/detalle-campo-reporte.component.html +0 -87
  561. package/src/app/webcommon/pages/ejecucion-reporte/detalle-campo-reporte/detalle-campo-reporte.component.scss +0 -0
  562. package/src/app/webcommon/pages/ejecucion-reporte/detalle-campo-reporte/detalle-campo-reporte.component.ts +0 -189
  563. package/src/app/webcommon/pages/ejecucion-reporte/detalle-distribucion-reporte/detalle-distribucion-reporte.component.html +0 -117
  564. package/src/app/webcommon/pages/ejecucion-reporte/detalle-distribucion-reporte/detalle-distribucion-reporte.component.scss +0 -0
  565. package/src/app/webcommon/pages/ejecucion-reporte/detalle-distribucion-reporte/detalle-distribucion-reporte.component.ts +0 -87
  566. package/src/app/webcommon/pages/ejecucion-reporte/detalle-ejecucion-reporte/detalle-ejecucion-reporte.page.html +0 -158
  567. package/src/app/webcommon/pages/ejecucion-reporte/detalle-ejecucion-reporte/detalle-ejecucion-reporte.page.scss +0 -6
  568. package/src/app/webcommon/pages/ejecucion-reporte/detalle-ejecucion-reporte/detalle-ejecucion-reporte.page.ts +0 -345
  569. package/src/app/webcommon/pages/ejecucion-reporte/detalle-entrada-reporte/detalle-entrada-reporte.component.html +0 -131
  570. package/src/app/webcommon/pages/ejecucion-reporte/detalle-entrada-reporte/detalle-entrada-reporte.component.scss +0 -0
  571. package/src/app/webcommon/pages/ejecucion-reporte/detalle-entrada-reporte/detalle-entrada-reporte.component.ts +0 -198
  572. package/src/app/webcommon/pages/ejecucion-reporte/detalle-punto-proceso-reporte/detalle-punto-proceso-reporte.component.html +0 -206
  573. package/src/app/webcommon/pages/ejecucion-reporte/detalle-punto-proceso-reporte/detalle-punto-proceso-reporte.component.scss +0 -3
  574. package/src/app/webcommon/pages/ejecucion-reporte/detalle-punto-proceso-reporte/detalle-punto-proceso-reporte.component.ts +0 -330
  575. package/src/app/webcommon/pages/ejecucion-reporte/detalle-tipo-reporte/detalle-tipo-reporte.component.html +0 -2121
  576. package/src/app/webcommon/pages/ejecucion-reporte/detalle-tipo-reporte/detalle-tipo-reporte.component.scss +0 -241
  577. package/src/app/webcommon/pages/ejecucion-reporte/detalle-tipo-reporte/detalle-tipo-reporte.component.ts +0 -1694
  578. package/src/app/webcommon/pages/ejecucion-reporte/listado-ejecucion-reporte/listado-ejecucion-reporte.page.html +0 -33
  579. package/src/app/webcommon/pages/ejecucion-reporte/listado-ejecucion-reporte/listado-ejecucion-reporte.page.scss +0 -0
  580. package/src/app/webcommon/pages/ejecucion-reporte/listado-ejecucion-reporte/listado-ejecucion-reporte.page.ts +0 -96
  581. package/src/app/webcommon/pages/ejecucion-reporte-externo/listado-ejecucion-reporte-externo/listado-ejecucion-reporte-externo.component.html +0 -54
  582. package/src/app/webcommon/pages/ejecucion-reporte-externo/listado-ejecucion-reporte-externo/listado-ejecucion-reporte-externo.component.scss +0 -0
  583. package/src/app/webcommon/pages/ejecucion-reporte-externo/listado-ejecucion-reporte-externo/listado-ejecucion-reporte-externo.component.ts +0 -111
  584. package/src/app/webcommon/pages/fuente/importar-fuente-con/importar-fuente-con.component.html +0 -394
  585. package/src/app/webcommon/pages/fuente/importar-fuente-con/importar-fuente-con.component.scss +0 -10
  586. package/src/app/webcommon/pages/fuente/importar-fuente-con/importar-fuente-con.component.ts +0 -599
  587. package/src/app/webcommon/pages/fuente/importar-fuente-general/importar-fuente-general.component.html +0 -130
  588. package/src/app/webcommon/pages/fuente/importar-fuente-general/importar-fuente-general.component.scss +0 -0
  589. package/src/app/webcommon/pages/fuente/importar-fuente-general/importar-fuente-general.component.ts +0 -172
  590. package/src/app/webcommon/pages/fuente-reporte/fuente-reporte.component.html +0 -403
  591. package/src/app/webcommon/pages/fuente-reporte/fuente-reporte.component.scss +0 -5
  592. package/src/app/webcommon/pages/fuente-reporte/fuente-reporte.component.ts +0 -761
  593. package/src/app/webcommon/pages/fuenteGeneral/fuente-general-servicio/fuente-general-servicio.component.html +0 -145
  594. package/src/app/webcommon/pages/fuenteGeneral/fuente-general-servicio/fuente-general-servicio.component.scss +0 -0
  595. package/src/app/webcommon/pages/fuenteGeneral/fuente-general-servicio/fuente-general-servicio.component.ts +0 -302
  596. package/src/app/webcommon/pages/fuenteGeneral/listado-fuente-general/listado-fuente-general.page.html +0 -19
  597. package/src/app/webcommon/pages/fuenteGeneral/listado-fuente-general/listado-fuente-general.page.scss +0 -0
  598. package/src/app/webcommon/pages/fuenteGeneral/listado-fuente-general/listado-fuente-general.page.ts +0 -89
  599. package/src/app/webcommon/pages/fuenteGeneral/mantenimiento-fuente-general/mantenimiento-fuente-general.page.html +0 -714
  600. package/src/app/webcommon/pages/fuenteGeneral/mantenimiento-fuente-general/mantenimiento-fuente-general.page.scss +0 -0
  601. package/src/app/webcommon/pages/fuenteGeneral/mantenimiento-fuente-general/mantenimiento-fuente-general.page.ts +0 -688
  602. package/src/app/webcommon/pipes/dashboard.pipe.ts +0 -79
  603. package/src/app/webcommon/pipes/fuente.pipe.ts +0 -207
  604. package/src/app/webcommon/pipes/general.pipe.ts +0 -1043
  605. package/src/app/webcommon/pipes/reporte-columnario.pipe.ts +0 -101
  606. package/src/app/webcommon/pipes/reporte-fuente.pipe.ts +0 -306
  607. package/src/app/webcommon/pipes/sara-general.pipe.ts +0 -289
  608. package/src/app/webcommon/popups/popup-campos-fuente-general/popup-campos-fuente-general.component.html +0 -90
  609. package/src/app/webcommon/popups/popup-campos-fuente-general/popup-campos-fuente-general.component.scss +0 -0
  610. package/src/app/webcommon/popups/popup-campos-fuente-general/popup-campos-fuente-general.component.ts +0 -262
  611. package/src/app/webcommon/popups/popup-convertir-plantillas/popup-convertir-plantillas.component.html +0 -50
  612. package/src/app/webcommon/popups/popup-convertir-plantillas/popup-convertir-plantillas.component.scss +0 -0
  613. package/src/app/webcommon/popups/popup-convertir-plantillas/popup-convertir-plantillas.component.ts +0 -135
  614. package/src/app/webcommon/popups/popup-editor-formula/popup-editor-formula.component.html +0 -44
  615. package/src/app/webcommon/popups/popup-editor-formula/popup-editor-formula.component.scss +0 -0
  616. package/src/app/webcommon/popups/popup-editor-formula/popup-editor-formula.component.ts +0 -66
  617. package/src/app/webcommon/popups/popup-punto-proceso/popup-punto-proceso.component.html +0 -41
  618. package/src/app/webcommon/popups/popup-punto-proceso/popup-punto-proceso.component.scss +0 -0
  619. package/src/app/webcommon/popups/popup-punto-proceso/popup-punto-proceso.component.ts +0 -283
  620. package/src/app/webcommon/popups/popup-recurso/popup-recurso.component.html +0 -179
  621. package/src/app/webcommon/popups/popup-recurso/popup-recurso.component.scss +0 -3
  622. package/src/app/webcommon/popups/popup-recurso/popup-recurso.component.ts +0 -266
  623. package/src/app/webcommon/popups/popup-reporte/popup-reporte.component.html +0 -273
  624. package/src/app/webcommon/popups/popup-reporte/popup-reporte.component.scss +0 -13
  625. package/src/app/webcommon/popups/popup-reporte/popup-reporte.component.ts +0 -557
  626. package/src/app/webcommon/popups/popup-sentencia/popup-sentencia.component.html +0 -10
  627. package/src/app/webcommon/popups/popup-sentencia/popup-sentencia.component.scss +0 -5
  628. package/src/app/webcommon/popups/popup-sentencia/popup-sentencia.component.ts +0 -58
  629. package/src/app/webcommon/popups/popup-tablas-fuente/popup-tablas-fuente.component.html +0 -71
  630. package/src/app/webcommon/popups/popup-tablas-fuente/popup-tablas-fuente.component.scss +0 -0
  631. package/src/app/webcommon/popups/popup-tablas-fuente/popup-tablas-fuente.component.ts +0 -154
  632. package/src/app/webcommon/popups/punto-proceso-comp/punto-proceso-comp.component.html +0 -11
  633. package/src/app/webcommon/popups/punto-proceso-comp/punto-proceso-comp.component.scss +0 -0
  634. package/src/app/webcommon/popups/punto-proceso-comp/punto-proceso-comp.component.ts +0 -82
  635. package/src/app/webcommon/services/carguelinea.service.ts +0 -74
  636. package/src/app/webcommon/services/dashboard.service.ts +0 -258
  637. package/src/app/webcommon/services/ejecucionreporte.service.ts +0 -160
  638. package/src/app/webcommon/services/fechaUtils.service.ts +0 -127
  639. package/src/app/webcommon/services/fuentegeneral.service.ts +0 -74
  640. package/src/app/webcommon/services/homologacion.service.ts +0 -49
  641. package/src/app/webcommon/services/plantillas.service.ts +0 -165
  642. package/src/app/webcommon/services/reportes.service.ts +0 -133
  643. package/src/app/webcommon/webcommon.module.ts +0 -11
  644. package/src/environments/environment.prod.ts +0 -3
  645. package/src/environments/environment.ts +0 -25
  646. package/src/favicon.ico +0 -0
  647. package/src/index.html +0 -14
  648. package/src/main.ts +0 -12
  649. package/src/polyfills.ts +0 -53
  650. package/src/test.ts +0 -14
  651. package/tsconfig.app.json +0 -15
  652. package/tsconfig.json +0 -35
  653. package/tsconfig.spec.json +0 -18
@@ -0,0 +1,378 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { Component, ViewChild } from '@angular/core';
3
+ import { TranslateModule } from '@ngx-translate/core';
4
+ import { ConfirmationService } from 'primeng/api';
5
+ import { ButtonModule } from 'primeng/button';
6
+ import { InputTextModule } from 'primeng/inputtext';
7
+ import { SplitButtonModule } from 'primeng/splitbutton';
8
+ import { TreeModule } from 'primeng/tree';
9
+ import { ConfirmPopupModule } from 'primeng/confirmpopup';
10
+ import { FormsModule } from '@angular/forms';
11
+ import { FieldsetModule } from 'primeng/fieldset';
12
+ import { FileUploadModule } from 'primeng/fileupload';
13
+ import { PopupConvertirPlantillasComponent } from '../../../../webcommon/popups/popup-convertir-plantillas/popup-convertir-plantillas.component';
14
+ import { firstValueFrom } from 'rxjs';
15
+ import { EditorModule } from 'primeng/editor';
16
+ import { ProgressBarModule } from 'primeng/progressbar';
17
+ import * as i0 from "@angular/core";
18
+ import * as i1 from "../../../../webcommon/services/plantillas.service";
19
+ import * as i2 from "../../../../core/servicios/auth.service";
20
+ import * as i3 from "@ngx-translate/core";
21
+ import * as i4 from "../../../../core/servicios/cargar-control-funcionalidad.service";
22
+ import * as i5 from "primeng/api";
23
+ import * as i6 from "../../../../core/servicios/toast.service";
24
+ import * as i7 from "../../../../shared/servicios/cargar-archivos.service";
25
+ import * as i8 from "../../../../shared/servicios/encriptado-basico.service";
26
+ import * as i9 from "../../../../webcommon/pipes/general.pipe";
27
+ import * as i10 from "../../../../core/servicios/utils.service";
28
+ import * as i11 from "@angular/common";
29
+ import * as i12 from "primeng/tree";
30
+ import * as i13 from "primeng/inputtext";
31
+ import * as i14 from "primeng/button";
32
+ import * as i15 from "primeng/tooltip";
33
+ import * as i16 from "primeng/confirmpopup";
34
+ import * as i17 from "@angular/forms";
35
+ import * as i18 from "primeng/fileupload";
36
+ import * as i19 from "primeng/progressbar";
37
+ import * as i20 from "primeng/editor";
38
+ export class CarguePlantillaGeneralComponent {
39
+ plantillasService;
40
+ authService;
41
+ translateService;
42
+ controlFuncionService;
43
+ confirmationService;
44
+ toastService;
45
+ cargarArchivoServices;
46
+ encriptadoBasico;
47
+ generalPipe;
48
+ utilsService;
49
+ popupConvertirPlantillasComponent;
50
+ miFormulario;
51
+ treeComponent;
52
+ loading;
53
+ propiedad;
54
+ extensiones;
55
+ propiedadDeSistema = false;
56
+ anexoPropiedad = '';
57
+ files;
58
+ dataSelected;
59
+ itemsBotonAcciones;
60
+ verConvertir;
61
+ nomNuevaCarpeta;
62
+ isVisualizarCrearCaperta = false;
63
+ archivoSeleccionadoAnexo;
64
+ archivoSeleccionado;
65
+ isMostrarPopupConvertir = false;
66
+ rutaPrincipal;
67
+ filteredFiles = [];
68
+ filterValue = '';
69
+ filtroConvertir;
70
+ html;
71
+ mostrarEditor;
72
+ modificarHTML;
73
+ FORMATS_VALIDOS = new Set([
74
+ '.doc',
75
+ '.html',
76
+ '.jasper',
77
+ '.xls',
78
+ '.jrxml',
79
+ '.odt',
80
+ '.xlsm',
81
+ '.xlsx',
82
+ '.pgp',
83
+ '.asc',
84
+ '.cer',
85
+ '.p12',
86
+ '.docx',
87
+ '.properties'
88
+ ]);
89
+ FORMATOS = 'doc;html;jasper;xls;jrxml;odt;xlsm;xlsx;pgp;asc;cer;p12;docx;properties';
90
+ constructor(plantillasService, authService, translateService, controlFuncionService, confirmationService, toastService, cargarArchivoServices, encriptadoBasico, generalPipe, utilsService) {
91
+ this.plantillasService = plantillasService;
92
+ this.authService = authService;
93
+ this.translateService = translateService;
94
+ this.controlFuncionService = controlFuncionService;
95
+ this.confirmationService = confirmationService;
96
+ this.toastService = toastService;
97
+ this.cargarArchivoServices = cargarArchivoServices;
98
+ this.encriptadoBasico = encriptadoBasico;
99
+ this.generalPipe = generalPipe;
100
+ this.utilsService = utilsService;
101
+ }
102
+ async ngOnInit() {
103
+ this.loading = true;
104
+ this.mostrarEditor = false;
105
+ let consultarRutaPrincipal = await firstValueFrom(this.cargarArchivoServices.getPropiedad({ propiedad: "ruta_plantillas", aplicacion: 1 }));
106
+ let convertir = await firstValueFrom(this.cargarArchivoServices.getPropiedad({ propiedad: "servidor_openOffice", aplicacion: 0 }));
107
+ this.verConvertir = !convertir.valor.valor ? true : false;
108
+ this.rutaPrincipal = consultarRutaPrincipal.valor.valor;
109
+ this.isVisualizarCrearCaperta = false;
110
+ await this.openDataTable();
111
+ const sleep = (m) => new Promise((r) => setTimeout(r, m));
112
+ await sleep(100);
113
+ if (this.filterValue) {
114
+ await this.aplicarFiltro();
115
+ }
116
+ }
117
+ async openDataTable() {
118
+ setTimeout(() => {
119
+ this.loading = true;
120
+ if (!this.propiedad) {
121
+ this.propiedad = 'ruta_plantillas';
122
+ }
123
+ this.plantillasService.obtenerArchivos(this.propiedad, this.propiedadDeSistema ? '0' : this.authService.getTokenKey('aplicacion'), this.FORMATOS, this.anexoPropiedad, true).subscribe(rta => {
124
+ this.files = rta;
125
+ this.filteredFiles = rta;
126
+ this.loading = false;
127
+ //this.isCargarInicio = false;
128
+ if (!this.archivoSeleccionado) {
129
+ this.archivoSeleccionado = this.files[0];
130
+ }
131
+ });
132
+ }, 1000);
133
+ }
134
+ async aplicarFiltro() {
135
+ this.filtroConvertir = this.filterValue;
136
+ this.loading = true;
137
+ setTimeout(() => {
138
+ this.filteredFiles = this.obtenerFiltrosNodos(this.files, this.filterValue);
139
+ this.loading = false;
140
+ }, 1000);
141
+ }
142
+ obtenerFiltrosNodos(nodes, filterValue) {
143
+ const filters = this.filtroAvanzado(filterValue);
144
+ const filteredNodes = [];
145
+ nodes.forEach(node => {
146
+ // Verifica si el nodo actual o alguno de sus hijos cumple con el filtro
147
+ const children = node.children ? this.obtenerFiltrosNodos(node.children, filterValue) : [];
148
+ const nodeMatches = filters.some(filter => node.label.includes(filter));
149
+ if (nodeMatches || children.length > 0) {
150
+ filteredNodes.push({ ...node, children });
151
+ }
152
+ });
153
+ return filteredNodes;
154
+ }
155
+ filtroAvanzado(search) {
156
+ if (search.includes('+')) {
157
+ let aux = search;
158
+ if (aux.startsWith('+')) {
159
+ aux = aux.substring(1);
160
+ }
161
+ aux = aux.replace(/\+/g, ':');
162
+ const items = aux.trim().split(':');
163
+ return items;
164
+ }
165
+ else {
166
+ return [search];
167
+ }
168
+ }
169
+ filtrarEnter(event) {
170
+ if (event.key === 'Enter') {
171
+ this.aplicarFiltro();
172
+ }
173
+ }
174
+ seleccionarArchivo(event) {
175
+ this.archivoSeleccionado = event.node;
176
+ this.mostrarEditor = false;
177
+ }
178
+ deseleccionarArchivo($event) {
179
+ this.dataSelected = null;
180
+ }
181
+ async cargarNuevo(event, fubauto) {
182
+ this.isVisualizarCrearCaperta = false;
183
+ this.archivoSeleccionadoAnexo = event.files[0];
184
+ if (!this.isFormatoValido(this.archivoSeleccionadoAnexo.name)) {
185
+ this.toastService.showWarning("Se debe agregar un archivo " + Array.from(this.FORMATS_VALIDOS).join(', '));
186
+ fubauto.clear();
187
+ return;
188
+ }
189
+ //Cargar Archivo Temporal
190
+ let resultado = await firstValueFrom(this.plantillasService.cargarDocumentoTemporal(this.archivoSeleccionadoAnexo));
191
+ fubauto.clear();
192
+ if (resultado?.validacion) {
193
+ this.toastService.showSuccess(resultado?.validacion);
194
+ return;
195
+ }
196
+ let informacionArchivo = resultado?.informacionArchivo ? resultado?.informacionArchivo : null;
197
+ //Obtener Rutas
198
+ let rutaComplemento = this.archivoSeleccionado.data;
199
+ //let objeto = (await this.cargarArchivoServices.getPropiedad({ propiedad: "ruta_plantillas", aplicacion: 1 }).toPromise());
200
+ if (!this.archivoSeleccionado?.parent) {
201
+ rutaComplemento = '';
202
+ }
203
+ //Verifica si el documento ya existe
204
+ let data = await firstValueFrom(this.plantillasService.existeDocumento(this.rutaPrincipal, rutaComplemento, informacionArchivo));
205
+ if (data?.validacionDocumento) {
206
+ this.toastService.showWarning(data?.validacionDocumento);
207
+ return;
208
+ }
209
+ //Guarda el documento
210
+ await firstValueFrom(this.plantillasService.cargarDocumento(this.rutaPrincipal, rutaComplemento, informacionArchivo));
211
+ this.toastService.showSuccess(this.generalPipe.MENSAJE_GUARDAR);
212
+ this.ngOnInit();
213
+ }
214
+ async descargarAnexo() {
215
+ //Ruta archivo
216
+ let rutaComplemento = this.archivoSeleccionado.data;
217
+ if (!this.archivoSeleccionado?.parent) {
218
+ rutaComplemento = '';
219
+ }
220
+ this.cargarArchivoServices.descargarArchivo(this.encriptadoBasico.encriptar(this.rutaPrincipal + rutaComplemento), undefined, undefined).subscribe(blob => {
221
+ const a = document.createElement('a');
222
+ const objectUrl = URL.createObjectURL(blob);
223
+ a.href = objectUrl;
224
+ a.download = this.archivoSeleccionado?.label;
225
+ a.click();
226
+ URL.revokeObjectURL(objectUrl);
227
+ });
228
+ }
229
+ eliminarArchivo() {
230
+ this.confirmationService.confirm({
231
+ target: event.target,
232
+ key: 'eliminarArchivo',
233
+ message: '¿Desea eliminar el registro?',
234
+ acceptLabel: 'Si',
235
+ icon: 'confirmar',
236
+ accept: () => {
237
+ this.setEliminarArchivo();
238
+ },
239
+ reject: () => { },
240
+ });
241
+ }
242
+ async setEliminarArchivo() {
243
+ this.loading = true;
244
+ //Ruta archivo
245
+ let rutaComplemento = this.archivoSeleccionado.data;
246
+ if (!this.archivoSeleccionado?.parent) {
247
+ rutaComplemento = '';
248
+ }
249
+ let propiedad = 'ruta_plantillas';
250
+ await firstValueFrom(this.cargarArchivoServices.eliminarArchivo(this.encriptadoBasico.encriptar(rutaComplemento), propiedad, '1'));
251
+ this.toastService.showSuccess(this.generalPipe.MENSAJE_ELIMINAR);
252
+ this.archivoSeleccionado = null;
253
+ this.filterValue = null;
254
+ this.ngOnInit();
255
+ }
256
+ isFormatoValido(nombreArchivo) {
257
+ // Verifica si el archivo termina con alguna de las extensiones válidas
258
+ return Array.from(this.FORMATS_VALIDOS).some(ext => nombreArchivo.endsWith(ext));
259
+ }
260
+ crearCarpeta() {
261
+ this.isVisualizarCrearCaperta = true;
262
+ this.nomNuevaCarpeta = null;
263
+ }
264
+ async guardarCarpeta() {
265
+ if (this.miFormulario.valid) {
266
+ let rutaComplemento = this.archivoSeleccionado.data;
267
+ if (!this.archivoSeleccionado?.parent) {
268
+ rutaComplemento = '';
269
+ }
270
+ await firstValueFrom(this.plantillasService.crearCarpeta(this.rutaPrincipal, rutaComplemento, this.nomNuevaCarpeta));
271
+ this.toastService.showSuccess('La carpeta se ha creado correctamente');
272
+ this.ngOnInit();
273
+ }
274
+ else {
275
+ this.toastService.showError('Faltan campos obligatorios');
276
+ Object.keys(this.miFormulario.controls).forEach((key) => {
277
+ if (this.miFormulario.controls[key].invalid) {
278
+ this.miFormulario.controls[key].markAsDirty();
279
+ }
280
+ });
281
+ }
282
+ }
283
+ eliminarCarpeta() {
284
+ this.isVisualizarCrearCaperta = false;
285
+ this.confirmationService.confirm({
286
+ target: event.target,
287
+ key: 'eliminarCarpeta',
288
+ message: '¿Desea eliminar el registro?',
289
+ acceptLabel: 'Si',
290
+ icon: 'confirmar',
291
+ accept: () => {
292
+ this.setEliminarCarpeta();
293
+ },
294
+ reject: () => { },
295
+ });
296
+ }
297
+ async setEliminarCarpeta() {
298
+ this.loading = true;
299
+ let rutaComplemento = this.archivoSeleccionado.data;
300
+ if (!this.archivoSeleccionado?.parent) {
301
+ rutaComplemento = '';
302
+ }
303
+ this.plantillasService.eliminarCarpeta(this.rutaPrincipal, rutaComplemento).subscribe(rta => {
304
+ this.toastService.showSuccess('La carpeta ha sido eliminada correctamente');
305
+ this.archivoSeleccionado = null;
306
+ this.filterValue = null;
307
+ this.ngOnInit();
308
+ });
309
+ }
310
+ async convertirArchivos() {
311
+ this.isVisualizarCrearCaperta = false;
312
+ this.isMostrarPopupConvertir = true;
313
+ //const filteredNodes = this.getFilteredNodes();
314
+ const valorFiltro = this.filterValue;
315
+ const sleep = (m) => new Promise((r) => setTimeout(r, m));
316
+ await sleep(50);
317
+ this.popupConvertirPlantillasComponent.buscar(this.rutaPrincipal, valorFiltro);
318
+ }
319
+ regresarPopupConvertir($event) {
320
+ this.isMostrarPopupConvertir = false;
321
+ this.ngOnInit();
322
+ }
323
+ isHtml() {
324
+ this.html = false;
325
+ if (this.archivoSeleccionado != null && this.archivoSeleccionado.label != null && this.archivoSeleccionado.label.includes('.html'))
326
+ this.html = true;
327
+ return this.html;
328
+ }
329
+ async editarAction() {
330
+ let data = await firstValueFrom(this.plantillasService.consultarArchivoHtml(this.rutaPrincipal, this.archivoSeleccionado.data));
331
+ this.modificarHTML = data;
332
+ this.mostrarEditor = true;
333
+ }
334
+ async guardarHtml() {
335
+ await firstValueFrom(this.plantillasService.guardarArchivoHtml(this.rutaPrincipal, this.archivoSeleccionado.data, this.modificarHTML));
336
+ this.toastService.showSuccess('El archivo ha sido modificado correctamente');
337
+ this.ngOnInit();
338
+ }
339
+ regresarPrincipal() {
340
+ this.mostrarEditor = false;
341
+ }
342
+ verificarControl(control) {
343
+ return this.controlFuncionService.getControlFuncionalidad(control);
344
+ }
345
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: CarguePlantillaGeneralComponent, deps: [{ token: i1.PlantillasService }, { token: i2.AuthService }, { token: i3.TranslateService }, { token: i4.CargarControlFuncionalidadService }, { token: i5.ConfirmationService }, { token: i6.ToastService }, { token: i7.CargarArchivosService }, { token: i8.EncriptadoBasicoService }, { token: i9.GeneralPipe }, { token: i10.UtilsService }], target: i0.ɵɵFactoryTarget.Component });
346
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.4", type: CarguePlantillaGeneralComponent, isStandalone: true, selector: "app-cargue-plantilla-general", providers: [
347
+ ConfirmationService
348
+ ], viewQueries: [{ propertyName: "popupConvertirPlantillasComponent", first: true, predicate: PopupConvertirPlantillasComponent, descendants: true }, { propertyName: "miFormulario", first: true, predicate: ["miFormulario"], descendants: true }, { propertyName: "treeComponent", first: true, predicate: ["tree"], descendants: true }], ngImport: i0, template: "<div id=\"cargue-plantillas\">\r\n<p-confirmPopup key=\"eliminarCarpeta\"></p-confirmPopup>\r\n<p-confirmPopup key=\"eliminarArchivo\"></p-confirmPopup>\r\n\r\n<h1 class=\"mb-4\">{{'cargue' | translate}} {{'plantillas' | translate}}</h1>\r\n\r\n<div class=\"p-fluid p-formgrid grid\">\r\n\r\n <div class=\"field col-12 md:col-6 lg:col-5 card p-5\">\r\n <div class=\"flex justify-content-between align-items-center justify-content-center relative\">\r\n <input type=\"text\" pInputText [(ngModel)]=\"filterValue\" placeholder=\"{{'filtro' | translate}}\"\r\n (keydown)=\"filtrarEnter($event)\" />\r\n <button type=\"button\" pButton pRipple icon=\"pi pi-search text-xl\" (click)=\"aplicarFiltro()\"\r\n class=\"p-element p-ripple p-button-rounded p-button-secondary p-button p-component p-button-icon-only absolute right-0 border-none bg-white-alpha-10\"\r\n tooltipPosition=\"bottom\" pTooltip=\"Editar HTML\"></button>\r\n </div>\r\n\r\n <p-tree #tree scrollHeight=\"670px\" [value]=\"filteredFiles\" selectionMode=\"single\" [(selection)]=\"dataSelected\"\r\n [filter]=\"false\" [filterPlaceholder]=\"'filtro' | translate\" filterMode=\"strict\"\r\n (onNodeSelect)=\"seleccionarArchivo($event)\" [loading]=\"loading\"\r\n (onNodeUnselect)=\"deseleccionarArchivo($event)\"></p-tree>\r\n </div>\r\n\r\n <!-- OPCINES DIRECTORIOS - ARCHIVOS -->\r\n <div class=\"field col-12 md:col-6 lg:col-7 p-0 pl-3\">\r\n\r\n @if(this.loading){\r\n <p-progressBar mode=\"indeterminate\" [style]=\"{ height: '6px' }\"></p-progressBar>\r\n }\r\n\r\n @if(!this.loading){\r\n <div class=\"encabezado-acciones sombra-caja mb-3\">\r\n\r\n <!-- CARPETA -->\r\n @if(archivoSeleccionado.expanded){\r\n <div class=\"flex align-items-center\">\r\n <h1 class=\"text-xl mt-2 mb-4 mr-3\">Carpeta: </h1>\r\n <h5 class=\"text-sm mt-2 mb-4\"> {{archivoSeleccionado.label}} </h5>\r\n </div>\r\n\r\n <div class=\"flex justify-content-between\">\r\n\r\n <!-- Convertir -->\r\n <button type=\"button\" pButton pRipple (click)=\"convertirArchivos()\"\r\n *ngIf=\"verConvertir && controlFuncionService.getControlFuncionalidad('seguplacor:guardar')\"\r\n tooltipPosition=\"bottom\" label=\"{{'convertir' | translate}}\"\r\n class=\"w-full mr-3 p-button-secondary boton-accion-principal color-500\"\r\n pTooltip=\"Convertir archivo\" tooltipPosition=\"bottom\">\r\n <div class=\"contenedor-icono-acciones-principal\">\r\n <i class=\"pi pi-arrow-right-arrow-left color-500\"></i>\r\n </div>\r\n </button>\r\n\r\n <!--Nueva Carpeta-->\r\n <button *ngIf=\"controlFuncionService.getControlFuncionalidad('seguplacor:guardar')\" pButton pRipple\r\n class=\"w-full mr-3 p-button-secondary boton-accion-principal color-500\"\r\n label=\"{{'link_nuevo' | translate}}\" (click)=\"crearCarpeta()\">\r\n <div class=\"contenedor-icono-acciones-principal\">\r\n <i class=\"glyphicons glyphicons-plus color-500\"></i>\r\n </div>\r\n </button>\r\n\r\n <!--Eliminar-->\r\n <div class=\"btn-fileupload-claro mr-3\">\r\n <button *ngIf=\"controlFuncionService.getControlFuncionalidad('seguplacor:guardar')\" pButton pRipple\r\n class=\"p-button p-button-secondary font-semibold flex-shrink-0 boton-accion-principal mr-3\"\r\n label=\"{{'link_eliminar' | translate}}\" (click)=\"eliminarCarpeta()\">\r\n <div class=\"contenedor-icono-acciones-principal\">\r\n <i style=\"color: var(--color-500)\" class=\"glyphicons glyphicons-bin\"></i>\r\n </div>\r\n </button>\r\n </div>\r\n\r\n <!-- Cargar Archivo -->\r\n <div class=\"btn-fileupload-claro\" [ngClass]=\"{ 'min-width-100': !verConvertir, 'min-width-20': verConvertir }\">\r\n <p-fileUpload #fubauto mode=\"basic\" [auto]=\"true\" [customUpload]=\"true\" chooseIcon=\"pi pi-paperclip\"\r\n *ngIf=\"controlFuncionService.getControlFuncionalidad('seguplacor:guardar')\"\r\n chooseLabel=\"{{'link_subirarchivos' | translate}}\" (onSelect)=\"cargarNuevo($event, fubauto)\">\r\n <div class=\"contenedor-icono-acciones-principal\">\r\n <i class=\"pi pi-trash\"></i>\r\n </div>\r\n </p-fileUpload>\r\n </div>\r\n </div>\r\n }\r\n\r\n <!-- ARCHIVO-->\r\n @if(!archivoSeleccionado.expanded){\r\n\r\n <div class=\"flex align-items-center\">\r\n <h1 class=\"text-xl mt-2 mb-4 mr-3\">Archivo: </h1>\r\n <h5 class=\"text-sm mt-2 mb-4\"> {{archivoSeleccionado.label}} </h5>\r\n </div>\r\n\r\n <div class=\"flex justify-content-end\">\r\n @if(archivoSeleccionado.label.includes('.html')){\r\n\r\n <!--EDITAR HTML-->\r\n <button type=\"button\" pButton pRipple icon=\"pi pi-code text-xl color-500\" (click)=\"editarAction()\"\r\n class=\"mr-3 w-full p-button-secondary boton-accion-principal \" label=\"Editar HTML\">\r\n </button>\r\n }\r\n\r\n <!-- DESCARGAR-->\r\n <button pButton pRipple class=\"mr-3 w-full p-button-secondary boton-accion-principal color-500\"\r\n label=\"{{'link_descargar' | translate}}\" (click)=\"descargarAnexo()\"\r\n *ngIf=\"controlFuncionService.getControlFuncionalidad('seguplacor:descargar')\">\r\n <div class=\"contenedor-icono-acciones-principal\">\r\n <i class=\"glyphicons glyphicons-download color-500\"></i>\r\n </div>\r\n </button>\r\n\r\n <!--ELIMINAR-->\r\n <button pButton pRipple class=\"w-full p-button-secondary boton-accion-principal color-500\"\r\n label=\"{{'link_eliminar' | translate}}\" (click)=\"eliminarArchivo()\"\r\n *ngIf=\"controlFuncionService.getControlFuncionalidad('seguplacor:guardar')\">\r\n <div class=\"contenedor-icono-acciones-principal\">\r\n <i class=\"glyphicons glyphicons-bin color-500\"></i>\r\n </div>\r\n </button>\r\n </div>\r\n }\r\n </div>\r\n }\r\n\r\n @if(archivoSeleccionado.expanded && isVisualizarCrearCaperta){\r\n <div class=\"encabezado-acciones sombra-caja mb-3\">\r\n\r\n <h5 class=\"mt-2\"><i class=\"glyphicons glyphicons-note\"></i> Nueva carpeta</h5>\r\n\r\n <form #miFormulario=\"ngForm\">\r\n <!-- campos -->\r\n <div class=\"flex mb-3\">\r\n <!-- Nombre -->\r\n <div class=\"w-full p-0 mb-0\">\r\n <span class=\"p-float-label mr-2\">\r\n <input pInputText id=\"id_numero_de_evento\" [(ngModel)]=\"nomNuevaCarpeta\" required\r\n name=\"nombreCarpeta\">\r\n <label for=\"id_numero_de_evento\">{{'nombre' | translate}} *</label>\r\n </span>\r\n </div>\r\n\r\n <div class=\"flex justify-content-end\">\r\n <!--Guardar Carpeta-->\r\n <button pButton pRipple class=\"mr-2 p-button-raised\" icon=\"glyphicons glyphicons-floppy-save\"\r\n [label]=\"('link_guardar' | translate)\" (click)=\"guardarCarpeta()\">\r\n </button>\r\n </div>\r\n </div>\r\n </form>\r\n\r\n </div>\r\n }\r\n <!-- EDITOR DE HTML -->\r\n <div *ngIf=\"isHtml() && mostrarEditor\">\r\n\r\n <div class=\"flex justify-content-end align-items-center mb-3\">\r\n <!-- Bot\u00F3n guardar HTML -->\r\n <button pButton pRipple label=\"{{'link_guardar' | translate }}\" (click)=\"guardarHtml()\"\r\n icon=\"glyphicons glyphicons-floppy-save\" class=\"p-button-raised\"\r\n *ngIf=\"controlFuncionService.getControlFuncionalidad('seguplacor:guardar')\"></button>\r\n </div>\r\n\r\n <p-editor id=\"editor\" [style]=\"{ height: '500px' }\" required [(ngModel)]=\"modificarHTML\"\r\n name=\"htmlPublicacion\"></p-editor>\r\n\r\n </div>\r\n </div>\r\n</div>\r\n\r\n@if(isMostrarPopupConvertir){\r\n<app-popup-convertir-plantillas (regresar)=\"regresarPopupConvertir($event)\"></app-popup-convertir-plantillas>\r\n}\r\n\r\n</div>", styles: [""], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i11.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i11.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: TreeModule }, { kind: "component", type: i12.Tree, selector: "p-tree", inputs: ["value", "selectionMode", "loadingMode", "selection", "style", "styleClass", "contextMenu", "layout", "draggableScope", "droppableScope", "draggableNodes", "droppableNodes", "metaKeySelection", "propagateSelectionUp", "propagateSelectionDown", "loading", "loadingIcon", "emptyMessage", "ariaLabel", "togglerAriaLabel", "ariaLabelledBy", "validateDrop", "filter", "filterBy", "filterMode", "filterPlaceholder", "filteredNodes", "filterLocale", "scrollHeight", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "indentation", "_templateMap", "trackBy", "virtualNodeHeight"], outputs: ["selectionChange", "onNodeSelect", "onNodeUnselect", "onNodeExpand", "onNodeCollapse", "onNodeContextMenuSelect", "onNodeDrop", "onLazyLoad", "onScroll", "onScrollIndexChange", "onFilter"] }, { kind: "ngmodule", type: InputTextModule }, { kind: "directive", type: i13.InputText, selector: "[pInputText]", inputs: ["variant"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i14.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading", "severity", "raised", "rounded", "text", "outlined", "size", "plain"] }, { kind: "ngmodule", type: SplitButtonModule }, { kind: "directive", type: i15.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "ngmodule", type: ConfirmPopupModule }, { kind: "component", type: i16.ConfirmPopup, selector: "p-confirmPopup", inputs: ["key", "defaultFocus", "showTransitionOptions", "hideTransitionOptions", "autoZIndex", "baseZIndex", "style", "styleClass", "visible"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i17.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i17.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: i17.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i17.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i17.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i17.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i17.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FieldsetModule }, { kind: "ngmodule", type: FileUploadModule }, { kind: "component", type: i18.FileUpload, selector: "p-fileUpload", inputs: ["name", "url", "method", "multiple", "accept", "disabled", "auto", "withCredentials", "maxFileSize", "invalidFileSizeMessageSummary", "invalidFileSizeMessageDetail", "invalidFileTypeMessageSummary", "invalidFileTypeMessageDetail", "invalidFileLimitMessageDetail", "invalidFileLimitMessageSummary", "style", "styleClass", "previewWidth", "chooseLabel", "uploadLabel", "cancelLabel", "chooseIcon", "uploadIcon", "cancelIcon", "showUploadButton", "showCancelButton", "mode", "headers", "customUpload", "fileLimit", "uploadStyleClass", "cancelStyleClass", "removeStyleClass", "chooseStyleClass", "files"], outputs: ["onBeforeUpload", "onSend", "onUpload", "onError", "onClear", "onRemove", "onSelect", "onProgress", "uploadHandler", "onImageError", "onRemoveUploadedFile"] }, { kind: "component", type: i19.ProgressBar, selector: "p-progressBar", inputs: ["value", "showValue", "styleClass", "style", "unit", "mode", "color"] }, { kind: "component", type: PopupConvertirPlantillasComponent, selector: "app-popup-convertir-plantillas", inputs: ["showDialog"], outputs: ["onSelected", "regresar"] }, { kind: "ngmodule", type: EditorModule }, { kind: "component", type: i20.Editor, selector: "p-editor", inputs: ["style", "styleClass", "placeholder", "formats", "modules", "bounds", "scrollingContainer", "debug", "readonly"], outputs: ["onInit", "onTextChange", "onSelectionChange"] }, { kind: "ngmodule", type: ProgressBarModule }] });
349
+ }
350
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: CarguePlantillaGeneralComponent, decorators: [{
351
+ type: Component,
352
+ args: [{ selector: 'app-cargue-plantilla-general', standalone: true, imports: [TranslateModule,
353
+ CommonModule,
354
+ TreeModule,
355
+ InputTextModule,
356
+ ButtonModule,
357
+ SplitButtonModule,
358
+ ConfirmPopupModule,
359
+ FormsModule,
360
+ FieldsetModule,
361
+ FileUploadModule,
362
+ PopupConvertirPlantillasComponent,
363
+ EditorModule,
364
+ ProgressBarModule
365
+ ], providers: [
366
+ ConfirmationService
367
+ ], template: "<div id=\"cargue-plantillas\">\r\n<p-confirmPopup key=\"eliminarCarpeta\"></p-confirmPopup>\r\n<p-confirmPopup key=\"eliminarArchivo\"></p-confirmPopup>\r\n\r\n<h1 class=\"mb-4\">{{'cargue' | translate}} {{'plantillas' | translate}}</h1>\r\n\r\n<div class=\"p-fluid p-formgrid grid\">\r\n\r\n <div class=\"field col-12 md:col-6 lg:col-5 card p-5\">\r\n <div class=\"flex justify-content-between align-items-center justify-content-center relative\">\r\n <input type=\"text\" pInputText [(ngModel)]=\"filterValue\" placeholder=\"{{'filtro' | translate}}\"\r\n (keydown)=\"filtrarEnter($event)\" />\r\n <button type=\"button\" pButton pRipple icon=\"pi pi-search text-xl\" (click)=\"aplicarFiltro()\"\r\n class=\"p-element p-ripple p-button-rounded p-button-secondary p-button p-component p-button-icon-only absolute right-0 border-none bg-white-alpha-10\"\r\n tooltipPosition=\"bottom\" pTooltip=\"Editar HTML\"></button>\r\n </div>\r\n\r\n <p-tree #tree scrollHeight=\"670px\" [value]=\"filteredFiles\" selectionMode=\"single\" [(selection)]=\"dataSelected\"\r\n [filter]=\"false\" [filterPlaceholder]=\"'filtro' | translate\" filterMode=\"strict\"\r\n (onNodeSelect)=\"seleccionarArchivo($event)\" [loading]=\"loading\"\r\n (onNodeUnselect)=\"deseleccionarArchivo($event)\"></p-tree>\r\n </div>\r\n\r\n <!-- OPCINES DIRECTORIOS - ARCHIVOS -->\r\n <div class=\"field col-12 md:col-6 lg:col-7 p-0 pl-3\">\r\n\r\n @if(this.loading){\r\n <p-progressBar mode=\"indeterminate\" [style]=\"{ height: '6px' }\"></p-progressBar>\r\n }\r\n\r\n @if(!this.loading){\r\n <div class=\"encabezado-acciones sombra-caja mb-3\">\r\n\r\n <!-- CARPETA -->\r\n @if(archivoSeleccionado.expanded){\r\n <div class=\"flex align-items-center\">\r\n <h1 class=\"text-xl mt-2 mb-4 mr-3\">Carpeta: </h1>\r\n <h5 class=\"text-sm mt-2 mb-4\"> {{archivoSeleccionado.label}} </h5>\r\n </div>\r\n\r\n <div class=\"flex justify-content-between\">\r\n\r\n <!-- Convertir -->\r\n <button type=\"button\" pButton pRipple (click)=\"convertirArchivos()\"\r\n *ngIf=\"verConvertir && controlFuncionService.getControlFuncionalidad('seguplacor:guardar')\"\r\n tooltipPosition=\"bottom\" label=\"{{'convertir' | translate}}\"\r\n class=\"w-full mr-3 p-button-secondary boton-accion-principal color-500\"\r\n pTooltip=\"Convertir archivo\" tooltipPosition=\"bottom\">\r\n <div class=\"contenedor-icono-acciones-principal\">\r\n <i class=\"pi pi-arrow-right-arrow-left color-500\"></i>\r\n </div>\r\n </button>\r\n\r\n <!--Nueva Carpeta-->\r\n <button *ngIf=\"controlFuncionService.getControlFuncionalidad('seguplacor:guardar')\" pButton pRipple\r\n class=\"w-full mr-3 p-button-secondary boton-accion-principal color-500\"\r\n label=\"{{'link_nuevo' | translate}}\" (click)=\"crearCarpeta()\">\r\n <div class=\"contenedor-icono-acciones-principal\">\r\n <i class=\"glyphicons glyphicons-plus color-500\"></i>\r\n </div>\r\n </button>\r\n\r\n <!--Eliminar-->\r\n <div class=\"btn-fileupload-claro mr-3\">\r\n <button *ngIf=\"controlFuncionService.getControlFuncionalidad('seguplacor:guardar')\" pButton pRipple\r\n class=\"p-button p-button-secondary font-semibold flex-shrink-0 boton-accion-principal mr-3\"\r\n label=\"{{'link_eliminar' | translate}}\" (click)=\"eliminarCarpeta()\">\r\n <div class=\"contenedor-icono-acciones-principal\">\r\n <i style=\"color: var(--color-500)\" class=\"glyphicons glyphicons-bin\"></i>\r\n </div>\r\n </button>\r\n </div>\r\n\r\n <!-- Cargar Archivo -->\r\n <div class=\"btn-fileupload-claro\" [ngClass]=\"{ 'min-width-100': !verConvertir, 'min-width-20': verConvertir }\">\r\n <p-fileUpload #fubauto mode=\"basic\" [auto]=\"true\" [customUpload]=\"true\" chooseIcon=\"pi pi-paperclip\"\r\n *ngIf=\"controlFuncionService.getControlFuncionalidad('seguplacor:guardar')\"\r\n chooseLabel=\"{{'link_subirarchivos' | translate}}\" (onSelect)=\"cargarNuevo($event, fubauto)\">\r\n <div class=\"contenedor-icono-acciones-principal\">\r\n <i class=\"pi pi-trash\"></i>\r\n </div>\r\n </p-fileUpload>\r\n </div>\r\n </div>\r\n }\r\n\r\n <!-- ARCHIVO-->\r\n @if(!archivoSeleccionado.expanded){\r\n\r\n <div class=\"flex align-items-center\">\r\n <h1 class=\"text-xl mt-2 mb-4 mr-3\">Archivo: </h1>\r\n <h5 class=\"text-sm mt-2 mb-4\"> {{archivoSeleccionado.label}} </h5>\r\n </div>\r\n\r\n <div class=\"flex justify-content-end\">\r\n @if(archivoSeleccionado.label.includes('.html')){\r\n\r\n <!--EDITAR HTML-->\r\n <button type=\"button\" pButton pRipple icon=\"pi pi-code text-xl color-500\" (click)=\"editarAction()\"\r\n class=\"mr-3 w-full p-button-secondary boton-accion-principal \" label=\"Editar HTML\">\r\n </button>\r\n }\r\n\r\n <!-- DESCARGAR-->\r\n <button pButton pRipple class=\"mr-3 w-full p-button-secondary boton-accion-principal color-500\"\r\n label=\"{{'link_descargar' | translate}}\" (click)=\"descargarAnexo()\"\r\n *ngIf=\"controlFuncionService.getControlFuncionalidad('seguplacor:descargar')\">\r\n <div class=\"contenedor-icono-acciones-principal\">\r\n <i class=\"glyphicons glyphicons-download color-500\"></i>\r\n </div>\r\n </button>\r\n\r\n <!--ELIMINAR-->\r\n <button pButton pRipple class=\"w-full p-button-secondary boton-accion-principal color-500\"\r\n label=\"{{'link_eliminar' | translate}}\" (click)=\"eliminarArchivo()\"\r\n *ngIf=\"controlFuncionService.getControlFuncionalidad('seguplacor:guardar')\">\r\n <div class=\"contenedor-icono-acciones-principal\">\r\n <i class=\"glyphicons glyphicons-bin color-500\"></i>\r\n </div>\r\n </button>\r\n </div>\r\n }\r\n </div>\r\n }\r\n\r\n @if(archivoSeleccionado.expanded && isVisualizarCrearCaperta){\r\n <div class=\"encabezado-acciones sombra-caja mb-3\">\r\n\r\n <h5 class=\"mt-2\"><i class=\"glyphicons glyphicons-note\"></i> Nueva carpeta</h5>\r\n\r\n <form #miFormulario=\"ngForm\">\r\n <!-- campos -->\r\n <div class=\"flex mb-3\">\r\n <!-- Nombre -->\r\n <div class=\"w-full p-0 mb-0\">\r\n <span class=\"p-float-label mr-2\">\r\n <input pInputText id=\"id_numero_de_evento\" [(ngModel)]=\"nomNuevaCarpeta\" required\r\n name=\"nombreCarpeta\">\r\n <label for=\"id_numero_de_evento\">{{'nombre' | translate}} *</label>\r\n </span>\r\n </div>\r\n\r\n <div class=\"flex justify-content-end\">\r\n <!--Guardar Carpeta-->\r\n <button pButton pRipple class=\"mr-2 p-button-raised\" icon=\"glyphicons glyphicons-floppy-save\"\r\n [label]=\"('link_guardar' | translate)\" (click)=\"guardarCarpeta()\">\r\n </button>\r\n </div>\r\n </div>\r\n </form>\r\n\r\n </div>\r\n }\r\n <!-- EDITOR DE HTML -->\r\n <div *ngIf=\"isHtml() && mostrarEditor\">\r\n\r\n <div class=\"flex justify-content-end align-items-center mb-3\">\r\n <!-- Bot\u00F3n guardar HTML -->\r\n <button pButton pRipple label=\"{{'link_guardar' | translate }}\" (click)=\"guardarHtml()\"\r\n icon=\"glyphicons glyphicons-floppy-save\" class=\"p-button-raised\"\r\n *ngIf=\"controlFuncionService.getControlFuncionalidad('seguplacor:guardar')\"></button>\r\n </div>\r\n\r\n <p-editor id=\"editor\" [style]=\"{ height: '500px' }\" required [(ngModel)]=\"modificarHTML\"\r\n name=\"htmlPublicacion\"></p-editor>\r\n\r\n </div>\r\n </div>\r\n</div>\r\n\r\n@if(isMostrarPopupConvertir){\r\n<app-popup-convertir-plantillas (regresar)=\"regresarPopupConvertir($event)\"></app-popup-convertir-plantillas>\r\n}\r\n\r\n</div>" }]
368
+ }], ctorParameters: () => [{ type: i1.PlantillasService }, { type: i2.AuthService }, { type: i3.TranslateService }, { type: i4.CargarControlFuncionalidadService }, { type: i5.ConfirmationService }, { type: i6.ToastService }, { type: i7.CargarArchivosService }, { type: i8.EncriptadoBasicoService }, { type: i9.GeneralPipe }, { type: i10.UtilsService }], propDecorators: { popupConvertirPlantillasComponent: [{
369
+ type: ViewChild,
370
+ args: [PopupConvertirPlantillasComponent]
371
+ }], miFormulario: [{
372
+ type: ViewChild,
373
+ args: ['miFormulario', { static: false }]
374
+ }], treeComponent: [{
375
+ type: ViewChild,
376
+ args: ['tree']
377
+ }] } });
378
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZ3VlLXBsYW50aWxsYS1nZW5lcmFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvd2ViY29tbW9uL3BhZ2VzL2Nhcmd1ZS1wbGFudGlsbGEvY2FyZ3VlLXBsYW50aWxsYS1nZW5lcmFsL2Nhcmd1ZS1wbGFudGlsbGEtZ2VuZXJhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3dlYmNvbW1vbi9wYWdlcy9jYXJndWUtcGxhbnRpbGxhL2Nhcmd1ZS1wbGFudGlsbGEtZ2VuZXJhbC9jYXJndWUtcGxhbnRpbGxhLWdlbmVyYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQW9CLE1BQU0scUJBQXFCLENBQUM7QUFDeEUsT0FBTyxFQUFFLG1CQUFtQixFQUFzQixNQUFNLGFBQWEsQ0FBQztBQUN0RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3hELE9BQU8sRUFBUSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFJaEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBVSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FB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QyxpblNBOEtNLHlERGxKTSxlQUFlLDJGQUN2QixZQUFZLGtPQUNaLFVBQVUsKzNCQUNWLGVBQWUseUhBQ2YsWUFBWSw2T0FDWixpQkFBaUIsc1hBQ2pCLGtCQUFrQiwwUEFDbEIsV0FBVywyd0NBQ1gsY0FBYyw4QkFDZCxnQkFBZ0IsMGdDQUNoQixpQ0FBaUMsdUlBQ2pDLFlBQVksa1JBQ1osaUJBQWlCOzsyRkFRUiwrQkFBK0I7a0JBdkIzQyxTQUFTOytCQUNFLDhCQUE4QixjQUM1QixJQUFJLFdBQ1AsQ0FBQyxlQUFlO3dCQUN2QixZQUFZO3dCQUNaLFVBQVU7d0JBQ1YsZUFBZTt3QkFDZixZQUFZO3dCQUNaLGlCQUFpQjt3QkFDakIsa0JBQWtCO3dCQUNsQixXQUFXO3dCQUNYLGNBQWM7d0JBQ2QsZ0JBQWdCO3dCQUNoQixpQ0FBaUM7d0JBQ2pDLFlBQVk7d0JBQ1osaUJBQWlCO3FCQUNsQixhQUdVO3dCQUNULG1CQUFtQjtxQkFDcEI7NFhBSTZDLGlDQUFpQztzQkFBOUUsU0FBUzt1QkFBQyxpQ0FBaUM7Z0JBQ0UsWUFBWTtzQkFBekQsU0FBUzt1QkFBQyxjQUFjLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUN6QixhQUFhO3NCQUEvQixTQUFTO3VCQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUsIFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgQ29uZmlybWF0aW9uU2VydmljZSwgTWVudUl0ZW0sIFRyZWVOb2RlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xyXG5pbXBvcnQgeyBCdXR0b25Nb2R1bGUgfSBmcm9tICdwcmltZW5nL2J1dHRvbic7XHJcbmltcG9ydCB7IElucHV0VGV4dE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvaW5wdXR0ZXh0JztcclxuaW1wb3J0IHsgU3BsaXRCdXR0b25Nb2R1bGUgfSBmcm9tICdwcmltZW5nL3NwbGl0YnV0dG9uJztcclxuaW1wb3J0IHsgVHJlZSwgVHJlZU1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvdHJlZSc7XHJcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS9zZXJ2aWNpb3MvYXV0aC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUGxhbnRpbGxhc1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi93ZWJjb21tb24vc2VydmljZXMvcGxhbnRpbGxhcy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ2FyZ2FyQ29udHJvbEZ1bmNpb25hbGlkYWRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS9zZXJ2aWNpb3MvY2FyZ2FyLWNvbnRyb2wtZnVuY2lvbmFsaWRhZC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29uZmlybVBvcHVwTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9jb25maXJtcG9wdXAnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgTmdGb3JtIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBGaWVsZHNldE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvZmllbGRzZXQnO1xyXG5pbXBvcnQgeyBGaWxlVXBsb2FkTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9maWxldXBsb2FkJztcclxuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS9zZXJ2aWNpb3MvdG9hc3Quc2VydmljZSc7XHJcbmltcG9ydCB7IENhcmdhckFyY2hpdm9zU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NoYXJlZC9zZXJ2aWNpb3MvY2FyZ2FyLWFyY2hpdm9zLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBFbmNyaXB0YWRvQmFzaWNvU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NoYXJlZC9zZXJ2aWNpb3MvZW5jcmlwdGFkby1iYXNpY28uc2VydmljZSc7XHJcbmltcG9ydCB7IEdlbmVyYWxQaXBlIH0gZnJvbSAnLi4vLi4vLi4vLi4vd2ViY29tbW9uL3BpcGVzL2dlbmVyYWwucGlwZSc7XHJcbmltcG9ydCB7IFBvcHVwQ29udmVydGlyUGxhbnRpbGxhc0NvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uLy4uL3dlYmNvbW1vbi9wb3B1cHMvcG9wdXAtY29udmVydGlyLXBsYW50aWxsYXMvcG9wdXAtY29udmVydGlyLXBsYW50aWxsYXMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVXRpbHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS9zZXJ2aWNpb3MvdXRpbHMuc2VydmljZSc7XHJcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEVkaXRvck1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvZWRpdG9yJztcclxuaW1wb3J0IHsgUHJvZ3Jlc3NCYXJNb2R1bGUgfSBmcm9tICdwcmltZW5nL3Byb2dyZXNzYmFyJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWNhcmd1ZS1wbGFudGlsbGEtZ2VuZXJhbCcsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbVHJhbnNsYXRlTW9kdWxlLFxyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgVHJlZU1vZHVsZSxcclxuICAgIElucHV0VGV4dE1vZHVsZSxcclxuICAgIEJ1dHRvbk1vZHVsZSxcclxuICAgIFNwbGl0QnV0dG9uTW9kdWxlLFxyXG4gICAgQ29uZmlybVBvcHVwTW9kdWxlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBGaWVsZHNldE1vZHVsZSxcclxuICAgIEZpbGVVcGxvYWRNb2R1bGUsXHJcbiAgICBQb3B1cENvbnZlcnRpclBsYW50aWxsYXNDb21wb25lbnQsXHJcbiAgICBFZGl0b3JNb2R1bGUsXHJcbiAgICBQcm9ncmVzc0Jhck1vZHVsZVxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2Nhcmd1ZS1wbGFudGlsbGEtZ2VuZXJhbC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2Nhcmd1ZS1wbGFudGlsbGEtZ2VuZXJhbC5jb21wb25lbnQuc2NzcycsXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICBDb25maXJtYXRpb25TZXJ2aWNlXHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ2FyZ3VlUGxhbnRpbGxhR2VuZXJhbENvbXBvbmVudCB7XHJcblxyXG4gIEBWaWV3Q2hpbGQoUG9wdXBDb252ZXJ0aXJQbGFudGlsbGFzQ29tcG9uZW50KSBwb3B1cENvbnZlcnRpclBsYW50aWxsYXNDb21wb25lbnQ6IFBvcHVwQ29udmVydGlyUGxhbnRpbGxhc0NvbXBvbmVudDtcclxuICBAVmlld0NoaWxkKCdtaUZvcm11bGFyaW8nLCB7IHN0YXRpYzogZmFsc2UgfSkgbWlGb3JtdWxhcmlvITogTmdGb3JtO1xyXG4gIEBWaWV3Q2hpbGQoJ3RyZWUnKSB0cmVlQ29tcG9uZW50ITogVHJlZTtcclxuXHJcbiAgbG9hZGluZzogYm9vbGVhbjtcclxuICBwcm9waWVkYWQ6IHN0cmluZztcclxuICBleHRlbnNpb25lczogc3RyaW5nO1xyXG4gIHByb3BpZWRhZERlU2lzdGVtYTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGFuZXhvUHJvcGllZGFkOiBzdHJpbmcgPSAnJztcclxuICBmaWxlczogVHJlZU5vZGVbXTtcclxuICBkYXRhU2VsZWN0ZWQ6IFRyZWVOb2RlO1xyXG4gIGl0ZW1zQm90b25BY2Npb25lczogTWVudUl0ZW1bXTtcclxuICB2ZXJDb252ZXJ0aXI6IGJvb2xlYW47XHJcbiAgbm9tTnVldmFDYXJwZXRhOiBzdHJpbmc7XHJcbiAgaXNWaXN1YWxpemFyQ3JlYXJDYXBlcnRhOiBib29sZWFuID0gZmFsc2U7XHJcbiAgYXJjaGl2b1NlbGVjY2lvbmFkb0FuZXhvOiBGaWxlO1xyXG4gIGFyY2hpdm9TZWxlY2Npb25hZG86IFRyZWVOb2RlO1xyXG4gIGlzTW9zdHJhclBvcHVwQ29udmVydGlyOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcnV0YVByaW5jaXBhbDogc3RyaW5nO1xyXG4gIGZpbHRlcmVkRmlsZXM6IFRyZWVOb2RlW10gPSBbXTtcclxuICBmaWx0ZXJWYWx1ZTogc3RyaW5nID0gJyc7XHJcbiAgZmlsdHJvQ29udmVydGlyOiBzdHJpbmc7XHJcbiAgaHRtbDogYm9vbGVhbjtcclxuICBtb3N0cmFyRWRpdG9yOiBib29sZWFuO1xyXG4gIG1vZGlmaWNhckhUTUw6IHN0cmluZztcclxuXHJcbiAgRk9STUFUU19WQUxJRE9TOiBTZXQ8c3RyaW5nPiA9IG5ldyBTZXQoW1xyXG4gICAgJy5kb2MnLFxyXG4gICAgJy5odG1sJyxcclxuICAgICcuamFzcGVyJyxcclxuICAgICcueGxzJyxcclxuICAgICcuanJ4bWwnLFxyXG4gICAgJy5vZHQnLFxyXG4gICAgJy54bHNtJyxcclxuICAgICcueGxzeCcsXHJcbiAgICAnLnBncCcsXHJcbiAgICAnLmFzYycsXHJcbiAgICAnLmNlcicsXHJcbiAgICAnLnAxMicsXHJcbiAgICAnLmRvY3gnLFxyXG4gICAgJy5wcm9wZXJ0aWVzJ1xyXG4gIF0pO1xyXG5cclxuICByZWFkb25seSBGT1JNQVRPUyA9ICdkb2M7aHRtbDtqYXNwZXI7eGxzO2pyeG1sO29kdDt4bHNtO3hsc3g7cGdwO2FzYztjZXI7cDEyO2RvY3g7cHJvcGVydGllcyc7XHJcbiAgXHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcGxhbnRpbGxhc1NlcnZpY2U6IFBsYW50aWxsYXNTZXJ2aWNlLCBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSwgcHVibGljIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICBwdWJsaWMgY29udHJvbEZ1bmNpb25TZXJ2aWNlOiBDYXJnYXJDb250cm9sRnVuY2lvbmFsaWRhZFNlcnZpY2UsIHByaXZhdGUgY29uZmlybWF0aW9uU2VydmljZTogQ29uZmlybWF0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgdG9hc3RTZXJ2aWNlOiBUb2FzdFNlcnZpY2UsIHByaXZhdGUgY2FyZ2FyQXJjaGl2b1NlcnZpY2VzOiBDYXJnYXJBcmNoaXZvc1NlcnZpY2UsIHByaXZhdGUgZW5jcmlwdGFkb0Jhc2ljbzogRW5jcmlwdGFkb0Jhc2ljb1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIGdlbmVyYWxQaXBlOiBHZW5lcmFsUGlwZSwgcHVibGljIHV0aWxzU2VydmljZTogVXRpbHNTZXJ2aWNlXHJcbiAgKSB7IH1cclxuXHJcbiAgYXN5bmMgbmdPbkluaXQoKTogUHJvbWlzZTx2b2lkPiB7XHJcblxyXG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMubW9zdHJhckVkaXRvciA9IGZhbHNlO1xyXG4gICAgbGV0IGNvbnN1bHRhclJ1dGFQcmluY2lwYWwgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmNhcmdhckFyY2hpdm9TZXJ2aWNlcy5nZXRQcm9waWVkYWQoeyBwcm9waWVkYWQ6IFwicnV0YV9wbGFudGlsbGFzXCIsIGFwbGljYWNpb246IDEgfSkpO1xyXG4gICAgbGV0IGNvbnZlcnRpciA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuY2FyZ2FyQXJjaGl2b1NlcnZpY2VzLmdldFByb3BpZWRhZCh7IHByb3BpZWRhZDogXCJzZXJ2aWRvcl9vcGVuT2ZmaWNlXCIsIGFwbGljYWNpb246IDAgfSkpO1xyXG4gICAgdGhpcy52ZXJDb252ZXJ0aXIgPSAhY29udmVydGlyLnZhbG9yLnZhbG9yID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgdGhpcy5ydXRhUHJpbmNpcGFsID0gY29uc3VsdGFyUnV0YVByaW5jaXBhbC52YWxvci52YWxvcjtcclxuICAgIHRoaXMuaXNWaXN1YWxpemFyQ3JlYXJDYXBlcnRhID0gZmFsc2U7XHJcbiAgICBhd2FpdCB0aGlzLm9wZW5EYXRhVGFibGUoKTtcclxuXHJcbiAgICBjb25zdCBzbGVlcCA9IChtKSA9PiBuZXcgUHJvbWlzZSgocikgPT4gc2V0VGltZW91dChyLCBtKSk7XHJcbiAgICBhd2FpdCBzbGVlcCgxMDApO1xyXG5cclxuICAgIGlmICh0aGlzLmZpbHRlclZhbHVlKSB7XHJcbiAgICAgIGF3YWl0IHRoaXMuYXBsaWNhckZpbHRybygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgb3BlbkRhdGFUYWJsZSgpIHtcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuXHJcbiAgICAgIGlmICghdGhpcy5wcm9waWVkYWQpIHtcclxuICAgICAgICB0aGlzLnByb3BpZWRhZCA9ICdydXRhX3BsYW50aWxsYXMnXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMucGxhbnRpbGxhc1NlcnZpY2Uub2J0ZW5lckFyY2hpdm9zKFxyXG4gICAgICAgIHRoaXMucHJvcGllZGFkLCB0aGlzLnByb3BpZWRhZERlU2lzdGVtYSA/ICcwJyA6IHRoaXMuYXV0aFNlcnZpY2UuZ2V0VG9rZW5LZXkoJ2FwbGljYWNpb24nKSwgdGhpcy5GT1JNQVRPUywgdGhpcy5hbmV4b1Byb3BpZWRhZCwgdHJ1ZSkuc3Vic2NyaWJlXHJcbiAgICAgICAgKHJ0YSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmZpbGVzID0gcnRhO1xyXG4gICAgICAgICAgdGhpcy5maWx0ZXJlZEZpbGVzID0gcnRhXHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIC8vdGhpcy5pc0NhcmdhckluaWNpbyA9IGZhbHNlO1xyXG4gICAgICAgICAgaWYgKCF0aGlzLmFyY2hpdm9TZWxlY2Npb25hZG8pIHtcclxuICAgICAgICAgICAgdGhpcy5hcmNoaXZvU2VsZWNjaW9uYWRvID0gdGhpcy5maWxlc1swXTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH0sIDEwMDApO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgYXBsaWNhckZpbHRybygpIHtcclxuICAgIHRoaXMuZmlsdHJvQ29udmVydGlyID0gdGhpcy5maWx0ZXJWYWx1ZTtcclxuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5maWx0ZXJlZEZpbGVzID0gdGhpcy5vYnRlbmVyRmlsdHJvc05vZG9zKHRoaXMuZmlsZXMsIHRoaXMuZmlsdGVyVmFsdWUpO1xyXG4gICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgIH0sIDEwMDApO1xyXG4gIH1cclxuXHJcbiAgb2J0ZW5lckZpbHRyb3NOb2Rvcyhub2RlczogVHJlZU5vZGVbXSwgZmlsdGVyVmFsdWU6IHN0cmluZyk6IFRyZWVOb2RlW10ge1xyXG5cclxuICAgIGNvbnN0IGZpbHRlcnMgPSB0aGlzLmZpbHRyb0F2YW56YWRvKGZpbHRlclZhbHVlKTtcclxuXHJcbiAgICBjb25zdCBmaWx0ZXJlZE5vZGVzOiBUcmVlTm9kZVtdID0gW107XHJcblxyXG4gICAgbm9kZXMuZm9yRWFjaChub2RlID0+IHtcclxuXHJcbiAgICAgIC8vIFZlcmlmaWNhIHNpIGVsIG5vZG8gYWN0dWFsIG8gYWxndW5vIGRlIHN1cyBoaWpvcyBjdW1wbGUgY29uIGVsIGZpbHRyb1xyXG4gICAgICBjb25zdCBjaGlsZHJlbiA9IG5vZGUuY2hpbGRyZW4gPyB0aGlzLm9idGVuZXJGaWx0cm9zTm9kb3Mobm9kZS5jaGlsZHJlbiwgZmlsdGVyVmFsdWUpIDogW107XHJcblxyXG4gICAgICBjb25zdCBub2RlTWF0Y2hlcyA9IGZpbHRlcnMuc29tZShmaWx0ZXIgPT4gbm9kZS5sYWJlbC5pbmNsdWRlcyhmaWx0ZXIpKTtcclxuXHJcbiAgICAgIGlmIChub2RlTWF0Y2hlcyB8fCBjaGlsZHJlbi5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgZmlsdGVyZWROb2Rlcy5wdXNoKHsgLi4ubm9kZSwgY2hpbGRyZW4gfSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBmaWx0ZXJlZE5vZGVzO1xyXG4gIH1cclxuXHJcbiAgZmlsdHJvQXZhbnphZG8oc2VhcmNoOiBzdHJpbmcpOiBzdHJpbmdbXSB7XHJcblxyXG4gICAgaWYgKHNlYXJjaC5pbmNsdWRlcygnKycpKSB7XHJcbiAgICAgIGxldCBhdXggPSBzZWFyY2g7XHJcblxyXG4gICAgICBpZiAoYXV4LnN0YXJ0c1dpdGgoJysnKSkge1xyXG4gICAgICAgIGF1eCA9IGF1eC5zdWJzdHJpbmcoMSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGF1eCA9IGF1eC5yZXBsYWNlKC9cXCsvZywgJzonKTtcclxuICAgICAgY29uc3QgaXRlbXMgPSBhdXgudHJpbSgpLnNwbGl0KCc6Jyk7XHJcbiAgICAgIHJldHVybiBpdGVtcztcclxuXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gW3NlYXJjaF07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBmaWx0cmFyRW50ZXIoZXZlbnQpIHtcclxuICAgIGlmIChldmVudC5rZXkgPT09ICdFbnRlcicpIHtcclxuICAgICAgdGhpcy5hcGxpY2FyRmlsdHJvKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZWxlY2Npb25hckFyY2hpdm8oZXZlbnQpIHtcclxuICAgIHRoaXMuYXJjaGl2b1NlbGVjY2lvbmFkbyA9IGV2ZW50Lm5vZGU7XHJcbiAgICB0aGlzLm1vc3RyYXJFZGl0b3IgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIGRlc2VsZWNjaW9uYXJBcmNoaXZvKCRldmVudCkge1xyXG4gICAgdGhpcy5kYXRhU2VsZWN0ZWQgPSBudWxsO1xyXG4gIH1cclxuXHJcblxyXG4gIGFzeW5jIGNhcmdhck51ZXZvKGV2ZW50LCBmdWJhdXRvKSB7XHJcblxyXG4gICAgdGhpcy5pc1Zpc3VhbGl6YXJDcmVhckNhcGVydGEgPSBmYWxzZTtcclxuICAgIHRoaXMuYXJjaGl2b1NlbGVjY2lvbmFkb0FuZXhvID0gZXZlbnQuZmlsZXNbMF07XHJcblxyXG4gICAgaWYgKCF0aGlzLmlzRm9ybWF0b1ZhbGlkbyh0aGlzLmFyY2hpdm9TZWxlY2Npb25hZG9BbmV4by5uYW1lKSkge1xyXG4gICAgICB0aGlzLnRvYXN0U2VydmljZS5zaG93V2FybmluZyhcIlNlIGRlYmUgYWdyZWdhciB1biBhcmNoaXZvIFwiICsgQXJyYXkuZnJvbSh0aGlzLkZPUk1BVFNfVkFMSURPUykuam9pbignLCAnKSlcclxuICAgICAgZnViYXV0by5jbGVhcigpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgLy9DYXJnYXIgQXJjaGl2byBUZW1wb3JhbFxyXG4gICAgbGV0IHJlc3VsdGFkbyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMucGxhbnRpbGxhc1NlcnZpY2UuY2FyZ2FyRG9jdW1lbnRvVGVtcG9yYWwodGhpcy5hcmNoaXZvU2VsZWNjaW9uYWRvQW5leG8pKTtcclxuXHJcbiAgICBmdWJhdXRvLmNsZWFyKCk7XHJcblxyXG4gICAgaWYgKHJlc3VsdGFkbz8udmFsaWRhY2lvbikge1xyXG4gICAgICB0aGlzLnRvYXN0U2VydmljZS5zaG93U3VjY2VzcyhyZXN1bHRhZG8/LnZhbGlkYWNpb24pO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGluZm9ybWFjaW9uQXJjaGl2byA9IHJlc3VsdGFkbz8uaW5mb3JtYWNpb25BcmNoaXZvID8gcmVzdWx0YWRvPy5pbmZvcm1hY2lvbkFyY2hpdm8gOiBudWxsO1xyXG5cclxuICAgIC8vT2J0ZW5lciBSdXRhc1xyXG4gICAgbGV0IHJ1dGFDb21wbGVtZW50byA9IHRoaXMuYXJjaGl2b1NlbGVjY2lvbmFkby5kYXRhO1xyXG5cclxuICAgIC8vbGV0IG9iamV0byA9IChhd2FpdCB0aGlzLmNhcmdhckFyY2hpdm9TZXJ2aWNlcy5nZXRQcm9waWVkYWQoeyBwcm9waWVkYWQ6IFwicnV0YV9wbGFudGlsbGFzXCIsIGFwbGljYWNpb246IDEgfSkudG9Qcm9taXNlKCkpO1xyXG5cclxuICAgIGlmICghdGhpcy5hcmNoaXZvU2VsZWNjaW9uYWRvPy5wYXJlbnQpIHtcclxuICAgICAgcnV0YUNvbXBsZW1lbnRvID0gJyc7XHJcbiAgICB9XHJcblxyXG4gICAgLy9WZXJpZmljYSBzaSBlbCBkb2N1bWVudG8geWEgZXhpc3RlIFxyXG4gICAgbGV0IGRhdGEgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLnBsYW50aWxsYXNTZXJ2aWNlLmV4aXN0ZURvY3VtZW50byh0aGlzLnJ1dGFQcmluY2lwYWwsIHJ1dGFDb21wbGVtZW50bywgaW5mb3JtYWNpb25BcmNoaXZvKSk7XHJcblxyXG4gICAgaWYgKGRhdGE/LnZhbGlkYWNpb25Eb2N1bWVudG8pIHtcclxuICAgICAgdGhpcy50b2FzdFNlcnZpY2Uuc2hvd1dhcm5pbmcoZGF0YT8udmFsaWRhY2lvbkRvY3VtZW50byk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICAvL0d1YXJkYSBlbCBkb2N1bWVudG9cclxuICAgIGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMucGxhbnRpbGxhc1NlcnZpY2UuY2FyZ2FyRG9jdW1lbnRvKHRoaXMucnV0YVByaW5jaXBhbCwgcnV0YUNvbXBsZW1lbnRvLCBpbmZvcm1hY2lvbkFyY2hpdm8pKTtcclxuXHJcbiAgICB0aGlzLnRvYXN0U2VydmljZS5zaG93U3VjY2Vzcyh0aGlzLmdlbmVyYWxQaXBlLk1FTlNBSkVfR1VBUkRBUik7XHJcblxyXG4gICAgdGhpcy5uZ09uSW5pdCgpO1xyXG5cclxuICB9XHJcblxyXG4gIGFzeW5jIGRlc2NhcmdhckFuZXhvKCkge1xyXG5cclxuICAgIC8vUnV0YSBhcmNoaXZvICBcclxuICAgIGxldCBydXRhQ29tcGxlbWVudG8gPSB0aGlzLmFyY2hpdm9TZWxlY2Npb25hZG8uZGF0YTtcclxuXHJcbiAgICBpZiAoIXRoaXMuYXJjaGl2b1NlbGVjY2lvbmFkbz8ucGFyZW50KSB7XHJcbiAgICAgIHJ1dGFDb21wbGVtZW50byA9ICcnO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY2FyZ2FyQXJjaGl2b1NlcnZpY2VzLmRlc2NhcmdhckFyY2hpdm8odGhpcy5lbmNyaXB0YWRvQmFzaWNvLmVuY3JpcHRhcih0aGlzLnJ1dGFQcmluY2lwYWwgKyBydXRhQ29tcGxlbWVudG8pLCB1bmRlZmluZWQsIHVuZGVmaW5lZCkuc3Vic2NyaWJlKGJsb2IgPT4ge1xyXG4gICAgICBjb25zdCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xyXG4gICAgICBjb25zdCBvYmplY3RVcmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xyXG4gICAgICBhLmhyZWYgPSBvYmplY3RVcmw7XHJcbiAgICAgIGEuZG93bmxvYWQgPSB0aGlzLmFyY2hpdm9TZWxlY2Npb25hZG8/LmxhYmVsO1xyXG4gICAgICBhLmNsaWNrKCk7XHJcbiAgICAgIFVSTC5yZXZva2VPYmplY3RVUkwob2JqZWN0VXJsKTtcclxuICAgIH0pO1xyXG5cclxuICB9XHJcblxyXG4gIGVsaW1pbmFyQXJjaGl2bygpIHtcclxuICAgIHRoaXMuY29uZmlybWF0aW9uU2VydmljZS5jb25maXJtKHtcclxuICAgICAgdGFyZ2V0OiBldmVudC50YXJnZXQsXHJcbiAgICAgIGtleTogJ2VsaW1pbmFyQXJjaGl2bycsXHJcbiAgICAgIG1lc3NhZ2U6ICfCv0Rlc2VhIGVsaW1pbmFyIGVsIHJlZ2lzdHJvPycsXHJcbiAgICAgIGFjY2VwdExhYmVsOiAnU2knLFxyXG4gICAgICBpY29uOiAnY29uZmlybWFyJyxcclxuICAgICAgYWNjZXB0OiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXRFbGltaW5hckFyY2hpdm8oKTtcclxuICAgICAgfSxcclxuICAgICAgcmVqZWN0OiAoKSA9PiB7IH0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGFzeW5jIHNldEVsaW1pbmFyQXJjaGl2bygpIHtcclxuXHJcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG5cclxuICAgIC8vUnV0YSBhcmNoaXZvICBcclxuICAgIGxldCBydXRhQ29tcGxlbWVudG8gPSB0aGlzLmFyY2hpdm9TZWxlY2Npb25hZG8uZGF0YTtcclxuXHJcbiAgICBpZiAoIXRoaXMuYXJjaGl2b1NlbGVjY2lvbmFkbz8ucGFyZW50KSB7XHJcbiAgICAgIHJ1dGFDb21wbGVtZW50byA9ICcnO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBwcm9waWVkYWQgPSAncnV0YV9wbGFudGlsbGFzJ1xyXG4gICAgYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5jYXJnYXJBcmNoaXZvU2VydmljZXMuZWxpbWluYXJBcmNoaXZvKHRoaXMuZW5jcmlwdGFkb0Jhc2ljby5lbmNyaXB0YXIocnV0YUNvbXBsZW1lbnRvKSwgcHJvcGllZGFkLCAnMScpKTtcclxuICAgIHRoaXMudG9hc3RTZXJ2aWNlLnNob3dTdWNjZXNzKHRoaXMuZ2VuZXJhbFBpcGUuTUVOU0FKRV9FTElNSU5BUik7XHJcbiAgICB0aGlzLmFyY2hpdm9TZWxlY2Npb25hZG8gPSBudWxsO1xyXG4gICAgdGhpcy5maWx0ZXJWYWx1ZSA9IG51bGw7XHJcbiAgICB0aGlzLm5nT25Jbml0KCk7XHJcbiAgfVxyXG5cclxuICBpc0Zvcm1hdG9WYWxpZG8obm9tYnJlQXJjaGl2bzogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICAvLyBWZXJpZmljYSBzaSBlbCBhcmNoaXZvIHRlcm1pbmEgY29uIGFsZ3VuYSBkZSBsYXMgZXh0ZW5zaW9uZXMgdsOhbGlkYXNcclxuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuRk9STUFUU19WQUxJRE9TKS5zb21lKGV4dCA9PiBub21icmVBcmNoaXZvLmVuZHNXaXRoKGV4dCkpO1xyXG4gIH1cclxuXHJcbiAgY3JlYXJDYXJwZXRhKCkge1xyXG4gICAgdGhpcy5pc1Zpc3VhbGl6YXJDcmVhckNhcGVydGEgPSB0cnVlO1xyXG4gICAgdGhpcy5ub21OdWV2YUNhcnBldGEgPSBudWxsO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgZ3VhcmRhckNhcnBldGEoKSB7XHJcblxyXG4gICAgaWYgKHRoaXMubWlGb3JtdWxhcmlvLnZhbGlkKSB7XHJcblxyXG4gICAgICBsZXQgcnV0YUNvbXBsZW1lbnRvID0gdGhpcy5hcmNoaXZvU2VsZWNjaW9uYWRvLmRhdGE7XHJcblxyXG4gICAgICBpZiAoIXRoaXMuYXJjaGl2b1NlbGVjY2lvbmFkbz8ucGFyZW50KSB7XHJcbiAgICAgICAgcnV0YUNvbXBsZW1lbnRvID0gJyc7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMucGxhbnRpbGxhc1NlcnZpY2UuY3JlYXJDYXJwZXRhKHRoaXMucnV0YVByaW5jaXBhbCwgcnV0YUNvbXBsZW1lbnRvLCB0aGlzLm5vbU51ZXZhQ2FycGV0YSkpO1xyXG4gICAgICB0aGlzLnRvYXN0U2VydmljZS5zaG93U3VjY2VzcygnTGEgY2FycGV0YSBzZSBoYSBjcmVhZG8gY29ycmVjdGFtZW50ZScpO1xyXG4gICAgICB0aGlzLm5nT25Jbml0KCk7XHJcblxyXG4gICAgfSBlbHNlIHtcclxuXHJcbiAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLnNob3dFcnJvcignRmFsdGFuIGNhbXBvcyBvYmxpZ2F0b3Jpb3MnKTtcclxuICAgICAgT2JqZWN0LmtleXModGhpcy5taUZvcm11bGFyaW8uY29udHJvbHMpLmZvckVhY2goKGtleSkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLm1pRm9ybXVsYXJpby5jb250cm9sc1trZXldLmludmFsaWQpIHtcclxuICAgICAgICAgIHRoaXMubWlGb3JtdWxhcmlvLmNvbnRyb2xzW2tleV0ubWFya0FzRGlydHkoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIGVsaW1pbmFyQ2FycGV0YSgpIHtcclxuXHJcbiAgICB0aGlzLmlzVmlzdWFsaXphckNyZWFyQ2FwZXJ0YSA9IGZhbHNlO1xyXG5cclxuICAgIHRoaXMuY29uZmlybWF0aW9uU2VydmljZS5jb25maXJtKHtcclxuICAgICAgdGFyZ2V0OiBldmVudC50YXJnZXQsXHJcbiAgICAgIGtleTogJ2VsaW1pbmFyQ2FycGV0YScsXHJcbiAgICAgIG1lc3NhZ2U6ICfCv0Rlc2VhIGVsaW1pbmFyIGVsIHJlZ2lzdHJvPycsXHJcbiAgICAgIGFjY2VwdExhYmVsOiAnU2knLFxyXG4gICAgICBpY29uOiAnY29uZmlybWFyJyxcclxuICAgICAgYWNjZXB0OiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXRFbGltaW5hckNhcnBldGEoKTtcclxuICAgICAgfSxcclxuICAgICAgcmVqZWN0OiAoKSA9PiB7IH0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGFzeW5jIHNldEVsaW1pbmFyQ2FycGV0YSgpIHtcclxuXHJcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG5cclxuICAgIGxldCBydXRhQ29tcGxlbWVudG8gPSB0aGlzLmFyY2hpdm9TZWxlY2Npb25hZG8uZGF0YTtcclxuXHJcbiAgICBpZiAoIXRoaXMuYXJjaGl2b1NlbGVjY2lvbmFkbz8ucGFyZW50KSB7XHJcbiAgICAgIHJ1dGFDb21wbGVtZW50byA9ICcnO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMucGxhbnRpbGxhc1NlcnZpY2UuZWxpbWluYXJDYXJwZXRhKHRoaXMucnV0YVByaW5jaXBhbCwgcnV0YUNvbXBsZW1lbnRvKS5zdWJzY3JpYmUocnRhID0+IHtcclxuICAgICAgdGhpcy50b2FzdFNlcnZpY2Uuc2hvd1N1Y2Nlc3MoJ0xhIGNhcnBldGEgaGEgc2lkbyBlbGltaW5hZGEgY29ycmVjdGFtZW50ZScpO1xyXG4gICAgICB0aGlzLmFyY2hpdm9TZWxlY2Npb25hZG8gPSBudWxsO1xyXG4gICAgICB0aGlzLmZpbHRlclZhbHVlID0gbnVsbDtcclxuICAgICAgdGhpcy5uZ09uSW5pdCgpO1xyXG4gICAgfSlcclxuXHJcbiAgfVxyXG5cclxuICBhc3luYyBjb252ZXJ0aXJBcmNoaXZvcygpIHtcclxuXHJcbiAgICB0aGlzLmlzVmlzdWFsaXphckNyZWFyQ2FwZXJ0YSA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc01vc3RyYXJQb3B1cENvbnZlcnRpciA9IHRydWU7XHJcbiAgICAvL2NvbnN0IGZpbHRlcmVkTm9kZXMgPSB0aGlzLmdldEZpbHRlcmVkTm9kZXMoKTtcclxuICAgIGNvbnN0IHZhbG9yRmlsdHJvID0gdGhpcy5maWx0ZXJWYWx1ZTtcclxuXHJcbiAgICBjb25zdCBzbGVlcCA9IChtKSA9PiBuZXcgUHJvbWlzZSgocikgPT4gc2V0VGltZW91dChyLCBtKSk7XHJcbiAgICBhd2FpdCBzbGVlcCg1MCk7XHJcblxyXG4gICAgdGhpcy5wb3B1cENvbnZlcnRpclBsYW50aWxsYXNDb21wb25lbnQuYnVzY2FyKHRoaXMucnV0YVByaW5jaXBhbCwgdmFsb3JGaWx0cm8pO1xyXG5cclxuICB9XHJcblxyXG4gIHJlZ3Jlc2FyUG9wdXBDb252ZXJ0aXIoJGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMuaXNNb3N0cmFyUG9wdXBDb252ZXJ0aXIgPSBmYWxzZTtcclxuICAgIHRoaXMubmdPbkluaXQoKTtcclxuICB9XHJcblxyXG4gIGlzSHRtbCgpIHtcclxuICAgIHRoaXMuaHRtbCA9IGZhbHNlO1xyXG5cclxuICAgIGlmICh0aGlzLmFyY2hpdm9TZWxlY2Npb25hZG8gIT0gbnVsbCAmJiB0aGlzLmFyY2hpdm9TZWxlY2Npb25hZG8ubGFiZWwgIT0gbnVsbCAmJiB0aGlzLmFyY2hpdm9TZWxlY2Npb25hZG8ubGFiZWwuaW5jbHVkZXMoJy5odG1sJykpXHJcbiAgICAgIHRoaXMuaHRtbCA9IHRydWU7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuaHRtbDtcclxuICB9XHJcblxyXG4gIGFzeW5jIGVkaXRhckFjdGlvbigpIHtcclxuXHJcbiAgICBsZXQgZGF0YSA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMucGxhbnRpbGxhc1NlcnZpY2UuY29uc3VsdGFyQXJjaGl2b0h0bWwodGhpcy5ydXRhUHJpbmNpcGFsLCB0aGlzLmFyY2hpdm9TZWxlY2Npb25hZG8uZGF0YSkpO1xyXG5cclxuICAgIHRoaXMubW9kaWZpY2FySFRNTCA9IGRhdGE7XHJcblxyXG4gICAgdGhpcy5tb3N0cmFyRWRpdG9yID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGd1YXJkYXJIdG1sKCkge1xyXG5cclxuICAgIGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMucGxhbnRpbGxhc1NlcnZpY2UuZ3VhcmRhckFyY2hpdm9IdG1sKHRoaXMucnV0YVByaW5jaXBhbCwgdGhpcy5hcmNoaXZvU2VsZWNjaW9uYWRvLmRhdGEsIHRoaXMubW9kaWZpY2FySFRNTCkpO1xyXG5cclxuICAgIHRoaXMudG9hc3RTZXJ2aWNlLnNob3dTdWNjZXNzKCdFbCBhcmNoaXZvIGhhIHNpZG8gbW9kaWZpY2FkbyBjb3JyZWN0YW1lbnRlJyk7XHJcblxyXG4gICAgdGhpcy5uZ09uSW5pdCgpO1xyXG5cclxuICB9XHJcblxyXG4gIHJlZ3Jlc2FyUHJpbmNpcGFsKCkge1xyXG4gICAgdGhpcy5tb3N0cmFyRWRpdG9yID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdmVyaWZpY2FyQ29udHJvbChjb250cm9sKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jb250cm9sRnVuY2lvblNlcnZpY2UuZ2V0Q29udHJvbEZ1bmNpb25hbGlkYWQoY29udHJvbCk7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8ZGl2IGlkPVwiY2FyZ3VlLXBsYW50aWxsYXNcIj5cclxuPHAtY29uZmlybVBvcHVwIGtleT1cImVsaW1pbmFyQ2FycGV0YVwiPjwvcC1jb25maXJtUG9wdXA+XHJcbjxwLWNvbmZpcm1Qb3B1cCBrZXk9XCJlbGltaW5hckFyY2hpdm9cIj48L3AtY29uZmlybVBvcHVwPlxyXG5cclxuPGgxIGNsYXNzPVwibWItNFwiPnt7J2Nhcmd1ZScgfCB0cmFuc2xhdGV9fSB7eydwbGFudGlsbGFzJyB8IHRyYW5zbGF0ZX19PC9oMT5cclxuXHJcbjxkaXYgY2xhc3M9XCJwLWZsdWlkIHAtZm9ybWdyaWQgZ3JpZFwiPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJmaWVsZCBjb2wtMTIgbWQ6Y29sLTYgbGc6Y29sLTUgY2FyZCBwLTVcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciByZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBwSW5wdXRUZXh0IFsobmdNb2RlbCldPVwiZmlsdGVyVmFsdWVcIiBwbGFjZWhvbGRlcj1cInt7J2ZpbHRybycgfCB0cmFuc2xhdGV9fVwiXHJcbiAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCJmaWx0cmFyRW50ZXIoJGV2ZW50KVwiIC8+XHJcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIHBCdXR0b24gcFJpcHBsZSBpY29uPVwicGkgcGktc2VhcmNoIHRleHQteGxcIiAoY2xpY2spPVwiYXBsaWNhckZpbHRybygpXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwicC1lbGVtZW50IHAtcmlwcGxlIHAtYnV0dG9uLXJvdW5kZWQgIHAtYnV0dG9uLXNlY29uZGFyeSBwLWJ1dHRvbiBwLWNvbXBvbmVudCBwLWJ1dHRvbi1pY29uLW9ubHkgYWJzb2x1dGUgcmlnaHQtMCBib3JkZXItbm9uZSBiZy13aGl0ZS1hbHBoYS0xMFwiXHJcbiAgICAgICAgICAgICAgICB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIiBwVG9vbHRpcD1cIkVkaXRhciBIVE1MXCI+PC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxwLXRyZWUgI3RyZWUgc2Nyb2xsSGVpZ2h0PVwiNjcwcHhcIiBbdmFsdWVdPVwiZmlsdGVyZWRGaWxlc1wiIHNlbGVjdGlvbk1vZGU9XCJzaW5nbGVcIiBbKHNlbGVjdGlvbildPVwiZGF0YVNlbGVjdGVkXCJcclxuICAgICAgICAgICAgW2ZpbHRlcl09XCJmYWxzZVwiIFtmaWx0ZXJQbGFjZWhvbGRlcl09XCInZmlsdHJvJyB8IHRyYW5zbGF0ZVwiIGZpbHRlck1vZGU9XCJzdHJpY3RcIlxyXG4gICAgICAgICAgICAob25Ob2RlU2VsZWN0KT1cInNlbGVjY2lvbmFyQXJjaGl2bygkZXZlbnQpXCIgW2xvYWRpbmddPVwibG9hZGluZ1wiXHJcbiAgICAgICAgICAgIChvbk5vZGVVbnNlbGVjdCk9XCJkZXNlbGVjY2lvbmFyQXJjaGl2bygkZXZlbnQpXCI+PC9wLXRyZWU+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tIE9QQ0lORVMgRElSRUNUT1JJT1MgLSBBUkNISVZPUyAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJmaWVsZCBjb2wtMTIgbWQ6Y29sLTYgbGc6Y29sLTcgcC0wIHBsLTNcIj5cclxuXHJcbiAgICAgICAgQGlmKHRoaXMubG9hZGluZyl7XHJcbiAgICAgICAgPHAtcHJvZ3Jlc3NCYXIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIiBbc3R5bGVdPVwieyBoZWlnaHQ6ICc2cHgnIH1cIj48L3AtcHJvZ3Jlc3NCYXI+XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBAaWYoIXRoaXMubG9hZGluZyl7XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImVuY2FiZXphZG8tYWNjaW9uZXMgc29tYnJhLWNhamEgbWItM1wiPlxyXG5cclxuICAgICAgICAgICAgPCEtLSBDQVJQRVRBIC0tPlxyXG4gICAgICAgICAgICBAaWYoYXJjaGl2b1NlbGVjY2lvbmFkby5leHBhbmRlZCl7XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPGgxIGNsYXNzPVwidGV4dC14bCBtdC0yIG1iLTQgbXItM1wiPkNhcnBldGE6IDwvaDE+XHJcbiAgICAgICAgICAgICAgICA8aDUgY2xhc3M9XCJ0ZXh0LXNtIG10LTIgbWItNFwiPiB7e2FyY2hpdm9TZWxlY2Npb25hZG8ubGFiZWx9fSA8L2g1PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSBDb252ZXJ0aXIgLS0+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBwQnV0dG9uIHBSaXBwbGUgKGNsaWNrKT1cImNvbnZlcnRpckFyY2hpdm9zKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwidmVyQ29udmVydGlyICYmIGNvbnRyb2xGdW5jaW9uU2VydmljZS5nZXRDb250cm9sRnVuY2lvbmFsaWRhZCgnc2VndXBsYWNvcjpndWFyZGFyJylcIlxyXG4gICAgICAgICAgICAgICAgICAgIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiIGxhYmVsPVwie3snY29udmVydGlyJyB8IHRyYW5zbGF0ZX19XCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInctZnVsbCBtci0zIHAtYnV0dG9uLXNlY29uZGFyeSBib3Rvbi1hY2Npb24tcHJpbmNpcGFsIGNvbG9yLTUwMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgcFRvb2x0aXA9XCJDb252ZXJ0aXIgYXJjaGl2b1wiIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW5lZG9yLWljb25vLWFjY2lvbmVzLXByaW5jaXBhbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLWFycm93LXJpZ2h0LWFycm93LWxlZnQgY29sb3ItNTAwXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLU51ZXZhIENhcnBldGEtLT5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJjb250cm9sRnVuY2lvblNlcnZpY2UuZ2V0Q29udHJvbEZ1bmNpb25hbGlkYWQoJ3NlZ3VwbGFjb3I6Z3VhcmRhcicpXCIgcEJ1dHRvbiBwUmlwcGxlXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3LWZ1bGwgbXItMyBwLWJ1dHRvbi1zZWNvbmRhcnkgYm90b24tYWNjaW9uLXByaW5jaXBhbCBjb2xvci01MDBcIlxyXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsPVwie3snbGlua19udWV2bycgfCB0cmFuc2xhdGV9fVwiIChjbGljayk9XCJjcmVhckNhcnBldGEoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW5lZG9yLWljb25vLWFjY2lvbmVzLXByaW5jaXBhbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImdseXBoaWNvbnMgZ2x5cGhpY29ucy1wbHVzIGNvbG9yLTUwMFwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS1FbGltaW5hci0tPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ0bi1maWxldXBsb2FkLWNsYXJvIG1yLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiY29udHJvbEZ1bmNpb25TZXJ2aWNlLmdldENvbnRyb2xGdW5jaW9uYWxpZGFkKCdzZWd1cGxhY29yOmd1YXJkYXInKVwiIHBCdXR0b24gcFJpcHBsZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInAtYnV0dG9uIHAtYnV0dG9uLXNlY29uZGFyeSBmb250LXNlbWlib2xkIGZsZXgtc2hyaW5rLTAgYm90b24tYWNjaW9uLXByaW5jaXBhbCBtci0zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9XCJ7eydsaW5rX2VsaW1pbmFyJyB8IHRyYW5zbGF0ZX19XCIgKGNsaWNrKT1cImVsaW1pbmFyQ2FycGV0YSgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW5lZG9yLWljb25vLWFjY2lvbmVzLXByaW5jaXBhbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgc3R5bGU9XCJjb2xvcjogdmFyKC0tY29sb3ItNTAwKVwiIGNsYXNzPVwiZ2x5cGhpY29ucyBnbHlwaGljb25zLWJpblwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIENhcmdhciBBcmNoaXZvIC0tPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ0bi1maWxldXBsb2FkLWNsYXJvXCIgW25nQ2xhc3NdPVwieyAnbWluLXdpZHRoLTEwMCc6ICF2ZXJDb252ZXJ0aXIsICdtaW4td2lkdGgtMjAnOiB2ZXJDb252ZXJ0aXIgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwLWZpbGVVcGxvYWQgI2Z1YmF1dG8gbW9kZT1cImJhc2ljXCIgW2F1dG9dPVwidHJ1ZVwiIFtjdXN0b21VcGxvYWRdPVwidHJ1ZVwiIGNob29zZUljb249XCJwaSBwaS1wYXBlcmNsaXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbnRyb2xGdW5jaW9uU2VydmljZS5nZXRDb250cm9sRnVuY2lvbmFsaWRhZCgnc2VndXBsYWNvcjpndWFyZGFyJylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjaG9vc2VMYWJlbD1cInt7J2xpbmtfc3ViaXJhcmNoaXZvcycgfCB0cmFuc2xhdGV9fVwiIChvblNlbGVjdCk9XCJjYXJnYXJOdWV2bygkZXZlbnQsIGZ1YmF1dG8pXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW5lZG9yLWljb25vLWFjY2lvbmVzLXByaW5jaXBhbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJwaSBwaS10cmFzaFwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9wLWZpbGVVcGxvYWQ+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIDwhLS0gQVJDSElWTy0tPlxyXG4gICAgICAgICAgICBAaWYoIWFyY2hpdm9TZWxlY2Npb25hZG8uZXhwYW5kZWQpe1xyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8aDEgY2xhc3M9XCJ0ZXh0LXhsIG10LTIgbWItNCBtci0zXCI+QXJjaGl2bzogPC9oMT5cclxuICAgICAgICAgICAgICAgIDxoNSBjbGFzcz1cInRleHQtc20gbXQtMiBtYi00XCI+IHt7YXJjaGl2b1NlbGVjY2lvbmFkby5sYWJlbH19IDwvaDU+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgQGlmKGFyY2hpdm9TZWxlY2Npb25hZG8ubGFiZWwuaW5jbHVkZXMoJy5odG1sJykpe1xyXG5cclxuICAgICAgICAgICAgICAgIDwhLS1FRElUQVIgSFRNTC0tPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgcEJ1dHRvbiBwUmlwcGxlIGljb249XCJwaSBwaS1jb2RlIHRleHQteGwgY29sb3ItNTAwXCIgKGNsaWNrKT1cImVkaXRhckFjdGlvbigpXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1yLTMgdy1mdWxsIHAtYnV0dG9uLXNlY29uZGFyeSAgYm90b24tYWNjaW9uLXByaW5jaXBhbCBcIiBsYWJlbD1cIkVkaXRhciBIVE1MXCI+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIERFU0NBUkdBUi0tPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBwQnV0dG9uIHBSaXBwbGUgY2xhc3M9XCJtci0zIHctZnVsbCBwLWJ1dHRvbi1zZWNvbmRhcnkgYm90b24tYWNjaW9uLXByaW5jaXBhbCBjb2xvci01MDBcIlxyXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsPVwie3snbGlua19kZXNjYXJnYXInIHwgdHJhbnNsYXRlfX1cIiAoY2xpY2spPVwiZGVzY2FyZ2FyQW5leG8oKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb250cm9sRnVuY2lvblNlcnZpY2UuZ2V0Q29udHJvbEZ1bmNpb25hbGlkYWQoJ3NlZ3VwbGFjb3I6ZGVzY2FyZ2FyJylcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVuZWRvci1pY29uby1hY2Npb25lcy1wcmluY2lwYWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJnbHlwaGljb25zIGdseXBoaWNvbnMtZG93bmxvYWQgY29sb3ItNTAwXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLUVMSU1JTkFSLS0+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIHBCdXR0b24gcFJpcHBsZSBjbGFzcz1cInctZnVsbCBwLWJ1dHRvbi1zZWNvbmRhcnkgIGJvdG9uLWFjY2lvbi1wcmluY2lwYWwgY29sb3ItNTAwXCJcclxuICAgICAgICAgICAgICAgICAgICBsYWJlbD1cInt7J2xpbmtfZWxpbWluYXInIHwgdHJhbnNsYXRlfX1cIiAoY2xpY2spPVwiZWxpbWluYXJBcmNoaXZvKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29udHJvbEZ1bmNpb25TZXJ2aWNlLmdldENvbnRyb2xGdW5jaW9uYWxpZGFkKCdzZWd1cGxhY29yOmd1YXJkYXInKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW5lZG9yLWljb25vLWFjY2lvbmVzLXByaW5jaXBhbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImdseXBoaWNvbnMgZ2x5cGhpY29ucy1iaW4gY29sb3ItNTAwXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBAaWYoYXJjaGl2b1NlbGVjY2lvbmFkby5leHBhbmRlZCAmJiBpc1Zpc3VhbGl6YXJDcmVhckNhcGVydGEpe1xyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJlbmNhYmV6YWRvLWFjY2lvbmVzIHNvbWJyYS1jYWphIG1iLTNcIj5cclxuXHJcbiAgICAgICAgICAgIDxoNSBjbGFzcz1cIm10LTJcIj48aSBjbGFzcz1cImdseXBoaWNvbnMgZ2x5cGhpY29ucy1ub3RlXCI+PC9pPiBOdWV2YSBjYXJwZXRhPC9oNT5cclxuXHJcbiAgICAgICAgICAgIDxmb3JtICNtaUZvcm11bGFyaW89XCJuZ0Zvcm1cIj5cclxuICAgICAgICAgICAgICAgIDwhLS0gY2FtcG9zIC0tPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gTm9tYnJlIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LWZ1bGwgcC0wIG1iLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLWZsb2F0LWxhYmVsIG1yLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBwSW5wdXRUZXh0IGlkPVwiaWRfbnVtZXJvX2RlX2V2ZW50b1wiIFsobmdNb2RlbCldPVwibm9tTnVldmFDYXJwZXRhXCIgcmVxdWlyZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwibm9tYnJlQ2FycGV0YVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImlkX251bWVyb19kZV9ldmVudG9cIj57eydub21icmUnIHwgdHJhbnNsYXRlfX0gKjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tR3VhcmRhciBDYXJwZXRhLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gcEJ1dHRvbiBwUmlwcGxlIGNsYXNzPVwibXItMiBwLWJ1dHRvbi1yYWlzZWRcIiBpY29uPVwiZ2x5cGhpY29ucyBnbHlwaGljb25zLWZsb3BweS1zYXZlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCIoJ2xpbmtfZ3VhcmRhcicgfCB0cmFuc2xhdGUpXCIgKGNsaWNrKT1cImd1YXJkYXJDYXJwZXRhKClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9mb3JtPlxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICB9XHJcbiAgICAgICAgPCEtLSBFRElUT1IgREUgSFRNTCAtLT5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiaXNIdG1sKCkgJiYgbW9zdHJhckVkaXRvclwiPlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWVuZCBhbGlnbi1pdGVtcy1jZW50ZXIgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgPCEtLSBCb3TDs24gZ3VhcmRhciBIVE1MIC0tPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBwQnV0dG9uIHBSaXBwbGUgbGFiZWw9XCJ7eydsaW5rX2d1YXJkYXInIHwgdHJhbnNsYXRlIH19XCIgKGNsaWNrKT1cImd1YXJkYXJIdG1sKClcIlxyXG4gICAgICAgICAgICAgICAgICAgIGljb249XCJnbHlwaGljb25zIGdseXBoaWNvbnMtZmxvcHB5LXNhdmVcIiBjbGFzcz1cInAtYnV0dG9uLXJhaXNlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb250cm9sRnVuY2lvblNlcnZpY2UuZ2V0Q29udHJvbEZ1bmNpb25hbGlkYWQoJ3NlZ3VwbGFjb3I6Z3VhcmRhcicpXCI+PC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPHAtZWRpdG9yIGlkPVwiZWRpdG9yXCIgW3N0eWxlXT1cInsgaGVpZ2h0OiAnNTAwcHgnIH1cIiByZXF1aXJlZCBbKG5nTW9kZWwpXT1cIm1vZGlmaWNhckhUTUxcIlxyXG4gICAgICAgICAgICAgICAgbmFtZT1cImh0bWxQdWJsaWNhY2lvblwiPjwvcC1lZGl0b3I+XHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuQGlmKGlzTW9zdHJhclBvcHVwQ29udmVydGlyKXtcclxuPGFwcC1wb3B1cC1jb252ZXJ0aXItcGxhbnRpbGxhcyAocmVncmVzYXIpPVwicmVncmVzYXJQb3B1cENvbnZlcnRpcigkZXZlbnQpXCI+PC9hcHAtcG9wdXAtY29udmVydGlyLXBsYW50aWxsYXM+XHJcbn1cclxuXHJcbjwvZGl2PiJdfQ==