sigesp 0.9.104-20240402 → 1.0.0-20240419

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (395) hide show
  1. package/esm2020/lib/app/app.component.mjs +14 -0
  2. package/esm2020/lib/app/app.module.mjs +34 -0
  3. package/esm2020/lib/core/interfaces/Auditoria.mjs +49 -0
  4. package/esm2020/lib/core/interfaces/Banco.mjs +2 -0
  5. package/esm2020/lib/core/interfaces/Catalogo.mjs +2 -0
  6. package/esm2020/lib/core/interfaces/CentroCosto.mjs +2 -0
  7. package/esm2020/lib/core/interfaces/Clasificacion.mjs +2 -0
  8. package/esm2020/lib/core/interfaces/Cliente.mjs +2 -0
  9. package/esm2020/lib/core/interfaces/ComprobantePresupuestario.mjs +2 -0
  10. package/esm2020/lib/core/interfaces/Comunidad.mjs +2 -0
  11. package/esm2020/lib/core/interfaces/Configuracion.mjs +2 -0
  12. package/esm2020/lib/core/interfaces/ConfiguracionRPC.mjs +2 -0
  13. package/esm2020/lib/core/interfaces/ConfiguracionSCG.mjs +2 -0
  14. package/esm2020/lib/core/interfaces/ConfigurationSPG.mjs +2 -0
  15. package/esm2020/lib/core/interfaces/Constantes.mjs +360 -0
  16. package/esm2020/lib/core/interfaces/CuentaEgresos.mjs +2 -0
  17. package/esm2020/lib/core/interfaces/CuentaIngreso.mjs +2 -0
  18. package/esm2020/lib/core/interfaces/CuentaIngresoEstructura.mjs +2 -0
  19. package/esm2020/lib/core/interfaces/CuentaInstitucional.mjs +2 -0
  20. package/esm2020/lib/core/interfaces/CuentaPresupuesto.mjs +2 -0
  21. package/esm2020/lib/core/interfaces/CuentasPorPagar.mjs +2 -0
  22. package/esm2020/lib/core/interfaces/Documento.mjs +2 -0
  23. package/esm2020/lib/core/interfaces/EntradaSuministro.mjs +2 -0
  24. package/esm2020/lib/core/interfaces/Especialidad.mjs +2 -0
  25. package/esm2020/lib/core/interfaces/EstructuraPresupuestaria.mjs +2 -0
  26. package/esm2020/lib/core/interfaces/FuenteFinanciamiento.mjs +2 -0
  27. package/esm2020/lib/core/interfaces/IBancoCuentasPorPagar.mjs +2 -0
  28. package/esm2020/lib/core/interfaces/ITipoDepositos.mjs +2 -0
  29. package/esm2020/lib/core/interfaces/Integracion.mjs +2 -0
  30. package/esm2020/lib/core/interfaces/Lugares.mjs +2 -0
  31. package/esm2020/lib/core/interfaces/Moneda.mjs +2 -0
  32. package/esm2020/lib/core/interfaces/Nomina.mjs +27 -0
  33. package/esm2020/lib/core/interfaces/PlanUnicoCuenta.mjs +2 -0
  34. package/esm2020/lib/core/interfaces/Presupuesto.mjs +2 -0
  35. package/esm2020/lib/core/interfaces/Proveedor.mjs +2 -0
  36. package/esm2020/lib/core/interfaces/RecursosHumanos.mjs +4 -0
  37. package/esm2020/lib/core/interfaces/Request.mjs +2 -0
  38. package/esm2020/lib/core/interfaces/Response.mjs +2 -0
  39. package/esm2020/lib/core/interfaces/Seguridad.mjs +2 -0
  40. package/esm2020/lib/core/interfaces/Servicios.mjs +2 -0
  41. package/esm2020/lib/core/interfaces/Sistema.mjs +2 -0
  42. package/esm2020/lib/core/interfaces/Tributos.mjs +2 -0
  43. package/esm2020/lib/core/interfaces/UnidadTributaria.mjs +2 -0
  44. package/esm2020/lib/core/interfaces/Usuario.mjs +2 -0
  45. package/esm2020/lib/core/interfaces/UsuarioPrefijo.mjs +2 -0
  46. package/esm2020/lib/core/models/CFG/Empresa.model.mjs +151 -0
  47. package/esm2020/lib/core/models/CFG/Enterprise.model.mjs +70 -0
  48. package/esm2020/lib/core/models/CFG/MPrefijo.model.mjs +64 -0
  49. package/esm2020/lib/core/models/CFG/Procede.model.mjs +31 -0
  50. package/esm2020/lib/core/models/CFG/TasaCambio.model.mjs +34 -0
  51. package/esm2020/lib/core/models/CFG/comunidad.model.mjs +22 -0
  52. package/esm2020/lib/core/models/CFG/locations.model.mjs +170 -0
  53. package/esm2020/lib/core/models/CFG/moneda.model.mjs +72 -0
  54. package/esm2020/lib/core/models/CFG/userPrefix.model.mjs +46 -0
  55. package/esm2020/lib/core/models/CXP/MConceptosCXP.model.mjs +34 -0
  56. package/esm2020/lib/core/models/CXP/MTipoDocumentoCXP.model.mjs +44 -0
  57. package/esm2020/lib/core/models/RPC/clasification.model.mjs +16 -0
  58. package/esm2020/lib/core/models/RPC/configuracionRPC.model.mjs +23 -0
  59. package/esm2020/lib/core/models/RPC/document.model.mjs +16 -0
  60. package/esm2020/lib/core/models/RPC/proveedores.model.mjs +9 -0
  61. package/esm2020/lib/core/models/RPC/providerBeneficiary.model.mjs +164 -0
  62. package/esm2020/lib/core/models/RPC/specialty.model.mjs +12 -0
  63. package/esm2020/lib/core/models/SCB/bank.model.mjs +181 -0
  64. package/esm2020/lib/core/models/SCG/IncomeAccount.mjs +83 -0
  65. package/esm2020/lib/core/models/SCG/accountMarriage.model.mjs +29 -0
  66. package/esm2020/lib/core/models/SCG/centroCosto.model.mjs +65 -0
  67. package/esm2020/lib/core/models/SCG/configuracionSCG.model.mjs +169 -0
  68. package/esm2020/lib/core/models/SCG/cuentaInstitucional.model.mjs +89 -0
  69. package/esm2020/lib/core/models/SCG/planUnicoCuenta.model.mjs +17 -0
  70. package/esm2020/lib/core/models/SFV/MClienteModel.mjs +116 -0
  71. package/esm2020/lib/core/models/SIV/MDetaContable.model.mjs +62 -0
  72. package/esm2020/lib/core/models/SIV/MDetaEntrada.model.mjs +94 -0
  73. package/esm2020/lib/core/models/SIV/MEntradaSuministro.model.mjs +132 -0
  74. package/esm2020/lib/core/models/SIV/MTipoDepositos.model.mjs +61 -0
  75. package/esm2020/lib/core/models/SNO/MAnticipoPrestaciones.model.mjs +100 -0
  76. package/esm2020/lib/core/models/SNO/MArchivoTxtCampo.model.mjs +61 -0
  77. package/esm2020/lib/core/models/SNO/MArchivosTxt.model.mjs +41 -0
  78. package/esm2020/lib/core/models/SNO/MAsignacionCargo.model.mjs +205 -0
  79. package/esm2020/lib/core/models/SNO/MAspectoEvaluacion.model.mjs +90 -0
  80. package/esm2020/lib/core/models/SNO/MAuditoria.model.mjs +61 -0
  81. package/esm2020/lib/core/models/SNO/MBeneficiario.model.mjs +137 -0
  82. package/esm2020/lib/core/models/SNO/MCargaFamiliar.model.mjs +52 -0
  83. package/esm2020/lib/core/models/SNO/MCargaMasiva.model.mjs +34 -0
  84. package/esm2020/lib/core/models/SNO/MCargosPersonal.model.mjs +101 -0
  85. package/esm2020/lib/core/models/SNO/MClasificacionObrero.mdel.mjs +46 -0
  86. package/esm2020/lib/core/models/SNO/MCodigoUnicoRac.model.mjs +39 -0
  87. package/esm2020/lib/core/models/SNO/MComponete.model.mjs +38 -0
  88. package/esm2020/lib/core/models/SNO/MConceptoVacaciones.model.mjs +85 -0
  89. package/esm2020/lib/core/models/SNO/MConceptosNomina.model.mjs +234 -0
  90. package/esm2020/lib/core/models/SNO/MConceptosPersonalNomina.model.mjs +97 -0
  91. package/esm2020/lib/core/models/SNO/MConcursante.model.mjs +317 -0
  92. package/esm2020/lib/core/models/SNO/MConcurso.model.mjs +246 -0
  93. package/esm2020/lib/core/models/SNO/MConfiguracionSNO.model.mjs +404 -0
  94. package/esm2020/lib/core/models/SNO/MConstanteNomina.model.mjs +67 -0
  95. package/esm2020/lib/core/models/SNO/MConstantePersonalNomina.model.mjs +79 -0
  96. package/esm2020/lib/core/models/SNO/MDedicacion.model.mjs +35 -0
  97. package/esm2020/lib/core/models/SNO/MDefinicionNomina.model.mjs +343 -0
  98. package/esm2020/lib/core/models/SNO/MDefinicionesBasicas.model.mjs +84 -0
  99. package/esm2020/lib/core/models/SNO/MDeudaAnterior.model.mjs +40 -0
  100. package/esm2020/lib/core/models/SNO/MEncargaduria.model.mjs +138 -0
  101. package/esm2020/lib/core/models/SNO/MEscalaEvaluacion.model.mjs +38 -0
  102. package/esm2020/lib/core/models/SNO/MEscalaEvaluacionDt.model.mjs +37 -0
  103. package/esm2020/lib/core/models/SNO/MEstructuraOrganizativa.model.mjs +119 -0
  104. package/esm2020/lib/core/models/SNO/MFamiliares.model.mjs +86 -0
  105. package/esm2020/lib/core/models/SNO/MFeriados.model.mjs +43 -0
  106. package/esm2020/lib/core/models/SNO/MFideicomiso.model.mjs +406 -0
  107. package/esm2020/lib/core/models/SNO/MFormacionAcademica.model.mjs +49 -0
  108. package/esm2020/lib/core/models/SNO/MGrado.model.mjs +47 -0
  109. package/esm2020/lib/core/models/SNO/MHojaTiempo.model.mjs +117 -0
  110. package/esm2020/lib/core/models/SNO/MImpuestoSobreRenta.model.mjs +73 -0
  111. package/esm2020/lib/core/models/SNO/MMetodoBanco.model.mjs +105 -0
  112. package/esm2020/lib/core/models/SNO/MNominaSimple.model.mjs +86 -0
  113. package/esm2020/lib/core/models/SNO/MPeriodoNomina.model.mjs +95 -0
  114. package/esm2020/lib/core/models/SNO/MPermisos.model.mjs +68 -0
  115. package/esm2020/lib/core/models/SNO/MPersonal.model.mjs +626 -0
  116. package/esm2020/lib/core/models/SNO/MPersonalJubilado.model.mjs +64 -0
  117. package/esm2020/lib/core/models/SNO/MPersonalNomina.model.mjs +313 -0
  118. package/esm2020/lib/core/models/SNO/MPlanHorario.model.mjs +116 -0
  119. package/esm2020/lib/core/models/SNO/MPlantillaConstancia.model.mjs +31 -0
  120. package/esm2020/lib/core/models/SNO/MPrestamo.model.mjs +221 -0
  121. package/esm2020/lib/core/models/SNO/MPrimaGrados.model.mjs +43 -0
  122. package/esm2020/lib/core/models/SNO/MPrimasConcepto.model.mjs +43 -0
  123. package/esm2020/lib/core/models/SNO/MRango.model.mjs +43 -0
  124. package/esm2020/lib/core/models/SNO/MReportesRRHH.mjs +402 -0
  125. package/esm2020/lib/core/models/SNO/MRequisitosConcursante.model.mjs +46 -0
  126. package/esm2020/lib/core/models/SNO/MRequisitosConcursos.model.mjs +37 -0
  127. package/esm2020/lib/core/models/SNO/MRequisitosMinimos.model.mjs +113 -0
  128. package/esm2020/lib/core/models/SNO/MSalarioHistorico.model.mjs +70 -0
  129. package/esm2020/lib/core/models/SNO/MSolicitudEmpleo.model.mjs +121 -0
  130. package/esm2020/lib/core/models/SNO/MTablaVacaciones.model.mjs +57 -0
  131. package/esm2020/lib/core/models/SNO/MTablaVacacionesPeriodo.model.mjs +40 -0
  132. package/esm2020/lib/core/models/SNO/MTabulador.model.mjs +96 -0
  133. package/esm2020/lib/core/models/SNO/MTipoEvaluacion.model.mjs +75 -0
  134. package/esm2020/lib/core/models/SNO/MTipoPersonal.model.mjs +34 -0
  135. package/esm2020/lib/core/models/SNO/MTiposEnfermedad.model.mjs +37 -0
  136. package/esm2020/lib/core/models/SNO/MTrabajoAnterior.model.mjs +65 -0
  137. package/esm2020/lib/core/models/SNO/MUbicacionFisica.model.mjs +61 -0
  138. package/esm2020/lib/core/models/SNO/MVacacionesPersonal.model.mjs +115 -0
  139. package/esm2020/lib/core/models/SOC/charge.model.mjs +66 -0
  140. package/esm2020/lib/core/models/SOC/clause.model.mjs +31 -0
  141. package/esm2020/lib/core/models/SOC/clauseModality.model.mjs +35 -0
  142. package/esm2020/lib/core/models/SOC/configuracionSOC.model.mjs +62 -0
  143. package/esm2020/lib/core/models/SOC/service.model.mjs +46 -0
  144. package/esm2020/lib/core/models/SOC/serviceCharge.model.mjs +37 -0
  145. package/esm2020/lib/core/models/SOC/serviceType.model.mjs +31 -0
  146. package/esm2020/lib/core/models/SPG/UnidadAdministradoraCentral.mjs +43 -0
  147. package/esm2020/lib/core/models/SPG/administrativeUnit.model.mjs +112 -0
  148. package/esm2020/lib/core/models/SPG/comprobantePresupuestario.model.mjs +51 -0
  149. package/esm2020/lib/core/models/SPG/configurationSPG.model.mjs +59 -0
  150. package/esm2020/lib/core/models/SPG/cuentaPresupuesto.model.mjs +120 -0
  151. package/esm2020/lib/core/models/SPG/estructuraPresupuestaria.model.mjs +176 -0
  152. package/esm2020/lib/core/models/SPG/expensiveAccount.model.mjs +108 -0
  153. package/esm2020/lib/core/models/SPG/fuenteFinanciamiento.model.mjs +31 -0
  154. package/esm2020/lib/core/models/SPG/incomeStructureAccount.model.mjs +81 -0
  155. package/esm2020/lib/core/models/SPG/organizationType.model.mjs +12 -0
  156. package/esm2020/lib/core/models/SSS/component.model.mjs +44 -0
  157. package/esm2020/lib/core/models/SSS/group.model.mjs +30 -0
  158. package/esm2020/lib/core/models/SSS/log.model.mjs +29 -0
  159. package/esm2020/lib/core/models/SSS/securityConfiguration.model.mjs +20 -0
  160. package/esm2020/lib/core/models/SSS/sistema.mjs +71 -0
  161. package/esm2020/lib/core/models/SSS/user.model.mjs +32 -0
  162. package/esm2020/lib/core/models/SSS/userDetail.model.mjs +73 -0
  163. package/esm2020/lib/core/models/SSS/userPermit.model.mjs +47 -0
  164. package/esm2020/lib/core/models/SSS/userRights.model.mjs +104 -0
  165. package/esm2020/lib/core/models/STB/MCargosAdicionales.mjs +84 -0
  166. package/esm2020/lib/core/models/STB/deduction.model.mjs +90 -0
  167. package/esm2020/lib/core/models/STB/deductionType.model.mjs +20 -0
  168. package/esm2020/lib/core/models/STB/unidadTributaria.model.mjs +14 -0
  169. package/esm2020/lib/core/models/basic-model.model.mjs +8 -0
  170. package/esm2020/lib/shared/components/catalogo/catalogo.component.mjs +72 -0
  171. package/esm2020/lib/shared/components/catalogo-doble-input/catalogo-doble-input.component.mjs +83 -0
  172. package/esm2020/lib/shared/components/catalogo-estructuras/catalogo-estructuras.component.mjs +74 -0
  173. package/esm2020/lib/shared/components/confirm/confirm.component.mjs +35 -0
  174. package/esm2020/lib/shared/components/icon/icon.component.mjs +22 -0
  175. package/esm2020/lib/shared/components/table-select/table-select.component.mjs +99 -0
  176. package/esm2020/lib/shared/material/customPaginator.mjs +24 -0
  177. package/esm2020/lib/shared/material/material.module.mjs +322 -0
  178. package/esm2020/lib/shared/pipes/iso-currency.pipe.mjs +43 -0
  179. package/esm2020/lib/shared/shared.module.mjs +66 -0
  180. package/esm2020/lib/sigesp.service.mjs +2050 -0
  181. package/esm2020/lib/validation.service.mjs +131 -0
  182. package/esm2020/public-api.mjs +156 -0
  183. package/esm2020/sigesp.mjs +5 -0
  184. package/fesm2015/{sigesp.js → sigesp.mjs} +524 -286
  185. package/fesm2015/sigesp.mjs.map +1 -0
  186. package/fesm2020/sigesp.mjs +14485 -0
  187. package/fesm2020/sigesp.mjs.map +1 -0
  188. package/index.d.ts +5 -0
  189. package/lib/app/app.component.d.ts +3 -0
  190. package/lib/app/app.module.d.ts +8 -0
  191. package/lib/core/models/SNO/MAuditoria.model.d.ts +1 -1
  192. package/lib/core/models/SNO/MFamiliares.model.d.ts +2 -2
  193. package/lib/shared/components/catalogo/catalogo.component.d.ts +4 -1
  194. package/lib/shared/components/catalogo-doble-input/catalogo-doble-input.component.d.ts +3 -0
  195. package/lib/shared/components/catalogo-estructuras/catalogo-estructuras.component.d.ts +4 -1
  196. package/lib/shared/components/confirm/confirm.component.d.ts +3 -0
  197. package/lib/shared/components/icon/icon.component.d.ts +3 -0
  198. package/lib/shared/components/table-select/table-select.component.d.ts +4 -1
  199. package/lib/shared/material/material.module.d.ts +46 -0
  200. package/lib/shared/pipes/iso-currency.pipe.d.ts +3 -0
  201. package/lib/shared/shared.module.d.ts +14 -0
  202. package/lib/sigesp.service.d.ts +6 -3
  203. package/lib/validation.service.d.ts +3 -0
  204. package/package.json +23 -11
  205. package/public-api.d.ts +8 -0
  206. package/bundles/sigesp.umd.js +0 -15577
  207. package/bundles/sigesp.umd.js.map +0 -1
  208. package/bundles/sigesp.umd.min.js +0 -2
  209. package/bundles/sigesp.umd.min.js.map +0 -1
  210. package/esm2015/lib/app/app.component.js +0 -15
  211. package/esm2015/lib/app/app.module.js +0 -23
  212. package/esm2015/lib/core/interfaces/Auditoria.js +0 -49
  213. package/esm2015/lib/core/interfaces/Banco.js +0 -2
  214. package/esm2015/lib/core/interfaces/Catalogo.js +0 -2
  215. package/esm2015/lib/core/interfaces/CentroCosto.js +0 -2
  216. package/esm2015/lib/core/interfaces/Clasificacion.js +0 -2
  217. package/esm2015/lib/core/interfaces/Cliente.js +0 -2
  218. package/esm2015/lib/core/interfaces/ComprobantePresupuestario.js +0 -2
  219. package/esm2015/lib/core/interfaces/Comunidad.js +0 -2
  220. package/esm2015/lib/core/interfaces/Configuracion.js +0 -2
  221. package/esm2015/lib/core/interfaces/ConfiguracionRPC.js +0 -2
  222. package/esm2015/lib/core/interfaces/ConfiguracionSCG.js +0 -2
  223. package/esm2015/lib/core/interfaces/ConfigurationSPG.js +0 -2
  224. package/esm2015/lib/core/interfaces/Constantes.js +0 -360
  225. package/esm2015/lib/core/interfaces/CuentaEgresos.js +0 -2
  226. package/esm2015/lib/core/interfaces/CuentaIngreso.js +0 -2
  227. package/esm2015/lib/core/interfaces/CuentaIngresoEstructura.js +0 -2
  228. package/esm2015/lib/core/interfaces/CuentaInstitucional.js +0 -2
  229. package/esm2015/lib/core/interfaces/CuentaPresupuesto.js +0 -2
  230. package/esm2015/lib/core/interfaces/CuentasPorPagar.js +0 -2
  231. package/esm2015/lib/core/interfaces/Documento.js +0 -2
  232. package/esm2015/lib/core/interfaces/EntradaSuministro.js +0 -2
  233. package/esm2015/lib/core/interfaces/Especialidad.js +0 -2
  234. package/esm2015/lib/core/interfaces/EstructuraPresupuestaria.js +0 -2
  235. package/esm2015/lib/core/interfaces/FuenteFinanciamiento.js +0 -2
  236. package/esm2015/lib/core/interfaces/IBancoCuentasPorPagar.js +0 -2
  237. package/esm2015/lib/core/interfaces/ITipoDepositos.js +0 -2
  238. package/esm2015/lib/core/interfaces/Integracion.js +0 -2
  239. package/esm2015/lib/core/interfaces/Lugares.js +0 -2
  240. package/esm2015/lib/core/interfaces/Moneda.js +0 -2
  241. package/esm2015/lib/core/interfaces/Nomina.js +0 -27
  242. package/esm2015/lib/core/interfaces/PlanUnicoCuenta.js +0 -2
  243. package/esm2015/lib/core/interfaces/Presupuesto.js +0 -2
  244. package/esm2015/lib/core/interfaces/Proveedor.js +0 -2
  245. package/esm2015/lib/core/interfaces/RecursosHumanos.js +0 -4
  246. package/esm2015/lib/core/interfaces/Request.js +0 -2
  247. package/esm2015/lib/core/interfaces/Response.js +0 -2
  248. package/esm2015/lib/core/interfaces/Seguridad.js +0 -2
  249. package/esm2015/lib/core/interfaces/Servicios.js +0 -2
  250. package/esm2015/lib/core/interfaces/Sistema.js +0 -2
  251. package/esm2015/lib/core/interfaces/Tributos.js +0 -2
  252. package/esm2015/lib/core/interfaces/UnidadTributaria.js +0 -2
  253. package/esm2015/lib/core/interfaces/Usuario.js +0 -2
  254. package/esm2015/lib/core/interfaces/UsuarioPrefijo.js +0 -2
  255. package/esm2015/lib/core/models/CFG/Empresa.model.js +0 -151
  256. package/esm2015/lib/core/models/CFG/Enterprise.model.js +0 -70
  257. package/esm2015/lib/core/models/CFG/MPrefijo.model.js +0 -64
  258. package/esm2015/lib/core/models/CFG/Procede.model.js +0 -31
  259. package/esm2015/lib/core/models/CFG/TasaCambio.model.js +0 -34
  260. package/esm2015/lib/core/models/CFG/comunidad.model.js +0 -22
  261. package/esm2015/lib/core/models/CFG/locations.model.js +0 -170
  262. package/esm2015/lib/core/models/CFG/moneda.model.js +0 -72
  263. package/esm2015/lib/core/models/CFG/userPrefix.model.js +0 -46
  264. package/esm2015/lib/core/models/CXP/MConceptosCXP.model.js +0 -34
  265. package/esm2015/lib/core/models/CXP/MTipoDocumentoCXP.model.js +0 -44
  266. package/esm2015/lib/core/models/RPC/clasification.model.js +0 -16
  267. package/esm2015/lib/core/models/RPC/configuracionRPC.model.js +0 -23
  268. package/esm2015/lib/core/models/RPC/document.model.js +0 -16
  269. package/esm2015/lib/core/models/RPC/proveedores.model.js +0 -9
  270. package/esm2015/lib/core/models/RPC/providerBeneficiary.model.js +0 -164
  271. package/esm2015/lib/core/models/RPC/specialty.model.js +0 -12
  272. package/esm2015/lib/core/models/SCB/bank.model.js +0 -181
  273. package/esm2015/lib/core/models/SCG/IncomeAccount.js +0 -83
  274. package/esm2015/lib/core/models/SCG/accountMarriage.model.js +0 -29
  275. package/esm2015/lib/core/models/SCG/centroCosto.model.js +0 -65
  276. package/esm2015/lib/core/models/SCG/configuracionSCG.model.js +0 -169
  277. package/esm2015/lib/core/models/SCG/cuentaInstitucional.model.js +0 -89
  278. package/esm2015/lib/core/models/SCG/planUnicoCuenta.model.js +0 -17
  279. package/esm2015/lib/core/models/SFV/MClienteModel.js +0 -116
  280. package/esm2015/lib/core/models/SIV/MDetaContable.model.js +0 -62
  281. package/esm2015/lib/core/models/SIV/MDetaEntrada.model.js +0 -94
  282. package/esm2015/lib/core/models/SIV/MEntradaSuministro.model.js +0 -132
  283. package/esm2015/lib/core/models/SIV/MTipoDepositos.model.js +0 -61
  284. package/esm2015/lib/core/models/SNO/MAnticipoPrestaciones.model.js +0 -100
  285. package/esm2015/lib/core/models/SNO/MArchivoTxtCampo.model.js +0 -61
  286. package/esm2015/lib/core/models/SNO/MArchivosTxt.model.js +0 -41
  287. package/esm2015/lib/core/models/SNO/MAsignacionCargo.model.js +0 -205
  288. package/esm2015/lib/core/models/SNO/MAspectoEvaluacion.model.js +0 -90
  289. package/esm2015/lib/core/models/SNO/MAuditoria.model.js +0 -61
  290. package/esm2015/lib/core/models/SNO/MBeneficiario.model.js +0 -137
  291. package/esm2015/lib/core/models/SNO/MCargaFamiliar.model.js +0 -52
  292. package/esm2015/lib/core/models/SNO/MCargaMasiva.model.js +0 -34
  293. package/esm2015/lib/core/models/SNO/MCargosPersonal.model.js +0 -101
  294. package/esm2015/lib/core/models/SNO/MClasificacionObrero.mdel.js +0 -46
  295. package/esm2015/lib/core/models/SNO/MCodigoUnicoRac.model.js +0 -39
  296. package/esm2015/lib/core/models/SNO/MComponete.model.js +0 -38
  297. package/esm2015/lib/core/models/SNO/MConceptoVacaciones.model.js +0 -85
  298. package/esm2015/lib/core/models/SNO/MConceptosNomina.model.js +0 -234
  299. package/esm2015/lib/core/models/SNO/MConceptosPersonalNomina.model.js +0 -97
  300. package/esm2015/lib/core/models/SNO/MConcursante.model.js +0 -317
  301. package/esm2015/lib/core/models/SNO/MConcurso.model.js +0 -246
  302. package/esm2015/lib/core/models/SNO/MConfiguracionSNO.model.js +0 -404
  303. package/esm2015/lib/core/models/SNO/MConstanteNomina.model.js +0 -67
  304. package/esm2015/lib/core/models/SNO/MConstantePersonalNomina.model.js +0 -79
  305. package/esm2015/lib/core/models/SNO/MDedicacion.model.js +0 -35
  306. package/esm2015/lib/core/models/SNO/MDefinicionNomina.model.js +0 -343
  307. package/esm2015/lib/core/models/SNO/MDefinicionesBasicas.model.js +0 -84
  308. package/esm2015/lib/core/models/SNO/MDeudaAnterior.model.js +0 -40
  309. package/esm2015/lib/core/models/SNO/MEncargaduria.model.js +0 -138
  310. package/esm2015/lib/core/models/SNO/MEscalaEvaluacion.model.js +0 -38
  311. package/esm2015/lib/core/models/SNO/MEscalaEvaluacionDt.model.js +0 -37
  312. package/esm2015/lib/core/models/SNO/MEstructuraOrganizativa.model.js +0 -119
  313. package/esm2015/lib/core/models/SNO/MFamiliares.model.js +0 -86
  314. package/esm2015/lib/core/models/SNO/MFeriados.model.js +0 -43
  315. package/esm2015/lib/core/models/SNO/MFideicomiso.model.js +0 -406
  316. package/esm2015/lib/core/models/SNO/MFormacionAcademica.model.js +0 -49
  317. package/esm2015/lib/core/models/SNO/MGrado.model.js +0 -47
  318. package/esm2015/lib/core/models/SNO/MHojaTiempo.model.js +0 -117
  319. package/esm2015/lib/core/models/SNO/MImpuestoSobreRenta.model.js +0 -73
  320. package/esm2015/lib/core/models/SNO/MMetodoBanco.model.js +0 -105
  321. package/esm2015/lib/core/models/SNO/MNominaSimple.model.js +0 -86
  322. package/esm2015/lib/core/models/SNO/MPeriodoNomina.model.js +0 -95
  323. package/esm2015/lib/core/models/SNO/MPermisos.model.js +0 -68
  324. package/esm2015/lib/core/models/SNO/MPersonal.model.js +0 -626
  325. package/esm2015/lib/core/models/SNO/MPersonalJubilado.model.js +0 -64
  326. package/esm2015/lib/core/models/SNO/MPersonalNomina.model.js +0 -313
  327. package/esm2015/lib/core/models/SNO/MPlanHorario.model.js +0 -116
  328. package/esm2015/lib/core/models/SNO/MPlantillaConstancia.model.js +0 -31
  329. package/esm2015/lib/core/models/SNO/MPrestamo.model.js +0 -221
  330. package/esm2015/lib/core/models/SNO/MPrimaGrados.model.js +0 -43
  331. package/esm2015/lib/core/models/SNO/MPrimasConcepto.model.js +0 -43
  332. package/esm2015/lib/core/models/SNO/MRango.model.js +0 -43
  333. package/esm2015/lib/core/models/SNO/MReportesRRHH.js +0 -402
  334. package/esm2015/lib/core/models/SNO/MRequisitosConcursante.model.js +0 -46
  335. package/esm2015/lib/core/models/SNO/MRequisitosConcursos.model.js +0 -37
  336. package/esm2015/lib/core/models/SNO/MRequisitosMinimos.model.js +0 -113
  337. package/esm2015/lib/core/models/SNO/MSalarioHistorico.model.js +0 -70
  338. package/esm2015/lib/core/models/SNO/MSolicitudEmpleo.model.js +0 -121
  339. package/esm2015/lib/core/models/SNO/MTablaVacaciones.model.js +0 -57
  340. package/esm2015/lib/core/models/SNO/MTablaVacacionesPeriodo.model.js +0 -40
  341. package/esm2015/lib/core/models/SNO/MTabulador.model.js +0 -96
  342. package/esm2015/lib/core/models/SNO/MTipoEvaluacion.model.js +0 -75
  343. package/esm2015/lib/core/models/SNO/MTipoPersonal.model.js +0 -34
  344. package/esm2015/lib/core/models/SNO/MTiposEnfermedad.model.js +0 -37
  345. package/esm2015/lib/core/models/SNO/MTrabajoAnterior.model.js +0 -65
  346. package/esm2015/lib/core/models/SNO/MUbicacionFisica.model.js +0 -61
  347. package/esm2015/lib/core/models/SNO/MVacacionesPersonal.model.js +0 -115
  348. package/esm2015/lib/core/models/SOC/charge.model.js +0 -66
  349. package/esm2015/lib/core/models/SOC/clause.model.js +0 -31
  350. package/esm2015/lib/core/models/SOC/clauseModality.model.js +0 -35
  351. package/esm2015/lib/core/models/SOC/configuracionSOC.model.js +0 -62
  352. package/esm2015/lib/core/models/SOC/service.model.js +0 -46
  353. package/esm2015/lib/core/models/SOC/serviceCharge.model.js +0 -37
  354. package/esm2015/lib/core/models/SOC/serviceType.model.js +0 -31
  355. package/esm2015/lib/core/models/SPG/UnidadAdministradoraCentral.js +0 -43
  356. package/esm2015/lib/core/models/SPG/administrativeUnit.model.js +0 -112
  357. package/esm2015/lib/core/models/SPG/comprobantePresupuestario.model.js +0 -51
  358. package/esm2015/lib/core/models/SPG/configurationSPG.model.js +0 -59
  359. package/esm2015/lib/core/models/SPG/cuentaPresupuesto.model.js +0 -120
  360. package/esm2015/lib/core/models/SPG/estructuraPresupuestaria.model.js +0 -176
  361. package/esm2015/lib/core/models/SPG/expensiveAccount.model.js +0 -108
  362. package/esm2015/lib/core/models/SPG/fuenteFinanciamiento.model.js +0 -31
  363. package/esm2015/lib/core/models/SPG/incomeStructureAccount.model.js +0 -81
  364. package/esm2015/lib/core/models/SPG/organizationType.model.js +0 -12
  365. package/esm2015/lib/core/models/SSS/component.model.js +0 -44
  366. package/esm2015/lib/core/models/SSS/group.model.js +0 -30
  367. package/esm2015/lib/core/models/SSS/log.model.js +0 -29
  368. package/esm2015/lib/core/models/SSS/securityConfiguration.model.js +0 -20
  369. package/esm2015/lib/core/models/SSS/sistema.js +0 -71
  370. package/esm2015/lib/core/models/SSS/user.model.js +0 -32
  371. package/esm2015/lib/core/models/SSS/userDetail.model.js +0 -73
  372. package/esm2015/lib/core/models/SSS/userPermit.model.js +0 -47
  373. package/esm2015/lib/core/models/SSS/userRights.model.js +0 -104
  374. package/esm2015/lib/core/models/STB/MCargosAdicionales.js +0 -84
  375. package/esm2015/lib/core/models/STB/deduction.model.js +0 -90
  376. package/esm2015/lib/core/models/STB/deductionType.model.js +0 -20
  377. package/esm2015/lib/core/models/STB/unidadTributaria.model.js +0 -14
  378. package/esm2015/lib/core/models/basic-model.model.js +0 -8
  379. package/esm2015/lib/shared/components/catalogo/catalogo.component.js +0 -59
  380. package/esm2015/lib/shared/components/catalogo-doble-input/catalogo-doble-input.component.js +0 -70
  381. package/esm2015/lib/shared/components/catalogo-estructuras/catalogo-estructuras.component.js +0 -62
  382. package/esm2015/lib/shared/components/confirm/confirm.component.js +0 -30
  383. package/esm2015/lib/shared/components/icon/icon.component.js +0 -20
  384. package/esm2015/lib/shared/components/table-select/table-select.component.js +0 -85
  385. package/esm2015/lib/shared/material/customPaginator.js +0 -24
  386. package/esm2015/lib/shared/material/material.module.js +0 -145
  387. package/esm2015/lib/shared/pipes/iso-currency.pipe.js +0 -39
  388. package/esm2015/lib/shared/shared.module.js +0 -51
  389. package/esm2015/lib/sigesp.service.js +0 -2084
  390. package/esm2015/lib/validation.service.js +0 -130
  391. package/esm2015/public-api.js +0 -148
  392. package/esm2015/sigesp.js +0 -15
  393. package/fesm2015/sigesp.js.map +0 -1
  394. package/sigesp.d.ts +0 -32
  395. package/sigesp.metadata.json +0 -1
