general-library-union 3.3.75 → 3.3.76

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 (987) hide show
  1. package/README.md +0 -0
  2. package/esm2022/public-api.mjs +1 -4
  3. package/esm2022/src/app/core/componentes/filtro-general/filtro-general.component.mjs +13 -31
  4. package/esm2022/src/app/core/componentes/formulariodinamico/formulariodinamico.component.mjs +17 -11
  5. package/esm2022/src/app/core/componentes/inicio-component/inicio-component.component.mjs +3 -3
  6. package/esm2022/src/app/core/componentes/menu/menu.component.mjs +3 -3
  7. package/esm2022/src/app/core/componentes/tabla-general/tabla-general.component.mjs +3 -4
  8. package/esm2022/src/app/core/componentes/tabs-multiples/tabs-multiples.component.mjs +232 -0
  9. package/esm2022/src/app/core/servicios/auth.service.mjs +1 -2
  10. package/esm2022/src/app/core/servicios/data-exporter-table.utils.mjs +2 -2
  11. package/esm2022/src/app/core/servicios/tabs-multiples.service.mjs +89 -0
  12. package/esm2022/src/app/core/servicios/toast.service.mjs +2 -2
  13. package/esm2022/src/app/core/servicios/utils.service.mjs +19 -45
  14. package/esm2022/src/app/layout/app.breadcrumb.component.mjs +21 -10
  15. package/esm2022/src/app/layout/app.layout.component.mjs +4 -3
  16. package/esm2022/src/app/layout/app.menu.component.mjs +1 -1
  17. package/esm2022/src/app/layout/app.menuitem.component.mjs +13 -72
  18. package/esm2022/src/app/layout/app.topbar.component.mjs +23 -19
  19. package/esm2022/src/app/publico/pages/login/login.page.mjs +3 -5
  20. package/esm2022/src/app/publico/pages/not-found/not-found.page.mjs +3 -3
  21. package/esm2022/src/app/publico/pages/seleccion-rol/seleccion-rol.component.mjs +3 -4
  22. package/esm2022/src/app/publico/pages/timeout/timeout.page.mjs +3 -3
  23. package/esm2022/src/app/seguridad/modelos/RespuestaModel.mjs +1 -1
  24. package/esm2022/src/app/seguridad/modelos/ServidorCorreoModel.mjs +1 -1
  25. package/esm2022/src/app/seguridad/modelos/TareasModel.mjs +1 -2
  26. package/esm2022/src/app/shared/componentes/input-helper-seleccion-plantilla/input-helper-seleccion-plantilla.component.mjs +3 -3
  27. package/esm2022/src/app/webcommon/pages/ejecucion-reporte/detalle-campo-reporte/detalle-campo-reporte.component.mjs +3 -4
  28. package/esm2022/src/app/webcommon/pages/ejecucion-reporte/detalle-entrada-reporte/detalle-entrada-reporte.component.mjs +3 -4
  29. package/esm2022/src/app/webcommon/pages/ejecucion-reporte/detalle-punto-proceso-reporte/detalle-punto-proceso-reporte.component.mjs +31 -30
  30. package/esm2022/src/app/webcommon/pages/ejecucion-reporte/detalle-tipo-reporte/detalle-tipo-reporte.component.mjs +5 -32
  31. package/esm2022/src/app/webcommon/pages/ejecucion-reporte-externo/listado-ejecucion-reporte-externo/listado-ejecucion-reporte-externo.component.mjs +6 -8
  32. package/esm2022/src/app/webcommon/pages/fuente/importar-fuente-con/importar-fuente-con.component.mjs +3 -13
  33. package/esm2022/src/app/webcommon/pages/fuente/importar-fuente-general/importar-fuente-general.component.mjs +3 -4
  34. package/esm2022/src/app/webcommon/pages/fuente-reporte/fuente-reporte.component.mjs +4 -5
  35. package/esm2022/src/app/webcommon/pages/fuenteGeneral/fuente-general-servicio/fuente-general-servicio.component.mjs +3 -4
  36. package/esm2022/src/app/webcommon/pages/fuenteGeneral/mantenimiento-fuente-general/mantenimiento-fuente-general.page.mjs +3 -4
  37. package/esm2022/src/app/webcommon/popups/popup-campos-fuente-general/popup-campos-fuente-general.component.mjs +2 -3
  38. package/esm2022/src/app/webcommon/popups/popup-convertir-plantillas/popup-convertir-plantillas.component.mjs +4 -5
  39. package/esm2022/src/app/webcommon/popups/popup-editor-formula/popup-editor-formula.component.mjs +3 -4
  40. package/esm2022/src/app/webcommon/popups/popup-punto-proceso/popup-punto-proceso.component.mjs +3 -4
  41. package/esm2022/src/app/webcommon/popups/popup-recurso/popup-recurso.component.mjs +3 -4
  42. package/esm2022/src/app/webcommon/popups/popup-reporte/popup-reporte.component.mjs +8 -19
  43. package/esm2022/src/app/webcommon/popups/popup-tablas-fuente/popup-tablas-fuente.component.mjs +3 -4
  44. package/esm2022/src/app/webcommon/services/fechaUtils.service.mjs +1 -6
  45. package/esm2022/src/environments/environment.mjs +3 -2
  46. package/fesm2022/general-library-union.mjs +550 -425
  47. package/fesm2022/general-library-union.mjs.map +1 -1
  48. package/package.json +5 -5
  49. package/public-api.d.ts +0 -3
  50. package/src/app/core/componentes/filtro-general/filtro-general.component.d.ts +1 -3
  51. package/src/app/core/componentes/tabs-multiples/tabs-multiples.component.d.ts +53 -0
  52. package/src/app/core/servicios/tabs-multiples.service.d.ts +27 -0
  53. package/src/app/core/servicios/utils.service.d.ts +1 -4
  54. package/src/app/layout/app.breadcrumb.component.d.ts +4 -1
  55. package/src/app/layout/app.menuitem.component.d.ts +4 -2
  56. package/src/app/layout/app.topbar.component.d.ts +3 -2
  57. package/src/app/seguridad/modelos/ServidorCorreoModel.d.ts +15 -15
  58. package/src/app/seguridad/modelos/TareasModel.d.ts +0 -1
  59. package/src/app/webcommon/pages/ejecucion-reporte/detalle-tipo-reporte/detalle-tipo-reporte.component.d.ts +1 -3
  60. package/src/app/webcommon/pages/ejecucion-reporte-externo/listado-ejecucion-reporte-externo/listado-ejecucion-reporte-externo.component.d.ts +0 -1
  61. package/src/app/webcommon/pages/fuente/importar-fuente-con/importar-fuente-con.component.d.ts +0 -3
  62. package/src/app/webcommon/services/fechaUtils.service.d.ts +0 -1
  63. package/src/assets/demo/avatar-1.png +0 -0
  64. package/src/assets/demo/customers-large.json +0 -0
  65. package/src/assets/demo/data/chat.json +0 -0
  66. package/src/assets/demo/data/countries.json +0 -0
  67. package/src/assets/demo/data/customers-large.json +0 -0
  68. package/src/assets/demo/data/customers-medium.json +0 -0
  69. package/src/assets/demo/data/customers-small.json +0 -0
  70. package/src/assets/demo/data/file-management.json +0 -0
  71. package/src/assets/demo/data/files-lazy.json +0 -0
  72. package/src/assets/demo/data/files.json +0 -0
  73. package/src/assets/demo/data/filesystem-lazy.json +0 -0
  74. package/src/assets/demo/data/filesystem.json +0 -0
  75. package/src/assets/demo/data/icons.json +0 -0
  76. package/src/assets/demo/data/kanban.json +0 -0
  77. package/src/assets/demo/data/mail.json +0 -0
  78. package/src/assets/demo/data/members.json +0 -0
  79. package/src/assets/demo/data/photos.json +0 -0
  80. package/src/assets/demo/data/products-mixed.json +0 -0
  81. package/src/assets/demo/data/products-orders-small.json +0 -0
  82. package/src/assets/demo/data/products-orders.json +0 -0
  83. package/src/assets/demo/data/products-small.json +0 -0
  84. package/src/assets/demo/data/products.json +0 -0
  85. package/src/assets/demo/data/scheduleevents.json +0 -0
  86. package/src/assets/demo/data/tasks.json +0 -0
  87. package/src/assets/demo/images/avatar/activity-1.png +0 -0
  88. package/src/assets/demo/images/avatar/activity-2.png +0 -0
  89. package/src/assets/demo/images/avatar/activity-3.png +0 -0
  90. package/src/assets/demo/images/avatar/amyelsner.png +0 -0
  91. package/src/assets/demo/images/avatar/annafali.png +0 -0
  92. package/src/assets/demo/images/avatar/asiyajavayant.png +0 -0
  93. package/src/assets/demo/images/avatar/avatar-1.png +0 -0
  94. package/src/assets/demo/images/avatar/avatar-10.png +0 -0
  95. package/src/assets/demo/images/avatar/avatar-11.png +0 -0
  96. package/src/assets/demo/images/avatar/avatar-12.png +0 -0
  97. package/src/assets/demo/images/avatar/avatar-13.png +0 -0
  98. package/src/assets/demo/images/avatar/avatar-14.png +0 -0
  99. package/src/assets/demo/images/avatar/avatar-15.png +0 -0
  100. package/src/assets/demo/images/avatar/avatar-16.png +0 -0
  101. package/src/assets/demo/images/avatar/avatar-2.png +0 -0
  102. package/src/assets/demo/images/avatar/avatar-3.png +0 -0
  103. package/src/assets/demo/images/avatar/avatar-4.png +0 -0
  104. package/src/assets/demo/images/avatar/avatar-5.png +0 -0
  105. package/src/assets/demo/images/avatar/avatar-6.png +0 -0
  106. package/src/assets/demo/images/avatar/avatar-7.png +0 -0
  107. package/src/assets/demo/images/avatar/avatar-8.png +0 -0
  108. package/src/assets/demo/images/avatar/avatar-9.png +0 -0
  109. package/src/assets/demo/images/avatar/bernardodominic.png +0 -0
  110. package/src/assets/demo/images/avatar/circle/avatar-f-1.png +0 -0
  111. package/src/assets/demo/images/avatar/circle/avatar-f-10.png +0 -0
  112. package/src/assets/demo/images/avatar/circle/avatar-f-10@2x.png +0 -0
  113. package/src/assets/demo/images/avatar/circle/avatar-f-11.png +0 -0
  114. package/src/assets/demo/images/avatar/circle/avatar-f-11@2x.png +0 -0
  115. package/src/assets/demo/images/avatar/circle/avatar-f-12.png +0 -0
  116. package/src/assets/demo/images/avatar/circle/avatar-f-12@2x.png +0 -0
  117. package/src/assets/demo/images/avatar/circle/avatar-f-1@2x.png +0 -0
  118. package/src/assets/demo/images/avatar/circle/avatar-f-2.png +0 -0
  119. package/src/assets/demo/images/avatar/circle/avatar-f-2@2x.png +0 -0
  120. package/src/assets/demo/images/avatar/circle/avatar-f-3.png +0 -0
  121. package/src/assets/demo/images/avatar/circle/avatar-f-3@2x.png +0 -0
  122. package/src/assets/demo/images/avatar/circle/avatar-f-4.png +0 -0
  123. package/src/assets/demo/images/avatar/circle/avatar-f-4@2x.png +0 -0
  124. package/src/assets/demo/images/avatar/circle/avatar-f-5.png +0 -0
  125. package/src/assets/demo/images/avatar/circle/avatar-f-5@2x.png +0 -0
  126. package/src/assets/demo/images/avatar/circle/avatar-f-6.png +0 -0
  127. package/src/assets/demo/images/avatar/circle/avatar-f-6@2x.png +0 -0
  128. package/src/assets/demo/images/avatar/circle/avatar-f-7.png +0 -0
  129. package/src/assets/demo/images/avatar/circle/avatar-f-7@2x.png +0 -0
  130. package/src/assets/demo/images/avatar/circle/avatar-f-8.png +0 -0
  131. package/src/assets/demo/images/avatar/circle/avatar-f-8@2x.png +0 -0
  132. package/src/assets/demo/images/avatar/circle/avatar-f-9.png +0 -0
  133. package/src/assets/demo/images/avatar/circle/avatar-f-9@2x.png +0 -0
  134. package/src/assets/demo/images/avatar/circle/avatar-m-1.png +0 -0
  135. package/src/assets/demo/images/avatar/circle/avatar-m-10.png +0 -0
  136. package/src/assets/demo/images/avatar/circle/avatar-m-10@2x.png +0 -0
  137. package/src/assets/demo/images/avatar/circle/avatar-m-11.png +0 -0
  138. package/src/assets/demo/images/avatar/circle/avatar-m-11@2x.png +0 -0
  139. package/src/assets/demo/images/avatar/circle/avatar-m-12.png +0 -0
  140. package/src/assets/demo/images/avatar/circle/avatar-m-12@2x.png +0 -0
  141. package/src/assets/demo/images/avatar/circle/avatar-m-1@2x.png +0 -0
  142. package/src/assets/demo/images/avatar/circle/avatar-m-2.png +0 -0
  143. package/src/assets/demo/images/avatar/circle/avatar-m-2@2x.png +0 -0
  144. package/src/assets/demo/images/avatar/circle/avatar-m-3.png +0 -0
  145. package/src/assets/demo/images/avatar/circle/avatar-m-3@2x.png +0 -0
  146. package/src/assets/demo/images/avatar/circle/avatar-m-4.png +0 -0
  147. package/src/assets/demo/images/avatar/circle/avatar-m-4@2x.png +0 -0
  148. package/src/assets/demo/images/avatar/circle/avatar-m-5.png +0 -0
  149. package/src/assets/demo/images/avatar/circle/avatar-m-5@2x.png +0 -0
  150. package/src/assets/demo/images/avatar/circle/avatar-m-6.png +0 -0
  151. package/src/assets/demo/images/avatar/circle/avatar-m-6@2x.png +0 -0
  152. package/src/assets/demo/images/avatar/circle/avatar-m-7-1.png +0 -0
  153. package/src/assets/demo/images/avatar/circle/avatar-m-7.png +0 -0
  154. package/src/assets/demo/images/avatar/circle/avatar-m-7@2x-1.png +0 -0
  155. package/src/assets/demo/images/avatar/circle/avatar-m-7@2x.png +0 -0
  156. package/src/assets/demo/images/avatar/circle/avatar-m-8.png +0 -0
  157. package/src/assets/demo/images/avatar/circle/avatar-m-8@2x.png +0 -0
  158. package/src/assets/demo/images/avatar/circle/avatar-m-9.png +0 -0
  159. package/src/assets/demo/images/avatar/circle/avatar-m-9@2x.png +0 -0
  160. package/src/assets/demo/images/avatar/circle-big/avatar-f-1.png +0 -0
  161. package/src/assets/demo/images/avatar/circle-big/avatar-f-1@2x.png +0 -0
  162. package/src/assets/demo/images/avatar/circle-big/avatar-f-2.png +0 -0
  163. package/src/assets/demo/images/avatar/circle-big/avatar-f-2@2x.png +0 -0
  164. package/src/assets/demo/images/avatar/circle-big/avatar-f-3.png +0 -0
  165. package/src/assets/demo/images/avatar/circle-big/avatar-f-3@2x.png +0 -0
  166. package/src/assets/demo/images/avatar/circle-big/avatar-m-1.png +0 -0
  167. package/src/assets/demo/images/avatar/circle-big/avatar-m-1@2x.png +0 -0
  168. package/src/assets/demo/images/avatar/circle-big/avatar-m-2.png +0 -0
  169. package/src/assets/demo/images/avatar/circle-big/avatar-m-2@2x.png +0 -0
  170. package/src/assets/demo/images/avatar/circle-big/avatar-m-3.png +0 -0
  171. package/src/assets/demo/images/avatar/circle-big/avatar-m-3@2x.png +0 -0
  172. package/src/assets/demo/images/avatar/elwinsharvill.png +0 -0
  173. package/src/assets/demo/images/avatar/ionibowcher.png +0 -0
  174. package/src/assets/demo/images/avatar/ivanmagalhaes.png +0 -0
  175. package/src/assets/demo/images/avatar/onyamalimba.png +0 -0
  176. package/src/assets/demo/images/avatar/profile.jpg +0 -0
  177. package/src/assets/demo/images/avatar/square/avatar-f-1.jpg +0 -0
  178. package/src/assets/demo/images/avatar/square/avatar-f-1@2x.jpg +0 -0
  179. package/src/assets/demo/images/avatar/square/avatar-f-2.jpg +0 -0
  180. package/src/assets/demo/images/avatar/square/avatar-f-2@2x.jpg +0 -0
  181. package/src/assets/demo/images/avatar/square/avatar-m-1.jpg +0 -0
  182. package/src/assets/demo/images/avatar/square/avatar-m-1@2x.jpg +0 -0
  183. package/src/assets/demo/images/avatar/stephenshaw.png +0 -0
  184. package/src/assets/demo/images/avatar/xuxuefeng.png +0 -0
  185. package/src/assets/demo/images/blocks/about/about-1.png +0 -0
  186. package/src/assets/demo/images/blocks/ad/icon-blocks.svg +0 -0
  187. package/src/assets/demo/images/blocks/hero/hero-1.png +0 -0
  188. package/src/assets/demo/images/blocks/logos/hyper.svg +0 -0
  189. package/src/assets/demo/images/blocks/logos/visa.png +0 -0
  190. package/src/assets/demo/images/blocks/team/team-1.png +0 -0
  191. package/src/assets/demo/images/blocks/team/team-2.png +0 -0
  192. package/src/assets/demo/images/blocks/team/team-3.png +0 -0
  193. package/src/assets/demo/images/blocks/team/team-4.png +0 -0
  194. package/src/assets/demo/images/blog/blog-1.png +0 -0
  195. package/src/assets/demo/images/blog/blog-2.png +0 -0
  196. package/src/assets/demo/images/blog/blog-3.png +0 -0
  197. package/src/assets/demo/images/blog/blog-4.png +0 -0
  198. package/src/assets/demo/images/blog/blog-5.png +0 -0
  199. package/src/assets/demo/images/blog/blog-6.png +0 -0
  200. package/src/assets/demo/images/blog/blogdetail.png +0 -0
  201. package/src/assets/demo/images/contact/map-dark.svg +0 -0
  202. package/src/assets/demo/images/contact/map-light.svg +0 -0
  203. package/src/assets/demo/images/ecommerce/order-history/orderhistory-1.png +0 -0
  204. package/src/assets/demo/images/ecommerce/order-history/orderhistory-2.png +0 -0
  205. package/src/assets/demo/images/ecommerce/order-history/orderhistory-3.png +0 -0
  206. package/src/assets/demo/images/ecommerce/order-history/orderhistory-4.png +0 -0
  207. package/src/assets/demo/images/ecommerce/order-history/orderhistory-5.png +0 -0
  208. package/src/assets/demo/images/ecommerce/order-history/orderhistory-6.png +0 -0
  209. package/src/assets/demo/images/ecommerce/ordersummary/order-summary-1-1.png +0 -0
  210. package/src/assets/demo/images/ecommerce/ordersummary/order-summary-1-2.png +0 -0
  211. package/src/assets/demo/images/ecommerce/ordersummary/order-summary-2-1.png +0 -0
  212. package/src/assets/demo/images/ecommerce/ordersummary/visa.png +0 -0
  213. package/src/assets/demo/images/ecommerce/product-list/product-list-2-1.png +0 -0
  214. package/src/assets/demo/images/ecommerce/product-list/product-list-2-2.png +0 -0
  215. package/src/assets/demo/images/ecommerce/product-list/product-list-2-3.png +0 -0
  216. package/src/assets/demo/images/ecommerce/product-list/product-list-2-4.png +0 -0
  217. package/src/assets/demo/images/ecommerce/product-list/product-list-4-1.png +0 -0
  218. package/src/assets/demo/images/ecommerce/product-list/product-list-4-2.png +0 -0
  219. package/src/assets/demo/images/ecommerce/product-list/product-list-4-3.png +0 -0
  220. package/src/assets/demo/images/ecommerce/product-list/product-list-4-4.png +0 -0
  221. package/src/assets/demo/images/ecommerce/product-list/product-list-4-5.png +0 -0
  222. package/src/assets/demo/images/ecommerce/product-list/product-list-4-6.png +0 -0
  223. package/src/assets/demo/images/ecommerce/productoverview/product-overview-1-1.png +0 -0
  224. package/src/assets/demo/images/ecommerce/productoverview/product-overview-1-2.png +0 -0
  225. package/src/assets/demo/images/ecommerce/productoverview/product-overview-1-3.png +0 -0
  226. package/src/assets/demo/images/ecommerce/productoverview/product-overview-2-1.png +0 -0
  227. package/src/assets/demo/images/ecommerce/productoverview/product-overview-2-2.png +0 -0
  228. package/src/assets/demo/images/ecommerce/productoverview/product-overview-2-3.png +0 -0
  229. package/src/assets/demo/images/ecommerce/productoverview/product-overview-2-4.png +0 -0
  230. package/src/assets/demo/images/ecommerce/productoverview/product-overview-3-1.png +0 -0
  231. package/src/assets/demo/images/ecommerce/productoverview/product-overview-3-2.png +0 -0
  232. package/src/assets/demo/images/ecommerce/productoverview/product-overview-3-3.png +0 -0
  233. package/src/assets/demo/images/ecommerce/productoverview/product-overview-3-4.png +0 -0
  234. package/src/assets/demo/images/ecommerce/productoverview/product-overview-4-1.png +0 -0
  235. package/src/assets/demo/images/ecommerce/productoverview/product-overview-4-2.png +0 -0
  236. package/src/assets/demo/images/ecommerce/productoverview/product-overview-4-3.png +0 -0
  237. package/src/assets/demo/images/ecommerce/productoverview/product-suggestion.png +0 -0
  238. package/src/assets/demo/images/ecommerce/shop/flag.png +0 -0
  239. package/src/assets/demo/images/ecommerce/shop/shop-1.png +0 -0
  240. package/src/assets/demo/images/ecommerce/shop/shop-2.png +0 -0
  241. package/src/assets/demo/images/ecommerce/shop/shop-3.png +0 -0
  242. package/src/assets/demo/images/ecommerce/shop/shop-4.png +0 -0
  243. package/src/assets/demo/images/ecommerce/shop/shop-5.png +0 -0
  244. package/src/assets/demo/images/ecommerce/shop/shop-6.png +0 -0
  245. package/src/assets/demo/images/ecommerce/shopping-cart/shopping-cart-2-1.png +0 -0
  246. package/src/assets/demo/images/ecommerce/shopping-cart/shopping-cart-2-2.png +0 -0
  247. package/src/assets/demo/images/flag/flag_placeholder.png +0 -0
  248. package/src/assets/demo/images/galleria/galleria1.jpg +0 -0
  249. package/src/assets/demo/images/galleria/galleria10.jpg +0 -0
  250. package/src/assets/demo/images/galleria/galleria10s.jpg +0 -0
  251. package/src/assets/demo/images/galleria/galleria11.jpg +0 -0
  252. package/src/assets/demo/images/galleria/galleria11s.jpg +0 -0
  253. package/src/assets/demo/images/galleria/galleria12.jpg +0 -0
  254. package/src/assets/demo/images/galleria/galleria12s.jpg +0 -0
  255. package/src/assets/demo/images/galleria/galleria13.jpg +0 -0
  256. package/src/assets/demo/images/galleria/galleria13s.jpg +0 -0
  257. package/src/assets/demo/images/galleria/galleria14.jpg +0 -0
  258. package/src/assets/demo/images/galleria/galleria14s.jpg +0 -0
  259. package/src/assets/demo/images/galleria/galleria15.jpg +0 -0
  260. package/src/assets/demo/images/galleria/galleria15s.jpg +0 -0
  261. package/src/assets/demo/images/galleria/galleria1s.jpg +0 -0
  262. package/src/assets/demo/images/galleria/galleria2.jpg +0 -0
  263. package/src/assets/demo/images/galleria/galleria2s.jpg +0 -0
  264. package/src/assets/demo/images/galleria/galleria3.jpg +0 -0
  265. package/src/assets/demo/images/galleria/galleria3s.jpg +0 -0
  266. package/src/assets/demo/images/galleria/galleria4.jpg +0 -0
  267. package/src/assets/demo/images/galleria/galleria4s.jpg +0 -0
  268. package/src/assets/demo/images/galleria/galleria5.jpg +0 -0
  269. package/src/assets/demo/images/galleria/galleria5s.jpg +0 -0
  270. package/src/assets/demo/images/galleria/galleria6.jpg +0 -0
  271. package/src/assets/demo/images/galleria/galleria6s.jpg +0 -0
  272. package/src/assets/demo/images/galleria/galleria7.jpg +0 -0
  273. package/src/assets/demo/images/galleria/galleria7s.jpg +0 -0
  274. package/src/assets/demo/images/galleria/galleria8.jpg +0 -0
  275. package/src/assets/demo/images/galleria/galleria8s.jpg +0 -0
  276. package/src/assets/demo/images/galleria/galleria9.jpg +0 -0
  277. package/src/assets/demo/images/galleria/galleria9s.jpg +0 -0
  278. package/src/assets/demo/images/landing/chat-dark.png +0 -0
  279. package/src/assets/demo/images/landing/chat-light.png +0 -0
  280. package/src/assets/demo/images/landing/dashboard-dark.png +0 -0
  281. package/src/assets/demo/images/landing/dashboard-light.png +0 -0
  282. package/src/assets/demo/images/landing/icon-accessibility.svg +0 -0
  283. package/src/assets/demo/images/landing/icon-community.svg +0 -0
  284. package/src/assets/demo/images/landing/icon-components.svg +0 -0
  285. package/src/assets/demo/images/landing/icon-mobile.svg +0 -0
  286. package/src/assets/demo/images/landing/icon-productivity.svg +0 -0
  287. package/src/assets/demo/images/landing/icon-support.svg +0 -0
  288. package/src/assets/demo/images/landing/icon-theme.svg +0 -0
  289. package/src/assets/demo/images/landing/icon-ts.svg +0 -0
  290. package/src/assets/demo/images/landing/kanban-dark.png +0 -0
  291. package/src/assets/demo/images/landing/kanban-light.png +0 -0
  292. package/src/assets/demo/images/landing/mail-dark.png +0 -0
  293. package/src/assets/demo/images/landing/mail-light.png +0 -0
  294. package/src/assets/demo/images/nature/nature1.jpg +0 -0
  295. package/src/assets/demo/images/nature/nature10.jpg +0 -0
  296. package/src/assets/demo/images/nature/nature11.jpg +0 -0
  297. package/src/assets/demo/images/nature/nature12.jpg +0 -0
  298. package/src/assets/demo/images/nature/nature2.jpg +0 -0
  299. package/src/assets/demo/images/nature/nature3.jpg +0 -0
  300. package/src/assets/demo/images/nature/nature4.jpg +0 -0
  301. package/src/assets/demo/images/nature/nature5.jpg +0 -0
  302. package/src/assets/demo/images/nature/nature6.jpg +0 -0
  303. package/src/assets/demo/images/nature/nature7.jpg +0 -0
  304. package/src/assets/demo/images/nature/nature8.jpg +0 -0
  305. package/src/assets/demo/images/nature/nature9.jpg +0 -0
  306. package/src/assets/demo/images/product/bamboo-watch.jpg +0 -0
  307. package/src/assets/demo/images/product/black-watch.jpg +0 -0
  308. package/src/assets/demo/images/product/blue-band.jpg +0 -0
  309. package/src/assets/demo/images/product/blue-t-shirt.jpg +0 -0
  310. package/src/assets/demo/images/product/bracelet.jpg +0 -0
  311. package/src/assets/demo/images/product/brown-purse.jpg +0 -0
  312. package/src/assets/demo/images/product/chakra-bracelet.jpg +0 -0
  313. package/src/assets/demo/images/product/galaxy-earrings.jpg +0 -0
  314. package/src/assets/demo/images/product/game-controller.jpg +0 -0
  315. package/src/assets/demo/images/product/gaming-set.jpg +0 -0
  316. package/src/assets/demo/images/product/gold-phone-case.jpg +0 -0
  317. package/src/assets/demo/images/product/green-earbuds.jpg +0 -0
  318. package/src/assets/demo/images/product/green-t-shirt.jpg +0 -0
  319. package/src/assets/demo/images/product/grey-t-shirt.jpg +0 -0
  320. package/src/assets/demo/images/product/headphones.jpg +0 -0
  321. package/src/assets/demo/images/product/light-green-t-shirt.jpg +0 -0
  322. package/src/assets/demo/images/product/lime-band.jpg +0 -0
  323. package/src/assets/demo/images/product/mini-speakers.jpg +0 -0
  324. package/src/assets/demo/images/product/painted-phone-case.jpg +0 -0
  325. package/src/assets/demo/images/product/pink-band.jpg +0 -0
  326. package/src/assets/demo/images/product/pink-purse.jpg +0 -0
  327. package/src/assets/demo/images/product/product-placeholder.svg +0 -0
  328. package/src/assets/demo/images/product/purple-band.jpg +0 -0
  329. package/src/assets/demo/images/product/purple-gemstone-necklace.jpg +0 -0
  330. package/src/assets/demo/images/product/purple-t-shirt.jpg +0 -0
  331. package/src/assets/demo/images/product/shoes.jpg +0 -0
  332. package/src/assets/demo/images/product/sneakers.jpg +0 -0
  333. package/src/assets/demo/images/product/teal-t-shirt.jpg +0 -0
  334. package/src/assets/demo/images/product/yellow-earbuds.jpg +0 -0
  335. package/src/assets/demo/images/product/yoga-mat.jpg +0 -0
  336. package/src/assets/demo/images/product/yoga-set.jpg +0 -0
  337. package/src/assets/demo/styles/badges.css +0 -0
  338. package/src/assets/demo/styles/badges.scss +0 -0
  339. package/src/assets/demo/styles/code.css +0 -0
  340. package/src/assets/demo/styles/code.scss +0 -0
  341. package/src/assets/demo/styles/flags/flags.css +0 -0
  342. package/src/assets/demo/styles/flags/flags_responsive.png +0 -0
  343. package/src/assets/glyphicons/css/boton-icon.css +0 -0
  344. package/src/assets/glyphicons/css/glyphicons-basic.css +0 -0
  345. package/src/assets/glyphicons/css/glyphicons-filetypes.css +0 -0
  346. package/src/assets/glyphicons/css/glyphicons-halflings.css +0 -0
  347. package/src/assets/glyphicons/css/glyphicons-social.css +0 -0
  348. package/src/assets/glyphicons/css/glyphicons.css +0 -0
  349. package/src/assets/glyphicons/fonts/filetypes/glyphicons-filetypes-regular.eot +0 -0
  350. package/src/assets/glyphicons/fonts/filetypes/glyphicons-filetypes-regular.svg +0 -0
  351. package/src/assets/glyphicons/fonts/filetypes/glyphicons-filetypes-regular.ttf +0 -0
  352. package/src/assets/glyphicons/fonts/filetypes/glyphicons-filetypes-regular.woff +0 -0
  353. package/src/assets/glyphicons/fonts/filetypes/glyphicons-filetypes-regular.woff2 +0 -0
  354. package/src/assets/glyphicons/fonts/halflings/glyphicons-halflings-regular.eot +0 -0
  355. package/src/assets/glyphicons/fonts/halflings/glyphicons-halflings-regular.svg +0 -0
  356. package/src/assets/glyphicons/fonts/halflings/glyphicons-halflings-regular.ttf +0 -0
  357. package/src/assets/glyphicons/fonts/halflings/glyphicons-halflings-regular.woff +0 -0
  358. package/src/assets/glyphicons/fonts/halflings/glyphicons-halflings-regular.woff2 +0 -0
  359. package/src/assets/glyphicons/fonts/regular/glyphicons-regular.eot +0 -0
  360. package/src/assets/glyphicons/fonts/regular/glyphicons-regular.svg +0 -0
  361. package/src/assets/glyphicons/fonts/regular/glyphicons-regular.ttf +0 -0
  362. package/src/assets/glyphicons/fonts/regular/glyphicons-regular.woff +0 -0
  363. package/src/assets/glyphicons/fonts/regular/glyphicons-regular.woff2 +0 -0
  364. package/src/assets/glyphicons/fonts/social/glyphicons-social-regular.eot +0 -0
  365. package/src/assets/glyphicons/fonts/social/glyphicons-social-regular.svg +0 -0
  366. package/src/assets/glyphicons/fonts/social/glyphicons-social-regular.ttf +0 -0
  367. package/src/assets/glyphicons/fonts/social/glyphicons-social-regular.woff +0 -0
  368. package/src/assets/glyphicons/fonts/social/glyphicons-social-regular.woff2 +0 -0
  369. package/src/assets/images/LogoUS.png +0 -0
  370. package/src/assets/images/Robot.png +0 -0
  371. package/src/assets/images/favicon.ico +0 -0
  372. package/src/assets/images/fdNoFound.png +0 -0
  373. package/src/assets/images/fd_timeOut.png +0 -0
  374. package/src/assets/images/imagen-principal-sam.png +0 -0
  375. package/src/assets/images/imagen-principal-samanta.png +0 -0
  376. package/src/assets/images/imagen-principal-sara.png +0 -0
  377. package/src/assets/images/imagen-principal-seguridad.png +0 -0
  378. package/src/assets/images/imagen_login.png +0 -0
  379. package/src/assets/images/logo-aps-descomprimido.png +0 -0
  380. package/src/assets/images/logo-aps.png +0 -0
  381. package/src/assets/images/logo-icono-aps.png +0 -0
  382. package/src/assets/images/logo-icono-sam.png +0 -0
  383. package/src/assets/images/logo-icono-samanta.png +0 -0
  384. package/src/assets/images/logo-icono-sara.png +0 -0
  385. package/src/assets/images/logo-icono-seguridad.png +0 -0
  386. package/src/assets/images/logo-sam-descomprimido.png +0 -0
  387. package/src/assets/images/logo-sam.png +0 -0
  388. package/src/assets/images/logo-samanta-descomprimido.png +0 -0
  389. package/src/assets/images/logo-samanta.png +0 -0
  390. package/src/assets/images/logo-sara-descomprimido.png +0 -0
  391. package/src/assets/images/logo-sara.png +0 -0
  392. package/src/assets/images/logo-seguridad-descomprimido.png +0 -0
  393. package/src/assets/images/logo-seguridad.png +0 -0
  394. package/src/assets/images/logo-union-simple.png +0 -0
  395. package/src/assets/images/logo-union-soluciones-logo.png +0 -0
  396. package/src/assets/images/logous-blanco.png +0 -0
  397. package/src/assets/images/modulos/icono-activos-fijos.png +0 -0
  398. package/src/assets/images/modulos/icono-administracion.png +0 -0
  399. package/src/assets/images/modulos/icono-compras.png +0 -0
  400. package/src/assets/images/modulos/icono-control.png +0 -0
  401. package/src/assets/images/modulos/icono-cotizacion.png +0 -0
  402. package/src/assets/images/modulos/icono-inventarios.png +0 -0
  403. package/src/assets/images/modulos/icono-presupuesto.png +0 -0
  404. package/src/assets/images/modulos/icono-produccion.png +0 -0
  405. package/src/assets/images/modulos/icono-requisicion.png +0 -0
  406. package/src/assets/images/navegador-chrome.png +0 -0
  407. package/src/assets/images/navegador-edge.png +0 -0
  408. package/src/assets/images/navegador-explorer.png +0 -0
  409. package/src/assets/images/navegador-firefox.png +0 -0
  410. package/src/assets/images/not-found-fondo.png +0 -0
  411. package/src/assets/images/not-found.png +0 -0
  412. package/src/assets/images/personaje.png +0 -0
  413. package/src/assets/images/robotZ.png +0 -0
  414. package/src/assets/images/texto-union-soluciones.png +0 -0
  415. package/src/assets/images/timeout.png +0 -0
  416. package/src/assets/layout/fonts/roboto-v20-latin-ext_latin-500.woff +0 -0
  417. package/src/assets/layout/fonts/roboto-v20-latin-ext_latin-500.woff2 +0 -0
  418. package/src/assets/layout/fonts/roboto-v20-latin-ext_latin-700.woff +0 -0
  419. package/src/assets/layout/fonts/roboto-v20-latin-ext_latin-700.woff2 +0 -0
  420. package/src/assets/layout/fonts/roboto-v20-latin-ext_latin-regular.woff +0 -0
  421. package/src/assets/layout/fonts/roboto-v20-latin-ext_latin-regular.woff2 +0 -0
  422. package/src/assets/layout/images/401.svg +0 -0
  423. package/src/assets/layout/images/404-2x.png +0 -0
  424. package/src/assets/layout/images/dashboard/saas-card.png +0 -0
  425. package/src/assets/layout/images/doc/breadcrumb-doc.jpg +0 -0
  426. package/src/assets/layout/images/doc/inlinemenu-doc.jpg +0 -0
  427. package/src/assets/layout/images/doc/rightmenu-doc.jpg +0 -0
  428. package/src/assets/layout/images/doc/topbar-doc.jpg +0 -0
  429. package/src/assets/layout/images/extensions/asset-amex.svg +0 -0
  430. package/src/assets/layout/images/extensions/asset-mastercard.svg +0 -0
  431. package/src/assets/layout/images/extensions/asset-paypal.svg +0 -0
  432. package/src/assets/layout/images/extensions/asset-visa.svg +0 -0
  433. package/src/assets/layout/images/extensions/background@2x.jpg +0 -0
  434. package/src/assets/layout/images/extensions/flag-us@2x.png +0 -0
  435. package/src/assets/layout/images/extensions/help-header@2x.jpg +0 -0
  436. package/src/assets/layout/images/extensions/prime-logo.svg +0 -0
  437. package/src/assets/layout/images/favicon.png +0 -0
  438. package/src/assets/layout/images/footer-ultima-dark.svg +0 -0
  439. package/src/assets/layout/images/footer-ultima.svg +0 -0
  440. package/src/assets/layout/images/landing/collaboration-image.png +0 -0
  441. package/src/assets/layout/images/landing/easyfollow-image.png +0 -0
  442. package/src/assets/layout/images/landing/landing-ellipse.png +0 -0
  443. package/src/assets/layout/images/landing/landing-ellipse2.png +0 -0
  444. package/src/assets/layout/images/landing/landing-hero-image.jpg +0 -0
  445. package/src/assets/layout/images/landing/landing-logo1.png +0 -0
  446. package/src/assets/layout/images/landing/landing-logo2.png +0 -0
  447. package/src/assets/layout/images/landing/landing-logo3.png +0 -0
  448. package/src/assets/layout/images/landing/landing-logo4.png +0 -0
  449. package/src/assets/layout/images/landing/layer-0-opt.jpg +0 -0
  450. package/src/assets/layout/images/landing/layer-1-opt.png +0 -0
  451. package/src/assets/layout/images/landing/layer-2-opt.png +0 -0
  452. package/src/assets/layout/images/logo-ultima.svg +0 -0
  453. package/src/assets/layout/images/logo.png +0 -0
  454. package/src/assets/layout/images/logo2x.png +0 -0
  455. package/src/assets/layout/images/pages/404-bg.jpg +0 -0
  456. package/src/assets/layout/images/pages/404.png +0 -0
  457. package/src/assets/layout/images/pages/accessDenied-bg.jpg +0 -0
  458. package/src/assets/layout/images/pages/accessDenied.png +0 -0
  459. package/src/assets/layout/images/pages/error-bg.jpg +0 -0
  460. package/src/assets/layout/images/pages/error.png +0 -0
  461. package/src/assets/layout/images/pages/error2.png +0 -0
  462. package/src/assets/layout/images/pages/login-bg.jpg +0 -0
  463. package/src/assets/layout/images/vector_logo.png +0 -0
  464. package/src/assets/layout/images/widgets/asset-profile.png +0 -0
  465. package/src/assets/layout/images/widgets/feature-faq.svg +0 -0
  466. package/src/assets/layout/images/widgets/feature-onboarding.svg +0 -0
  467. package/src/assets/layout/images/widgets/feature-security.svg +0 -0
  468. package/src/assets/layout/images/widgets/image-blog.jpg +0 -0
  469. package/src/assets/layout/images/widgets/map.jpg +0 -0
  470. package/src/assets/layout/styles/layout/_animation.scss +0 -0
  471. package/src/assets/layout/styles/layout/_breadcrumb.scss +0 -0
  472. package/src/assets/layout/styles/layout/_config.scss +0 -0
  473. package/src/assets/layout/styles/layout/_content.scss +0 -0
  474. package/src/assets/layout/styles/layout/_fonts.scss +0 -0
  475. package/src/assets/layout/styles/layout/_footer.scss +0 -0
  476. package/src/assets/layout/styles/layout/_invoice.scss +0 -0
  477. package/src/assets/layout/styles/layout/_landing.scss +0 -0
  478. package/src/assets/layout/styles/layout/_main.scss +0 -0
  479. package/src/assets/layout/styles/layout/_megamenu.scss +0 -0
  480. package/src/assets/layout/styles/layout/_menuprofile.scss +0 -0
  481. package/src/assets/layout/styles/layout/_responsive.scss +0 -0
  482. package/src/assets/layout/styles/layout/_rightmenu.scss +0 -0
  483. package/src/assets/layout/styles/layout/_typography.scss +0 -0
  484. package/src/assets/layout/styles/layout/_utils.scss +0 -0
  485. package/src/assets/layout/styles/layout/layout.css +0 -0
  486. package/src/assets/layout/styles/layout/layout.scss +0 -0
  487. package/src/assets/layout/styles/layout/preloading.css +0 -0
  488. package/src/assets/layout/styles/layout/preloading.scss +0 -0
  489. package/src/assets/layout/styles/layout/sidebar/_sidebar.scss +0 -0
  490. package/src/assets/layout/styles/layout/sidebar/_sidebar_drawer.scss +0 -0
  491. package/src/assets/layout/styles/layout/sidebar/_sidebar_horizontal.scss +0 -0
  492. package/src/assets/layout/styles/layout/sidebar/_sidebar_reveal.scss +0 -0
  493. package/src/assets/layout/styles/layout/sidebar/_sidebar_slim.scss +0 -0
  494. package/src/assets/layout/styles/layout/sidebar/_sidebar_slim_plus.scss +0 -0
  495. package/src/assets/layout/styles/layout/sidebar/_sidebar_vertical.scss +0 -0
  496. package/src/assets/layout/styles/layout/sidebar/themes/_menu_bluegrey.scss +0 -0
  497. package/src/assets/layout/styles/layout/sidebar/themes/_menu_brown.scss +0 -0
  498. package/src/assets/layout/styles/layout/sidebar/themes/_menu_cyan.scss +0 -0
  499. package/src/assets/layout/styles/layout/sidebar/themes/_menu_dark.scss +0 -0
  500. package/src/assets/layout/styles/layout/sidebar/themes/_menu_deeporange.scss +0 -0
  501. package/src/assets/layout/styles/layout/sidebar/themes/_menu_deeppurple.scss +0 -0
  502. package/src/assets/layout/styles/layout/sidebar/themes/_menu_green.scss +0 -0
  503. package/src/assets/layout/styles/layout/sidebar/themes/_menu_indigo.scss +0 -0
  504. package/src/assets/layout/styles/layout/sidebar/themes/_menu_light.scss +0 -0
  505. package/src/assets/layout/styles/layout/sidebar/themes/_menu_pink.scss +0 -0
  506. package/src/assets/layout/styles/layout/sidebar/themes/_menu_purple.scss +0 -0
  507. package/src/assets/layout/styles/layout/sidebar/themes/_menu_teal.scss +0 -0
  508. package/src/assets/layout/styles/layout/topbar/_topbar.scss +0 -0
  509. package/src/assets/layout/styles/layout/topbar/_topbar_main.scss +0 -0
  510. package/src/assets/layout/styles/layout/topbar/themes/_topbar_amber.scss +0 -0
  511. package/src/assets/layout/styles/layout/topbar/themes/_topbar_blue.scss +0 -0
  512. package/src/assets/layout/styles/layout/topbar/themes/_topbar_bluegrey.scss +0 -0
  513. package/src/assets/layout/styles/layout/topbar/themes/_topbar_brown.scss +0 -0
  514. package/src/assets/layout/styles/layout/topbar/themes/_topbar_cyan.scss +0 -0
  515. package/src/assets/layout/styles/layout/topbar/themes/_topbar_dark.scss +0 -0
  516. package/src/assets/layout/styles/layout/topbar/themes/_topbar_deeporange.scss +0 -0
  517. package/src/assets/layout/styles/layout/topbar/themes/_topbar_deeppurple.scss +0 -0
  518. package/src/assets/layout/styles/layout/topbar/themes/_topbar_green.scss +0 -0
  519. package/src/assets/layout/styles/layout/topbar/themes/_topbar_grey.scss +0 -0
  520. package/src/assets/layout/styles/layout/topbar/themes/_topbar_indigo.scss +0 -0
  521. package/src/assets/layout/styles/layout/topbar/themes/_topbar_lightblue.scss +0 -0
  522. package/src/assets/layout/styles/layout/topbar/themes/_topbar_lightgreen.scss +0 -0
  523. package/src/assets/layout/styles/layout/topbar/themes/_topbar_lime.scss +0 -0
  524. package/src/assets/layout/styles/layout/topbar/themes/_topbar_orange.scss +0 -0
  525. package/src/assets/layout/styles/layout/topbar/themes/_topbar_pink.scss +0 -0
  526. package/src/assets/layout/styles/layout/topbar/themes/_topbar_purple.scss +0 -0
  527. package/src/assets/layout/styles/layout/topbar/themes/_topbar_teal.scss +0 -0
  528. package/src/assets/layout/styles/layout/topbar/themes/_topbar_white.scss +0 -0
  529. package/src/assets/layout/styles/layout/topbar/themes/_topbar_yellow.scss +0 -0
  530. package/src/assets/layout/styles/theme/_compact.scss +0 -0
  531. package/src/assets/layout/styles/theme/designer/_colors.scss +0 -0
  532. package/src/assets/layout/styles/theme/designer/_common.scss +0 -0
  533. package/src/assets/layout/styles/theme/designer/_components.scss +0 -0
  534. package/src/assets/layout/styles/theme/designer/_mixins.scss +0 -0
  535. package/src/assets/layout/styles/theme/designer/components/button/_button.scss +0 -0
  536. package/src/assets/layout/styles/theme/designer/components/button/_speeddial.scss +0 -0
  537. package/src/assets/layout/styles/theme/designer/components/button/_splitbutton.scss +0 -0
  538. package/src/assets/layout/styles/theme/designer/components/data/_carousel.scss +0 -0
  539. package/src/assets/layout/styles/theme/designer/components/data/_datatable.scss +0 -0
  540. package/src/assets/layout/styles/theme/designer/components/data/_dataview.scss +0 -0
  541. package/src/assets/layout/styles/theme/designer/components/data/_filter.scss +0 -0
  542. package/src/assets/layout/styles/theme/designer/components/data/_fullcalendar.scss +0 -0
  543. package/src/assets/layout/styles/theme/designer/components/data/_orderlist.scss +0 -0
  544. package/src/assets/layout/styles/theme/designer/components/data/_organizationchart.scss +0 -0
  545. package/src/assets/layout/styles/theme/designer/components/data/_paginator.scss +0 -0
  546. package/src/assets/layout/styles/theme/designer/components/data/_picklist.scss +0 -0
  547. package/src/assets/layout/styles/theme/designer/components/data/_timeline.scss +0 -0
  548. package/src/assets/layout/styles/theme/designer/components/data/_tree.scss +0 -0
  549. package/src/assets/layout/styles/theme/designer/components/data/_treetable.scss +0 -0
  550. package/src/assets/layout/styles/theme/designer/components/data/_virtualscroller.scss +0 -0
  551. package/src/assets/layout/styles/theme/designer/components/file/_fileupload.scss +0 -0
  552. package/src/assets/layout/styles/theme/designer/components/input/_autocomplete.scss +0 -0
  553. package/src/assets/layout/styles/theme/designer/components/input/_calendar.scss +0 -0
  554. package/src/assets/layout/styles/theme/designer/components/input/_cascadeselect.scss +0 -0
  555. package/src/assets/layout/styles/theme/designer/components/input/_checkbox.scss +0 -0
  556. package/src/assets/layout/styles/theme/designer/components/input/_chips.scss +0 -0
  557. package/src/assets/layout/styles/theme/designer/components/input/_colorpicker.scss +0 -0
  558. package/src/assets/layout/styles/theme/designer/components/input/_dropdown.scss +0 -0
  559. package/src/assets/layout/styles/theme/designer/components/input/_editor.scss +0 -0
  560. package/src/assets/layout/styles/theme/designer/components/input/_inputgroup.scss +0 -0
  561. package/src/assets/layout/styles/theme/designer/components/input/_inputmask.scss +0 -0
  562. package/src/assets/layout/styles/theme/designer/components/input/_inputnumber.scss +0 -0
  563. package/src/assets/layout/styles/theme/designer/components/input/_inputswitch.scss +0 -0
  564. package/src/assets/layout/styles/theme/designer/components/input/_inputtext.scss +0 -0
  565. package/src/assets/layout/styles/theme/designer/components/input/_listbox.scss +0 -0
  566. package/src/assets/layout/styles/theme/designer/components/input/_multiselect.scss +0 -0
  567. package/src/assets/layout/styles/theme/designer/components/input/_password.scss +0 -0
  568. package/src/assets/layout/styles/theme/designer/components/input/_radiobutton.scss +0 -0
  569. package/src/assets/layout/styles/theme/designer/components/input/_rating.scss +0 -0
  570. package/src/assets/layout/styles/theme/designer/components/input/_selectbutton.scss +0 -0
  571. package/src/assets/layout/styles/theme/designer/components/input/_slider.scss +0 -0
  572. package/src/assets/layout/styles/theme/designer/components/input/_togglebutton.scss +0 -0
  573. package/src/assets/layout/styles/theme/designer/components/input/_treeselect.scss +0 -0
  574. package/src/assets/layout/styles/theme/designer/components/menu/_breadcrumb.scss +0 -0
  575. package/src/assets/layout/styles/theme/designer/components/menu/_contextmenu.scss +0 -0
  576. package/src/assets/layout/styles/theme/designer/components/menu/_dock.scss +0 -0
  577. package/src/assets/layout/styles/theme/designer/components/menu/_megamenu.scss +0 -0
  578. package/src/assets/layout/styles/theme/designer/components/menu/_menu.scss +0 -0
  579. package/src/assets/layout/styles/theme/designer/components/menu/_menubar.scss +0 -0
  580. package/src/assets/layout/styles/theme/designer/components/menu/_panelmenu.scss +0 -0
  581. package/src/assets/layout/styles/theme/designer/components/menu/_slidemenu.scss +0 -0
  582. package/src/assets/layout/styles/theme/designer/components/menu/_steps.scss +0 -0
  583. package/src/assets/layout/styles/theme/designer/components/menu/_tabmenu.scss +0 -0
  584. package/src/assets/layout/styles/theme/designer/components/menu/_tieredmenu.scss +0 -0
  585. package/src/assets/layout/styles/theme/designer/components/messages/_inlinemessage.scss +0 -0
  586. package/src/assets/layout/styles/theme/designer/components/messages/_message.scss +0 -0
  587. package/src/assets/layout/styles/theme/designer/components/messages/_toast.scss +0 -0
  588. package/src/assets/layout/styles/theme/designer/components/misc/_avatar.scss +0 -0
  589. package/src/assets/layout/styles/theme/designer/components/misc/_badge.scss +0 -0
  590. package/src/assets/layout/styles/theme/designer/components/misc/_blockui.scss +0 -0
  591. package/src/assets/layout/styles/theme/designer/components/misc/_chip.scss +0 -0
  592. package/src/assets/layout/styles/theme/designer/components/misc/_inplace.scss +0 -0
  593. package/src/assets/layout/styles/theme/designer/components/misc/_progressbar.scss +0 -0
  594. package/src/assets/layout/styles/theme/designer/components/misc/_scrolltop.scss +0 -0
  595. package/src/assets/layout/styles/theme/designer/components/misc/_skeleton.scss +0 -0
  596. package/src/assets/layout/styles/theme/designer/components/misc/_tag.scss +0 -0
  597. package/src/assets/layout/styles/theme/designer/components/misc/_terminal.scss +0 -0
  598. package/src/assets/layout/styles/theme/designer/components/multimedia/_galleria.scss +0 -0
  599. package/src/assets/layout/styles/theme/designer/components/multimedia/_image.scss +0 -0
  600. package/src/assets/layout/styles/theme/designer/components/overlay/_confirmpopup.scss +0 -0
  601. package/src/assets/layout/styles/theme/designer/components/overlay/_dialog.scss +0 -0
  602. package/src/assets/layout/styles/theme/designer/components/overlay/_overlaypanel.scss +0 -0
  603. package/src/assets/layout/styles/theme/designer/components/overlay/_sidebar.scss +0 -0
  604. package/src/assets/layout/styles/theme/designer/components/overlay/_tooltip.scss +0 -0
  605. package/src/assets/layout/styles/theme/designer/components/panel/_accordion.scss +0 -0
  606. package/src/assets/layout/styles/theme/designer/components/panel/_card.scss +0 -0
  607. package/src/assets/layout/styles/theme/designer/components/panel/_divider.scss +0 -0
  608. package/src/assets/layout/styles/theme/designer/components/panel/_fieldset.scss +0 -0
  609. package/src/assets/layout/styles/theme/designer/components/panel/_panel.scss +0 -0
  610. package/src/assets/layout/styles/theme/designer/components/panel/_scrollpanel.scss +0 -0
  611. package/src/assets/layout/styles/theme/designer/components/panel/_splitter.scss +0 -0
  612. package/src/assets/layout/styles/theme/designer/components/panel/_tabview.scss +0 -0
  613. package/src/assets/layout/styles/theme/designer/components/panel/_toolbar.scss +0 -0
  614. package/src/assets/layout/styles/theme/extensions/_accordion.scss +0 -0
  615. package/src/assets/layout/styles/theme/extensions/_autocomplete.scss +0 -0
  616. package/src/assets/layout/styles/theme/extensions/_breadcrumb.scss +0 -0
  617. package/src/assets/layout/styles/theme/extensions/_button.scss +0 -0
  618. package/src/assets/layout/styles/theme/extensions/_calendar.scss +0 -0
  619. package/src/assets/layout/styles/theme/extensions/_carousel.scss +0 -0
  620. package/src/assets/layout/styles/theme/extensions/_cascadeselect.scss +0 -0
  621. package/src/assets/layout/styles/theme/extensions/_checkbox.scss +0 -0
  622. package/src/assets/layout/styles/theme/extensions/_chips.scss +0 -0
  623. package/src/assets/layout/styles/theme/extensions/_datatable.scss +0 -0
  624. package/src/assets/layout/styles/theme/extensions/_dropdown.scss +0 -0
  625. package/src/assets/layout/styles/theme/extensions/_fieldset.scss +0 -0
  626. package/src/assets/layout/styles/theme/extensions/_float_label.scss +0 -0
  627. package/src/assets/layout/styles/theme/extensions/_fullcalendar.scss +0 -0
  628. package/src/assets/layout/styles/theme/extensions/_galleria.scss +0 -0
  629. package/src/assets/layout/styles/theme/extensions/_input.scss +0 -0
  630. package/src/assets/layout/styles/theme/extensions/_inputgroup.scss +0 -0
  631. package/src/assets/layout/styles/theme/extensions/_inputmask.scss +0 -0
  632. package/src/assets/layout/styles/theme/extensions/_inputnumber.scss +0 -0
  633. package/src/assets/layout/styles/theme/extensions/_inputswitch.scss +0 -0
  634. package/src/assets/layout/styles/theme/extensions/_listbox.scss +0 -0
  635. package/src/assets/layout/styles/theme/extensions/_megamenu.scss +0 -0
  636. package/src/assets/layout/styles/theme/extensions/_menu.scss +0 -0
  637. package/src/assets/layout/styles/theme/extensions/_menubar.scss +0 -0
  638. package/src/assets/layout/styles/theme/extensions/_mixins.scss +0 -0
  639. package/src/assets/layout/styles/theme/extensions/_multiselect.scss +0 -0
  640. package/src/assets/layout/styles/theme/extensions/_orderlist.scss +0 -0
  641. package/src/assets/layout/styles/theme/extensions/_overlaypanel.scss +0 -0
  642. package/src/assets/layout/styles/theme/extensions/_paginator.scss +0 -0
  643. package/src/assets/layout/styles/theme/extensions/_panel.scss +0 -0
  644. package/src/assets/layout/styles/theme/extensions/_panelmenu.scss +0 -0
  645. package/src/assets/layout/styles/theme/extensions/_picklist.scss +0 -0
  646. package/src/assets/layout/styles/theme/extensions/_progressbar.scss +0 -0
  647. package/src/assets/layout/styles/theme/extensions/_radiobutton.scss +0 -0
  648. package/src/assets/layout/styles/theme/extensions/_rating.scss +0 -0
  649. package/src/assets/layout/styles/theme/extensions/_selectbutton.scss +0 -0
  650. package/src/assets/layout/styles/theme/extensions/_slidemenu.scss +0 -0
  651. package/src/assets/layout/styles/theme/extensions/_slider.scss +0 -0
  652. package/src/assets/layout/styles/theme/extensions/_steps.scss +0 -0
  653. package/src/assets/layout/styles/theme/extensions/_tabmenu.scss +0 -0
  654. package/src/assets/layout/styles/theme/extensions/_tabview.scss +0 -0
  655. package/src/assets/layout/styles/theme/extensions/_tieredmenu.scss +0 -0
  656. package/src/assets/layout/styles/theme/extensions/_timeline.scss +0 -0
  657. package/src/assets/layout/styles/theme/extensions/_togglebutton.scss +0 -0
  658. package/src/assets/layout/styles/theme/extensions/_toolbar.scss +0 -0
  659. package/src/assets/layout/styles/theme/extensions/_tooltip.scss +0 -0
  660. package/src/assets/layout/styles/theme/extensions/_tree.scss +0 -0
  661. package/src/assets/layout/styles/theme/extensions/_treeselect.scss +0 -0
  662. package/src/assets/layout/styles/theme/extensions/_treetable.scss +0 -0
  663. package/src/assets/layout/styles/theme/extensions/_vendor_extensions.scss +0 -0
  664. package/src/assets/layout/styles/theme/theme-dark/_variables.scss +0 -0
  665. package/src/assets/layout/styles/theme/theme-dark/amber/theme.css +0 -0
  666. package/src/assets/layout/styles/theme/theme-dark/amber/theme.scss +0 -0
  667. package/src/assets/layout/styles/theme/theme-dark/blue/theme.css +0 -0
  668. package/src/assets/layout/styles/theme/theme-dark/blue/theme.scss +0 -0
  669. package/src/assets/layout/styles/theme/theme-dark/bluegrey/theme.css +0 -0
  670. package/src/assets/layout/styles/theme/theme-dark/bluegrey/theme.scss +0 -0
  671. package/src/assets/layout/styles/theme/theme-dark/brown/theme.css +0 -0
  672. package/src/assets/layout/styles/theme/theme-dark/brown/theme.scss +0 -0
  673. package/src/assets/layout/styles/theme/theme-dark/cyan/theme.css +0 -0
  674. package/src/assets/layout/styles/theme/theme-dark/cyan/theme.scss +0 -0
  675. package/src/assets/layout/styles/theme/theme-dark/deeporange/theme.css +0 -0
  676. package/src/assets/layout/styles/theme/theme-dark/deeporange/theme.scss +0 -0
  677. package/src/assets/layout/styles/theme/theme-dark/deeppurple/theme.css +0 -0
  678. package/src/assets/layout/styles/theme/theme-dark/deeppurple/theme.scss +0 -0
  679. package/src/assets/layout/styles/theme/theme-dark/green/theme.css +0 -0
  680. package/src/assets/layout/styles/theme/theme-dark/green/theme.scss +0 -0
  681. package/src/assets/layout/styles/theme/theme-dark/indigo/theme.css +0 -0
  682. package/src/assets/layout/styles/theme/theme-dark/indigo/theme.scss +0 -0
  683. package/src/assets/layout/styles/theme/theme-dark/lightblue/theme.css +0 -0
  684. package/src/assets/layout/styles/theme/theme-dark/lightblue/theme.scss +0 -0
  685. package/src/assets/layout/styles/theme/theme-dark/lightgreen/theme.css +0 -0
  686. package/src/assets/layout/styles/theme/theme-dark/lightgreen/theme.scss +0 -0
  687. package/src/assets/layout/styles/theme/theme-dark/lime/theme.css +0 -0
  688. package/src/assets/layout/styles/theme/theme-dark/lime/theme.scss +0 -0
  689. package/src/assets/layout/styles/theme/theme-dark/orange/theme.css +0 -0
  690. package/src/assets/layout/styles/theme/theme-dark/orange/theme.scss +0 -0
  691. package/src/assets/layout/styles/theme/theme-dark/pink/theme.css +0 -0
  692. package/src/assets/layout/styles/theme/theme-dark/pink/theme.scss +0 -0
  693. package/src/assets/layout/styles/theme/theme-dark/purple/theme.css +0 -0
  694. package/src/assets/layout/styles/theme/theme-dark/purple/theme.scss +0 -0
  695. package/src/assets/layout/styles/theme/theme-dark/teal/theme.css +0 -0
  696. package/src/assets/layout/styles/theme/theme-dark/teal/theme.scss +0 -0
  697. package/src/assets/layout/styles/theme/theme-dark/yellow/theme.css +0 -0
  698. package/src/assets/layout/styles/theme/theme-dark/yellow/theme.scss +0 -0
  699. package/src/assets/layout/styles/theme/theme-light/_variables.scss +0 -0
  700. package/src/assets/layout/styles/theme/theme-light/amber/theme.css +0 -0
  701. package/src/assets/layout/styles/theme/theme-light/amber/theme.scss +0 -0
  702. package/src/assets/layout/styles/theme/theme-light/blue/theme.css +0 -0
  703. package/src/assets/layout/styles/theme/theme-light/blue/theme.scss +0 -0
  704. package/src/assets/layout/styles/theme/theme-light/bluegrey/theme.css +0 -0
  705. package/src/assets/layout/styles/theme/theme-light/bluegrey/theme.scss +0 -0
  706. package/src/assets/layout/styles/theme/theme-light/brown/theme.css +0 -0
  707. package/src/assets/layout/styles/theme/theme-light/brown/theme.scss +0 -0
  708. package/src/assets/layout/styles/theme/theme-light/cyan/theme.css +0 -0
  709. package/src/assets/layout/styles/theme/theme-light/cyan/theme.scss +0 -0
  710. package/src/assets/layout/styles/theme/theme-light/deeporange/theme.css +0 -0
  711. package/src/assets/layout/styles/theme/theme-light/deeporange/theme.scss +0 -0
  712. package/src/assets/layout/styles/theme/theme-light/deeppurple/theme.css +0 -0
  713. package/src/assets/layout/styles/theme/theme-light/deeppurple/theme.scss +0 -0
  714. package/src/assets/layout/styles/theme/theme-light/green/theme.css +0 -0
  715. package/src/assets/layout/styles/theme/theme-light/green/theme.scss +0 -0
  716. package/src/assets/layout/styles/theme/theme-light/indigo/theme.css +0 -0
  717. package/src/assets/layout/styles/theme/theme-light/indigo/theme.scss +0 -0
  718. package/src/assets/layout/styles/theme/theme-light/lightblue/theme.css +0 -0
  719. package/src/assets/layout/styles/theme/theme-light/lightblue/theme.scss +0 -0
  720. package/src/assets/layout/styles/theme/theme-light/lightgreen/theme.css +0 -0
  721. package/src/assets/layout/styles/theme/theme-light/lightgreen/theme.scss +0 -0
  722. package/src/assets/layout/styles/theme/theme-light/lime/theme.css +0 -0
  723. package/src/assets/layout/styles/theme/theme-light/lime/theme.scss +0 -0
  724. package/src/assets/layout/styles/theme/theme-light/orange/theme.css +0 -0
  725. package/src/assets/layout/styles/theme/theme-light/orange/theme.scss +0 -0
  726. package/src/assets/layout/styles/theme/theme-light/pink/theme.css +0 -0
  727. package/src/assets/layout/styles/theme/theme-light/pink/theme.scss +0 -0
  728. package/src/assets/layout/styles/theme/theme-light/purple/theme.css +0 -0
  729. package/src/assets/layout/styles/theme/theme-light/purple/theme.scss +0 -0
  730. package/src/assets/layout/styles/theme/theme-light/teal/theme.css +0 -0
  731. package/src/assets/layout/styles/theme/theme-light/teal/theme.scss +0 -0
  732. package/src/assets/layout/styles/theme/theme-light/yellow/theme.css +0 -0
  733. package/src/assets/layout/styles/theme/theme-light/yellow/theme.scss +0 -0
  734. package/src/assets/theme/uniondinamic/layout-light.css +0 -0
  735. package/src/assets/theme/uniondinamic/theme-light.css +0 -0
  736. package/src/styles/primeflex/primeflex.scss +0 -0
  737. package/src/styles/primeng/layout/fonts/poppins-v20-latin-300.woff +0 -0
  738. package/src/styles/primeng/layout/fonts/poppins-v20-latin-300.woff2 +0 -0
  739. package/src/styles/primeng/layout/fonts/poppins-v20-latin-500.woff +0 -0
  740. package/src/styles/primeng/layout/fonts/poppins-v20-latin-500.woff2 +0 -0
  741. package/src/styles/primeng/layout/fonts/poppins-v20-latin-600.woff +0 -0
  742. package/src/styles/primeng/layout/fonts/poppins-v20-latin-600.woff2 +0 -0
  743. package/src/styles/primeng/layout/fonts/poppins-v20-latin-700.woff +0 -0
  744. package/src/styles/primeng/layout/fonts/poppins-v20-latin-700.woff2 +0 -0
  745. package/src/styles/primeng/layout/fonts/poppins-v20-latin-regular.woff +0 -0
  746. package/src/styles/primeng/layout/fonts/poppins-v20-latin-regular.woff2 +0 -0
  747. package/src/styles/primeng/layout/layout-dark.scss +0 -0
  748. package/src/styles/primeng/layout/layout-light.scss +0 -0
  749. package/src/styles/primeng/sass/_fonts.scss +0 -0
  750. package/src/styles/primeng/sass/layout/_animation.scss +0 -0
  751. package/src/styles/primeng/sass/layout/_breadcrumb.scss +0 -0
  752. package/src/styles/primeng/sass/layout/_config.scss +0 -0
  753. package/src/styles/primeng/sass/layout/_dashboard.scss +0 -0
  754. package/src/styles/primeng/sass/layout/_footer.scss +0 -0
  755. package/src/styles/primeng/sass/layout/_help.scss +0 -0
  756. package/src/styles/primeng/sass/layout/_invoice.scss +0 -0
  757. package/src/styles/primeng/sass/layout/_landing.scss +0 -0
  758. package/src/styles/primeng/sass/layout/_loader.scss +0 -0
  759. package/src/styles/primeng/sass/layout/_main.scss +0 -0
  760. package/src/styles/primeng/sass/layout/_megamenu.scss +0 -0
  761. package/src/styles/primeng/sass/layout/_mixins.scss +0 -0
  762. package/src/styles/primeng/sass/layout/_pages.scss +0 -0
  763. package/src/styles/primeng/sass/layout/_rightmenu.scss +0 -0
  764. package/src/styles/primeng/sass/layout/_rtl.scss +0 -0
  765. package/src/styles/primeng/sass/layout/_typography.scss +0 -0
  766. package/src/styles/primeng/sass/layout/_utils.scss +0 -0
  767. package/src/styles/primeng/sass/layout/_widgets.scss +0 -0
  768. package/src/styles/primeng/sass/layout/_wizard.scss +0 -0
  769. package/src/styles/primeng/sass/layout/core/_layout.scss +0 -0
  770. package/src/styles/primeng/sass/layout/core/_layout_dark.scss +0 -0
  771. package/src/styles/primeng/sass/layout/core/_layout_light.scss +0 -0
  772. package/src/styles/primeng/sass/layout/menu/_inline_menu.scss +0 -0
  773. package/src/styles/primeng/sass/layout/menu/_menu.scss +0 -0
  774. package/src/styles/primeng/sass/layout/menu/_menu_common.scss +0 -0
  775. package/src/styles/primeng/sass/layout/menu/_menu_exports.scss +0 -0
  776. package/src/styles/primeng/sass/layout/menu/_menu_horizontal.scss +0 -0
  777. package/src/styles/primeng/sass/layout/menu/_menu_overlay.scss +0 -0
  778. package/src/styles/primeng/sass/layout/menu/_menu_responsive.scss +0 -0
  779. package/src/styles/primeng/sass/layout/menu/_menu_slim.scss +0 -0
  780. package/src/styles/primeng/sass/layout/menu/_menu_static.scss +0 -0
  781. package/src/styles/primeng/sass/layout/menu/_menu_theme.scss +0 -0
  782. package/src/styles/primeng/sass/layout/menu/_rtl_menu.scss +0 -0
  783. package/src/styles/primeng/sass/layout/menu/themes/_menu_bluegrey.scss +0 -0
  784. package/src/styles/primeng/sass/layout/menu/themes/_menu_brown.scss +0 -0
  785. package/src/styles/primeng/sass/layout/menu/themes/_menu_cyan.scss +0 -0
  786. package/src/styles/primeng/sass/layout/menu/themes/_menu_dark.scss +0 -0
  787. package/src/styles/primeng/sass/layout/menu/themes/_menu_deeporange.scss +0 -0
  788. package/src/styles/primeng/sass/layout/menu/themes/_menu_deeppurple.scss +0 -0
  789. package/src/styles/primeng/sass/layout/menu/themes/_menu_green.scss +0 -0
  790. package/src/styles/primeng/sass/layout/menu/themes/_menu_indigo.scss +0 -0
  791. package/src/styles/primeng/sass/layout/menu/themes/_menu_light.scss +0 -0
  792. package/src/styles/primeng/sass/layout/menu/themes/_menu_pink.scss +0 -0
  793. package/src/styles/primeng/sass/layout/menu/themes/_menu_purple.scss +0 -0
  794. package/src/styles/primeng/sass/layout/menu/themes/_menu_teal.scss +0 -0
  795. package/src/styles/primeng/sass/layout/topbar/_rtl_topbar.scss +0 -0
  796. package/src/styles/primeng/sass/layout/topbar/_topbar.scss +0 -0
  797. package/src/styles/primeng/sass/layout/topbar/_topbar_common.scss +0 -0
  798. package/src/styles/primeng/sass/layout/topbar/_topbar_exports.scss +0 -0
  799. package/src/styles/primeng/sass/layout/topbar/_topbar_responsive.scss +0 -0
  800. package/src/styles/primeng/sass/layout/topbar/_topbar_theme.scss +0 -0
  801. package/src/styles/primeng/sass/layout/topbar/themes/_topbar_amber.scss +0 -0
  802. package/src/styles/primeng/sass/layout/topbar/themes/_topbar_blue.scss +0 -0
  803. package/src/styles/primeng/sass/layout/topbar/themes/_topbar_bluegrey.scss +0 -0
  804. package/src/styles/primeng/sass/layout/topbar/themes/_topbar_brown.scss +0 -0
  805. package/src/styles/primeng/sass/layout/topbar/themes/_topbar_custom.scss +0 -0
  806. package/src/styles/primeng/sass/layout/topbar/themes/_topbar_cyan.scss +0 -0
  807. package/src/styles/primeng/sass/layout/topbar/themes/_topbar_dark.scss +0 -0
  808. package/src/styles/primeng/sass/layout/topbar/themes/_topbar_deeporange.scss +0 -0
  809. package/src/styles/primeng/sass/layout/topbar/themes/_topbar_deeppurple.scss +0 -0
  810. package/src/styles/primeng/sass/layout/topbar/themes/_topbar_green.scss +0 -0
  811. package/src/styles/primeng/sass/layout/topbar/themes/_topbar_grey.scss +0 -0
  812. package/src/styles/primeng/sass/layout/topbar/themes/_topbar_indigo.scss +0 -0
  813. package/src/styles/primeng/sass/layout/topbar/themes/_topbar_lightblue.scss +0 -0
  814. package/src/styles/primeng/sass/layout/topbar/themes/_topbar_lightgreen.scss +0 -0
  815. package/src/styles/primeng/sass/layout/topbar/themes/_topbar_lime.scss +0 -0
  816. package/src/styles/primeng/sass/layout/topbar/themes/_topbar_orange.scss +0 -0
  817. package/src/styles/primeng/sass/layout/topbar/themes/_topbar_pink.scss +0 -0
  818. package/src/styles/primeng/sass/layout/topbar/themes/_topbar_purple.scss +0 -0
  819. package/src/styles/primeng/sass/layout/topbar/themes/_topbar_teal.scss +0 -0
  820. package/src/styles/primeng/sass/layout/topbar/themes/_topbar_white.scss +0 -0
  821. package/src/styles/primeng/sass/layout/topbar/themes/_topbar_yellow.scss +0 -0
  822. package/src/styles/primeng/sass/overrides/_layout_styles.scss +0 -0
  823. package/src/styles/primeng/sass/overrides/_layout_variables.scss +0 -0
  824. package/src/styles/primeng/sass/overrides/_theme_styles.scss +81 -139
  825. package/src/styles/primeng/sass/overrides/_theme_styles_dark.scss +96 -237
  826. package/src/styles/primeng/sass/overrides/_theme_variables.scss +0 -0
  827. package/src/styles/primeng/sass/theme/_compact.scss +0 -0
  828. package/src/styles/primeng/sass/theme/_theme_dark.scss +0 -0
  829. package/src/styles/primeng/sass/theme/_theme_light.scss +0 -0
  830. package/src/styles/primeng/sass/theme/designer/_colors.scss +0 -0
  831. package/src/styles/primeng/sass/theme/designer/_common.scss +0 -0
  832. package/src/styles/primeng/sass/theme/designer/_components.scss +0 -0
  833. package/src/styles/primeng/sass/theme/designer/_mixins.scss +0 -0
  834. package/src/styles/primeng/sass/theme/designer/components/button/_button.scss +0 -0
  835. package/src/styles/primeng/sass/theme/designer/components/button/_speeddial.scss +0 -0
  836. package/src/styles/primeng/sass/theme/designer/components/button/_splitbutton.scss +0 -0
  837. package/src/styles/primeng/sass/theme/designer/components/data/_carousel.scss +0 -0
  838. package/src/styles/primeng/sass/theme/designer/components/data/_datatable.scss +0 -0
  839. package/src/styles/primeng/sass/theme/designer/components/data/_dataview.scss +0 -0
  840. package/src/styles/primeng/sass/theme/designer/components/data/_filter.scss +0 -0
  841. package/src/styles/primeng/sass/theme/designer/components/data/_fullcalendar.scss +0 -0
  842. package/src/styles/primeng/sass/theme/designer/components/data/_orderlist.scss +0 -0
  843. package/src/styles/primeng/sass/theme/designer/components/data/_organizationchart.scss +0 -0
  844. package/src/styles/primeng/sass/theme/designer/components/data/_paginator.scss +0 -0
  845. package/src/styles/primeng/sass/theme/designer/components/data/_picklist.scss +0 -0
  846. package/src/styles/primeng/sass/theme/designer/components/data/_timeline.scss +0 -0
  847. package/src/styles/primeng/sass/theme/designer/components/data/_tree.scss +0 -0
  848. package/src/styles/primeng/sass/theme/designer/components/data/_treetable.scss +0 -0
  849. package/src/styles/primeng/sass/theme/designer/components/data/_virtualscroller.scss +0 -0
  850. package/src/styles/primeng/sass/theme/designer/components/file/_fileupload.scss +0 -0
  851. package/src/styles/primeng/sass/theme/designer/components/input/_autocomplete.scss +0 -0
  852. package/src/styles/primeng/sass/theme/designer/components/input/_calendar.scss +0 -0
  853. package/src/styles/primeng/sass/theme/designer/components/input/_cascadeselect.scss +0 -0
  854. package/src/styles/primeng/sass/theme/designer/components/input/_checkbox.scss +0 -0
  855. package/src/styles/primeng/sass/theme/designer/components/input/_chips.scss +0 -0
  856. package/src/styles/primeng/sass/theme/designer/components/input/_colorpicker.scss +0 -0
  857. package/src/styles/primeng/sass/theme/designer/components/input/_dropdown.scss +0 -0
  858. package/src/styles/primeng/sass/theme/designer/components/input/_editor.scss +0 -0
  859. package/src/styles/primeng/sass/theme/designer/components/input/_inputgroup.scss +0 -0
  860. package/src/styles/primeng/sass/theme/designer/components/input/_inputmask.scss +0 -0
  861. package/src/styles/primeng/sass/theme/designer/components/input/_inputnumber.scss +0 -0
  862. package/src/styles/primeng/sass/theme/designer/components/input/_inputswitch.scss +0 -0
  863. package/src/styles/primeng/sass/theme/designer/components/input/_inputtext.scss +0 -0
  864. package/src/styles/primeng/sass/theme/designer/components/input/_listbox.scss +0 -0
  865. package/src/styles/primeng/sass/theme/designer/components/input/_multiselect.scss +0 -0
  866. package/src/styles/primeng/sass/theme/designer/components/input/_password.scss +0 -0
  867. package/src/styles/primeng/sass/theme/designer/components/input/_radiobutton.scss +0 -0
  868. package/src/styles/primeng/sass/theme/designer/components/input/_rating.scss +0 -0
  869. package/src/styles/primeng/sass/theme/designer/components/input/_selectbutton.scss +0 -0
  870. package/src/styles/primeng/sass/theme/designer/components/input/_slider.scss +0 -0
  871. package/src/styles/primeng/sass/theme/designer/components/input/_togglebutton.scss +0 -0
  872. package/src/styles/primeng/sass/theme/designer/components/input/_treeselect.scss +0 -0
  873. package/src/styles/primeng/sass/theme/designer/components/menu/_breadcrumb.scss +0 -0
  874. package/src/styles/primeng/sass/theme/designer/components/menu/_contextmenu.scss +0 -0
  875. package/src/styles/primeng/sass/theme/designer/components/menu/_dock.scss +0 -0
  876. package/src/styles/primeng/sass/theme/designer/components/menu/_megamenu.scss +0 -0
  877. package/src/styles/primeng/sass/theme/designer/components/menu/_menu.scss +0 -0
  878. package/src/styles/primeng/sass/theme/designer/components/menu/_menubar.scss +0 -0
  879. package/src/styles/primeng/sass/theme/designer/components/menu/_panelmenu.scss +0 -0
  880. package/src/styles/primeng/sass/theme/designer/components/menu/_slidemenu.scss +0 -0
  881. package/src/styles/primeng/sass/theme/designer/components/menu/_steps.scss +0 -0
  882. package/src/styles/primeng/sass/theme/designer/components/menu/_tabmenu.scss +0 -0
  883. package/src/styles/primeng/sass/theme/designer/components/menu/_tieredmenu.scss +0 -0
  884. package/src/styles/primeng/sass/theme/designer/components/messages/_inlinemessage.scss +0 -0
  885. package/src/styles/primeng/sass/theme/designer/components/messages/_message.scss +0 -0
  886. package/src/styles/primeng/sass/theme/designer/components/messages/_toast.scss +0 -0
  887. package/src/styles/primeng/sass/theme/designer/components/misc/_avatar.scss +0 -0
  888. package/src/styles/primeng/sass/theme/designer/components/misc/_badge.scss +0 -0
  889. package/src/styles/primeng/sass/theme/designer/components/misc/_blockui.scss +0 -0
  890. package/src/styles/primeng/sass/theme/designer/components/misc/_chip.scss +0 -0
  891. package/src/styles/primeng/sass/theme/designer/components/misc/_inplace.scss +0 -0
  892. package/src/styles/primeng/sass/theme/designer/components/misc/_progressbar.scss +0 -0
  893. package/src/styles/primeng/sass/theme/designer/components/misc/_scrolltop.scss +0 -0
  894. package/src/styles/primeng/sass/theme/designer/components/misc/_skeleton.scss +0 -0
  895. package/src/styles/primeng/sass/theme/designer/components/misc/_tag.scss +0 -0
  896. package/src/styles/primeng/sass/theme/designer/components/misc/_terminal.scss +0 -0
  897. package/src/styles/primeng/sass/theme/designer/components/multimedia/_galleria.scss +0 -0
  898. package/src/styles/primeng/sass/theme/designer/components/multimedia/_image.scss +0 -0
  899. package/src/styles/primeng/sass/theme/designer/components/overlay/_confirmpopup.scss +0 -0
  900. package/src/styles/primeng/sass/theme/designer/components/overlay/_dialog.scss +0 -0
  901. package/src/styles/primeng/sass/theme/designer/components/overlay/_overlaypanel.scss +0 -0
  902. package/src/styles/primeng/sass/theme/designer/components/overlay/_sidebar.scss +0 -0
  903. package/src/styles/primeng/sass/theme/designer/components/overlay/_tooltip.scss +0 -0
  904. package/src/styles/primeng/sass/theme/designer/components/panel/_accordion.scss +0 -0
  905. package/src/styles/primeng/sass/theme/designer/components/panel/_card.scss +0 -0
  906. package/src/styles/primeng/sass/theme/designer/components/panel/_divider.scss +0 -0
  907. package/src/styles/primeng/sass/theme/designer/components/panel/_fieldset.scss +0 -0
  908. package/src/styles/primeng/sass/theme/designer/components/panel/_panel.scss +0 -0
  909. package/src/styles/primeng/sass/theme/designer/components/panel/_scrollpanel.scss +0 -0
  910. package/src/styles/primeng/sass/theme/designer/components/panel/_splitter.scss +0 -0
  911. package/src/styles/primeng/sass/theme/designer/components/panel/_tabview.scss +0 -0
  912. package/src/styles/primeng/sass/theme/designer/components/panel/_toolbar.scss +0 -0
  913. package/src/styles/primeng/sass/theme/extensions/_accordion.scss +0 -0
  914. package/src/styles/primeng/sass/theme/extensions/_autocomplete.scss +0 -0
  915. package/src/styles/primeng/sass/theme/extensions/_breadcrumb.scss +0 -0
  916. package/src/styles/primeng/sass/theme/extensions/_button.scss +0 -0
  917. package/src/styles/primeng/sass/theme/extensions/_calendar.scss +0 -0
  918. package/src/styles/primeng/sass/theme/extensions/_carousel.scss +0 -0
  919. package/src/styles/primeng/sass/theme/extensions/_cascadeselect.scss +0 -0
  920. package/src/styles/primeng/sass/theme/extensions/_checkbox.scss +0 -0
  921. package/src/styles/primeng/sass/theme/extensions/_chips.scss +0 -0
  922. package/src/styles/primeng/sass/theme/extensions/_datatable.scss +0 -0
  923. package/src/styles/primeng/sass/theme/extensions/_dropdown.scss +0 -0
  924. package/src/styles/primeng/sass/theme/extensions/_fieldset.scss +0 -0
  925. package/src/styles/primeng/sass/theme/extensions/_float_label.scss +0 -0
  926. package/src/styles/primeng/sass/theme/extensions/_fullcalendar.scss +0 -0
  927. package/src/styles/primeng/sass/theme/extensions/_galleria.scss +0 -0
  928. package/src/styles/primeng/sass/theme/extensions/_input.scss +0 -0
  929. package/src/styles/primeng/sass/theme/extensions/_inputgroup.scss +0 -0
  930. package/src/styles/primeng/sass/theme/extensions/_inputmask.scss +0 -0
  931. package/src/styles/primeng/sass/theme/extensions/_inputnumber.scss +0 -0
  932. package/src/styles/primeng/sass/theme/extensions/_inputswitch.scss +0 -0
  933. package/src/styles/primeng/sass/theme/extensions/_listbox.scss +0 -0
  934. package/src/styles/primeng/sass/theme/extensions/_megamenu.scss +0 -0
  935. package/src/styles/primeng/sass/theme/extensions/_menu.scss +0 -0
  936. package/src/styles/primeng/sass/theme/extensions/_menubar.scss +0 -0
  937. package/src/styles/primeng/sass/theme/extensions/_mixins.scss +0 -0
  938. package/src/styles/primeng/sass/theme/extensions/_multiselect.scss +0 -0
  939. package/src/styles/primeng/sass/theme/extensions/_orderlist.scss +0 -0
  940. package/src/styles/primeng/sass/theme/extensions/_overlaypanel.scss +0 -0
  941. package/src/styles/primeng/sass/theme/extensions/_paginator.scss +0 -0
  942. package/src/styles/primeng/sass/theme/extensions/_panel.scss +0 -0
  943. package/src/styles/primeng/sass/theme/extensions/_panelmenu.scss +0 -0
  944. package/src/styles/primeng/sass/theme/extensions/_picklist.scss +0 -0
  945. package/src/styles/primeng/sass/theme/extensions/_progressbar.scss +0 -0
  946. package/src/styles/primeng/sass/theme/extensions/_radiobutton.scss +0 -0
  947. package/src/styles/primeng/sass/theme/extensions/_rating.scss +0 -0
  948. package/src/styles/primeng/sass/theme/extensions/_selectbutton.scss +0 -0
  949. package/src/styles/primeng/sass/theme/extensions/_slidemenu.scss +0 -0
  950. package/src/styles/primeng/sass/theme/extensions/_slider.scss +0 -0
  951. package/src/styles/primeng/sass/theme/extensions/_steps.scss +0 -0
  952. package/src/styles/primeng/sass/theme/extensions/_tabmenu.scss +0 -0
  953. package/src/styles/primeng/sass/theme/extensions/_tabview.scss +0 -0
  954. package/src/styles/primeng/sass/theme/extensions/_tieredmenu.scss +0 -0
  955. package/src/styles/primeng/sass/theme/extensions/_timeline.scss +0 -0
  956. package/src/styles/primeng/sass/theme/extensions/_togglebutton.scss +0 -0
  957. package/src/styles/primeng/sass/theme/extensions/_toolbar.scss +0 -0
  958. package/src/styles/primeng/sass/theme/extensions/_tooltip.scss +0 -0
  959. package/src/styles/primeng/sass/theme/extensions/_tree.scss +0 -0
  960. package/src/styles/primeng/sass/theme/extensions/_treeselect.scss +0 -0
  961. package/src/styles/primeng/sass/theme/extensions/_treetable.scss +0 -0
  962. package/src/styles/primeng/sass/theme/extensions/_vendor_extensions.scss +0 -0
  963. package/src/styles/primeng/sass/variables/layout/_layout_common.scss +0 -0
  964. package/src/styles/primeng/sass/variables/layout/_layout_dark.scss +0 -0
  965. package/src/styles/primeng/sass/variables/layout/_layout_light.scss +0 -0
  966. package/src/styles/primeng/sass/variables/theme/_theme_dark.scss +0 -0
  967. package/src/styles/primeng/sass/variables/theme/_theme_light.scss +0 -0
  968. package/src/styles/primeng/theme/theme-dark.scss +0 -0
  969. package/src/styles/primeng/theme/theme-light.scss +0 -0
  970. package/src/styles/sass/_mixins.scss +0 -0
  971. package/src/styles/sass/_variables.scss +0 -0
  972. package/src/styles/sass/mixins/_breakpoints.scss +0 -0
  973. package/src/styles/sass/mixins/_colors.scss +0 -0
  974. package/src/styles/sass/pages/_general.scss +0 -0
  975. package/src/styles/sass/pages/_listado.scss +0 -0
  976. package/src/styles-dark.scss +0 -0
  977. package/src/styles.scss +1 -1
  978. package/esm2022/src/app/core/componentes/template-tabla-vacia/template-tabla-vacia.component.mjs +0 -21
  979. package/esm2022/src/app/core/servicios/click-posicion.service.mjs +0 -20
  980. package/esm2022/src/app/seguridad/modelos/CorreoOrgEmpModModel.mjs +0 -9
  981. package/src/app/core/componentes/template-tabla-vacia/template-tabla-vacia.component.d.ts +0 -9
  982. package/src/app/core/servicios/click-posicion.service.d.ts +0 -11
  983. package/src/app/seguridad/modelos/CorreoOrgEmpModModel.d.ts +0 -8
  984. package/src/assets/images/not-found.webp +0 -0
  985. package/src/assets/images/temaClaro/no-info.webp +0 -0
  986. package/src/assets/images/temaOscuro/no-info.webp +0 -0
  987. package/src/assets/images/time-out.webp +0 -0
@@ -24,7 +24,6 @@ import { FiltroGeneralComponent } from '../../../../core/componentes/filtro-gene
24
24
  import { CommonModule, DatePipe } from '@angular/common';
25
25
  import { ButtonModule } from 'primeng/button';
26
26
  import { FormsModule, ReactiveFormsModule } from '@angular/forms';
27
- import { TemplateTablaVaciaComponent } from '../../../../core/componentes/template-tabla-vacia/template-tabla-vacia.component';
28
27
  import * as i0 from "@angular/core";
29
28
  import * as i1 from "../../../../shared/servicios/general.service";
30
29
  import * as i2 from "../../../../core/servicios/data-exporter-table.utils";
@@ -102,12 +101,9 @@ export class ImportarFuenteConComponent {
102
101
  llaveProcesoCargueFuenteBD;
103
102
  campos = [];
104
103
  cols;
105
- cols2;
106
104
  exportColumns;
107
- exportColumns2;
108
105
  estadoRegresar = null;
109
106
  columnasExportExcel = ['codigo', 'unicaLinea', 'mensajeErrores'];
110
- columnasExportExcel2 = ['numero', 'linea', 'mensaje'];
111
107
  paginator = {
112
108
  rows: 10,
113
109
  totalRecords: 0,
@@ -178,12 +174,6 @@ export class ImportarFuenteConComponent {
178
174
  { field: 'mensajeErrores', header: this.translateService.instant('advertencia') },
179
175
  ];
180
176
  this.exportColumns = this.cols.map(col => ({ title: col.header, dataKey: col.field }));
181
- this.cols2 = [
182
- { field: 'numero', header: this.translateService.instant('numerolinea'), customExportHeader: 'Prueba' },
183
- { field: 'linea', header: this.translateService.instant('linea') },
184
- { field: 'mensaje', header: this.translateService.instant('mensaje') },
185
- ];
186
- this.exportColumns2 = this.cols2.map(col => ({ title: col.header, dataKey: col.field }));
187
177
  }
188
178
  traerFuente() {
189
179
  if (!this.parametrosNavegacionService.getParametros()) {
@@ -578,11 +568,11 @@ export class ImportarFuenteConComponent {
578
568
  return this.fuenteDTO != null && this.fuenteDTO.separador != null && this.fuenteDTO.separador != this.fuentePipe.SIN_SEPARADOR;
579
569
  }
580
570
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: ImportarFuenteConComponent, deps: [{ token: i1.GeneralService }, { token: i2.DataExporter }, { token: i3.AuthService }, { token: i4.FuentePipe }, { token: i5.CargueLineaService }, { token: i6.ToastService }, { token: i7.ConfirmationService }, { token: i8.MenuService }, { token: i9.GeneralPipe }, { token: i10.UtilsService }, { token: i11.ParametrosNavegacionService }, { token: i12.TranslateService }], target: i0.ɵɵFactoryTarget.Component });
581
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.4", type: ImportarFuenteConComponent, isStandalone: true, selector: "app-importar-fuente-con", outputs: { regresarFuente: "regresarFuente" }, providers: [DataExporter, MessageService, ConfirmationService], viewQueries: [{ propertyName: "formulario", first: true, predicate: ["formulario"], descendants: true }, { propertyName: "tabla", first: true, predicate: ["tablaDatos"], descendants: true }, { propertyName: "tabla2", first: true, predicate: ["tablaDatos2"], descendants: true }], ngImport: i0, template: "<p-confirmPopup></p-confirmPopup>\n<div *ngIf=\"!mostrar\">\n <div class=\"flex justify-content-between align-items-center mb-3\">\n <app-filtro-general [filtros]=\"filters\" [datatable]=\"tablaGeneral\">\n <ng-template let-form>\n <ng-container [formGroup]=\"form\">\n <span class=\"p-float-label\">\n <input pInputText autofocus type=\"text\" id=\"descripcion\" formControlName=\"descripcion\"\n autocomplete=\"off\" />\n <label for=\"descripcion\">{{'filtro' | translate}}</label>\n </span>\n </ng-container>\n </ng-template>\n </app-filtro-general>\n </div>\n <app-tabla-general #tablaGeneral [columns]=\"columns\" [value]=\"paginadorFuente\" [rows]=\"paginator.rows\"\n [totalRecords]=\"paginator.totalRecords\" (onLoad)=\"cargarlistado($event)\" (onRowSelect)=\"cargar($event)\"\n [loading]=\"loadingPaginadorFuente\"></app-tabla-general>\n</div>\n<div *ngIf=\"mostrar\">\n <div class=\"card mt-3\" *ngIf=\"fuenteDTO != null\">\n <h5 class=\"mt-3\"><i class=\"glyphicons glyphicons-book\"></i>{{'detalle' | translate}}</h5>\n <div class=\"Inputgroup p-fluid p-formgrid grid\">\n <div class=\"field col-3 md:col-3 lg:col-3\">\n <span class=\"p-float-label\">\n <input class=\"w-full\" [(ngModel)]=\"fuenteDTO.descripcion\" [disabled]=\"true\" pInputText autofocus type=\"text\" />\n <label for=\"fuente\">{{'fuente' | translate}}</label>\n </span>\n </div>\n <div class=\"field col-3 md:col-3 lg:col-3\">\n <span class=\"p-float-label\">\n <input class=\"w-full\" value=\"{{fuenteDTO.tipo | fuentePipe:'listaTipoFuente'}}\"\n [disabled]=\"true\" pInputText autofocus type=\"text\" />\n <label for=\"tipo\">{{'tipo' | translate}}</label>\n </span>\n </div>\n <div class=\"field col-3 md:col-3 lg:col-3\">\n <span class=\"p-float-label\">\n <input class=\"w-full\" value=\"{{fuenteDTO.separador | fuentePipe:'listaSeparador'}}\"\n [disabled]=\"true\" pInputText autofocus type=\"text\" />\n <label for=\"separador\">{{'separador' | translate}}</label>\n </span>\n </div>\n <div class=\"field col-3 md:col-3 lg:col-3\" *ngIf=\"procesoDTO != null\">\n <span class=\"p-float-label\">\n <input class=\"w-full\" value=\"{{procesoDTO.fechaProceso | date: ('formatofecha' | translate) }}\"\n [disabled]=\"true\" pInputText autofocus type=\"text\" />\n <label for=\"fechaproceso\">{{'fechaproceso' | translate}}</label>\n </span>\n </div>\n <div class=\"field col-3 md:col-3 lg:col-3\" *ngIf=\"nombreArchivo != null && this.panel == 'DATOS' \">\n <span class=\"p-float-label\">\n <input class=\"w-full\" [(ngModel)]=\"nombreArchivo\" [disabled]=\"true\" pInputText autofocus\n type=\"text\" />\n <label for=\"nombrearchivo\">{{'nombrearchivo' | translate}}</label>\n </span>\n </div>\n </div>\n </div>\n\n<div *ngIf=\"panel =='IMPORTAR'\">\n <p-tabView>\n <p-tabPanel header=\"{{'entrada' | translate}}\" *ngIf=\"fuenteDTO != null\">\n <div class=\"field col-12 md:col-12 lg:col-12\" *ngIf=\"fuenteDTO?.motor == 'X'\">\n <div class=\"card mt-2 mb-2\">\n <div class=\"contenedor p-fluid grid mt-1 mb-1\">\n <div class=\"field col-3 md:col-3 lg:col-3\">\n <span class=\"p-float-label\">\n <input class=\"w-full\" [(ngModel)]=\"fuenteDTO.estado\" [disabled]=\"true\" pInputText\n autofocus type=\"text\" />\n <label for=\"estado\">{{'estado' | translate}}</label>\n </span>\n </div>\n <div class=\"field col-3 md:col-3 lg:col-3\">\n <span class=\"p-float-label\">\n <input class=\"w-full\" [(ngModel)]=\"fuenteDTO.solicitaDetalle\" [disabled]=\"true\"\n pInputText autofocus type=\"text\" />\n <label for=\"detalle\">{{'detalle' | translate}}</label>\n </span>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"card mt-2 mb-2 field col-12 md:col-12 lg:col-12\" *ngIf=\"!isServicioWeb()\">\n\n <p-table [value]=\"camposArchivo\">\n <ng-template pTemplate=\"body\" let-campo>\n <tr>\n <td style=\"width: 20%;\">\n <label>{{campo.descripcion}}</label>\n </td>\n <td style=\"width: 80%\">\n <div class=\"p-fluid p-formgrid grid\">\n <div class=\"col-12 md:col-12\" id=\"btn-cargar-popup\">\n <div class=\"p-inputgroup\">\n <input pInputText [readonly]=\"true\" [value]=\"archivoSeleccionado?.name ? archivoSeleccionado?.name : ''\" disabled />\n <p-fileUpload #fubauto mode=\"basic\" [customUpload]=\"true\" chooseIcon=\"pi pi-paperclip\"\n (onSelect)=\"cargarArchivo($event, fubauto)\" ></p-fileUpload>\n </div>\n </div>\n </div>\n </td>\n </tr>\n </ng-template>\n </p-table>\n\n <formulario-dinamico #formulario [editable]=\"true\" [campos]=\"campos\" \n [objeto]=\"fuenteDTO\" *ngIf=\"verFormulario && campos.length > 0\"></formulario-dinamico>\n \n <div class=\"flex justify-content-end\">\n <button pButton pRipple class=\"m-2 p-button-outlined\"\n *ngIf=\"fuenteDTO.motor != 'X' && (isServicioWeb() || nombreArchivo != null)\" icon=\"pi pi-upload\"\n label=\"{{'link_importar' | translate}}\" (click)=\"importar()\">\n </button>\n <button pButton pRipple class=\"m-2 p-button p-button-raised\" *ngIf=\"fuenteDTO.motor =='X'\"\n label=\"{{'link_importarejecutar' | translate}}\" (click)=\"importarEjecutar()\">\n </button>\n </div>\n </div>\n </p-tabPanel>\n <p-tabPanel header=\"{{'historico' | translate}}\" *ngIf=\"paginadorProcesos.length > 0 && fuenteDTO != null\">\n\n </p-tabPanel>\n </p-tabView>\n</div>\n\n<div *ngIf=\"panel =='DATOS'\">\n\n <div class=\"card\" *ngIf=\"panelImportar =='GRUPOS'\">\n \n\n <div class=\"flex justify-content-between align-items-center mb-3 mt-3\">\n <div>\n \n </div>\n\n <div class=\"flex justify-content-end\">\n <button pButton pRipple class=\"p-button-secondary font-semibold ml-2 mb-0 mt-0\" icon=\"glyphicons glyphicons-play\"\n *ngIf=\"verBotonEjecutar && procesarDatos && (isImportacion() || isEjecucion())\"\n label=\"{{'link_ejecutar' | translate}}\" (click)=\"ejecutar()\">\n </button>\n <button pButton pRipple class=\"p-button-outlined claro font-semibold ml-2 mb-0 mt-0\" *ngIf=\"procesoDTO.llaveTabla != null\" icon=\"glyphicons glyphicons-bin\" \n label=\"{{'link_eliminar' | translate}}\" (click)=\"cancelarProceso()\">\n </button>\n <button type=\"button\" pButton pRipple icon=\"pi pi-file\" (click)=\"tabla.exportCSV()\"\n class=\"p-button-raised p-button-export border-solid-1 border-color-400 ml-2 w-auto\" pTooltip=\"CSV\"\n tooltipPosition=\"bottom\"></button>\n <button type=\"button\" pButton pRipple icon=\"pi pi-file-excel\"\n (click)=\"dataExporter.exportExcelColumnas(tabla.filteredValue == null ? tabla.value : tabla.filteredValue , 'tabla', columnasExportExcel)\"\n class=\"p-button-outlined ml-2 background-100 w-auto\" pTooltip=\"XLS\"\n tooltipPosition=\"bottom\"></button>\n <button type=\"button\" pButton pRipple icon=\"pi pi-file-pdf\"\n (click)=\"dataExporter.exportPdf(tabla.filteredValue == null ? tabla.value : tabla.filteredValue , exportColumns, 'tabla')\"\n class=\"p-button-outlined ml-2 w-auto\" pTooltip=\"PDF\" tooltipPosition=\"bottom\"></button>\n </div>\n </div>\n\n <p-table #tablaDatos responsiveLayout=\"scroll\" [value]=\"datos\" responsiveLaoyout=\"scroll\" [paginator]=\"true\"\n [rows]=\"10\" [totalRecords]=\"datos.length\" [exportFilename]=\"'tablaDatos'\"\n [paginator]=\"datos.length > 10\" [rowsPerPageOptions]=\"[10, 20, 50]\"\n [showCurrentPageReport]=\"true\" selectionMode=\"single\" [scrollable]=\"true\" [columns]=\"cols\"\n currentPageReportTemplate=\"{first} al {last} de {totalRecords} registros\" *ngIf=\"!isMotor()\"\n [(selection)]=\"grupo\" (onRowSelect)=\"verGrupo($event)\">\n \n <ng-template pTemplate=\"header\">\n\n <tr class=\"fondoTablaPincipal\">\n <th>{{'grupo' | translate}}</th>\n <th>{{'linea' | translate}}</th>\n <th>{{'advertencia' | translate}}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\" let-bean>\n <tr [pSelectableRow]=\"bean\">\n <td class=\"w-8rem font-medium\">{{bean.codigo}}</td>\n <td>\n {{bean.unicaLinea}}</td>\n <td>\n {{bean.mensajeErrores}}</td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"emptymessage\">\n <tr>\n <td colspan=\"100\"> \n <app-template-tabla-vacia></app-template-tabla-vacia>\n </td>\n </tr>\n </ng-template> </p-table>\n </div>\n\n <div *ngIf=\"panelImportar =='DETALLEGRUPO'\">\n <div *ngIf=\"!isMotor()\">\n <h5>{{'grupo' | translate}}: {{grupo.codigo}}</h5>\n <p-accordion *ngIf=\"!isMotor()\">\n <p-accordionTab [selected]=\"true\">\n <ng-template pTemplate=\"header\"><i class=\"glyphicons glyphicons-book\"></i>{{'linea' | translate}} </ng-template>\n <ng-template pTemplate=\"content\">\n \n <p-table responsiveLayout=\"scroll\" [value]=\"paginadorCampos\" responsiveLaoyout=\"scroll\"\n [showCurrentPageReport]=\"true\" [scrollable]=\"true\"\n currentPageReportTemplate=\"{first} al {last} de {totalRecords} registros\"\n rowGroupMode=\"subheader\" dataKey=\"numeroLinea\" groupRowsBy=\"numeroLinea\" expandableRowGroups=\"true\"\n *ngIf=\"paginadorCampos.length > 0\">\n <ng-template pTemplate=\"header\">\n\n <tr class=\"fondoTablaPincipal\">\n <th>{{'campo' | translate}}</th>\n <th>{{'archivo' | translate}}</th>\n <th>{{'tipo' | translate}}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"groupheader\" let-bean let-rowIndex=\"rowIndex\" let-expanded=\"expanded\">\n <tr>\n <td colspan=\"100\">\n <button type=\"button\" pButton pRipple [pRowToggler]=\"bean\"\n class=\"p-element p-ripple p-button-rounded mr-2 mb-2 p-button p-component p-button-desplegable p-button-icon-only\"\n [icon]=\"expanded ? 'pi pi-chevron-down' : 'pi pi-chevron-right'\"></button>\n \n <span class=\"font-bold ml-2\" style=\"line-height: 40px;\"> {{'linea' | translate}}:\n {{bean.numeroLinea}}</span>\n </td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"rowexpansion\" let-bean>\n <tr [pSelectableRow]=\"bean\">\n <td>{{bean.campoAtributo}}</td>\n <td>{{bean.cadena}}</td>\n <td>{{bean.tipoDato | fuentePipe : 'listaTipoDato'}}</td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"emptymessage\">\n <tr>\n <td colspan=\"100\"> \n <app-template-tabla-vacia></app-template-tabla-vacia>\n </td>\n </tr>\n </ng-template> </p-table>\n </ng-template>\n </p-accordionTab>\n <p-accordionTab *ngIf=\"paginadorParametros?.length > 0\" >\n <ng-template pTemplate=\"header\"><i class=\"glyphicons glyphicons-book\"></i>{{'servicio' | translate}} </ng-template>\n <ng-template pTemplate=\"content\">\n\n <p-table responsiveLayout=\"scroll\" [value]=\"paginadorParametros\" responsiveLaoyout=\"scroll\" \n [showCurrentPageReport]=\"true\" [scrollable]=\"true\"\n currentPageReportTemplate=\"{first} al {last} de {totalRecords} registros\"\n rowGroupMode=\"subheader\" dataKey=\"llaveunica\" groupRowsBy=\"llaveunica\" expandableRowGroups=\"true\"\n *ngIf=\"paginadorParametros.length > 0\">\n <ng-template pTemplate=\"header\">\n\n <tr class=\"fondoTablaPincipal\">\n <th>{{'parametro' | translate}}s</th>\n <th>{{'valor' | translate}}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"groupheader\" let-bean let-rowIndex=\"rowIndex\" let-expanded=\"expanded\">\n <tr>\n <td colspan=\"100\">\n <button type=\"button\" pButton pRipple [pRowToggler]=\"bean\"\n class=\"p-element p-ripple p-button-rounded mr-2 mb-2 p-button p-component p-button-desplegable p-button-icon-only\"\n [icon]=\"expanded ? 'pi pi-chevron-down' : 'pi pi-chevron-right'\"></button>\n \n <span class=\"font-bold ml-2\" style=\"line-height: 40px;\">{{bean.llaveunica}}</span>\n <br/>\n </td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"rowexpansion\" let-bean>\n <tr>\n <td>{{bean.campoAtributo}}</td>\n <td>\n <label *ngIf=\"bean.tipoDato == 'L' || bean.tipoDato == 'T'\">{{bean.cadena}}</label>\n <label *ngIf=\"bean.tipoDato == 'D' || bean.tipoDato == 'N'\">{{bean.numero}}</label>\n <label *ngIf=\"bean.tipoDato == 'F'\">{{bean.cadena | date : ('formatofecha' | translate) }}</label>\n </td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"emptymessage\">\n <tr>\n <td colspan=\"100\"> \n <app-template-tabla-vacia></app-template-tabla-vacia>\n </td>\n </tr>\n </ng-template> </p-table>\n </ng-template>\n </p-accordionTab>\n </p-accordion>\n </div>\n <div *ngIf=\"isMotor()\">\n <div class=\"flex justify-content-between align-items-center\">\n <div>\n \n </div>\n \n <div class=\"flex justify-content-end\">\n <div class=\"ml-2 mb-1 mt-2\" *ngIf=\"lineasConMensaje != 0\" >\n <p-checkbox class=\"ml-1\" [(ngModel)]=\"verInconsistencia\" [binary]=\"true\"> </p-checkbox>\n <label style=\"margin: 3px 8px;\"> {{'soloinconsistencias' | translate}}</label>\n </div>\n\n <button pButton pRipple class=\"p-button-secondary font-semibold ml-2 mb-0 mt-0\" icon=\"glyphicons glyphicons-play\"\n *ngIf=\"verBotonEjecutar && procesarDatos && (isImportacion() || isEjecucion())\"\n label=\"{{'link_ejecutar' | translate}}\" (click)=\"ejecutar()\">\n </button>\n <button pButton pRipple class=\"p-button-outlined claro font-semibold ml-2 mb-0 mt-0\" *ngIf=\"procesoDTO.llaveTabla != null\" icon=\"glyphicons glyphicons-bin\" \n label=\"{{'link_eliminar' | translate}}\" (click)=\"cancelarProceso()\">\n </button>\n <button type=\"button\" pButton pRipple icon=\"pi pi-file\" (click)=\"tabla2.exportCSV()\"\n class=\"p-button-raised p-button-export border-solid-1 border-color-400 ml-2 w-auto\" pTooltip=\"CSV\"\n tooltipPosition=\"bottom\"></button>\n <button type=\"button\" pButton pRipple icon=\"pi pi-file-excel\"\n (click)=\"dataExporter.exportExcelColumnas(tabla2.filteredValue == null ? tabla2.value : tabla2.filteredValue , 'tabla2', columnasExportExcel2)\"\n class=\"p-button-outlined ml-2 background-100 w-auto\" pTooltip=\"XLS\"\n tooltipPosition=\"bottom\"></button>\n <button type=\"button\" pButton pRipple icon=\"pi pi-file-pdf\"\n (click)=\"dataExporter.exportPdf(tabla2.filteredValue == null ? tabla2.value : tabla2.filteredValue , exportColumns2, 'tabla2')\"\n class=\"p-button-outlined ml-2 w-auto\" pTooltip=\"PDF\" tooltipPosition=\"bottom\"></button>\n </div>\n </div>\n <br/>\n <p-table #tablaDatos2 responsiveLayout=\"scroll\" [value]=\"lineasCargadas\" responsiveLaoyout=\"scroll\" [paginator]=\"true\"\n [rows]=\"10\" [totalRecords]=\"lineasCargadas.length\" [exportFilename]=\"'tablaDatos'\" [columns]=\"cols2\"\n [paginator]=\"lineasCargadas.length > 10\" [rowsPerPageOptions]=\"[10, 20, 50]\"\n [showCurrentPageReport]=\"true\" [scrollable]=\"true\"\n currentPageReportTemplate=\"{first} al {last} de {totalRecords} registros\"\n *ngIf=\" !verInconsistencia\">\n <ng-template pTemplate=\"header\">\n\n <tr class=\"fondoTablaPincipal\">\n <th>{{'numerolinea' | translate}}</th>\n <th>{{'linea' | translate}}</th>\n <th>{{'mensaje' | translate}}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\" let-bean>\n <tr [pSelectableRow]=\"bean\">\n <td>{{bean.numero}}</td>\n <td>{{bean.linea}}</td>\n <td>{{bean.mensaje}}</td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"emptymessage\">\n <tr>\n <td colspan=\"100\"> \n <app-template-tabla-vacia></app-template-tabla-vacia>\n </td>\n </tr>\n </ng-template> <ng-template pTemplate=\"footer\" let-dato >\n <tr>\n <td class=\"font-bold\" *ngIf=\"lineasConMensaje != 0 || lineasSinMensaje != 0\">{{'resumen' | translate}}: </td>\n <td class=\"font-bold\" *ngIf=\"lineasConMensaje != 0 || lineasSinMensaje != 0\">{{'cantidadlineasinmensaje' | translate}}: {{lineasSinMensaje}}</td>\n <td class=\"font-bold\" *ngIf=\"lineasConMensaje != 0 || lineasSinMensaje != 0\">{{'cantidadlineaconmensaje' | translate}}: {{lineasConMensaje}}</td>\n </tr>\n </ng-template>\n </p-table>\n <p-table responsiveLayout=\"scroll\" [value]=\"lineasInconsistencia\" responsiveLaoyout=\"scroll\" [paginator]=\"true\"\n [rows]=\"10\" [totalRecords]=\"lineasInconsistencia.length\"\n [paginator]=\"lineasInconsistencia.length > 10\" [rowsPerPageOptions]=\"[10, 20, 50]\"\n [showCurrentPageReport]=\"true\" [scrollable]=\"true\"\n currentPageReportTemplate=\"{first} al {last} de {totalRecords} registros\"\n *ngIf=\"verInconsistencia\">\n <ng-template pTemplate=\"header\">\n\n <tr class=\"fondoTablaPincipal\">\n <th>{{'numerolinea' | translate}}</th>\n <th>{{'linea' | translate}}</th>\n <th>{{'mensaje' | translate}}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\" let-bean>\n <tr [pSelectableRow]=\"bean\">\n <td>{{bean.numero}}</td>\n <td>{{bean.linea}}</td>\n <td>{{bean.mensaje}}</td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"emptymessage\">\n <tr>\n <td colspan=\"100\"> \n <app-template-tabla-vacia></app-template-tabla-vacia>\n </td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"footer\" let-dato >\n <tr>\n <td class=\"font-bold\" *ngIf=\"lineasConMensaje != 0 || lineasSinMensaje != 0\">{{'resumen' | translate}}: </td>\n <td class=\"font-bold\" *ngIf=\"lineasConMensaje != 0 || lineasSinMensaje != 0\">{{'cantidadlineasinmensaje' | translate}}: {{lineasSinMensaje}}</td>\n <td class=\"font-bold\" *ngIf=\"lineasConMensaje != 0 || lineasSinMensaje != 0\">{{'cantidadlineaconmensaje' | translate}}: {{lineasConMensaje}}</td>\n </tr>\n </ng-template>\n </p-table>\n \n </div>\n </div>\n \n \n</div>\n</div>\n", styles: ["#btn-cargar-popup .p-fileupload .p-button{background:#fff;box-shadow:none;width:auto;color:var(--color-400);padding:.85rem .1rem;border-radius:0 5px 5px 0;margin-left:-3px;border-right:solid 1px var(--color-100)}\n"], dependencies: [{ kind: "ngmodule", type: TableModule }, { kind: "component", type: i13.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "groupRowsByOrder", "responsiveLayout", "breakpoint", "paginatorLocale", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll", "virtualRowHeight"], outputs: ["contextMenuSelectionChange", "selectAllChange", "selectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i7.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i13.SelectableRow, selector: "[pSelectableRow]", inputs: ["pSelectableRow", "pSelectableRowIndex", "pSelectableRowDisabled"] }, { kind: "directive", type: i13.RowToggler, selector: "[pRowToggler]", inputs: ["pRowToggler", "pRowTogglerDisabled"] }, { kind: "component", type: TemplateTablaVaciaComponent, selector: "app-template-tabla-vacia" }, { kind: "ngmodule", type: ConfirmPopupModule }, { kind: "component", type: i14.ConfirmPopup, selector: "p-confirmPopup", inputs: ["key", "defaultFocus", "showTransitionOptions", "hideTransitionOptions", "autoZIndex", "baseZIndex", "style", "styleClass", "visible"] }, { kind: "ngmodule", type: InputTextModule }, { kind: "directive", type: i15.InputText, selector: "[pInputText]", inputs: ["variant"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i12.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: CheckboxModule }, { kind: "component", type: i16.Checkbox, selector: "p-checkbox", inputs: ["value", "name", "disabled", "binary", "label", "ariaLabelledBy", "ariaLabel", "tabindex", "inputId", "style", "styleClass", "labelStyleClass", "formControl", "checkboxIcon", "readonly", "required", "autofocus", "trueValue", "falseValue", "variant"], outputs: ["onChange", "onFocus", "onBlur"] }, { kind: "ngmodule", type: TabViewModule }, { kind: "component", type: i17.TabView, selector: "p-tabView", inputs: ["style", "styleClass", "controlClose", "scrollable", "activeIndex", "selectOnFocus", "nextButtonAriaLabel", "prevButtonAriaLabel", "autoHideButtons", "tabindex"], outputs: ["onChange", "onClose", "activeIndexChange"] }, { kind: "component", type: i17.TabPanel, selector: "p-tabPanel", inputs: ["closable", "headerStyle", "headerStyleClass", "cache", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "selected", "disabled", "header", "leftIcon", "rightIcon"] }, { kind: "component", type: TablaGeneralComponent, selector: "app-tabla-general", inputs: ["dataKey", "value", "columns", "rows", "totalRecords", "loading", "ocultarFraccionador"], outputs: ["onLoad", "onRowSelect"] }, { kind: "component", type: FiltroGeneralComponent, selector: "app-filtro-general", inputs: ["filtros", "datatable"], outputs: ["metodoRegresar", "metodoRegresarAdicional"] }, { kind: "ngmodule", type: AccordionModule }, { kind: "component", type: i18.Accordion, selector: "p-accordion", inputs: ["multiple", "style", "styleClass", "expandIcon", "collapseIcon", "activeIndex", "selectOnFocus", "headerAriaLevel"], outputs: ["onClose", "onOpen", "activeIndexChange"] }, { kind: "component", type: i18.AccordionTab, selector: "p-accordionTab", inputs: ["id", "header", "headerStyle", "tabStyle", "contentStyle", "tabStyleClass", "headerStyleClass", "contentStyleClass", "disabled", "cache", "transitionOptions", "iconPos", "selected", "headerAriaLevel"], outputs: ["selectedChange"] }, { kind: "pipe", type: DatePipe, name: "date" }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i19.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading", "severity", "raised", "rounded", "text", "outlined", "size", "plain"] }, { kind: "component", type: FormulariodinamicoComponent, selector: "formulario-dinamico", inputs: ["campos", "editable", "objeto", "isMensaje"] }, { kind: "ngmodule", type: FileUploadModule }, { kind: "component", type: i20.FileUpload, selector: "p-fileUpload", inputs: ["name", "url", "method", "multiple", "accept", "disabled", "auto", "withCredentials", "maxFileSize", "invalidFileSizeMessageSummary", "invalidFileSizeMessageDetail", "invalidFileTypeMessageSummary", "invalidFileTypeMessageDetail", "invalidFileLimitMessageDetail", "invalidFileLimitMessageSummary", "style", "styleClass", "previewWidth", "chooseLabel", "uploadLabel", "cancelLabel", "chooseIcon", "uploadIcon", "cancelIcon", "showUploadButton", "showCancelButton", "mode", "headers", "customUpload", "fileLimit", "uploadStyleClass", "cancelStyleClass", "removeStyleClass", "chooseStyleClass", "files"], outputs: ["onBeforeUpload", "onSend", "onUpload", "onError", "onClear", "onRemove", "onSelect", "onProgress", "uploadHandler", "onImageError", "onRemoveUploadedFile"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i21.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i21.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i21.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i21.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: FuentePipe, name: "fuentePipe" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i21.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i21.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i22.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
571
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.4", type: ImportarFuenteConComponent, isStandalone: true, selector: "app-importar-fuente-con", outputs: { regresarFuente: "regresarFuente" }, providers: [DataExporter, MessageService, ConfirmationService], viewQueries: [{ propertyName: "formulario", first: true, predicate: ["formulario"], descendants: true }, { propertyName: "tabla", first: true, predicate: ["tablaDatos"], descendants: true }, { propertyName: "tabla2", first: true, predicate: ["tablaDatos2"], descendants: true }], ngImport: i0, template: "<p-confirmPopup></p-confirmPopup>\n<div *ngIf=\"!mostrar\">\n <div class=\"flex justify-content-between align-items-center mb-3\">\n <app-filtro-general [filtros]=\"filters\" [datatable]=\"tablaGeneral\">\n <ng-template let-form>\n <ng-container [formGroup]=\"form\">\n <span class=\"p-float-label\">\n <input pInputText autofocus type=\"text\" id=\"descripcion\" formControlName=\"descripcion\"\n autocomplete=\"off\" />\n <label for=\"descripcion\">{{'filtro' | translate}}</label>\n </span>\n </ng-container>\n </ng-template>\n </app-filtro-general>\n </div>\n <app-tabla-general #tablaGeneral [columns]=\"columns\" [value]=\"paginadorFuente\" [rows]=\"paginator.rows\"\n [totalRecords]=\"paginator.totalRecords\" (onLoad)=\"cargarlistado($event)\" (onRowSelect)=\"cargar($event)\"\n [loading]=\"loadingPaginadorFuente\"></app-tabla-general>\n</div>\n<div *ngIf=\"mostrar\">\n <div class=\"card mt-3\" *ngIf=\"fuenteDTO != null\">\n <h5 class=\"mt-3\"><i class=\"glyphicons glyphicons-book\"></i>{{'detalle' | translate}}</h5>\n <div class=\"Inputgroup p-fluid p-formgrid grid\">\n <div class=\"field col-3 md:col-3 lg:col-3\">\n <span class=\"p-float-label\">\n <input class=\"w-full\" [(ngModel)]=\"fuenteDTO.descripcion\" [disabled]=\"true\" pInputText autofocus type=\"text\" />\n <label for=\"fuente\">{{'fuente' | translate}}</label>\n </span>\n </div>\n <div class=\"field col-3 md:col-3 lg:col-3\">\n <span class=\"p-float-label\">\n <input class=\"w-full\" value=\"{{fuenteDTO.tipo | fuentePipe:'listaTipoFuente'}}\"\n [disabled]=\"true\" pInputText autofocus type=\"text\" />\n <label for=\"tipo\">{{'tipo' | translate}}</label>\n </span>\n </div>\n <div class=\"field col-3 md:col-3 lg:col-3\">\n <span class=\"p-float-label\">\n <input class=\"w-full\" value=\"{{fuenteDTO.separador | fuentePipe:'listaSeparador'}}\"\n [disabled]=\"true\" pInputText autofocus type=\"text\" />\n <label for=\"separador\">{{'separador' | translate}}</label>\n </span>\n </div>\n <div class=\"field col-3 md:col-3 lg:col-3\" *ngIf=\"procesoDTO != null\">\n <span class=\"p-float-label\">\n <input class=\"w-full\" value=\"{{procesoDTO.fechaProceso | date: ('formatofecha' | translate) }}\"\n [disabled]=\"true\" pInputText autofocus type=\"text\" />\n <label for=\"fechaproceso\">{{'fechaproceso' | translate}}</label>\n </span>\n </div>\n <div class=\"field col-3 md:col-3 lg:col-3\" *ngIf=\"nombreArchivo != null && this.panel == 'DATOS' \">\n <span class=\"p-float-label\">\n <input class=\"w-full\" [(ngModel)]=\"nombreArchivo\" [disabled]=\"true\" pInputText autofocus\n type=\"text\" />\n <label for=\"nombrearchivo\">{{'nombrearchivo' | translate}}</label>\n </span>\n </div>\n </div>\n </div>\n\n<div *ngIf=\"panel =='IMPORTAR'\">\n <p-tabView>\n <p-tabPanel header=\"{{'entrada' | translate}}\" *ngIf=\"fuenteDTO != null\">\n <div class=\"field col-12 md:col-12 lg:col-12\" *ngIf=\"fuenteDTO?.motor == 'X'\">\n <div class=\"card mt-2 mb-2\">\n <div class=\"contenedor p-fluid grid mt-1 mb-1\">\n <div class=\"field col-3 md:col-3 lg:col-3\">\n <span class=\"p-float-label\">\n <input class=\"w-full\" [(ngModel)]=\"fuenteDTO.estado\" [disabled]=\"true\" pInputText\n autofocus type=\"text\" />\n <label for=\"estado\">{{'estado' | translate}}</label>\n </span>\n </div>\n <div class=\"field col-3 md:col-3 lg:col-3\">\n <span class=\"p-float-label\">\n <input class=\"w-full\" [(ngModel)]=\"fuenteDTO.solicitaDetalle\" [disabled]=\"true\"\n pInputText autofocus type=\"text\" />\n <label for=\"detalle\">{{'detalle' | translate}}</label>\n </span>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"card mt-2 mb-2 field col-12 md:col-12 lg:col-12\" *ngIf=\"!isServicioWeb()\">\n\n <p-table [value]=\"camposArchivo\">\n <ng-template pTemplate=\"body\" let-campo>\n <tr>\n <td style=\"width: 20%;\">\n <label>{{campo.descripcion}}</label>\n </td>\n <td style=\"width: 80%\">\n <div class=\"p-fluid p-formgrid grid\">\n <div class=\"col-12 md:col-12\" id=\"btn-cargar-popup\">\n <div class=\"p-inputgroup\">\n <input pInputText [readonly]=\"true\" [value]=\"archivoSeleccionado?.name ? archivoSeleccionado?.name : ''\" disabled />\n <p-fileUpload #fubauto mode=\"basic\" [customUpload]=\"true\" chooseIcon=\"pi pi-paperclip\"\n (onSelect)=\"cargarArchivo($event, fubauto)\" ></p-fileUpload>\n </div>\n </div>\n </div>\n </td>\n </tr>\n </ng-template>\n </p-table>\n\n <formulario-dinamico #formulario [editable]=\"true\" [campos]=\"campos\" \n [objeto]=\"fuenteDTO\" *ngIf=\"verFormulario && campos.length > 0\"></formulario-dinamico>\n \n <div class=\"flex justify-content-end\">\n <button pButton pRipple class=\"m-2 p-button-outlined\"\n *ngIf=\"fuenteDTO.motor != 'X' && (isServicioWeb() || nombreArchivo != null)\" icon=\"pi pi-upload\"\n label=\"{{'link_importar' | translate}}\" (click)=\"importar()\">\n </button>\n <button pButton pRipple class=\"m-2 p-button p-button-raised\" *ngIf=\"fuenteDTO.motor =='X'\"\n label=\"{{'link_importarejecutar' | translate}}\" (click)=\"importarEjecutar()\">\n </button>\n </div>\n </div>\n </p-tabPanel>\n <p-tabPanel header=\"{{'historico' | translate}}\" *ngIf=\"paginadorProcesos.length > 0 && fuenteDTO != null\">\n\n </p-tabPanel>\n </p-tabView>\n</div>\n\n<div *ngIf=\"panel =='DATOS'\">\n\n <div class=\"card\" *ngIf=\"panelImportar =='GRUPOS'\">\n \n\n <div class=\"flex justify-content-between align-items-center mb-4 mt-3\">\n <div>\n \n </div>\n\n <div class=\"flex justify-content-end\">\n <button pButton pRipple class=\"p-button-secondary font-semibold ml-2 mb-0 mt-0\" icon=\"glyphicons glyphicons-play\"\n *ngIf=\"verBotonEjecutar && procesarDatos && (isImportacion() || isEjecucion())\"\n label=\"{{'link_ejecutar' | translate}}\" (click)=\"ejecutar()\">\n </button>\n <button pButton pRipple class=\"p-button-outlined claro font-semibold ml-2 mb-0 mt-0\" *ngIf=\"procesoDTO.llaveTabla != null\" icon=\"glyphicons glyphicons-bin\" \n label=\"{{'link_eliminar' | translate}}\" (click)=\"cancelarProceso()\">\n </button>\n <button type=\"button\" pButton pRipple icon=\"pi pi-file\" (click)=\"tabla.exportCSV()\"\n class=\"p-button-raised p-button-export border-solid-1 border-color-400 ml-2 w-auto\" pTooltip=\"CSV\"\n tooltipPosition=\"bottom\"></button>\n <button type=\"button\" pButton pRipple icon=\"pi pi-file-excel\"\n (click)=\"dataExporter.exportExcelColumnas(tabla.filteredValue == null ? tabla.value : tabla.filteredValue , 'tabla', columnasExportExcel)\"\n class=\"p-button-outlined ml-2 background-100 w-auto\" pTooltip=\"XLS\"\n tooltipPosition=\"bottom\"></button>\n <button type=\"button\" pButton pRipple icon=\"pi pi-file-pdf\"\n (click)=\"dataExporter.exportPdf(tabla.filteredValue == null ? tabla.value : tabla.filteredValue , exportColumns, 'tabla')\"\n class=\"p-button-outlined ml-2 w-auto\" pTooltip=\"PDF\" tooltipPosition=\"bottom\"></button>\n </div>\n </div>\n\n <p-table #tablaDatos responsiveLayout=\"scroll\" [value]=\"datos\" responsiveLaoyout=\"scroll\" [paginator]=\"true\"\n [rows]=\"10\" [totalRecords]=\"datos.length\" [exportFilename]=\"'tablaDatos'\"\n [paginator]=\"datos.length > 10\" [rowsPerPageOptions]=\"[10, 20, 50]\"\n [showCurrentPageReport]=\"true\" selectionMode=\"single\" [scrollable]=\"true\" [columns]=\"cols\"\n currentPageReportTemplate=\"{first} al {last} de {totalRecords} registros\" *ngIf=\"!isMotor()\"\n [(selection)]=\"grupo\" (onRowSelect)=\"verGrupo($event)\">\n \n <ng-template pTemplate=\"header\">\n\n <tr class=\"fondoTablaPincipal\">\n <th>{{'grupo' | translate}}</th>\n <th>{{'linea' | translate}}</th>\n <th>{{'advertencia' | translate}}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\" let-bean>\n <tr [pSelectableRow]=\"bean\">\n <td class=\"w-8rem font-medium\">{{bean.codigo}}</td>\n <td>\n {{bean.unicaLinea}}</td>\n <td>\n {{bean.mensajeErrores}}</td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"emptymessage\">\n <tr>\n <td colspan=\"100\" class=\"p-3 font-medium emptymessage\">{{'mensajetablavacia' | translate}}</td>\n </tr>\n </ng-template>\n </p-table>\n </div>\n\n <div *ngIf=\"panelImportar =='DETALLEGRUPO'\">\n <div *ngIf=\"!isMotor()\">\n <h5>{{'grupo' | translate}}: {{grupo.codigo}}</h5>\n <p-accordion *ngIf=\"!isMotor()\">\n <p-accordionTab [selected]=\"true\">\n <ng-template pTemplate=\"header\"><i class=\"glyphicons glyphicons-book\"></i>{{'linea' | translate}} </ng-template>\n <ng-template pTemplate=\"content\">\n \n <p-table responsiveLayout=\"scroll\" [value]=\"paginadorCampos\" responsiveLaoyout=\"scroll\"\n [showCurrentPageReport]=\"true\" [scrollable]=\"true\"\n currentPageReportTemplate=\"{first} al {last} de {totalRecords} registros\"\n rowGroupMode=\"subheader\" dataKey=\"numeroLinea\" groupRowsBy=\"numeroLinea\" expandableRowGroups=\"true\"\n *ngIf=\"paginadorCampos.length > 0\">\n <ng-template pTemplate=\"header\">\n\n <tr class=\"fondoTablaPincipal\">\n <th>{{'campo' | translate}}</th>\n <th>{{'archivo' | translate}}</th>\n <th>{{'tipo' | translate}}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"groupheader\" let-bean let-rowIndex=\"rowIndex\" let-expanded=\"expanded\">\n <tr>\n <td colspan=\"100\">\n <button type=\"button\" pButton pRipple [pRowToggler]=\"bean\"\n class=\"p-element p-ripple p-button-rounded mr-2 mb-2 p-button p-component p-button-desplegable p-button-icon-only\"\n [icon]=\"expanded ? 'pi pi-chevron-down' : 'pi pi-chevron-right'\"></button>\n \n <span class=\"font-bold ml-2\" style=\"line-height: 40px;\"> {{'linea' | translate}}:\n {{bean.numeroLinea}}</span>\n </td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"rowexpansion\" let-bean>\n <tr [pSelectableRow]=\"bean\">\n <td>{{bean.campoAtributo}}</td>\n <td>{{bean.cadena}}</td>\n <td>{{bean.tipoDato | fuentePipe : 'listaTipoDato'}}</td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"emptymessage\">\n <tr>\n <td colspan=\"100\" class=\"p-3 font-medium emptymessage\">{{'mensajetablavacia' | translate}}</td>\n </tr>\n </ng-template>\n </p-table>\n </ng-template>\n </p-accordionTab>\n <p-accordionTab *ngIf=\"paginadorParametros?.length > 0\" >\n <ng-template pTemplate=\"header\"><i class=\"glyphicons glyphicons-book\"></i>{{'servicio' | translate}} </ng-template>\n <ng-template pTemplate=\"content\">\n\n <p-table responsiveLayout=\"scroll\" [value]=\"paginadorParametros\" responsiveLaoyout=\"scroll\" \n [showCurrentPageReport]=\"true\" [scrollable]=\"true\"\n currentPageReportTemplate=\"{first} al {last} de {totalRecords} registros\"\n rowGroupMode=\"subheader\" dataKey=\"llaveunica\" groupRowsBy=\"llaveunica\" expandableRowGroups=\"true\"\n *ngIf=\"paginadorParametros.length > 0\">\n <ng-template pTemplate=\"header\">\n\n <tr class=\"fondoTablaPincipal\">\n <th>{{'parametro' | translate}}s</th>\n <th>{{'valor' | translate}}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"groupheader\" let-bean let-rowIndex=\"rowIndex\" let-expanded=\"expanded\">\n <tr>\n <td colspan=\"100\">\n <button type=\"button\" pButton pRipple [pRowToggler]=\"bean\"\n class=\"p-element p-ripple p-button-rounded mr-2 mb-2 p-button p-component p-button-desplegable p-button-icon-only\"\n [icon]=\"expanded ? 'pi pi-chevron-down' : 'pi pi-chevron-right'\"></button>\n \n <span class=\"font-bold ml-2\" style=\"line-height: 40px;\">{{bean.llaveunica}}</span>\n <br/>\n </td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"rowexpansion\" let-bean>\n <tr>\n <td>{{bean.campoAtributo}}</td>\n <td>\n <label *ngIf=\"bean.tipoDato == 'L' || bean.tipoDato == 'T'\">{{bean.cadena}}</label>\n <label *ngIf=\"bean.tipoDato == 'D' || bean.tipoDato == 'N'\">{{bean.numero}}</label>\n <label *ngIf=\"bean.tipoDato == 'F'\">{{bean.cadena | date : ('formatofecha' | translate) }}</label>\n </td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"emptymessage\">\n <tr>\n <td colspan=\"100\" class=\"p-3 font-medium emptymessage\">{{'mensajetablavacia' | translate}}</td>\n </tr>\n </ng-template>\n </p-table>\n </ng-template>\n </p-accordionTab>\n </p-accordion>\n </div>\n <div *ngIf=\"isMotor()\">\n <div class=\"flex justify-content-between align-items-center mb-4 mt-3\">\n <div>\n \n </div>\n \n <div class=\"flex justify-content-end\">\n <div class=\"ml-2 mb-1 mt-2\" *ngIf=\"lineasConMensaje != 0\" >\n <p-checkbox class=\"ml-1\" [(ngModel)]=\"verInconsistencia\" [binary]=\"true\"> </p-checkbox>\n <label style=\"margin: 3px 8px;\"> {{'soloinconsistencias' | translate}}</label>\n </div>\n\n <button pButton pRipple class=\"p-button-secondary font-semibold ml-2 mb-0 mt-0\" icon=\"glyphicons glyphicons-play\"\n *ngIf=\"verBotonEjecutar && procesarDatos && (isImportacion() || isEjecucion())\"\n label=\"{{'link_ejecutar' | translate}}\" (click)=\"ejecutar()\">\n </button>\n <button pButton pRipple class=\"p-button-outlined claro font-semibold ml-2 mb-0 mt-0\" *ngIf=\"procesoDTO.llaveTabla != null\" icon=\"glyphicons glyphicons-bin\" \n label=\"{{'link_eliminar' | translate}}\" (click)=\"cancelarProceso()\">\n </button>\n <button type=\"button\" pButton pRipple icon=\"pi pi-file\" (click)=\"tabla2.exportCSV()\"\n class=\"p-button-raised p-button-export border-solid-1 border-color-400 ml-2 w-auto\" pTooltip=\"CSV\"\n tooltipPosition=\"bottom\"></button>\n <button type=\"button\" pButton pRipple icon=\"pi pi-file-excel\"\n (click)=\"dataExporter.exportExcel(tabla2.filteredValue == null ? tabla2.value : tabla2.filteredValue , 'tabla2')\"\n class=\"p-button-outlined ml-2 background-100 w-auto\" pTooltip=\"XLS\"\n tooltipPosition=\"bottom\"></button>\n <button type=\"button\" pButton pRipple icon=\"pi pi-file-pdf\"\n (click)=\"dataExporter.exportPdf(tabla2.filteredValue == null ? tabla2.value : tabla2.filteredValue , exportColumns, 'tabla2')\"\n class=\"p-button-outlined ml-2 w-auto\" pTooltip=\"PDF\" tooltipPosition=\"bottom\"></button>\n </div>\n </div>\n <br/>\n <p-table #tablaDatos2 responsiveLayout=\"scroll\" [value]=\"lineasCargadas\" responsiveLaoyout=\"scroll\" [paginator]=\"true\"\n [rows]=\"10\" [totalRecords]=\"lineasCargadas.length\"\n [paginator]=\"lineasCargadas.length > 10\" [rowsPerPageOptions]=\"[10, 20, 50]\"\n [showCurrentPageReport]=\"true\" [scrollable]=\"true\"\n currentPageReportTemplate=\"{first} al {last} de {totalRecords} registros\"\n *ngIf=\" !verInconsistencia\">\n <ng-template pTemplate=\"header\">\n\n <tr class=\"fondoTablaPincipal\">\n <th>{{'numerolinea' | translate}}</th>\n <th>{{'linea' | translate}}</th>\n <th>{{'mensaje' | translate}}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\" let-bean>\n <tr [pSelectableRow]=\"bean\">\n <td>{{bean.numero}}</td>\n <td>{{bean.linea}}</td>\n <td>{{bean.mensaje}}</td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"emptymessage\">\n <tr>\n <td colspan=\"100\" class=\"p-3 font-medium emptymessage\">{{'mensajetablavacia' | translate}}</td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"footer\" let-dato >\n <tr>\n <td class=\"font-bold\" *ngIf=\"lineasConMensaje != 0 || lineasSinMensaje != 0\">{{'resumen' | translate}}: </td>\n <td class=\"font-bold\" *ngIf=\"lineasConMensaje != 0 || lineasSinMensaje != 0\">{{'cantidadlineasinmensaje' | translate}}: {{lineasSinMensaje}}</td>\n <td class=\"font-bold\" *ngIf=\"lineasConMensaje != 0 || lineasSinMensaje != 0\">{{'cantidadlineaconmensaje' | translate}}: {{lineasConMensaje}}</td>\n </tr>\n </ng-template>\n </p-table>\n <p-table responsiveLayout=\"scroll\" [value]=\"lineasInconsistencia\" responsiveLaoyout=\"scroll\" [paginator]=\"true\"\n [rows]=\"10\" [totalRecords]=\"lineasInconsistencia.length\"\n [paginator]=\"lineasInconsistencia.length > 10\" [rowsPerPageOptions]=\"[10, 20, 50]\"\n [showCurrentPageReport]=\"true\" [scrollable]=\"true\"\n currentPageReportTemplate=\"{first} al {last} de {totalRecords} registros\"\n *ngIf=\"verInconsistencia\">\n <ng-template pTemplate=\"header\">\n\n <tr class=\"fondoTablaPincipal\">\n <th>{{'numerolinea' | translate}}</th>\n <th>{{'linea' | translate}}</th>\n <th>{{'mensaje' | translate}}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\" let-bean>\n <tr [pSelectableRow]=\"bean\">\n <td>{{bean.numero}}</td>\n <td>{{bean.linea}}</td>\n <td>{{bean.mensaje}}</td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"emptymessage\">\n <tr>\n <td colspan=\"100\" class=\"p-3 font-medium emptymessage\">{{'mensajetablavacia' | translate}}</td>\n </tr>\n </ng-template>\n\n <ng-template pTemplate=\"footer\" let-dato >\n <tr>\n <td class=\"font-bold\" *ngIf=\"lineasConMensaje != 0 || lineasSinMensaje != 0\">{{'resumen' | translate}}: </td>\n <td class=\"font-bold\" *ngIf=\"lineasConMensaje != 0 || lineasSinMensaje != 0\">{{'cantidadlineasinmensaje' | translate}}: {{lineasSinMensaje}}</td>\n <td class=\"font-bold\" *ngIf=\"lineasConMensaje != 0 || lineasSinMensaje != 0\">{{'cantidadlineaconmensaje' | translate}}: {{lineasConMensaje}}</td>\n </tr>\n </ng-template>\n </p-table>\n \n </div>\n </div>\n \n \n</div>\n</div>\n", styles: ["#btn-cargar-popup .p-fileupload .p-button{background:#fff;box-shadow:none;width:auto;color:var(--color-400);padding:.85rem .1rem;border-radius:0 5px 5px 0;margin-left:-3px;border-right:solid 1px var(--color-100)}\n"], dependencies: [{ kind: "ngmodule", type: TableModule }, { kind: "component", type: i13.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "groupRowsByOrder", "responsiveLayout", "breakpoint", "paginatorLocale", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll", "virtualRowHeight"], outputs: ["contextMenuSelectionChange", "selectAllChange", "selectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i7.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i13.SelectableRow, selector: "[pSelectableRow]", inputs: ["pSelectableRow", "pSelectableRowIndex", "pSelectableRowDisabled"] }, { kind: "directive", type: i13.RowToggler, selector: "[pRowToggler]", inputs: ["pRowToggler", "pRowTogglerDisabled"] }, { kind: "ngmodule", type: ConfirmPopupModule }, { kind: "component", type: i14.ConfirmPopup, selector: "p-confirmPopup", inputs: ["key", "defaultFocus", "showTransitionOptions", "hideTransitionOptions", "autoZIndex", "baseZIndex", "style", "styleClass", "visible"] }, { kind: "ngmodule", type: InputTextModule }, { kind: "directive", type: i15.InputText, selector: "[pInputText]", inputs: ["variant"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i12.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: CheckboxModule }, { kind: "component", type: i16.Checkbox, selector: "p-checkbox", inputs: ["value", "name", "disabled", "binary", "label", "ariaLabelledBy", "ariaLabel", "tabindex", "inputId", "style", "styleClass", "labelStyleClass", "formControl", "checkboxIcon", "readonly", "required", "autofocus", "trueValue", "falseValue", "variant"], outputs: ["onChange", "onFocus", "onBlur"] }, { kind: "ngmodule", type: TabViewModule }, { kind: "component", type: i17.TabView, selector: "p-tabView", inputs: ["style", "styleClass", "controlClose", "scrollable", "activeIndex", "selectOnFocus", "nextButtonAriaLabel", "prevButtonAriaLabel", "autoHideButtons", "tabindex"], outputs: ["onChange", "onClose", "activeIndexChange"] }, { kind: "component", type: i17.TabPanel, selector: "p-tabPanel", inputs: ["closable", "headerStyle", "headerStyleClass", "cache", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "selected", "disabled", "header", "leftIcon", "rightIcon"] }, { kind: "component", type: TablaGeneralComponent, selector: "app-tabla-general", inputs: ["dataKey", "value", "columns", "rows", "totalRecords", "loading", "ocultarFraccionador"], outputs: ["onLoad", "onRowSelect"] }, { kind: "component", type: FiltroGeneralComponent, selector: "app-filtro-general", inputs: ["filtros", "datatable"], outputs: ["metodoRegresar", "metodoRegresarAdicional"] }, { kind: "ngmodule", type: AccordionModule }, { kind: "component", type: i18.Accordion, selector: "p-accordion", inputs: ["multiple", "style", "styleClass", "expandIcon", "collapseIcon", "activeIndex", "selectOnFocus", "headerAriaLevel"], outputs: ["onClose", "onOpen", "activeIndexChange"] }, { kind: "component", type: i18.AccordionTab, selector: "p-accordionTab", inputs: ["id", "header", "headerStyle", "tabStyle", "contentStyle", "tabStyleClass", "headerStyleClass", "contentStyleClass", "disabled", "cache", "transitionOptions", "iconPos", "selected", "headerAriaLevel"], outputs: ["selectedChange"] }, { kind: "pipe", type: DatePipe, name: "date" }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i19.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading", "severity", "raised", "rounded", "text", "outlined", "size", "plain"] }, { kind: "component", type: FormulariodinamicoComponent, selector: "formulario-dinamico", inputs: ["campos", "editable", "objeto", "isMensaje"] }, { kind: "ngmodule", type: FileUploadModule }, { kind: "component", type: i20.FileUpload, selector: "p-fileUpload", inputs: ["name", "url", "method", "multiple", "accept", "disabled", "auto", "withCredentials", "maxFileSize", "invalidFileSizeMessageSummary", "invalidFileSizeMessageDetail", "invalidFileTypeMessageSummary", "invalidFileTypeMessageDetail", "invalidFileLimitMessageDetail", "invalidFileLimitMessageSummary", "style", "styleClass", "previewWidth", "chooseLabel", "uploadLabel", "cancelLabel", "chooseIcon", "uploadIcon", "cancelIcon", "showUploadButton", "showCancelButton", "mode", "headers", "customUpload", "fileLimit", "uploadStyleClass", "cancelStyleClass", "removeStyleClass", "chooseStyleClass", "files"], outputs: ["onBeforeUpload", "onSend", "onUpload", "onError", "onClear", "onRemove", "onSelect", "onProgress", "uploadHandler", "onImageError", "onRemoveUploadedFile"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i21.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i21.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i21.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i21.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: FuentePipe, name: "fuentePipe" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i21.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i21.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i22.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
582
572
  }
583
573
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: ImportarFuenteConComponent, decorators: [{
584
574
  type: Component,
585
- args: [{ selector: 'app-importar-fuente-con', imports: [TableModule, TemplateTablaVaciaComponent, ConfirmPopupModule, InputTextModule, TranslateModule, CheckboxModule, TabViewModule, TablaGeneralComponent, FiltroGeneralComponent, AccordionModule, DatePipe, ButtonModule, CheckboxModule, FormulariodinamicoComponent, FileUploadModule, FormsModule, FuentePipe, FormsModule, ReactiveFormsModule, CommonModule,], standalone: true, providers: [DataExporter, MessageService, ConfirmationService], template: "<p-confirmPopup></p-confirmPopup>\n<div *ngIf=\"!mostrar\">\n <div class=\"flex justify-content-between align-items-center mb-3\">\n <app-filtro-general [filtros]=\"filters\" [datatable]=\"tablaGeneral\">\n <ng-template let-form>\n <ng-container [formGroup]=\"form\">\n <span class=\"p-float-label\">\n <input pInputText autofocus type=\"text\" id=\"descripcion\" formControlName=\"descripcion\"\n autocomplete=\"off\" />\n <label for=\"descripcion\">{{'filtro' | translate}}</label>\n </span>\n </ng-container>\n </ng-template>\n </app-filtro-general>\n </div>\n <app-tabla-general #tablaGeneral [columns]=\"columns\" [value]=\"paginadorFuente\" [rows]=\"paginator.rows\"\n [totalRecords]=\"paginator.totalRecords\" (onLoad)=\"cargarlistado($event)\" (onRowSelect)=\"cargar($event)\"\n [loading]=\"loadingPaginadorFuente\"></app-tabla-general>\n</div>\n<div *ngIf=\"mostrar\">\n <div class=\"card mt-3\" *ngIf=\"fuenteDTO != null\">\n <h5 class=\"mt-3\"><i class=\"glyphicons glyphicons-book\"></i>{{'detalle' | translate}}</h5>\n <div class=\"Inputgroup p-fluid p-formgrid grid\">\n <div class=\"field col-3 md:col-3 lg:col-3\">\n <span class=\"p-float-label\">\n <input class=\"w-full\" [(ngModel)]=\"fuenteDTO.descripcion\" [disabled]=\"true\" pInputText autofocus type=\"text\" />\n <label for=\"fuente\">{{'fuente' | translate}}</label>\n </span>\n </div>\n <div class=\"field col-3 md:col-3 lg:col-3\">\n <span class=\"p-float-label\">\n <input class=\"w-full\" value=\"{{fuenteDTO.tipo | fuentePipe:'listaTipoFuente'}}\"\n [disabled]=\"true\" pInputText autofocus type=\"text\" />\n <label for=\"tipo\">{{'tipo' | translate}}</label>\n </span>\n </div>\n <div class=\"field col-3 md:col-3 lg:col-3\">\n <span class=\"p-float-label\">\n <input class=\"w-full\" value=\"{{fuenteDTO.separador | fuentePipe:'listaSeparador'}}\"\n [disabled]=\"true\" pInputText autofocus type=\"text\" />\n <label for=\"separador\">{{'separador' | translate}}</label>\n </span>\n </div>\n <div class=\"field col-3 md:col-3 lg:col-3\" *ngIf=\"procesoDTO != null\">\n <span class=\"p-float-label\">\n <input class=\"w-full\" value=\"{{procesoDTO.fechaProceso | date: ('formatofecha' | translate) }}\"\n [disabled]=\"true\" pInputText autofocus type=\"text\" />\n <label for=\"fechaproceso\">{{'fechaproceso' | translate}}</label>\n </span>\n </div>\n <div class=\"field col-3 md:col-3 lg:col-3\" *ngIf=\"nombreArchivo != null && this.panel == 'DATOS' \">\n <span class=\"p-float-label\">\n <input class=\"w-full\" [(ngModel)]=\"nombreArchivo\" [disabled]=\"true\" pInputText autofocus\n type=\"text\" />\n <label for=\"nombrearchivo\">{{'nombrearchivo' | translate}}</label>\n </span>\n </div>\n </div>\n </div>\n\n<div *ngIf=\"panel =='IMPORTAR'\">\n <p-tabView>\n <p-tabPanel header=\"{{'entrada' | translate}}\" *ngIf=\"fuenteDTO != null\">\n <div class=\"field col-12 md:col-12 lg:col-12\" *ngIf=\"fuenteDTO?.motor == 'X'\">\n <div class=\"card mt-2 mb-2\">\n <div class=\"contenedor p-fluid grid mt-1 mb-1\">\n <div class=\"field col-3 md:col-3 lg:col-3\">\n <span class=\"p-float-label\">\n <input class=\"w-full\" [(ngModel)]=\"fuenteDTO.estado\" [disabled]=\"true\" pInputText\n autofocus type=\"text\" />\n <label for=\"estado\">{{'estado' | translate}}</label>\n </span>\n </div>\n <div class=\"field col-3 md:col-3 lg:col-3\">\n <span class=\"p-float-label\">\n <input class=\"w-full\" [(ngModel)]=\"fuenteDTO.solicitaDetalle\" [disabled]=\"true\"\n pInputText autofocus type=\"text\" />\n <label for=\"detalle\">{{'detalle' | translate}}</label>\n </span>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"card mt-2 mb-2 field col-12 md:col-12 lg:col-12\" *ngIf=\"!isServicioWeb()\">\n\n <p-table [value]=\"camposArchivo\">\n <ng-template pTemplate=\"body\" let-campo>\n <tr>\n <td style=\"width: 20%;\">\n <label>{{campo.descripcion}}</label>\n </td>\n <td style=\"width: 80%\">\n <div class=\"p-fluid p-formgrid grid\">\n <div class=\"col-12 md:col-12\" id=\"btn-cargar-popup\">\n <div class=\"p-inputgroup\">\n <input pInputText [readonly]=\"true\" [value]=\"archivoSeleccionado?.name ? archivoSeleccionado?.name : ''\" disabled />\n <p-fileUpload #fubauto mode=\"basic\" [customUpload]=\"true\" chooseIcon=\"pi pi-paperclip\"\n (onSelect)=\"cargarArchivo($event, fubauto)\" ></p-fileUpload>\n </div>\n </div>\n </div>\n </td>\n </tr>\n </ng-template>\n </p-table>\n\n <formulario-dinamico #formulario [editable]=\"true\" [campos]=\"campos\" \n [objeto]=\"fuenteDTO\" *ngIf=\"verFormulario && campos.length > 0\"></formulario-dinamico>\n \n <div class=\"flex justify-content-end\">\n <button pButton pRipple class=\"m-2 p-button-outlined\"\n *ngIf=\"fuenteDTO.motor != 'X' && (isServicioWeb() || nombreArchivo != null)\" icon=\"pi pi-upload\"\n label=\"{{'link_importar' | translate}}\" (click)=\"importar()\">\n </button>\n <button pButton pRipple class=\"m-2 p-button p-button-raised\" *ngIf=\"fuenteDTO.motor =='X'\"\n label=\"{{'link_importarejecutar' | translate}}\" (click)=\"importarEjecutar()\">\n </button>\n </div>\n </div>\n </p-tabPanel>\n <p-tabPanel header=\"{{'historico' | translate}}\" *ngIf=\"paginadorProcesos.length > 0 && fuenteDTO != null\">\n\n </p-tabPanel>\n </p-tabView>\n</div>\n\n<div *ngIf=\"panel =='DATOS'\">\n\n <div class=\"card\" *ngIf=\"panelImportar =='GRUPOS'\">\n \n\n <div class=\"flex justify-content-between align-items-center mb-3 mt-3\">\n <div>\n \n </div>\n\n <div class=\"flex justify-content-end\">\n <button pButton pRipple class=\"p-button-secondary font-semibold ml-2 mb-0 mt-0\" icon=\"glyphicons glyphicons-play\"\n *ngIf=\"verBotonEjecutar && procesarDatos && (isImportacion() || isEjecucion())\"\n label=\"{{'link_ejecutar' | translate}}\" (click)=\"ejecutar()\">\n </button>\n <button pButton pRipple class=\"p-button-outlined claro font-semibold ml-2 mb-0 mt-0\" *ngIf=\"procesoDTO.llaveTabla != null\" icon=\"glyphicons glyphicons-bin\" \n label=\"{{'link_eliminar' | translate}}\" (click)=\"cancelarProceso()\">\n </button>\n <button type=\"button\" pButton pRipple icon=\"pi pi-file\" (click)=\"tabla.exportCSV()\"\n class=\"p-button-raised p-button-export border-solid-1 border-color-400 ml-2 w-auto\" pTooltip=\"CSV\"\n tooltipPosition=\"bottom\"></button>\n <button type=\"button\" pButton pRipple icon=\"pi pi-file-excel\"\n (click)=\"dataExporter.exportExcelColumnas(tabla.filteredValue == null ? tabla.value : tabla.filteredValue , 'tabla', columnasExportExcel)\"\n class=\"p-button-outlined ml-2 background-100 w-auto\" pTooltip=\"XLS\"\n tooltipPosition=\"bottom\"></button>\n <button type=\"button\" pButton pRipple icon=\"pi pi-file-pdf\"\n (click)=\"dataExporter.exportPdf(tabla.filteredValue == null ? tabla.value : tabla.filteredValue , exportColumns, 'tabla')\"\n class=\"p-button-outlined ml-2 w-auto\" pTooltip=\"PDF\" tooltipPosition=\"bottom\"></button>\n </div>\n </div>\n\n <p-table #tablaDatos responsiveLayout=\"scroll\" [value]=\"datos\" responsiveLaoyout=\"scroll\" [paginator]=\"true\"\n [rows]=\"10\" [totalRecords]=\"datos.length\" [exportFilename]=\"'tablaDatos'\"\n [paginator]=\"datos.length > 10\" [rowsPerPageOptions]=\"[10, 20, 50]\"\n [showCurrentPageReport]=\"true\" selectionMode=\"single\" [scrollable]=\"true\" [columns]=\"cols\"\n currentPageReportTemplate=\"{first} al {last} de {totalRecords} registros\" *ngIf=\"!isMotor()\"\n [(selection)]=\"grupo\" (onRowSelect)=\"verGrupo($event)\">\n \n <ng-template pTemplate=\"header\">\n\n <tr class=\"fondoTablaPincipal\">\n <th>{{'grupo' | translate}}</th>\n <th>{{'linea' | translate}}</th>\n <th>{{'advertencia' | translate}}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\" let-bean>\n <tr [pSelectableRow]=\"bean\">\n <td class=\"w-8rem font-medium\">{{bean.codigo}}</td>\n <td>\n {{bean.unicaLinea}}</td>\n <td>\n {{bean.mensajeErrores}}</td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"emptymessage\">\n <tr>\n <td colspan=\"100\"> \n <app-template-tabla-vacia></app-template-tabla-vacia>\n </td>\n </tr>\n </ng-template> </p-table>\n </div>\n\n <div *ngIf=\"panelImportar =='DETALLEGRUPO'\">\n <div *ngIf=\"!isMotor()\">\n <h5>{{'grupo' | translate}}: {{grupo.codigo}}</h5>\n <p-accordion *ngIf=\"!isMotor()\">\n <p-accordionTab [selected]=\"true\">\n <ng-template pTemplate=\"header\"><i class=\"glyphicons glyphicons-book\"></i>{{'linea' | translate}} </ng-template>\n <ng-template pTemplate=\"content\">\n \n <p-table responsiveLayout=\"scroll\" [value]=\"paginadorCampos\" responsiveLaoyout=\"scroll\"\n [showCurrentPageReport]=\"true\" [scrollable]=\"true\"\n currentPageReportTemplate=\"{first} al {last} de {totalRecords} registros\"\n rowGroupMode=\"subheader\" dataKey=\"numeroLinea\" groupRowsBy=\"numeroLinea\" expandableRowGroups=\"true\"\n *ngIf=\"paginadorCampos.length > 0\">\n <ng-template pTemplate=\"header\">\n\n <tr class=\"fondoTablaPincipal\">\n <th>{{'campo' | translate}}</th>\n <th>{{'archivo' | translate}}</th>\n <th>{{'tipo' | translate}}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"groupheader\" let-bean let-rowIndex=\"rowIndex\" let-expanded=\"expanded\">\n <tr>\n <td colspan=\"100\">\n <button type=\"button\" pButton pRipple [pRowToggler]=\"bean\"\n class=\"p-element p-ripple p-button-rounded mr-2 mb-2 p-button p-component p-button-desplegable p-button-icon-only\"\n [icon]=\"expanded ? 'pi pi-chevron-down' : 'pi pi-chevron-right'\"></button>\n \n <span class=\"font-bold ml-2\" style=\"line-height: 40px;\"> {{'linea' | translate}}:\n {{bean.numeroLinea}}</span>\n </td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"rowexpansion\" let-bean>\n <tr [pSelectableRow]=\"bean\">\n <td>{{bean.campoAtributo}}</td>\n <td>{{bean.cadena}}</td>\n <td>{{bean.tipoDato | fuentePipe : 'listaTipoDato'}}</td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"emptymessage\">\n <tr>\n <td colspan=\"100\"> \n <app-template-tabla-vacia></app-template-tabla-vacia>\n </td>\n </tr>\n </ng-template> </p-table>\n </ng-template>\n </p-accordionTab>\n <p-accordionTab *ngIf=\"paginadorParametros?.length > 0\" >\n <ng-template pTemplate=\"header\"><i class=\"glyphicons glyphicons-book\"></i>{{'servicio' | translate}} </ng-template>\n <ng-template pTemplate=\"content\">\n\n <p-table responsiveLayout=\"scroll\" [value]=\"paginadorParametros\" responsiveLaoyout=\"scroll\" \n [showCurrentPageReport]=\"true\" [scrollable]=\"true\"\n currentPageReportTemplate=\"{first} al {last} de {totalRecords} registros\"\n rowGroupMode=\"subheader\" dataKey=\"llaveunica\" groupRowsBy=\"llaveunica\" expandableRowGroups=\"true\"\n *ngIf=\"paginadorParametros.length > 0\">\n <ng-template pTemplate=\"header\">\n\n <tr class=\"fondoTablaPincipal\">\n <th>{{'parametro' | translate}}s</th>\n <th>{{'valor' | translate}}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"groupheader\" let-bean let-rowIndex=\"rowIndex\" let-expanded=\"expanded\">\n <tr>\n <td colspan=\"100\">\n <button type=\"button\" pButton pRipple [pRowToggler]=\"bean\"\n class=\"p-element p-ripple p-button-rounded mr-2 mb-2 p-button p-component p-button-desplegable p-button-icon-only\"\n [icon]=\"expanded ? 'pi pi-chevron-down' : 'pi pi-chevron-right'\"></button>\n \n <span class=\"font-bold ml-2\" style=\"line-height: 40px;\">{{bean.llaveunica}}</span>\n <br/>\n </td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"rowexpansion\" let-bean>\n <tr>\n <td>{{bean.campoAtributo}}</td>\n <td>\n <label *ngIf=\"bean.tipoDato == 'L' || bean.tipoDato == 'T'\">{{bean.cadena}}</label>\n <label *ngIf=\"bean.tipoDato == 'D' || bean.tipoDato == 'N'\">{{bean.numero}}</label>\n <label *ngIf=\"bean.tipoDato == 'F'\">{{bean.cadena | date : ('formatofecha' | translate) }}</label>\n </td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"emptymessage\">\n <tr>\n <td colspan=\"100\"> \n <app-template-tabla-vacia></app-template-tabla-vacia>\n </td>\n </tr>\n </ng-template> </p-table>\n </ng-template>\n </p-accordionTab>\n </p-accordion>\n </div>\n <div *ngIf=\"isMotor()\">\n <div class=\"flex justify-content-between align-items-center\">\n <div>\n \n </div>\n \n <div class=\"flex justify-content-end\">\n <div class=\"ml-2 mb-1 mt-2\" *ngIf=\"lineasConMensaje != 0\" >\n <p-checkbox class=\"ml-1\" [(ngModel)]=\"verInconsistencia\" [binary]=\"true\"> </p-checkbox>\n <label style=\"margin: 3px 8px;\"> {{'soloinconsistencias' | translate}}</label>\n </div>\n\n <button pButton pRipple class=\"p-button-secondary font-semibold ml-2 mb-0 mt-0\" icon=\"glyphicons glyphicons-play\"\n *ngIf=\"verBotonEjecutar && procesarDatos && (isImportacion() || isEjecucion())\"\n label=\"{{'link_ejecutar' | translate}}\" (click)=\"ejecutar()\">\n </button>\n <button pButton pRipple class=\"p-button-outlined claro font-semibold ml-2 mb-0 mt-0\" *ngIf=\"procesoDTO.llaveTabla != null\" icon=\"glyphicons glyphicons-bin\" \n label=\"{{'link_eliminar' | translate}}\" (click)=\"cancelarProceso()\">\n </button>\n <button type=\"button\" pButton pRipple icon=\"pi pi-file\" (click)=\"tabla2.exportCSV()\"\n class=\"p-button-raised p-button-export border-solid-1 border-color-400 ml-2 w-auto\" pTooltip=\"CSV\"\n tooltipPosition=\"bottom\"></button>\n <button type=\"button\" pButton pRipple icon=\"pi pi-file-excel\"\n (click)=\"dataExporter.exportExcelColumnas(tabla2.filteredValue == null ? tabla2.value : tabla2.filteredValue , 'tabla2', columnasExportExcel2)\"\n class=\"p-button-outlined ml-2 background-100 w-auto\" pTooltip=\"XLS\"\n tooltipPosition=\"bottom\"></button>\n <button type=\"button\" pButton pRipple icon=\"pi pi-file-pdf\"\n (click)=\"dataExporter.exportPdf(tabla2.filteredValue == null ? tabla2.value : tabla2.filteredValue , exportColumns2, 'tabla2')\"\n class=\"p-button-outlined ml-2 w-auto\" pTooltip=\"PDF\" tooltipPosition=\"bottom\"></button>\n </div>\n </div>\n <br/>\n <p-table #tablaDatos2 responsiveLayout=\"scroll\" [value]=\"lineasCargadas\" responsiveLaoyout=\"scroll\" [paginator]=\"true\"\n [rows]=\"10\" [totalRecords]=\"lineasCargadas.length\" [exportFilename]=\"'tablaDatos'\" [columns]=\"cols2\"\n [paginator]=\"lineasCargadas.length > 10\" [rowsPerPageOptions]=\"[10, 20, 50]\"\n [showCurrentPageReport]=\"true\" [scrollable]=\"true\"\n currentPageReportTemplate=\"{first} al {last} de {totalRecords} registros\"\n *ngIf=\" !verInconsistencia\">\n <ng-template pTemplate=\"header\">\n\n <tr class=\"fondoTablaPincipal\">\n <th>{{'numerolinea' | translate}}</th>\n <th>{{'linea' | translate}}</th>\n <th>{{'mensaje' | translate}}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\" let-bean>\n <tr [pSelectableRow]=\"bean\">\n <td>{{bean.numero}}</td>\n <td>{{bean.linea}}</td>\n <td>{{bean.mensaje}}</td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"emptymessage\">\n <tr>\n <td colspan=\"100\"> \n <app-template-tabla-vacia></app-template-tabla-vacia>\n </td>\n </tr>\n </ng-template> <ng-template pTemplate=\"footer\" let-dato >\n <tr>\n <td class=\"font-bold\" *ngIf=\"lineasConMensaje != 0 || lineasSinMensaje != 0\">{{'resumen' | translate}}: </td>\n <td class=\"font-bold\" *ngIf=\"lineasConMensaje != 0 || lineasSinMensaje != 0\">{{'cantidadlineasinmensaje' | translate}}: {{lineasSinMensaje}}</td>\n <td class=\"font-bold\" *ngIf=\"lineasConMensaje != 0 || lineasSinMensaje != 0\">{{'cantidadlineaconmensaje' | translate}}: {{lineasConMensaje}}</td>\n </tr>\n </ng-template>\n </p-table>\n <p-table responsiveLayout=\"scroll\" [value]=\"lineasInconsistencia\" responsiveLaoyout=\"scroll\" [paginator]=\"true\"\n [rows]=\"10\" [totalRecords]=\"lineasInconsistencia.length\"\n [paginator]=\"lineasInconsistencia.length > 10\" [rowsPerPageOptions]=\"[10, 20, 50]\"\n [showCurrentPageReport]=\"true\" [scrollable]=\"true\"\n currentPageReportTemplate=\"{first} al {last} de {totalRecords} registros\"\n *ngIf=\"verInconsistencia\">\n <ng-template pTemplate=\"header\">\n\n <tr class=\"fondoTablaPincipal\">\n <th>{{'numerolinea' | translate}}</th>\n <th>{{'linea' | translate}}</th>\n <th>{{'mensaje' | translate}}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\" let-bean>\n <tr [pSelectableRow]=\"bean\">\n <td>{{bean.numero}}</td>\n <td>{{bean.linea}}</td>\n <td>{{bean.mensaje}}</td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"emptymessage\">\n <tr>\n <td colspan=\"100\"> \n <app-template-tabla-vacia></app-template-tabla-vacia>\n </td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"footer\" let-dato >\n <tr>\n <td class=\"font-bold\" *ngIf=\"lineasConMensaje != 0 || lineasSinMensaje != 0\">{{'resumen' | translate}}: </td>\n <td class=\"font-bold\" *ngIf=\"lineasConMensaje != 0 || lineasSinMensaje != 0\">{{'cantidadlineasinmensaje' | translate}}: {{lineasSinMensaje}}</td>\n <td class=\"font-bold\" *ngIf=\"lineasConMensaje != 0 || lineasSinMensaje != 0\">{{'cantidadlineaconmensaje' | translate}}: {{lineasConMensaje}}</td>\n </tr>\n </ng-template>\n </p-table>\n \n </div>\n </div>\n \n \n</div>\n</div>\n", styles: ["#btn-cargar-popup .p-fileupload .p-button{background:#fff;box-shadow:none;width:auto;color:var(--color-400);padding:.85rem .1rem;border-radius:0 5px 5px 0;margin-left:-3px;border-right:solid 1px var(--color-100)}\n"] }]
575
+ args: [{ selector: 'app-importar-fuente-con', imports: [TableModule, ConfirmPopupModule, InputTextModule, TranslateModule, CheckboxModule, TabViewModule, TablaGeneralComponent, FiltroGeneralComponent, AccordionModule, DatePipe, ButtonModule, CheckboxModule, FormulariodinamicoComponent, FileUploadModule, FormsModule, FuentePipe, FormsModule, ReactiveFormsModule, CommonModule,], standalone: true, providers: [DataExporter, MessageService, ConfirmationService], template: "<p-confirmPopup></p-confirmPopup>\n<div *ngIf=\"!mostrar\">\n <div class=\"flex justify-content-between align-items-center mb-3\">\n <app-filtro-general [filtros]=\"filters\" [datatable]=\"tablaGeneral\">\n <ng-template let-form>\n <ng-container [formGroup]=\"form\">\n <span class=\"p-float-label\">\n <input pInputText autofocus type=\"text\" id=\"descripcion\" formControlName=\"descripcion\"\n autocomplete=\"off\" />\n <label for=\"descripcion\">{{'filtro' | translate}}</label>\n </span>\n </ng-container>\n </ng-template>\n </app-filtro-general>\n </div>\n <app-tabla-general #tablaGeneral [columns]=\"columns\" [value]=\"paginadorFuente\" [rows]=\"paginator.rows\"\n [totalRecords]=\"paginator.totalRecords\" (onLoad)=\"cargarlistado($event)\" (onRowSelect)=\"cargar($event)\"\n [loading]=\"loadingPaginadorFuente\"></app-tabla-general>\n</div>\n<div *ngIf=\"mostrar\">\n <div class=\"card mt-3\" *ngIf=\"fuenteDTO != null\">\n <h5 class=\"mt-3\"><i class=\"glyphicons glyphicons-book\"></i>{{'detalle' | translate}}</h5>\n <div class=\"Inputgroup p-fluid p-formgrid grid\">\n <div class=\"field col-3 md:col-3 lg:col-3\">\n <span class=\"p-float-label\">\n <input class=\"w-full\" [(ngModel)]=\"fuenteDTO.descripcion\" [disabled]=\"true\" pInputText autofocus type=\"text\" />\n <label for=\"fuente\">{{'fuente' | translate}}</label>\n </span>\n </div>\n <div class=\"field col-3 md:col-3 lg:col-3\">\n <span class=\"p-float-label\">\n <input class=\"w-full\" value=\"{{fuenteDTO.tipo | fuentePipe:'listaTipoFuente'}}\"\n [disabled]=\"true\" pInputText autofocus type=\"text\" />\n <label for=\"tipo\">{{'tipo' | translate}}</label>\n </span>\n </div>\n <div class=\"field col-3 md:col-3 lg:col-3\">\n <span class=\"p-float-label\">\n <input class=\"w-full\" value=\"{{fuenteDTO.separador | fuentePipe:'listaSeparador'}}\"\n [disabled]=\"true\" pInputText autofocus type=\"text\" />\n <label for=\"separador\">{{'separador' | translate}}</label>\n </span>\n </div>\n <div class=\"field col-3 md:col-3 lg:col-3\" *ngIf=\"procesoDTO != null\">\n <span class=\"p-float-label\">\n <input class=\"w-full\" value=\"{{procesoDTO.fechaProceso | date: ('formatofecha' | translate) }}\"\n [disabled]=\"true\" pInputText autofocus type=\"text\" />\n <label for=\"fechaproceso\">{{'fechaproceso' | translate}}</label>\n </span>\n </div>\n <div class=\"field col-3 md:col-3 lg:col-3\" *ngIf=\"nombreArchivo != null && this.panel == 'DATOS' \">\n <span class=\"p-float-label\">\n <input class=\"w-full\" [(ngModel)]=\"nombreArchivo\" [disabled]=\"true\" pInputText autofocus\n type=\"text\" />\n <label for=\"nombrearchivo\">{{'nombrearchivo' | translate}}</label>\n </span>\n </div>\n </div>\n </div>\n\n<div *ngIf=\"panel =='IMPORTAR'\">\n <p-tabView>\n <p-tabPanel header=\"{{'entrada' | translate}}\" *ngIf=\"fuenteDTO != null\">\n <div class=\"field col-12 md:col-12 lg:col-12\" *ngIf=\"fuenteDTO?.motor == 'X'\">\n <div class=\"card mt-2 mb-2\">\n <div class=\"contenedor p-fluid grid mt-1 mb-1\">\n <div class=\"field col-3 md:col-3 lg:col-3\">\n <span class=\"p-float-label\">\n <input class=\"w-full\" [(ngModel)]=\"fuenteDTO.estado\" [disabled]=\"true\" pInputText\n autofocus type=\"text\" />\n <label for=\"estado\">{{'estado' | translate}}</label>\n </span>\n </div>\n <div class=\"field col-3 md:col-3 lg:col-3\">\n <span class=\"p-float-label\">\n <input class=\"w-full\" [(ngModel)]=\"fuenteDTO.solicitaDetalle\" [disabled]=\"true\"\n pInputText autofocus type=\"text\" />\n <label for=\"detalle\">{{'detalle' | translate}}</label>\n </span>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"card mt-2 mb-2 field col-12 md:col-12 lg:col-12\" *ngIf=\"!isServicioWeb()\">\n\n <p-table [value]=\"camposArchivo\">\n <ng-template pTemplate=\"body\" let-campo>\n <tr>\n <td style=\"width: 20%;\">\n <label>{{campo.descripcion}}</label>\n </td>\n <td style=\"width: 80%\">\n <div class=\"p-fluid p-formgrid grid\">\n <div class=\"col-12 md:col-12\" id=\"btn-cargar-popup\">\n <div class=\"p-inputgroup\">\n <input pInputText [readonly]=\"true\" [value]=\"archivoSeleccionado?.name ? archivoSeleccionado?.name : ''\" disabled />\n <p-fileUpload #fubauto mode=\"basic\" [customUpload]=\"true\" chooseIcon=\"pi pi-paperclip\"\n (onSelect)=\"cargarArchivo($event, fubauto)\" ></p-fileUpload>\n </div>\n </div>\n </div>\n </td>\n </tr>\n </ng-template>\n </p-table>\n\n <formulario-dinamico #formulario [editable]=\"true\" [campos]=\"campos\" \n [objeto]=\"fuenteDTO\" *ngIf=\"verFormulario && campos.length > 0\"></formulario-dinamico>\n \n <div class=\"flex justify-content-end\">\n <button pButton pRipple class=\"m-2 p-button-outlined\"\n *ngIf=\"fuenteDTO.motor != 'X' && (isServicioWeb() || nombreArchivo != null)\" icon=\"pi pi-upload\"\n label=\"{{'link_importar' | translate}}\" (click)=\"importar()\">\n </button>\n <button pButton pRipple class=\"m-2 p-button p-button-raised\" *ngIf=\"fuenteDTO.motor =='X'\"\n label=\"{{'link_importarejecutar' | translate}}\" (click)=\"importarEjecutar()\">\n </button>\n </div>\n </div>\n </p-tabPanel>\n <p-tabPanel header=\"{{'historico' | translate}}\" *ngIf=\"paginadorProcesos.length > 0 && fuenteDTO != null\">\n\n </p-tabPanel>\n </p-tabView>\n</div>\n\n<div *ngIf=\"panel =='DATOS'\">\n\n <div class=\"card\" *ngIf=\"panelImportar =='GRUPOS'\">\n \n\n <div class=\"flex justify-content-between align-items-center mb-4 mt-3\">\n <div>\n \n </div>\n\n <div class=\"flex justify-content-end\">\n <button pButton pRipple class=\"p-button-secondary font-semibold ml-2 mb-0 mt-0\" icon=\"glyphicons glyphicons-play\"\n *ngIf=\"verBotonEjecutar && procesarDatos && (isImportacion() || isEjecucion())\"\n label=\"{{'link_ejecutar' | translate}}\" (click)=\"ejecutar()\">\n </button>\n <button pButton pRipple class=\"p-button-outlined claro font-semibold ml-2 mb-0 mt-0\" *ngIf=\"procesoDTO.llaveTabla != null\" icon=\"glyphicons glyphicons-bin\" \n label=\"{{'link_eliminar' | translate}}\" (click)=\"cancelarProceso()\">\n </button>\n <button type=\"button\" pButton pRipple icon=\"pi pi-file\" (click)=\"tabla.exportCSV()\"\n class=\"p-button-raised p-button-export border-solid-1 border-color-400 ml-2 w-auto\" pTooltip=\"CSV\"\n tooltipPosition=\"bottom\"></button>\n <button type=\"button\" pButton pRipple icon=\"pi pi-file-excel\"\n (click)=\"dataExporter.exportExcelColumnas(tabla.filteredValue == null ? tabla.value : tabla.filteredValue , 'tabla', columnasExportExcel)\"\n class=\"p-button-outlined ml-2 background-100 w-auto\" pTooltip=\"XLS\"\n tooltipPosition=\"bottom\"></button>\n <button type=\"button\" pButton pRipple icon=\"pi pi-file-pdf\"\n (click)=\"dataExporter.exportPdf(tabla.filteredValue == null ? tabla.value : tabla.filteredValue , exportColumns, 'tabla')\"\n class=\"p-button-outlined ml-2 w-auto\" pTooltip=\"PDF\" tooltipPosition=\"bottom\"></button>\n </div>\n </div>\n\n <p-table #tablaDatos responsiveLayout=\"scroll\" [value]=\"datos\" responsiveLaoyout=\"scroll\" [paginator]=\"true\"\n [rows]=\"10\" [totalRecords]=\"datos.length\" [exportFilename]=\"'tablaDatos'\"\n [paginator]=\"datos.length > 10\" [rowsPerPageOptions]=\"[10, 20, 50]\"\n [showCurrentPageReport]=\"true\" selectionMode=\"single\" [scrollable]=\"true\" [columns]=\"cols\"\n currentPageReportTemplate=\"{first} al {last} de {totalRecords} registros\" *ngIf=\"!isMotor()\"\n [(selection)]=\"grupo\" (onRowSelect)=\"verGrupo($event)\">\n \n <ng-template pTemplate=\"header\">\n\n <tr class=\"fondoTablaPincipal\">\n <th>{{'grupo' | translate}}</th>\n <th>{{'linea' | translate}}</th>\n <th>{{'advertencia' | translate}}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\" let-bean>\n <tr [pSelectableRow]=\"bean\">\n <td class=\"w-8rem font-medium\">{{bean.codigo}}</td>\n <td>\n {{bean.unicaLinea}}</td>\n <td>\n {{bean.mensajeErrores}}</td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"emptymessage\">\n <tr>\n <td colspan=\"100\" class=\"p-3 font-medium emptymessage\">{{'mensajetablavacia' | translate}}</td>\n </tr>\n </ng-template>\n </p-table>\n </div>\n\n <div *ngIf=\"panelImportar =='DETALLEGRUPO'\">\n <div *ngIf=\"!isMotor()\">\n <h5>{{'grupo' | translate}}: {{grupo.codigo}}</h5>\n <p-accordion *ngIf=\"!isMotor()\">\n <p-accordionTab [selected]=\"true\">\n <ng-template pTemplate=\"header\"><i class=\"glyphicons glyphicons-book\"></i>{{'linea' | translate}} </ng-template>\n <ng-template pTemplate=\"content\">\n \n <p-table responsiveLayout=\"scroll\" [value]=\"paginadorCampos\" responsiveLaoyout=\"scroll\"\n [showCurrentPageReport]=\"true\" [scrollable]=\"true\"\n currentPageReportTemplate=\"{first} al {last} de {totalRecords} registros\"\n rowGroupMode=\"subheader\" dataKey=\"numeroLinea\" groupRowsBy=\"numeroLinea\" expandableRowGroups=\"true\"\n *ngIf=\"paginadorCampos.length > 0\">\n <ng-template pTemplate=\"header\">\n\n <tr class=\"fondoTablaPincipal\">\n <th>{{'campo' | translate}}</th>\n <th>{{'archivo' | translate}}</th>\n <th>{{'tipo' | translate}}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"groupheader\" let-bean let-rowIndex=\"rowIndex\" let-expanded=\"expanded\">\n <tr>\n <td colspan=\"100\">\n <button type=\"button\" pButton pRipple [pRowToggler]=\"bean\"\n class=\"p-element p-ripple p-button-rounded mr-2 mb-2 p-button p-component p-button-desplegable p-button-icon-only\"\n [icon]=\"expanded ? 'pi pi-chevron-down' : 'pi pi-chevron-right'\"></button>\n \n <span class=\"font-bold ml-2\" style=\"line-height: 40px;\"> {{'linea' | translate}}:\n {{bean.numeroLinea}}</span>\n </td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"rowexpansion\" let-bean>\n <tr [pSelectableRow]=\"bean\">\n <td>{{bean.campoAtributo}}</td>\n <td>{{bean.cadena}}</td>\n <td>{{bean.tipoDato | fuentePipe : 'listaTipoDato'}}</td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"emptymessage\">\n <tr>\n <td colspan=\"100\" class=\"p-3 font-medium emptymessage\">{{'mensajetablavacia' | translate}}</td>\n </tr>\n </ng-template>\n </p-table>\n </ng-template>\n </p-accordionTab>\n <p-accordionTab *ngIf=\"paginadorParametros?.length > 0\" >\n <ng-template pTemplate=\"header\"><i class=\"glyphicons glyphicons-book\"></i>{{'servicio' | translate}} </ng-template>\n <ng-template pTemplate=\"content\">\n\n <p-table responsiveLayout=\"scroll\" [value]=\"paginadorParametros\" responsiveLaoyout=\"scroll\" \n [showCurrentPageReport]=\"true\" [scrollable]=\"true\"\n currentPageReportTemplate=\"{first} al {last} de {totalRecords} registros\"\n rowGroupMode=\"subheader\" dataKey=\"llaveunica\" groupRowsBy=\"llaveunica\" expandableRowGroups=\"true\"\n *ngIf=\"paginadorParametros.length > 0\">\n <ng-template pTemplate=\"header\">\n\n <tr class=\"fondoTablaPincipal\">\n <th>{{'parametro' | translate}}s</th>\n <th>{{'valor' | translate}}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"groupheader\" let-bean let-rowIndex=\"rowIndex\" let-expanded=\"expanded\">\n <tr>\n <td colspan=\"100\">\n <button type=\"button\" pButton pRipple [pRowToggler]=\"bean\"\n class=\"p-element p-ripple p-button-rounded mr-2 mb-2 p-button p-component p-button-desplegable p-button-icon-only\"\n [icon]=\"expanded ? 'pi pi-chevron-down' : 'pi pi-chevron-right'\"></button>\n \n <span class=\"font-bold ml-2\" style=\"line-height: 40px;\">{{bean.llaveunica}}</span>\n <br/>\n </td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"rowexpansion\" let-bean>\n <tr>\n <td>{{bean.campoAtributo}}</td>\n <td>\n <label *ngIf=\"bean.tipoDato == 'L' || bean.tipoDato == 'T'\">{{bean.cadena}}</label>\n <label *ngIf=\"bean.tipoDato == 'D' || bean.tipoDato == 'N'\">{{bean.numero}}</label>\n <label *ngIf=\"bean.tipoDato == 'F'\">{{bean.cadena | date : ('formatofecha' | translate) }}</label>\n </td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"emptymessage\">\n <tr>\n <td colspan=\"100\" class=\"p-3 font-medium emptymessage\">{{'mensajetablavacia' | translate}}</td>\n </tr>\n </ng-template>\n </p-table>\n </ng-template>\n </p-accordionTab>\n </p-accordion>\n </div>\n <div *ngIf=\"isMotor()\">\n <div class=\"flex justify-content-between align-items-center mb-4 mt-3\">\n <div>\n \n </div>\n \n <div class=\"flex justify-content-end\">\n <div class=\"ml-2 mb-1 mt-2\" *ngIf=\"lineasConMensaje != 0\" >\n <p-checkbox class=\"ml-1\" [(ngModel)]=\"verInconsistencia\" [binary]=\"true\"> </p-checkbox>\n <label style=\"margin: 3px 8px;\"> {{'soloinconsistencias' | translate}}</label>\n </div>\n\n <button pButton pRipple class=\"p-button-secondary font-semibold ml-2 mb-0 mt-0\" icon=\"glyphicons glyphicons-play\"\n *ngIf=\"verBotonEjecutar && procesarDatos && (isImportacion() || isEjecucion())\"\n label=\"{{'link_ejecutar' | translate}}\" (click)=\"ejecutar()\">\n </button>\n <button pButton pRipple class=\"p-button-outlined claro font-semibold ml-2 mb-0 mt-0\" *ngIf=\"procesoDTO.llaveTabla != null\" icon=\"glyphicons glyphicons-bin\" \n label=\"{{'link_eliminar' | translate}}\" (click)=\"cancelarProceso()\">\n </button>\n <button type=\"button\" pButton pRipple icon=\"pi pi-file\" (click)=\"tabla2.exportCSV()\"\n class=\"p-button-raised p-button-export border-solid-1 border-color-400 ml-2 w-auto\" pTooltip=\"CSV\"\n tooltipPosition=\"bottom\"></button>\n <button type=\"button\" pButton pRipple icon=\"pi pi-file-excel\"\n (click)=\"dataExporter.exportExcel(tabla2.filteredValue == null ? tabla2.value : tabla2.filteredValue , 'tabla2')\"\n class=\"p-button-outlined ml-2 background-100 w-auto\" pTooltip=\"XLS\"\n tooltipPosition=\"bottom\"></button>\n <button type=\"button\" pButton pRipple icon=\"pi pi-file-pdf\"\n (click)=\"dataExporter.exportPdf(tabla2.filteredValue == null ? tabla2.value : tabla2.filteredValue , exportColumns, 'tabla2')\"\n class=\"p-button-outlined ml-2 w-auto\" pTooltip=\"PDF\" tooltipPosition=\"bottom\"></button>\n </div>\n </div>\n <br/>\n <p-table #tablaDatos2 responsiveLayout=\"scroll\" [value]=\"lineasCargadas\" responsiveLaoyout=\"scroll\" [paginator]=\"true\"\n [rows]=\"10\" [totalRecords]=\"lineasCargadas.length\"\n [paginator]=\"lineasCargadas.length > 10\" [rowsPerPageOptions]=\"[10, 20, 50]\"\n [showCurrentPageReport]=\"true\" [scrollable]=\"true\"\n currentPageReportTemplate=\"{first} al {last} de {totalRecords} registros\"\n *ngIf=\" !verInconsistencia\">\n <ng-template pTemplate=\"header\">\n\n <tr class=\"fondoTablaPincipal\">\n <th>{{'numerolinea' | translate}}</th>\n <th>{{'linea' | translate}}</th>\n <th>{{'mensaje' | translate}}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\" let-bean>\n <tr [pSelectableRow]=\"bean\">\n <td>{{bean.numero}}</td>\n <td>{{bean.linea}}</td>\n <td>{{bean.mensaje}}</td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"emptymessage\">\n <tr>\n <td colspan=\"100\" class=\"p-3 font-medium emptymessage\">{{'mensajetablavacia' | translate}}</td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"footer\" let-dato >\n <tr>\n <td class=\"font-bold\" *ngIf=\"lineasConMensaje != 0 || lineasSinMensaje != 0\">{{'resumen' | translate}}: </td>\n <td class=\"font-bold\" *ngIf=\"lineasConMensaje != 0 || lineasSinMensaje != 0\">{{'cantidadlineasinmensaje' | translate}}: {{lineasSinMensaje}}</td>\n <td class=\"font-bold\" *ngIf=\"lineasConMensaje != 0 || lineasSinMensaje != 0\">{{'cantidadlineaconmensaje' | translate}}: {{lineasConMensaje}}</td>\n </tr>\n </ng-template>\n </p-table>\n <p-table responsiveLayout=\"scroll\" [value]=\"lineasInconsistencia\" responsiveLaoyout=\"scroll\" [paginator]=\"true\"\n [rows]=\"10\" [totalRecords]=\"lineasInconsistencia.length\"\n [paginator]=\"lineasInconsistencia.length > 10\" [rowsPerPageOptions]=\"[10, 20, 50]\"\n [showCurrentPageReport]=\"true\" [scrollable]=\"true\"\n currentPageReportTemplate=\"{first} al {last} de {totalRecords} registros\"\n *ngIf=\"verInconsistencia\">\n <ng-template pTemplate=\"header\">\n\n <tr class=\"fondoTablaPincipal\">\n <th>{{'numerolinea' | translate}}</th>\n <th>{{'linea' | translate}}</th>\n <th>{{'mensaje' | translate}}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\" let-bean>\n <tr [pSelectableRow]=\"bean\">\n <td>{{bean.numero}}</td>\n <td>{{bean.linea}}</td>\n <td>{{bean.mensaje}}</td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"emptymessage\">\n <tr>\n <td colspan=\"100\" class=\"p-3 font-medium emptymessage\">{{'mensajetablavacia' | translate}}</td>\n </tr>\n </ng-template>\n\n <ng-template pTemplate=\"footer\" let-dato >\n <tr>\n <td class=\"font-bold\" *ngIf=\"lineasConMensaje != 0 || lineasSinMensaje != 0\">{{'resumen' | translate}}: </td>\n <td class=\"font-bold\" *ngIf=\"lineasConMensaje != 0 || lineasSinMensaje != 0\">{{'cantidadlineasinmensaje' | translate}}: {{lineasSinMensaje}}</td>\n <td class=\"font-bold\" *ngIf=\"lineasConMensaje != 0 || lineasSinMensaje != 0\">{{'cantidadlineaconmensaje' | translate}}: {{lineasConMensaje}}</td>\n </tr>\n </ng-template>\n </p-table>\n \n </div>\n </div>\n \n \n</div>\n</div>\n", styles: ["#btn-cargar-popup .p-fileupload .p-button{background:#fff;box-shadow:none;width:auto;color:var(--color-400);padding:.85rem .1rem;border-radius:0 5px 5px 0;margin-left:-3px;border-right:solid 1px var(--color-100)}\n"] }]
586
576
  }], ctorParameters: () => [{ type: i1.GeneralService }, { type: i2.DataExporter }, { type: i3.AuthService }, { type: i4.FuentePipe }, { type: i5.CargueLineaService }, { type: i6.ToastService }, { type: i7.ConfirmationService }, { type: i8.MenuService }, { type: i9.GeneralPipe }, { type: i10.UtilsService }, { type: i11.ParametrosNavegacionService }, { type: i12.TranslateService }], propDecorators: { regresarFuente: [{
587
577
  type: Output
588
578
  }], formulario: [{
@@ -595,4 +585,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImpor
595
585
  type: ViewChild,
596
586
  args: ['tablaDatos2']
597
587
  }] } });
598
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wb3J0YXItZnVlbnRlLWNvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3dlYmNvbW1vbi9wYWdlcy9mdWVudGUvaW1wb3J0YXItZnVlbnRlLWNvbi9pbXBvcnRhci1mdWVudGUtY29uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvd2ViY29tbW9uL3BhZ2VzL2Z1ZW50ZS9pbXBvcnRhci1mdWVudGUtY29uL2ltcG9ydGFyLWZ1ZW50ZS1jb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQVUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRixPQUFPLEVBQUUsZUFBZSxFQUFvQixNQUFNLHFCQUFxQixDQUFDO0FBSXhFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUNwRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUN0RixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUdwRyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUNsRyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUl0RixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFHeEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG1GQUFtRixDQUFDO0FBQ3pILE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDhFQUE4RSxDQUFDO0FBQzNILE9BQU8sRUFB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YUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUsIFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IEdlbmVyYWxQaXBlIH0gZnJvbSAnLi4vLi4vLi4vcGlwZXMvZ2VuZXJhbC5waXBlJztcbmltcG9ydCB7IEdlbmVyYWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkL3NlcnZpY2lvcy9nZW5lcmFsLnNlcnZpY2UnO1xuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS9zZXJ2aWNpb3MvdG9hc3Quc2VydmljZSc7XG5pbXBvcnQgeyBHZW5lcmFsTW9kZWwgfSBmcm9tICcuLi8uLi8uLi8uLi9zZWd1cmlkYWQvbW9kZWxvcy9HZW5lcmFsTW9kZWwnO1xuaW1wb3J0IHsgUmVjdXJzb1B1bnRvTW9kZWwgfSBmcm9tICcuLi8uLi8uLi8uLi9zZWd1cmlkYWQvbW9kZWxvcy9SZWN1cnNvUHVudG9Nb2RlbCc7XG5pbXBvcnQgeyBGdWVudGVHZW5lcmFsTW9kZWwgfSBmcm9tICcuLi8uLi8uLi8uLi9zZWd1cmlkYWQvbW9kZWxvcy9GdWVudGVHZW5lcmFsTW9kZWwnO1xuaW1wb3J0IHsgRnVlbnRlUHJvY2Vzb0dlbmVyYWxNb2RlbCB9IGZyb20gJy4uLy4uLy4uLy4uL3NlZ3VyaWRhZC9tb2RlbG9zL0Z1ZW50ZVByb2Nlc29HZW5lcmFsTW9kZWwnO1xuaW1wb3J0IHsgTGlzdGFTZXJ2aWNpb01vZGVsIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2VndXJpZGFkL21vZGVsb3MvTGlzdGFTZXJ2aWNpb01vZGVsJztcbmltcG9ydCB7IEdydXBvRnVlbnRlTW9kZWwgfSBmcm9tICcuLi8uLi8uLi8uLi9zZWd1cmlkYWQvbW9kZWxvcy9HcnVwb0Z1ZW50ZU1vZGVsJztcbmltcG9ydCB7IEZ1ZW50ZUNhbXBvQXRyaWJ1dG9Nb2RlbCB9IGZyb20gJy4uLy4uLy4uLy4uL3NlZ3VyaWRhZC9tb2RlbG9zL0Z1ZW50ZUNhbXBvQXRyaWJ1dG9Nb2RlbCc7XG5pbXBvcnQgeyBGdWVudGVFbnRyYWRhTW9kZWwgfSBmcm9tICcuLi8uLi8uLi8uLi9zZWd1cmlkYWQvbW9kZWxvcy9GdWVudGVFbnRyYWRhTW9kZWwnO1xuaW1wb3J0IHsgQ3J1Y2VSZWN1cnNvUHVudG9Nb2RlbCB9IGZyb20gJy4uLy4uLy4uLy4uL3NlZ3VyaWRhZC9tb2RlbG9zL0NydWNlUmVjdXJzb1B1bnRvTW9kZWwnO1xuaW1wb3J0IHsgVGFibGVDb2x1bW4gfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL21vZGVsb3MvdGFibGUtY29sdW1uLm1vZGVsJztcbmltcG9ydCB7IENhcmd1ZUxpbmVhTW9kZWwgfSBmcm9tICcuLi8uLi8uLi8uLi9zZWd1cmlkYWQvbW9kZWxvcy9DYXJndWVMaW5lYU1vZGVsJztcbmltcG9ydCB7IEZ1ZW50ZVBpcGUgfSBmcm9tICcuLi8uLi8uLi9waXBlcy9mdWVudGUucGlwZSc7XG5pbXBvcnQgeyBDYXJndWVMaW5lYVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9jYXJndWVsaW5lYS5zZXJ2aWNlJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS9zZXJ2aWNpb3MvYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IEh0dHBFdmVudFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBDYW1wb0Zvcm11bGFyaW9Nb2RlbCB9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvY29tcG9uZW50ZXMvZm9ybXVsYXJpb2RpbmFtaWNvL29iamV0b3Nmb3JtdWxhcmlvL0NhbXBvRm9ybXVsYXJpbyc7XG5pbXBvcnQgeyBGb3JtdWxhcmlvZGluYW1pY29Db21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL2NvbXBvbmVudGVzL2Zvcm11bGFyaW9kaW5hbWljby9mb3JtdWxhcmlvZGluYW1pY28uY29tcG9uZW50JztcbmltcG9ydCB7IFRhYmxlLCBUYWJsZU1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvdGFibGUnO1xuaW1wb3J0IHsgRGF0YUV4cG9ydGVyIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS9zZXJ2aWNpb3MvZGF0YS1leHBvcnRlci10YWJsZS51dGlscyc7XG5pbXBvcnQgeyBNZW51U2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvc2VydmljaW9zL21lbnUuc2VydmljZSc7XG5pbXBvcnQgeyBVdGlsc1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL3NlcnZpY2lvcy91dGlscy5zZXJ2aWNlJztcbmltcG9ydCB7IENvbmZpcm1hdGlvblNlcnZpY2UsIE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHsgUGFyYW1ldHJvc05hdmVnYWNpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkL3NlcnZpY2lvcy9wYXJhbWV0cm9zLW5hdmVnYWNpb24uc2VydmljZSc7XG5pbXBvcnQgeyBGaWxlU2VsZWN0RXZlbnQsIEZpbGVVcGxvYWRNb2R1bGUgfSBmcm9tICdwcmltZW5nL2ZpbGV1cGxvYWQnO1xuaW1wb3J0IHsgQ29uZmlybVBvcHVwTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9jb25maXJtcG9wdXAnO1xuaW1wb3J0IHsgSW5wdXRUZXh0TW9kdWxlIH0gZnJvbSAncHJpbWVuZy9pbnB1dHRleHQnO1xuaW1wb3J0IHsgQ2hlY2tib3hNb2R1bGUgfSBmcm9tICdwcmltZW5nL2NoZWNrYm94JztcbmltcG9ydCB7IFRhYlZpZXdNb2R1bGUgfSBmcm9tICdwcmltZW5nL3RhYnZpZXcnO1xuaW1wb3J0IHsgQWNjb3JkaW9uTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9hY2NvcmRpb24nO1xuaW1wb3J0IHsgVGFibGFHZW5lcmFsQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS9jb21wb25lbnRlcy90YWJsYS1nZW5lcmFsL3RhYmxhLWdlbmVyYWwuY29tcG9uZW50JztcbmltcG9ydCB7IEZpbHRyb0dlbmVyYWxDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL2NvbXBvbmVudGVzL2ZpbHRyby1nZW5lcmFsL2ZpbHRyby1nZW5lcmFsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUsIERhdGVQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEJ1dHRvbk1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvYnV0dG9uJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgVGVtcGxhdGVUYWJsYVZhY2lhQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS9jb21wb25lbnRlcy90ZW1wbGF0ZS10YWJsYS12YWNpYS90ZW1wbGF0ZS10YWJsYS12YWNpYS5jb21wb25lbnQnO1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWltcG9ydGFyLWZ1ZW50ZS1jb24nLFxuICBpbXBvcnRzOiBbVGFibGVNb2R1bGUsIFRlbXBsYXRlVGFibGFWYWNpYUNvbXBvbmVudCwgQ29uZmlybVBvcHVwTW9kdWxlLCBJbnB1dFRleHRNb2R1bGUsICBUcmFuc2xhdGVNb2R1bGUsIENoZWNrYm94TW9kdWxlLCBUYWJWaWV3TW9kdWxlLCBUYWJsYUdlbmVyYWxDb21wb25lbnQsIEZpbHRyb0dlbmVyYWxDb21wb25lbnQsIEFjY29yZGlvbk1vZHVsZSwgRGF0ZVBpcGUsIEJ1dHRvbk1vZHVsZSwgQ2hlY2tib3hNb2R1bGUsIEZvcm11bGFyaW9kaW5hbWljb0NvbXBvbmVudCwgRmlsZVVwbG9hZE1vZHVsZSwgRm9ybXNNb2R1bGUsIEZ1ZW50ZVBpcGUsIEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBDb21tb25Nb2R1bGUsXSxcbiAgc3RhbmRhbG9uZSA6IHRydWUsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2ltcG9ydGFyLWZ1ZW50ZS1jb24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9pbXBvcnRhci1mdWVudGUtY29uLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW0RhdGFFeHBvcnRlciwgTWVzc2FnZVNlcnZpY2UsIENvbmZpcm1hdGlvblNlcnZpY2VdXG59KVxuZXhwb3J0IGNsYXNzIEltcG9ydGFyRnVlbnRlQ29uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBwdWJsaWMgY29sdW1uczogVGFibGVDb2x1bW5bXSA9IFtdO1xuICBwdWJsaWMgZmlsdGVycyA6IGFueVtdID0gW107XG4gIHB1YmxpYyBwYWdpbmFkb3JGdWVudGU6IGFueVtdID0gW107XG4gIHB1YmxpYyBwYWdpbmFkb3JHcnVwb3M6IGFueVtdID0gW107XG4gIHB1YmxpYyBwYWdpbmFkb3JTZXJ2aWNpb3M6IGFueVtdID0gW107XG4gIHB1YmxpYyBwYWdpbmFkb3JDYW1wb3M6IGFueVtdID0gW107XG4gIHB1YmxpYyBwYWdpbmFkb3JMaW5lYXM6IGFueVtdID0gW107XG4gIHB1YmxpYyBwYWdpbmFkb3JQYXJhbWV0cm9zOiBhbnlbXSA9IFtdO1xuICBwdWJsaWMgcGFnaW5hZG9yUHJvY2Vzb3M6IGFueVtdID0gW107XG4gIHB1YmxpYyBmdWVudGVEVE86IEZ1ZW50ZUdlbmVyYWxNb2RlbCA9IG5ldyBGdWVudGVHZW5lcmFsTW9kZWw7XG4gIHB1YmxpYyBwcm9jZXNvRFRPOiBGdWVudGVQcm9jZXNvR2VuZXJhbE1vZGVsO1xuICBwdWJsaWMgZnVlbnRlOiBzdHJpbmc7XG4gIHB1YmxpYyBwYW5lbDogc3RyaW5nO1xuICBwdWJsaWMgcGFuZWxJbXBvcnRhcjogc3RyaW5nO1xuICBwdWJsaWMgcHVudG9Qcm9jZXNvOiBzdHJpbmc7XG4gIHB1YmxpYyB2ZXJGb3JtdWxhcmlvOiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBwcm9jZXNhckRhdG9zOiBib29sZWFuO1xuICBwdWJsaWMgZWplY3V0YXJEYXRvczogYm9vbGVhbjtcbiAgcHVibGljIGNvbnN1bHRhclBvclJlY3Vyc286IGJvb2xlYW47XG4gIHB1YmxpYyBtb3N0cmFyOiBib29sZWFuO1xuICBwdWJsaWMgdmVyQm90b25FamVjdXRhcjogYm9vbGVhbjtcbiAgcHVibGljIG5vbWJyZUFyY2hpdm86IHN0cmluZztcbiAgcHVibGljIHJ1dGFBcmNoaXZvOiBzdHJpbmc7XG4gIHB1YmxpYyBzZXJ2aWNpb3M6IExpc3RhU2VydmljaW9Nb2RlbFtdID0gW107XG4gIHB1YmxpYyBncnVwbzogR3J1cG9GdWVudGVNb2RlbDtcbiAgcHVibGljIHNlcnZpY2lvOiBhbnk7XG4gIHB1YmxpYyBsaW5lYUZ1ZW50ZTogYW55O1xuICBwdWJsaWMgcHJvZ3Jlc286IG51bWJlcjtcbiAgcHVibGljIHBhcmFtZXRyb3NQdW50bzogRnVlbnRlQ2FtcG9BdHJpYnV0b01vZGVsW109W107XG4gIC8vcHRlIGZvcm1cbiAgcHVibGljIGFjY2lvbjogYW55O1xuICBwdWJsaWMgZW50cmFkYXM6IEZ1ZW50ZUNhbXBvQXRyaWJ1dG9Nb2RlbFtdPVtdO1xuICBwdWJsaWMgbGluZWFzQ2FyZ2FkYXM6IENhcmd1ZUxpbmVhTW9kZWxbXT1bXTtcblx0cHVibGljIGxpbmVhc0luY29uc2lzdGVuY2lhOiBDYXJndWVMaW5lYU1vZGVsW109W107XG4gIHB1YmxpYyB2ZXJJbmNvbnNpc3RlbmNpYTogYm9vbGVhbjtcblx0cHVibGljIGxpbmVhc1Npbk1lbnNhamU6IG51bWJlcjtcblx0cHVibGljIGxpbmVhc0Nvbk1lbnNhamU6IG51bWJlcjtcbiAgcHVibGljIGRhdG9zOiBHcnVwb0Z1ZW50ZU1vZGVsW109W107XG4gIHB1YmxpYyBsbGF2ZVByb2Nlc29DYXJndWVGdWVudGVCRDogc3RyaW5nO1xuICBwdWJsaWMgY2FtcG9zOiBDYW1wb0Zvcm11bGFyaW9Nb2RlbFtdID0gW107XG4gIHB1YmxpYyBjb2xzOmFueVtdXG4gIHB1YmxpYyBjb2xzMjphbnlbXVxuICBwdWJsaWMgZXhwb3J0Q29sdW1uczogYW55W107XG4gIHB1YmxpYyBleHBvcnRDb2x1bW5zMjogYW55W107XG4gIHB1YmxpYyBlc3RhZG9SZWdyZXNhcjogc3RyaW5nID0gbnVsbDtcbiAgcHVibGljIGNvbHVtbmFzRXhwb3J0RXhjZWwgPSBbJ2NvZGlnbycsICd1bmljYUxpbmVhJywgJ21lbnNhamVFcnJvcmVzJ107XG4gIHB1YmxpYyBjb2x1bW5hc0V4cG9ydEV4Y2VsMiA9IFsnbnVtZXJvJywgJ2xpbmVhJywgJ21lbnNhamUnXTtcblxuXG4gIHB1YmxpYyBwYWdpbmF0b3IgPSB7XG4gICAgcm93czogMTAsXG4gICAgdG90YWxSZWNvcmRzOiAwLFxuICB9O1xuICBwdWJsaWMgbG9hZGluZ1BhZ2luYWRvckZ1ZW50ZTogYm9vbGVhbiA9IGZhbHNlO1xuICBwdWJsaWMgYXJjaGl2b1NlbGVjY2lvbmFkbzogYW55O1xuICBwdWJsaWMgcmVncmVzYXJQdW50b1Byb2Nlc286IHN0cmluZyA9IG51bGw7XG5cbiAgcHVibGljIGNhbXBvc0FyY2hpdm86IGFueVtdID0gW11cblxuICBwdWJsaWMgQUNDSU9OICA9IHtcbiAgICBJTVBPUlRBUiA6ICdwcm9jZXNhbmRvIGVsIGFyY2hpdm8nLFxuICAgIEVKRUNVVEFSOiAnRWplY3V0YW5kbyBsb3MgU2VydmljaW9zJyxcbiAgICBWRVI6ICdDb25zdWx0YW5kbycsXG4gICAgRElSRUNUTzogJ1Byb2Nlc2FuZG8gYXJjaGl2by1zZXJ2aWNpb3MnLFxuICB9XG5cbiAgcHVibGljIFBBTkVMID0ge1xuICAgIElNUE9SVEFSOiAnSU1QT1JUQVInLFxuICAgIERBVE9TOiAnREFUT1MnLFxuICAgIEdSVVBPUzogJ0dSVVBPUycsXG4gICAgREVUQUxMRUdSVVBPOiAnREVUQUxMRUdSVVBPJ1xuICB9XG4gIEBPdXRwdXQoKSBwdWJsaWMgcmVncmVzYXJGdWVudGU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAVmlld0NoaWxkKCdmb3JtdWxhcmlvJykgZm9ybXVsYXJpbzogRm9ybXVsYXJpb2RpbmFtaWNvQ29tcG9uZW50O1xuICBAVmlld0NoaWxkKCd0YWJsYURhdG9zJykgdGFibGE6IFRhYmxlO1xuICBAVmlld0NoaWxkKCd0YWJsYURhdG9zMicpIHRhYmxhMjogVGFibGU7XG5cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGdlbmVyYWxTZXJ2aWNlOiBHZW5lcmFsU2VydmljZSxcbiAgICAgICAgICAgICAgcHVibGljIGRhdGFFeHBvcnRlcjogRGF0YUV4cG9ydGVyLFxuICAgICAgICAgICAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBmdWVudGVQaXBlOiBGdWVudGVQaXBlLFxuICAgICAgICAgICAgICBwcml2YXRlIGNhcmd1ZUxpbmVhU2VydmljZTogQ2FyZ3VlTGluZWFTZXJ2aWNlLFxuICAgICAgICAgICAgICBwcml2YXRlIG5vdGlmaWNhY2lvbmVzU2VydmljZTogVG9hc3RTZXJ2aWNlLFxuICAgICAgICAgICAgICBwcml2YXRlIGNvbmZpcm1hdGlvblNlcnZpY2U6IENvbmZpcm1hdGlvblNlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgbWVudVNlcnZpY2U6IE1lbnVTZXJ2aWNlLFxuICAgICAgICAgICAgICBwcml2YXRlIGdlbmVyYWxQaXBlOiBHZW5lcmFsUGlwZSxcbiAgICAgICAgICAgICAgcHVibGljIHV0aWxzU2VydmljZTogVXRpbHNTZXJ2aWNlLFxuICAgICAgICAgICAgICBwcml2YXRlIHBhcmFtZXRyb3NOYXZlZ2FjaW9uU2VydmljZTogUGFyYW1ldHJvc05hdmVnYWNpb25TZXJ2aWNlLFxuICAgICAgICAgICAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2UgOiBUcmFuc2xhdGVTZXJ2aWNlKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuY2FtcG9zQXJjaGl2byA9IFt7ZGVzY3JpcGNpb246IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdub21icmVhcmNoaXZvJykgKyAnKid9XVxuICAgIHRoaXMudmVyQm90b25FamVjdXRhciA9IGZhbHNlO1xuICAgIHRoaXMubGluZWFzQ2FyZ2FkYXMgPSBbXTtcbiAgICB0aGlzLmxpbmVhc0luY29uc2lzdGVuY2lhID0gW107XG4gICAgdGhpcy5jb2x1bW5zID0gW1xuICAgICAge1xuICAgICAgICBmaWVsZDogICdkZXNjcmlwY2lvbicsXG4gICAgICAgIGhlYWRlcjogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ2Z1ZW50ZScpLFxuICAgICAgICB3aWR0aDogMTAwLFxuICAgICAgfSxcbiAgICBdO1xuICAgIHRoaXMuZmlsdGVycyA9IFtcbiAgICAgIHtcbiAgICAgICAgZmllbGQ6ICdkZXNjcmlwY2lvbicsXG4gICAgICAgIGhlYWRlcjogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ2Rlc2NyaXBjaW9uJyksXG4gICAgICAgIG1hdGNoTW9kZTogJ2NvbnRhaW5zJyxcbiAgICAgIH1cbiAgICBdO1xuICAgIHRoaXMuY3JlYXJDb2x1bW5hc0V4cG9ydGFyKClcbiAgICBpZiAodGhpcy5wYXJhbWV0cm9zTmF2ZWdhY2lvblNlcnZpY2UuZ2V0UGFyYW1ldHJvcygpKXtcbiAgICAgIHRoaXMucmVncmVzYXJQdW50b1Byb2Nlc28gPSB0aGlzLnBhcmFtZXRyb3NOYXZlZ2FjaW9uU2VydmljZS5nZXRQYXJhbWV0cm9zKCkucmVncmVzYXI7IFxuICAgICAgdGhpcy5jYXJnYXIodGhpcy5wYXJhbWV0cm9zTmF2ZWdhY2lvblNlcnZpY2UuZ2V0UGFyYW1ldHJvcygpLmZ1ZW50ZSk7XG4gICAgfVxuICB9XG5cbiAgY3JlYXJDb2x1bW5hc0V4cG9ydGFyKCkge1xuICAgIHRoaXMuY29scyA9IFtcbiAgICAgIHsgZmllbGQ6ICdjb2RpZ28nLCBoZWFkZXI6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdncnVwbycpLCBjdXN0b21FeHBvcnRIZWFkZXI6ICdQcnVlYmEnIH0sXG4gICAgICB7IGZpZWxkOiAndW5pY2FMaW5lYScsIGhlYWRlcjogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ2xpbmVhJykgfSxcbiAgICAgIHsgZmllbGQ6ICdtZW5zYWplRXJyb3JlcycsIGhlYWRlcjogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ2FkdmVydGVuY2lhJykgfSxcbiAgICBdO1xuXG4gICAgdGhpcy5leHBvcnRDb2x1bW5zID0gdGhpcy5jb2xzLm1hcChjb2wgPT4gKHsgdGl0bGU6IGNvbC5oZWFkZXIsIGRhdGFLZXk6IGNvbC5maWVsZCB9KSk7XG5cbiAgICB0aGlzLmNvbHMyID0gW1xuICAgICAgeyBmaWVsZDogJ251bWVybycsIGhlYWRlcjogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ251bWVyb2xpbmVhJyksIGN1c3RvbUV4cG9ydEhlYWRlcjogJ1BydWViYScgfSxcbiAgICAgIHsgZmllbGQ6ICdsaW5lYScsIGhlYWRlcjogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ2xpbmVhJykgfSxcbiAgICAgIHsgZmllbGQ6ICdtZW5zYWplJywgaGVhZGVyOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnbWVuc2FqZScpIH0sXG4gICAgXTtcblxuICAgIHRoaXMuZXhwb3J0Q29sdW1uczIgPSB0aGlzLmNvbHMyLm1hcChjb2wgPT4gKHsgdGl0bGU6IGNvbC5oZWFkZXIsIGRhdGFLZXk6IGNvbC5maWVsZCB9KSk7XG4gIH1cblxuICB0cmFlckZ1ZW50ZSgpIHtcbiAgICBpZiAoIXRoaXMucGFyYW1ldHJvc05hdmVnYWNpb25TZXJ2aWNlLmdldFBhcmFtZXRyb3MoKSl7XG4gICAgICB0aGlzLmZ1ZW50ZURUTyA9IG51bGw7XG4gICAgICB0aGlzLmNvbnN1bHRhclBvclJlY3Vyc28gPSBmYWxzZTtcbiAgICAgIC8vaW5pY2lhcigpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGNhcmdhcmxpc3RhZG8oZXZlbnQpe1xuICAgIHRoaXMubG9hZGluZ1BhZ2luYWRvckZ1ZW50ZSA9IHRydWU7XG4gICAgdmFyIG9iamV0byA9IHtcbiAgICAgIHBhZ2luYWNpb25SZWdpc3Ryb0luaWNpYWw6IGV2ZW50LmZpcnN0LFxuICAgICAgcGFnaW5hY2lvblJlZ2lzdHJvRmluYWw6IGV2ZW50LnJvd3MsXG4gICAgICBsb2dpbjogdGhpcy5hdXRoU2VydmljZS5nZXRUb2tlbktleSgndXN1YXJpbycpLFxuICAgICAgcm9sOiB0aGlzLmF1dGhTZXJ2aWNlLmdldFRva2VuS2V5KCdhbGlhc1JvbCcpLFxuICAgICAgcHVudG9Qcm9jZXNvOiB0aGlzLmNvbnN1bHRhclBvclJlY3Vyc28gPyB0aGlzLnB1bnRvUHJvY2VzbyA6IG51bGwsXG4gICAgICBmdWVudGVHZW5lcmFsOiB0aGlzLmNvbnN1bHRhclBvclJlY3Vyc28gPyBudWxsIDogJ1MnLFxuICAgICAgYXBsaWNhY2lvbjogdGhpcy5jb25zdWx0YXJQb3JSZWN1cnNvID8gbnVsbCA6IHRoaXMuYXV0aFNlcnZpY2UuZ2V0VG9rZW5LZXkoJ2FwbGljYWNpb24nKS5wYWRFbmQoMTApLFxuICAgICAgZGVzY3JpcGNpb246IGV2ZW50LmZpbHRlcnM/LmRlc2NyaXBjaW9uPy52YWx1ZSA/ICclJyArIGV2ZW50LmZpbHRlcnM/LmRlc2NyaXBjaW9uPy52YWx1ZSArICclJyA6IG51bGxcbiAgICB9XG4gICAgdGhpcy5nZW5lcmFsU2VydmljZS5xdWVyeUZvckxpc3QobmV3IEdlbmVyYWxNb2RlbCgnRnVlbnRlR2VuZXJhbERUTycsIG51bGwsIGZhbHNlLCBvYmpldG8pKS5zdWJzY3JpYmUoZGF0YSA9PiB7XG4gICAgICB0aGlzLnBhZ2luYWRvckZ1ZW50ZSA9IGRhdGE7XG4gICAgICB0aGlzLmxvYWRpbmdQYWdpbmFkb3JGdWVudGUgPSBmYWxzZTtcbiAgICAgIHRoaXMuZ2VuZXJhbFNlcnZpY2UuY2FudGlkYWRSZWdpc3Ryb3MobmV3IEdlbmVyYWxNb2RlbCgnRnVlbnRlR2VuZXJhbERUTycsIG51bGwsIGZhbHNlLCBvYmpldG8pKS5zdWJzY3JpYmUoZGF0YSA9PiB7XG4gICAgICAgIHRoaXMucGFnaW5hdG9yLnRvdGFsUmVjb3JkcyA9IGRhdGE7XG4gICAgICAgIHRoaXMudXRpbHNTZXJ2aWNlLnJlc2l6ZVdpbmRvd0lGcmFtZSgpO1xuICAgICAgfSlcbiAgICB9KVxuICB9XG5cbiAgY2FyZ2FyKGV2ZW50KXtcbiAgICB0aGlzLmFyY2hpdm9TZWxlY2Npb25hZG8gPSBudWxsO1xuICAgIHRoaXMucmVncmVzYXJGdWVudGUuZW1pdChmYWxzZSlcbiAgICB0aGlzLmZ1ZW50ZURUTyA9IGV2ZW50O1xuICAgIHRoaXMubWVudVNlcnZpY2Uuc2V0QnJlYWRjcnVtYihbeyBsYWJlbDogJ0xpc3RhIEZ1ZW50ZXMgZGUgSW1wb3J0YWNpw7NuJywgY29tbWFuZDogKGV2ZW50KSA9PntcbiAgICAgIGxvY2F0aW9uLnJlbG9hZCgpXG4gICAgfX0sIHsgbGFiZWw6ICdEZXRhbGxlIEZ1ZW50ZXMgZGUgSW1wb3J0YWNpw7NuJyB9XSk7XG4gICAgdGhpcy5udWV2b1Byb2Nlc28oKS50aGVuKGRhdGEgPT4ge1xuICAgICAgaWYgKHRoaXMuaXNNb3RvcigpKXtcbiAgICAgICAgdGhpcy5wcmVwYXJhckNhbXBvc1BhcmFJbXBvcnRhcigpLnRoZW4oZGF0YSA9PiB7dGhpcy51dGlsc1NlcnZpY2UucmVzaXplV2luZG93SUZyYW1lKCk7fSk7XG4gICAgICB9XG4gICAgICB0aGlzLnV0aWxzU2VydmljZS5yZXNpemVXaW5kb3dJRnJhbWUoKTtcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIG51ZXZvUHJvY2VzbygpIHtcbiAgICB0aGlzLnZlckJvdG9uRWplY3V0YXIgPSB0cnVlO1xuICAgIHRoaXMucHJvY2Vzb0RUTyA9IG5ldyBGdWVudGVQcm9jZXNvR2VuZXJhbE1vZGVsKCk7XG4gICAgdGhpcy5wcm9jZXNvRFRPLmZ1ZW50ZSA9IHRoaXMuZnVlbnRlRFRPLmxsYXZlVGFibGE7XG4gICAgdGhpcy5wcm9jZXNvRFRPLnVzdWFyaW8gPSB0aGlzLmF1dGhTZXJ2aWNlLmdldFRva2VuS2V5KCd1c3VhcmlvJyk7XG4gICAgdGhpcy5wcm9jZXNvRFRPLmZlY2hhUHJvY2VzbyA9IG5ldyBEYXRlKCk7XG4gICAgYXdhaXQgdGhpcy5wcmVwYXJhckNhbXBvc1BhcmFJbXBvcnRhcigpO1xuICB9XG5cbiAgYXN5bmMgcHJlcGFyYXJDYW1wb3NQYXJhSW1wb3J0YXIoKSB7XG5cdFx0dGhpcy5wYW5lbCA9ICdJTVBPUlRBUic7Ly9QQU5FTC5JTVBPUlRBUi5nZXRQYW5lbCgpO1xuXHRcdHRoaXMucnV0YUFyY2hpdm8gPSBudWxsO1xuXHRcdHRoaXMubm9tYnJlQXJjaGl2byA9IG51bGw7XG5cdFx0dGhpcy5tb3N0cmFyID0gdHJ1ZTtcbiAgICBhd2FpdCB0aGlzLmNhcmdhckZvcm11bGFyaW9DYW1wb3NFbnRyYWRhKClcbiAgfVxuXG4gIGFzeW5jIGNhcmdhckZvcm11bGFyaW9DYW1wb3NFbnRyYWRhKCl7XG4gICAgYXdhaXQgdGhpcy5jYXJnYXJQYXJhbWV0cm9zUHVudG9Qcm9jZXNvKClcbiAgICB0aGlzLmNhbXBvcyA9IGF3YWl0IHRoaXMuY2FtcG9zRW50cmFkYSh0aGlzLmZ1ZW50ZURUTywgdGhpcy5wYXJhbWV0cm9zUHVudG8pO1xuICAgIGlmICh0aGlzLmNhbXBvcyA9PSBudWxsIHx8IHRoaXMuY2FtcG9zLmxlbmd0aCA8PSAwKSB7XG5cdFx0XHR0aGlzLnZlckZvcm11bGFyaW8gPSBmYWxzZTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0dGhpcy52ZXJGb3JtdWxhcmlvID0gdHJ1ZTtcbiAgICB0aGlzLnV0aWxzU2VydmljZS5yZXNpemVXaW5kb3dJRnJhbWUoKTtcbiAgfVxuXG4gIGFzeW5jIGNhbXBvc0VudHJhZGEoZnVlbnRlOiBGdWVudGVHZW5lcmFsTW9kZWwsIHBhcmFtZXRyb3NQdW50bzogRnVlbnRlQ2FtcG9BdHJpYnV0b01vZGVsW10pIHtcbiAgaWYgKGZ1ZW50ZSA9PSBudWxsKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgdmFyIHJldG9ybm86IENhbXBvRm9ybXVsYXJpb01vZGVsW10gPSBbXTtcbiAgdmFyIGVudHJhZGFzOiBGdWVudGVFbnRyYWRhTW9kZWxbXSA9IGF3YWl0IHRoaXMuZ2VuZXJhbFNlcnZpY2UucXVlcnlGb3JMaXN0KG5ldyBHZW5lcmFsTW9kZWwoJ0Z1ZW50ZUVudHJhZGFEVE8nLCBudWxsLCBmYWxzZSwge2Z1ZW50ZTogZnVlbnRlLmxsYXZlVGFibGF9KSkudG9Qcm9taXNlKCk7XG4gIGlmIChlbnRyYWRhcyA9PSBudWxsIHx8IGVudHJhZGFzLmxlbmd0aCA8PSAwKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgZW50cmFkYXM6IGZvciAobGV0IGkgPSAwOyBpIDwgZW50cmFkYXMubGVuZ3RoIDsgaSsrKSB7XG4gICAgdmFyIGVsZW1lbnQgPSBlbnRyYWRhc1tpXSBcbiAgICA7Zm9yIChsZXQgaiA9IDA7IGogPCBwYXJhbWV0cm9zUHVudG8ubGVuZ3RoOyBqKyspIHtcbiAgICAgIHZhciBwdW50b3Byb2Nlc28gPSBwYXJhbWV0cm9zUHVudG9bal1cbiAgICAgIGlmIChwdW50b3Byb2Nlc28uY2FtcG9BdHJpYnV0byA9PSBlbGVtZW50LmRlc2NyaXBjaW9uKSB7XG4gICAgICAgIGNvbnRpbnVlIGVudHJhZGFzO1xuICAgICAgfVxuICAgIH1cbiAgICB2YXIgZGF0byA9IG5ldyBGdWVudGVDYW1wb0F0cmlidXRvTW9kZWwoKTtcbiAgICBkYXRvLmNhbXBvQXRyaWJ1dG8gPSBlbGVtZW50LmRlc2NyaXBjaW9uO1xuICAgIHZhciBlZGl0YWJsZTogc3RyaW5nID0gbnVsbDtcbiAgICBpZiAoZWxlbWVudC50aXBvRGF0byA9PSB0aGlzLmZ1ZW50ZVBpcGUuTExBVkUpIHtcbiAgICAgIGVsZW1lbnQudGlwb0RhdG8gPSB0aGlzLmZ1ZW50ZVBpcGUuVEVYVE87XG4gICAgICBkYXRvLmNhZGVuYSA9IHRoaXMudXRpbHNTZXJ2aWNlLmdlbmVyYXJMbGF2ZSgpO1xuICAgICAgZWRpdGFibGUgPSBcIk5cIjtcbiAgICB9XG4gICAgZGF0by50aXBvRGF0byA9IGVsZW1lbnQudGlwb0RhdG87XG4gICAgdmFyIGNhbXBvID0gbmV3IENhbXBvRm9ybXVsYXJpb01vZGVsKGVsZW1lbnQudGlwb0RhdG8sIGVsZW1lbnQuZGVzY3JpcGNpb24sXG4gICAgICAgIHRoaXMuZGV0ZXJtaW5hckxvbmdpdHVkKGVsZW1lbnQudGlwb0RhdG8pLCAwLCBlbGVtZW50LmRlc2NyaXBjaW9uLFxuICAgICAgICBlbGVtZW50Lm9ibGlnYXRvcmlvID09ICdTJywgbnVsbCwgbnVsbCwgZWRpdGFibGUpO1xuICAgIGNhbXBvLmRhdG8gPSBkYXRvO1xuICAgIGlmIChkYXRvLnRpcG9EYXRvID09IHRoaXMuZnVlbnRlUGlwZS5URVhUTyB8fCBkYXRvLnRpcG9EYXRvID09IHRoaXMuZnVlbnRlUGlwZS5MT0dJQ08pIHtcbiAgICAgIGNhbXBvLnZhbG9yID0gZGF0by5jYWRlbmE7XG4gICAgfSBlbHNlIGlmIChkYXRvLnRpcG9EYXRvID09IHRoaXMuZnVlbnRlUGlwZS5OVU1FUk8pIHtcbiAgICAgIGNhbXBvLnZhbG9yID0gZGF0by5udW1lcm87XG4gICAgfSBlbHNlIGlmIChkYXRvLnRpcG9EYXRvID09IHRoaXMuZnVlbnRlUGlwZS5ERUNJTUFMKSB7XG4gICAgICBjYW1wby52YWxvciA9IGRhdG8ubnVtZXJvO1xuICAgICAgY2FtcG8uZGVjaW1hbGVzID0gMjtcbiAgICB9IGVsc2UgaWYgKGRhdG8udGlwb0RhdG8gPT0gdGhpcy5mdWVudGVQaXBlLkZFQ0hBKSB7XG4gICAgICBpZiAoZWxlbWVudC52YWxvckRlZmVjdG8gIT0gbnVsbCkge1xuICAgICAgICBkYXRvLmZvcm1hdG8gPSBcInl5eXkvTU0vZGRcIjtcbiAgICAgICAgY2FtcG8udmFsb3IgPSBuZXcgRGF0ZSh0aGlzLm9idGVuZXJWYWxvck1hcmNhZG9yKGVsZW1lbnQudmFsb3JEZWZlY3RvKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjYW1wby52YWxvciA9IGRhdG8uZmVjaGE7XG4gICAgICB9XG4gICAgfVxuICAgIGNhbXBvLmNhcmFjdGVyaXN0aWNhID0gdHJ1ZTtcbiAgICByZXRvcm5vLnB1c2goY2FtcG8pO1xuICB9XG4gIHJldHVybiByZXRvcm5vO1xufVxuXG5vYnRlbmVyVmFsb3JNYXJjYWRvcih2YWxvckVudHJhZGE6IHN0cmluZykge1xuICBpZiAodmFsb3JFbnRyYWRhID09IG51bGwgfHwgdmFsb3JFbnRyYWRhLnRyaW0oKS5sZW5ndGggPD0gMCB8fCB2YWxvckVudHJhZGEudHJpbSgpID09IFwibnVsbFwiKSB7XG4gICAgcmV0dXJuIHZhbG9yRW50cmFkYTtcbiAgfVxuICBpZiAodmFsb3JFbnRyYWRhLnRvVXBwZXJDYXNlKCkuaW5jbHVkZXMoXCJBTk5PSE9ZXCIpIHx8IHZhbG9yRW50cmFkYS50b1VwcGVyQ2FzZSgpLmluY2x1ZGVzKFwiTUVTSE9ZXCIpKSB7XG4gICAgdmFyIGZvcm11bGFDYW1wbyA9IHZhbG9yRW50cmFkYS50b1VwcGVyQ2FzZSgpO1xuICAgIHZhciBob3kgPSBuZXcgRGF0ZSgpO1xuICAgIGZvcm11bGFDYW1wbyA9IGZvcm11bGFDYW1wby5yZXBsYWNlKFwiQU5OT0hPWVwiLCBob3kuZ2V0RnVsbFllYXIoKS50b1N0cmluZygpKTtcbiAgICBmb3JtdWxhQ2FtcG8gPSBmb3JtdWxhQ2FtcG8ucmVwbGFjZShcIk1FU0hPWVwiLCAoaG95LmdldE1vbnRoKCkgKyAxKS50b1N0cmluZygpKTtcbiAgICByZXR1cm4gZm9ybXVsYUNhbXBvO1xuICB9XG4gIHJldHVybiB2YWxvckVudHJhZGE7XG59XG5cbmRldGVybWluYXJMb25naXR1ZCh0aXBvRGF0bzogc3RyaW5nKSB7XG4gIGlmICh0aXBvRGF0byA9PSBudWxsKSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cbiAgaWYgKHRoaXMuZnVlbnRlUGlwZS5URVhUTyA9PSB0aXBvRGF0bykge1xuICAgIHJldHVybiAxMDA7XG4gIH1cbiAgaWYgKHRoaXMuZnVlbnRlUGlwZS5MT0dJQ08gPT0gdGlwb0RhdG8pIHtcbiAgICByZXR1cm4gNTtcbiAgfVxuICByZXR1cm4gMjA7XG59XG5cbiAgYXN5bmMgY2FyZ2FyUGFyYW1ldHJvc1B1bnRvUHJvY2Vzbygpe1xuICAgIHRoaXMucGFyYW1ldHJvc1B1bnRvID0gW107XG5cdFx0aWYgKHRoaXMucHVudG9Qcm9jZXNvID09IG51bGwgfHwgdGhpcy5wdW50b1Byb2Nlc28udHJpbSgpLmxlbmd0aCA8PSAwKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdC8vIGNvbnN1bHRhIGxvcyBjYW1wb3MgZGVsIGNydWNlIGVudHJlIGVsIHB1bnRvIHByb2Nlc28geSBsYSBmdWVudGVcbiAgICB2YXIgY29uc3VsdGFyOiBSZWN1cnNvUHVudG9Nb2RlbCA9IG5ldyBSZWN1cnNvUHVudG9Nb2RlbCgpO1xuXHRcdGNvbnN1bHRhci5wdW50b1Byb2Nlc28gPSB0aGlzLnB1bnRvUHJvY2Vzbztcblx0XHRjb25zdWx0YXIuZnVlbnRlID0gdGhpcy5mdWVudGVEVE8ubGxhdmVUYWJsYTtcblx0XHRjb25zdWx0YXIgPSBhd2FpdCB0aGlzLmdlbmVyYWxTZXJ2aWNlLnF1ZXJ5Rm9yT2JqZWN0KG5ldyBHZW5lcmFsTW9kZWwoJ1JlY3Vyc29QdW50b0RUTycsIG51bGwsIGZhbHNlLCBjb25zdWx0YXIpKS50b1Byb21pc2UoKTtcblx0XHRpZihjb25zdWx0YXI9PW51bGwpe1xuXHRcdFx0dGhpcy5ub3RpZmljYWNpb25lc1NlcnZpY2Uuc2hvd0Vycm9yKFwiTm8gZXhpc3RlIGVsIHJlY3Vyc28gcHVudG8gcGFyYSBlc2UgcHVudG8gZGVsIHByb2Nlc28geSBmdWVudGVcIik7XG4gICAgICByZXR1cm47XG5cdFx0fVxuICAgIHZhciBjcnVjZXM6IENydWNlUmVjdXJzb1B1bnRvTW9kZWxbXSA9IGF3YWl0IHRoaXMuZ2VuZXJhbFNlcnZpY2UucXVlcnlGb3JMaXN0KG5ldyBHZW5lcmFsTW9kZWwoJ0NydWNlUmVjdXJzb1B1bnRvRFRPJywgJ0NydWNlUmVjdXJzb1B1bnRvLmNvbnN1bHRhckNydWNlUG9yUmVjdXJzbycsIGZhbHNlLCB7XG4gICAgICByZWN1cnNvUHVudG86IGNvbnN1bHRhci5sbGF2ZVRhYmxhXG4gICAgfSkpLnRvUHJvbWlzZSgpXG5cdFx0Y3J1Y2VzLmZvckVhY2goYXN5bmMgY3J1Y2UgPT4ge1xuXHRcdFx0XHQvLyBidXNjYW1vcyBxdWUgZXhpc3RhIHRvZGF2aWEgZWwgY2FtcG8gY29tbyBlbnRyYWRhIGRlIGxhXG5cdFx0XHRcdC8vIGZ1ZW50ZVxuXHRcdFx0XHR2YXIgYnVzY2FyRW50cmFkYTogRnVlbnRlRW50cmFkYU1vZGVsID0gbmV3IEZ1ZW50ZUVudHJhZGFNb2RlbCgpO1xuXHRcdFx0XHRidXNjYXJFbnRyYWRhLmxsYXZlVGFibGEgPSBjcnVjZS5mdWVudGVFbnRyYWRhO1xuXHRcdFx0XHRidXNjYXJFbnRyYWRhID0gYXdhaXQgdGhpcy5nZW5lcmFsU2VydmljZS5xdWVyeUZvck9iamVjdChuZXcgR2VuZXJhbE1vZGVsKCdGdWVudGVFbnRyYWRhRFRPJywgbnVsbCwgZmFsc2UsIGJ1c2NhckVudHJhZGEpKS50b1Byb21pc2UoKTtcblx0XHRcdFx0aWYgKGJ1c2NhckVudHJhZGEgPT0gbnVsbCkge1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0XHQvLyBvYnRlbmVtb3MgZWwgdmFsb3IgeSBsbyBjb252ZXJ0aW1vcyBhbCBhIHVuIGF0cmlidXRvIGRlIGxhXG5cdFx0XHRcdC8vIGZ1ZW50ZSBwYXJhIHF1ZSBzZSB1c2UgZW4gbG9zIHNlcnZpY2lvc1xuXHRcdFx0XHR2YXIgZGF0byA9IG5ldyBGdWVudGVDYW1wb0F0cmlidXRvTW9kZWwoKTtcblx0XHRcdFx0ZGF0by5jYW1wb0F0cmlidXRvID0gYnVzY2FyRW50cmFkYS5kZXNjcmlwY2lvbjtcblx0XHRcdFx0ZGF0by5mdWVudGVFbnRyYWRhID0gYnVzY2FyRW50cmFkYS5sbGF2ZVRhYmxhO1xuXHRcdFx0XHRkYXRvLnRpcG9EYXRvID0gYnVzY2FyRW50cmFkYS50aXBvRGF0bztcbiAgICAgICAgdGhpcy5wYXJhbWV0cm9zUHVudG8ucHVzaChkYXRvKTtcblx0XHRcdFx0Ly9GSVhNRTogUGVuZGllbnRlIG9idGVuZXIgdmFsb3IgZGUgcHVudG9cbiAgICAgICAgLypPYmplY3QgdmFsb3IgPSBmYy5nZXRBcHBsaWNhdGlvbigpLmNyZWF0ZVZhbHVlQmluZGluZyhcIiN7XCIgKyBjcnVjZS5nZXRBdHJpYnV0b1B1bnRvVmFsb3IoKSArIFwifVwiKVxuXHRcdFx0XHRcdFx0LmdldFZhbHVlKGZjKTtcblx0XHRcdFx0aWYgKHZhbG9yID09IG51bGwpIHtcblx0XHRcdFx0XHRwYXJhbWV0cm9zUHVudG8uYWRkKGRhdG8pO1xuXHRcdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChkYXRvLnRpcG9EYXRvID09IHRoaXMuZnVlbnRlUGlwZS5URVhUTyB8fCBkYXRvLnRpcG9EYXRvID09IHRoaXMuZnVlbnRlUGlwZS5MT0dJQ08pIHtcblx0XHRcdFx0XHRkYXRvLmNhZGVuYSA9IHZhbG9yLnRvU3RyaW5nKCk7XG5cdFx0XHRcdH0gZWxzZSBpZiAoZGF0by50aXBvRGF0ID09IHRoaXMuZnVlbnRlUGlwZS5ERUNJTUFMKSB7XG5cdFx0XHRcdFx0ZGF0by5jYWRlbmEgPSBwYXJzZUludCh2YWxvcik7XG5cdFx0XHRcdFx0ZGF0by5zZXROdW1lcm8oKEJpZ0RlY2ltYWwpIHZhbG9yKTtcblx0XHRcdFx0fSBlbHNlIGlmIChkYXRvLnRpcG9EYXQgPT0gdGhpcy5mdWVudGVQaXBlLk5VTUVSTykge1xuXHRcdFx0XHRcdGRhdG8uc2V0Q2FkZW5hKCgoSW50ZWdlcikgdmFsb3IpLnRvU3RyaW5nKCkpO1xuXHRcdFx0XHRcdGRhdG8uc2V0TnVtZXJvKG5ldyBCaWdEZWNpbWFsKChJbnRlZ2VyKSB2YWxvcikpO1xuXHRcdFx0XHR9IGVsc2UgaWYgKGRhdG8udGlwb0RhdCA9PSB0aGlzLmZ1ZW50ZVBpcGUuRkVDSEEpIHtcblx0XHRcdFx0XHRkYXRvLnNldENhZGVuYSgoKERhdGUpIHZhbG9yKS50b1N0cmluZygpKTtcblx0XHRcdFx0XHRkYXRvLnNldEZlY2hhKChEYXRlKSB2YWxvcik7XG5cdFx0XHRcdH1cblx0XHRcdFx0cGFyYW1ldHJvc1B1bnRvLmFkZChkYXRvKTsqL1xuXHRcdFx0fSlcblx0XHRcbiAgfVxuXG4gIGNhcmdhckFyY2hpdm8oZGF0YTogRmlsZVNlbGVjdEV2ZW50LCBmdWJhdXRvKSB7XG4gICAgdGhpcy5hcmNoaXZvU2VsZWNjaW9uYWRvID0gZGF0YS5maWxlc1swXTtcbiAgICB0aGlzLnJlYWRGaWxlKHRoaXMuYXJjaGl2b1NlbGVjY2lvbmFkbyk7XG4gICAgdGhpcy5ub3RpZmljYWNpb25lc1NlcnZpY2Uuc2hvd1N1Y2Nlc3MoJ1NlIGNhcmfDsyBlbCBkb2N1bWVudG8gY29uIMOpeGl0bycpO1xuICAgIGZ1YmF1dG8uY2xlYXIoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZEZpbGUoZmlsZTogRmlsZSkge1xuICAgIGNvbnN0IHJlYWRlcjogRmlsZVJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgcmVhZGVyLnJlYWRBc1RleHQoZmlsZSk7XG4gICAgdGhpcy5ub21icmVBcmNoaXZvID0gZmlsZS5uYW1lO1xuICB9XG5cbiAgaW1wb3J0YXIoKXtcbiAgICBcbiAgICBpZiAodGhpcy5mb3JtdWxhcmlvKXtcbiAgICAgIGlmICghdGhpcy5mb3JtdWxhcmlvPy52YWxpZGFyKCkpe1xuICAgICAgICB0aGlzLm5vdGlmaWNhY2lvbmVzU2VydmljZS5zaG93RXJyb3IoJ0ZhbHRhbiBjYW1wb3Mgb2JsaWdhdG9yaW9zJylcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnZlckluY29uc2lzdGVuY2lhID0gZmFsc2U7XG4gICAgdGhpcy5hY2Npb24gPSAgdGhpcy5BQ0NJT04uSU1QT1JUQVI7XG4gICAgdGhpcy5lc3RhZG9SZWdyZXNhciA9ICd2b2x2ZXJJbXBvcnRhcidcbiAgICB0aGlzLnJ1bigpO1xuICB9XG4gIFxuICBlamVjdXRhcigpe1xuICAgIHRoaXMudmVyQm90b25FamVjdXRhciA9IGZhbHNlO1xuICAgIHRoaXMuYWNjaW9uID0gIHRoaXMuQUNDSU9OLkVKRUNVVEFSO1xuICAgIHRoaXMucnVuKCk7XG4gIH1cblxuICByZWdyZXNhckRhdG9zKCkge1xuICAgIGlmICh0aGlzLnBhbmVsSW1wb3J0YXIgPT0gdGhpcy5QQU5FTC5HUlVQT1MpIHtcbiAgICAgIHRoaXMucmVncmVzYXJGdWVudGUuZW1pdChmYWxzZSk7XG4gICAgICB0aGlzLm5vbWJyZUFyY2hpdm8gPSBudWxsO1xuICAgIH0gZWxzZSBpZiAodGhpcy5wYW5lbEltcG9ydGFyID09IHRoaXMuUEFORUwuREVUQUxMRUdSVVBPKSB7XG4gICAgICB0aGlzLnBhbmVsSW1wb3J0YXIgPSB0aGlzLlBBTkVMLkdSVVBPUztcbiAgICB9XG4gICAgdGhpcy5lc3RhZG9SZWdyZXNhciA9ICd2b2x2ZXJJbXBvcnRhcidcbiAgfVxuXG4gIHJ1bigpe1xuICAgIHZhciByZXRvcm5vO1xuICAgIHRoaXMuY2FyZ3VlTGluZWFTZXJ2aWNlLmVqZWN1dGFyKHRoaXMuYWNjaW9uLCB0aGlzLmFyY2hpdm9TZWxlY2Npb25hZG8sIHRoaXMuZnVlbnRlRFRPLCB0aGlzLnByb2Nlc29EVE8sIHRoaXMuZW50cmFkYXMsIHRoaXMuY2FtcG9zLCB0aGlzLmRhdG9zLCB0aGlzLmxpbmVhc0NhcmdhZGFzKS5zdWJzY3JpYmUoZGF0YSA9PiB7XG4gICAgICBpZiAoZGF0YS50eXBlID09PSBIdHRwRXZlbnRUeXBlLlJlc3BvbnNlKSB7XG4gICAgICAgIGxldCByZXNwb25zZTogYW55ID0gZGF0YS5ib2R5XG4gICAgICAgIHRoaXMuZGF0b3MgPSByZXNwb25zZT8uZGF0b3MgPyByZXNwb25zZT8uZGF0b3MgOiB0aGlzLmRhdG9zO1xuICAgICAgICB0aGlzLnByb2Nlc2FyRGF0b3MgPSByZXNwb25zZT8ucHJvY2VzYXJEYXRvcyA/IHJlc3BvbnNlPy5wcm9jZXNhckRhdG9zIDogdGhpcy5wcm9jZXNhckRhdG9zO1xuICAgICAgICB0aGlzLmxpbmVhc0NhcmdhZGFzID0gcmVzcG9uc2U/LmxpbmVhc0NhcmdhZGFzID8gcmVzcG9uc2U/LmxpbmVhc0NhcmdhZGFzIDogdGhpcy5saW5lYXNDYXJnYWRhcztcbiAgICAgICAgLy90aGlzLnBhbmVsID0gcmVzcG9uc2U/LnBhbmVsID8gcmVzcG9uc2U/LnBhbmVsIDogdGhpcy5wYW5lbDtcbiAgICAgICAgLy90aGlzLnBhbmVsSW1wb3J0YXIgPSByZXNwb25zZT8ucGFuZWxJbXBvcnRhciA/IHJlc3BvbnNlPy5wYW5lbEltcG9ydGFyIDogdGhpcy5wYW5lbEltcG9ydGFyO1xuICAgICAgICB0aGlzLnZlckJvdG9uRWplY3V0YXIgPSByZXNwb25zZT8udmVyQm90b25FamVjdXRhciA/IHJlc3BvbnNlPy52ZXJCb3RvbkVqZWN1dGFyIDogdGhpcy52ZXJCb3RvbkVqZWN1dGFyO1xuICAgICAgICB0aGlzLnByb2Nlc29EVE8gPSByZXNwb25zZT8ucHJvY2Vzb0RUTyA/IHJlc3BvbnNlPy5wcm9jZXNvRFRPIDogdGhpcy5wcm9jZXNvRFRPO1xuICAgICAgICByZXRvcm5vID0gcmVzcG9uc2U/LnJldG9ybm87XG4gICAgICAgIC8vcHRlIHBhc2FyIGFsIGJhY2tcbiAgICAgICAgdGhpcy5ncnVwbyA9IG51bGw7IFxuXHRcdCAgXHR0aGlzLnBhbmVsID0gcmVzcG9uc2U/LnBhbmVsID8gcmVzcG9uc2U/LnBhbmVsIDogdGhpcy5wYW5lbDsvL1BBTkVMLkRBVE9TLmdldFBhbmVsKCk7XG4gICAgICAgIHRoaXMucGFuZWxJbXBvcnRhciA9IHJlc3BvbnNlPy5wYW5lbEltcG9ydGFyID8gcmVzcG9uc2U/LnBhbmVsSW1wb3J0YXIgOiAgdGhpcy5wYW5lbEltcG9ydGFyOy8vUEFORUwuR1JVUE9TLmdldFBhbmVsKCk7XG4gICAgICAgIHRoaXMubm90aWZpY2FjaW9uZXNTZXJ2aWNlLnNob3dTdWNjZXNzKHJlc3BvbnNlLm1lbnNhamUpXG4gICAgICAgIGlmICh0aGlzLmlzTW90b3IoKSl7XG4gICAgICAgICAgdGhpcy5zZXRSZXN1bHRhZG9DYXJndWUoKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIHNldFJlc3VsdGFkb0Nhcmd1ZSgpIHtcblx0XHR0aGlzLmxpbmVhc0luY29uc2lzdGVuY2lhID0gW107XG5cdFx0dGhpcy5saW5lYXNTaW5NZW5zYWplID0gMDtcblx0XHR0aGlzLmxpbmVhc0Nvbk1lbnNhamUgPSAwO1xuXHRcdGlmICggdGhpcy5BQ0NJT04uRUpFQ1VUQVIgPT0gdGhpcy5hY2Npb24gKSB7XG5cdFx0XHR0aGlzLmxpbmVhc0NhcmdhZGFzLmZvckVhY2godW5hTGluZWEgPT4ge1xuXHRcdFx0XHRpZiAoIHVuYUxpbmVhLm1lbnNhamUgIT0gbnVsbCkge1xuXHRcdFx0XHRcdHRoaXMubGluZWFzSW5jb25zaXN0ZW5jaWEucHVzaCh1bmFMaW5lYSk7XG5cdFx0XHRcdFx0dGhpcy5saW5lYXNDb25NZW5zYWplICsrO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHRoaXMubGluZWFzU2luTWVuc2FqZSArKztcblx0XHRcdFx0fVxuXHRcdFx0fSlcblx0XHRcdHRoaXMudmVySW5jb25zaXN0ZW5jaWEgPSB0cnVlO1xuXHRcdFx0aWYgKCB0aGlzLmxpbmVhc0Nvbk1lbnNhamUgPT0gMCkge1xuXHRcdFx0XHR0aGlzLnZlckluY29uc2lzdGVuY2lhID0gZmFsc2U7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblxuICBpbXBvcnRhck51ZXZhbWVudGUoKXtcbiAgICB0aGlzLnZlckJvdG9uRWplY3V0YXIgPSB0cnVlO1xuICAgIHRoaXMubm9tYnJlQXJjaGl2byA9IG51bGw7XG4gICAgdGhpcy5hcmNoaXZvU2VsZWNjaW9uYWRvID0gbnVsbDtcbiAgICB0aGlzLmVzdGFkb1JlZ3Jlc2FyID0gbnVsbDtcbiAgICB0aGlzLnByZXBhcmFyQ2FtcG9zUGFyYUltcG9ydGFyKCkudGhlbihkYXRhID0+IHt9KVxuICB9XG5cbiAgdmVyR3J1cG8oZXZlbnQpe1xuICAgIHRoaXMuZXN0YWRvUmVncmVzYXIgPSAncmVncmVzYXJJbXBvcnRhcidcbiAgICB0aGlzLmdydXBvID0gZXZlbnQuZGF0YVxuICAgIHRoaXMuZGF0b3MuZm9yRWFjaChncnVwb0Z1ZW50ZSA9PntcbiAgICAgIGlmIChncnVwb0Z1ZW50ZS5sbGF2ZUxpbmVhR3J1cG8gPT0gdGhpcy5ncnVwby5sbGF2ZUxpbmVhR3J1cG8pIHtcbiAgICAgICAgdGhpcy5wYWdpbmFkb3JMaW5lYXMgPSBncnVwb0Z1ZW50ZS5saW5lYXM7XG4gICAgICB9XG4gICAgfSlcbiAgICB0aGlzLnBhZ2luYWRvclNlcnZpY2lvcyA9IHRoaXMuZ3J1cG8uc2VydmljaW9zXG4gICAgLy90aGlzLnBhZ2luYWRvckNhbXBvcyA9IFxuICAgIC8vdGhpcy5wYWdpbmFkb3JQYXJhbWV0cm9zID0gW11cbiAgICBpZiAoKHRoaXMucGFnaW5hZG9yU2VydmljaW9zID09IG51bGwgfHwgdGhpcy5wYWdpbmFkb3JTZXJ2aWNpb3M/Lmxlbmd0aCA8PSAwKVxuICAgICAgJiYgKHRoaXMucGFnaW5hZG9yTGluZWFzID09IG51bGwgfHwgdGhpcy5wYWdpbmFkb3JMaW5lYXM/Lmxlbmd0aCA8PSAwKSl7XG4gICAgICAgIHRoaXMubm90aWZpY2FjaW9uZXNTZXJ2aWNlLnNob3dTdWNjZXNzKCdFbCBncnVwbyBubyBwb3NlZSBuaWd1bmEgbGluZWEgbmkgc2VydmljaW8nKVxuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucGFnaW5hZG9yUGFyYW1ldHJvcyA9IFtdXG4gICAgdGhpcy5wYWdpbmFkb3JTZXJ2aWNpb3MuZm9yRWFjaChkYXRhID0+e1xuICAgICAgdGhpcy52ZXJTZXJ2aWNpbyhkYXRhKVxuICAgIH0pXG4gICAgdGhpcy5wYWdpbmFkb3JDYW1wb3MgPSBbXVxuICAgIHRoaXMucGFnaW5hZG9yTGluZWFzLmZvckVhY2goZGF0YSA9PiB7XG4gICAgICB0aGlzLnZlckxpbmVhKGRhdGEpXG4gICAgfSlcbiAgICB0aGlzLnBhbmVsSW1wb3J0YXIgPSB0aGlzLlBBTkVMLkRFVEFMTEVHUlVQT1xuICB9XG5cbiAgdmVyTGluZWEoZXZlbnQpe1xuICAgIGV2ZW50LmNhbXBvc0F0cmlidXRvcy5mb3JFYWNoKGRhdGEgPT4ge1xuICAgICAgZGF0YVsnbnVtZXJvTGluZWEnXSA9IGV2ZW50Lm51bWVyb0xpbmVhXG4gICAgfSlcbiAgICBpZiAoZXZlbnQuY2FtcG9zQXRyaWJ1dG9zID09IG51bGwgfHwgZXZlbnQuY2FtcG9zQXRyaWJ1dG9zLmxlbmd0aCA8PSAwKSB7XG4gICAgICB0aGlzLm5vdGlmaWNhY2lvbmVzU2VydmljZS5zaG93U3VjY2VzcyhcIk5vIHNlIGlkZW50aWZpY28gbmluZ8O6biBjYW1wb1wiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wYWdpbmFkb3JDYW1wb3MgPSB0aGlzLnBhZ2luYWRvckNhbXBvcy5jb25jYXQoZXZlbnQuY2FtcG9zQXRyaWJ1dG9zKVxuICAgIH1cbiAgICBcbiAgfVxuXG4gIHZlclNlcnZpY2lvKGV2ZW50KXtcbiAgICBldmVudC5jYW1wb3NBdHJpYnV0b3MuZm9yRWFjaChkYXRhID0+IHtcbiAgICAgIGRhdGFbJ2xsYXZldW5pY2EnXSA9IGAke3RoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdzZXJ2aWNpbycpfTogJHtldmVudC5zZXJ2aWNpb30gXG4gICAgICAke3RoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdvcmRlbicpfTogJHtldmVudC5vcmRlbn1cbiAgICAgICR7dGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ2xpbmVhJyl9OiAke2V2ZW50Lm51bWVyb0xpbmVhfSBgXG4gICAgICBpZiAoZXZlbnQubWVuc2FqZSkge1xuICAgICAgICBkYXRhWydsbGF2ZXVuaWNhJ10gPSBkYXRhWydsbGF2ZXVuaWNhJ10gKyBgXG4gICAgICAgICR7dGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ2FkdmVydGVuY2lhJyl9OiAke2V2ZW50Lm1lbnNhamV9IGBcbiAgICAgIH1cbiAgICB9KVxuICAgIGlmIChldmVudC5jYW1wb3NBdHJpYnV0b3MgPT0gbnVsbCB8fCBldmVudC5jYW1wb3NBdHJpYnV0b3MubGVuZ3RoIDw9IDApIHtcbiAgICAgIHRoaXMubm90aWZpY2FjaW9uZXNTZXJ2aWNlLnNob3dTdWNjZXNzKFwiTm8gc2UgaWRlbnRpZmljbyBuaW5nw7puIHBhcmFtZXRyb1wiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wYWdpbmFkb3JQYXJhbWV0cm9zID0gdGhpcy5wYWdpbmFkb3JQYXJhbWV0cm9zLmNvbmNhdChldmVudC5jYW1wb3NBdHJpYnV0b3MpXG4gICAgfVxuICB9XG5cbiAgY2FuY2VsYXJQcm9jZXNvKCl7XG4gICAgY29uc29sZS5sb2coJ2VudHJhIGNhbmNlbGFQcm9jZXNvJylcbiAgICB0aGlzLmNvbmZpcm1hdGlvblNlcnZpY2UuY29uZmlybSh7XG4gICAgICB0YXJnZXQ6IGV2ZW50LnRhcmdldCxcbiAgICAgIG1lc3NhZ2U6ICfCv0Rlc2VhIGVsaW1pbmFyIGVsIHJlZ2lzdHJvPycsXG4gICAgICBhY2NlcHRMYWJlbDogJ1NpJyxcbiAgICAgIGljb246ICdjb25maXJtYXInLFxuICAgICAgYWNjZXB0OiAoKSA9PiB7XG4gICAgICAgIHRoaXMuY2FyZ3VlTGluZWFTZXJ2aWNlLmNhbmNlbGFyUHJvY2Vzbyh7cHJvY2Vzb0RUTzogdGhpcy5wcm9jZXNvRFRPfSkuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgICAgIGlmIChkYXRhLm1lbnNhamUgPD0gMCkge1xuICAgICAgICAgICAgdGhpcy5ub3RpZmljYWNpb25lc1NlcnZpY2Uuc2hvd1N1Y2Nlc3ModGhpcy5nZW5lcmFsUGlwZS5NRU5TQUpFX0VMSU1JTkFSX05PKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5wcm9jZXNvRFRPID0gbmV3IEZ1ZW50ZVByb2Nlc29HZW5lcmFsTW9kZWwoKTtcbiAgICAgICAgICAgIFxuICAgICAgICAgIHRoaXMubm90aWZpY2FjaW9uZXNTZXJ2aWNlLnNob3dTdWNjZXNzKHRoaXMuZ2VuZXJhbFBpcGUuTUVOU0FKRV9FTElNSU5BUik7XG4gICAgICAgICAgdGhpcy5ydXRhQXJjaGl2byA9IG51bGw7XG4gICAgICAgICAgdGhpcy5ub21icmVBcmNoaXZvID0gbnVsbDtcbiAgICAgICAgICBsb2NhdGlvbi5yZWxvYWQoKSAgICBcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgaW1wb3J0YXJFamVjdXRhcigpe1xuXG4gIH1cblxuICBpc01vdG9yKCkge1xuXHRcdHJldHVybiB0aGlzLmZ1ZW50ZURUTyAhPSBudWxsICYmICh0aGlzLmZ1ZW50ZVBpcGUuQkFTRURBVE9TID09IHRoaXMuZnVlbnRlRFRPLm1vdG9yIHx8IHRoaXMuZnVlbnRlUGlwZS5CQVNFREFUT1NFR1VORE8gPT0gdGhpcy5mdWVudGVEVE8ubW90b3IpO1xuXHR9XG5cbiAgaXNTZXJ2aWNpb1dlYigpIHtcblx0XHRyZXR1cm4gdGhpcy5mdWVudGVEVE8gIT0gbnVsbCAmJiB0aGlzLmZ1ZW50ZURUTy5wcm9jZXNvICE9IG51bGwgJiYgdGhpcy5mdWVudGVEVE8uZm9ybXVsYURlc2NyaXBjaW9uICE9IG51bGw7XG5cdH1cblxuICBpc0ltcG9ydGFjaW9uKCkge1xuXHRcdHJldHVybiB0aGlzLkFDQ0lPTi5JTVBPUlRBUiA9PSB0aGlzLmFjY2lvbjtcblx0fVxuXG5cdGlzRWplY3VjaW9uKCkge1xuXHRcdHJldHVybiB0aGlzLkFDQ0lPTi5FSkVDVVRBUiA9PSB0aGlzLmFjY2lvbjtcblx0fVxuXG5cdGlzQWdydXBhbWllbnRvKCkge1xuXHRcdHJldHVybiB0aGlzLmZ1ZW50ZURUTyAhPSBudWxsICYmIHRoaXMuZnVlbnRlUGlwZS5BR1JVUEFNSUVOVE8gPT0gdGhpcy5mdWVudGVEVE8udGlwbztcblx0fVxuXG5cdGlzUm9tcGltaWVudG8oKSB7XG5cdFx0cmV0dXJuIHRoaXMuZnVlbnRlRFRPICE9IG51bGwgJiYgdGhpcy5mdWVudGVQaXBlLlJPTVBJTUlFTlRPID09IHRoaXMuZnVlbnRlRFRPLnRpcG87XG5cdH1cblxuXHRpc1VuaWNvUmVnaXN0cm8oKSB7XG5cdFx0cmV0dXJuIHRoaXMuZnVlbnRlRFRPICE9IG51bGwgJiYgdGhpcy5mdWVudGVQaXBlLlVOSUNPX1JFR0lTVFJPID09IHRoaXMuZnVlbnRlRFRPLnRpcG87XG5cdH1cblxuXHRpc1NpblNlcGFyYWRvcigpIHtcblx0XHRyZXR1cm4gdGhpcy5mdWVudGVEVE8gIT0gbnVsbCAmJiB0aGlzLmZ1ZW50ZVBpcGUuU0lOX1NFUEFSQURPUiA9PSB0aGlzLmZ1ZW50ZURUTy5zZXBhcmFkb3I7XG5cdH1cblxuXHRpc0NvblNlcGFyYWRvcigpIHtcblx0XHRyZXR1cm4gdGhpcy5mdWVudGVEVE8gIT0gbnVsbCAmJiB0aGlzLmZ1ZW50ZURUTy5zZXBhcmFkb3IgIT0gbnVsbCAmJiB0aGlzLmZ1ZW50ZURUTy5zZXBhcmFkb3IgIT0gdGhpcy5mdWVudGVQaXBlLlNJTl9TRVBBUkFET1I7XG5cdH1cblxufVxuIiwiPHAtY29uZmlybVBvcHVwPjwvcC1jb25maXJtUG9wdXA+XG48ZGl2ICpuZ0lmPVwiIW1vc3RyYXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgbWItM1wiPlxuICAgICAgICA8YXBwLWZpbHRyby1nZW5lcmFsIFtmaWx0cm9zXT1cImZpbHRlcnNcIiBbZGF0YXRhYmxlXT1cInRhYmxhR2VuZXJhbFwiPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGxldC1mb3JtPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW2Zvcm1Hcm91cF09XCJmb3JtXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1mbG9hdC1sYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHBJbnB1dFRleHQgYXV0b2ZvY3VzIHR5cGU9XCJ0ZXh0XCIgaWQ9XCJkZXNjcmlwY2lvblwiIGZvcm1Db250cm9sTmFtZT1cImRlc2NyaXBjaW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImRlc2NyaXBjaW9uXCI+e3snZmlsdHJvJyB8IHRyYW5zbGF0ZX19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9hcHAtZmlsdHJvLWdlbmVyYWw+XG4gICAgPC9kaXY+XG4gICAgPGFwcC10YWJsYS1nZW5lcmFsICN0YWJsYUdlbmVyYWwgW2NvbHVtbnNdPVwiY29sdW1uc1wiIFt2YWx1ZV09XCJwYWdpbmFkb3JGdWVudGVcIiBbcm93c109XCJwYWdpbmF0b3Iucm93c1wiXG4gICAgICAgIFt0b3RhbFJlY29yZHNdPVwicGFnaW5hdG9yLnRvdGFsUmVjb3Jkc1wiIChvbkxvYWQpPVwiY2FyZ2FybGlzdGFkbygkZXZlbnQpXCIgKG9uUm93U2VsZWN0KT1cImNhcmdhcigkZXZlbnQpXCJcbiAgICAgICAgW2xvYWRpbmddPVwibG9hZGluZ1BhZ2luYWRvckZ1ZW50ZVwiPjwvYXBwLXRhYmxhLWdlbmVyYWw+XG48L2Rpdj5cbjxkaXYgKm5nSWY9XCJtb3N0cmFyXCI+XG4gICAgPGRpdiBjbGFzcz1cImNhcmQgbXQtM1wiICpuZ0lmPVwiZnVlbnRlRFRPICE9IG51bGxcIj5cbiAgICAgICAgPGg1IGNsYXNzPVwibXQtM1wiPjxpIGNsYXNzPVwiZ2x5cGhpY29ucyBnbHlwaGljb25zLWJvb2tcIj48L2k+e3snZGV0YWxsZScgfCB0cmFuc2xhdGV9fTwvaDU+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJJbnB1dGdyb3VwIHAtZmx1aWQgcC1mb3JtZ3JpZCBncmlkXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQgY29sLTMgbWQ6Y29sLTMgbGc6Y29sLTNcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtZmxvYXQtbGFiZWxcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwidy1mdWxsXCIgWyhuZ01vZGVsKV09XCJmdWVudGVEVE8uZGVzY3JpcGNpb25cIiBbZGlzYWJsZWRdPVwidHJ1ZVwiIHBJbnB1dFRleHQgYXV0b2ZvY3VzIHR5cGU9XCJ0ZXh0XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImZ1ZW50ZVwiPnt7J2Z1ZW50ZScgfCB0cmFuc2xhdGV9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQgY29sLTMgbWQ6Y29sLTMgbGc6Y29sLTNcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtZmxvYXQtbGFiZWxcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwidy1mdWxsXCIgdmFsdWU9XCJ7e2Z1ZW50ZURUTy50aXBvIHwgZnVlbnRlUGlwZTonbGlzdGFUaXBvRnVlbnRlJ319XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJ0cnVlXCIgcElucHV0VGV4dCBhdXRvZm9jdXMgdHlwZT1cInRleHRcIiAvPlxuICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJ0aXBvXCI+e3sndGlwbycgfCB0cmFuc2xhdGV9fTwvbGFiZWw+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZCBjb2wtMyBtZDpjb2wtMyBsZzpjb2wtM1wiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1mbG9hdC1sYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJ3LWZ1bGxcIiB2YWx1ZT1cInt7ZnVlbnRlRFRPLnNlcGFyYWRvciB8IGZ1ZW50ZVBpcGU6J2xpc3RhU2VwYXJhZG9yJ319XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJ0cnVlXCIgcElucHV0VGV4dCBhdXRvZm9jdXMgdHlwZT1cInRleHRcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwic2VwYXJhZG9yXCI+e3snc2VwYXJhZG9yJyB8IHRyYW5zbGF0ZX19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZCBjb2wtMyBtZDpjb2wtMyBsZzpjb2wtM1wiICpuZ0lmPVwicHJvY2Vzb0RUTyAhPSBudWxsXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLWZsb2F0LWxhYmVsXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cInctZnVsbFwiIHZhbHVlPVwie3twcm9jZXNvRFRPLmZlY2hhUHJvY2VzbyB8IGRhdGU6ICgnZm9ybWF0b2ZlY2hhJyB8IHRyYW5zbGF0ZSkgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInRydWVcIiBwSW5wdXRUZXh0IGF1dG9mb2N1cyB0eXBlPVwidGV4dFwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJmZWNoYXByb2Nlc29cIj57eydmZWNoYXByb2Nlc28nIHwgdHJhbnNsYXRlfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkIGNvbC0zIG1kOmNvbC0zIGxnOmNvbC0zXCIgKm5nSWY9XCJub21icmVBcmNoaXZvICE9IG51bGwgJiYgdGhpcy5wYW5lbCA9PSAnREFUT1MnIFwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1mbG9hdC1sYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJ3LWZ1bGxcIiBbKG5nTW9kZWwpXT1cIm5vbWJyZUFyY2hpdm9cIiBbZGlzYWJsZWRdPVwidHJ1ZVwiIHBJbnB1dFRleHQgYXV0b2ZvY3VzXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJub21icmVhcmNoaXZvXCI+e3snbm9tYnJlYXJjaGl2bycgfCB0cmFuc2xhdGV9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG48ZGl2ICpuZ0lmPVwicGFuZWwgPT0nSU1QT1JUQVInXCI+XG4gICAgPHAtdGFiVmlldz5cbiAgICAgICAgPHAtdGFiUGFuZWwgaGVhZGVyPVwie3snZW50cmFkYScgfCB0cmFuc2xhdGV9fVwiICpuZ0lmPVwiZnVlbnRlRFRPICE9IG51bGxcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZCBjb2wtMTIgbWQ6Y29sLTEyIGxnOmNvbC0xMlwiICpuZ0lmPVwiZnVlbnRlRFRPPy5tb3RvciA9PSAnWCdcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZCBtdC0yIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbmVkb3IgcC1mbHVpZCBncmlkIG10LTEgbWItMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkIGNvbC0zIG1kOmNvbC0zIGxnOmNvbC0zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLWZsb2F0LWxhYmVsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cInctZnVsbFwiIFsobmdNb2RlbCldPVwiZnVlbnRlRFRPLmVzdGFkb1wiIFtkaXNhYmxlZF09XCJ0cnVlXCIgcElucHV0VGV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b2ZvY3VzIHR5cGU9XCJ0ZXh0XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImVzdGFkb1wiPnt7J2VzdGFkbycgfCB0cmFuc2xhdGV9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQgY29sLTMgbWQ6Y29sLTMgbGc6Y29sLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtZmxvYXQtbGFiZWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwidy1mdWxsXCIgWyhuZ01vZGVsKV09XCJmdWVudGVEVE8uc29saWNpdGFEZXRhbGxlXCIgW2Rpc2FibGVkXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcElucHV0VGV4dCBhdXRvZm9jdXMgdHlwZT1cInRleHRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiZGV0YWxsZVwiPnt7J2RldGFsbGUnIHwgdHJhbnNsYXRlfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZCBtdC0yIG1iLTIgZmllbGQgY29sLTEyIG1kOmNvbC0xMiBsZzpjb2wtMTJcIiAqbmdJZj1cIiFpc1NlcnZpY2lvV2ViKClcIj5cblxuICAgICAgICAgICAgICAgIDxwLXRhYmxlIFt2YWx1ZV09XCJjYW1wb3NBcmNoaXZvXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJib2R5XCIgbGV0LWNhbXBvPlxuICAgICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBzdHlsZT1cIndpZHRoOiAyMCU7XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD57e2NhbXBvLmRlc2NyaXBjaW9ufX08L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBzdHlsZT1cIndpZHRoOiA4MCVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtZmx1aWQgcC1mb3JtZ3JpZCBncmlkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBtZDpjb2wtMTJcIiBpZD1cImJ0bi1jYXJnYXItcG9wdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtaW5wdXRncm91cFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHBJbnB1dFRleHQgW3JlYWRvbmx5XT1cInRydWVcIiBbdmFsdWVdPVwiYXJjaGl2b1NlbGVjY2lvbmFkbz8ubmFtZSA/IGFyY2hpdm9TZWxlY2Npb25hZG8/Lm5hbWUgOiAnJ1wiIGRpc2FibGVkICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtZmlsZVVwbG9hZCAjZnViYXV0byBtb2RlPVwiYmFzaWNcIiBbY3VzdG9tVXBsb2FkXT1cInRydWVcIiBjaG9vc2VJY29uPVwicGkgcGktcGFwZXJjbGlwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uU2VsZWN0KT1cImNhcmdhckFyY2hpdm8oJGV2ZW50LCBmdWJhdXRvKVwiID48L3AtZmlsZVVwbG9hZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC9wLXRhYmxlPlxuXG4gICAgICAgICAgICAgICAgPGZvcm11bGFyaW8tZGluYW1pY28gI2Zvcm11bGFyaW8gW2VkaXRhYmxlXT1cInRydWVcIiBbY2FtcG9zXT1cImNhbXBvc1wiIFxuICAgICAgICAgICAgICAgICAgICBbb2JqZXRvXT1cImZ1ZW50ZURUT1wiICpuZ0lmPVwidmVyRm9ybXVsYXJpbyAmJiBjYW1wb3MubGVuZ3RoID4gMFwiPjwvZm9ybXVsYXJpby1kaW5hbWljbz5cbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gcEJ1dHRvbiBwUmlwcGxlIGNsYXNzPVwibS0yIHAtYnV0dG9uLW91dGxpbmVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZnVlbnRlRFRPLm1vdG9yICE9ICdYJyAmJiAoaXNTZXJ2aWNpb1dlYigpIHx8IG5vbWJyZUFyY2hpdm8gIT0gbnVsbClcIiBpY29uPVwicGkgcGktdXBsb2FkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPVwie3snbGlua19pbXBvcnRhcicgfCB0cmFuc2xhdGV9fVwiIChjbGljayk9XCJpbXBvcnRhcigpXCI+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHBCdXR0b24gcFJpcHBsZSBjbGFzcz1cIm0tMiBwLWJ1dHRvbiBwLWJ1dHRvbi1yYWlzZWRcIiAqbmdJZj1cImZ1ZW50ZURUTy5tb3RvciA9PSdYJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD1cInt7J2xpbmtfaW1wb3J0YXJlamVjdXRhcicgfCB0cmFuc2xhdGV9fVwiIChjbGljayk9XCJpbXBvcnRhckVqZWN1dGFyKClcIj5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9wLXRhYlBhbmVsPlxuICAgICAgICA8cC10YWJQYW5lbCBoZWFkZXI9XCJ7eydoaXN0b3JpY28nIHwgdHJhbnNsYXRlfX1cIiAqbmdJZj1cInBhZ2luYWRvclByb2Nlc29zLmxlbmd0aCA+IDAgJiYgZnVlbnRlRFRPICE9IG51bGxcIj5cblxuICAgICAgICA8L3AtdGFiUGFuZWw+XG4gICAgPC9wLXRhYlZpZXc+XG48L2Rpdj5cblxuPGRpdiAqbmdJZj1cInBhbmVsID09J0RBVE9TJ1wiPlxuXG4gICAgPGRpdiBjbGFzcz1cImNhcmRcIiAqbmdJZj1cInBhbmVsSW1wb3J0YXIgPT0nR1JVUE9TJ1wiPlxuIFxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBtYi0zIG10LTNcIj5cbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPlxuICAgICAgICAgICAgICAgIDxidXR0b24gcEJ1dHRvbiBwUmlwcGxlIGNsYXNzPVwicC1idXR0b24tc2Vjb25kYXJ5IGZvbnQtc2VtaWJvbGQgbWwtMiBtYi0wIG10LTBcIiBpY29uPVwiZ2x5cGhpY29ucyBnbHlwaGljb25zLXBsYXlcIlxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInZlckJvdG9uRWplY3V0YXIgJiYgcHJvY2VzYXJEYXRvcyAmJiAoaXNJbXBvcnRhY2lvbigpIHx8IGlzRWplY3VjaW9uKCkpXCJcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw9XCJ7eydsaW5rX2VqZWN1dGFyJyB8IHRyYW5zbGF0ZX19XCIgKGNsaWNrKT1cImVqZWN1dGFyKClcIj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIHBCdXR0b24gcFJpcHBsZSBjbGFzcz1cInAtYnV0dG9uLW91dGxpbmVkIGNsYXJvIGZvbnQtc2VtaWJvbGQgbWwtMiBtYi0wIG10LTBcIiAqbmdJZj1cInByb2Nlc29EVE8ubGxhdmVUYWJsYSAhPSBudWxsXCIgaWNvbj1cImdseXBoaWNvbnMgZ2x5cGhpY29ucy1iaW5cIiBcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw9XCJ7eydsaW5rX2VsaW1pbmFyJyB8IHRyYW5zbGF0ZX19XCIgKGNsaWNrKT1cImNhbmNlbGFyUHJvY2VzbygpXCI+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgcEJ1dHRvbiBwUmlwcGxlIGljb249XCJwaSBwaS1maWxlXCIgKGNsaWNrKT1cInRhYmxhLmV4cG9ydENTVigpXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwLWJ1dHRvbi1yYWlzZWQgcC1idXR0b24tZXhwb3J0IGJvcmRlci1zb2xpZC0xIGJvcmRlci1jb2xvci00MDAgbWwtMiB3LWF1dG9cIiBwVG9vbHRpcD1cIkNTVlwiXG4gICAgICAgICAgICAgICAgICAgIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIHBCdXR0b24gcFJpcHBsZSBpY29uPVwicGkgcGktZmlsZS1leGNlbFwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkYXRhRXhwb3J0ZXIuZXhwb3J0RXhjZWxDb2x1bW5hcyh0YWJsYS5maWx0ZXJlZFZhbHVlID09IG51bGwgPyB0YWJsYS52YWx1ZSA6IHRhYmxhLmZpbHRlcmVkVmFsdWUgLCAndGFibGEnLCBjb2x1bW5hc0V4cG9ydEV4Y2VsKVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicC1idXR0b24tb3V0bGluZWQgbWwtMiBiYWNrZ3JvdW5kLTEwMCB3LWF1dG9cIiBwVG9vbHRpcD1cIlhMU1wiXG4gICAgICAgICAgICAgICAgICAgIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIHBCdXR0b24gcFJpcHBsZSBpY29uPVwicGkgcGktZmlsZS1wZGZcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZGF0YUV4cG9ydGVyLmV4cG9ydFBkZih0YWJsYS5maWx0ZXJlZFZhbHVlID09IG51bGwgPyB0YWJsYS52YWx1ZSA6IHRhYmxhLmZpbHRlcmVkVmFsdWUgLCBleHBvcnRDb2x1bW5zLCAndGFibGEnKVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicC1idXR0b24tb3V0bGluZWQgbWwtMiB3LWF1dG9cIiBwVG9vbHRpcD1cIlBERlwiIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiPjwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxwLXRhYmxlICN0YWJsYURhdG9zIHJlc3BvbnNpdmVMYXlvdXQ9XCJzY3JvbGxcIiBbdmFsdWVdPVwiZGF0b3NcIiByZXNwb25zaXZlTGFveW91dD1cInNjcm9sbFwiIFtwYWdpbmF0b3JdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbcm93c109XCIxMFwiIFt0b3RhbFJlY29yZHNdPVwiZGF0b3MubGVuZ3RoXCIgW2V4cG9ydEZpbGVuYW1lXT1cIid0YWJsYURhdG9zJ1wiXG4gICAgICAgICAgICBbcGFnaW5hdG9yXT1cImRhdG9zLmxlbmd0aCA+IDEwXCIgW3Jvd3NQZXJQYWdlT3B0aW9uc109XCJbMTAsIDIwLCA1MF1cIlxuICAgICAgICAgICAgW3Nob3dDdXJyZW50UGFnZVJlcG9ydF09XCJ0cnVlXCIgc2VsZWN0aW9uTW9kZT1cInNpbmdsZVwiIFtzY3JvbGxhYmxlXT1cInRydWVcIiBbY29sdW1uc109XCJjb2xzXCJcbiAgICAgICAgICAgIGN1cnJlbnRQYWdlUmVwb3J0VGVtcGxhdGU9XCJ7Zmlyc3R9IGFsIHtsYXN0fSBkZSB7dG90YWxSZWNvcmRzfSByZWdpc3Ryb3NcIiAqbmdJZj1cIiFpc01vdG9yKClcIlxuICAgICAgICAgICAgWyhzZWxlY3Rpb24pXT1cImdydXBvXCIgKG9uUm93U2VsZWN0KT1cInZlckdydXBvKCRldmVudClcIj5cbiAgICAgICAgICAgICBcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJoZWFkZXJcIj5cblxuICAgICAgICAgICAgICAgIDx0ciBjbGFzcz1cImZvbmRvVGFibGFQaW5jaXBhbFwiPlxuICAgICAgICAgICAgICAgICAgICA8dGg+e3snZ3J1cG8nIHwgdHJhbnNsYXRlfX08L3RoPlxuICAgICAgICAgICAgICAgICAgICA8dGg+e3snbGluZWEnIHwgdHJhbnNsYXRlfX08L3RoPlxuICAgICAgICAgICAgICAgICAgICA8dGg+e3snYWR2ZXJ0ZW5jaWEnIHwgdHJhbnNsYXRlfX08L3RoPlxuICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImJvZHlcIiBsZXQtYmVhbj5cbiAgICAgICAgICAgICAgICA8dHIgW3BTZWxlY3RhYmxlUm93XT1cImJlYW5cIj5cbiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidy04cmVtIGZvbnQtbWVkaXVtXCI+e3tiZWFuLmNvZGlnb319PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICAgICAge3tiZWFuLnVuaWNhTGluZWF9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7YmVhbi5tZW5zYWplRXJyb3Jlc319PC90ZD5cbiAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJlbXB0eW1lc3NhZ2VcIj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgICAgPHRkIGNvbHNwYW49XCIxMDBcIj4gXG4gICAgICAgICAgICAgICAgPGFwcC10ZW1wbGF0ZS10YWJsYS12YWNpYT48L2FwcC10ZW1wbGF0ZS10YWJsYS12YWNpYT5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgPC9uZy10ZW1wbGF0ZT4gICAgICAgIDwvcC10YWJsZT5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgKm5nSWY9XCJwYW5lbEltcG9ydGFyID09J0RFVEFMTEVHUlVQTydcIj5cbiAgICAgICAgPGRpdiAqbmdJZj1cIiFpc01vdG9yKClcIj5cbiAgICAgICAgPGg1Pnt7J2dydXBvJyB8IHRyYW5zbGF0ZX19OiB7e2dydXBvLmNvZGlnb319PC9oNT5cbiAgICAgICAgPHAtYWNjb3JkaW9uICpuZ0lmPVwiIWlzTW90b3IoKVwiPlxuICAgICAgICAgICAgPHAtYWNjb3JkaW9uVGFiIFtzZWxlY3RlZF09XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlclwiPjxpIGNsYXNzPVwiZ2x5cGhpY29ucyBnbHlwaGljb25zLWJvb2tcIj48L2k+e3snbGluZWEnIHwgdHJhbnNsYXRlfX0gPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiY29udGVudFwiPlxuICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICA8cC10YWJsZSByZXNwb25zaXZlTGF5b3V0PVwic2Nyb2xsXCIgW3ZhbHVlXT1cInBhZ2luYWRvckNhbXBvc1wiIHJlc3BvbnNpdmVMYW95b3V0PVwic2Nyb2xsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93Q3VycmVudFBhZ2VSZXBvcnRdPVwidHJ1ZVwiIFtzY3JvbGxhYmxlXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFBhZ2VSZXBvcnRUZW1wbGF0ZT1cIntmaXJzdH0gYWwge2xhc3R9IGRlIHt0b3RhbFJlY29yZHN9IHJlZ2lzdHJvc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICByb3dHcm91cE1vZGU9XCJzdWJoZWFkZXJcIiBkYXRhS2V5PVwibnVtZXJvTGluZWFcIiBncm91cFJvd3NCeT1cIm51bWVyb0xpbmVhXCIgZXhwYW5kYWJsZVJvd0dyb3Vwcz1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicGFnaW5hZG9yQ2FtcG9zLmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJoZWFkZXJcIj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciBjbGFzcz1cImZvbmRvVGFibGFQaW5jaXBhbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+e3snY2FtcG8nIHwgdHJhbnNsYXRlfX08L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+e3snYXJjaGl2bycgfCB0cmFuc2xhdGV9fTwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD57eyd0aXBvJyB8IHRyYW5zbGF0ZX19PC90aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJncm91cGhlYWRlclwiIGxldC1iZWFuIGxldC1yb3dJbmRleD1cInJvd0luZGV4XCIgbGV0LWV4cGFuZGVkPVwiZXhwYW5kZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPVwiMTAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBwQnV0dG9uIHBSaXBwbGUgW3BSb3dUb2dnbGVyXT1cImJlYW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicC1lbGVtZW50IHAtcmlwcGxlIHAtYnV0dG9uLXJvdW5kZWQgbXItMiBtYi0yIHAtYnV0dG9uIHAtY29tcG9uZW50IHAtYnV0dG9uLWRlc3BsZWdhYmxlIHAtYnV0dG9uLWljb24tb25seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ljb25dPVwiZXhwYW5kZWQgPyAncGkgcGktY2hldnJvbi1kb3duJyA6ICdwaSBwaS1jaGV2cm9uLXJpZ2h0J1wiPjwvYnV0dG9uPlxuICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmb250LWJvbGQgbWwtMlwiIHN0eWxlPVwibGluZS1oZWlnaHQ6IDQwcHg7XCI+IHt7J2xpbmVhJyB8IHRyYW5zbGF0ZX19OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7YmVhbi5udW1lcm9MaW5lYX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cInJvd2V4cGFuc2lvblwiIGxldC1iZWFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciBbcFNlbGVjdGFibGVSb3ddPVwiYmVhblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tiZWFuLmNhbXBvQXRyaWJ1dG99fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e2JlYW4uY2FkZW5hfX08L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tiZWFuLnRpcG9EYXRvIHwgZnVlbnRlUGlwZSA6ICdsaXN0YVRpcG9EYXRvJ319PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJlbXB0eW1lc3NhZ2VcIj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgICAgPHRkIGNvbHNwYW49XCIxMDBcIj4gXG4gICAgICAgICAgICAgICAgPGFwcC10ZW1wbGF0ZS10YWJsYS12YWNpYT48L2FwcC10ZW1wbGF0ZS10YWJsYS12YWNpYT5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgPC9uZy10ZW1wbGF0ZT4gICAgICAgICAgICAgICAgICAgIDwvcC10YWJsZT5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9wLWFjY29yZGlvblRhYj5cbiAgICAgICAgICAgIDxwLWFjY29yZGlvblRhYiAqbmdJZj1cInBhZ2luYWRvclBhcmFtZXRyb3M/Lmxlbmd0aCA+IDBcIiA+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlclwiPjxpIGNsYXNzPVwiZ2x5cGhpY29ucyBnbHlwaGljb25zLWJvb2tcIj48L2k+e3snc2VydmljaW8nIHwgdHJhbnNsYXRlfX0gPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiY29udGVudFwiPlxuXG4gICAgICAgICAgICAgICAgICAgIDxwLXRhYmxlIHJlc3BvbnNpdmVMYXlvdXQ9XCJzY3JvbGxcIiBbdmFsdWVdPVwicGFnaW5hZG9yUGFyYW1ldHJvc1wiIHJlc3BvbnNpdmVMYW95b3V0PVwic2Nyb2xsXCIgXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2hvd0N1cnJlbnRQYWdlUmVwb3J0XT1cInRydWVcIiBbc2Nyb2xsYWJsZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRQYWdlUmVwb3J0VGVtcGxhdGU9XCJ7Zmlyc3R9IGFsIHtsYXN0fSBkZSB7dG90YWxSZWNvcmRzfSByZWdpc3Ryb3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcm93R3JvdXBNb2RlPVwic3ViaGVhZGVyXCIgZGF0YUtleT1cImxsYXZldW5pY2FcIiBncm91cFJvd3NCeT1cImxsYXZldW5pY2FcIiBleHBhbmRhYmxlUm93R3JvdXBzPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInBhZ2luYWRvclBhcmFtZXRyb3MubGVuZ3RoID4gMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlclwiPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyIGNsYXNzPVwiZm9uZG9UYWJsYVBpbmNpcGFsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD57eydwYXJhbWV0cm8nIHwgdHJhbnNsYXRlfX1zPC90aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPnt7J3ZhbG9yJyB8IHRyYW5zbGF0ZX19PC90aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJncm91cGhlYWRlclwiIGxldC1iZWFuIGxldC1yb3dJbmRleD1cInJvd0luZGV4XCIgbGV0LWV4cGFuZGVkPVwiZXhwYW5kZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPVwiMTAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBwQnV0dG9uIHBSaXBwbGUgW3BSb3dUb2dnbGVyXT1cImJlYW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicC1lbGVtZW50IHAtcmlwcGxlIHAtYnV0dG9uLXJvdW5kZWQgbXItMiBtYi0yIHAtYnV0dG9uIHAtY29tcG9uZW50IHAtYnV0dG9uLWRlc3BsZWdhYmxlIHAtYnV0dG9uLWljb24tb25seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ljb25dPVwiZXhwYW5kZWQgPyAncGkgcGktY2hldnJvbi1kb3duJyA6ICdwaSBwaS1jaGV2cm9uLXJpZ2h0J1wiPjwvYnV0dG9uPlxuICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmb250LWJvbGQgbWwtMlwiIHN0eWxlPVwibGluZS1oZWlnaHQ6IDQwcHg7XCI+e3tiZWFuLmxsYXZldW5pY2F9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxici8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwicm93ZXhwYW5zaW9uXCIgbGV0LWJlYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tiZWFuLmNhbXBvQXRyaWJ1dG99fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCAqbmdJZj1cImJlYW4udGlwb0RhdG8gPT0gJ0wnIHx8IGJlYW4udGlwb0RhdG8gPT0gJ1QnXCI+e3tiZWFuLmNhZGVuYX19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCAqbmdJZj1cImJlYW4udGlwb0RhdG8gPT0gJ0QnIHx8IGJlYW4udGlwb0RhdG8gPT0gJ04nXCI+e3tiZWFuLm51bWVyb319PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCAqbmdJZj1cImJlYW4udGlwb0RhdG8gPT0gJ0YnXCI+e3tiZWFuLmNhZGVuYSB8IGRhdGUgOiAoJ2Zvcm1hdG9mZWNoYScgfCB0cmFuc2xhdGUpIH19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJlbXB0eW1lc3NhZ2VcIj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgICAgPHRkIGNvbHNwYW49XCIxMDBcIj4gXG4gICAgICAgICAgICAgICAgPGFwcC10ZW1wbGF0ZS10YWJsYS12YWNpYT48L2FwcC10ZW1wbGF0ZS10YWJsYS12YWNpYT5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgPC9uZy10ZW1wbGF0ZT4gICAgICAgICAgICAgICAgICAgIDwvcC10YWJsZT5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9wLWFjY29yZGlvblRhYj5cbiAgICAgICAgPC9wLWFjY29yZGlvbj5cbiAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiAqbmdJZj1cImlzTW90b3IoKVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWwtMiBtYi0xIG10LTJcIiAqbmdJZj1cImxpbmVhc0Nvbk1lbnNhamUgIT0gMFwiID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwLWNoZWNrYm94IGNsYXNzPVwibWwtMVwiIFsobmdNb2RlbCldPVwidmVySW5jb25zaXN0ZW5jaWFcIiAgW2JpbmFyeV09XCJ0cnVlXCI+ICA8L3AtY2hlY2tib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgc3R5bGU9XCJtYXJnaW46IDNweCA4cHg7XCI+ICB7eydzb2xvaW5jb25zaXN0ZW5jaWFzJyB8IHRyYW5zbGF0ZX19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBwQnV0dG9uIHBSaXBwbGUgY2xhc3M9XCJwLWJ1dHRvbi1zZWNvbmRhcnkgZm9udC1zZW1pYm9sZCBtbC0yIG1iLTAgbXQtMFwiIGljb249XCJnbHlwaGljb25zIGdseXBoaWNvbnMtcGxheVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInZlckJvdG9uRWplY3V0YXIgJiYgcHJvY2VzYXJEYXRvcyAmJiAoaXNJbXBvcnRhY2lvbigpIHx8IGlzRWplY3VjaW9uKCkpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPVwie3snbGlua19lamVjdXRhcicgfCB0cmFuc2xhdGV9fVwiIChjbGljayk9XCJlamVjdXRhcigpXCI+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHBCdXR0b24gcFJpcHBsZSBjbGFzcz1cInAtYnV0dG9uLW91dGxpbmVkIGNsYXJvIGZvbnQtc2VtaWJvbGQgbWwtMiBtYi0wIG10LTBcIiAqbmdJZj1cInByb2Nlc29EVE8ubGxhdmVUYWJsYSAhPSBudWxsXCIgaWNvbj1cImdseXBoaWNvbnMgZ2x5cGhpY29ucy1iaW5cIiBcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPVwie3snbGlua19lbGltaW5hcicgfCB0cmFuc2xhdGV9fVwiIChjbGljayk9XCJjYW5jZWxhclByb2Nlc28oKVwiPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgcEJ1dHRvbiBwUmlwcGxlIGljb249XCJwaSBwaS1maWxlXCIgKGNsaWNrKT1cInRhYmxhMi5leHBvcnRDU1YoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInAtYnV0dG9uLXJhaXNlZCBwLWJ1dHRvbi1leHBvcnQgYm9yZGVyLXNvbGlkLTEgYm9yZGVyLWNvbG9yLTQwMCBtbC0yIHctYXV0b1wiIHBUb29sdGlwPVwiQ1NWXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBwQnV0dG9uIHBSaXBwbGUgaWNvbj1cInBpIHBpLWZpbGUtZXhjZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRhdGFFeHBvcnRlci5leHBvcnRFeGNlbENvbHVtbmFzKHRhYmxhMi5maWx0ZXJlZFZhbHVlID09IG51bGwgPyB0YWJsYTIudmFsdWUgOiB0YWJsYTIuZmlsdGVyZWRWYWx1ZSAsICd0YWJsYTInLCBjb2x1bW5hc0V4cG9ydEV4Y2VsMilcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwLWJ1dHRvbi1vdXRsaW5lZCBtbC0yIGJhY2tncm91bmQtMTAwIHctYXV0b1wiIHBUb29sdGlwPVwiWExTXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBwQnV0dG9uIHBSaXBwbGUgaWNvbj1cInBpIHBpLWZpbGUtcGRmXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkYXRhRXhwb3J0ZXIuZXhwb3J0UGRmKHRhYmxhMi5maWx0ZXJlZFZhbHVlID09IG51bGwgPyB0YWJsYTIudmFsdWUgOiB0YWJsYTIuZmlsdGVyZWRWYWx1ZSAsIGV4cG9ydENvbHVtbnMyLCAndGFibGEyJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwLWJ1dHRvbi1vdXRsaW5lZCBtbC0yIHctYXV0b1wiIHBUb29sdGlwPVwiUERGXCIgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCI+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxici8+XG4gICAgICAgICAgICA8cC10YWJsZSAjdGFibGFEYXRvczIgcmVzcG9uc2l2ZUxheW91dD1cInNjcm9sbFwiIFt2YWx1ZV09XCJsaW5lYXNDYXJnYWRhc1wiIHJlc3BvbnNpdmVMYW95b3V0PVwic2Nyb2xsXCIgW3BhZ2luYXRvcl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBbcm93c109XCIxMFwiIFt0b3RhbFJlY29yZHNdPVwibGluZWFzQ2FyZ2FkYXMubGVuZ3RoXCIgW2V4cG9ydEZpbGVuYW1lXT1cIid0YWJsYURhdG9zJ1wiIFtjb2x1bW5zXT1cImNvbHMyXCJcbiAgICAgICAgICAgICAgICBbcGFnaW5hdG9yXT1cImxpbmVhc0NhcmdhZGFzLmxlbmd0aCA+IDEwXCIgW3Jvd3NQZXJQYWdlT3B0aW9uc109XCJbMTAsIDIwLCA1MF1cIlxuICAgICAgICAgICAgICAgIFtzaG93Q3VycmVudFBhZ2VSZXBvcnRdPVwidHJ1ZVwiIFtzY3JvbGxhYmxlXT1cInRydWVcIlxuICAgICAgICAgICAgICAgIGN1cnJlbnRQYWdlUmVwb3J0VGVtcGxhdGU9XCJ7Zmlyc3R9IGFsIHtsYXN0fSBkZSB7dG90YWxSZWNvcmRzfSByZWdpc3Ryb3NcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiICF2ZXJJbmNvbnNpc3RlbmNpYVwiPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJoZWFkZXJcIj5cblxuICAgICAgICAgICAgICAgICAgICA8dHIgY2xhc3M9XCJmb25kb1RhYmxhUGluY2lwYWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD57eydudW1lcm9saW5lYScgfCB0cmFuc2xhdGV9fTwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGg+e3snbGluZWEnIHwgdHJhbnNsYXRlfX08L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoPnt7J21lbnNhamUnIHwgdHJhbnNsYXRlfX08L3RoPlxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImJvZHlcIiBsZXQtYmVhbj5cbiAgICAgICAgICAgICAgICAgICAgPHRyIFtwU2VsZWN0YWJsZVJvd109XCJiZWFuXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tiZWFuLm51bWVyb319PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e2JlYW4ubGluZWF9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tiZWFuLm1lbnNhamV9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiZW1wdHltZXNzYWdlXCI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICAgIDx0ZCBjb2xzcGFuPVwiMTAwXCI+IFxuICAgICAgICAgICAgICAgIDxhcHAtdGVtcGxhdGUtdGFibGEtdmFjaWE+PC9hcHAtdGVtcGxhdGUtdGFibGEtdmFjaWE+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICA8L3RyPlxuICAgIDwvbmctdGVtcGxhdGU+ICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJmb290ZXJcIiBsZXQtZGF0byA+XG4gICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImZvbnQtYm9sZFwiICpuZ0lmPVwibGluZWFzQ29uTWVuc2FqZSAhPSAwIHx8IGxpbmVhc1Npbk1lbnNhamUgIT0gMFwiPnt7J3Jlc3VtZW4nIHwgdHJhbnNsYXRlfX06IDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJmb250LWJvbGRcIiAqbmdJZj1cImxpbmVhc0Nvbk1lbnNhamUgIT0gMCB8fCBsaW5lYXNTaW5NZW5zYWplICE9IDBcIj57eydjYW50aWRhZGxpbmVhc2lubWVuc2FqZScgfCB0cmFuc2xhdGV9fToge3tsaW5lYXNTaW5NZW5zYWplfX08L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZm9udC1ib2xkXCIgKm5nSWY9XCJsaW5lYXNDb25NZW5zYWplICE9IDAgfHwgbGluZWFzU2luTWVuc2FqZSAhPSAwXCI+e3snY2FudGlkYWRsaW5lYWNvbm1lbnNhamUnIHwgdHJhbnNsYXRlfX06IHt7bGluZWFzQ29uTWVuc2FqZX19PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9wLXRhYmxlPlxuICAgICAgICAgICAgPHAtdGFibGUgcmVzcG9uc2l2ZUxheW91dD1cInNjcm9sbFwiIFt2YWx1ZV09XCJsaW5lYXNJbmNvbnNpc3RlbmNpYVwiIHJlc3BvbnNpdmVMYW95b3V0PVwic2Nyb2xsXCIgW3BhZ2luYXRvcl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBbcm93c109XCIxMFwiIFt0b3RhbFJlY29yZHNdPVwibGluZWFzSW5jb25zaXN0ZW5jaWEubGVuZ3RoXCJcbiAgICAgICAgICAgICAgICBbcGFnaW5hdG9yXT1cImxpbmVhc0luY29uc2lzdGVuY2lhLmxlbmd0aCA+IDEwXCIgW3Jvd3NQZXJQYWdlT3B0aW9uc109XCJbMTAsIDIwLCA1MF1cIlxuICAgICAgICAgICAgICAgIFtzaG93Q3VycmVudFBhZ2VSZXBvcnRdPVwidHJ1ZVwiIFtzY3JvbGxhYmxlXT1cInRydWVcIlxuICAgICAgICAgICAgICAgIGN1cnJlbnRQYWdlUmVwb3J0VGVtcGxhdGU9XCJ7Zmlyc3R9IGFsIHtsYXN0fSBkZSB7dG90YWxSZWNvcmRzfSByZWdpc3Ryb3NcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwidmVySW5jb25zaXN0ZW5jaWFcIj5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCI+XG5cbiAgICAgICAgICAgICAgICAgICAgPHRyIGNsYXNzPVwiZm9uZG9UYWJsYVBpbmNpcGFsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGg+e3snbnVtZXJvbGluZWEnIHwgdHJhbnNsYXRlfX08L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoPnt7J2xpbmVhJyB8IHRyYW5zbGF0ZX19PC90aD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD57eydtZW5zYWplJyB8IHRyYW5zbGF0ZX19PC90aD5cbiAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJib2R5XCIgbGV0LWJlYW4+XG4gICAgICAgICAgICAgICAgICAgIDx0ciBbcFNlbGVjdGFibGVSb3ddPVwiYmVhblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7YmVhbi5udW1lcm99fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tiZWFuLmxpbmVhfX08L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7YmVhbi5tZW5zYWplfX08L3RkPlxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImVtcHR5bWVzc2FnZVwiPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgICA8dGQgY29sc3Bhbj1cIjEwMFwiPiBcbiAgICAgICAgICAgICAgICA8YXBwLXRlbXBsYXRlLXRhYmxhLXZhY2lhPjwvYXBwLXRlbXBsYXRlLXRhYmxhLXZhY2lhPlxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJmb290ZXJcIiBsZXQtZGF0byA+XG4gICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImZvbnQtYm9sZFwiICpuZ0lmPVwibGluZWFzQ29uTWVuc2FqZSAhPSAwIHx8IGxpbmVhc1Npbk1lbnNhamUgIT0gMFwiPnt7J3Jlc3VtZW4nIHwgdHJhbnNsYXRlfX06IDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJmb250LWJvbGRcIiAqbmdJZj1cImxpbmVhc0Nvbk1lbnNhamUgIT0gMCB8fCBsaW5lYXNTaW5NZW5zYWplICE9IDBcIj57eydjYW50aWRhZGxpbmVhc2lubWVuc2FqZScgfCB0cmFuc2xhdGV9fToge3tsaW5lYXNTaW5NZW5zYWplfX08L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZm9udC1ib2xkXCIgKm5nSWY9XCJsaW5lYXNDb25NZW5zYWplICE9IDAgfHwgbGluZWFzU2luTWVuc2FqZSAhPSAwXCI+e3snY2FudGlkYWRsaW5lYWNvbm1lbnNhamUnIHwgdHJhbnNsYXRlfX06IHt7bGluZWFzQ29uTWVuc2FqZX19PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9wLXRhYmxlPlxuIFxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICBcbiAgICBcbjwvZGl2PlxuPC9kaXY+XG4iXX0=
588
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wb3J0YXItZnVlbnRlLWNvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3dlYmNvbW1vbi9wYWdlcy9mdWVudGUvaW1wb3J0YXItZnVlbnRlLWNvbi9pbXBvcnRhci1mdWVudGUtY29uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvd2ViY29tbW9uL3BhZ2VzL2Z1ZW50ZS9pbXBvcnRhci1mdWVudGUtY29uL2ltcG9ydGFyLWZ1ZW50ZS1jb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQVUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRixPQUFPLEVBQUUsZUFBZSxFQUFvQixNQUFNLHFCQUFxQixDQUFDO0FBSXhFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUNwRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUN0RixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUdwRyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUNsRyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUl0RixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFHeEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG1GQUFtRixDQUFDO0FBQ3pILE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDhFQUE4RSxDQUFDO0FBQzNILE9BQU8sRUFB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YyxFQUFFLDJCQUEyQixFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLFlBQVksRUFBRSxjQUNoVSxJQUFJLGFBR04sQ0FBQyxZQUFZLEVBQUUsY0FBYyxFQUFFLG1CQUFtQixDQUFDOzBaQXlFN0MsY0FBYztzQkFBOUIsTUFBTTtnQkFDa0IsVUFBVTtzQkFBbEMsU0FBUzt1QkFBQyxZQUFZO2dCQUNFLEtBQUs7c0JBQTdCLFNBQVM7dUJBQUMsWUFBWTtnQkFDRyxNQUFNO3NCQUEvQixTQUFTO3VCQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlLCBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBHZW5lcmFsUGlwZSB9IGZyb20gJy4uLy4uLy4uL3BpcGVzL2dlbmVyYWwucGlwZSc7XG5pbXBvcnQgeyBHZW5lcmFsU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NoYXJlZC9zZXJ2aWNpb3MvZ2VuZXJhbC5zZXJ2aWNlJztcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvc2VydmljaW9zL3RvYXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgR2VuZXJhbE1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2VndXJpZGFkL21vZGVsb3MvR2VuZXJhbE1vZGVsJztcbmltcG9ydCB7IFJlY3Vyc29QdW50b01vZGVsIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2VndXJpZGFkL21vZGVsb3MvUmVjdXJzb1B1bnRvTW9kZWwnO1xuaW1wb3J0IHsgRnVlbnRlR2VuZXJhbE1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2VndXJpZGFkL21vZGVsb3MvRnVlbnRlR2VuZXJhbE1vZGVsJztcbmltcG9ydCB7IEZ1ZW50ZVByb2Nlc29HZW5lcmFsTW9kZWwgfSBmcm9tICcuLi8uLi8uLi8uLi9zZWd1cmlkYWQvbW9kZWxvcy9GdWVudGVQcm9jZXNvR2VuZXJhbE1vZGVsJztcbmltcG9ydCB7IExpc3RhU2VydmljaW9Nb2RlbCB9IGZyb20gJy4uLy4uLy4uLy4uL3NlZ3VyaWRhZC9tb2RlbG9zL0xpc3RhU2VydmljaW9Nb2RlbCc7XG5pbXBvcnQgeyBHcnVwb0Z1ZW50ZU1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2VndXJpZGFkL21vZGVsb3MvR3J1cG9GdWVudGVNb2RlbCc7XG5pbXBvcnQgeyBGdWVudGVDYW1wb0F0cmlidXRvTW9kZWwgfSBmcm9tICcuLi8uLi8uLi8uLi9zZWd1cmlkYWQvbW9kZWxvcy9GdWVudGVDYW1wb0F0cmlidXRvTW9kZWwnO1xuaW1wb3J0IHsgRnVlbnRlRW50cmFkYU1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2VndXJpZGFkL21vZGVsb3MvRnVlbnRlRW50cmFkYU1vZGVsJztcbmltcG9ydCB7IENydWNlUmVjdXJzb1B1bnRvTW9kZWwgfSBmcm9tICcuLi8uLi8uLi8uLi9zZWd1cmlkYWQvbW9kZWxvcy9DcnVjZVJlY3Vyc29QdW50b01vZGVsJztcbmltcG9ydCB7IFRhYmxlQ29sdW1uIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS9tb2RlbG9zL3RhYmxlLWNvbHVtbi5tb2RlbCc7XG5pbXBvcnQgeyBDYXJndWVMaW5lYU1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2VndXJpZGFkL21vZGVsb3MvQ2FyZ3VlTGluZWFNb2RlbCc7XG5pbXBvcnQgeyBGdWVudGVQaXBlIH0gZnJvbSAnLi4vLi4vLi4vcGlwZXMvZnVlbnRlLnBpcGUnO1xuaW1wb3J0IHsgQ2FyZ3VlTGluZWFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvY2FyZ3VlbGluZWEuc2VydmljZSc7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvc2VydmljaW9zL2F1dGguc2VydmljZSc7XG5pbXBvcnQgeyBIdHRwRXZlbnRUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgQ2FtcG9Gb3JtdWxhcmlvTW9kZWwgfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL2NvbXBvbmVudGVzL2Zvcm11bGFyaW9kaW5hbWljby9vYmpldG9zZm9ybXVsYXJpby9DYW1wb0Zvcm11bGFyaW8nO1xuaW1wb3J0IHsgRm9ybXVsYXJpb2RpbmFtaWNvQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS9jb21wb25lbnRlcy9mb3JtdWxhcmlvZGluYW1pY28vZm9ybXVsYXJpb2RpbmFtaWNvLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUYWJsZSwgVGFibGVNb2R1bGUgfSBmcm9tICdwcmltZW5nL3RhYmxlJztcbmltcG9ydCB7IERhdGFFeHBvcnRlciB9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvc2VydmljaW9zL2RhdGEtZXhwb3J0ZXItdGFibGUudXRpbHMnO1xuaW1wb3J0IHsgTWVudVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL3NlcnZpY2lvcy9tZW51LnNlcnZpY2UnO1xuaW1wb3J0IHsgVXRpbHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS9zZXJ2aWNpb3MvdXRpbHMuc2VydmljZSc7XG5pbXBvcnQgeyBDb25maXJtYXRpb25TZXJ2aWNlLCBNZXNzYWdlU2VydmljZSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7IFBhcmFtZXRyb3NOYXZlZ2FjaW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NoYXJlZC9zZXJ2aWNpb3MvcGFyYW1ldHJvcy1uYXZlZ2FjaW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgRmlsZVNlbGVjdEV2ZW50LCBGaWxlVXBsb2FkTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9maWxldXBsb2FkJztcbmltcG9ydCB7IENvbmZpcm1Qb3B1cE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvY29uZmlybXBvcHVwJztcbmltcG9ydCB7IElucHV0VGV4dE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvaW5wdXR0ZXh0JztcbmltcG9ydCB7IENoZWNrYm94TW9kdWxlIH0gZnJvbSAncHJpbWVuZy9jaGVja2JveCc7XG5pbXBvcnQgeyBUYWJWaWV3TW9kdWxlIH0gZnJvbSAncHJpbWVuZy90YWJ2aWV3JztcbmltcG9ydCB7IEFjY29yZGlvbk1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvYWNjb3JkaW9uJztcbmltcG9ydCB7IFRhYmxhR2VuZXJhbENvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvY29tcG9uZW50ZXMvdGFibGEtZ2VuZXJhbC90YWJsYS1nZW5lcmFsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGaWx0cm9HZW5lcmFsQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS9jb21wb25lbnRlcy9maWx0cm8tZ2VuZXJhbC9maWx0cm8tZ2VuZXJhbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlLCBEYXRlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBCdXR0b25Nb2R1bGUgfSBmcm9tICdwcmltZW5nL2J1dHRvbic7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWltcG9ydGFyLWZ1ZW50ZS1jb24nLFxuICBpbXBvcnRzOiBbVGFibGVNb2R1bGUsIENvbmZpcm1Qb3B1cE1vZHVsZSwgSW5wdXRUZXh0TW9kdWxlLCAgVHJhbnNsYXRlTW9kdWxlLCBDaGVja2JveE1vZHVsZSwgVGFiVmlld01vZHVsZSwgVGFibGFHZW5lcmFsQ29tcG9uZW50LCBGaWx0cm9HZW5lcmFsQ29tcG9uZW50LCBBY2NvcmRpb25Nb2R1bGUsIERhdGVQaXBlLCBCdXR0b25Nb2R1bGUsIENoZWNrYm94TW9kdWxlLCBGb3JtdWxhcmlvZGluYW1pY29Db21wb25lbnQsIEZpbGVVcGxvYWRNb2R1bGUsIEZvcm1zTW9kdWxlLCBGdWVudGVQaXBlLCBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgQ29tbW9uTW9kdWxlLF0sXG4gIHN0YW5kYWxvbmUgOiB0cnVlLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9pbXBvcnRhci1mdWVudGUtY29uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vaW1wb3J0YXItZnVlbnRlLWNvbi5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtEYXRhRXhwb3J0ZXIsIE1lc3NhZ2VTZXJ2aWNlLCBDb25maXJtYXRpb25TZXJ2aWNlXVxufSlcbmV4cG9ydCBjbGFzcyBJbXBvcnRhckZ1ZW50ZUNvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgcHVibGljIGNvbHVtbnM6IFRhYmxlQ29sdW1uW10gPSBbXTtcbiAgcHVibGljIGZpbHRlcnMgOiBhbnlbXSA9IFtdO1xuICBwdWJsaWMgcGFnaW5hZG9yRnVlbnRlOiBhbnlbXSA9IFtdO1xuICBwdWJsaWMgcGFnaW5hZG9yR3J1cG9zOiBhbnlbXSA9IFtdO1xuICBwdWJsaWMgcGFnaW5hZG9yU2VydmljaW9zOiBhbnlbXSA9IFtdO1xuICBwdWJsaWMgcGFnaW5hZG9yQ2FtcG9zOiBhbnlbXSA9IFtdO1xuICBwdWJsaWMgcGFnaW5hZG9yTGluZWFzOiBhbnlbXSA9IFtdO1xuICBwdWJsaWMgcGFnaW5hZG9yUGFyYW1ldHJvczogYW55W10gPSBbXTtcbiAgcHVibGljIHBhZ2luYWRvclByb2Nlc29zOiBhbnlbXSA9IFtdO1xuICBwdWJsaWMgZnVlbnRlRFRPOiBGdWVudGVHZW5lcmFsTW9kZWwgPSBuZXcgRnVlbnRlR2VuZXJhbE1vZGVsO1xuICBwdWJsaWMgcHJvY2Vzb0RUTzogRnVlbnRlUHJvY2Vzb0dlbmVyYWxNb2RlbDtcbiAgcHVibGljIGZ1ZW50ZTogc3RyaW5nO1xuICBwdWJsaWMgcGFuZWw6IHN0cmluZztcbiAgcHVibGljIHBhbmVsSW1wb3J0YXI6IHN0cmluZztcbiAgcHVibGljIHB1bnRvUHJvY2Vzbzogc3RyaW5nO1xuICBwdWJsaWMgdmVyRm9ybXVsYXJpbzogYm9vbGVhbiA9IGZhbHNlO1xuICBwdWJsaWMgcHJvY2VzYXJEYXRvczogYm9vbGVhbjtcbiAgcHVibGljIGVqZWN1dGFyRGF0b3M6IGJvb2xlYW47XG4gIHB1YmxpYyBjb25zdWx0YXJQb3JSZWN1cnNvOiBib29sZWFuO1xuICBwdWJsaWMgbW9zdHJhcjogYm9vbGVhbjtcbiAgcHVibGljIHZlckJvdG9uRWplY3V0YXI6IGJvb2xlYW47XG4gIHB1YmxpYyBub21icmVBcmNoaXZvOiBzdHJpbmc7XG4gIHB1YmxpYyBydXRhQXJjaGl2bzogc3RyaW5nO1xuICBwdWJsaWMgc2VydmljaW9zOiBMaXN0YVNlcnZpY2lvTW9kZWxbXSA9IFtdO1xuICBwdWJsaWMgZ3J1cG86IEdydXBvRnVlbnRlTW9kZWw7XG4gIHB1YmxpYyBzZXJ2aWNpbzogYW55O1xuICBwdWJsaWMgbGluZWFGdWVudGU6IGFueTtcbiAgcHVibGljIHByb2dyZXNvOiBudW1iZXI7XG4gIHB1YmxpYyBwYXJhbWV0cm9zUHVudG86IEZ1ZW50ZUNhbXBvQXRyaWJ1dG9Nb2RlbFtdPVtdO1xuICAvL3B0ZSBmb3JtXG4gIHB1YmxpYyBhY2Npb246IGFueTtcbiAgcHVibGljIGVudHJhZGFzOiBGdWVudGVDYW1wb0F0cmlidXRvTW9kZWxbXT1bXTtcbiAgcHVibGljIGxpbmVhc0NhcmdhZGFzOiBDYXJndWVMaW5lYU1vZGVsW109W107XG5cdHB1YmxpYyBsaW5lYXNJbmNvbnNpc3RlbmNpYTogQ2FyZ3VlTGluZWFNb2RlbFtdPVtdO1xuICBwdWJsaWMgdmVySW5jb25zaXN0ZW5jaWE6IGJvb2xlYW47XG5cdHB1YmxpYyBsaW5lYXNTaW5NZW5zYWplOiBudW1iZXI7XG5cdHB1YmxpYyBsaW5lYXNDb25NZW5zYWplOiBudW1iZXI7XG4gIHB1YmxpYyBkYXRvczogR3J1cG9GdWVudGVNb2RlbFtdPVtdO1xuICBwdWJsaWMgbGxhdmVQcm9jZXNvQ2FyZ3VlRnVlbnRlQkQ6IHN0cmluZztcbiAgcHVibGljIGNhbXBvczogQ2FtcG9Gb3JtdWxhcmlvTW9kZWxbXSA9IFtdO1xuICBwdWJsaWMgY29sczphbnlbXVxuICBwdWJsaWMgZXhwb3J0Q29sdW1uczogYW55W107XG4gIHB1YmxpYyBlc3RhZG9SZWdyZXNhcjogc3RyaW5nID0gbnVsbDtcbiAgcHVibGljIGNvbHVtbmFzRXhwb3J0RXhjZWwgPSBbJ2NvZGlnbycsICd1bmljYUxpbmVhJywgJ21lbnNhamVFcnJvcmVzJ107XG5cblxuICBwdWJsaWMgcGFnaW5hdG9yID0ge1xuICAgIHJvd3M6IDEwLFxuICAgIHRvdGFsUmVjb3JkczogMCxcbiAgfTtcbiAgcHVibGljIGxvYWRpbmdQYWdpbmFkb3JGdWVudGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIGFyY2hpdm9TZWxlY2Npb25hZG86IGFueTtcbiAgcHVibGljIHJlZ3Jlc2FyUHVudG9Qcm9jZXNvOiBzdHJpbmcgPSBudWxsO1xuXG4gIHB1YmxpYyBjYW1wb3NBcmNoaXZvOiBhbnlbXSA9IFtdXG5cbiAgcHVibGljIEFDQ0lPTiAgPSB7XG4gICAgSU1QT1JUQVIgOiAncHJvY2VzYW5kbyBlbCBhcmNoaXZvJyxcbiAgICBFSkVDVVRBUjogJ0VqZWN1dGFuZG8gbG9zIFNlcnZpY2lvcycsXG4gICAgVkVSOiAnQ29uc3VsdGFuZG8nLFxuICAgIERJUkVDVE86ICdQcm9jZXNhbmRvIGFyY2hpdm8tc2VydmljaW9zJyxcbiAgfVxuXG4gIHB1YmxpYyBQQU5FTCA9IHtcbiAgICBJTVBPUlRBUjogJ0lNUE9SVEFSJyxcbiAgICBEQVRPUzogJ0RBVE9TJyxcbiAgICBHUlVQT1M6ICdHUlVQT1MnLFxuICAgIERFVEFMTEVHUlVQTzogJ0RFVEFMTEVHUlVQTydcbiAgfVxuICBAT3V0cHV0KCkgcHVibGljIHJlZ3Jlc2FyRnVlbnRlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQFZpZXdDaGlsZCgnZm9ybXVsYXJpbycpIGZvcm11bGFyaW86IEZvcm11bGFyaW9kaW5hbWljb0NvbXBvbmVudDtcbiAgQFZpZXdDaGlsZCgndGFibGFEYXRvcycpIHRhYmxhOiBUYWJsZTtcbiAgQFZpZXdDaGlsZCgndGFibGFEYXRvczInKSB0YWJsYTI6IFRhYmxlO1xuXG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBnZW5lcmFsU2VydmljZTogR2VuZXJhbFNlcnZpY2UsXG4gICAgICAgICAgICAgIHB1YmxpYyBkYXRhRXhwb3J0ZXI6IERhdGFFeHBvcnRlcixcbiAgICAgICAgICAgICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgZnVlbnRlUGlwZTogRnVlbnRlUGlwZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBjYXJndWVMaW5lYVNlcnZpY2U6IENhcmd1ZUxpbmVhU2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBub3RpZmljYWNpb25lc1NlcnZpY2U6IFRvYXN0U2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBjb25maXJtYXRpb25TZXJ2aWNlOiBDb25maXJtYXRpb25TZXJ2aWNlLFxuICAgICAgICAgICAgICBwcml2YXRlIG1lbnVTZXJ2aWNlOiBNZW51U2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBnZW5lcmFsUGlwZTogR2VuZXJhbFBpcGUsXG4gICAgICAgICAgICAgIHB1YmxpYyB1dGlsc1NlcnZpY2U6IFV0aWxzU2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBwYXJhbWV0cm9zTmF2ZWdhY2lvblNlcnZpY2U6IFBhcmFtZXRyb3NOYXZlZ2FjaW9uU2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlIDogVHJhbnNsYXRlU2VydmljZSkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNhbXBvc0FyY2hpdm8gPSBbe2Rlc2NyaXBjaW9uOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnbm9tYnJlYXJjaGl2bycpICsgJyonfV1cbiAgICB0aGlzLnZlckJvdG9uRWplY3V0YXIgPSBmYWxzZTtcbiAgICB0aGlzLmxpbmVhc0NhcmdhZGFzID0gW107XG4gICAgdGhpcy5saW5lYXNJbmNvbnNpc3RlbmNpYSA9IFtdO1xuICAgIHRoaXMuY29sdW1ucyA9IFtcbiAgICAgIHtcbiAgICAgICAgZmllbGQ6ICAnZGVzY3JpcGNpb24nLFxuICAgICAgICBoZWFkZXI6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdmdWVudGUnKSxcbiAgICAgICAgd2lkdGg6IDEwMCxcbiAgICAgIH0sXG4gICAgXTtcbiAgICB0aGlzLmZpbHRlcnMgPSBbXG4gICAgICB7XG4gICAgICAgIGZpZWxkOiAnZGVzY3JpcGNpb24nLFxuICAgICAgICBoZWFkZXI6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdkZXNjcmlwY2lvbicpLFxuICAgICAgICBtYXRjaE1vZGU6ICdjb250YWlucycsXG4gICAgICB9XG4gICAgXTtcbiAgICB0aGlzLmNyZWFyQ29sdW1uYXNFeHBvcnRhcigpXG4gICAgaWYgKHRoaXMucGFyYW1ldHJvc05hdmVnYWNpb25TZXJ2aWNlLmdldFBhcmFtZXRyb3MoKSl7XG4gICAgICB0aGlzLnJlZ3Jlc2FyUHVudG9Qcm9jZXNvID0gdGhpcy5wYXJhbWV0cm9zTmF2ZWdhY2lvblNlcnZpY2UuZ2V0UGFyYW1ldHJvcygpLnJlZ3Jlc2FyOyBcbiAgICAgIHRoaXMuY2FyZ2FyKHRoaXMucGFyYW1ldHJvc05hdmVnYWNpb25TZXJ2aWNlLmdldFBhcmFtZXRyb3MoKS5mdWVudGUpO1xuICAgIH1cbiAgfVxuXG4gIGNyZWFyQ29sdW1uYXNFeHBvcnRhcigpIHtcbiAgICB0aGlzLmNvbHMgPSBbXG4gICAgICB7IGZpZWxkOiAnY29kaWdvJywgaGVhZGVyOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnZ3J1cG8nKSwgY3VzdG9tRXhwb3J0SGVhZGVyOiAnUHJ1ZWJhJyB9LFxuICAgICAgeyBmaWVsZDogJ3VuaWNhTGluZWEnLCBoZWFkZXI6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdsaW5lYScpIH0sXG4gICAgICB7IGZpZWxkOiAnbWVuc2FqZUVycm9yZXMnLCBoZWFkZXI6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdhZHZlcnRlbmNpYScpIH0sXG4gICAgXTtcblxuICAgIHRoaXMuZXhwb3J0Q29sdW1ucyA9IHRoaXMuY29scy5tYXAoY29sID0+ICh7IHRpdGxlOiBjb2wuaGVhZGVyLCBkYXRhS2V5OiBjb2wuZmllbGQgfSkpO1xuICB9XG5cbiAgdHJhZXJGdWVudGUoKSB7XG4gICAgaWYgKCF0aGlzLnBhcmFtZXRyb3NOYXZlZ2FjaW9uU2VydmljZS5nZXRQYXJhbWV0cm9zKCkpe1xuICAgICAgdGhpcy5mdWVudGVEVE8gPSBudWxsO1xuICAgICAgdGhpcy5jb25zdWx0YXJQb3JSZWN1cnNvID0gZmFsc2U7XG4gICAgICAvL2luaWNpYXIoKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBjYXJnYXJsaXN0YWRvKGV2ZW50KXtcbiAgICB0aGlzLmxvYWRpbmdQYWdpbmFkb3JGdWVudGUgPSB0cnVlO1xuICAgIHZhciBvYmpldG8gPSB7XG4gICAgICBwYWdpbmFjaW9uUmVnaXN0cm9JbmljaWFsOiBldmVudC5maXJzdCxcbiAgICAgIHBhZ2luYWNpb25SZWdpc3Ryb0ZpbmFsOiBldmVudC5yb3dzLFxuICAgICAgbG9naW46IHRoaXMuYXV0aFNlcnZpY2UuZ2V0VG9rZW5LZXkoJ3VzdWFyaW8nKSxcbiAgICAgIHJvbDogdGhpcy5hdXRoU2VydmljZS5nZXRUb2tlbktleSgnYWxpYXNSb2wnKSxcbiAgICAgIHB1bnRvUHJvY2VzbzogdGhpcy5jb25zdWx0YXJQb3JSZWN1cnNvID8gdGhpcy5wdW50b1Byb2Nlc28gOiBudWxsLFxuICAgICAgZnVlbnRlR2VuZXJhbDogdGhpcy5jb25zdWx0YXJQb3JSZWN1cnNvID8gbnVsbCA6ICdTJyxcbiAgICAgIGFwbGljYWNpb246IHRoaXMuY29uc3VsdGFyUG9yUmVjdXJzbyA/IG51bGwgOiB0aGlzLmF1dGhTZXJ2aWNlLmdldFRva2VuS2V5KCdhcGxpY2FjaW9uJykucGFkRW5kKDEwKSxcbiAgICAgIGRlc2NyaXBjaW9uOiBldmVudC5maWx0ZXJzPy5kZXNjcmlwY2lvbj8udmFsdWUgPyAnJScgKyBldmVudC5maWx0ZXJzPy5kZXNjcmlwY2lvbj8udmFsdWUgKyAnJScgOiBudWxsXG4gICAgfVxuICAgIHRoaXMuZ2VuZXJhbFNlcnZpY2UucXVlcnlGb3JMaXN0KG5ldyBHZW5lcmFsTW9kZWwoJ0Z1ZW50ZUdlbmVyYWxEVE8nLCBudWxsLCBmYWxzZSwgb2JqZXRvKSkuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgdGhpcy5wYWdpbmFkb3JGdWVudGUgPSBkYXRhO1xuICAgICAgdGhpcy5sb2FkaW5nUGFnaW5hZG9yRnVlbnRlID0gZmFsc2U7XG4gICAgICB0aGlzLmdlbmVyYWxTZXJ2aWNlLmNhbnRpZGFkUmVnaXN0cm9zKG5ldyBHZW5lcmFsTW9kZWwoJ0Z1ZW50ZUdlbmVyYWxEVE8nLCBudWxsLCBmYWxzZSwgb2JqZXRvKSkuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgICB0aGlzLnBhZ2luYXRvci50b3RhbFJlY29yZHMgPSBkYXRhO1xuICAgICAgICB0aGlzLnV0aWxzU2VydmljZS5yZXNpemVXaW5kb3dJRnJhbWUoKTtcbiAgICAgIH0pXG4gICAgfSlcbiAgfVxuXG4gIGNhcmdhcihldmVudCl7XG4gICAgdGhpcy5hcmNoaXZvU2VsZWNjaW9uYWRvID0gbnVsbDtcbiAgICB0aGlzLnJlZ3Jlc2FyRnVlbnRlLmVtaXQoZmFsc2UpXG4gICAgdGhpcy5mdWVudGVEVE8gPSBldmVudDtcbiAgICB0aGlzLm1lbnVTZXJ2aWNlLnNldEJyZWFkY3J1bWIoW3sgbGFiZWw6ICdMaXN0YSBGdWVudGVzIGRlIEltcG9ydGFjacOzbicsIGNvbW1hbmQ6IChldmVudCkgPT57XG4gICAgICBsb2NhdGlvbi5yZWxvYWQoKVxuICAgIH19LCB7IGxhYmVsOiAnRGV0YWxsZSBGdWVudGVzIGRlIEltcG9ydGFjacOzbicgfV0pO1xuICAgIHRoaXMubnVldm9Qcm9jZXNvKCkudGhlbihkYXRhID0+IHtcbiAgICAgIGlmICh0aGlzLmlzTW90b3IoKSl7XG4gICAgICAgIHRoaXMucHJlcGFyYXJDYW1wb3NQYXJhSW1wb3J0YXIoKS50aGVuKGRhdGEgPT4ge3RoaXMudXRpbHNTZXJ2aWNlLnJlc2l6ZVdpbmRvd0lGcmFtZSgpO30pO1xuICAgICAgfVxuICAgICAgdGhpcy51dGlsc1NlcnZpY2UucmVzaXplV2luZG93SUZyYW1lKCk7XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBudWV2b1Byb2Nlc28oKSB7XG4gICAgdGhpcy52ZXJCb3RvbkVqZWN1dGFyID0gdHJ1ZTtcbiAgICB0aGlzLnByb2Nlc29EVE8gPSBuZXcgRnVlbnRlUHJvY2Vzb0dlbmVyYWxNb2RlbCgpO1xuICAgIHRoaXMucHJvY2Vzb0RUTy5mdWVudGUgPSB0aGlzLmZ1ZW50ZURUTy5sbGF2ZVRhYmxhO1xuICAgIHRoaXMucHJvY2Vzb0RUTy51c3VhcmlvID0gdGhpcy5hdXRoU2VydmljZS5nZXRUb2tlbktleSgndXN1YXJpbycpO1xuICAgIHRoaXMucHJvY2Vzb0RUTy5mZWNoYVByb2Nlc28gPSBuZXcgRGF0ZSgpO1xuICAgIGF3YWl0IHRoaXMucHJlcGFyYXJDYW1wb3NQYXJhSW1wb3J0YXIoKTtcbiAgfVxuXG4gIGFzeW5jIHByZXBhcmFyQ2FtcG9zUGFyYUltcG9ydGFyKCkge1xuXHRcdHRoaXMucGFuZWwgPSAnSU1QT1JUQVInOy8vUEFORUwuSU1QT1JUQVIuZ2V0UGFuZWwoKTtcblx0XHR0aGlzLnJ1dGFBcmNoaXZvID0gbnVsbDtcblx0XHR0aGlzLm5vbWJyZUFyY2hpdm8gPSBudWxsO1xuXHRcdHRoaXMubW9zdHJhciA9IHRydWU7XG4gICAgYXdhaXQgdGhpcy5jYXJnYXJGb3JtdWxhcmlvQ2FtcG9zRW50cmFkYSgpXG4gIH1cblxuICBhc3luYyBjYXJnYXJGb3JtdWxhcmlvQ2FtcG9zRW50cmFkYSgpe1xuICAgIGF3YWl0IHRoaXMuY2FyZ2FyUGFyYW1ldHJvc1B1bnRvUHJvY2VzbygpXG4gICAgdGhpcy5jYW1wb3MgPSBhd2FpdCB0aGlzLmNhbXBvc0VudHJhZGEodGhpcy5mdWVudGVEVE8sIHRoaXMucGFyYW1ldHJvc1B1bnRvKTtcbiAgICBpZiAodGhpcy5jYW1wb3MgPT0gbnVsbCB8fCB0aGlzLmNhbXBvcy5sZW5ndGggPD0gMCkge1xuXHRcdFx0dGhpcy52ZXJGb3JtdWxhcmlvID0gZmFsc2U7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdHRoaXMudmVyRm9ybXVsYXJpbyA9IHRydWU7XG4gICAgdGhpcy51dGlsc1NlcnZpY2UucmVzaXplV2luZG93SUZyYW1lKCk7XG4gIH1cblxuICBhc3luYyBjYW1wb3NFbnRyYWRhKGZ1ZW50ZTogRnVlbnRlR2VuZXJhbE1vZGVsLCBwYXJhbWV0cm9zUHVudG86IEZ1ZW50ZUNhbXBvQXRyaWJ1dG9Nb2RlbFtdKSB7XG4gIGlmIChmdWVudGUgPT0gbnVsbCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHZhciByZXRvcm5vOiBDYW1wb0Zvcm11bGFyaW9Nb2RlbFtdID0gW107XG4gIHZhciBlbnRyYWRhczogRnVlbnRlRW50cmFkYU1vZGVsW10gPSBhd2FpdCB0aGlzLmdlbmVyYWxTZXJ2aWNlLnF1ZXJ5Rm9yTGlzdChuZXcgR2VuZXJhbE1vZGVsKCdGdWVudGVFbnRyYWRhRFRPJywgbnVsbCwgZmFsc2UsIHtmdWVudGU6IGZ1ZW50ZS5sbGF2ZVRhYmxhfSkpLnRvUHJvbWlzZSgpO1xuICBpZiAoZW50cmFkYXMgPT0gbnVsbCB8fCBlbnRyYWRhcy5sZW5ndGggPD0gMCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGVudHJhZGFzOiBmb3IgKGxldCBpID0gMDsgaSA8IGVudHJhZGFzLmxlbmd0aCA7IGkrKykge1xuICAgIHZhciBlbGVtZW50ID0gZW50cmFkYXNbaV0gXG4gICAgO2ZvciAobGV0IGogPSAwOyBqIDwgcGFyYW1ldHJvc1B1bnRvLmxlbmd0aDsgaisrKSB7XG4gICAgICB2YXIgcHVudG9wcm9jZXNvID0gcGFyYW1ldHJvc1B1bnRvW2pdXG4gICAgICBpZiAocHVudG9wcm9jZXNvLmNhbXBvQXRyaWJ1dG8gPT0gZWxlbWVudC5kZXNjcmlwY2lvbikge1xuICAgICAgICBjb250aW51ZSBlbnRyYWRhcztcbiAgICAgIH1cbiAgICB9XG4gICAgdmFyIGRhdG8gPSBuZXcgRnVlbnRlQ2FtcG9BdHJpYnV0b01vZGVsKCk7XG4gICAgZGF0by5jYW1wb0F0cmlidXRvID0gZWxlbWVudC5kZXNjcmlwY2lvbjtcbiAgICB2YXIgZWRpdGFibGU6IHN0cmluZyA9IG51bGw7XG4gICAgaWYgKGVsZW1lbnQudGlwb0RhdG8gPT0gdGhpcy5mdWVudGVQaXBlLkxMQVZFKSB7XG4gICAgICBlbGVtZW50LnRpcG9EYXRvID0gdGhpcy5mdWVudGVQaXBlLlRFWFRPO1xuICAgICAgZGF0by5jYWRlbmEgPSB0aGlzLnV0aWxzU2VydmljZS5nZW5lcmFyTGxhdmUoKTtcbiAgICAgIGVkaXRhYmxlID0gXCJOXCI7XG4gICAgfVxuICAgIGRhdG8udGlwb0RhdG8gPSBlbGVtZW50LnRpcG9EYXRvO1xuICAgIHZhciBjYW1wbyA9IG5ldyBDYW1wb0Zvcm11bGFyaW9Nb2RlbChlbGVtZW50LnRpcG9EYXRvLCBlbGVtZW50LmRlc2NyaXBjaW9uLFxuICAgICAgICB0aGlzLmRldGVybWluYXJMb25naXR1ZChlbGVtZW50LnRpcG9EYXRvKSwgMCwgZWxlbWVudC5kZXNjcmlwY2lvbixcbiAgICAgICAgZWxlbWVudC5vYmxpZ2F0b3JpbyA9PSAnUycsIG51bGwsIG51bGwsIGVkaXRhYmxlKTtcbiAgICBjYW1wby5kYXRvID0gZGF0bztcbiAgICBpZiAoZGF0by50aXBvRGF0byA9PSB0aGlzLmZ1ZW50ZVBpcGUuVEVYVE8gfHwgZGF0by50aXBvRGF0byA9PSB0aGlzLmZ1ZW50ZVBpcGUuTE9HSUNPKSB7XG4gICAgICBjYW1wby52YWxvciA9IGRhdG8uY2FkZW5hO1xuICAgIH0gZWxzZSBpZiAoZGF0by50aXBvRGF0byA9PSB0aGlzLmZ1ZW50ZVBpcGUuTlVNRVJPKSB7XG4gICAgICBjYW1wby52YWxvciA9IGRhdG8ubnVtZXJvO1xuICAgIH0gZWxzZSBpZiAoZGF0by50aXBvRGF0byA9PSB0aGlzLmZ1ZW50ZVBpcGUuREVDSU1BTCkge1xuICAgICAgY2FtcG8udmFsb3IgPSBkYXRvLm51bWVybztcbiAgICAgIGNhbXBvLmRlY2ltYWxlcyA9IDI7XG4gICAgfSBlbHNlIGlmIChkYXRvLnRpcG9EYXRvID09IHRoaXMuZnVlbnRlUGlwZS5GRUNIQSkge1xuICAgICAgaWYgKGVsZW1lbnQudmFsb3JEZWZlY3RvICE9IG51bGwpIHtcbiAgICAgICAgZGF0by5mb3JtYXRvID0gXCJ5eXl5L01NL2RkXCI7XG4gICAgICAgIGNhbXBvLnZhbG9yID0gbmV3IERhdGUodGhpcy5vYnRlbmVyVmFsb3JNYXJjYWRvcihlbGVtZW50LnZhbG9yRGVmZWN0bykpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2FtcG8udmFsb3IgPSBkYXRvLmZlY2hhO1xuICAgICAgfVxuICAgIH1cbiAgICBjYW1wby5jYXJhY3RlcmlzdGljYSA9IHRydWU7XG4gICAgcmV0b3Juby5wdXNoKGNhbXBvKTtcbiAgfVxuICByZXR1cm4gcmV0b3Jubztcbn1cblxub2J0ZW5lclZhbG9yTWFyY2Fkb3IodmFsb3JFbnRyYWRhOiBzdHJpbmcpIHtcbiAgaWYgKHZhbG9yRW50cmFkYSA9PSBudWxsIHx8IHZhbG9yRW50cmFkYS50cmltKCkubGVuZ3RoIDw9IDAgfHwgdmFsb3JFbnRyYWRhLnRyaW0oKSA9PSBcIm51bGxcIikge1xuICAgIHJldHVybiB2YWxvckVudHJhZGE7XG4gIH1cbiAgaWYgKHZhbG9yRW50cmFkYS50b1VwcGVyQ2FzZSgpLmluY2x1ZGVzKFwiQU5OT0hPWVwiKSB8fCB2YWxvckVudHJhZGEudG9VcHBlckNhc2UoKS5pbmNsdWRlcyhcIk1FU0hPWVwiKSkge1xuICAgIHZhciBmb3JtdWxhQ2FtcG8gPSB2YWxvckVudHJhZGEudG9VcHBlckNhc2UoKTtcbiAgICB2YXIgaG95ID0gbmV3IERhdGUoKTtcbiAgICBmb3JtdWxhQ2FtcG8gPSBmb3JtdWxhQ2FtcG8ucmVwbGFjZShcIkFOTk9IT1lcIiwgaG95LmdldEZ1bGxZZWFyKCkudG9TdHJpbmcoKSk7XG4gICAgZm9ybXVsYUNhbXBvID0gZm9ybXVsYUNhbXBvLnJlcGxhY2UoXCJNRVNIT1lcIiwgKGhveS5nZXRNb250aCgpICsgMSkudG9TdHJpbmcoKSk7XG4gICAgcmV0dXJuIGZvcm11bGFDYW1wbztcbiAgfVxuICByZXR1cm4gdmFsb3JFbnRyYWRhO1xufVxuXG5kZXRlcm1pbmFyTG9uZ2l0dWQodGlwb0RhdG86IHN0cmluZykge1xuICBpZiAodGlwb0RhdG8gPT0gbnVsbCkge1xuICAgIHJldHVybiAwO1xuICB9XG4gIGlmICh0aGlzLmZ1ZW50ZVBpcGUuVEVYVE8gPT0gdGlwb0RhdG8pIHtcbiAgICByZXR1cm4gMTAwO1xuICB9XG4gIGlmICh0aGlzLmZ1ZW50ZVBpcGUuTE9HSUNPID09IHRpcG9EYXRvKSB7XG4gICAgcmV0dXJuIDU7XG4gIH1cbiAgcmV0dXJuIDIwO1xufVxuXG4gIGFzeW5jIGNhcmdhclBhcmFtZXRyb3NQdW50b1Byb2Nlc28oKXtcbiAgICB0aGlzLnBhcmFtZXRyb3NQdW50byA9IFtdO1xuXHRcdGlmICh0aGlzLnB1bnRvUHJvY2VzbyA9PSBudWxsIHx8IHRoaXMucHVudG9Qcm9jZXNvLnRyaW0oKS5sZW5ndGggPD0gMCkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHQvLyBjb25zdWx0YSBsb3MgY2FtcG9zIGRlbCBjcnVjZSBlbnRyZSBlbCBwdW50byBwcm9jZXNvIHkgbGEgZnVlbnRlXG4gICAgdmFyIGNvbnN1bHRhcjogUmVjdXJzb1B1bnRvTW9kZWwgPSBuZXcgUmVjdXJzb1B1bnRvTW9kZWwoKTtcblx0XHRjb25zdWx0YXIucHVudG9Qcm9jZXNvID0gdGhpcy5wdW50b1Byb2Nlc287XG5cdFx0Y29uc3VsdGFyLmZ1ZW50ZSA9IHRoaXMuZnVlbnRlRFRPLmxsYXZlVGFibGE7XG5cdFx0Y29uc3VsdGFyID0gYXdhaXQgdGhpcy5nZW5lcmFsU2VydmljZS5xdWVyeUZvck9iamVjdChuZXcgR2VuZXJhbE1vZGVsKCdSZWN1cnNvUHVudG9EVE8nLCBudWxsLCBmYWxzZSwgY29uc3VsdGFyKSkudG9Qcm9taXNlKCk7XG5cdFx0aWYoY29uc3VsdGFyPT1udWxsKXtcblx0XHRcdHRoaXMubm90aWZpY2FjaW9uZXNTZXJ2aWNlLnNob3dFcnJvcihcIk5vIGV4aXN0ZSBlbCByZWN1cnNvIHB1bnRvIHBhcmEgZXNlIHB1bnRvIGRlbCBwcm9jZXNvIHkgZnVlbnRlXCIpO1xuICAgICAgcmV0dXJuO1xuXHRcdH1cbiAgICB2YXIgY3J1Y2VzOiBDcnVjZVJlY3Vyc29QdW50b01vZGVsW10gPSBhd2FpdCB0aGlzLmdlbmVyYWxTZXJ2aWNlLnF1ZXJ5Rm9yTGlzdChuZXcgR2VuZXJhbE1vZGVsKCdDcnVjZVJlY3Vyc29QdW50b0RUTycsICdDcnVjZVJlY3Vyc29QdW50by5jb25zdWx0YXJDcnVjZVBvclJlY3Vyc28nLCBmYWxzZSwge1xuICAgICAgcmVjdXJzb1B1bnRvOiBjb25zdWx0YXIubGxhdmVUYWJsYVxuICAgIH0pKS50b1Byb21pc2UoKVxuXHRcdGNydWNlcy5mb3JFYWNoKGFzeW5jIGNydWNlID0+IHtcblx0XHRcdFx0Ly8gYnVzY2Ftb3MgcXVlIGV4aXN0YSB0b2RhdmlhIGVsIGNhbXBvIGNvbW8gZW50cmFkYSBkZSBsYVxuXHRcdFx0XHQvLyBmdWVudGVcblx0XHRcdFx0dmFyIGJ1c2NhckVudHJhZGE6IEZ1ZW50ZUVudHJhZGFNb2RlbCA9IG5ldyBGdWVudGVFbnRyYWRhTW9kZWwoKTtcblx0XHRcdFx0YnVzY2FyRW50cmFkYS5sbGF2ZVRhYmxhID0gY3J1Y2UuZnVlbnRlRW50cmFkYTtcblx0XHRcdFx0YnVzY2FyRW50cmFkYSA9IGF3YWl0IHRoaXMuZ2VuZXJhbFNlcnZpY2UucXVlcnlGb3JPYmplY3QobmV3IEdlbmVyYWxNb2RlbCgnRnVlbnRlRW50cmFkYURUTycsIG51bGwsIGZhbHNlLCBidXNjYXJFbnRyYWRhKSkudG9Qcm9taXNlKCk7XG5cdFx0XHRcdGlmIChidXNjYXJFbnRyYWRhID09IG51bGwpIHtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly8gb2J0ZW5lbW9zIGVsIHZhbG9yIHkgbG8gY29udmVydGltb3MgYWwgYSB1biBhdHJpYnV0byBkZSBsYVxuXHRcdFx0XHQvLyBmdWVudGUgcGFyYSBxdWUgc2UgdXNlIGVuIGxvcyBzZXJ2aWNpb3Ncblx0XHRcdFx0dmFyIGRhdG8gPSBuZXcgRnVlbnRlQ2FtcG9BdHJpYnV0b01vZGVsKCk7XG5cdFx0XHRcdGRhdG8uY2FtcG9BdHJpYnV0byA9IGJ1c2NhckVudHJhZGEuZGVzY3JpcGNpb247XG5cdFx0XHRcdGRhdG8uZnVlbnRlRW50cmFkYSA9IGJ1c2NhckVudHJhZGEubGxhdmVUYWJsYTtcblx0XHRcdFx0ZGF0by50aXBvRGF0byA9IGJ1c2NhckVudHJhZGEudGlwb0RhdG87XG4gICAgICAgIHRoaXMucGFyYW1ldHJvc1B1bnRvLnB1c2goZGF0byk7XG5cdFx0XHRcdC8vRklYTUU6IFBlbmRpZW50ZSBvYnRlbmVyIHZhbG9yIGRlIHB1bnRvXG4gICAgICAgIC8qT2JqZWN0IHZhbG9yID0gZmMuZ2V0QXBwbGljYXRpb24oKS5jcmVhdGVWYWx1ZUJpbmRpbmcoXCIje1wiICsgY3J1Y2UuZ2V0QXRyaWJ1dG9QdW50b1ZhbG9yKCkgKyBcIn1cIilcblx0XHRcdFx0XHRcdC5nZXRWYWx1ZShmYyk7XG5cdFx0XHRcdGlmICh2YWxvciA9PSBudWxsKSB7XG5cdFx0XHRcdFx0cGFyYW1ldHJvc1B1bnRvLmFkZChkYXRvKTtcblx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoZGF0by50aXBvRGF0byA9PSB0aGlzLmZ1ZW50ZVBpcGUuVEVYVE8gfHwgZGF0by50aXBvRGF0byA9PSB0aGlzLmZ1ZW50ZVBpcGUuTE9HSUNPKSB7XG5cdFx0XHRcdFx0ZGF0by5jYWRlbmEgPSB2YWxvci50b1N0cmluZygpO1xuXHRcdFx0XHR9IGVsc2UgaWYgKGRhdG8udGlwb0RhdCA9PSB0aGlzLmZ1ZW50ZVBpcGUuREVDSU1BTCkge1xuXHRcdFx0XHRcdGRhdG8uY2FkZW5hID0gcGFyc2VJbnQodmFsb3IpO1xuXHRcdFx0XHRcdGRhdG8uc2V0TnVtZXJvKChCaWdEZWNpbWFsKSB2YWxvcik7XG5cdFx0XHRcdH0gZWxzZSBpZiAoZGF0by50aXBvRGF0ID09IHRoaXMuZnVlbnRlUGlwZS5OVU1FUk8pIHtcblx0XHRcdFx0XHRkYXRvLnNldENhZGVuYSgoKEludGVnZXIpIHZhbG9yKS50b1N0cmluZygpKTtcblx0XHRcdFx0XHRkYXRvLnNldE51bWVybyhuZXcgQmlnRGVjaW1hbCgoSW50ZWdlcikgdmFsb3IpKTtcblx0XHRcdFx0fSBlbHNlIGlmIChkYXRvLnRpcG9EYXQgPT0gdGhpcy5mdWVudGVQaXBlLkZFQ0hBKSB7XG5cdFx0XHRcdFx0ZGF0by5zZXRDYWRlbmEoKChEYXRlKSB2YWxvcikudG9TdHJpbmcoKSk7XG5cdFx0XHRcdFx0ZGF0by5zZXRGZWNoYSgoRGF0ZSkgdmFsb3IpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHBhcmFtZXRyb3NQdW50by5hZGQoZGF0byk7Ki9cblx0XHRcdH0pXG5cdFx0XG4gIH1cblxuICBjYXJnYXJBcmNoaXZvKGRhdGE6IEZpbGVTZWxlY3RFdmVudCwgZnViYXV0bykge1xuICAgIHRoaXMuYXJjaGl2b1NlbGVjY2lvbmFkbyA9IGRhdGEuZmlsZXNbMF07XG4gICAgdGhpcy5yZWFkRmlsZSh0aGlzLmFyY2hpdm9TZWxlY2Npb25hZG8pO1xuICAgIHRoaXMubm90aWZpY2FjaW9uZXNTZXJ2aWNlLnNob3dTdWNjZXNzKCdTZSBjYXJnw7MgZWwgZG9jdW1lbnRvIGNvbiDDqXhpdG8nKTtcbiAgICBmdWJhdXRvLmNsZWFyKCk7XG4gIH1cblxuICBwcml2YXRlIHJlYWRGaWxlKGZpbGU6IEZpbGUpIHtcbiAgICBjb25zdCByZWFkZXI6IEZpbGVSZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgIHJlYWRlci5yZWFkQXNUZXh0KGZpbGUpO1xuICAgIHRoaXMubm9tYnJlQXJjaGl2byA9IGZpbGUubmFtZTtcbiAgfVxuXG4gIGltcG9ydGFyKCl7XG4gICAgXG4gICAgaWYgKHRoaXMuZm9ybXVsYXJpbyl7XG4gICAgICBpZiAoIXRoaXMuZm9ybXVsYXJpbz8udmFsaWRhcigpKXtcbiAgICAgICAgdGhpcy5ub3RpZmljYWNpb25lc1NlcnZpY2Uuc2hvd0Vycm9yKCdGYWx0YW4gY2FtcG9zIG9ibGlnYXRvcmlvcycpXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy52ZXJJbmNvbnNpc3RlbmNpYSA9IGZhbHNlO1xuICAgIHRoaXMuYWNjaW9uID0gIHRoaXMuQUNDSU9OLklNUE9SVEFSO1xuICAgIHRoaXMuZXN0YWRvUmVncmVzYXIgPSAndm9sdmVySW1wb3J0YXInXG4gICAgdGhpcy5ydW4oKTtcbiAgfVxuICBcbiAgZWplY3V0YXIoKXtcbiAgICB0aGlzLnZlckJvdG9uRWplY3V0YXIgPSBmYWxzZTtcbiAgICB0aGlzLmFjY2lvbiA9ICB0aGlzLkFDQ0lPTi5FSkVDVVRBUjtcbiAgICB0aGlzLnJ1bigpO1xuICB9XG5cbiAgcmVncmVzYXJEYXRvcygpIHtcbiAgICBpZiAodGhpcy5wYW5lbEltcG9ydGFyID09IHRoaXMuUEFORUwuR1JVUE9TKSB7XG4gICAgICB0aGlzLnJlZ3Jlc2FyRnVlbnRlLmVtaXQoZmFsc2UpO1xuICAgICAgdGhpcy5ub21icmVBcmNoaXZvID0gbnVsbDtcbiAgICB9IGVsc2UgaWYgKHRoaXMucGFuZWxJbXBvcnRhciA9PSB0aGlzLlBBTkVMLkRFVEFMTEVHUlVQTykge1xuICAgICAgdGhpcy5wYW5lbEltcG9ydGFyID0gdGhpcy5QQU5FTC5HUlVQT1M7XG4gICAgfVxuICAgIHRoaXMuZXN0YWRvUmVncmVzYXIgPSAndm9sdmVySW1wb3J0YXInXG4gIH1cblxuICBydW4oKXtcbiAgICB2YXIgcmV0b3JubztcbiAgICB0aGlzLmNhcmd1ZUxpbmVhU2VydmljZS5lamVjdXRhcih0aGlzLmFjY2lvbiwgdGhpcy5hcmNoaXZvU2VsZWNjaW9uYWRvLCB0aGlzLmZ1ZW50ZURUTywgdGhpcy5wcm9jZXNvRFRPLCB0aGlzLmVudHJhZGFzLCB0aGlzLmNhbXBvcywgdGhpcy5kYXRvcywgdGhpcy5saW5lYXNDYXJnYWRhcykuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgaWYgKGRhdGEudHlwZSA9PT0gSHR0cEV2ZW50VHlwZS5SZXNwb25zZSkge1xuICAgICAgICBsZXQgcmVzcG9uc2U6IGFueSA9IGRhdGEuYm9keVxuICAgICAgICB0aGlzLmRhdG9zID0gcmVzcG9uc2U/LmRhdG9zID8gcmVzcG9uc2U/LmRhdG9zIDogdGhpcy5kYXRvcztcbiAgICAgICAgdGhpcy5wcm9jZXNhckRhdG9zID0gcmVzcG9uc2U/LnByb2Nlc2FyRGF0b3MgPyByZXNwb25zZT8ucHJvY2VzYXJEYXRvcyA6IHRoaXMucHJvY2VzYXJEYXRvcztcbiAgICAgICAgdGhpcy5saW5lYXNDYXJnYWRhcyA9IHJlc3BvbnNlPy5saW5lYXNDYXJnYWRhcyA/IHJlc3BvbnNlPy5saW5lYXNDYXJnYWRhcyA6IHRoaXMubGluZWFzQ2FyZ2FkYXM7XG4gICAgICAgIC8vdGhpcy5wYW5lbCA9IHJlc3BvbnNlPy5wYW5lbCA/IHJlc3BvbnNlPy5wYW5lbCA6IHRoaXMucGFuZWw7XG4gICAgICAgIC8vdGhpcy5wYW5lbEltcG9ydGFyID0gcmVzcG9uc2U/LnBhbmVsSW1wb3J0YXIgPyByZXNwb25zZT8ucGFuZWxJbXBvcnRhciA6IHRoaXMucGFuZWxJbXBvcnRhcjtcbiAgICAgICAgdGhpcy52ZXJCb3RvbkVqZWN1dGFyID0gcmVzcG9uc2U/LnZlckJvdG9uRWplY3V0YXIgPyByZXNwb25zZT8udmVyQm90b25FamVjdXRhciA6IHRoaXMudmVyQm90b25FamVjdXRhcjtcbiAgICAgICAgdGhpcy5wcm9jZXNvRFRPID0gcmVzcG9uc2U/LnByb2Nlc29EVE8gPyByZXNwb25zZT8ucHJvY2Vzb0RUTyA6IHRoaXMucHJvY2Vzb0RUTztcbiAgICAgICAgcmV0b3JubyA9IHJlc3BvbnNlPy5yZXRvcm5vO1xuICAgICAgICAvL3B0ZSBwYXNhciBhbCBiYWNrXG4gICAgICAgIHRoaXMuZ3J1cG8gPSBudWxsOyBcblx0XHQgIFx0dGhpcy5wYW5lbCA9IHJlc3BvbnNlPy5wYW5lbCA/IHJlc3BvbnNlPy5wYW5lbCA6IHRoaXMucGFuZWw7Ly9QQU5FTC5EQVRPUy5nZXRQYW5lbCgpO1xuICAgICAgICB0aGlzLnBhbmVsSW1wb3J0YXIgPSByZXNwb25zZT8ucGFuZWxJbXBvcnRhciA/IHJlc3BvbnNlPy5wYW5lbEltcG9ydGFyIDogIHRoaXMucGFuZWxJbXBvcnRhcjsvL1BBTkVMLkdSVVBPUy5nZXRQYW5lbCgpO1xuICAgICAgICB0aGlzLm5vdGlmaWNhY2lvbmVzU2VydmljZS5zaG93U3VjY2VzcyhyZXNwb25zZS5tZW5zYWplKVxuICAgICAgICBpZiAodGhpcy5pc01vdG9yKCkpe1xuICAgICAgICAgIHRoaXMuc2V0UmVzdWx0YWRvQ2FyZ3VlKClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICBzZXRSZXN1bHRhZG9DYXJndWUoKSB7XG5cdFx0dGhpcy5saW5lYXNJbmNvbnNpc3RlbmNpYSA9IFtdO1xuXHRcdHRoaXMubGluZWFzU2luTWVuc2FqZSA9IDA7XG5cdFx0dGhpcy5saW5lYXNDb25NZW5zYWplID0gMDtcblx0XHRpZiAoIHRoaXMuQUNDSU9OLkVKRUNVVEFSID09IHRoaXMuYWNjaW9uICkge1xuXHRcdFx0dGhpcy5saW5lYXNDYXJnYWRhcy5mb3JFYWNoKHVuYUxpbmVhID0+IHtcblx0XHRcdFx0aWYgKCB1bmFMaW5lYS5tZW5zYWplICE9IG51bGwpIHtcblx0XHRcdFx0XHR0aGlzLmxpbmVhc0luY29uc2lzdGVuY2lhLnB1c2godW5hTGluZWEpO1xuXHRcdFx0XHRcdHRoaXMubGluZWFzQ29uTWVuc2FqZSArKztcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHR0aGlzLmxpbmVhc1Npbk1lbnNhamUgKys7XG5cdFx0XHRcdH1cblx0XHRcdH0pXG5cdFx0XHR0aGlzLnZlckluY29uc2lzdGVuY2lhID0gdHJ1ZTtcblx0XHRcdGlmICggdGhpcy5saW5lYXNDb25NZW5zYWplID09IDApIHtcblx0XHRcdFx0dGhpcy52ZXJJbmNvbnNpc3RlbmNpYSA9IGZhbHNlO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cbiAgaW1wb3J0YXJOdWV2YW1lbnRlKCl7XG4gICAgdGhpcy52ZXJCb3RvbkVqZWN1dGFyID0gdHJ1ZTtcbiAgICB0aGlzLm5vbWJyZUFyY2hpdm8gPSBudWxsO1xuICAgIHRoaXMuYXJjaGl2b1NlbGVjY2lvbmFkbyA9IG51bGw7XG4gICAgdGhpcy5lc3RhZG9SZWdyZXNhciA9IG51bGw7XG4gICAgdGhpcy5wcmVwYXJhckNhbXBvc1BhcmFJbXBvcnRhcigpLnRoZW4oZGF0YSA9PiB7fSlcbiAgfVxuXG4gIHZlckdydXBvKGV2ZW50KXtcbiAgICB0aGlzLmVzdGFkb1JlZ3Jlc2FyID0gJ3JlZ3Jlc2FySW1wb3J0YXInXG4gICAgdGhpcy5ncnVwbyA9IGV2ZW50LmRhdGFcbiAgICB0aGlzLmRhdG9zLmZvckVhY2goZ3J1cG9GdWVudGUgPT57XG4gICAgICBpZiAoZ3J1cG9GdWVudGUubGxhdmVMaW5lYUdydXBvID09IHRoaXMuZ3J1cG8ubGxhdmVMaW5lYUdydXBvKSB7XG4gICAgICAgIHRoaXMucGFnaW5hZG9yTGluZWFzID0gZ3J1cG9GdWVudGUubGluZWFzO1xuICAgICAgfVxuICAgIH0pXG4gICAgdGhpcy5wYWdpbmFkb3JTZXJ2aWNpb3MgPSB0aGlzLmdydXBvLnNlcnZpY2lvc1xuICAgIC8vdGhpcy5wYWdpbmFkb3JDYW1wb3MgPSBcbiAgICAvL3RoaXMucGFnaW5hZG9yUGFyYW1ldHJvcyA9IFtdXG4gICAgaWYgKCh0aGlzLnBhZ2luYWRvclNlcnZpY2lvcyA9PSBudWxsIHx8IHRoaXMucGFnaW5hZG9yU2VydmljaW9zPy5sZW5ndGggPD0gMClcbiAgICAgICYmICh0aGlzLnBhZ2luYWRvckxpbmVhcyA9PSBudWxsIHx8IHRoaXMucGFnaW5hZG9yTGluZWFzPy5sZW5ndGggPD0gMCkpe1xuICAgICAgICB0aGlzLm5vdGlmaWNhY2lvbmVzU2VydmljZS5zaG93U3VjY2VzcygnRWwgZ3J1cG8gbm8gcG9zZWUgbmlndW5hIGxpbmVhIG5pIHNlcnZpY2lvJylcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnBhZ2luYWRvclBhcmFtZXRyb3MgPSBbXVxuICAgIHRoaXMucGFnaW5hZG9yU2VydmljaW9zLmZvckVhY2goZGF0YSA9PntcbiAgICAgIHRoaXMudmVyU2VydmljaW8oZGF0YSlcbiAgICB9KVxuICAgIHRoaXMucGFnaW5hZG9yQ2FtcG9zID0gW11cbiAgICB0aGlzLnBhZ2luYWRvckxpbmVhcy5mb3JFYWNoKGRhdGEgPT4ge1xuICAgICAgdGhpcy52ZXJMaW5lYShkYXRhKVxuICAgIH0pXG4gICAgdGhpcy5wYW5lbEltcG9ydGFyID0gdGhpcy5QQU5FTC5ERVRBTExFR1JVUE9cbiAgfVxuXG4gIHZlckxpbmVhKGV2ZW50KXtcbiAgICBldmVudC5jYW1wb3NBdHJpYnV0b3MuZm9yRWFjaChkYXRhID0+IHtcbiAgICAgIGRhdGFbJ251bWVyb0xpbmVhJ10gPSBldmVudC5udW1lcm9MaW5lYVxuICAgIH0pXG4gICAgaWYgKGV2ZW50LmNhbXBvc0F0cmlidXRvcyA9PSBudWxsIHx8IGV2ZW50LmNhbXBvc0F0cmlidXRvcy5sZW5ndGggPD0gMCkge1xuICAgICAgdGhpcy5ub3RpZmljYWNpb25lc1NlcnZpY2Uuc2hvd1N1Y2Nlc3MoXCJObyBzZSBpZGVudGlmaWNvIG5pbmfDum4gY2FtcG9cIik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucGFnaW5hZG9yQ2FtcG9zID0gdGhpcy5wYWdpbmFkb3JDYW1wb3MuY29uY2F0KGV2ZW50LmNhbXBvc0F0cmlidXRvcylcbiAgICB9XG4gICAgXG4gIH1cblxuICB2ZXJTZXJ2aWNpbyhldmVudCl7XG4gICAgZXZlbnQuY2FtcG9zQXRyaWJ1dG9zLmZvckVhY2goZGF0YSA9PiB7XG4gICAgICBkYXRhWydsbGF2ZXVuaWNhJ10gPSBgJHt0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnc2VydmljaW8nKX06ICR7ZXZlbnQuc2VydmljaW99IFxuICAgICAgJHt0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnb3JkZW4nKX06ICR7ZXZlbnQub3JkZW59XG4gICAgICAke3RoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdsaW5lYScpfTogJHtldmVudC5udW1lcm9MaW5lYX0gYFxuICAgICAgaWYgKGV2ZW50Lm1lbnNhamUpIHtcbiAgICAgICAgZGF0YVsnbGxhdmV1bmljYSddID0gZGF0YVsnbGxhdmV1bmljYSddICsgYFxuICAgICAgICAke3RoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdhZHZlcnRlbmNpYScpfTogJHtldmVudC5tZW5zYWplfSBgXG4gICAgICB9XG4gICAgfSlcbiAgICBpZiAoZXZlbnQuY2FtcG9zQXRyaWJ1dG9zID09IG51bGwgfHwgZXZlbnQuY2FtcG9zQXRyaWJ1dG9zLmxlbmd0aCA8PSAwKSB7XG4gICAgICB0aGlzLm5vdGlmaWNhY2lvbmVzU2VydmljZS5zaG93U3VjY2VzcyhcIk5vIHNlIGlkZW50aWZpY28gbmluZ8O6biBwYXJhbWV0cm9cIik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucGFnaW5hZG9yUGFyYW1ldHJvcyA9IHRoaXMucGFnaW5hZG9yUGFyYW1ldHJvcy5jb25jYXQoZXZlbnQuY2FtcG9zQXRyaWJ1dG9zKVxuICAgIH1cbiAgfVxuXG4gIGNhbmNlbGFyUHJvY2Vzbygpe1xuICAgIGNvbnNvbGUubG9nKCdlbnRyYSBjYW5jZWxhUHJvY2VzbycpXG4gICAgdGhpcy5jb25maXJtYXRpb25TZXJ2aWNlLmNvbmZpcm0oe1xuICAgICAgdGFyZ2V0OiBldmVudC50YXJnZXQsXG4gICAgICBtZXNzYWdlOiAnwr9EZXNlYSBlbGltaW5hciBlbCByZWdpc3Rybz8nLFxuICAgICAgYWNjZXB0TGFiZWw6ICdTaScsXG4gICAgICBpY29uOiAnY29uZmlybWFyJyxcbiAgICAgIGFjY2VwdDogKCkgPT4ge1xuICAgICAgICB0aGlzLmNhcmd1ZUxpbmVhU2VydmljZS5jYW5jZWxhclByb2Nlc28oe3Byb2Nlc29EVE86IHRoaXMucHJvY2Vzb0RUT30pLnN1YnNjcmliZShkYXRhID0+IHtcbiAgICAgICAgICBpZiAoZGF0YS5tZW5zYWplIDw9IDApIHtcbiAgICAgICAgICAgIHRoaXMubm90aWZpY2FjaW9uZXNTZXJ2aWNlLnNob3dTdWNjZXNzKHRoaXMuZ2VuZXJhbFBpcGUuTUVOU0FKRV9FTElNSU5BUl9OTyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMucHJvY2Vzb0RUTyA9IG5ldyBGdWVudGVQcm9jZXNvR2VuZXJhbE1vZGVsKCk7XG4gICAgICAgICAgICBcbiAgICAgICAgICB0aGlzLm5vdGlmaWNhY2lvbmVzU2VydmljZS5zaG93U3VjY2Vzcyh0aGlzLmdlbmVyYWxQaXBlLk1FTlNBSkVfRUxJTUlOQVIpO1xuICAgICAgICAgIHRoaXMucnV0YUFyY2hpdm8gPSBudWxsO1xuICAgICAgICAgIHRoaXMubm9tYnJlQXJjaGl2byA9IG51bGw7XG4gICAgICAgICAgbG9jYXRpb24ucmVsb2FkKCkgICAgXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIGltcG9ydGFyRWplY3V0YXIoKXtcblxuICB9XG5cbiAgaXNNb3RvcigpIHtcblx0XHRyZXR1cm4gdGhpcy5mdWVudGVEVE8gIT0gbnVsbCAmJiAodGhpcy5mdWVudGVQaXBlLkJBU0VEQVRPUyA9PSB0aGlzLmZ1ZW50ZURUTy5tb3RvciB8fCB0aGlzLmZ1ZW50ZVBpcGUuQkFTRURBVE9TRUdVTkRPID09IHRoaXMuZnVlbnRlRFRPLm1vdG9yKTtcblx0fVxuXG4gIGlzU2VydmljaW9XZWIoKSB7XG5cdFx0cmV0dXJuIHRoaXMuZnVlbnRlRFRPICE9IG51bGwgJiYgdGhpcy5mdWVudGVEVE8ucHJvY2VzbyAhPSBudWxsICYmIHRoaXMuZnVlbnRlRFRPLmZvcm11bGFEZXNjcmlwY2lvbiAhPSBudWxsO1xuXHR9XG5cbiAgaXNJbXBvcnRhY2lvbigpIHtcblx0XHRyZXR1cm4gdGhpcy5BQ0NJT04uSU1QT1JUQVIgPT0gdGhpcy5hY2Npb247XG5cdH1cblxuXHRpc0VqZWN1Y2lvbigpIHtcblx0XHRyZXR1cm4gdGhpcy5BQ0NJT04uRUpFQ1VUQVIgPT0gdGhpcy5hY2Npb247XG5cdH1cblxuXHRpc0FncnVwYW1pZW50bygpIHtcblx0XHRyZXR1cm4gdGhpcy5mdWVudGVEVE8gIT0gbnVsbCAmJiB0aGlzLmZ1ZW50ZVBpcGUuQUdSVVBBTUlFTlRPID09IHRoaXMuZnVlbnRlRFRPLnRpcG87XG5cdH1cblxuXHRpc1JvbXBpbWllbnRvKCkge1xuXHRcdHJldHVybiB0aGlzLmZ1ZW50ZURUTyAhPSBudWxsICYmIHRoaXMuZnVlbnRlUGlwZS5ST01QSU1JRU5UTyA9PSB0aGlzLmZ1ZW50ZURUTy50aXBvO1xuXHR9XG5cblx0aXNVbmljb1JlZ2lzdHJvKCkge1xuXHRcdHJldHVybiB0aGlzLmZ1ZW50ZURUTyAhPSBudWxsICYmIHRoaXMuZnVlbnRlUGlwZS5VTklDT19SRUdJU1RSTyA9PSB0aGlzLmZ1ZW50ZURUTy50aXBvO1xuXHR9XG5cblx0aXNTaW5TZXBhcmFkb3IoKSB7XG5cdFx0cmV0dXJuIHRoaXMuZnVlbnRlRFRPICE9IG51bGwgJiYgdGhpcy5mdWVudGVQaXBlLlNJTl9TRVBBUkFET1IgPT0gdGhpcy5mdWVudGVEVE8uc2VwYXJhZG9yO1xuXHR9XG5cblx0aXNDb25TZXBhcmFkb3IoKSB7XG5cdFx0cmV0dXJuIHRoaXMuZnVlbnRlRFRPICE9IG51bGwgJiYgdGhpcy5mdWVudGVEVE8uc2VwYXJhZG9yICE9IG51bGwgJiYgdGhpcy5mdWVudGVEVE8uc2VwYXJhZG9yICE9IHRoaXMuZnVlbnRlUGlwZS5TSU5fU0VQQVJBRE9SO1xuXHR9XG5cbn1cbiIsIjxwLWNvbmZpcm1Qb3B1cD48L3AtY29uZmlybVBvcHVwPlxuPGRpdiAqbmdJZj1cIiFtb3N0cmFyXCI+XG4gICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIG1iLTNcIj5cbiAgICAgICAgPGFwcC1maWx0cm8tZ2VuZXJhbCBbZmlsdHJvc109XCJmaWx0ZXJzXCIgW2RhdGF0YWJsZV09XCJ0YWJsYUdlbmVyYWxcIj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtZm9ybT5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtmb3JtR3JvdXBdPVwiZm9ybVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtZmxvYXQtbGFiZWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBwSW5wdXRUZXh0IGF1dG9mb2N1cyB0eXBlPVwidGV4dFwiIGlkPVwiZGVzY3JpcGNpb25cIiBmb3JtQ29udHJvbE5hbWU9XCJkZXNjcmlwY2lvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJkZXNjcmlwY2lvblwiPnt7J2ZpbHRybycgfCB0cmFuc2xhdGV9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvYXBwLWZpbHRyby1nZW5lcmFsPlxuICAgIDwvZGl2PlxuICAgIDxhcHAtdGFibGEtZ2VuZXJhbCAjdGFibGFHZW5lcmFsIFtjb2x1bW5zXT1cImNvbHVtbnNcIiBbdmFsdWVdPVwicGFnaW5hZG9yRnVlbnRlXCIgW3Jvd3NdPVwicGFnaW5hdG9yLnJvd3NcIlxuICAgICAgICBbdG90YWxSZWNvcmRzXT1cInBhZ2luYXRvci50b3RhbFJlY29yZHNcIiAob25Mb2FkKT1cImNhcmdhcmxpc3RhZG8oJGV2ZW50KVwiIChvblJvd1NlbGVjdCk9XCJjYXJnYXIoJGV2ZW50KVwiXG4gICAgICAgIFtsb2FkaW5nXT1cImxvYWRpbmdQYWdpbmFkb3JGdWVudGVcIj48L2FwcC10YWJsYS1nZW5lcmFsPlxuPC9kaXY+XG48ZGl2ICpuZ0lmPVwibW9zdHJhclwiPlxuICAgIDxkaXYgY2xhc3M9XCJjYXJkIG10LTNcIiAqbmdJZj1cImZ1ZW50ZURUTyAhPSBudWxsXCI+XG4gICAgICAgIDxoNSBjbGFzcz1cIm10LTNcIj48aSBjbGFzcz1cImdseXBoaWNvbnMgZ2x5cGhpY29ucy1ib29rXCI+PC9pPnt7J2RldGFsbGUnIHwgdHJhbnNsYXRlfX08L2g1PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiSW5wdXRncm91cCBwLWZsdWlkIHAtZm9ybWdyaWQgZ3JpZFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkIGNvbC0zIG1kOmNvbC0zIGxnOmNvbC0zXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLWZsb2F0LWxhYmVsXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cInctZnVsbFwiIFsobmdNb2RlbCldPVwiZnVlbnRlRFRPLmRlc2NyaXBjaW9uXCIgW2Rpc2FibGVkXT1cInRydWVcIiBwSW5wdXRUZXh0IGF1dG9mb2N1cyB0eXBlPVwidGV4dFwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJmdWVudGVcIj57eydmdWVudGUnIHwgdHJhbnNsYXRlfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkIGNvbC0zIG1kOmNvbC0zIGxnOmNvbC0zXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLWZsb2F0LWxhYmVsXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cInctZnVsbFwiIHZhbHVlPVwie3tmdWVudGVEVE8udGlwbyB8IGZ1ZW50ZVBpcGU6J2xpc3RhVGlwb0Z1ZW50ZSd9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwidHJ1ZVwiIHBJbnB1dFRleHQgYXV0b2ZvY3VzIHR5cGU9XCJ0ZXh0XCIgLz5cbiAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwidGlwb1wiPnt7J3RpcG8nIHwgdHJhbnNsYXRlfX08L2xhYmVsPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQgY29sLTMgbWQ6Y29sLTMgbGc6Y29sLTNcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtZmxvYXQtbGFiZWxcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwidy1mdWxsXCIgdmFsdWU9XCJ7e2Z1ZW50ZURUTy5zZXBhcmFkb3IgfCBmdWVudGVQaXBlOidsaXN0YVNlcGFyYWRvcid9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwidHJ1ZVwiIHBJbnB1dFRleHQgYXV0b2ZvY3VzIHR5cGU9XCJ0ZXh0XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInNlcGFyYWRvclwiPnt7J3NlcGFyYWRvcicgfCB0cmFuc2xhdGV9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQgY29sLTMgbWQ6Y29sLTMgbGc6Y29sLTNcIiAqbmdJZj1cInByb2Nlc29EVE8gIT0gbnVsbFwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1mbG9hdC1sYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJ3LWZ1bGxcIiB2YWx1ZT1cInt7cHJvY2Vzb0RUTy5mZWNoYVByb2Nlc28gfCBkYXRlOiAoJ2Zvcm1hdG9mZWNoYScgfCB0cmFuc2xhdGUpIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJ0cnVlXCIgcElucHV0VGV4dCBhdXRvZm9jdXMgdHlwZT1cInRleHRcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiZmVjaGFwcm9jZXNvXCI+e3snZmVjaGFwcm9jZXNvJyB8IHRyYW5zbGF0ZX19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZCBjb2wtMyBtZDpjb2wtMyBsZzpjb2wtM1wiICpuZ0lmPVwibm9tYnJlQXJjaGl2byAhPSBudWxsICYmIHRoaXMucGFuZWwgPT0gJ0RBVE9TJyBcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtZmxvYXQtbGFiZWxcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwidy1mdWxsXCIgWyhuZ01vZGVsKV09XCJub21icmVBcmNoaXZvXCIgW2Rpc2FibGVkXT1cInRydWVcIiBwSW5wdXRUZXh0IGF1dG9mb2N1c1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwibm9tYnJlYXJjaGl2b1wiPnt7J25vbWJyZWFyY2hpdm8nIHwgdHJhbnNsYXRlfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuPGRpdiAqbmdJZj1cInBhbmVsID09J0lNUE9SVEFSJ1wiPlxuICAgIDxwLXRhYlZpZXc+XG4gICAgICAgIDxwLXRhYlBhbmVsIGhlYWRlcj1cInt7J2VudHJhZGEnIHwgdHJhbnNsYXRlfX1cIiAqbmdJZj1cImZ1ZW50ZURUTyAhPSBudWxsXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQgY29sLTEyIG1kOmNvbC0xMiBsZzpjb2wtMTJcIiAqbmdJZj1cImZ1ZW50ZURUTz8ubW90b3IgPT0gJ1gnXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgbXQtMiBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW5lZG9yIHAtZmx1aWQgZ3JpZCBtdC0xIG1iLTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZCBjb2wtMyBtZDpjb2wtMyBsZzpjb2wtM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1mbG9hdC1sYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJ3LWZ1bGxcIiBbKG5nTW9kZWwpXT1cImZ1ZW50ZURUTy5lc3RhZG9cIiBbZGlzYWJsZWRdPVwidHJ1ZVwiIHBJbnB1dFRleHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9mb2N1cyB0eXBlPVwidGV4dFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJlc3RhZG9cIj57eydlc3RhZG8nIHwgdHJhbnNsYXRlfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkIGNvbC0zIG1kOmNvbC0zIGxnOmNvbC0zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLWZsb2F0LWxhYmVsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cInctZnVsbFwiIFsobmdNb2RlbCldPVwiZnVlbnRlRFRPLnNvbGljaXRhRGV0YWxsZVwiIFtkaXNhYmxlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBJbnB1dFRleHQgYXV0b2ZvY3VzIHR5cGU9XCJ0ZXh0XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImRldGFsbGVcIj57eydkZXRhbGxlJyB8IHRyYW5zbGF0ZX19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgbXQtMiBtYi0yIGZpZWxkIGNvbC0xMiBtZDpjb2wtMTIgbGc6Y29sLTEyXCIgKm5nSWY9XCIhaXNTZXJ2aWNpb1dlYigpXCI+XG5cbiAgICAgICAgICAgICAgICA8cC10YWJsZSBbdmFsdWVdPVwiY2FtcG9zQXJjaGl2b1wiPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiYm9keVwiIGxldC1jYW1wbz5cbiAgICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9XCJ3aWR0aDogMjAlO1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+e3tjYW1wby5kZXNjcmlwY2lvbn19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9XCJ3aWR0aDogODAlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWZsdWlkIHAtZm9ybWdyaWQgZ3JpZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgbWQ6Y29sLTEyXCIgaWQ9XCJidG4tY2FyZ2FyLXBvcHVwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWlucHV0Z3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBwSW5wdXRUZXh0IFtyZWFkb25seV09XCJ0cnVlXCIgW3ZhbHVlXT1cImFyY2hpdm9TZWxlY2Npb25hZG8/Lm5hbWUgPyBhcmNoaXZvU2VsZWNjaW9uYWRvPy5uYW1lIDogJydcIiBkaXNhYmxlZCAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLWZpbGVVcGxvYWQgI2Z1YmF1dG8gbW9kZT1cImJhc2ljXCIgW2N1c3RvbVVwbG9hZF09XCJ0cnVlXCIgY2hvb3NlSWNvbj1cInBpIHBpLXBhcGVyY2xpcFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvblNlbGVjdCk9XCJjYXJnYXJBcmNoaXZvKCRldmVudCwgZnViYXV0bylcIiA+PC9wLWZpbGVVcGxvYWQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDwvcC10YWJsZT5cblxuICAgICAgICAgICAgICAgIDxmb3JtdWxhcmlvLWRpbmFtaWNvICNmb3JtdWxhcmlvIFtlZGl0YWJsZV09XCJ0cnVlXCIgW2NhbXBvc109XCJjYW1wb3NcIiBcbiAgICAgICAgICAgICAgICAgICAgW29iamV0b109XCJmdWVudGVEVE9cIiAqbmdJZj1cInZlckZvcm11bGFyaW8gJiYgY2FtcG9zLmxlbmd0aCA+IDBcIj48L2Zvcm11bGFyaW8tZGluYW1pY28+XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHBCdXR0b24gcFJpcHBsZSBjbGFzcz1cIm0tMiBwLWJ1dHRvbi1vdXRsaW5lZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImZ1ZW50ZURUTy5tb3RvciAhPSAnWCcgJiYgKGlzU2VydmljaW9XZWIoKSB8fCBub21icmVBcmNoaXZvICE9IG51bGwpXCIgaWNvbj1cInBpIHBpLXVwbG9hZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD1cInt7J2xpbmtfaW1wb3J0YXInIHwgdHJhbnNsYXRlfX1cIiAoY2xpY2spPVwiaW1wb3J0YXIoKVwiPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBwQnV0dG9uIHBSaXBwbGUgY2xhc3M9XCJtLTIgcC1idXR0b24gcC1idXR0b24tcmFpc2VkXCIgKm5nSWY9XCJmdWVudGVEVE8ubW90b3IgPT0nWCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9XCJ7eydsaW5rX2ltcG9ydGFyZWplY3V0YXInIHwgdHJhbnNsYXRlfX1cIiAoY2xpY2spPVwiaW1wb3J0YXJFamVjdXRhcigpXCI+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvcC10YWJQYW5lbD5cbiAgICAgICAgPHAtdGFiUGFuZWwgaGVhZGVyPVwie3snaGlzdG9yaWNvJyB8IHRyYW5zbGF0ZX19XCIgKm5nSWY9XCJwYWdpbmFkb3JQcm9jZXNvcy5sZW5ndGggPiAwICYmIGZ1ZW50ZURUTyAhPSBudWxsXCI+XG5cbiAgICAgICAgPC9wLXRhYlBhbmVsPlxuICAgIDwvcC10YWJWaWV3PlxuPC9kaXY+XG5cbjxkaXYgKm5nSWY9XCJwYW5lbCA9PSdEQVRPUydcIj5cblxuICAgIDxkaXYgY2xhc3M9XCJjYXJkXCIgKm5nSWY9XCJwYW5lbEltcG9ydGFyID09J0dSVVBPUydcIj5cbiBcblxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgbWItNCBtdC0zXCI+XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktY29udGVudC1lbmRcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIHBCdXR0b24gcFJpcHBsZSBjbGFzcz1cInAtYnV0dG9uLXNlY29uZGFyeSBmb250LXNlbWlib2xkIG1sLTIgbWItMCBtdC0wXCIgaWNvbj1cImdseXBoaWNvbnMgZ2x5cGhpY29ucy1wbGF5XCJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJ2ZXJCb3RvbkVqZWN1dGFyICYmIHByb2Nlc2FyRGF0b3MgJiYgKGlzSW1wb3J0YWNpb24oKSB8fCBpc0VqZWN1Y2lvbigpKVwiXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsPVwie3snbGlua19lamVjdXRhcicgfCB0cmFuc2xhdGV9fVwiIChjbGljayk9XCJlamVjdXRhcigpXCI+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBwQnV0dG9uIHBSaXBwbGUgY2xhc3M9XCJwLWJ1dHRvbi1vdXRsaW5lZCBjbGFybyBmb250LXNlbWlib2xkIG1sLTIgbWItMCBtdC0wXCIgKm5nSWY9XCJwcm9jZXNvRFRPLmxsYXZlVGFibGEgIT0gbnVsbFwiIGljb249XCJnbHlwaGljb25zIGdseXBoaWNvbnMtYmluXCIgXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsPVwie3snbGlua19lbGltaW5hcicgfCB0cmFuc2xhdGV9fVwiIChjbGljayk9XCJjYW5jZWxhclByb2Nlc28oKVwiPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIHBCdXR0b24gcFJpcHBsZSBpY29uPVwicGkgcGktZmlsZVwiIChjbGljayk9XCJ0YWJsYS5leHBvcnRDU1YoKVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicC1idXR0b24tcmFpc2VkIHAtYnV0dG9uLWV4cG9ydCBib3JkZXItc29saWQtMSBib3JkZXItY29sb3ItNDAwIG1sLTIgdy1hdXRvXCIgcFRvb2x0aXA9XCJDU1ZcIlxuICAgICAgICAgICAgICAgICAgICB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIj48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBwQnV0dG9uIHBSaXBwbGUgaWNvbj1cInBpIHBpLWZpbGUtZXhjZWxcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZGF0YUV4cG9ydGVyLmV4cG9ydEV4Y2VsQ29sdW1uYXModGFibGEuZmlsdGVyZWRWYWx1ZSA9PSBudWxsID8gdGFibGEudmFsdWUgOiB0YWJsYS5maWx0ZXJlZFZhbHVlICwgJ3RhYmxhJywgY29sdW1uYXNFeHBvcnRFeGNlbClcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInAtYnV0dG9uLW91dGxpbmVkIG1sLTIgYmFja2dyb3VuZC0xMDAgdy1hdXRvXCIgcFRvb2x0aXA9XCJYTFNcIlxuICAgICAgICAgICAgICAgICAgICB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIj48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBwQnV0dG9uIHBSaXBwbGUgaWNvbj1cInBpIHBpLWZpbGUtcGRmXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRhdGFFeHBvcnRlci5leHBvcnRQZGYodGFibGEuZmlsdGVyZWRWYWx1ZSA9PSBudWxsID8gdGFibGEudmFsdWUgOiB0YWJsYS5maWx0ZXJlZFZhbHVlICwgZXhwb3J0Q29sdW1ucywgJ3RhYmxhJylcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInAtYnV0dG9uLW91dGxpbmVkIG1sLTIgdy1hdXRvXCIgcFRvb2x0aXA9XCJQREZcIiB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIj48L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8cC10YWJsZSAjdGFibGFEYXRvcyByZXNwb25zaXZlTGF5b3V0PVwic2Nyb2xsXCIgW3ZhbHVlXT1cImRhdG9zXCIgcmVzcG9uc2l2ZUxhb3lvdXQ9XCJzY3JvbGxcIiBbcGFnaW5hdG9yXT1cInRydWVcIlxuICAgICAgICAgICAgW3Jvd3NdPVwiMTBcIiBbdG90YWxSZWNvcmRzXT1cImRhdG9zLmxlbmd0aFwiIFtleHBvcnRGaWxlbmFtZV09XCIndGFibGFEYXRvcydcIlxuICAgICAgICAgICAgW3BhZ2luYXRvcl09XCJkYXRvcy5sZW5ndGggPiAxMFwiIFtyb3dzUGVyUGFnZU9wdGlvbnNdPVwiWzEwLCAyMCwgNTBdXCJcbiAgICAgICAgICAgIFtzaG93Q3VycmVudFBhZ2VSZXBvcnRdPVwidHJ1ZVwiIHNlbGVjdGlvbk1vZGU9XCJzaW5nbGVcIiBbc2Nyb2xsYWJsZV09XCJ0cnVlXCIgW2NvbHVtbnNdPVwiY29sc1wiXG4gICAgICAgICAgICBjdXJyZW50UGFnZVJlcG9ydFRlbXBsYXRlPVwie2ZpcnN0fSBhbCB7bGFzdH0gZGUge3RvdGFsUmVjb3Jkc30gcmVnaXN0cm9zXCIgKm5nSWY9XCIhaXNNb3RvcigpXCJcbiAgICAgICAgICAgIFsoc2VsZWN0aW9uKV09XCJncnVwb1wiIChvblJvd1NlbGVjdCk9XCJ2ZXJHcnVwbygkZXZlbnQpXCI+XG4gICAgICAgICAgICAgXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCI+XG5cbiAgICAgICAgICAgICAgICA8dHIgY2xhc3M9XCJmb25kb1RhYmxhUGluY2lwYWxcIj5cbiAgICAgICAgICAgICAgICAgICAgPHRoPnt7J2dydXBvJyB8IHRyYW5zbGF0ZX19PC90aD5cbiAgICAgICAgICAgICAgICAgICAgPHRoPnt7J2xpbmVhJyB8IHRyYW5zbGF0ZX19PC90aD5cbiAgICAgICAgICAgICAgICAgICAgPHRoPnt7J2FkdmVydGVuY2lhJyB8IHRyYW5zbGF0ZX19PC90aD5cbiAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJib2R5XCIgbGV0LWJlYW4+XG4gICAgICAgICAgICAgICAgPHRyIFtwU2VsZWN0YWJsZVJvd109XCJiZWFuXCI+XG4gICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInctOHJlbSBmb250LW1lZGl1bVwiPnt7YmVhbi5jb2RpZ299fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7YmVhbi51bmljYUxpbmVhfX08L3RkPlxuICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICB7e2JlYW4ubWVuc2FqZUVycm9yZXN9fTwvdGQ+XG4gICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiZW1wdHltZXNzYWdlXCI+XG4gICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj1cIjEwMFwiIGNsYXNzPVwicC0zIGZvbnQtbWVkaXVtIGVtcHR5bWVzc2FnZVwiPnt7J21lbnNhamV0YWJsYXZhY2lhJyB8IHRyYW5zbGF0ZX19PC90ZD5cbiAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L3AtdGFibGU+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2ICpuZ0lmPVwicGFuZWxJbXBvcnRhciA9PSdERVRBTExFR1JVUE8nXCI+XG4gICAgICAgIDxkaXYgKm5nSWY9XCIhaXNNb3RvcigpXCI+XG4gICAgICAgIDxoNT57eydncnVwbycgfCB0cmFuc2xhdGV9fToge3tncnVwby5jb2RpZ299fTwvaDU+XG4gICAgICAgIDxwLWFjY29yZGlvbiAqbmdJZj1cIiFpc01vdG9yKClcIj5cbiAgICAgICAgICAgIDxwLWFjY29yZGlvblRhYiBbc2VsZWN0ZWRdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJoZWFkZXJcIj48aSBjbGFzcz1cImdseXBoaWNvbnMgZ2x5cGhpY29ucy1ib29rXCI+PC9pPnt7J2xpbmVhJyB8IHRyYW5zbGF0ZX19IDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgPHAtdGFibGUgcmVzcG9uc2l2ZUxheW91dD1cInNjcm9sbFwiIFt2YWx1ZV09XCJwYWdpbmFkb3JDYW1wb3NcIiByZXNwb25zaXZlTGFveW91dD1cInNjcm9sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2hvd0N1cnJlbnRQYWdlUmVwb3J0XT1cInRydWVcIiBbc2Nyb2xsYWJsZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRQYWdlUmVwb3J0VGVtcGxhdGU9XCJ7Zmlyc3R9IGFsIHtsYXN0fSBkZSB7dG90YWxSZWNvcmRzfSByZWdpc3Ryb3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcm93R3JvdXBNb2RlPVwic3ViaGVhZGVyXCIgZGF0YUtleT1cIm51bWVyb0xpbmVhXCIgZ3JvdXBSb3dzQnk9XCJudW1lcm9MaW5lYVwiIGV4cGFuZGFibGVSb3dHcm91cHM9XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInBhZ2luYWRvckNhbXBvcy5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgY2xhc3M9XCJmb25kb1RhYmxhUGluY2lwYWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPnt7J2NhbXBvJyB8IHRyYW5zbGF0ZX19PC90aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPnt7J2FyY2hpdm8nIHwgdHJhbnNsYXRlfX08L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+e3sndGlwbycgfCB0cmFuc2xhdGV9fTwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiZ3JvdXBoZWFkZXJcIiBsZXQtYmVhbiBsZXQtcm93SW5kZXg9XCJyb3dJbmRleFwiIGxldC1leHBhbmRlZD1cImV4cGFuZGVkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj1cIjEwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgcEJ1dHRvbiBwUmlwcGxlIFtwUm93VG9nZ2xlcl09XCJiZWFuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInAtZWxlbWVudCBwLXJpcHBsZSBwLWJ1dHRvbi1yb3VuZGVkIG1yLTIgbWItMiBwLWJ1dHRvbiBwLWNvbXBvbmVudCBwLWJ1dHRvbi1kZXNwbGVnYWJsZSBwLWJ1dHRvbi1pY29uLW9ubHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpY29uXT1cImV4cGFuZGVkID8gJ3BpIHBpLWNoZXZyb24tZG93bicgOiAncGkgcGktY2hldnJvbi1yaWdodCdcIj48L2J1dHRvbj5cbiAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9udC1ib2xkIG1sLTJcIiBzdHlsZT1cImxpbmUtaGVpZ2h0OiA0MHB4O1wiPiB7eydsaW5lYScgfCB0cmFuc2xhdGV9fTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2JlYW4ubnVtZXJvTGluZWF9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJyb3dleHBhbnNpb25cIiBsZXQtYmVhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgW3BTZWxlY3RhYmxlUm93XT1cImJlYW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7YmVhbi5jYW1wb0F0cmlidXRvfX08L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tiZWFuLmNhZGVuYX19PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7YmVhbi50aXBvRGF0byB8IGZ1ZW50ZVBpcGUgOiAnbGlzdGFUaXBvRGF0byd9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiZW1wdHltZXNzYWdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj1cIjEwMFwiIGNsYXNzPVwicC0zIGZvbnQtbWVkaXVtIGVtcHR5bWVzc2FnZVwiPnt7J21lbnNhamV0YWJsYXZhY2lhJyB8IHRyYW5zbGF0ZX19PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICA8L3AtdGFibGU+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvcC1hY2NvcmRpb25UYWI+XG4gICAgICAgICAgICA8cC1hY2NvcmRpb25UYWIgKm5nSWY9XCJwYWdpbmFkb3JQYXJhbWV0cm9zPy5sZW5ndGggPiAwXCIgPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJoZWFkZXJcIj48aSBjbGFzcz1cImdseXBoaWNvbnMgZ2x5cGhpY29ucy1ib29rXCI+PC9pPnt7J3NlcnZpY2lvJyB8IHRyYW5zbGF0ZX19IDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImNvbnRlbnRcIj5cblxuICAgICAgICAgICAgICAgICAgICA8cC10YWJsZSByZXNwb25zaXZlTGF5b3V0PVwic2Nyb2xsXCIgW3ZhbHVlXT1cInBhZ2luYWRvclBhcmFtZXRyb3NcIiByZXNwb25zaXZlTGFveW91dD1cInNjcm9sbFwiIFxuICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dDdXJyZW50UGFnZVJlcG9ydF09XCJ0cnVlXCIgW3Njcm9sbGFibGVdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50UGFnZVJlcG9ydFRlbXBsYXRlPVwie2ZpcnN0fSBhbCB7bGFzdH0gZGUge3RvdGFsUmVjb3Jkc30gcmVnaXN0cm9zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvd0dyb3VwTW9kZT1cInN1YmhlYWRlclwiIGRhdGFLZXk9XCJsbGF2ZXVuaWNhXCIgZ3JvdXBSb3dzQnk9XCJsbGF2ZXVuaWNhXCIgZXhwYW5kYWJsZVJvd0dyb3Vwcz1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJwYWdpbmFkb3JQYXJhbWV0cm9zLmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJoZWFkZXJcIj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciBjbGFzcz1cImZvbmRvVGFibGFQaW5jaXBhbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+e3sncGFyYW1ldHJvJyB8IHRyYW5zbGF0ZX19czwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD57eyd2YWxvcicgfCB0cmFuc2xhdGV9fTwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiZ3JvdXBoZWFkZXJcIiBsZXQtYmVhbiBsZXQtcm93SW5kZXg9XCJyb3dJbmRleFwiIGxldC1leHBhbmRlZD1cImV4cGFuZGVkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj1cIjEwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgcEJ1dHRvbiBwUmlwcGxlIFtwUm93VG9nZ2xlcl09XCJiZWFuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInAtZWxlbWVudCBwLXJpcHBsZSBwLWJ1dHRvbi1yb3VuZGVkIG1yLTIgbWItMiBwLWJ1dHRvbiBwLWNvbXBvbmVudCBwLWJ1dHRvbi1kZXNwbGVnYWJsZSBwLWJ1dHRvbi1pY29uLW9ubHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpY29uXT1cImV4cGFuZGVkID8gJ3BpIHBpLWNoZXZyb24tZG93bicgOiAncGkgcGktY2hldnJvbi1yaWdodCdcIj48L2J1dHRvbj5cbiAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9udC1ib2xkIG1sLTJcIiBzdHlsZT1cImxpbmUtaGVpZ2h0OiA0MHB4O1wiPnt7YmVhbi5sbGF2ZXVuaWNhfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cInJvd2V4cGFuc2lvblwiIGxldC1iZWFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7YmVhbi5jYW1wb0F0cmlidXRvfX08L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgKm5nSWY9XCJiZWFuLnRpcG9EYXRvID09ICdMJyB8fCBiZWFuLnRpcG9EYXRvID09ICdUJ1wiPnt7YmVhbi5jYWRlbmF9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgKm5nSWY9XCJiZWFuLnRpcG9EYXRvID09ICdEJyB8fCBiZWFuLnRpcG9EYXRvID09ICdOJ1wiPnt7YmVhbi5udW1lcm99fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgKm5nSWY9XCJiZWFuLnRpcG9EYXRvID09ICdGJ1wiPnt7YmVhbi5jYWRlbmEgfCBkYXRlIDogKCdmb3JtYXRvZmVjaGEnIHwgdHJhbnNsYXRlKSB9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiZW1wdHltZXNzYWdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj1cIjEwMFwiIGNsYXNzPVwicC0zIGZvbnQtbWVkaXVtIGVtcHR5bWVzc2FnZVwiPnt7J21lbnNhamV0YWJsYXZhY2lhJyB8IHRyYW5zbGF0ZX19PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICA8L3AtdGFibGU+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvcC1hY2NvcmRpb25UYWI+XG4gICAgICAgIDwvcC1hY2NvcmRpb24+XG4gICAgPC9kaXY+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJpc01vdG9yKClcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBtYi00IG10LTNcIj5cbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICBcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtbC0yIG1iLTEgbXQtMlwiICpuZ0lmPVwibGluZWFzQ29uTWVuc2FqZSAhPSAwXCIgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHAtY2hlY2tib3ggY2xhc3M9XCJtbC0xXCIgWyhuZ01vZGVsKV09XCJ2ZXJJbmNvbnNpc3RlbmNpYVwiICBbYmluYXJ5XT1cInRydWVcIj4gIDwvcC1jaGVja2JveD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBzdHlsZT1cIm1hcmdpbjogM3B4IDhweDtcIj4gIHt7J3NvbG9pbmNvbnNpc3RlbmNpYXMnIHwgdHJhbnNsYXRlfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHBCdXR0b24gcFJpcHBsZSBjbGFzcz1cInAtYnV0dG9uLXNlY29uZGFyeSBmb250LXNlbWlib2xkIG1sLTIgbWItMCBtdC0wXCIgaWNvbj1cImdseXBoaWNvbnMgZ2x5cGhpY29ucy1wbGF5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwidmVyQm90b25FamVjdXRhciAmJiBwcm9jZXNhckRhdG9zICYmIChpc0ltcG9ydGFjaW9uKCkgfHwgaXNFamVjdWNpb24oKSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9XCJ7eydsaW5rX2VqZWN1dGFyJyB8IHRyYW5zbGF0ZX19XCIgKGNsaWNrKT1cImVqZWN1dGFyKClcIj5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gcEJ1dHRvbiBwUmlwcGxlIGNsYXNzPVwicC1idXR0b24tb3V0bGluZWQgY2xhcm8gZm9udC1zZW1pYm9sZCBtbC0yIG1iLTAgbXQtMFwiICpuZ0lmPVwicHJvY2Vzb0RUTy5sbGF2ZVRhYmxhICE9IG51bGxcIiBpY29uPVwiZ2x5cGhpY29ucyBnbHlwaGljb25zLWJpblwiIFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9XCJ7eydsaW5rX2VsaW1pbmFyJyB8IHRyYW5zbGF0ZX19XCIgKGNsaWNrKT1cImNhbmNlbGFyUHJvY2VzbygpXCI+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBwQnV0dG9uIHBSaXBwbGUgaWNvbj1cInBpIHBpLWZpbGVcIiAoY2xpY2spPVwidGFibGEyLmV4cG9ydENTVigpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicC1idXR0b24tcmFpc2VkIHAtYnV0dG9uLWV4cG9ydCBib3JkZXItc29saWQtMSBib3JkZXItY29sb3ItNDAwIG1sLTIgdy1hdXRvXCIgcFRvb2x0aXA9XCJDU1ZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCI+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIHBCdXR0b24gcFJpcHBsZSBpY29uPVwicGkgcGktZmlsZS1leGNlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZGF0YUV4cG9ydGVyLmV4cG9ydEV4Y2VsKHRhYmxhMi5maWx0ZXJlZFZhbHVlID09IG51bGwgPyB0YWJsYTIudmFsdWUgOiB0YWJsYTIuZmlsdGVyZWRWYWx1ZSAsICd0YWJsYTInKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInAtYnV0dG9uLW91dGxpbmVkIG1sLTIgYmFja2dyb3VuZC0xMDAgdy1hdXRvXCIgcFRvb2x0aXA9XCJYTFNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCI+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIHBCdXR0b24gcFJpcHBsZSBpY29uPVwicGkgcGktZmlsZS1wZGZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRhdGFFeHBvcnRlci5leHBvcnRQZGYodGFibGEyLmZpbHRlcmVkVmFsdWUgPT0gbnVsbCA/IHRhYmxhMi52YWx1ZSA6IHRhYmxhMi5maWx0ZXJlZFZhbHVlICwgZXhwb3J0Q29sdW1ucywgJ3RhYmxhMicpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicC1idXR0b24tb3V0bGluZWQgbWwtMiB3LWF1dG9cIiBwVG9vbHRpcD1cIlBERlwiIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8YnIvPlxuICAgICAgICAgICAgPHAtdGFibGUgI3RhYmxhRGF0b3MyIHJlc3BvbnNpdmVMYXlvdXQ9XCJzY3JvbGxcIiBbdmFsdWVdPVwibGluZWFzQ2FyZ2FkYXNcIiByZXNwb25zaXZlTGFveW91dD1cInNjcm9sbFwiIFtwYWdpbmF0b3JdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgW3Jvd3NdPVwiMTBcIiBbdG90YWxSZWNvcmRzXT1cImxpbmVhc0NhcmdhZGFzLmxlbmd0aFwiXG4gICAgICAgICAgICAgICAgW3BhZ2luYXRvcl09XCJsaW5lYXNDYXJnYWRhcy5sZW5ndGggPiAxMFwiIFtyb3dzUGVyUGFnZU9wdGlvbnNdPVwiWzEwLCAyMCwgNTBdXCJcbiAgICAgICAgICAgICAgICBbc2hvd0N1cnJlbnRQYWdlUmVwb3J0XT1cInRydWVcIiBbc2Nyb2xsYWJsZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBjdXJyZW50UGFnZVJlcG9ydFRlbXBsYXRlPVwie2ZpcnN0fSBhbCB7bGFzdH0gZGUge3RvdGFsUmVjb3Jkc30gcmVnaXN0cm9zXCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIiAhdmVySW5jb25zaXN0ZW5jaWFcIj5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCI+XG5cbiAgICAgICAgICAgICAgICAgICAgPHRyIGNsYXNzPVwiZm9uZG9UYWJsYVBpbmNpcGFsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGg+e3snbnVtZXJvbGluZWEnIHwgdHJhbnNsYXRlfX08L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoPnt7J2xpbmVhJyB8IHRyYW5zbGF0ZX19PC90aD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD57eydtZW5zYWplJyB8IHRyYW5zbGF0ZX19PC90aD5cbiAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJib2R5XCIgbGV0LWJlYW4+XG4gICAgICAgICAgICAgICAgICAgIDx0ciBbcFNlbGVjdGFibGVSb3ddPVwiYmVhblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7YmVhbi5udW1lcm99fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tiZWFuLmxpbmVhfX08L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7YmVhbi5tZW5zYWplfX08L3RkPlxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImVtcHR5bWVzc2FnZVwiPlxuICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj1cIjEwMFwiIGNsYXNzPVwicC0zIGZvbnQtbWVkaXVtIGVtcHR5bWVzc2FnZVwiPnt7J21lbnNhamV0YWJsYXZhY2lhJyB8IHRyYW5zbGF0ZX19PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImZvb3RlclwiIGxldC1kYXRvID5cbiAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZm9udC1ib2xkXCIgKm5nSWY9XCJsaW5lYXNDb25NZW5zYWplICE9IDAgfHwgbGluZWFzU2luTWVuc2FqZSAhPSAwXCI+e3sncmVzdW1lbicgfCB0cmFuc2xhdGV9fTogPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImZvbnQtYm9sZFwiICpuZ0lmPVwibGluZWFzQ29uTWVuc2FqZSAhPSAwIHx8IGxpbmVhc1Npbk1lbnNhamUgIT0gMFwiPnt7J2NhbnRpZGFkbGluZWFzaW5tZW5zYWplJyB8IHRyYW5zbGF0ZX19OiB7e2xpbmVhc1Npbk1lbnNhamV9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJmb250LWJvbGRcIiAqbmdJZj1cImxpbmVhc0Nvbk1lbnNhamUgIT0gMCB8fCBsaW5lYXNTaW5NZW5zYWplICE9IDBcIj57eydjYW50aWRhZGxpbmVhY29ubWVuc2FqZScgfCB0cmFuc2xhdGV9fToge3tsaW5lYXNDb25NZW5zYWplfX08L3RkPlxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L3AtdGFibGU+XG4gICAgICAgICAgICA8cC10YWJsZSByZXNwb25zaXZlTGF5b3V0PVwic2Nyb2xsXCIgW3ZhbHVlXT1cImxpbmVhc0luY29uc2lzdGVuY2lhXCIgcmVzcG9uc2l2ZUxhb3lvdXQ9XCJzY3JvbGxcIiBbcGFnaW5hdG9yXT1cInRydWVcIlxuICAgICAgICAgICAgICAgIFtyb3dzXT1cIjEwXCIgW3RvdGFsUmVjb3Jkc109XCJsaW5lYXNJbmNvbnNpc3RlbmNpYS5sZW5ndGhcIlxuICAgICAgICAgICAgICAgIFtwYWdpbmF0b3JdPVwibGluZWFzSW5jb25zaXN0ZW5jaWEubGVuZ3RoID4gMTBcIiBbcm93c1BlclBhZ2VPcHRpb25zXT1cIlsxMCwgMjAsIDUwXVwiXG4gICAgICAgICAgICAgICAgW3Nob3dDdXJyZW50UGFnZVJlcG9ydF09XCJ0cnVlXCIgW3Njcm9sbGFibGVdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgY3VycmVudFBhZ2VSZXBvcnRUZW1wbGF0ZT1cIntmaXJzdH0gYWwge2xhc3R9IGRlIHt0b3RhbFJlY29yZHN9IHJlZ2lzdHJvc1wiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJ2ZXJJbmNvbnNpc3RlbmNpYVwiPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJoZWFkZXJcIj5cblxuICAgICAgICAgICAgICAgICAgICA8dHIgY2xhc3M9XCJmb25kb1RhYmxhUGluY2lwYWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD57eydudW1lcm9saW5lYScgfCB0cmFuc2xhdGV9fTwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGg+e3snbGluZWEnIHwgdHJhbnNsYXRlfX08L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoPnt7J21lbnNhamUnIHwgdHJhbnNsYXRlfX08L3RoPlxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImJvZHlcIiBsZXQtYmVhbj5cbiAgICAgICAgICAgICAgICAgICAgPHRyIFtwU2VsZWN0YWJsZVJvd109XCJiZWFuXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tiZWFuLm51bWVyb319PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e2JlYW4ubGluZWF9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tiZWFuLm1lbnNhamV9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiZW1wdHltZXNzYWdlXCI+XG4gICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPVwiMTAwXCIgY2xhc3M9XCJwLTMgZm9udC1tZWRpdW0gZW1wdHltZXNzYWdlXCI+e3snbWVuc2FqZXRhYmxhdmFjaWEnIHwgdHJhbnNsYXRlfX08L3RkPlxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJmb290ZXJcIiBsZXQtZGF0byA+XG4gICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImZvbnQtYm9sZFwiICpuZ0lmPVwibGluZWFzQ29uTWVuc2FqZSAhPSAwIHx8IGxpbmVhc1Npbk1lbnNhamUgIT0gMFwiPnt7J3Jlc3VtZW4nIHwgdHJhbnNsYXRlfX06IDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJmb250LWJvbGRcIiAqbmdJZj1cImxpbmVhc0Nvbk1lbnNhamUgIT0gMCB8fCBsaW5lYXNTaW5NZW5zYWplICE9IDBcIj57eydjYW50aWRhZGxpbmVhc2lubWVuc2FqZScgfCB0cmFuc2xhdGV9fToge3tsaW5lYXNTaW5NZW5zYWplfX08L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZm9udC1ib2xkXCIgKm5nSWY9XCJsaW5lYXNDb25NZW5zYWplICE9IDAgfHwgbGluZWFzU2luTWVuc2FqZSAhPSAwXCI+e3snY2FudGlkYWRsaW5lYWNvbm1lbnNhamUnIHwgdHJhbnNsYXRlfX06IHt7bGluZWFzQ29uTWVuc2FqZX19PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9wLXRhYmxlPlxuIFxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICBcbiAgICBcbjwvZGl2PlxuPC9kaXY+XG4iXX0=