@@ -0,0 +1,626 @@
1
+ import { EstatusEstudio, EstatusPersonal, Estudios, SituacionPersonal } from '../../interfaces/Constantes';
2
+ import { MBasicModel } from '../basic-model.model';
3
+ export class MPersonal extends MBasicModel {
4
+ constructor(p = null) {
5
+ super();
6
+ this.idEmpresa = 0;
7
+ this.idEnterprise = 0;
8
+ this.idPersonal = 0;
9
+ this.codigoPersonal = ''; //10
10
+ this.cedulaPersonal = ''; //10
11
+ this.rifPersonal = ''; //15
12
+ this.nombrePersonal = ''; //60
13
+ this.apellidoPersonal = '';
14
+ this.fechaNacimientoPersonal = '1900-01-01';
15
+ this.codigoPaisNacimiento = '--';
16
+ this.codigoEstadoNacimiento = '---';
17
+ this.codigoMunicipioNacimiento = '---';
18
+ this.codigoParroquiaNacimiento = '---';
19
+ this.nacionalidadPersonal = '';
20
+ this.estadoCivilPersonal = 'S';
21
+ this.telefonoHabitacionPersonal = ''; //15
22
+ this.telefonoMovilPersobal = ''; //15
23
+ this.correoElectronicoPersonal = ''; //60
24
+ this.direccionPersonal = ''; //255
25
+ this.codigoPais = '--';
26
+ this.codigoEstado = '--';
27
+ this.codigoMunicipio = '---';
28
+ this.codigoParroquia = '---';
29
+ this.sexoPersonal = '';
30
+ this.numeroHijo = 0;
31
+ this.conyugueTrabaja = 0;
32
+ this.cedulaBeneficiarioPersonal = '';
33
+ this.estatura = 0;
34
+ this.peso = 0;
35
+ this.tallaCamisa = '';
36
+ this.tallaPantalon = '';
37
+ this.tallaZapato = '';
38
+ this.idProfesion = 0;
39
+ this.nivelAcademicoPersonal = ''; //1
40
+ this.idComponente = 0;
41
+ this.idRango = 0;
42
+ this.fotoPersonal = '';
43
+ this.observacionPersonal = '';
44
+ this.estatusPersonal = '1';
45
+ this.idClasificacionPersonal = 0;
46
+ this.centroMedicoIVVS = ''; //155
47
+ this.turnoPersonal = ''; //1
48
+ this.horarioPersonal = ''; //10
49
+ this.estatusHCMPersonal = 0;
50
+ this.tipoSangrePersonal = ''; //10
51
+ this.numeroExpedientePersonal = ''; //20
52
+ this.cargoOriginalPersonal = ''; //100
53
+ this.tipoViviendaPersonal = 0; //ojo
54
+ this.tenenciaViviendaPersonal = ''; //40/ojo
55
+ this.montoPagadoViviendaPersonal = 0;
56
+ this.estatusCajaAhorro = 0;
57
+ this.cuentaCajaAhorroPersonal = ''; //25
58
+ this.porcentajeCajaAhorro = 0;
59
+ this.cuetaLeyPoliticaHabitacionaPersonal = ''; //25
60
+ this.cuentaFideicomiso = ''; //25
61
+ this.estatusSindicato = 0;
62
+ this.fechaIngresoAdministracionPublica = '1900-01-01';
63
+ this.anoServicioPrevioFijoAP = 0; //integer
64
+ this.anoServicioPrevioContratadoAP = 0; //integer
65
+ this.anoPersonalObrero = 0; //integer
66
+ this.anoServicioPrevioPersonal = 0; //integer
67
+ this.mesesServicioPrevioPersonal = 0; //integer
68
+ this.diasServicioPrevioPersonal = 0; //integer
69
+ this.fechaIngerosPersonal = '1900-01-01';
70
+ this.fechaReingresoPersonal = '1900-01-01';
71
+ this.fechajubilacionPersonal = '1900-01-01';
72
+ this.fechaEgresoPersonal = '1900-01-01';
73
+ this.causaEgresoPersonal = 'N'; //1
74
+ this.observacionEgresoPersonal = ''; //254
75
+ this.preaviso = '0'; //1
76
+ this.fechaLOSFAN = '1900-01-01';
77
+ this.situacion = 'N'; //1
78
+ this.fechaSituacion = '1900-01-01';
79
+ this.idCausales = 0;
80
+ this.fechaRegistroSistema = '1900-01-01';
81
+ this.codidoUsuario = '';
82
+ this.observacion = '';
83
+ this.idCentroMedico = 0;
84
+ this.idTipoPersonal = 0;
85
+ this.codigoComponente = '';
86
+ this.denominacionComponente = '';
87
+ this.codigoRango = '';
88
+ this.denominacionRango = '';
89
+ this.codigoCentroMedico = '';
90
+ this.denominacionCentroMedico = '';
91
+ this.codigoTipoPersonal = '';
92
+ this.denominacionTipoPersonal = '';
93
+ this.codigoCausaRetiro = '';
94
+ this.denominacionCausaRetiro = '';
95
+ this.idProveedorBeneficiario = 0;
96
+ this.denominacionEstatus = '';
97
+ this.conapdis = false;
98
+ this.idSindicato = 0;
99
+ this.codigoSindicato = '00000';
100
+ this.denominacionSindicato = '';
101
+ this.nombrePais = '';
102
+ this.nombreEstado = '';
103
+ this.nombreMunicipio = '';
104
+ this.nombreParroquia = '';
105
+ this.nombrePaisNacimiento = '';
106
+ this.nombreEstadoNacimiento = '';
107
+ this.nombreMunicipioNacimiento = '';
108
+ this.nombreParroquiaNacimiento = '';
109
+ this.codigoProfesion = '';
110
+ this.denominacionProfesion = '';
111
+ this.montoPension = 0;
112
+ this.idPlanHorario = 0;
113
+ this.idHora = 0;
114
+ this.descripcionPlanHorario = '';
115
+ this.codigoPlanHorario = '--';
116
+ this.idPuestoTrabajo = 0;
117
+ this.descripcionPuestoTrabajo = '';
118
+ this.codigoPuestoTrabajo = '--';
119
+ this.descripcionHorario = '';
120
+ this.fechaDefuncion = '1900-01-01';
121
+ this.fechaActaDefuncion = '1900-01-01';
122
+ this.numeroActaDefuncion = '';
123
+ this.denominacionSituacion = '';
124
+ this.codigoClasificadorPersonal = '';
125
+ this.denominacionClasificadorPersonal = '';
126
+ this.idPermisoPersonal = 0;
127
+ this.codigoPermisoPersonal = '';
128
+ this.denominacionPermisoPersonal = '';
129
+ if (p) {
130
+ this.idEnterprise = +p.id_enterprise;
131
+ this.idEmpresa = p.id_empresa;
132
+ this.idPersonal = +p.id_personal;
133
+ this.codigoPersonal = p.codper;
134
+ this.cedulaPersonal = p.cedper;
135
+ this.rifPersonal = p.rifper;
136
+ this.nombrePersonal = p.nomper;
137
+ this.apellidoPersonal = p.apeper;
138
+ this.fechaNacimientoPersonal = p.fecnacper;
139
+ this.codigoPaisNacimiento = p.codpainac;
140
+ this.codigoEstadoNacimiento = p.codestnac;
141
+ this.codigoMunicipioNacimiento = p.codmunnac;
142
+ this.codigoParroquiaNacimiento = p.codparnac;
143
+ this.nacionalidadPersonal = p.nacper;
144
+ this.estadoCivilPersonal = p.estcivper;
145
+ this.telefonoHabitacionPersonal = p.telhabper;
146
+ this.telefonoMovilPersobal = p.telmovper;
147
+ this.correoElectronicoPersonal = p.coreleper;
148
+ this.direccionPersonal = p.dirper;
149
+ this.codigoPais = p.codpai;
150
+ this.codigoEstado = p.codest;
151
+ this.codigoMunicipio = p.codmun;
152
+ this.codigoParroquia = p.codpar;
153
+ this.sexoPersonal = p.sexper;
154
+ this.numeroHijo = +p.numhijper;
155
+ this.conyugueTrabaja = +p.contra;
156
+ this.cedulaBeneficiarioPersonal = p.cedbenper;
157
+ this.estatura = +p.estatura;
158
+ this.peso = +p.peso;
159
+ this.tallaCamisa = p.tallcam;
160
+ this.tallaPantalon = p.tallpan;
161
+ 1;
162
+ this.tallaZapato = p.tallzap;
163
+ this.idProfesion = +p.id_profesion;
164
+ this.nivelAcademicoPersonal = p.nivacaper;
165
+ this.idComponente = +p.id_componente;
166
+ this.idRango = +p.id_rango;
167
+ this.fotoPersonal = p.fotper;
168
+ this.observacionPersonal = p.obsegrper;
169
+ this.estatusPersonal = p.estper;
170
+ this.idClasificacionPersonal = +p.id_claper;
171
+ this.turnoPersonal = p.turper;
172
+ this.horarioPersonal = p.horper;
173
+ this.estatusHCMPersonal = +p.hcmper;
174
+ this.tipoSangrePersonal = p.tipsanper;
175
+ this.numeroExpedientePersonal = p.numexpper;
176
+ this.cargoOriginalPersonal = p.caroriper;
177
+ this.tipoViviendaPersonal = +p.tipvivper;
178
+ this.tenenciaViviendaPersonal = p.tenvivper;
179
+ this.montoPagadoViviendaPersonal = +p.monpagvivper;
180
+ this.estatusCajaAhorro = +p.estcajaho;
181
+ this.cuentaCajaAhorroPersonal = p.cuecajahoper;
182
+ this.porcentajeCajaAhorro = +p.porcajaho;
183
+ this.cuetaLeyPoliticaHabitacionaPersonal = p.cuelphper;
184
+ this.cuentaFideicomiso = p.cuefidper;
185
+ 1;
186
+ this.estatusSindicato = +p.estsindicato;
187
+ this.fechaIngresoAdministracionPublica = p.fecingadmpubper;
188
+ this.anoServicioPrevioFijoAP = +p.anoservprefijo;
189
+ this.anoServicioPrevioContratadoAP = +p.anoservprecont;
190
+ this.anoPersonalObrero = +p.anoperobr;
191
+ this.anoServicioPrevioPersonal = +p.anoservpreper;
192
+ this.mesesServicioPrevioPersonal = +p.messervpreper;
193
+ this.diasServicioPrevioPersonal = +p.diaservpreper;
194
+ this.fechaIngerosPersonal = p.fecingper;
195
+ this.fechaReingresoPersonal = p.fecreingper;
196
+ this.fechajubilacionPersonal = p.fecjubper;
197
+ this.fechaEgresoPersonal = p.fecegrper;
198
+ this.causaEgresoPersonal = p.cauegrper;
199
+ this.observacionEgresoPersonal = p.obsegrper;
200
+ this.preaviso = p.preaviso;
201
+ this.fechaLOSFAN = p.feclossfan;
202
+ this.situacion = p.situacion;
203
+ this.fechaSituacion = p.fecsitu;
204
+ this.idCausales = +p.id_causales;
205
+ this.fechaRegistroSistema = p.fecregsis;
206
+ this.codidoUsuario = p.codusu;
207
+ this.observacion = p.observacion;
208
+ this.idCentroMedico = p.id_cenmedss,
209
+ this.idTipoPersonal = p.id_tipopersonal,
210
+ this.codigoComponente = p.codcom;
211
+ this.denominacionComponente = p.dencom;
212
+ this.codigoRango = p.codran;
213
+ this.denominacionRango = p.denran;
214
+ this.codigoCentroMedico = p.codcenmedss;
215
+ this.denominacionCentroMedico = p.dencenmedss;
216
+ this.codigoTipoPersonal = p.codtipper;
217
+ this.denominacionTipoPersonal = p.dentipper;
218
+ this.codigoCausaRetiro = p.dencau;
219
+ this.denominacionCausaRetiro = p.codcau;
220
+ this.idProveedorBeneficiario = parseInt(p.id_proveedorbeneficiario);
221
+ this.idSindicato = parseInt(p.id_sindicato);
222
+ this.codigoSindicato = p.codsin;
223
+ this.denominacionSindicato = p.densin;
224
+ this.denominacionEstatus = (EstatusPersonal.find(e => e.value == p.estper).denominacion).toUpperCase();
225
+ this.conapdis = p.conapdis == '1' ? true : false;
226
+ this.idSindicato = parseInt(p.id_sindicato);
227
+ this.codigoSindicato = p.codsin;
228
+ this.denominacionSindicato = p.densin;
229
+ this.nombrePais = p.despai;
230
+ this.nombreEstado = p.desest;
231
+ this.nombreMunicipio = p.desmun;
232
+ this.nombreParroquia = p.despar;
233
+ this.nombreEstadoNacimiento = p.desest_nac;
234
+ this.nombrePaisNacimiento = p.despai_nac;
235
+ this.codigoProfesion = p.codpro;
236
+ this.denominacionProfesion = p.denpro;
237
+ this.montoPension = +p.monpen;
238
+ this.idPlanHorario = +p.id_planhor;
239
+ this.idHora = +p.id_hora;
240
+ this.fechaDefuncion = p.fecdef;
241
+ this.fechaActaDefuncion = p.fecactdef;
242
+ this.numeroActaDefuncion = p.numactdef;
243
+ if (this.idPlanHorario > 0) {
244
+ this.codigoPlanHorario = p.codplanhor;
245
+ this.descripcionPlanHorario = p.denplanhor;
246
+ }
247
+ else if (this.idHora > 0) {
248
+ this.descripcionHorario = p.horini + '-' + p.horfin;
249
+ }
250
+ this.descripcionPuestoTrabajo = p.despuetra;
251
+ this.codigoPuestoTrabajo = p.codpuetra;
252
+ this.denominacionSituacion = (SituacionPersonal.find(e => e.value == p.situacion).denominacion).toLocaleUpperCase();
253
+ this.codigoClasificadorPersonal = p.codclaper;
254
+ this.denominacionClasificadorPersonal = p.denclaper;
255
+ this.idPermisoPersonal = +p.id_perper;
256
+ this.denominacionPermisoPersonal = p.denperper;
257
+ this.codigoPermisoPersonal = p.codperper;
258
+ }
259
+ else {
260
+ this.isNew = true;
261
+ }
262
+ }
263
+ ;
264
+ ;
265
+ dataInterface() {
266
+ return {
267
+ id_empresa: this.idEmpresa,
268
+ id_enterprise: this.idEnterprise.toString(),
269
+ id_personal: +this.idPersonal,
270
+ codper: this.codigoPersonal,
271
+ cedper: this.cedulaPersonal,
272
+ rifper: this.rifPersonal,
273
+ nomper: this.nombrePersonal,
274
+ apeper: this.apellidoPersonal,
275
+ fecnacper: this.fechaNacimientoPersonal,
276
+ codpainac: this.codigoPaisNacimiento,
277
+ codestnac: this.codigoEstadoNacimiento,
278
+ codmunnac: this.codigoMunicipioNacimiento,
279
+ codparnac: this.codigoParroquiaNacimiento,
280
+ nacper: this.nacionalidadPersonal,
281
+ estcivper: this.estadoCivilPersonal,
282
+ telhabper: this.telefonoHabitacionPersonal,
283
+ telmovper: this.telefonoMovilPersobal,
284
+ coreleper: this.correoElectronicoPersonal,
285
+ dirper: this.direccionPersonal,
286
+ codpai: this.codigoPais,
287
+ codest: this.codigoEstado,
288
+ codmun: this.codigoMunicipio,
289
+ codpar: this.codigoParroquia,
290
+ sexper: this.sexoPersonal,
291
+ numhijper: +this.numeroHijo,
292
+ contra: +this.conyugueTrabaja,
293
+ cedbenper: this.cedulaBeneficiarioPersonal,
294
+ estatura: this.estatura,
295
+ peso: this.peso,
296
+ tallcam: this.tallaCamisa,
297
+ tallpan: this.tallaPantalon,
298
+ tallzap: this.tallaZapato,
299
+ id_profesion: this.idProfesion,
300
+ nivacaper: this.nivelAcademicoPersonal,
301
+ id_componente: +this.idComponente,
302
+ id_rango: +this.idRango,
303
+ fotper: this.fotoPersonal,
304
+ obsper: this.observacionPersonal,
305
+ estper: this.estatusPersonal,
306
+ id_claper: +this.idClasificacionPersonal,
307
+ turper: this.turnoPersonal,
308
+ horper: this.horarioPersonal,
309
+ hcmper: this.estatusHCMPersonal,
310
+ tipsanper: this.tipoSangrePersonal,
311
+ numexpper: this.numeroExpedientePersonal,
312
+ caroriper: this.cargoOriginalPersonal,
313
+ tipvivper: this.tipoViviendaPersonal,
314
+ tenvivper: this.tenenciaViviendaPersonal,
315
+ monpagvivper: this.montoPagadoViviendaPersonal,
316
+ estcajaho: this.estatusCajaAhorro,
317
+ cuecajahoper: this.cuentaCajaAhorroPersonal,
318
+ porcajaho: this.porcentajeCajaAhorro,
319
+ cuelphper: this.cuetaLeyPoliticaHabitacionaPersonal,
320
+ cuefidper: this.cuentaFideicomiso,
321
+ estsindicato: this.estatusSindicato,
322
+ fecingadmpubper: this.fechaIngresoAdministracionPublica,
323
+ anoservprefijo: this.anoServicioPrevioFijoAP,
324
+ anoservprecont: this.anoServicioPrevioContratadoAP,
325
+ anoperobr: this.anoPersonalObrero,
326
+ anoservpreper: this.anoServicioPrevioPersonal,
327
+ messervpreper: this.mesesServicioPrevioPersonal,
328
+ diaservpreper: this.diasServicioPrevioPersonal,
329
+ fecingper: this.fechaIngerosPersonal,
330
+ fecreingper: this.fechaReingresoPersonal,
331
+ fecjubper: this.fechajubilacionPersonal,
332
+ fecegrper: this.fechaEgresoPersonal,
333
+ cauegrper: this.causaEgresoPersonal,
334
+ obsegrper: this.observacionEgresoPersonal,
335
+ preaviso: this.preaviso,
336
+ feclossfan: this.fechaLOSFAN,
337
+ situacion: this.situacion,
338
+ fecsitu: this.fechaSituacion,
339
+ id_causales: +this.idCausales,
340
+ fecregsis: this.fechaRegistroSistema,
341
+ codusu: this.codidoUsuario,
342
+ observacion: this.observacion,
343
+ id_cenmedss: +this.idCentroMedico,
344
+ id_tipopersonal: +this.idTipoPersonal,
345
+ codcom: this.codigoComponente,
346
+ dencom: this.denominacionComponente,
347
+ codran: this.codigoRango,
348
+ denran: this.denominacionRango,
349
+ codcenmedss: this.codigoCentroMedico,
350
+ dencenmedss: this.denominacionCentroMedico,
351
+ codtipper: this.codigoTipoPersonal,
352
+ dentipper: this.denominacionTipoPersonal,
353
+ codcau: this.codigoCausaRetiro,
354
+ dencau: this.denominacionCausaRetiro,
355
+ id_proveedorbeneficiario: this.idProveedorBeneficiario.toString(),
356
+ id_sindicato: this.idSindicato.toString(),
357
+ codsin: this.codigoSindicato,
358
+ densin: this.denominacionSindicato,
359
+ conapdis: this.conapdis ? '1' : '0',
360
+ despai: this.nombrePais,
361
+ desest: this.nombreEstado,
362
+ desmun: this.nombreMunicipio,
363
+ despar: this.nombreParroquia,
364
+ desest_nac: this.nombreEstadoNacimiento,
365
+ despai_nac: this.nombrePaisNacimiento,
366
+ id_planhor: this.idPlanHorario.toString(),
367
+ id_hora: this.idHora.toString(),
368
+ id_puetra: this.idPuestoTrabajo.toString(),
369
+ fecdef: this.fechaDefuncion,
370
+ fecactdef: this.fechaActaDefuncion,
371
+ numactdef: this.numeroActaDefuncion,
372
+ id_perper: this.idPermisoPersonal.toString(),
373
+ denperper: this.denominacionPermisoPersonal,
374
+ codperper: this.codigoPermisoPersonal,
375
+ };
376
+ }
377
+ }
378
+ export class MCambioEstatusPersonal extends MBasicModel {
379
+ constructor(e = null) {
380
+ super();
381
+ this.idEmpresa = 0;
382
+ this.idEnterprise = 0;
383
+ this.idPersonal = 0;
384
+ this.codigoPersonal = '';
385
+ this.estatusActual = '2';
386
+ this.estatusNuevo = '2';
387
+ this.fechaEgreso = '';
388
+ this.causaEgreso = '';
389
+ this.preaviso = '1';
390
+ this.idCausales = 0;
391
+ this.observacion = '';
392
+ this.fechaReingreso = '1900-01-01';
393
+ if (e) {
394
+ this.idEnterprise = +e.id_enterprise;
395
+ this.idEmpresa = e.id_empresa;
396
+ this.idPersonal = e.idPersonal;
397
+ this.codigoPersonal = e.codigoPersonal;
398
+ this.estatusActual = e.estatusActual;
399
+ this.estatusNuevo = e.estatusNuevo;
400
+ this.fechaEgreso = e.fechaEgreso;
401
+ this.causaEgreso = e.causaEgreso;
402
+ this.preaviso = e.preaviso;
403
+ this.idCausales = e.idCausales;
404
+ this.observacion = e.observacion;
405
+ this.fechaReingreso = e.fechaReingreso;
406
+ }
407
+ }
408
+ dataInterface() {
409
+ return {
410
+ id_empresa: this.idEmpresa,
411
+ id_enterprise: this.idEnterprise.toString(),
412
+ idPersonal: this.idPersonal,
413
+ codigoPersonal: this.codigoPersonal,
414
+ estatusActual: this.estatusActual,
415
+ estatusNuevo: this.estatusNuevo,
416
+ fechaEgreso: this.fechaEgreso,
417
+ causaEgreso: this.causaEgreso,
418
+ preaviso: this.preaviso,
419
+ idCausales: this.idCausales,
420
+ observacion: this.observacion,
421
+ fechaReingreso: this.fechaReingreso,
422
+ };
423
+ }
424
+ }
425
+ export class MPersonalCuentaBanco extends MBasicModel {
426
+ constructor(e) {
427
+ super();
428
+ this.idEmpresa = 0;
429
+ this.idEnterprise = 0;
430
+ this.idPersonal = 0;
431
+ this.idCuentaBancoPersonal = -1;
432
+ this.codigoCuentaBancoPersonal = '';
433
+ this.denominacionCuentaBancoPersonal = '';
434
+ this.idBanco = 0;
435
+ this.idTipoCuentaBanco = 0;
436
+ this.cuentaBancoPersonal = '';
437
+ this.estatusCuentaBanco = true;
438
+ this.tipoCuentaPrincipal = false;
439
+ this.codigoBanco = '';
440
+ this.cuentaReducida = '';
441
+ this.nombreBanco = '';
442
+ this.nombreTipoCuentaBanco = '';
443
+ if (e) {
444
+ this.idEnterprise = +e.id_enterprise;
445
+ this.idEmpresa = e.id_empresa;
446
+ this.idPersonal = parseInt(e.id_personal);
447
+ this.idCuentaBancoPersonal = parseInt(e.id_ctabanper);
448
+ this.codigoCuentaBancoPersonal = e.codctabanper;
449
+ this.denominacionCuentaBancoPersonal = e.denctabanper;
450
+ this.idBanco = parseInt(e.id_banco);
451
+ this.idTipoCuentaBanco = parseInt(e.id_tipocta);
452
+ this.cuentaBancoPersonal = e.ctabanper;
453
+ this.estatusCuentaBanco = e.estctabco == '1' ? true : false;
454
+ this.tipoCuentaPrincipal = e.tipctapri == '1' ? true : false;
455
+ this.codigoBanco = this.cuentaBancoPersonal.substring(0, 4);
456
+ this.cuentaReducida = this.cuentaBancoPersonal.slice(4);
457
+ this.nombreBanco = e.nomban;
458
+ this.nombreTipoCuentaBanco = e.nomtipcta;
459
+ }
460
+ else {
461
+ this.isNew = true;
462
+ }
463
+ }
464
+ dataInterface() {
465
+ return {
466
+ id_enterprise: this.idEnterprise.toString(),
467
+ id_empresa: this.idEmpresa,
468
+ id_personal: this.idPersonal.toString(),
469
+ id_ctabanper: this.idCuentaBancoPersonal.toString(),
470
+ codctabanper: this.codigoCuentaBancoPersonal,
471
+ denctabanper: this.denominacionCuentaBancoPersonal,
472
+ id_banco: this.idBanco.toString(),
473
+ id_tipocta: this.idTipoCuentaBanco.toString(),
474
+ ctabanper: this.cuentaBancoPersonal,
475
+ estctabco: this.estatusCuentaBanco ? '1' : '0',
476
+ tipctapri: this.tipoCuentaPrincipal ? '1' : '0',
477
+ };
478
+ }
479
+ }
480
+ export class MEstudiosRealizados {
481
+ constructor(e = null) {
482
+ this.idEmpresa = 0;
483
+ this.idEnterprise = 0;
484
+ this.idPersonal = 0;
485
+ this.idEstudio = 0;
486
+ this.codigoEstudioRealizado = '';
487
+ this.tipoEstudioRealizado = '1';
488
+ this.denominacionEstudioRealizado = '1';
489
+ this.institutoEstudioRealizado = '';
490
+ this.descripcionEstudioRealizado = '';
491
+ this.tituloEstudioRealizado = '';
492
+ this.calificacionEstudioRealizado = 0;
493
+ this.escalaValores = '';
494
+ this.fechaInicioEstudioRealizado = '1900-01-01';
495
+ this.fechaFinEstudioRealizado = '1900-01-01';
496
+ this.fechaGradoEstudioRealizado = '1900-01-01';
497
+ this.aprobacionEstudioRealizado = '1';
498
+ this.anoAprobacionEstudioRealizado = 0;
499
+ this.horasEstudioRealizado = 0;
500
+ this.TipoEstudio = Estudios;
501
+ this.Aprobado = EstatusEstudio;
502
+ if (e) {
503
+ this.idEmpresa = e.id_empresa;
504
+ this.idEnterprise = +e.id_enterprise;
505
+ this.idPersonal = parseInt(e.id_personal);
506
+ this.idEstudio = parseInt(e.id_estudio);
507
+ this.codigoEstudioRealizado = e.codestrea;
508
+ this.tipoEstudioRealizado = e.tipestrea;
509
+ this.institutoEstudioRealizado = e.insestrea;
510
+ this.descripcionEstudioRealizado = e.desestrea;
511
+ this.tituloEstudioRealizado = e.titestrea;
512
+ this.calificacionEstudioRealizado = +e.calestrea;
513
+ this.escalaValores = e.escval;
514
+ this.fechaInicioEstudioRealizado = e.fecinireaest;
515
+ this.fechaFinEstudioRealizado = e.fecfinestrea;
516
+ this.fechaGradoEstudioRealizado = e.fecgraestrea;
517
+ this.aprobacionEstudioRealizado = e.aprestrea;
518
+ this.anoAprobacionEstudioRealizado = parseInt(e.anoaprestrea);
519
+ this.horasEstudioRealizado = parseInt(e.horestrea);
520
+ this.denominacionEstudioRealizado = this.TipoEstudio.find(e => e.value == this.tipoEstudioRealizado).denominacion;
521
+ this.denominacionAprobacionEstudioRealizado = this.Aprobado.find(e => e.value == this.aprobacionEstudioRealizado).denominacion;
522
+ }
523
+ }
524
+ dataInterface() {
525
+ return {
526
+ id_empresa: this.idEmpresa,
527
+ id_enterprise: this.idEnterprise.toString(),
528
+ id_personal: this.idPersonal.toString(),
529
+ id_estudio: this.idEstudio.toString(),
530
+ codestrea: this.codigoEstudioRealizado,
531
+ tipestrea: this.tipoEstudioRealizado,
532
+ insestrea: this.institutoEstudioRealizado,
533
+ desestrea: this.descripcionEstudioRealizado,
534
+ titestrea: this.tituloEstudioRealizado,
535
+ calestrea: this.calificacionEstudioRealizado,
536
+ escval: this.escalaValores,
537
+ fecinireaest: this.fechaInicioEstudioRealizado,
538
+ fecfinestrea: this.fechaFinEstudioRealizado,
539
+ fecgraestrea: this.fechaGradoEstudioRealizado,
540
+ aprestrea: this.aprobacionEstudioRealizado,
541
+ anoaprestrea: this.anoAprobacionEstudioRealizado.toString(),
542
+ horestrea: this.horasEstudioRealizado.toString(),
543
+ };
544
+ }
545
+ }
546
+ export class MPrestacionesAntiguedad extends MBasicModel {
547
+ constructor(e = null) {
548
+ super();
549
+ this.idEmpresa = 0;
550
+ this.idEnterprice = 0;
551
+ this.idPersonal = 0;
552
+ this.idFideicomiso = 0;
553
+ this.anoCurPeriodo = 0;
554
+ this.mesCurPeriodo = 0;
555
+ this.sueldoIntegralPersonal = 0;
556
+ this.bonoExtraPersonal = 0;
557
+ this.bonoVacacionesPersonal = 0;
558
+ this.bonoFinAnnoPersonal = 0;
559
+ this.aportePersonal = 0;
560
+ this.diaFideicomiso = 0;
561
+ this.diaAdicional = 0;
562
+ this.metodoPresatciones = '';
563
+ this.metodoDiasAdicionales = '';
564
+ this.bonoVacacionalDiasAdicionalesPersonal = 0;
565
+ this.bonoFinAnnoDiasAdicionalesPersonal = 0;
566
+ this.sueldoIntegralDiasAdicionalesPersonal = 0;
567
+ this.aportePrestacionesPersonal = 0;
568
+ this.aporteAdicionalPersonal = 0;
569
+ this.codigoUsuario = '';
570
+ this.idDtFideicomisoPeriodo = 0;
571
+ if (e) {
572
+ this.idEmpresa = e.id_empresa;
573
+ this.idEmpresa = +e.id_enterprise;
574
+ this.idPersonal = parseInt(e.id_personal);
575
+ this.idFideicomiso = parseInt(e.id_fideicomiso);
576
+ this.anoCurPeriodo = parseInt(e.anocurper);
577
+ this.mesCurPeriodo = parseInt(e.mescurper);
578
+ this.sueldoIntegralPersonal = +e.sueintper;
579
+ this.bonoExtraPersonal = +e.bonextper;
580
+ this.bonoVacacionesPersonal = +e.bonvacper;
581
+ this.bonoFinAnnoPersonal = +e.bonfinper;
582
+ this.aportePersonal = +e.apoper;
583
+ this.diaFideicomiso = +e.diafid;
584
+ this.diaAdicional = +e.diaadi;
585
+ this.metodoPresatciones = e.metodopre;
586
+ this.metodoDiasAdicionales = e.metodoadi;
587
+ this.bonoVacacionalDiasAdicionalesPersonal = +e.bonvacadiper;
588
+ this.bonoFinAnnoDiasAdicionalesPersonal = +e.bonfinadiper;
589
+ this.sueldoIntegralDiasAdicionalesPersonal = +e.sueintadiper;
590
+ this.aportePrestacionesPersonal = +e.apopreper;
591
+ this.aporteAdicionalPersonal = +e.apoadiper;
592
+ this.codigoUsuario = e.codusu;
593
+ this.idDtFideicomisoPeriodo = parseInt(e.id_dt_fideiperiodo);
594
+ }
595
+ else {
596
+ this.isNew = true;
597
+ }
598
+ }
599
+ dataInterface() {
600
+ return {
601
+ id_empresa: this.idEmpresa,
602
+ id_enterprise: this.idEnterprice.toString(),
603
+ id_personal: this.idPersonal.toString(),
604
+ id_fideicomiso: this.idFideicomiso.toString(),
605
+ anocurper: this.anoCurPeriodo.toString(),
606
+ mescurper: this.mesCurPeriodo.toString(),
607
+ sueintper: this.sueldoIntegralPersonal,
608
+ bonextper: this.bonoExtraPersonal,
609
+ bonvacper: this.bonoVacacionesPersonal,
610
+ bonfinper: this.bonoFinAnnoPersonal,
611
+ apoper: this.aportePersonal,
612
+ diafid: this.diaFideicomiso,
613
+ diaadi: this.diaAdicional,
614
+ metodopre: this.metodoPresatciones,
615
+ metodoadi: this.metodoDiasAdicionales,
616
+ bonvacadiper: this.bonoVacacionalDiasAdicionalesPersonal,
617
+ bonfinadiper: this.bonoFinAnnoDiasAdicionalesPersonal,
618
+ sueintadiper: this.sueldoIntegralDiasAdicionalesPersonal,
619
+ apopreper: this.aportePrestacionesPersonal,
620
+ apoadiper: this.aporteAdicionalPersonal,
621
+ codusu: this.codigoUsuario,
622
+ id_dt_fideiperiodo: this.idDtFideicomisoPeriodo.toString(),
623
+ };
624
+ }
625
+ }
626
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTVBlcnNvbmFsLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2lnZXNwL3NyYy9saWIvY29yZS9tb2RlbHMvU05PL01QZXJzb25hbC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUUzRyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFbkQsTUFBTSxPQUFPLFNBQVUsU0FBUSxXQUFXO0lBOEh0QyxZQUFhLElBQVksSUFBSTtRQUN6QixLQUFLLEVBQUUsQ0FBQTtRQTlISixjQUFTLEdBQVEsQ0FBQyxDQUFDO1FBQ25CLGlCQUFZLEdBQVEsQ0FBQyxDQUFDO1FBQ3JCLGVBQVUsR0FBUyxDQUFDLENBQUM7UUFDdEIsbUJBQWMsR0FBUyxFQUFFLENBQUMsQ0FBQSxLQUFLO1FBQy9CLG1CQUFjLEdBQVUsRUFBRSxDQUFDLENBQUMsS0FBSztRQUNqQyxnQkFBVyxHQUFTLEVBQUUsQ0FBQyxDQUFBLEtBQUs7UUFDNUIsbUJBQWMsR0FBUyxFQUFFLENBQUMsQ0FBQSxLQUFLO1FBQy9CLHFCQUFnQixHQUFTLEVBQUUsQ0FBQztRQUM1Qiw0QkFBdUIsR0FBUyxZQUFZLENBQUM7UUFDN0MseUJBQW9CLEdBQVMsSUFBSSxDQUFDO1FBQ2xDLDJCQUFzQixHQUFTLEtBQUssQ0FBQztRQUNyQyw4QkFBeUIsR0FBUyxLQUFLLENBQUM7UUFDeEMsOEJBQXlCLEdBQVMsS0FBSyxDQUFDO1FBQ3hDLHlCQUFvQixHQUFRLEVBQUUsQ0FBQztRQUMvQix3QkFBbUIsR0FBUSxHQUFHLENBQUM7UUFDL0IsK0JBQTBCLEdBQVEsRUFBRSxDQUFDLENBQUMsSUFBSTtRQUMxQywwQkFBcUIsR0FBUSxFQUFFLENBQUMsQ0FBUSxJQUFJO1FBQzVDLDhC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Q0FBQyxjQUFjO1lBQzFCLE1BQU0sRUFBQyxJQUFJLENBQUMsY0FBYztZQUMxQixNQUFNLEVBQUMsSUFBSSxDQUFDLFlBQVk7WUFDeEIsU0FBUyxFQUFDLElBQUksQ0FBQyxrQkFBa0I7WUFDakMsU0FBUyxFQUFDLElBQUksQ0FBQyxxQkFBcUI7WUFDcEMsWUFBWSxFQUFDLElBQUksQ0FBQyxxQ0FBcUM7WUFDdkQsWUFBWSxFQUFDLElBQUksQ0FBQyxrQ0FBa0M7WUFDcEQsWUFBWSxFQUFDLElBQUksQ0FBQyxxQ0FBcUM7WUFDdkQsU0FBUyxFQUFDLElBQUksQ0FBQywwQkFBMEI7WUFDekMsU0FBUyxFQUFDLElBQUksQ0FBQyx1QkFBdUI7WUFDdEMsTUFBTSxFQUFDLElBQUksQ0FBQyxhQUFhO1lBQ3pCLGtCQUFrQixFQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLEVBQUU7U0FDNUQsQ0FBQTtJQUNMLENBQUM7Q0FHSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVzdGF0dXNFc3R1ZGlvLCBFc3RhdHVzUGVyc29uYWwsIEVzdHVkaW9zLCBTaXR1YWNpb25QZXJzb25hbCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvQ29uc3RhbnRlcyc7XHJcbmltcG9ydCB7IElDYW1iaW9Fc3RhdHVzUGVyc29uYWwsIElFc3R1ZGlvUmVhbGl6YWRvLCBJUGVyc29uYWwsIElQZXJzb25hbEN1ZW50YXNCYW5jYXJpYXMsIElQcmVzdGFjaW9uZXNBbnRpZ3VlZGFkIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9SZWN1cnNvc0h1bWFub3MnO1xyXG5pbXBvcnQgeyBNQmFzaWNNb2RlbCB9IGZyb20gJy4uL2Jhc2ljLW1vZGVsLm1vZGVsJztcclxuXHJcbmV4cG9ydCBjbGFzcyBNUGVyc29uYWwgZXh0ZW5kcyBNQmFzaWNNb2RlbCB7XHJcbiAgICBwdWJsaWMgaWRFbXByZXNhOm51bWJlcj0wOyBcclxuICAgIHB1YmxpYyBpZEVudGVycHJpc2U6bnVtYmVyPTA7XHJcbiAgICAgcHVibGljIGlkUGVyc29uYWw6IG51bWJlcj0wOyBcclxuICAgIHB1YmxpYyBjb2RpZ29QZXJzb25hbDogc3RyaW5nPScnOy8vMTAgXHJcbiAgICBwdWJsaWMgY2VkdWxhUGVyc29uYWw6IHN0cmluZz0gJyc7IC8vMTAgXHJcbiAgICBwdWJsaWMgcmlmUGVyc29uYWw6IHN0cmluZz0nJzsvLzE1IFxyXG4gICAgcHVibGljIG5vbWJyZVBlcnNvbmFsOiBzdHJpbmc9Jyc7Ly82MCBcclxuICAgIHB1YmxpYyBhcGVsbGlkb1BlcnNvbmFsOiBzdHJpbmc9Jyc7IFxyXG4gICAgcHVibGljIGZlY2hhTmFjaW1pZW50b1BlcnNvbmFsOiBzdHJpbmc9JzE5MDAtMDEtMDEnOyBcclxuICAgIHB1YmxpYyBjb2RpZ29QYWlzTmFjaW1pZW50bzpzdHJpbmcgPSctLSc7ICAgICBcclxuICAgIHB1YmxpYyBjb2RpZ29Fc3RhZG9OYWNpbWllbnRvOnN0cmluZyA9Jy0tLSc7IFxyXG4gICAgcHVibGljIGNvZGlnb011bmljaXBpb05hY2ltaWVudG86c3RyaW5nID0nLS0tJzsgXHJcbiAgICBwdWJsaWMgY29kaWdvUGFycm9xdWlhTmFjaW1pZW50bzpzdHJpbmcgPSctLS0nOyAgXHJcbiAgICBwdWJsaWMgbmFjaW9uYWxpZGFkUGVyc29uYWw6c3RyaW5nPScnOyAgIFxyXG4gICAgcHVibGljIGVzdGFkb0NpdmlsUGVyc29uYWw6c3RyaW5nPSdTJztcclxuICAgIHB1YmxpYyB0ZWxlZm9ub0hhYml0YWNpb25QZXJzb25hbDpzdHJpbmc9Jyc7IC8vMTVcclxuICAgIHB1YmxpYyB0ZWxlZm9ub01vdmlsUGVyc29iYWw6c3RyaW5nPScnOyAgICAgICAgLy8xNVxyXG4gICAgcHVibGljIGNvcnJlb0VsZWN0cm9uaWNvUGVyc29uYWw6c3RyaW5nPScnOyAvLzYwXHJcbiAgICBwdWJsaWMgZGlyZWNjaW9uUGVyc29uYWw6c3RyaW5nPScnOyAvLzI1NVxyXG4gICAgcHVibGljIGNvZGlnb1BhaXM6c3RyaW5nPSctLSc7IFxyXG4gICAgcHVibGljIGNvZGlnb0VzdGFkbzpzdHJpbmc9Jy0tJzsgXHJcbiAgICBwdWJsaWMgY29kaWdvTXVuaWNpcGlvOnN0cmluZz0nLS0tJzsgXHJcbiAgICBwdWJsaWMgY29kaWdvUGFycm9xdWlhOnN0cmluZz0nLS0tJztcclxuICAgIHB1YmxpYyBzZXhvUGVyc29uYWw6c3RyaW5nPScnOyBcclxuICAgIHB1YmxpYyBudW1lcm9IaWpvOm51bWJlcj0wOyBcclxuICAgIHB1YmxpYyBjb255dWd1ZVRyYWJhamE6bnVtYmVyPTA7IFxyXG4gICAgcHVibGljIGNlZHVsYUJlbmVmaWNpYXJpb1BlcnNvbmFsOnN0cmluZz0nJzsgXHJcbiAgICBwdWJsaWMgZXN0YXR1cmE6IG51bWJlcj0wOyBcclxuICAgIHB1YmxpYyBwZXNvOiBudW1iZXI9MDsgXHJcbiAgICBwdWJsaWMgdGFsbGFDYW1pc2E6c3RyaW5nPScnOyBcclxuICAgIHB1YmxpYyB0YWxsYVBhbnRhbG9uOnN0cmluZz0nJzsgXHJcbiAgICBwdWJsaWMgdGFsbGFaYXBhdG86c3RyaW5nPScnOyBcclxuICAgIHB1YmxpYyBpZFByb2Zlc2lvbjpudW1iZXI9MDsgXHJcbiAgICBwdWJsaWMgbml2ZWxBY2FkZW1pY29QZXJzb25hbDpzdHJpbmc9Jyc7IC8vMVxyXG4gICAgcHVibGljIGlkQ29tcG9uZW50ZTogbnVtYmVyPTA7IFxyXG4gICAgcHVibGljIGlkUmFuZ286IG51bWJlcj0wOyBcclxuICAgIHB1YmxpYyBmb3RvUGVyc29uYWw6c3RyaW5nPScnOyBcclxuICAgIHB1YmxpYyBvYnNlcnZhY2lvblBlcnNvbmFsOnN0cmluZz0nJzsgXHJcbiAgICBwdWJsaWMgZXN0YXR1c1BlcnNvbmFsOnN0cmluZz0nMSc7IFxyXG4gICAgcHVibGljIGlkQ2xhc2lmaWNhY2lvblBlcnNvbmFsOiBudW1iZXI9MDsgXHJcbiAgICBwdWJsaWMgY2VudHJvTWVkaWNvSVZWUzpzdHJpbmc9Jyc7IC8vMTU1XHJcbiAgICBwdWJsaWMgdHVybm9QZXJzb25hbDpzdHJpbmc9Jyc7IC8vMVxyXG4gICAgcHVibGljIGhvcmFyaW9QZXJzb25hbDpzdHJpbmc9Jyc7IC8vMTBcclxuICAgIHB1YmxpYyBlc3RhdHVzSENNUGVyc29uYWw6bnVtYmVyPTA7IFxyXG4gICAgcHVibGljIHRpcG9TYW5ncmVQZXJzb25hbDpzdHJpbmc9Jyc7Ly8xMFxyXG4gICAgcHVibGljIG51bWVyb0V4cGVkaWVudGVQZXJzb25hbDpzdHJpbmc9Jyc7IC8vMjBcclxuICAgIHB1YmxpYyBjYXJnb09yaWdpbmFsUGVyc29uYWw6c3RyaW5nPScnOyAvLzEwMFxyXG4gICAgcHVibGljIHRpcG9WaXZpZW5kYVBlcnNvbmFsOm51bWJlcj0wOyAvL29qb1xyXG4gICAgcHVibGljIHRlbmVuY2lhVml2aWVuZGFQZXJzb25hbDpzdHJpbmc9Jyc7IC8vNDAvb2pvXHJcbiAgICBwdWJsaWMgbW9udG9QYWdhZG9WaXZpZW5kYVBlcnNvbmFsOm51bWJlciA9MDsgXHJcbiAgICBwdWJsaWMgZXN0YXR1c0NhamFBaG9ycm86bnVtYmVyPTA7IFxyXG4gICAgcHVibGljIGN1ZW50YUNhamFBaG9ycm9QZXJzb25hbDpzdHJpbmc9Jyc7IC8vMjVcclxuICAgIHB1YmxpYyBwb3JjZW50YWplQ2FqYUFob3JybzpudW1iZXI9MDsgXHJcbiAgICBwdWJsaWMgY3VldGFMZXlQb2xpdGljYUhhYml0YWNpb25hUGVyc29uYWw6c3RyaW5nPScnOyAvLzI1XHJcbiAgICBwdWJsaWMgY3VlbnRhRmlkZWljb21pc286c3RyaW5nPScnOyAvLzI1XHJcbiAgICBwdWJsaWMgZXN0YXR1c1NpbmRpY2F0bzogbnVtYmVyPTA7XHJcbiAgICBwdWJsaWMgZmVjaGFJbmdyZXNvQWRtaW5pc3RyYWNpb25QdWJsaWNhOnN0cmluZz0nMTkwMC0wMS0wMSc7IFxyXG4gICAgcHVibGljIGFub1NlcnZpY2lvUHJldmlvRmlqb0FQOm51bWJlcj0wOyAvL2ludGVnZXJcclxuICAgIHB1YmxpYyBhbm9TZXJ2aWNpb1ByZXZpb0NvbnRyYXRhZG9BUDpudW1iZXI9MDsgLy9pbnRlZ2VyXHJcbiAgICBwdWJsaWMgYW5vUGVyc29uYWxPYnJlcm86bnVtYmVyPTA7IC8vaW50ZWdlclxyXG4gICAgcHVibGljIGFub1NlcnZpY2lvUHJldmlvUGVyc29uYWw6bnVtYmVyPTA7IC8vaW50ZWdlclxyXG4gICAgcHVibGljIG1lc2VzU2VydmljaW9QcmV2aW9QZXJzb25hbDpudW1iZXI9MDsgLy9pbnRlZ2VyXHJcbiAgICBwdWJsaWMgZGlhc1NlcnZpY2lvUHJldmlvUGVyc29uYWw6bnVtYmVyPTA7IC8vaW50ZWdlclxyXG4gICAgcHVibGljIGZlY2hhSW5nZXJvc1BlcnNvbmFsOnN0cmluZz0nMTkwMC0wMS0wMSc7IFxyXG4gICAgcHVibGljIGZlY2hhUmVpbmdyZXNvUGVyc29uYWw6c3RyaW5nPScxOTAwLTAxLTAxJzsgXHJcbiAgICBwdWJsaWMgZmVjaGFqdWJpbGFjaW9uUGVyc29uYWw6c3RyaW5nPScxOTAwLTAxLTAxJzsgXHJcbiAgICBwdWJsaWMgZmVjaGFFZ3Jlc29QZXJzb25hbDpzdHJpbmc9JzE5MDAtMDEtMDEnOyBcclxuICAgIHB1YmxpYyBjYXVzYUVncmVzb1BlcnNvbmFsOnN0cmluZz0nTic7IC8vMVxyXG4gICAgcHVibGljIG9ic2VydmFjaW9uRWdyZXNvUGVyc29uYWw6c3RyaW5nPScnOyAvLzI1NFxyXG4gICAgcHVibGljIHByZWF2aXNvOnN0cmluZz0nMCc7IC8vMVxyXG4gICAgcHVibGljIGZlY2hhTE9TRkFOOnN0cmluZz0nMTkwMC0wMS0wMSc7IFxyXG4gICAgcHVibGljIHNpdHVhY2lvbjpzdHJpbmc9J04nOyAvLzFcclxuICAgIHB1YmxpYyBmZWNoYVNpdHVhY2lvbjpzdHJpbmc9JzE5MDAtMDEtMDEnOyBcclxuICAgIHB1YmxpYyBpZENhdXNhbGVzOiBudW1iZXIgPTA7IFxyXG4gICAgcHVibGljIGZlY2hhUmVnaXN0cm9TaXN0ZW1hOnN0cmluZz0nMTkwMC0wMS0wMSc7IFxyXG4gICAgcHVibGljIGNvZGlkb1VzdWFyaW86c3RyaW5nPScnOyBcclxuICAgIHB1YmxpYyBvYnNlcnZhY2lvbjogc3RyaW5nID0nJztcclxuICAgIHB1YmxpYyBpZENlbnRyb01lZGljbzogbnVtYmVyPTA7IFxyXG4gICAgcHVibGljIGlkVGlwb1BlcnNvbmFsOm51bWJlcj0wOyAgICAgICBcclxuICAgIHB1YmxpYyBjb2RpZ29Db21wb25lbnRlOiBzdHJpbmcgPScnO1xyXG4gICAgcHVibGljIGRlbm9taW5hY2lvbkNvbXBvbmVudGU6IHN0cmluZyA9Jyc7XHJcbiAgICBwdWJsaWMgY29kaWdvUmFuZ286IHN0cmluZyA9Jyc7XHJcbiAgICBwdWJsaWMgZGVub21pbmFjaW9uUmFuZ286IHN0cmluZyA9Jyc7IFxyXG4gICAgcHVibGljIGNvZGlnb0NlbnRyb01lZGljbzogc3RyaW5nID0nJztcclxuICAgIHB1YmxpYyBkZW5vbWluYWNpb25DZW50cm9NZWRpY286IHN0cmluZyA9Jyc7XHJcbiAgICBwdWJsaWMgY29kaWdvVGlwb1BlcnNvbmFsOiBzdHJpbmcgPScnO1xyXG4gICAgcHVibGljIGRlbm9taW5hY2lvblRpcG9QZXJzb25hbDogc3RyaW5nID0nJztcclxuICAgIHB1YmxpYyBjb2RpZ29DYXVzYVJldGlybzpzdHJpbmc9Jyc7ICBcclxuICAgIHB1YmxpYyBkZW5vbWluYWNpb25DYXVzYVJldGlybzogc3RyaW5nPScnO1xyXG4gICAgcHVibGljIGlkUHJvdmVlZG9yQmVuZWZpY2lhcmlvOm51bWJlcj0wOyAgIFxyXG4gICAgcHVibGljIGRlbm9taW5hY2lvbkVzdGF0dXM6c3RyaW5nPScnO1xyXG4gICAgcHVibGljIGNvbmFwZGlzOmJvb2xlYW49ZmFsc2U7XHJcbiAgICBwdWJsaWMgaWRTaW5kaWNhdG86bnVtYmVyPTA7XHJcbiAgICBwdWJsaWMgY29kaWdvU2luZGljYXRvOnN0cmluZz0nMDAwMDAnO1xyXG4gICAgcHVibGljIGRlbm9taW5hY2lvblNpbmRpY2F0bzpzdHJpbmc9Jyc7ICBcclxuICAgIHB1YmxpYyBub21icmVQYWlzOnN0cmluZz0nJztcclxuICAgIHB1YmxpYyBub21icmVFc3RhZG86c3RyaW5nPScnO1xyXG4gICAgcHVibGljIG5vbWJyZU11bmljaXBpbzpzdHJpbmc9Jyc7XHJcbiAgICBwdWJsaWMgbm9tYnJlUGFycm9xdWlhOnN0cmluZz0nJztcclxuICAgIHB1YmxpYyBub21icmVQYWlzTmFjaW1pZW50bzpzdHJpbmc9Jyc7XHJcbiAgICBwdWJsaWMgbm9tYnJlRXN0YWRvTmFjaW1pZW50bzpzdHJpbmc9Jyc7XHJcbiAgICBwdWJsaWMgbm9tYnJlTXVuaWNpcGlvTmFjaW1pZW50bzpzdHJpbmc9Jyc7XHJcbiAgICBwdWJsaWMgbm9tYnJlUGFycm9xdWlhTmFjaW1pZW50bzpzdHJpbmc9Jyc7XHJcbiAgICBwdWJsaWMgY29kaWdvUHJvZmVzaW9uOiBzdHJpbmc9Jyc7XHJcbiAgICBwdWJsaWMgZGVub21pbmFjaW9uUHJvZmVzaW9uOiBzdHJpbmc9Jyc7XHJcbiAgICBwdWJsaWMgbW9udG9QZW5zaW9uOm51bWJlcj0wO1xyXG4gICAgcHVibGljIGlkUGxhbkhvcmFyaW86bnVtYmVyPTA7XHJcbiAgICBwdWJsaWMgaWRIb3JhOm51bWJlcj0wO1xyXG4gICAgcHVibGljIGRlc2NyaXBjaW9uUGxhbkhvcmFyaW86c3RyaW5nPScnO1xyXG4gICAgcHVibGljIGNvZGlnb1BsYW5Ib3JhcmlvOnN0cmluZz0nLS0nOyAgXHJcbiAgICBwdWJsaWMgaWRQdWVzdG9UcmFiYWpvOm51bWJlcj0wO1xyXG4gICAgcHVibGljIGRlc2NyaXBjaW9uUHVlc3RvVHJhYmFqbzpzdHJpbmc9Jyc7XHJcbiAgICBwdWJsaWMgY29kaWdvUHVlc3RvVHJhYmFqbzpzdHJpbmc9Jy0tJztcclxuICAgIHB1YmxpYyBkZXNjcmlwY2lvbkhvcmFyaW86c3RyaW5nPScnOyAgIFxyXG4gICAgcHVibGljIGZlY2hhRGVmdW5jaW9uOnN0cmluZz0nMTkwMC0wMS0wMSc7IDtcclxuICAgIHB1YmxpYyBmZWNoYUFjdGFEZWZ1bmNpb246c3RyaW5nPScxOTAwLTAxLTAxJzsgOyAgICAgXHJcbiAgICBwdWJsaWMgbnVtZXJvQWN0YURlZnVuY2lvbjpzdHJpbmc9Jyc7XHJcbiAgICBwdWJsaWMgZGVub21pbmFjaW9uU2l0dWFjaW9uOnN0cmluZz0nJzsgICBcclxuICAgIHB1YmxpYyBjb2RpZ29DbGFzaWZpY2Fkb3JQZXJzb25hbDpzdHJpbmc9Jyc7XHJcbiAgICBwdWJsaWMgZGVub21pbmFjaW9uQ2xhc2lmaWNhZG9yUGVyc29uYWw6c3RyaW5nPScnO1xyXG4gICAgcHVibGljIGlkUGVybWlzb1BlcnNvbmFsOm51bWJlcj0wO1xyXG4gICAgcHVibGljIGNvZGlnb1Blcm1pc29QZXJzb25hbDpzdHJpbmc9Jyc7XHJcbiAgICBwdWJsaWMgZGVub21pbmFjaW9uUGVybWlzb1BlcnNvbmFsOnN0cmluZz0nJztcclxuXHJcblxyXG4gICAgY29uc3RydWN0b3IgKHA6SVBlcnNvbmFsPW51bGwpe1xyXG4gICAgICAgIHN1cGVyKClcclxuICAgICAgICBpZiAocCl7XHJcbiAgICAgICAgICAgIHRoaXMuaWRFbnRlcnByaXNlPStwLmlkX2VudGVycHJpc2U7XHJcbiAgICAgICAgICAgIHRoaXMuaWRFbXByZXNhPXAuaWRfZW1wcmVzYTsgICAgICAgIFxyXG4gICAgICAgICAgICB0aGlzLmlkUGVyc29uYWw9ICtwLmlkX3BlcnNvbmFsO1xyXG4gICAgICAgICAgICB0aGlzLmNvZGlnb1BlcnNvbmFsPSBwLmNvZHBlcjtcclxuICAgICAgICAgICAgdGhpcy5jZWR1bGFQZXJzb25hbD0gcC5jZWRwZXI7XHJcbiAgICAgICAgICAgIHRoaXMucmlmUGVyc29uYWw9IHAucmlmcGVyO1xyXG4gICAgICAgICAgICB0aGlzLm5vbWJyZVBlcnNvbmFsPSBwLm5vbXBlcjsgXHJcbiAgICAgICAgICAgIHRoaXMuYXBlbGxpZG9QZXJzb25hbD0gcC5hcGVwZXI7XHJcbiAgICAgICAgICAgIHRoaXMuZmVjaGFOYWNpbWllbnRvUGVyc29uYWw9IHAuZmVjbmFjcGVyO1xyXG4gICAgICAgICAgICB0aGlzLmNvZGlnb1BhaXNOYWNpbWllbnRvPSBwLmNvZHBhaW5hYztcclxuICAgICAgICAgICAgdGhpcy5jb2RpZ29Fc3RhZG9OYWNpbWllbnRvPSBwLmNvZGVzdG5hYzsgIFxyXG4gICAgICAgICAgICB0aGlzLmNvZGlnb011bmljaXBpb05hY2ltaWVudG89IHAuY29kbXVubmFjO1xyXG4gICAgICAgICAgICB0aGlzLmNvZGlnb1BhcnJvcXVpYU5hY2ltaWVudG89IHAuY29kcGFybmFjO1xyXG4gICAgICAgICAgICB0aGlzLm5hY2lvbmFsaWRhZFBlcnNvbmFsPSBwLm5hY3BlcjtcclxuICAgICAgICAgICAgdGhpcy5lc3RhZG9DaXZpbFBlcnNvbmFsPSBwLmVzdGNpdnBlcjtcclxuICAgICAgICAgICAgdGhpcy50ZWxlZm9ub0hhYml0YWNpb25QZXJzb25hbD0gcC50ZWxoYWJwZXI7XHJcbiAgICAgICAgICAgIHRoaXMudGVsZWZvbm9Nb3ZpbFBlcnNvYmFsPSBwLnRlbG1vdnBlcjtcclxuICAgICAgICAgICAgdGhpcy5jb3JyZW9FbGVjdHJvbmljb1BlcnNvbmFsPSBwLmNvcmVsZXBlcjtcclxuICAgICAgICAgICAgdGhpcy5kaXJlY2Npb25QZXJzb25hbD0gcC5kaXJwZXI7XHJcbiAgICAgICAgICAgIHRoaXMuY29kaWdvUGFpcz0gcC5jb2RwYWk7XHJcbiAgICAgICAgICAgIHRoaXMuY29kaWdvRXN0YWRvPSBwLmNvZGVzdDtcclxuICAgICAgICAgICAgdGhpcy5jb2RpZ29NdW5pY2lwaW89IHAuY29kbXVuO1xyXG4gICAgICAgICAgICB0aGlzLmNvZGlnb1BhcnJvcXVpYT0gcC5jb2RwYXI7XHJcbiAgICAgICAgICAgIHRoaXMuc2V4b1BlcnNvbmFsPSBwLnNleHBlcjtcclxuICAgICAgICAgICAgdGhpcy5udW1lcm9IaWpvPStwLm51bWhpanBlcjsgXHJcbiAgICAgICAgICAgIHRoaXMuY29ueXVndWVUcmFiYWphPSArcC5jb250cmE7IFxyXG4gICAgICAgICAgICB0aGlzLmNlZHVsYUJlbmVmaWNpYXJpb1BlcnNvbmFsPSBwLmNlZGJlbnBlcjsgXHJcbiAgICAgICAgICAgIHRoaXMuZXN0YXR1cmE9K3AuZXN0YXR1cmE7XHJcbiAgICAgICAgICAgIHRoaXMucGVzbz0rcC5wZXNvO1xyXG4gICAgICAgICAgICB0aGlzLnRhbGxhQ2FtaXNhPSBwLnRhbGxjYW1cclxuICAgICAgICAgICAgdGhpcy50YWxsYVBhbnRhbG9uPXAudGFsbHBhbjsxIFxyXG4gICAgICAgICAgICB0aGlzLnRhbGxhWmFwYXRvPSBwLnRhbGx6YXA7XHJcbiAgICAgICAgICAgIHRoaXMuaWRQcm9mZXNpb249ICtwLmlkX3Byb2Zlc2lvbjsgXHJcbiAgICAgICAgICAgIHRoaXMubml2ZWxBY2FkZW1pY29QZXJzb25hbD0gcC5uaXZhY2FwZXI7XHJcbiAgICAgICAgICAgIHRoaXMuaWRDb21wb25lbnRlPStwLmlkX2NvbXBvbmVudGU7XHJcbiAgICAgICAgICAgIHRoaXMuaWRSYW5nbz0rcC5pZF9yYW5nbztcclxuICAgICAgICAgICAgdGhpcy5mb3RvUGVyc29uYWw9IHAuZm90cGVyO1xyXG4gICAgICAgICAgICB0aGlzLm9ic2VydmFjaW9uUGVyc29uYWw9IHAub2JzZWdycGVyO1xyXG4gICAgICAgICAgICB0aGlzLmVzdGF0dXNQZXJzb25hbD0gcC5lc3RwZXI7XHJcbiAgICAgICAgICAgIHRoaXMuaWRDbGFzaWZpY2FjaW9uUGVyc29uYWw9K3AuaWRfY2xhcGVyO1xyXG4gICAgICAgICAgICB0aGlzLnR1cm5vUGVyc29uYWw9IHAudHVycGVyO1xyXG4gICAgICAgICAgICB0aGlzLmhvcmFyaW9QZXJzb25hbD0gcC5ob3JwZXI7XHJcbiAgICAgICAgICAgIHRoaXMuZXN0YXR1c0hDTVBlcnNvbmFsPSArcC5oY21wZXI7IFxyXG4gICAgICAgICAgICB0aGlzLnRpcG9TYW5ncmVQZXJzb25hbD0gcC50aXBzYW5wZXI7XHJcbiAgICAgICAgICAgIHRoaXMubnVtZXJvRXhwZWRpZW50ZVBlcnNvbmFsPSBwLm51bWV4cHBlcjtcclxuICAgICAgICAgICAgdGhpcy5jYXJnb09yaWdpbmFsUGVyc29uYWw9IHAuY2Fyb3JpcGVyO1xyXG4gICAgICAgICAgICB0aGlzLnRpcG9WaXZpZW5kYVBlcnNvbmFsPSArcC50aXB2aXZwZXI7IFxyXG4gICAgICAgICAgICB0aGlzLnRlbmVuY2lhVml2aWVuZGFQZXJzb25hbD0gcC50ZW52aXZwZXI7XHJcbiAgICAgICAgICAgIHRoaXMubW9udG9QYWdhZG9WaXZpZW5kYVBlcnNvbmFsPSArcC5tb25wYWd2aXZwZXI7IFxyXG4gICAgICAgICAgICB0aGlzLmVzdGF0dXNDYWphQWhvcnJvPSArcC5lc3RjYWphaG87IFxyXG4gICAgICAgICAgICB0aGlzLmN1ZW50YUNhamFBaG9ycm9QZXJzb25hbD0gcC5jdWVjYWphaG9wZXI7XHJcbiAgICAgICAgICAgIHRoaXMucG9yY2VudGFqZUNhamFBaG9ycm89ICtwLnBvcmNhamFobzsgXHJcbiAgICAgICAgICAgIHRoaXMuY3VldGFMZXlQb2xpdGljYUhhYml0YWNpb25hUGVyc29uYWw9IHAuY3VlbHBocGVyO1xyXG4gICAgICAgICAgICB0aGlzLmN1ZW50YUZpZGVpY29taXNvPSBwLmN1ZWZpZHBlcjsxXHJcbiAgICAgICAgICAgIHRoaXMuZXN0YXR1c1NpbmRpY2F0bz0rcC5lc3RzaW5kaWNhdG87XHJcbiAgICAgICAgICAgIHRoaXMuZmVjaGFJbmdyZXNvQWRtaW5pc3RyYWNpb25QdWJsaWNhPSBwLmZlY2luZ2FkbXB1YnBlcjtcclxuICAgICAgICAgICAgdGhpcy5hbm9TZXJ2aWNpb1ByZXZpb0Zpam9BUD0gK3AuYW5vc2VydnByZWZpam87XHJcbiAgICAgICAgICAgIHRoaXMuYW5vU2VydmljaW9QcmV2aW9Db250cmF0YWRvQVA9ICtwLmFub3NlcnZwcmVjb250OyBcclxuICAgICAgICAgICAgdGhpcy5hbm9QZXJzb25hbE9icmVybz0gK3AuYW5vcGVyb2JyO1xyXG4gICAgICAgICAgICB0aGlzLmFub1NlcnZpY2lvUHJldmlvUGVyc29uYWw9ICtwLmFub3NlcnZwcmVwZXI7IFxyXG4gICAgICAgICAgICB0aGlzLm1lc2VzU2VydmljaW9QcmV2aW9QZXJzb25hbD0gK3AubWVzc2VydnByZXBlcjsgXHJcbiAgICAgICAgICAgIHRoaXMuZGlhc1NlcnZpY2lvUHJldmlvUGVyc29uYWw9ICtwLmRpYXNlcnZwcmVwZXI7IFxyXG4gICAgICAgICAgICB0aGlzLmZlY2hhSW5nZXJvc1BlcnNvbmFsPSBwLmZlY2luZ3BlcjsgXHJcbiAgICAgICAgICAgIHRoaXMuZmVjaGFSZWluZ3Jlc29QZXJzb25hbD0gcC5mZWNyZWluZ3BlcjsgXHJcbiAgICAgICAgICAgIHRoaXMuZmVjaGFqdWJpbGFjaW9uUGVyc29uYWw9IHAuZmVjanVicGVyOyBcclxuICAgICAgICAgICAgdGhpcy5mZWNoYUVncmVzb1BlcnNvbmFsPSBwLmZlY2VncnBlcjsgXHJcbiAgICAgICAgICAgIHRoaXMuY2F1c2FFZ3Jlc29QZXJzb25hbD0gcC5jYXVlZ3JwZXI7XHJcbiAgICAgICAgICAgIHRoaXMub2JzZXJ2YWNpb25FZ3Jlc29QZXJzb25hbD0gcC5vYnNlZ3JwZXI7XHJcbiAgICAgICAgICAgIHRoaXMucHJlYXZpc289IHAucHJlYXZpc287XHJcbiAgICAgICAgICAgIHRoaXMuZmVjaGFMT1NGQU49IHAuZmVjbG9zc2ZhbjtcclxuICAgICAgICAgICAgdGhpcy5zaXR1YWNpb249IHAuc2l0dWFjaW9uO1xyXG4gICAgICAgICAgICB0aGlzLmZlY2hhU2l0dWFjaW9uPSBwLmZlY3NpdHU7XHJcbiAgICAgICAgICAgIHRoaXMuaWRDYXVzYWxlcz0gK3AuaWRfY2F1c2FsZXM7XHJcbiAgICAgICAgICAgIHRoaXMuZmVjaGFSZWdpc3Ryb1Npc3RlbWE9IHAuZmVjcmVnc2lzO1xyXG4gICAgICAgICAgICB0aGlzLmNvZGlkb1VzdWFyaW89IHAuY29kdXN1O1xyXG4gICAgICAgICAgICB0aGlzLm9ic2VydmFjaW9uID1wLm9ic2VydmFjaW9uO1xyXG4gICAgICAgICAgICB0aGlzLmlkQ2VudHJvTWVkaWNvPSBwLmlkX2Nlbm1lZHNzLCBcclxuICAgICAgICAgICAgdGhpcy5pZFRpcG9QZXJzb25hbD0gcC5pZF90aXBvcGVyc29uYWwsXHJcbiAgICAgICAgICAgIHRoaXMuY29kaWdvQ29tcG9uZW50ZT1wLmNvZGNvbTtcclxuICAgICAgICAgICAgdGhpcy5kZW5vbWluYWNpb25Db21wb25lbnRlPXAuZGVuY29tO1xyXG4gICAgICAgICAgICB0aGlzLmNvZGlnb1JhbmdvPXAuY29kcmFuO1xyXG4gICAgICAgICAgICB0aGlzLmRlbm9taW5hY2lvblJhbmdvPXAuZGVucmFuOyBcclxuICAgICAgICAgICAgdGhpcy5jb2RpZ29DZW50cm9NZWRpY289cC5jb2RjZW5tZWRzcztcclxuICAgICAgICAgICAgdGhpcy5kZW5vbWluYWNpb25DZW50cm9NZWRpY289cC5kZW5jZW5tZWRzcztcclxuICAgICAgICAgICAgdGhpcy5jb2RpZ29UaXBvUGVyc29uYWw9cC5jb2R0aXBwZXI7XHJcbiAgICAgICAgICAgIHRoaXMuZGVub21pbmFjaW9uVGlwb1BlcnNvbmFsPXAuZGVudGlwcGVyO1xyXG4gICAgICAgICAgICB0aGlzLmNvZGlnb0NhdXNhUmV0aXJvPXAuZGVuY2F1O1xyXG4gICAgICAgICAgICB0aGlzLmRlbm9taW5hY2lvbkNhdXNhUmV0aXJvPXAuY29kY2F1O1xyXG4gICAgICAgICAgICB0aGlzLmlkUHJvdmVlZG9yQmVuZWZpY2lhcmlvPXBhcnNlSW50KHAuaWRfcHJvdmVlZG9yYmVuZWZpY2lhcmlvKTtcclxuICAgICAgICAgICAgdGhpcy5pZFNpbmRpY2F0bz1wYXJzZUludChwLmlkX3NpbmRpY2F0byk7XHJcbiAgICAgICAgICAgIHRoaXMuY29kaWdvU2luZGljYXRvPXAuY29kc2luO1xyXG4gICAgICAgICAgICB0aGlzLmRlbm9taW5hY2lvblNpbmRpY2F0bz1wLmRlbnNpbjtcclxuICAgICAgICAgICAgdGhpcy5kZW5vbWluYWNpb25Fc3RhdHVzPSAoRXN0YXR1c1BlcnNvbmFsLmZpbmQoZT0+ZS52YWx1ZT09cC5lc3RwZXIpLmRlbm9taW5hY2lvbikudG9VcHBlckNhc2UoKTsgICAgICAgICAgICBcclxuICAgICAgICAgICAgdGhpcy5jb25hcGRpcz1wLmNvbmFwZGlzPT0nMSc/IHRydWU6ZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuaWRTaW5kaWNhdG89IHBhcnNlSW50KHAuaWRfc2luZGljYXRvKTtcclxuICAgICAgICAgICAgdGhpcy5jb2RpZ29TaW5kaWNhdG89cC5jb2RzaW47XHJcbiAgICAgICAgICAgIHRoaXMuZGVub21pbmFjaW9uU2luZGljYXRvPXAuZGVuc2luO1xyXG4gICAgICAgICAgICB0aGlzLm5vbWJyZVBhaXM9cC5kZXNwYWk7XHJcbiAgICAgICAgICAgIHRoaXMubm9tYnJlRXN0YWRvPXAuZGVzZXN0O1xyXG4gICAgICAgICAgICB0aGlzLm5vbWJyZU11bmljaXBpbz1wLmRlc211bjtcclxuICAgICAgICAgICAgdGhpcy5ub21icmVQYXJyb3F1aWE9cC5kZXNwYXI7IFxyXG4gICAgICAgICAgICB0aGlzLm5vbWJyZUVzdGFkb05hY2ltaWVudG89cC5kZXNlc3RfbmFjO1xyXG4gICAgICAgICAgICB0aGlzLm5vbWJyZVBhaXNOYWNpbWllbnRvPXAuZGVzcGFpX25hYztcclxuICAgICAgICAgICAgdGhpcy5jb2RpZ29Qcm9mZXNpb249cC5jb2Rwcm87XHJcbiAgICAgICAgICAgIHRoaXMuZGVub21pbmFjaW9uUHJvZmVzaW9uPXAuZGVucHJvO1xyXG4gICAgICAgICAgICB0aGlzLm1vbnRvUGVuc2lvbj0rcC5tb25wZW47XHJcbiAgICAgICAgICAgIHRoaXMuaWRQbGFuSG9yYXJpbz0rcC5pZF9wbGFuaG9yOyAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB0aGlzLmlkSG9yYT0rcC5pZF9ob3JhO1xyXG4gICAgICAgICAgICB0aGlzLmZlY2hhRGVmdW5jaW9uPXAuZmVjZGVmO1xyXG4gICAgICAgICAgICB0aGlzLmZlY2hhQWN0YURlZnVuY2lvbj1wLmZlY2FjdGRlZjsgIFxyXG4gICAgICAgICAgICB0aGlzLm51bWVyb0FjdGFEZWZ1bmNpb249cC5udW1hY3RkZWY7XHJcbiAgICAgICAgICAgIGlmKHRoaXMuaWRQbGFuSG9yYXJpbz4wKXtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29kaWdvUGxhbkhvcmFyaW89cC5jb2RwbGFuaG9yO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5kZXNjcmlwY2lvblBsYW5Ib3JhcmlvPXAuZGVucGxhbmhvcjtcclxuICAgICAgICAgICAgfSBlbHNlIGlmKHRoaXMuaWRIb3JhPjApeyBcclxuICAgICAgICAgICAgICAgIHRoaXMuZGVzY3JpcGNpb25Ib3JhcmlvPXAuaG9yaW5pKyctJytwLmhvcmZpbjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmRlc2NyaXBjaW9uUHVlc3RvVHJhYmFqbz1wLmRlc3B1ZXRyYTtcclxuICAgICAgICAgICAgdGhpcy5jb2RpZ29QdWVzdG9UcmFiYWpvPXAuY29kcHVldHJhO1xyXG4gICAgICAgICAgICB0aGlzLmRlbm9taW5hY2lvblNpdHVhY2lvbj0gKFNpdHVhY2lvblBlcnNvbmFsLmZpbmQoZT0+ZS52YWx1ZT09cC5zaXR1YWNpb24pLmRlbm9taW5hY2lvbikudG9Mb2NhbGVVcHBlckNhc2UoKTtcclxuICAgICAgICAgICAgdGhpcy5jb2RpZ29DbGFzaWZpY2Fkb3JQZXJzb25hbD1wLmNvZGNsYXBlcjtcclxuICAgICAgICAgICAgdGhpcy5kZW5vbWluYWNpb25DbGFzaWZpY2Fkb3JQZXJzb25hbD1wLmRlbmNsYXBlcjsgICAgXHJcbiAgICAgICAgICAgIHRoaXMuaWRQZXJtaXNvUGVyc29uYWw9ICsgcC5pZF9wZXJwZXI7XHJcbiAgICAgICAgICAgIHRoaXMuZGVub21pbmFjaW9uUGVybWlzb1BlcnNvbmFsPXAuZGVucGVycGVyO1xyXG4gICAgICAgICAgICB0aGlzLmNvZGlnb1Blcm1pc29QZXJzb25hbD1wLmNvZHBlcnBlcjtcclxuIFxyXG5cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmlzTmV3PXRydWU7ICAgIFxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZGF0YUludGVyZmFjZSgpOklQZXJzb25hbCB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgaWRfZW1wcmVzYTp0aGlzLmlkRW1wcmVzYSxcclxuICAgICAgICAgICAgaWRfZW50ZXJwcmlzZTp0aGlzLmlkRW50ZXJwcmlzZS50b1N0cmluZygpLFxyXG4gICAgICAgICAgICBpZF9wZXJzb25hbDordGhpcy5pZFBlcnNvbmFsLFxyXG4gICAgICAgICAgICBjb2RwZXI6dGhpcy5jb2RpZ29QZXJzb25hbCxcclxuICAgICAgICAgICAgY2VkcGVyOnRoaXMuY2VkdWxhUGVyc29uYWwsXHJcbiAgICAgICAgICAgIHJpZnBlcjp0aGlzLnJpZlBlcnNvbmFsLFxyXG4gICAgICAgICAgICBub21wZXI6dGhpcy5ub21icmVQZXJzb25hbCxcclxuICAgICAgICAgICAgYXBlcGVyOnRoaXMuYXBlbGxpZG9QZXJzb25hbCxcclxuICAgICAgICAgICAgZmVjbmFjcGVyOnRoaXMuZmVjaGFOYWNpbWllbnRvUGVyc29uYWwsXHJcbiAgICAgICAgICAgIGNvZHBhaW5hYzp0aGlzLmNvZGlnb1BhaXNOYWNpbWllbnRvLFxyXG4gICAgICAgICAgICBjb2Rlc3RuYWM6dGhpcy5jb2RpZ29Fc3RhZG9OYWNpbWllbnRvLFxyXG4gICAgICAgICAgICBjb2RtdW5uYWM6dGhpcy5jb2RpZ29NdW5pY2lwaW9OYWNpbWllbnRvLFxyXG4gICAgICAgICAgICBjb2RwYXJuYWM6dGhpcy5jb2RpZ29QYXJyb3F1aWFOYWNpbWllbnRvLFxyXG4gICAgICAgICAgICBuYWNwZXI6dGhpcy5uYWNpb25hbGlkYWRQZXJzb25hbCxcclxuICAgICAgICAgICAgZXN0Y2l2cGVyOnRoaXMuZXN0YWRvQ2l2aWxQZXJzb25hbCxcclxuICAgICAgICAgICAgdGVsaGFicGVyOnRoaXMudGVsZWZvbm9IYWJpdGFjaW9uUGVyc29uYWwsXHJcbiAgICAgICAgICAgIHRlbG1vdnBlcjp0aGlzLnRlbGVmb25vTW92aWxQZXJzb2JhbCxcclxuICAgICAgICAgICAgY29yZWxlcGVyOnRoaXMuY29ycmVvRWxlY3Ryb25pY29QZXJzb25hbCxcclxuICAgICAgICAgICAgZGlycGVyOnRoaXMuZGlyZWNjaW9uUGVyc29uYWwsXHJcbiAgICAgICAgICAgIGNvZHBhaTp0aGlzLmNvZGlnb1BhaXMsXHJcbiAgICAgICAgICAgIGNvZGVzdDp0aGlzLmNvZGlnb0VzdGFkbyxcclxuICAgICAgICAgICAgY29kbXVuOnRoaXMuY29kaWdvTXVuaWNpcGlvLFxyXG4gICAgICAgICAgICBjb2RwYXI6dGhpcy5jb2RpZ29QYXJyb3F1aWEsXHJcbiAgICAgICAgICAgIHNleHBlcjp0aGlzLnNleG9QZXJzb25hbCxcclxuICAgICAgICAgICAgbnVtaGlqcGVyOit0aGlzLm51bWVyb0hpam8sXHJcbiAgICAgICAgICAgIGNvbnRyYTordGhpcy5jb255dWd1ZVRyYWJhamEsXHJcbiAgICAgICAgICAgIGNlZGJlbnBlcjp0aGlzLmNlZHVsYUJlbmVmaWNpYXJpb1BlcnNvbmFsLFxyXG4gICAgICAgICAgICBlc3RhdHVyYTp0aGlzLmVzdGF0dXJhLFxyXG4gICAgICAgICAgICBwZXNvOnRoaXMucGVzbyxcclxuICAgICAgICAgICAgdGFsbGNhbTp0aGlzLnRhbGxhQ2FtaXNhLFxyXG4gICAgICAgICAgICB0YWxscGFuOnRoaXMudGFsbGFQYW50YWxvbixcclxuICAgICAgICAgICAgdGFsbHphcDp0aGlzLnRhbGxhWmFwYXRvLFxyXG4gICAgICAgICAgICBpZF9wcm9mZXNpb246dGhpcy5pZFByb2Zlc2lvbixcclxuICAgICAgICAgICAgbml2YWNhcGVyOnRoaXMubml2ZWxBY2FkZW1pY29QZXJzb25hbCxcclxuICAgICAgICAgICAgaWRfY29tcG9uZW50ZTordGhpcy5pZENvbXBvbmVudGUsXHJcbiAgICAgICAgICAgIGlkX3JhbmdvOit0aGlzLmlkUmFuZ28sXHJcbiAgICAgICAgICAgIGZvdHBlcjp0aGlzLmZvdG9QZXJzb25hbCxcclxuICAgICAgICAgICAgb2JzcGVyOnRoaXMub2JzZXJ2YWNpb25QZXJzb25hbCxcclxuICAgICAgICAgICAgZXN0cGVyOnRoaXMuZXN0YXR1c1BlcnNvbmFsLCAgIFxyXG4gICAgICAgICAgICBpZF9jbGFwZXI6K3RoaXMuaWRDbGFzaWZpY2FjaW9uUGVyc29uYWwsICAgICAgICBcclxuICAgICAgICAgICAgdHVycGVyOnRoaXMudHVybm9QZXJzb25hbCxcclxuICAgICAgICAgICAgaG9ycGVyOnRoaXMuaG9yYXJpb1BlcnNvbmFsLFxyXG4gICAgICAgICAgICBoY21wZXI6dGhpcy5lc3RhdHVzSENNUGVyc29uYWwsXHJcbiAgICAgICAgICAgIHRpcHNhbnBlcjp0aGlzLnRpcG9TYW5ncmVQZXJzb25hbCxcclxuICAgICAgICAgICAgbnVtZXhwcGVyOnRoaXMubnVtZXJvRXhwZWRpZW50ZVBlcnNvbmFsLFxyXG4gICAgICAgICAgICBjYXJvcmlwZXI6dGhpcy5jYXJnb09yaWdpbmFsUGVyc29uYWwsXHJcbiAgICAgICAgICAgIHRpcHZpdnBlcjp0aGlzLnRpcG9WaXZpZW5kYVBlcnNvbmFsLFxyXG4gICAgICAgICAgICB0ZW52aXZwZXI6dGhpcy50ZW5lbmNpYVZpdmllbmRhUGVyc29uYWwsXHJcbiAgICAgICAgICAgIG1vbnBhZ3ZpdnBlcjp0aGlzLm1vbnRvUGFnYWRvVml2aWVuZGFQZXJzb25hbCxcclxuICAgICAgICAgICAgZXN0Y2FqYWhvOnRoaXMuZXN0YXR1c0NhamFBaG9ycm8sXHJcbiAgICAgICAgICAgIGN1ZWNhamFob3Blcjp0aGlzLmN1ZW50YUNhamFBaG9ycm9QZXJzb25hbCxcclxuICAgICAgICAgICAgcG9yY2FqYWhvOnRoaXMucG9yY2VudGFqZUNhamFBaG9ycm8sXHJcbiAgICAgICAgICAgIGN1ZWxwaHBlcjp0aGlzLmN1ZXRhTGV5UG9saXRpY2FIYWJpdGFjaW9uYVBlcnNvbmFsLFxyXG4gICAgICAgICAgICBjdWVmaWRwZXI6dGhpcy5jdWVudGFGaWRlaWNvbWlzbyxcclxuICAgICAgICAgICAgZXN0c2luZGljYXRvOnRoaXMuZXN0YXR1c1NpbmRpY2F0byxcclxuICAgICAgICAgICAgZmVjaW5nYWRtcHVicGVyOnRoaXMuZmVjaGFJbmdyZXNvQWRtaW5pc3RyYWNpb25QdWJsaWNhLFxyXG4gICAgICAgICAgICBhbm9zZXJ2cHJlZmlqbzp0aGlzLmFub1NlcnZpY2lvUHJldmlvRmlqb0FQLFxyXG4gICAgICAgICAgICBhbm9zZXJ2cHJlY29udDp0aGlzLmFub1NlcnZpY2lvUHJldmlvQ29udHJhdGFkb0FQLFxyXG4gICAgICAgICAgICBhbm9wZXJvYnI6dGhpcy5hbm9QZXJzb25hbE9icmVybyxcclxuICAgICAgICAgICAgYW5vc2VydnByZXBlcjp0aGlzLmFub1NlcnZpY2lvUHJldmlvUGVyc29uYWwsXHJcbiAgICAgICAgICAgIG1lc3NlcnZwcmVwZXI6dGhpcy5tZXNlc1NlcnZpY2lvUHJldmlvUGVyc29uYWwsXHJcbiAgICAgICAgICAgIGRpYXNlcnZwcmVwZXI6dGhpcy5kaWFzU2VydmljaW9QcmV2aW9QZXJzb25hbCxcclxuICAgICAgICAgICAgZmVjaW5ncGVyOnRoaXMuZmVjaGFJbmdlcm9zUGVyc29uYWwsXHJcbiAgICAgICAgICAgIGZlY3JlaW5ncGVyOnRoaXMuZmVjaGFSZWluZ3Jlc29QZXJzb25hbCxcclxuICAgICAgICAgICAgZmVjanVicGVyOnRoaXMuZmVjaGFqdWJpbGFjaW9uUGVyc29uYWwsXHJcbiAgICAgICAgICAgIGZlY2VncnBlcjp0aGlzLmZlY2hhRWdyZXNvUGVyc29uYWwsXHJcbiAgICAgICAgICAgIGNhdWVncnBlcjp0aGlzLmNhdXNhRWdyZXNvUGVyc29uYWwsXHJcbiAgICAgICAgICAgIG9ic2VncnBlcjp0aGlzLm9ic2VydmFjaW9uRWdyZXNvUGVyc29uYWwsXHJcbiAgICAgICAgICAgIHByZWF2aXNvOnRoaXMucHJlYXZpc28sXHJcbiAgICAgICAgICAgIGZlY2xvc3NmYW46dGhpcy5mZWNoYUxPU0ZBTixcclxuICAgICAgICAgICAgc2l0dWFjaW9uOnRoaXMuc2l0dWFjaW9uLFxyXG4gICAgICAgICAgICBmZWNzaXR1OnRoaXMuZmVjaGFTaXR1YWNpb24sXHJcbiAgICAgICAgICAgIGlkX2NhdXNhbGVzOit0aGlzLmlkQ2F1c2FsZXMsXHJcbiAgICAgICAgICAgIGZlY3JlZ3Npczp0aGlzLmZlY2hhUmVnaXN0cm9TaXN0ZW1hLFxyXG4gICAgICAgICAgICBjb2R1c3U6dGhpcy5jb2RpZG9Vc3VhcmlvLFxyXG4gICAgICAgICAgICBvYnNlcnZhY2lvbjp0aGlzLm9ic2VydmFjaW9uLCBcclxuICAgICAgICAgICAgaWRfY2VubWVkc3M6K3RoaXMuaWRDZW50cm9NZWRpY28sIFxyXG4gICAgICAgICAgICBpZF90aXBvcGVyc29uYWw6K3RoaXMuaWRUaXBvUGVyc29uYWwsICBcclxuICAgICAgICAgICAgY29kY29tOnRoaXMuY29kaWdvQ29tcG9uZW50ZSxcclxuICAgICAgICAgICAgZGVuY29tOnRoaXMuZGVub21pbmFjaW9uQ29tcG9uZW50ZSxcclxuICAgICAgICAgICAgY29kcmFuOnRoaXMuY29kaWdvUmFuZ28sXHJcbiAgICAgICAgICAgIGRlbnJhbjp0aGlzLmRlbm9taW5hY2lvblJhbmdvLFxyXG4gICAgICAgICAgICBjb2RjZW5tZWRzczp0aGlzLmNvZGlnb0NlbnRyb01lZGljbyxcclxuICAgICAgICAgICAgZGVuY2VubWVkc3M6dGhpcy5kZW5vbWluYWNpb25DZW50cm9NZWRpY28sXHJcbiAgICAgICAgICAgIGNvZHRpcHBlcjp0aGlzLmNvZGlnb1RpcG9QZXJzb25hbCxcclxuICAgICAgICAgICAgZGVudGlwcGVyOnRoaXMuZGVub21pbmFjaW9uVGlwb1BlcnNvbmFsLFxyXG4gICAgICAgICAgICBjb2RjYXU6dGhpcy5jb2RpZ29DYXVzYVJldGlybyxcclxuICAgICAgICAgICAgZGVuY2F1OnRoaXMuZGVub21pbmFjaW9uQ2F1c2FSZXRpcm8sICAgXHJcbiAgICAgICAgICAgIGlkX3Byb3ZlZWRvcmJlbmVmaWNpYXJpbzp0aGlzLmlkUHJvdmVlZG9yQmVuZWZpY2lhcmlvLnRvU3RyaW5nKCksICAgICBcclxuICAgICAgICAgICAgaWRfc2luZGljYXRvOnRoaXMuaWRTaW5kaWNhdG8udG9TdHJpbmcoKSxcclxuICAgICAgICAgICAgY29kc2luOnRoaXMuY29kaWdvU2luZGljYXRvLFxyXG4gICAgICAgICAgICBkZW5zaW46dGhpcy5kZW5vbWluYWNpb25TaW5kaWNhdG8sIFxyXG4gICAgICAgICAgICBjb25hcGRpczp0aGlzLmNvbmFwZGlzPyAnMSc6JzAnLFxyXG4gICAgICAgICAgICBkZXNwYWk6dGhpcy5ub21icmVQYWlzLFxyXG4gICAgICAgICAgICBkZXNlc3Q6dGhpcy5ub21icmVFc3RhZG8sXHJcbiAgICAgICAgICAgIGRlc211bjp0aGlzLm5vbWJyZU11bmljaXBpbyxcclxuICAgICAgICAgICAgZGVzcGFyOnRoaXMubm9tYnJlUGFycm9xdWlhLCAgXHJcbiAgICAgICAgICAgIGRlc2VzdF9uYWM6dGhpcy5ub21icmVFc3RhZG9OYWNpbWllbnRvLFxyXG4gICAgICAgICAgICBkZXNwYWlfbmFjOnRoaXMubm9tYnJlUGFpc05hY2ltaWVudG8sXHJcbiAgICAgICAgICAgIGlkX3BsYW5ob3I6dGhpcy5pZFBsYW5Ib3JhcmlvLnRvU3RyaW5nKCksXHJcbiAgICAgICAgICAgIGlkX2hvcmE6dGhpcy5pZEhvcmEudG9TdHJpbmcoKSxcclxuICAgICAgICAgICAgaWRfcHVldHJhOnRoaXMuaWRQdWVzdG9UcmFiYWpvLnRvU3RyaW5nKCksXHJcbiAgICAgICAgICAgIGZlY2RlZjp0aGlzLmZlY2hhRGVmdW5jaW9uLFxyXG4gICAgICAgICAgICBmZWNhY3RkZWY6dGhpcy5mZWNoYUFjdGFEZWZ1bmNpb24sXHJcbiAgICAgICAgICAgIG51bWFjdGRlZjp0aGlzLm51bWVyb0FjdGFEZWZ1bmNpb24sXHJcbiAgICAgICAgICAgIGlkX3BlcnBlcjogdGhpcy5pZFBlcm1pc29QZXJzb25hbC50b1N0cmluZygpLFxyXG4gICAgICAgICAgICBkZW5wZXJwZXI6IHRoaXMuZGVub21pbmFjaW9uUGVybWlzb1BlcnNvbmFsLFxyXG4gICAgICAgICAgICBjb2RwZXJwZXI6IHRoaXMuY29kaWdvUGVybWlzb1BlcnNvbmFsLFxyXG4gICAgICAgIFxyXG4gICAgICAgIH0gXHJcbiAgICB9ICAgXHJcblxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgTUNhbWJpb0VzdGF0dXNQZXJzb25hbCBleHRlbmRzIE1CYXNpY01vZGVse1xyXG4gICAgcHVibGljIGlkRW1wcmVzYTpudW1iZXI9MDsgXHJcbiAgICBwdWJsaWMgaWRFbnRlcnByaXNlOm51bWJlcj0wO1xyXG4gICAgcHVibGljIGlkUGVyc29uYWw6IG51bWJlcj0wO1xyXG4gICAgcHVibGljIGNvZGlnb1BlcnNvbmFsOiBzdHJpbmc9Jyc7XHJcbiAgICBwdWJsaWMgZXN0YXR1c0FjdHVhbDogc3RyaW5nPScyJztcclxuICAgIHB1YmxpYyBlc3RhdHVzTnVldm86IHN0cmluZz0nMic7XHJcbiAgICBwdWJsaWMgZmVjaGFFZ3Jlc286IHN0cmluZz0nJztcclxuICAgIHB1YmxpYyBjYXVzYUVncmVzbzogc3RyaW5nPScnO1xyXG4gICAgcHVibGljIHByZWF2aXNvOiBzdHJpbmc9JzEnO1xyXG4gICAgcHVibGljIGlkQ2F1c2FsZXM6IG51bWJlcj0wO1xyXG4gICAgcHVibGljIG9ic2VydmFjaW9uOiBzdHJpbmc9Jyc7ICBcclxuICAgIHB1YmxpYyBmZWNoYVJlaW5ncmVzbzpzdHJpbmc9JzE5MDAtMDEtMDEnO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yIChlOklDYW1iaW9Fc3RhdHVzUGVyc29uYWw9bnVsbCkgeyAgXHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBpZihlKXtcclxuICAgICAgICAgICAgdGhpcy5pZEVudGVycHJpc2U9K2UuaWRfZW50ZXJwcmlzZTtcclxuICAgICAgICAgICAgdGhpcy5pZEVtcHJlc2E9ZS5pZF9lbXByZXNhOyBcclxuICAgICAgICAgICAgdGhpcy5pZFBlcnNvbmFsID0gZS5pZFBlcnNvbmFsO1xyXG4gICAgICAgICAgICB0aGlzLmNvZGlnb1BlcnNvbmFsID0gZS5jb2RpZ29QZXJzb25hbDtcclxuICAgICAgICAgICAgdGhpcy5lc3RhdHVzQWN0dWFsID0gZS5lc3RhdHVzQWN0dWFsO1xyXG4gICAgICAgICAgICB0aGlzLmVzdGF0dXNOdWV2byA9IGUuZXN0YXR1c051ZXZvO1xyXG4gICAgICAgICAgICB0aGlzLmZlY2hhRWdyZXNvID0gZS5mZWNoYUVncmVzbztcclxuICAgICAgICAgICAgdGhpcy5jYXVzYUVncmVzbyA9IGUuY2F1c2FFZ3Jlc287XHJcbiAgICAgICAgICAgIHRoaXMucHJlYXZpc28gPSBlLnByZWF2aXNvO1xyXG4gICAgICAgICAgICB0aGlzLmlkQ2F1c2FsZXM9IGUuaWRDYXVzYWxlcztcclxuICAgICAgICAgICAgdGhpcy5vYnNlcnZhY2lvbiA9IGUub2JzZXJ2YWNpb247ICBcclxuICAgICAgICAgICAgdGhpcy5mZWNoYVJlaW5ncmVzbz0gZS5mZWNoYVJlaW5ncmVzbztcclxuIFxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHB1YmxpYyBkYXRhSW50ZXJmYWNlKCk6SUNhbWJpb0VzdGF0dXNQZXJzb25hbHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBpZF9lbXByZXNhOnRoaXMuaWRFbXByZXNhLFxyXG4gICAgICAgICAgICBpZF9lbnRlcnByaXNlOnRoaXMuaWRFbnRlcnByaXNlLnRvU3RyaW5nKCksXHJcbiAgICAgICAgICAgIGlkUGVyc29uYWw6IHRoaXMuaWRQZXJzb25hbCxcclxuICAgICAgICAgICAgY29kaWdvUGVyc29uYWw6IHRoaXMuY29kaWdvUGVyc29uYWwsXHJcbiAgICAgICAgICAgIGVzdGF0dXNBY3R1YWw6IHRoaXMuZXN0YXR1c0FjdHVhbCxcclxuICAgICAgICAgICAgZXN0YXR1c051ZXZvOiB0aGlzLmVzdGF0dXNOdWV2byxcclxuICAgICAgICAgICAgZmVjaGFFZ3Jlc286IHRoaXMuZmVjaGFFZ3Jlc28sXHJcbiAgICAgICAgICAgIGNhdXNhRWdyZXNvOiB0aGlzLmNhdXNhRWdyZXNvLFxyXG4gICAgICAgICAgICBwcmVhdmlzbzogdGhpcy5wcmVhdmlzbyxcclxuICAgICAgICAgICAgaWRDYXVzYWxlczogdGhpcy5pZENhdXNhbGVzLFxyXG4gICAgICAgICAgICBvYnNlcnZhY2lvbjogdGhpcy5vYnNlcnZhY2lvbiwgXHJcbiAgICAgICAgICAgIGZlY2hhUmVpbmdyZXNvOnRoaXMuZmVjaGFSZWluZ3Jlc28sXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBNUGVyc29uYWxDdWVudGFCYW5jbyBleHRlbmRzIE1CYXNpY01vZGVsIHtcclxuICAgIHB1YmxpYyBpZEVtcHJlc2E6bnVtYmVyPTA7IFxyXG4gICAgcHVibGljIGlkRW50ZXJwcmlzZTpudW1iZXI9MDtcclxuICAgIHB1YmxpYyBpZFBlcnNvbmFsOm51bWJlcj0wO1xyXG4gICAgcHVibGljIGlkQ3VlbnRhQmFuY29QZXJzb25hbDpudW1iZXI9LTE7XHJcbiAgICBwdWJsaWMgY29kaWdvQ3VlbnRhQmFuY29QZXJzb25hbDpzdHJpbmc9Jyc7XHJcbiAgICBwdWJsaWMgZGVub21pbmFjaW9uQ3VlbnRhQmFuY29QZXJzb25hbDpzdHJpbmc9Jyc7XHJcbiAgICBwdWJsaWMgaWRCYW5jbzpudW1iZXI9MDsgICBcclxuICAgIHB1YmxpYyBpZFRpcG9DdWVudGFCYW5jbzpudW1iZXI9MDtcclxuICAgIHB1YmxpYyBjdWVudGFCYW5jb1BlcnNvbmFsOnN0cmluZz0nJztcclxuICAgIHB1YmxpYyBlc3RhdHVzQ3VlbnRhQmFuY286Ym9vbGVhbj10cnVlO1xyXG4gICAgcHVibGljIHRpcG9DdWVudGFQcmluY2lwYWw6Ym9vbGVhbj1mYWxzZTtcclxuICAgIHB1YmxpYyBjb2RpZ29CYW5jbzpzdHJpbmc9Jyc7XHJcbiAgICBwdWJsaWMgY3VlbnRhUmVkdWNpZGE6c3RyaW5nPScnO1xyXG4gICAgcHVibGljIG5vbWJyZUJhbmNvOnN0cmluZz0nJztcclxuICAgIHB1YmxpYyBub21icmVUaXBvQ3VlbnRhQmFuY286c3RyaW5nPScnO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGU/OklQZXJzb25hbEN1ZW50YXNCYW5jYXJpYXMpe1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgaWYgKGUpe1xyXG4gICAgICAgICAgICB0aGlzLmlkRW50ZXJwcmlzZT0rZS5pZF9lbnRlcnByaXNlO1xyXG4gICAgICAgICAgICB0aGlzLmlkRW1wcmVzYT1lLmlkX2VtcHJlc2E7ICAgICAgICBcclxuICAgICAgICAgICAgdGhpcy5pZFBlcnNvbmFsPXBhcnNlSW50KGUuaWRfcGVyc29uYWwpO1xyXG4gICAgICAgICAgICB0aGlzLmlkQ3VlbnRhQmFuY29QZXJzb25hbD1wYXJzZUludChlLmlkX2N0YWJhbnBlcik7XHJcbiAgICAgICAgICAgIHRoaXMuY29kaWdvQ3VlbnRhQmFuY29QZXJzb25hbD1lLmNvZGN0YWJhbnBlcjtcclxuICAgICAgICAgICAgdGhpcy5kZW5vbWluYWNpb25DdWVudGFCYW5jb1BlcnNvbmFsPWUuZGVuY3RhYmFucGVyO1xyXG4gICAgICAgICAgICB0aGlzLmlkQmFuY289cGFyc2VJbnQoZS5pZF9iYW5jbyk7XHJcbiAgICAgICAgICAgIHRoaXMuaWRUaXBvQ3VlbnRhQmFuY289cGFyc2VJbnQoZS5pZF90aXBvY3RhKTtcclxuICAgICAgICAgICAgdGhpcy5jdWVudGFCYW5jb1BlcnNvbmFsPWUuY3RhYmFucGVyO1xyXG4gICAgICAgICAgICB0aGlzLmVzdGF0dXNDdWVudGFCYW5jbz1lLmVzdGN0YWJjbz09JzEnPyB0cnVlOmZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLnRpcG9DdWVudGFQcmluY2lwYWw9ZS50aXBjdGFwcmk9PScxJz8gdHJ1ZTpmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jb2RpZ29CYW5jbz10aGlzLmN1ZW50YUJhbmNvUGVyc29uYWwuc3Vic3RyaW5nKDAsNCk7XHJcbiAgICAgICAgICAgIHRoaXMuY3VlbnRhUmVkdWNpZGE9dGhpcy5jdWVudGFCYW5jb1BlcnNvbmFsLnNsaWNlKDQpXHJcbiAgICAgICAgICAgIHRoaXMubm9tYnJlQmFuY289ZS5ub21iYW47XHJcbiAgICAgICAgICAgIHRoaXMubm9tYnJlVGlwb0N1ZW50YUJhbmNvPWUubm9tdGlwY3RhO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuaXNOZXc9dHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZGF0YUludGVyZmFjZSgpOklQZXJzb25hbEN1ZW50YXNCYW5jYXJpYXN7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgaWRfZW50ZXJwcmlzZTp0aGlzLmlkRW50ZXJwcmlzZS50b1N0cmluZygpLFxyXG4gICAgICAgICAgICBpZF9lbXByZXNhOnRoaXMuaWRFbXByZXNhLCBcclxuICAgICAgICAgICAgaWRfcGVyc29uYWw6dGhpcy5pZFBlcnNvbmFsLnRvU3RyaW5nKCksIFxyXG4gICAgICAgICAgICBpZF9jdGFiYW5wZXI6dGhpcy5pZEN1ZW50YUJhbmNvUGVyc29uYWwudG9TdHJpbmcoKSwgXHJcbiAgICAgICAgICAgIGNvZGN0YWJhbnBlcjp0aGlzLmNvZGlnb0N1ZW50YUJhbmNvUGVyc29uYWwsIFxyXG4gICAgICAgICAgICBkZW5jdGFiYW5wZXI6dGhpcy5kZW5vbWluYWNpb25DdWVudGFCYW5jb1BlcnNvbmFsLCBcclxuICAgICAgICAgICAgaWRfYmFuY286dGhpcy5pZEJhbmNvLnRvU3RyaW5nKCksIFxyXG4gICAgICAgICAgICBpZF90aXBvY3RhOnRoaXMuaWRUaXBvQ3VlbnRhQmFuY28udG9TdHJpbmcoKSwgXHJcbiAgICAgICAgICAgIGN0YWJhbnBlcjp0aGlzLmN1ZW50YUJhbmNvUGVyc29uYWwsIFxyXG4gICAgICAgICAgICBlc3RjdGFiY286dGhpcy5lc3RhdHVzQ3VlbnRhQmFuY28/ICcxJzonMCcsIFxyXG4gICAgICAgICAgICB0aXBjdGFwcmk6dGhpcy50aXBvQ3VlbnRhUHJpbmNpcGFsPyAnMSc6JzAnLFxyXG4gICAgICAgICAgICBcclxuICAgICAgICB9XHJcblxyXG4gICAgfVxyXG5cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIE1Fc3R1ZGlvc1JlYWxpemFkb3Mge1xyXG4gICAgcHVibGljIGlkRW1wcmVzYTpudW1iZXI9MDtcclxuICAgIHB1YmxpYyBpZEVudGVycHJpc2U6bnVtYmVyPTA7XHJcbiAgICBwdWJsaWMgaWRQZXJzb25hbDpudW1iZXI9MDtcclxuICAgIHB1YmxpYyBpZEVzdHVkaW86bnVtYmVyPTA7XHJcbiAgICBwdWJsaWMgY29kaWdvRXN0dWRpb1JlYWxpemFkbzpzdHJpbmc9Jyc7XHJcbiAgICBwdWJsaWMgdGlwb0VzdHVkaW9SZWFsaXphZG86c3RyaW5nPScxJztcclxuICAgIHB1YmxpYyBkZW5vbWluYWNpb25Fc3R1ZGlvUmVhbGl6YWRvOnN0cmluZz0nMSc7XHJcbiAgICBwdWJsaWMgaW5zdGl0dXRvRXN0dWRpb1JlYWxpemFkbzpzdHJpbmc9Jyc7XHJcbiAgICBwdWJsaWMgZGVzY3JpcGNpb25Fc3R1ZGlvUmVhbGl6YWRvOnN0cmluZz0nJzsgXHJcbiAgICBwdWJsaWMgdGl0dWxvRXN0dWRpb1JlYWxpemFkbzpzdHJpbmc9Jyc7IFxyXG4gICAgcHVibGljIGNhbGlmaWNhY2lvbkVzdHVkaW9SZWFsaXphZG86bnVtYmVyPTA7XHJcbiAgICBwdWJsaWMgZXNjYWxhVmFsb3JlczpzdHJpbmc9Jyc7IFxyXG4gICAgcHVibGljIGZlY2hhSW5pY2lvRXN0dWRpb1JlYWxpemFkbzpzdHJpbmc9JzE5MDAtMDEtMDEnOyBcclxuICAgIHB1YmxpYyBmZWNoYUZpbkVzdHVkaW9SZWFsaXphZG86c3RyaW5nPScxOTAwLTAxLTAxJzsgXHJcbiAgICBwdWJsaWMgZmVjaGFHcmFkb0VzdHVkaW9SZWFsaXphZG86c3RyaW5nPScxOTAwLTAxLTAxJzsgXHJcbiAgICBwdWJsaWMgYXByb2JhY2lvbkVzdHVkaW9SZWFsaXphZG86c3RyaW5nPScxJzsgXHJcbiAgICBwdWJsaWMgZGVub21pbmFjaW9uQXByb2JhY2lvbkVzdHVkaW9SZWFsaXphZG86c3RyaW5nOyBcclxuICAgIHB1YmxpYyBhbm9BcHJvYmFjaW9uRXN0dWRpb1JlYWxpemFkbzpudW1iZXI9MDtcclxuICAgIHB1YmxpYyBob3Jhc0VzdHVkaW9SZWFsaXphZG86bnVtYmVyPTA7XHJcbiAgICBwdWJsaWMgVGlwb0VzdHVkaW89RXN0dWRpb3NcclxuICAgIHB1YmxpYyBBcHJvYmFkbz1Fc3RhdHVzRXN0dWRpb1xyXG5cclxuICAgIGNvbnN0cnVjdG9yIChlOklFc3R1ZGlvUmVhbGl6YWRvPSBudWxsKXtcclxuICAgICAgICBpZihlKXtcclxuICAgICAgICAgICAgdGhpcy5pZEVtcHJlc2E9IGUuaWRfZW1wcmVzYTtcclxuICAgICAgICAgICAgdGhpcy5pZEVudGVycHJpc2U9K2UuaWRfZW50ZXJwcmlzZTtcclxuICAgICAgICAgICAgdGhpcy5pZFBlcnNvbmFsPSBwYXJzZUludChlLmlkX3BlcnNvbmFsKTtcclxuICAgICAgICAgICAgdGhpcy5pZEVzdHVkaW89IHBhcnNlSW50KGUuaWRfZXN0dWRpbyk7XHJcbiAgICAgICAgICAgIHRoaXMuY29kaWdvRXN0dWRpb1JlYWxpemFkbz0gZS5jb2Rlc3RyZWE7XHJcbiAgICAgICAgICAgIHRoaXMudGlwb0VzdHVkaW9SZWFsaXphZG89IGUudGlwZXN0cmVhO1xyXG4gICAgICAgICAgICB0aGlzLmluc3RpdHV0b0VzdHVkaW9SZWFsaXphZG89IGUuaW5zZXN0cmVhO1xyXG4gICAgICAgICAgICB0aGlzLmRlc2NyaXBjaW9uRXN0dWRpb1JlYWxpemFkbz0gZS5kZXNlc3RyZWE7IFxyXG4gICAgICAgICAgICB0aGlzLnRpdHVsb0VzdHVkaW9SZWFsaXphZG89IGUudGl0ZXN0cmVhOyBcclxuICAgICAgICAgICAgdGhpcy5jYWxpZmljYWNpb25Fc3R1ZGlvUmVhbGl6YWRvPSArZS5jYWxlc3RyZWE7XHJcbiAgICAgICAgICAgIHRoaXMuZXNjYWxhVmFsb3Jlcz0gZS5lc2N2YWw7IFxyXG4gICAgICAgICAgICB0aGlzLmZlY2hhSW5pY2lvRXN0dWRpb1JlYWxpemFkbz0gZS5mZWNpbmlyZWFlc3Q7XHJcbiAgICAgICAgICAgIHRoaXMuZmVjaGFGaW5Fc3R1ZGlvUmVhbGl6YWRvPSBlLmZlY2ZpbmVzdHJlYTtcclxuICAgICAgICAgICAgdGhpcy5mZWNoYUdyYWRvRXN0dWRpb1JlYWxpemFkbz0gZS5mZWNncmFlc3RyZWE7XHJcbiAgICAgICAgICAgIHRoaXMuYXByb2JhY2lvbkVzdHVkaW9SZWFsaXphZG89IGUuYXByZXN0cmVhOyBcclxuICAgICAgICAgICAgdGhpcy5hbm9BcHJvYmFjaW9uRXN0dWRpb1JlYWxpemFkbz0gcGFyc2VJbnQoZS5hbm9hcHJlc3RyZWEpO1xyXG4gICAgICAgICAgICB0aGlzLmhvcmFzRXN0dWRpb1JlYWxpemFkbz0gcGFyc2VJbnQoZS5ob3Jlc3RyZWEpOyAgXHJcbiAgICAgICAgICAgIHRoaXMuZGVub21pbmFjaW9uRXN0dWRpb1JlYWxpemFkbz10aGlzLlRpcG9Fc3R1ZGlvLmZpbmQoZT0+ZS52YWx1ZT09dGhpcy50aXBvRXN0dWRpb1JlYWxpemFkbykuZGVub21pbmFjaW9uICAgICAgXHJcbiAgICAgICAgICAgIHRoaXMuZGVub21pbmFjaW9uQXByb2JhY2lvbkVzdHVkaW9SZWFsaXphZG89dGhpcy5BcHJvYmFkby5maW5kKGU9PmUudmFsdWU9PXRoaXMuYXByb2JhY2lvbkVzdHVkaW9SZWFsaXphZG8pLmRlbm9taW5hY2lvbiAgICAgIFxyXG4gICAgICAgIH0gICAgICAgIFxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBkYXRhSW50ZXJmYWNlKCk6SUVzdHVkaW9SZWFsaXphZG97XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgaWRfZW1wcmVzYTp0aGlzLmlkRW1wcmVzYSwgXHJcbiAgICAgICAgICAgIGlkX2VudGVycHJpc2U6dGhpcy5pZEVudGVycHJpc2UudG9TdHJpbmcoKSxcclxuICAgICAgICAgICAgaWRfcGVyc29uYWw6dGhpcy5pZFBlcnNvbmFsLnRvU3RyaW5nKCksXHJcbiAgICAgICAgICAgIGlkX2VzdHVkaW86dGhpcy5pZEVzdHVkaW8udG9TdHJpbmcoKSxcclxuICAgICAgICAgICAgY29kZXN0cmVhOnRoaXMuY29kaWdvRXN0dWRpb1JlYWxpemFkbyxcclxuICAgICAgICAgICAgdGlwZXN0cmVhOnRoaXMudGlwb0VzdHVkaW9SZWFsaXphZG8sXHJcbiAgICAgICAgICAgIGluc2VzdHJlYTp0aGlzLmluc3RpdHV0b0VzdHVkaW9SZWFsaXphZG8sXHJcbiAgICAgICAgICAgIGRlc2VzdHJlYTp0aGlzLmRlc2NyaXBjaW9uRXN0dWRpb1JlYWxpemFkbywgXHJcbiAgICAgICAgICAgIHRpdGVzdHJlYTp0aGlzLnRpdHVsb0VzdHVkaW9SZWFsaXphZG8sIFxyXG4gICAgICAgICAgICBjYWxlc3RyZWE6dGhpcy5jYWxpZmljYWNpb25Fc3R1ZGlvUmVhbGl6YWRvLCBcclxuICAgICAgICAgICAgZXNjdmFsOnRoaXMuZXNjYWxhVmFsb3JlcywgXHJcbiAgICAgICAgICAgIGZlY2luaXJlYWVzdDp0aGlzLmZlY2hhSW5pY2lvRXN0dWRpb1JlYWxpemFkbywgXHJcbiAgICAgICAgICAgIGZlY2ZpbmVzdHJlYTp0aGlzLmZlY2hhRmluRXN0dWRpb1JlYWxpemFkbywgXHJcbiAgICAgICAgICAgIGZlY2dyYWVzdHJlYTp0aGlzLmZlY2hhR3JhZG9Fc3R1ZGlvUmVhbGl6YWRvLCBcclxuICAgICAgICAgICAgYXByZXN0cmVhOnRoaXMuYXByb2JhY2lvbkVzdHVkaW9SZWFsaXphZG8sXHJcbiAgICAgICAgICAgIGFub2FwcmVzdHJlYTp0aGlzLmFub0Fwcm9iYWNpb25Fc3R1ZGlvUmVhbGl6YWRvLnRvU3RyaW5nKCksIFxyXG4gICAgICAgICAgICBob3Jlc3RyZWE6dGhpcy5ob3Jhc0VzdHVkaW9SZWFsaXphZG8udG9TdHJpbmcoKSxcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBNUHJlc3RhY2lvbmVzQW50aWd1ZWRhZCBleHRlbmRzIE1CYXNpY01vZGVse1xyXG4gICAgcHVibGljIGlkRW1wcmVzYTpudW1iZXI9MDtcclxuICAgIHB1YmxpYyBpZEVudGVycHJpY2U6bnVtYmVyPTA7XHJcbiAgICBwdWJsaWMgaWRQZXJzb25hbDpudW1iZXI9MDtcclxuICAgIHB1YmxpYyBpZEZpZGVpY29taXNvOm51bWJlcj0wO1xyXG4gICAgcHVibGljIGFub0N1clBlcmlvZG86bnVtYmVyPTA7XHJcbiAgICBwdWJsaWMgbWVzQ3VyUGVyaW9kbzpudW1iZXI9MDtcclxuICAgIHB1YmxpYyBzdWVsZG9JbnRlZ3JhbFBlcnNvbmFsOm51bWJlcj0wO1xyXG4gICAgcHVibGljIGJvbm9FeHRyYVBlcnNvbmFsOm51bWJlcj0wO1xyXG4gICAgcHVibGljIGJvbm9WYWNhY2lvbmVzUGVyc29uYWw6bnVtYmVyPTA7XHJcbiAgICBwdWJsaWMgYm9ub0ZpbkFubm9QZXJzb25hbDpudW1iZXI9MDtcclxuICAgIHB1YmxpYyBhcG9ydGVQZXJzb25hbDpudW1iZXI9MDtcclxuICAgIHB1YmxpYyBkaWFGaWRlaWNvbWlzbzpudW1iZXI9MFxyXG4gICAgcHVibGljIGRpYUFkaWNpb25hbDpudW1iZXI9MDtcclxuICAgIHB1YmxpYyBtZXRvZG9QcmVzYXRjaW9uZXM6c3RyaW5nPScnO1xyXG4gICAgcHVibGljIG1ldG9kb0RpYXNBZGljaW9uYWxlczpzdHJpbmc9Jyc7XHJcbiAgICBwdWJsaWMgYm9ub1ZhY2FjaW9uYWxEaWFzQWRpY2lvbmFsZXNQZXJzb25hbDpudW1iZXI9MDtcclxuICAgIHB1YmxpYyBib25vRmluQW5ub0RpYXNBZGljaW9uYWxlc1BlcnNvbmFsOm51bWJlcj0wO1xyXG4gICAgcHVibGljIHN1ZWxkb0ludGVncmFsRGlhc0FkaWNpb25hbGVzUGVyc29uYWw6bnVtYmVyPTA7XHJcbiAgICBwdWJsaWMgYXBvcnRlUHJlc3RhY2lvbmVzUGVyc29uYWw6bnVtYmVyPTA7XHJcbiAgICBwdWJsaWMgYXBvcnRlQWRpY2lvbmFsUGVyc29uYWw6bnVtYmVyPTA7XHJcbiAgICBwdWJsaWMgY29kaWdvVXN1YXJpbzpzdHJpbmc9Jyc7XHJcbiAgICBwdWJsaWMgaWREdEZpZGVpY29taXNvUGVyaW9kbzpudW1iZXI9MDtcclxuICAgICBcclxuICAgIGNvbnN0cnVjdG9yKGU6SVByZXN0YWNpb25lc0FudGlndWVkYWQ9bnVsbCl7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBpZiAoZSkge1xyXG4gICAgICAgICAgICB0aGlzLmlkRW1wcmVzYT1lLmlkX2VtcHJlc2E7IFxyXG4gICAgICAgICAgICB0aGlzLmlkRW1wcmVzYT0rZS5pZF9lbnRlcnByaXNlXHJcbiAgICAgICAgICAgIHRoaXMuaWRQZXJzb25hbD1wYXJzZUludChlLmlkX3BlcnNvbmFsKTtcclxuICAgICAgICAgICAgdGhpcy5pZEZpZGVpY29taXNvPXBhcnNlSW50KGUuaWRfZmlkZWljb21pc28pO1xyXG4gICAgICAgICAgICB0aGlzLmFub0N1clBlcmlvZG89cGFyc2VJbnQoZS5hbm9jdXJwZXIpO1xyXG4gICAgICAgICAgICB0aGlzLm1lc0N1clBlcmlvZG89cGFyc2VJbnQoZS5tZXNjdXJwZXIpO1xyXG4gICAgICAgICAgICB0aGlzLnN1ZWxkb0ludGVncmFsUGVyc29uYWw9K2Uuc3VlaW50cGVyO1xyXG4gICAgICAgICAgICB0aGlzLmJvbm9FeHRyYVBlcnNvbmFsPStlLmJvbmV4dHBlcjtcclxuICAgICAgICAgICAgdGhpcy5ib25vVmFjYWNpb25lc1BlcnNvbmFsPStlLmJvbnZhY3BlcjtcclxuICAgICAgICAgICAgdGhpcy5ib25vRmluQW5ub1BlcnNvbmFsPStlLmJvbmZpbnBlcjtcclxuICAgICAgICAgICAgdGhpcy5hcG9ydGVQZXJzb25hbD0rZS5hcG9wZXI7XHJcbiAgICAgICAgICAgIHRoaXMuZGlhRmlkZWljb21pc289K2UuZGlhZmlkO1xyXG4gICAgICAgICAgICB0aGlzLmRpYUFkaWNpb25hbD0rZS5kaWFhZGk7XHJcbiAgICAgICAgICAgIHRoaXMubWV0b2RvUHJlc2F0Y2lvbmVzPWUubWV0b2RvcHJlO1xyXG4gICAgICAgICAgICB0aGlzLm1ldG9kb0RpYXNBZGljaW9uYWxlcz1lLm1ldG9kb2FkaTtcclxuICAgICAgICAgICAgdGhpcy5ib25vVmFjYWNpb25hbERpYXNBZGljaW9uYWxlc1BlcnNvbmFsPStlLmJvbnZhY2FkaXBlcjtcclxuICAgICAgICAgICAgdGhpcy5ib25vRmluQW5ub0RpYXNBZGljaW9uYWxlc1BlcnNvbmFsPStlLmJvbmZpbmFkaXBlcjtcclxuICAgICAgICAgICAgdGhpcy5zdWVsZG9JbnRlZ3JhbERpYXNBZGljaW9uYWxlc1BlcnNvbmFsPStlLnN1ZWludGFkaXBlcjtcclxuICAgICAgICAgICAgdGhpcy5hcG9ydGVQcmVzdGFjaW9uZXNQZXJzb25hbD0rZS5hcG9wcmVwZXI7XHJcbiAgICAgICAgICAgIHRoaXMuYXBvcnRlQWRpY2lvbmFsUGVyc29uYWw9K2UuYXBvYWRpcGVyO1xyXG4gICAgICAgICAgICB0aGlzLmNvZGlnb1VzdWFyaW89ZS5jb2R1c3U7XHJcbiAgICAgICAgICAgIHRoaXMuaWREdEZpZGVpY29taXNvUGVyaW9kbz1wYXJzZUludChlLmlkX2R0X2ZpZGVpcGVyaW9kbyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5pc05ldz10cnVlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZGF0YUludGVyZmFjZSgpOklQcmVzdGFjaW9uZXNBbnRpZ3VlZGFke1xyXG4gICAgICAgIHJldHVybntcclxuICAgICAgICAgICAgaWRfZW1wcmVzYTp0aGlzLmlkRW1wcmVzYSxcclxuICAgICAgICAgICAgaWRfZW50ZXJwcmlzZTp0aGlzLmlkRW50ZXJwcmljZS50b1N0cmluZygpLFxyXG4gICAgICAgICAgICBpZF9wZXJzb25hbDp0aGlzLmlkUGVyc29uYWwudG9TdHJpbmcoKSxcclxuICAgICAgICAgICAgaWRfZmlkZWljb21pc286dGhpcy5pZEZpZGVpY29taXNvLnRvU3RyaW5nKCksXHJcbiAgICAgICAgICAgIGFub2N1cnBlcjp0aGlzLmFub0N1clBlcmlvZG8udG9TdHJpbmcoKSxcclxuICAgICAgICAgICAgbWVzY3VycGVyOnRoaXMubWVzQ3VyUGVyaW9kby50b1N0cmluZygpLFxyXG4gICAgICAgICAgICBzdWVpbnRwZXI6dGhpcy5zdWVsZG9JbnRlZ3JhbFBlcnNvbmFsLFxyXG4gICAgICAgICAgICBib25leHRwZXI6dGhpcy5ib25vRXh0cmFQZXJzb25hbCxcclxuICAgICAgICAgICAgYm9udmFjcGVyOnRoaXMuYm9ub1ZhY2FjaW9uZXNQZXJzb25hbCxcclxuICAgICAgICAgICAgYm9uZmlucGVyOnRoaXMuYm9ub0ZpbkFubm9QZXJzb25hbCxcclxuICAgICAgICAgICAgYXBvcGVyOnRoaXMuYXBvcnRlUGVyc29uYWwsXHJcbiAgICAgICAgICAgIGRpYWZpZDp0aGlzLmRpYUZpZGVpY29taXNvLFxyXG4gICAgICAgICAgICBkaWFhZGk6dGhpcy5kaWFBZGljaW9uYWwsXHJcbiAgICAgICAgICAgIG1ldG9kb3ByZTp0aGlzLm1ldG9kb1ByZXNhdGNpb25lcyxcclxuICAgICAgICAgICAgbWV0b2RvYWRpOnRoaXMubWV0b2RvRGlhc0FkaWNpb25hbGVzLFxyXG4gICAgICAgICAgICBib252YWNhZGlwZXI6dGhpcy5ib25vVmFjYWNpb25hbERpYXNBZGljaW9uYWxlc1BlcnNvbmFsLFxyXG4gICAgICAgICAgICBib25maW5hZGlwZXI6dGhpcy5ib25vRmluQW5ub0RpYXNBZGljaW9uYWxlc1BlcnNvbmFsLFxyXG4gICAgICAgICAgICBzdWVpbnRhZGlwZXI6dGhpcy5zdWVsZG9JbnRlZ3JhbERpYXNBZGljaW9uYWxlc1BlcnNvbmFsLFxyXG4gICAgICAgICAgICBhcG9wcmVwZXI6dGhpcy5hcG9ydGVQcmVzdGFjaW9uZXNQZXJzb25hbCxcclxuICAgICAgICAgICAgYXBvYWRpcGVyOnRoaXMuYXBvcnRlQWRpY2lvbmFsUGVyc29uYWwsXHJcbiAgICAgICAgICAgIGNvZHVzdTp0aGlzLmNvZGlnb1VzdWFyaW8sXHJcbiAgICAgICAgICAgIGlkX2R0X2ZpZGVpcGVyaW9kbzp0aGlzLmlkRHRGaWRlaWNvbWlzb1BlcmlvZG8udG9TdHJpbmcoKSxcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICBcclxufVxyXG5cclxuIl19