ng-easycommerce-v18 0.3.23-beta.2 → 0.4.1-beta.1

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 (218) hide show
  1. package/README.md +126 -111
  2. package/assets/decidirFormEc.html +514 -514
  3. package/assets/ec-i18n/ct.json +286 -282
  4. package/assets/ec-i18n/en.json +12 -1
  5. package/assets/ec-i18n/es.json +445 -434
  6. package/assets/ec-i18n/fr.json +4 -0
  7. package/assets/ec-i18n/gl.json +286 -282
  8. package/assets/ec-i18n/pr.json +286 -282
  9. package/assets/images/cards-occasional.svg +21 -21
  10. package/assets/recaptcha/recaptcha-site-keys.json +3 -3
  11. package/assets/recaptcha/recaptcha-sites-prod.json +38 -38
  12. package/assets/recaptcha/recaptcha-sites.json +52 -52
  13. package/esm2022/lib/api/connection.service.mjs +1 -1
  14. package/esm2022/lib/classes/checkout/steps.mjs +1 -1
  15. package/esm2022/lib/classes/component-helper.mjs +1 -1
  16. package/esm2022/lib/classes/filters/attributes-filter.mjs +1 -1
  17. package/esm2022/lib/classes/filters/category-filter.mjs +1 -1
  18. package/esm2022/lib/classes/filters/dynamics-filter.mjs +1 -1
  19. package/esm2022/lib/classes/filters/filter-factory.mjs +1 -1
  20. package/esm2022/lib/classes/filters/filter.mjs +1 -1
  21. package/esm2022/lib/classes/filters/index.mjs +1 -1
  22. package/esm2022/lib/classes/filters/price_range-filter.mjs +1 -1
  23. package/esm2022/lib/classes/filters/sort-filter.mjs +1 -1
  24. package/esm2022/lib/classes/index.mjs +1 -1
  25. package/esm2022/lib/classes/user.mjs +1 -1
  26. package/esm2022/lib/constants/api.constants.service.mjs +19 -15
  27. package/esm2022/lib/constants/core.constants.service.mjs +9 -3
  28. package/esm2022/lib/constants/index.mjs +1 -1
  29. package/esm2022/lib/ec-components/abstractions-components/block-ec.component.mjs +1 -1
  30. package/esm2022/lib/ec-components/abstractions-components/index.mjs +1 -1
  31. package/esm2022/lib/ec-components/abstractions-components/menu-ec.component.mjs +17 -1
  32. package/esm2022/lib/ec-components/account-ec/account-ec.component.mjs +3 -3
  33. package/esm2022/lib/ec-components/account-ec/index.mjs +1 -1
  34. package/esm2022/lib/ec-components/account-ec/order-ec/order-ec.component.mjs +5 -9
  35. package/esm2022/lib/ec-components/account-ec/orders-list-ec/orders-list-ec.component.mjs +11 -5
  36. package/esm2022/lib/ec-components/auth-ec/auth-ec.component.mjs +3 -3
  37. package/esm2022/lib/ec-components/auth-ec/confirm-account-ec/confirm-account-ec.component.mjs +3 -3
  38. package/esm2022/lib/ec-components/auth-ec/forgot-password-ec/forgot-password-ec.component.mjs +3 -3
  39. package/esm2022/lib/ec-components/auth-ec/index.mjs +1 -1
  40. package/esm2022/lib/ec-components/auth-ec/login-form-ec/login-form-ec.component.mjs +28 -18
  41. package/esm2022/lib/ec-components/auth-ec/password-reset-ec/password-reset-ec.component.mjs +27 -23
  42. package/esm2022/lib/ec-components/auth-ec/register-form-ec/register-form-ec.component.mjs +3 -3
  43. package/esm2022/lib/ec-components/auth-ec/register-wholesaler-form-ec/register-wholesaler-form-ec.component.mjs +3 -3
  44. package/esm2022/lib/ec-components/blocks-ec/block-banner-box-ec/block-banner-box-ec.component.mjs +3 -3
  45. package/esm2022/lib/ec-components/blocks-ec/block-banner-full-ec/block-banner-full-ec.component.mjs +3 -3
  46. package/esm2022/lib/ec-components/blocks-ec/block-form-contact-ec/block-form-contact-ec.component.mjs +3 -3
  47. package/esm2022/lib/ec-components/blocks-ec/block-html-ec/block-html-ec.component.mjs +3 -3
  48. package/esm2022/lib/ec-components/blocks-ec/block-newsletter-ec/block-newsletter-ec.component.mjs +3 -3
  49. package/esm2022/lib/ec-components/blocks-ec/block-products-ec/block-products-ec.component.mjs +7 -4
  50. package/esm2022/lib/ec-components/blocks-ec/blocks-ec.component.mjs +3 -3
  51. package/esm2022/lib/ec-components/blocks-ec/index.mjs +1 -1
  52. package/esm2022/lib/ec-components/breadcrumb-ec/breadcrumb-ec.component.mjs +3 -3
  53. package/esm2022/lib/ec-components/cart-ec/cart-ec.component.mjs +12 -3
  54. package/esm2022/lib/ec-components/cart-ec/cart-item-ec/cart-item-ec.component.mjs +3 -3
  55. package/esm2022/lib/ec-components/cart-ec/index.mjs +1 -1
  56. package/esm2022/lib/ec-components/checkout-ec/checkout-ec.component.mjs +10 -3
  57. package/esm2022/lib/ec-components/checkout-ec/dataform-ec/dataform-ec.component.mjs +4 -11
  58. package/esm2022/lib/ec-components/checkout-ec/dataform-ec/input-ec/input-ec.component.mjs +3 -3
  59. package/esm2022/lib/ec-components/checkout-ec/detail-checkout-block-ec/detail-checkout-block-ec.component.mjs +5 -3
  60. package/esm2022/lib/ec-components/checkout-ec/payment-ec/payment-ec.component.mjs +49 -5
  61. package/esm2022/lib/ec-components/checkout-ec/payment-ec/payment-methods/bank-transfer-ec/bank-transfer-ec.component.mjs +3 -3
  62. package/esm2022/lib/ec-components/checkout-ec/payment-ec/payment-methods/index.mjs +1 -1
  63. package/esm2022/lib/ec-components/checkout-ec/payment-ec/payment-methods/mp-redirect-ec/mp-redirect-ec.component.mjs +55 -46
  64. package/esm2022/lib/ec-components/checkout-ec/payment-ec/payment-methods/offline-ec/offline-ec.component.mjs +3 -3
  65. package/esm2022/lib/ec-components/checkout-ec/shipment-ec/shipment-ec.component.mjs +3 -3
  66. package/esm2022/lib/ec-components/checkout-ec/step-container-ec/step-container-ec.component.mjs +3 -3
  67. package/esm2022/lib/ec-components/checkout-ec/success-ec/success-ec.component.mjs +4 -3
  68. package/esm2022/lib/ec-components/collection-ec/collection-ec.component.mjs +3 -3
  69. package/esm2022/lib/ec-components/contact-ec/contact-ec.component.mjs +1 -1
  70. package/esm2022/lib/ec-components/coupon-ec/coupon-ec.component.mjs +3 -3
  71. package/esm2022/lib/ec-components/credit-account-banner-ec/credit-account-banner-ec.component.mjs +79 -0
  72. package/esm2022/lib/ec-components/faqs-ec/faqs-ec.component.mjs +3 -3
  73. package/esm2022/lib/ec-components/filters-ec/filters-ec.component.mjs +30 -7
  74. package/esm2022/lib/ec-components/filters-sort-ec/filters-sort-ec.component.mjs +3 -3
  75. package/esm2022/lib/ec-components/footer-ec/footer-ec.component.mjs +3 -3
  76. package/esm2022/lib/ec-components/header-ec/header-ec.component.mjs +37 -17
  77. package/esm2022/lib/ec-components/home-ec/home-ec.component.mjs +3 -3
  78. package/esm2022/lib/ec-components/index.mjs +2 -1
  79. package/esm2022/lib/ec-components/price-range-filter/price-range-filter.component.mjs +3 -3
  80. package/esm2022/lib/ec-components/product-detail-ec/product-detail-ec.component.mjs +12 -7
  81. package/esm2022/lib/ec-components/product-ec/product-ec.component.mjs +3 -3
  82. package/esm2022/lib/ec-components/related-products-ec/related-products-ec.component.mjs +3 -3
  83. package/esm2022/lib/ec-components/reviews-ec/reviews-ec.component.mjs +3 -3
  84. package/esm2022/lib/ec-components/reviews-form-ec/reviews-form-ec.component.mjs +3 -3
  85. package/esm2022/lib/ec-components/section-container-ec/section-container-ec.component.mjs +3 -3
  86. package/esm2022/lib/ec-components/share-ec/share-buttons-ec/index.mjs +1 -1
  87. package/esm2022/lib/ec-components/share-ec/share-buttons-ec/share-email-ec/share-email-ec.component.mjs +3 -3
  88. package/esm2022/lib/ec-components/share-ec/share-buttons-ec/share-facebook-ec/share-facebook-ec.component.mjs +3 -3
  89. package/esm2022/lib/ec-components/share-ec/share-buttons-ec/share-pinterest-ec/share-pinterest-ec.component.mjs +3 -3
  90. package/esm2022/lib/ec-components/share-ec/share-buttons-ec/share-twitter-ec/share-twitter-ec.component.mjs +3 -3
  91. package/esm2022/lib/ec-components/share-ec/share-buttons-ec/share-whatsapp-ec/share-whatsapp-ec.component.mjs +3 -3
  92. package/esm2022/lib/ec-components/share-ec/share-ec.component.mjs +3 -3
  93. package/esm2022/lib/ec-components/sidebar-ec/sidebar-ec.component.mjs +5 -7
  94. package/esm2022/lib/ec-components/stores-ec/stores-ec.component.mjs +20 -11
  95. package/esm2022/lib/ec-components/variants-ec/variants-ec.component.mjs +3 -3
  96. package/esm2022/lib/ec-components/widgets-ec/decidir-ec/decidir-ec.component.mjs +14 -8
  97. package/esm2022/lib/ec-components/widgets-ec/index.mjs +1 -1
  98. package/esm2022/lib/ec-components/widgets-ec/loading/index.mjs +1 -1
  99. package/esm2022/lib/ec-components/widgets-ec/loading/loading-full-ec/loading-full-ec.component.mjs +3 -3
  100. package/esm2022/lib/ec-components/widgets-ec/loading/loading-inline-ec/loading-inline-ec.component.mjs +3 -3
  101. package/esm2022/lib/ec-components/widgets-ec/loading/loading-section-ec/loading-section-ec.component.mjs +3 -3
  102. package/esm2022/lib/ec-components/widgets-ec/magnizoom-ec/magnizoom-ec.component.mjs +9 -9
  103. package/esm2022/lib/ec-components/widgets-ec/price-ec/price-ec.component.mjs +5 -11
  104. package/esm2022/lib/ec-components/widgets-ec/rating-ec/rating-ec.component.mjs +3 -3
  105. package/esm2022/lib/ec-components/widgets-ec/re-captcha-ec/re-captcha-ec.component.mjs +3 -3
  106. package/esm2022/lib/ec-components/widgets-ec/redsys-catch-ec/redsys-catch-ec.component.mjs +19 -9
  107. package/esm2022/lib/ec-directive/index.mjs +1 -1
  108. package/esm2022/lib/ec-directive/product-off.directive.mjs +1 -1
  109. package/esm2022/lib/ec-directive/product-stock.directive.mjs +1 -1
  110. package/esm2022/lib/ec-guards/auth.guard.mjs +1 -1
  111. package/esm2022/lib/ec-pipe/ec-currency-symbol.pipe.mjs +1 -1
  112. package/esm2022/lib/ec-pipe/ec-safe-html.pipe.mjs +1 -1
  113. package/esm2022/lib/ec-pipe/index.mjs +1 -1
  114. package/esm2022/lib/ec-services/addressing.service.mjs +1 -1
  115. package/esm2022/lib/ec-services/analytics/analytics.service.mjs +1 -1
  116. package/esm2022/lib/ec-services/analytics/doppler.service.mjs +1 -1
  117. package/esm2022/lib/ec-services/analytics/facebook-pixel.service.mjs +1 -1
  118. package/esm2022/lib/ec-services/analytics/google-analytics.service.mjs +4 -4
  119. package/esm2022/lib/ec-services/analytics/gtm.service.mjs +3 -2
  120. package/esm2022/lib/ec-services/analytics/index.mjs +1 -1
  121. package/esm2022/lib/ec-services/analytics/metricool-pixel.service.mjs +11 -11
  122. package/esm2022/lib/ec-services/auth.service.mjs +1 -1
  123. package/esm2022/lib/ec-services/auth.storage.service.mjs +1 -1
  124. package/esm2022/lib/ec-services/base-api.service.mjs +148 -0
  125. package/esm2022/lib/ec-services/blocks-repository.service.mjs +1 -1
  126. package/esm2022/lib/ec-services/blocks.service.mjs +1 -1
  127. package/esm2022/lib/ec-services/cart.service.mjs +42 -7
  128. package/esm2022/lib/ec-services/channel.service.mjs +1 -1
  129. package/esm2022/lib/ec-services/checkout.service.mjs +4 -2
  130. package/esm2022/lib/ec-services/currency.service.mjs +1 -1
  131. package/esm2022/lib/ec-services/filters.service.mjs +1 -1
  132. package/esm2022/lib/ec-services/form.service.mjs +1 -1
  133. package/esm2022/lib/ec-services/index.mjs +4 -1
  134. package/esm2022/lib/ec-services/local-storage.service.mjs +1 -1
  135. package/esm2022/lib/ec-services/ngx-local-storage.service.mjs +1 -1
  136. package/esm2022/lib/ec-services/options.service.mjs +1 -1
  137. package/esm2022/lib/ec-services/order-utility.service.mjs +1 -1
  138. package/esm2022/lib/ec-services/orders.service.mjs +1 -1
  139. package/esm2022/lib/ec-services/pagination.service.mjs +1 -1
  140. package/esm2022/lib/ec-services/parameters.service.mjs +1 -1
  141. package/esm2022/lib/ec-services/payment.service.mjs +1 -1
  142. package/esm2022/lib/ec-services/price-visibility.service.mjs +40 -0
  143. package/esm2022/lib/ec-services/product-detail.service.mjs +45 -7
  144. package/esm2022/lib/ec-services/products.service.mjs +1 -1
  145. package/esm2022/lib/ec-services/re-captcha.service.mjs +1 -1
  146. package/esm2022/lib/ec-services/reviews.service.mjs +1 -1
  147. package/esm2022/lib/ec-services/runtime-config.service.mjs +219 -0
  148. package/esm2022/lib/ec-services/shipment.service.mjs +1 -1
  149. package/esm2022/lib/ec-services/stores.service.mjs +1 -1
  150. package/esm2022/lib/ec-services/test.service.mjs +1 -1
  151. package/esm2022/lib/ec-services/toast.service.mjs +1 -1
  152. package/esm2022/lib/interceptors/auth.interceptor.mjs +1 -1
  153. package/esm2022/lib/interceptors/index.mjs +2 -1
  154. package/esm2022/lib/interceptors/runtime-config.interceptor.mjs +41 -0
  155. package/esm2022/lib/interfaces/analytics/event-key.mjs +1 -1
  156. package/esm2022/lib/interfaces/analytics/facebook-pixel-data.mjs +1 -1
  157. package/esm2022/lib/interfaces/analytics/gtm-config.mjs +1 -1
  158. package/esm2022/lib/interfaces/analytics/index.mjs +1 -1
  159. package/esm2022/lib/interfaces/blocks.mjs +1 -1
  160. package/esm2022/lib/interfaces/checkout.mjs +1 -1
  161. package/esm2022/lib/interfaces/connection.mjs +1 -1
  162. package/esm2022/lib/interfaces/coupon.mjs +1 -1
  163. package/esm2022/lib/interfaces/currency.mjs +1 -1
  164. package/esm2022/lib/interfaces/deserializable.mjs +1 -1
  165. package/esm2022/lib/interfaces/environment.mjs +1 -1
  166. package/esm2022/lib/interfaces/faqs.mjs +1 -1
  167. package/esm2022/lib/interfaces/filter.mjs +1 -1
  168. package/esm2022/lib/interfaces/index.mjs +2 -1
  169. package/esm2022/lib/interfaces/options.mjs +1 -1
  170. package/esm2022/lib/interfaces/pagination.mjs +1 -1
  171. package/esm2022/lib/interfaces/parameter.mjs +1 -1
  172. package/esm2022/lib/interfaces/product.mjs +1 -1
  173. package/esm2022/lib/interfaces/runtime-config.mjs +2 -0
  174. package/esm2022/lib/interfaces/step.mjs +1 -1
  175. package/esm2022/lib/interfaces/storage.mjs +1 -1
  176. package/esm2022/lib/interfaces/store.mjs +1 -1
  177. package/esm2022/lib/interfaces/types/user.type.mjs +1 -1
  178. package/esm2022/lib/providers/index.mjs +2 -1
  179. package/esm2022/lib/providers/provideEnvironment.mjs +1 -1
  180. package/esm2022/lib/providers/provideRuntimeConfig.mjs +36 -0
  181. package/esm2022/lib/stores/currency.store.mjs +1 -1
  182. package/esm2022/public-api.mjs +1 -1
  183. package/fesm2022/ng-easycommerce-v18.mjs +1125 -354
  184. package/fesm2022/ng-easycommerce-v18.mjs.map +1 -1
  185. package/lib/constants/api.constants.service.d.ts +1 -0
  186. package/lib/constants/core.constants.service.d.ts +5 -1
  187. package/lib/ec-components/abstractions-components/menu-ec.component.d.ts +12 -0
  188. package/lib/ec-components/account-ec/order-ec/order-ec.component.d.ts +2 -2
  189. package/lib/ec-components/account-ec/orders-list-ec/orders-list-ec.component.d.ts +3 -0
  190. package/lib/ec-components/auth-ec/login-form-ec/login-form-ec.component.d.ts +2 -0
  191. package/lib/ec-components/cart-ec/cart-ec.component.d.ts +4 -2
  192. package/lib/ec-components/checkout-ec/checkout-ec.component.d.ts +2 -0
  193. package/lib/ec-components/checkout-ec/detail-checkout-block-ec/detail-checkout-block-ec.component.d.ts +2 -0
  194. package/lib/ec-components/checkout-ec/payment-ec/payment-ec.component.d.ts +7 -1
  195. package/lib/ec-components/checkout-ec/payment-ec/payment-methods/mp-redirect-ec/mp-redirect-ec.component.d.ts +1 -0
  196. package/lib/ec-components/checkout-ec/success-ec/success-ec.component.d.ts +1 -0
  197. package/lib/ec-components/credit-account-banner-ec/credit-account-banner-ec.component.d.ts +27 -0
  198. package/lib/ec-components/filters-ec/filters-ec.component.d.ts +12 -4
  199. package/lib/ec-components/header-ec/header-ec.component.d.ts +12 -4
  200. package/lib/ec-components/index.d.ts +1 -0
  201. package/lib/ec-components/sidebar-ec/sidebar-ec.component.d.ts +2 -1
  202. package/lib/ec-components/widgets-ec/price-ec/price-ec.component.d.ts +2 -4
  203. package/lib/ec-services/base-api.service.d.ts +64 -0
  204. package/lib/ec-services/cart.service.d.ts +1 -0
  205. package/lib/ec-services/index.d.ts +3 -0
  206. package/lib/ec-services/price-visibility.service.d.ts +23 -0
  207. package/lib/ec-services/product-detail.service.d.ts +3 -0
  208. package/lib/ec-services/runtime-config.service.d.ts +69 -0
  209. package/lib/interceptors/index.d.ts +1 -0
  210. package/lib/interceptors/runtime-config.interceptor.d.ts +7 -0
  211. package/lib/interfaces/environment.d.ts +1 -0
  212. package/lib/interfaces/filter.d.ts +1 -0
  213. package/lib/interfaces/index.d.ts +1 -0
  214. package/lib/interfaces/options.d.ts +2 -0
  215. package/lib/interfaces/runtime-config.d.ts +22 -0
  216. package/lib/providers/index.d.ts +1 -0
  217. package/lib/providers/provideRuntimeConfig.d.ts +13 -0
  218. package/package.json +1 -1
@@ -1,5 +1,6 @@
1
1
  import { Component, inject } from '@angular/core';
2
2
  import { AuthService, CartService, ChannelService, ToastService } from '../../ec-services';
3
+ import { PriceVisibilityService } from '../../ec-services/price-visibility.service';
3
4
  import { CoreConstantsService } from '../../constants';
4
5
  import { Router, RouterLink } from '@angular/router';
5
6
  import { AsyncPipe } from '@angular/common';
@@ -14,13 +15,13 @@ export class SidebarEcComponent {
14
15
  _router = inject(Router);
15
16
  _toastrService = inject(ToastService);
16
17
  _channelService = inject(ChannelService);
18
+ priceVisibility = inject(PriceVisibilityService);
17
19
  user = null;
18
20
  mediaUrl = this._consts.mediaUrl();
19
21
  promotions = [];
20
22
  variantsToShow = ['TALLE', 'COLOR'];
21
23
  hideDiscounts = false;
22
24
  hideTaxes = false;
23
- creditAccountShowPrices = null;
24
25
  cartItems$ = this._cartService.cartItems$;
25
26
  subTotalAmount$ = this._cartService.getSubTotalAmount();
26
27
  totalPromotionAmount$ = this._cartService.getTotalPromotionAmount();
@@ -35,9 +36,6 @@ export class SidebarEcComponent {
35
36
  this.hideDiscounts = channel?.hideDiscounts ?? false;
36
37
  this.hideTaxes = channel?.hideTaxes ?? false;
37
38
  });
38
- this._cartService.showPrice$.subscribe((showPrice) => {
39
- this.creditAccountShowPrices = showPrice;
40
- });
41
39
  }
42
40
  actualizarCantidad(_t13, arg1, arg2, arg3, arg4) {
43
41
  throw new Error('Method not implemented.');
@@ -55,10 +53,10 @@ export class SidebarEcComponent {
55
53
  throw new Error('Method not implemented.');
56
54
  }
57
55
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SidebarEcComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
58
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: SidebarEcComponent, isStandalone: true, selector: "app-sidebar-ec", ngImport: i0, template: "<div class=\"nav nav-sidebar py-4 mx-0 position-relative text-center shadow-sm border-bottom d-flex justify-content-center\">\r\n <h2 class=\"row text-center\">Mi pedido</h2>\r\n <div class=\" me-3 closeCart position-absolute end-0\" data-bs-dismiss=\"offcanvas\" aria-label=\"Close\">\r\n <i class=\"fa fa-times-circle fs-5\" aria-hidden=\"true\"></i>\r\n </div>\r\n</div>\r\n\r\n\r\n@if(cartItems$ | async; as items){\r\n @if(items.length > 0){\r\n <!-- PRODUCTO -->\r\n <div class=\"d-flex flex-column mb-4 items border-bottom\">\r\n @for(item of items; track $index; let i = $index){\r\n <div class=\"productoCarrito mt-1 mb-2 w-100\">\r\n <app-cart-item-ec [inSidebar]=\"true\" [item]=\"item\"></app-cart-item-ec>\r\n </div>\r\n }\r\n </div>\r\n <div class=\"d-flex mx-4 justify-content-between mt-2 \">\r\n <p class=\"fw-bold\">Subtotal</p>\r\n <p class=\"fw-700\">{{ (subTotalAmount$ | async) | ecCurrencySymbol}}</p>\r\n </div>\r\n <div class=\"mx-4 bordeBot py-2\">\r\n <app-coupon-ec></app-coupon-ec>\r\n </div>\r\n <div class=\"d-flex mx-4 justify-content-between bordeBot2 mt-2\">\r\n <p class=\"fw-bold\">Descuentos:</p>\r\n <p>{{ (totalPromotionAmount$ | async) |ecCurrencySymbol }}</p>\r\n </div>\r\n\r\n <div class=\"d-flex mx-4 justify-content-between bordeBot2 pt-2\">\r\n <!-- @if(this._cartService.cart.source.value.couponCode){\r\n <a class=\"quitar-cupon text-dark\" role=\"button\"\r\n (click)=\"removeCoupon()\">(Quitar cup\u00F3n)</a>\r\n } -->\r\n </div>\r\n <div class=\"d-flex mx-4 justify-content-between mb-3 mt-2\">\r\n <p class=\"fw-bold h5\">TOTAL</p>\r\n <p class=\"fw-bold h5\">{{(totalAmount$ | async) | ecCurrencySymbol}}</p>\r\n </div>\r\n <div class=\"d-flex flex-column mx-4 justify-content-between mb-3\" data-bs-dismiss=\"offcanvas\" aria-label=\"Close\">\r\n <a [routerLink]=\"['/cart']\" class=\"btn btnPedido mb-2\">FINALIZAR PEDIDO</a>\r\n <a [routerLink]=\"['/collection']\" class=\"btn btnSeguir mb-3\">SEGUIR COMPRANDO</a>\r\n </div>\r\n\r\n\r\n } @else {\r\n <div class=\"container-lg px-lg-0 px-md-4 my-5\">\r\n <div class=\"row\">\r\n <div class=\"col-12\">\r\n <h5 class=\"text-center mb-sm-4 text-uppercase\"> \u00B7 Su carrito se\r\n encuentra vac\u00EDo \u00B7 </h5>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n}", styles: [""], dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "component", type: CouponEcComponent, selector: "app-coupon-ec" }, { kind: "component", type: CartItemEcComponent, selector: "app-cart-item-ec", inputs: ["item", "inSidebar"] }, { kind: "pipe", type: EcCurrencySymbolPipe, name: "ecCurrencySymbol" }] });
56
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: SidebarEcComponent, isStandalone: true, selector: "app-sidebar-ec", ngImport: i0, template: "<div class=\"nav nav-sidebar py-4 mx-0 position-relative text-center shadow-sm border-bottom d-flex justify-content-center\">\n <h2 class=\"row text-center\">Mi pedido</h2>\n <div class=\" me-3 closeCart position-absolute end-0\" data-bs-dismiss=\"offcanvas\" aria-label=\"Close\">\n <i class=\"fa fa-times-circle fs-5\" aria-hidden=\"true\"></i>\n </div>\n</div>\n\n\n@if(cartItems$ | async; as items){\n @if(items.length > 0){\n <!-- PRODUCTO -->\n <div class=\"d-flex flex-column mb-4 items border-bottom\">\n @for(item of items; track $index; let i = $index){\n <div class=\"productoCarrito mt-1 mb-2 w-100\">\n <app-cart-item-ec [inSidebar]=\"true\" [item]=\"item\"></app-cart-item-ec>\n </div>\n }\n </div>\n @if (priceVisibility.canShowPrices()) {\n <div class=\"d-flex mx-4 justify-content-between mt-2 \">\n <p class=\"fw-bold\">Subtotal</p>\n <p class=\"fw-700\">{{ (subTotalAmount$ | async) | ecCurrencySymbol}}</p>\n </div>\n <div class=\"mx-4 bordeBot py-2\">\n <app-coupon-ec></app-coupon-ec>\n </div>\n <div class=\"d-flex mx-4 justify-content-between bordeBot2 mt-2\">\n <p class=\"fw-bold\">Descuentos:</p>\n <p>{{ (totalPromotionAmount$ | async) |ecCurrencySymbol }}</p>\n </div>\n\n <div class=\"d-flex mx-4 justify-content-between bordeBot2 pt-2\">\n <!-- @if(this._cartService.cart.source.value.couponCode){\n <a class=\"quitar-cupon text-dark\" role=\"button\"\n (click)=\"removeCoupon()\">(Quitar cup\u00F3n)</a>\n } -->\n </div>\n <div class=\"d-flex mx-4 justify-content-between mb-3 mt-2\">\n <p class=\"fw-bold h5\">TOTAL</p>\n <p class=\"fw-bold h5\">{{(totalAmount$ | async) | ecCurrencySymbol}}</p>\n </div>\n }\n <div class=\"d-flex flex-column mx-4 justify-content-between mb-3\" data-bs-dismiss=\"offcanvas\" aria-label=\"Close\">\n <a [routerLink]=\"['/cart']\" class=\"btn btnPedido mb-2\">FINALIZAR PEDIDO</a>\n <a [routerLink]=\"['/collection']\" class=\"btn btnSeguir mb-3\">SEGUIR COMPRANDO</a>\n </div>\n\n\n } @else {\n <div class=\"container-lg px-lg-0 px-md-4 my-5\">\n <div class=\"row\">\n <div class=\"col-12\">\n <h5 class=\"text-center mb-sm-4 text-uppercase\"> \u00B7 Su carrito se\n encuentra vac\u00EDo \u00B7 </h5>\n </div>\n </div>\n </div>\n }\n}", styles: [""], dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "component", type: CouponEcComponent, selector: "app-coupon-ec" }, { kind: "component", type: CartItemEcComponent, selector: "app-cart-item-ec", inputs: ["item", "inSidebar"] }, { kind: "pipe", type: EcCurrencySymbolPipe, name: "ecCurrencySymbol" }] });
59
57
  }
60
58
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SidebarEcComponent, decorators: [{
61
59
  type: Component,
62
- args: [{ selector: 'app-sidebar-ec', standalone: true, imports: [RouterLink, AsyncPipe, CouponEcComponent, CartItemEcComponent, EcCurrencySymbolPipe, CouponEcComponent], template: "<div class=\"nav nav-sidebar py-4 mx-0 position-relative text-center shadow-sm border-bottom d-flex justify-content-center\">\r\n <h2 class=\"row text-center\">Mi pedido</h2>\r\n <div class=\" me-3 closeCart position-absolute end-0\" data-bs-dismiss=\"offcanvas\" aria-label=\"Close\">\r\n <i class=\"fa fa-times-circle fs-5\" aria-hidden=\"true\"></i>\r\n </div>\r\n</div>\r\n\r\n\r\n@if(cartItems$ | async; as items){\r\n @if(items.length > 0){\r\n <!-- PRODUCTO -->\r\n <div class=\"d-flex flex-column mb-4 items border-bottom\">\r\n @for(item of items; track $index; let i = $index){\r\n <div class=\"productoCarrito mt-1 mb-2 w-100\">\r\n <app-cart-item-ec [inSidebar]=\"true\" [item]=\"item\"></app-cart-item-ec>\r\n </div>\r\n }\r\n </div>\r\n <div class=\"d-flex mx-4 justify-content-between mt-2 \">\r\n <p class=\"fw-bold\">Subtotal</p>\r\n <p class=\"fw-700\">{{ (subTotalAmount$ | async) | ecCurrencySymbol}}</p>\r\n </div>\r\n <div class=\"mx-4 bordeBot py-2\">\r\n <app-coupon-ec></app-coupon-ec>\r\n </div>\r\n <div class=\"d-flex mx-4 justify-content-between bordeBot2 mt-2\">\r\n <p class=\"fw-bold\">Descuentos:</p>\r\n <p>{{ (totalPromotionAmount$ | async) |ecCurrencySymbol }}</p>\r\n </div>\r\n\r\n <div class=\"d-flex mx-4 justify-content-between bordeBot2 pt-2\">\r\n <!-- @if(this._cartService.cart.source.value.couponCode){\r\n <a class=\"quitar-cupon text-dark\" role=\"button\"\r\n (click)=\"removeCoupon()\">(Quitar cup\u00F3n)</a>\r\n } -->\r\n </div>\r\n <div class=\"d-flex mx-4 justify-content-between mb-3 mt-2\">\r\n <p class=\"fw-bold h5\">TOTAL</p>\r\n <p class=\"fw-bold h5\">{{(totalAmount$ | async) | ecCurrencySymbol}}</p>\r\n </div>\r\n <div class=\"d-flex flex-column mx-4 justify-content-between mb-3\" data-bs-dismiss=\"offcanvas\" aria-label=\"Close\">\r\n <a [routerLink]=\"['/cart']\" class=\"btn btnPedido mb-2\">FINALIZAR PEDIDO</a>\r\n <a [routerLink]=\"['/collection']\" class=\"btn btnSeguir mb-3\">SEGUIR COMPRANDO</a>\r\n </div>\r\n\r\n\r\n } @else {\r\n <div class=\"container-lg px-lg-0 px-md-4 my-5\">\r\n <div class=\"row\">\r\n <div class=\"col-12\">\r\n <h5 class=\"text-center mb-sm-4 text-uppercase\"> \u00B7 Su carrito se\r\n encuentra vac\u00EDo \u00B7 </h5>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n}" }]
60
+ args: [{ selector: 'app-sidebar-ec', standalone: true, imports: [RouterLink, AsyncPipe, CouponEcComponent, CartItemEcComponent, EcCurrencySymbolPipe, CouponEcComponent], template: "<div class=\"nav nav-sidebar py-4 mx-0 position-relative text-center shadow-sm border-bottom d-flex justify-content-center\">\n <h2 class=\"row text-center\">Mi pedido</h2>\n <div class=\" me-3 closeCart position-absolute end-0\" data-bs-dismiss=\"offcanvas\" aria-label=\"Close\">\n <i class=\"fa fa-times-circle fs-5\" aria-hidden=\"true\"></i>\n </div>\n</div>\n\n\n@if(cartItems$ | async; as items){\n @if(items.length > 0){\n <!-- PRODUCTO -->\n <div class=\"d-flex flex-column mb-4 items border-bottom\">\n @for(item of items; track $index; let i = $index){\n <div class=\"productoCarrito mt-1 mb-2 w-100\">\n <app-cart-item-ec [inSidebar]=\"true\" [item]=\"item\"></app-cart-item-ec>\n </div>\n }\n </div>\n @if (priceVisibility.canShowPrices()) {\n <div class=\"d-flex mx-4 justify-content-between mt-2 \">\n <p class=\"fw-bold\">Subtotal</p>\n <p class=\"fw-700\">{{ (subTotalAmount$ | async) | ecCurrencySymbol}}</p>\n </div>\n <div class=\"mx-4 bordeBot py-2\">\n <app-coupon-ec></app-coupon-ec>\n </div>\n <div class=\"d-flex mx-4 justify-content-between bordeBot2 mt-2\">\n <p class=\"fw-bold\">Descuentos:</p>\n <p>{{ (totalPromotionAmount$ | async) |ecCurrencySymbol }}</p>\n </div>\n\n <div class=\"d-flex mx-4 justify-content-between bordeBot2 pt-2\">\n <!-- @if(this._cartService.cart.source.value.couponCode){\n <a class=\"quitar-cupon text-dark\" role=\"button\"\n (click)=\"removeCoupon()\">(Quitar cup\u00F3n)</a>\n } -->\n </div>\n <div class=\"d-flex mx-4 justify-content-between mb-3 mt-2\">\n <p class=\"fw-bold h5\">TOTAL</p>\n <p class=\"fw-bold h5\">{{(totalAmount$ | async) | ecCurrencySymbol}}</p>\n </div>\n }\n <div class=\"d-flex flex-column mx-4 justify-content-between mb-3\" data-bs-dismiss=\"offcanvas\" aria-label=\"Close\">\n <a [routerLink]=\"['/cart']\" class=\"btn btnPedido mb-2\">FINALIZAR PEDIDO</a>\n <a [routerLink]=\"['/collection']\" class=\"btn btnSeguir mb-3\">SEGUIR COMPRANDO</a>\n </div>\n\n\n } @else {\n <div class=\"container-lg px-lg-0 px-md-4 my-5\">\n <div class=\"row\">\n <div class=\"col-12\">\n <h5 class=\"text-center mb-sm-4 text-uppercase\"> \u00B7 Su carrito se\n encuentra vac\u00EDo \u00B7 </h5>\n </div>\n </div>\n </div>\n }\n}" }]
63
61
  }] });
64
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZWJhci1lYy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lYXN5Y29tbWVyY2UtdjE4L3NyYy9saWIvZWMtY29tcG9uZW50cy9zaWRlYmFyLWVjL3NpZGViYXItZWMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLWNvbXBvbmVudHMvc2lkZWJhci1lYy9zaWRlYmFyLWVjLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWxELE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMzRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxTQUFTLEVBQWlCLE1BQU0saUJBQWlCLENBQUM7QUFDM0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFlBQVksQ0FBQzs7QUFTakQsTUFBTSxPQUFPLGtCQUFrQjtJQUVuQixZQUFZLEdBQWdCLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQTtJQUMvQyxPQUFPLEdBQXlCLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFBO0lBQzVELFlBQVksR0FBZ0IsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFBO0lBQy9DLE9BQU8sR0FBVyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUE7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bmVudCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFVzZXIgfSBmcm9tICcuLi8uLi9jbGFzc2VzJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UsIENhcnRTZXJ2aWNlLCBDaGFubmVsU2VydmljZSwgVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZWMtc2VydmljZXMnO1xyXG5pbXBvcnQgeyBDb3JlQ29uc3RhbnRzU2VydmljZSB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XHJcbmltcG9ydCB7IFJvdXRlciwgUm91dGVyTGluayB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IEFzeW5jUGlwZSwgVGl0bGVDYXNlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEVjQ3VycmVuY3lTeW1ib2xQaXBlIH0gZnJvbSAnLi4vLi4vZWMtcGlwZSc7XHJcbmltcG9ydCB7IENvdXBvbkVjQ29tcG9uZW50IH0gZnJvbSAnLi4vY291cG9uLWVjL2NvdXBvbi1lYy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDYXJ0SXRlbUVjQ29tcG9uZW50IH0gZnJvbSAnLi4vY2FydC1lYyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnYXBwLXNpZGViYXItZWMnLFxyXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICAgIGltcG9ydHM6IFtSb3V0ZXJMaW5rLCBBc3luY1BpcGUsIENvdXBvbkVjQ29tcG9uZW50LCBDYXJ0SXRlbUVjQ29tcG9uZW50LCBFY0N1cnJlbmN5U3ltYm9sUGlwZSwgQ291cG9uRWNDb21wb25lbnRdLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NpZGViYXItZWMuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmw6ICcuL3NpZGViYXItZWMuY29tcG9uZW50LnNjc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTaWRlYmFyRWNDb21wb25lbnQge1xyXG5cclxuICAgIHByaXZhdGUgX2NhcnRTZXJ2aWNlOiBDYXJ0U2VydmljZSA9IGluamVjdChDYXJ0U2VydmljZSlcclxuICAgIHByaXZhdGUgX2NvbnN0czogQ29yZUNvbnN0YW50c1NlcnZpY2UgPSBpbmplY3QoQ29yZUNvbnN0YW50c1NlcnZpY2UpXHJcbiAgICBwcml2YXRlIF9hdXRoU2VydmljZTogQXV0aFNlcnZpY2UgPSBpbmplY3QoQXV0aFNlcnZpY2UpXHJcbiAgICBwcml2YXRlIF9yb3V0ZXI6IFJvdXRlciA9IGluamVjdChSb3V0ZXIpXHJcbiAgICBwcml2YXRlIF90b2FzdHJTZXJ2aWNlOiBUb2FzdFNlcnZpY2UgPSBpbmplY3QoVG9hc3RTZXJ2aWNlKVxyXG4gICAgcHJpdmF0ZSBfY2hhbm5lbFNlcnZpY2U6IENoYW5uZWxTZXJ2aWNlID0gaW5qZWN0KENoYW5uZWxTZXJ2aWNlKVxyXG5cclxuICAgIHB1YmxpYyB1c2VyOiBVc2VyIHwgbnVsbCA9IG51bGxcclxuICAgIHB1YmxpYyBtZWRpYVVybDogc3RyaW5nID0gdGhpcy5fY29uc3RzLm1lZGlhVXJsKCk7XHJcbiAgICBwdWJsaWMgcHJvbW90aW9ucyA9IFtdO1xyXG4gICAgcHVibGljIHZhcmlhbnRzVG9TaG93OiBzdHJpbmdbXSA9IFsnVEFMTEUnLCAnQ09MT1InXTtcclxuICAgIHB1YmxpYyBoaWRlRGlzY291bnRzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBwdWJsaWMgaGlkZVRheGVzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBwdWJsaWMgY3JlZGl0QWNjb3VudFNob3dQcmljZXM6IGJvb2xlYW4gfCBudWxsID0gbnVsbDtcclxuXHJcbiAgICBwdWJsaWMgY2FydEl0ZW1zJCA9IHRoaXMuX2NhcnRTZXJ2aWNlLmNhcnRJdGVtcyQ7XHJcbiAgICBwdWJsaWMgc3ViVG90YWxBbW91bnQkID0gdGhpcy5fY2FydFNlcnZpY2UuZ2V0U3ViVG90YWxBbW91bnQoKTtcclxuXHRwdWJsaWMgdG90YWxQcm9tb3Rpb25BbW91bnQkID0gdGhpcy5fY2FydFNlcnZpY2UuZ2V0VG90YWxQcm9tb3Rpb25BbW91bnQoKTtcclxuXHRwdWJsaWMgdGF4ZXNBbW91bnQkID0gdGhpcy5fY2FydFNlcnZpY2UuZ2V0VGF4ZXNBbW91bnQoKTtcclxuXHRwdWJsaWMgdG90YWxBbW91bnQkID0gdGhpcy5fY2FydFNlcnZpY2UuZ2V0VG90YWxBbW91bnQoKTtcclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICB0aGlzLl9jYXJ0U2VydmljZS5wcm9tb3Rpb25zJC5zdWJzY3JpYmUocHJvbW90aW9ucyA9PiB0aGlzLnByb21vdGlvbnMgPSBwcm9tb3Rpb25zKTtcclxuICAgICAgICB0aGlzLl9hdXRoU2VydmljZS5nZXRVc2VyUHJvZmlsZSgpLnN1YnNjcmliZSh1ID0+IHtcclxuICAgICAgICAgICAgdGhpcy51c2VyID0gdVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5fY2hhbm5lbFNlcnZpY2UuY2hhbm5lbCQuc3Vic2NyaWJlKGNoYW5uZWwgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmhpZGVEaXNjb3VudHMgPSBjaGFubmVsPy5oaWRlRGlzY291bnRzID8/IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmhpZGVUYXhlcyA9IGNoYW5uZWw/LmhpZGVUYXhlcyA/PyBmYWxzZTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5fY2FydFNlcnZpY2Uuc2hvd1ByaWNlJC5zdWJzY3JpYmUoKHNob3dQcmljZSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmNyZWRpdEFjY291bnRTaG93UHJpY2VzID0gc2hvd1ByaWNlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgYWN0dWFsaXphckNhbnRpZGFkKF90MTM6IGFueSwgYXJnMT86IGFueSwgYXJnMj86IGFueSwgYXJnMz86IGFueSwgYXJnND86IGFueSkge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRWYXJpYW50cyhfdDg6IGFueSk6IGFueSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xyXG4gICAgfVxyXG4gICAgZ2V0VG90YWxBbW91bnQoKTogaW1wb3J0KFwicnhqc1wiKS5PYnNlcnZhYmxlPGFueT4gfCBQcm9taXNlPGFueT4gfCBpbXBvcnQoXCJyeGpzXCIpLlN1YnNjcmliYWJsZTxhbnk+IHtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XHJcbiAgICB9XHJcbiAgICByZW1vdmVDb3Vwb24oKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xyXG4gICAgfVxyXG5cclxuICAgIGRlbGV0ZUNhcnRJdGVtKF90ODogYW55LCBhcmcxOiBib29sZWFuKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xyXG4gICAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJuYXYgbmF2LXNpZGViYXIgcHktNCBteC0wIHBvc2l0aW9uLXJlbGF0aXZlIHRleHQtY2VudGVyIHNoYWRvdy1zbSBib3JkZXItYm90dG9tIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XHJcbiAgICA8aDIgY2xhc3M9XCJyb3cgdGV4dC1jZW50ZXJcIj5NaSBwZWRpZG88L2gyPlxyXG4gICAgPGRpdiBjbGFzcz1cIiBtZS0zIGNsb3NlQ2FydCBwb3NpdGlvbi1hYnNvbHV0ZSBlbmQtMFwiIGRhdGEtYnMtZGlzbWlzcz1cIm9mZmNhbnZhc1wiIGFyaWEtbGFiZWw9XCJDbG9zZVwiPlxyXG4gICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtdGltZXMtY2lyY2xlIGZzLTVcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG5cclxuQGlmKGNhcnRJdGVtcyQgfCBhc3luYzsgYXMgaXRlbXMpe1xyXG4gICAgQGlmKGl0ZW1zLmxlbmd0aCA+IDApe1xyXG4gICAgPCEtLSBQUk9EVUNUTyAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gbWItNCBpdGVtcyBib3JkZXItYm90dG9tXCI+XHJcbiAgICAgICAgQGZvcihpdGVtIG9mIGl0ZW1zOyB0cmFjayAkaW5kZXg7IGxldCBpID0gJGluZGV4KXtcclxuICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZHVjdG9DYXJyaXRvIG10LTEgbWItMiB3LTEwMFwiPlxyXG4gICAgICAgICAgICA8YXBwLWNhcnQtaXRlbS1lYyBbaW5TaWRlYmFyXT1cInRydWVcIiBbaXRlbV09XCJpdGVtXCI+PC9hcHAtY2FydC1pdGVtLWVjPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIH1cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBteC00IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIG10LTIgXCI+XHJcbiAgICAgICAgPHAgY2xhc3M9XCJmdy1ib2xkXCI+U3VidG90YWw8L3A+XHJcbiAgICAgICAgPHAgY2xhc3M9XCJmdy03MDBcIj57eyAoc3ViVG90YWxBbW91bnQkIHwgYXN5bmMpIHwgZWNDdXJyZW5jeVN5bWJvbH19PC9wPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwibXgtNCBib3JkZUJvdCBweS0yXCI+XHJcbiAgICAgICAgPGFwcC1jb3Vwb24tZWM+PC9hcHAtY291cG9uLWVjPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IG14LTQganVzdGlmeS1jb250ZW50LWJldHdlZW4gYm9yZGVCb3QyIG10LTJcIj5cclxuICAgICAgICA8cCBjbGFzcz1cImZ3LWJvbGRcIj5EZXNjdWVudG9zOjwvcD5cclxuICAgICAgICA8cD57eyAodG90YWxQcm9tb3Rpb25BbW91bnQkIHwgYXN5bmMpIHxlY0N1cnJlbmN5U3ltYm9sIH19PC9wPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBteC00IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGJvcmRlQm90MiBwdC0yXCI+XHJcbiAgICAgICAgPCEtLSAgQGlmKHRoaXMuX2NhcnRTZXJ2aWNlLmNhcnQuc291cmNlLnZhbHVlLmNvdXBvbkNvZGUpe1xyXG4gICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJxdWl0YXItY3Vwb24gdGV4dC1kYXJrXCIgcm9sZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlQ291cG9uKClcIj4oUXVpdGFyIGN1cMOzbik8L2E+XHJcbiAgICAgICAgICAgIH0gLS0+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggbXgtNCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtYi0zIG10LTJcIj5cclxuICAgICAgICA8cCBjbGFzcz1cImZ3LWJvbGQgaDVcIj5UT1RBTDwvcD5cclxuICAgICA8cCBjbGFzcz1cImZ3LWJvbGQgaDVcIj57eyh0b3RhbEFtb3VudCQgfCBhc3luYykgfCBlY0N1cnJlbmN5U3ltYm9sfX08L3A+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gbXgtNCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtYi0zXCIgZGF0YS1icy1kaXNtaXNzPVwib2ZmY2FudmFzXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCI+XHJcbiAgICAgICAgPGEgW3JvdXRlckxpbmtdPVwiWycvY2FydCddXCIgY2xhc3M9XCJidG4gYnRuUGVkaWRvIG1iLTJcIj5GSU5BTElaQVIgUEVESURPPC9hPlxyXG4gICAgICAgIDxhIFtyb3V0ZXJMaW5rXT1cIlsnL2NvbGxlY3Rpb24nXVwiIGNsYXNzPVwiYnRuIGJ0blNlZ3VpciBtYi0zXCI+U0VHVUlSIENPTVBSQU5ETzwvYT5cclxuICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICB9IEBlbHNlIHtcclxuICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXItbGcgcHgtbGctMCBweC1tZC00IG15LTVcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTJcIj5cclxuICAgICAgICAgICAgICAgIDxoNSBjbGFzcz1cInRleHQtY2VudGVyIG1iLXNtLTQgdGV4dC11cHBlcmNhc2VcIj4gwrcgU3UgY2Fycml0byBzZVxyXG4gICAgICAgICAgICAgICAgICAgIGVuY3VlbnRyYSB2YWPDrW8gwrcgPC9oNT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIH1cclxufSJdfQ==
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZWJhci1lYy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lYXN5Y29tbWVyY2UtdjE4L3NyYy9saWIvZWMtY29tcG9uZW50cy9zaWRlYmFyLWVjL3NpZGViYXItZWMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLWNvbXBvbmVudHMvc2lkZWJhci1lYy9zaWRlYmFyLWVjLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWxELE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMzRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNwRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxTQUFTLEVBQWlCLE1BQU0saUJBQWlCLENBQUM7QUFDM0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFlBQVksQ0FBQzs7QUFTakQsTUFBTSxPQUFPLGtCQUFrQjtJQUVuQixZQUFZLEdBQWdCLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQTtJQUMvQyxPQUFPLEdBQXlCLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFBO0lBQzVELFlBQVksR0FBZ0IsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFBO0lBQy9DLE9BQU8sR0FBVyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDaEMsY0FBYyxHQUFpQixNQUFNLENBQUMsWUFBWSxDQUFDLENBQUE7SUFDbkQsZUFBZSxHQUFtQixNQUFNLENBQUMsY0FBYyxDQUFDLENBQUE7SUFDaEQsZUFBZSxHQUFHLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0lBRTFELElBQUksR0FBZ0IsSUFBSSxDQUFBO0lBQ3hCLFFBQVEsR0FBVyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNDLFVBQVUsR0FBRyxFQUFFLENBQUM7SUFDaEIsY0FBYyxHQUFhLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzlDLGFBQWEsR0FBWSxLQUFLLENBQUM7SUFDL0IsU0FBUyxHQUFZLEtBQUssQ0FBQztJQUUzQixVQUFVLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUM7SUFDMUMsZUFBZSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUMzRCxxQkFBcUIsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLHVCQUF1QixFQUFFLENBQUM7SUFDcEUsWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDbEQsWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxFQUFFLENBQUM7SUFFdEQsUUFBUTtRQUNKLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDLENBQUM7UUFDcEYsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDN0MsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUE7UUFDakIsQ0FBQyxDQUFDLENBQUE7UUFDRixJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDOUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxPQUFPLEVBQUUsYUFBYSxJQUFJLEtBQUssQ0FBQztZQUNyRCxJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sRUFBRSxTQUFTLElBQUksS0FBSyxDQUFDO1FBQ2pELENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUNELGtCQUFrQixDQUFDLElBQVMsRUFBRSxJQUFVLEVBQUUsSUFBVSxFQUFFLElBQVUsRUFBRSxJQUFVO1FBQ3hFLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsV0FBVyxDQUFDLEdBQVE7UUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFDRCxjQUFjO1FBQ1YsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFDRCxZQUFZO1FBQ1IsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxjQUFjLENBQUMsR0FBUSxFQUFFLElBQWE7UUFDbEMsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQy9DLENBQUM7d0dBakRRLGtCQUFrQjs0RkFBbEIsa0JBQWtCLDBFQ2xCL0IsMGhGQTBEQywwREQ1Q2EsVUFBVSwrTkFBRSxTQUFTLDhDQUFFLGlCQUFpQiwwREFBRSxtQkFBbUIsdUZBQUUsb0JBQW9COzs0RkFJcEYsa0JBQWtCO2tCQVA5QixTQUFTOytCQUNJLGdCQUFnQixjQUNkLElBQUksV0FDUCxDQUFDLFVBQVUsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQUUsb0JBQW9CLEVBQUUsaUJBQWlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVXNlciB9IGZyb20gJy4uLy4uL2NsYXNzZXMnO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UsIENhcnRTZXJ2aWNlLCBDaGFubmVsU2VydmljZSwgVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZWMtc2VydmljZXMnO1xuaW1wb3J0IHsgUHJpY2VWaXNpYmlsaXR5U2VydmljZSB9IGZyb20gJy4uLy4uL2VjLXNlcnZpY2VzL3ByaWNlLXZpc2liaWxpdHkuc2VydmljZSc7XG5pbXBvcnQgeyBDb3JlQ29uc3RhbnRzU2VydmljZSB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBSb3V0ZXIsIFJvdXRlckxpbmsgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQXN5bmNQaXBlLCBUaXRsZUNhc2VQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEVjQ3VycmVuY3lTeW1ib2xQaXBlIH0gZnJvbSAnLi4vLi4vZWMtcGlwZSc7XG5pbXBvcnQgeyBDb3Vwb25FY0NvbXBvbmVudCB9IGZyb20gJy4uL2NvdXBvbi1lYy9jb3Vwb24tZWMuY29tcG9uZW50JztcbmltcG9ydCB7IENhcnRJdGVtRWNDb21wb25lbnQgfSBmcm9tICcuLi9jYXJ0LWVjJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdhcHAtc2lkZWJhci1lYycsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbUm91dGVyTGluaywgQXN5bmNQaXBlLCBDb3Vwb25FY0NvbXBvbmVudCwgQ2FydEl0ZW1FY0NvbXBvbmVudCwgRWNDdXJyZW5jeVN5bWJvbFBpcGUsIENvdXBvbkVjQ29tcG9uZW50XSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2lkZWJhci1lYy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmw6ICcuL3NpZGViYXItZWMuY29tcG9uZW50LnNjc3MnXG59KVxuZXhwb3J0IGNsYXNzIFNpZGViYXJFY0NvbXBvbmVudCB7XG5cbiAgICBwcml2YXRlIF9jYXJ0U2VydmljZTogQ2FydFNlcnZpY2UgPSBpbmplY3QoQ2FydFNlcnZpY2UpXG4gICAgcHJpdmF0ZSBfY29uc3RzOiBDb3JlQ29uc3RhbnRzU2VydmljZSA9IGluamVjdChDb3JlQ29uc3RhbnRzU2VydmljZSlcbiAgICBwcml2YXRlIF9hdXRoU2VydmljZTogQXV0aFNlcnZpY2UgPSBpbmplY3QoQXV0aFNlcnZpY2UpXG4gICAgcHJpdmF0ZSBfcm91dGVyOiBSb3V0ZXIgPSBpbmplY3QoUm91dGVyKVxuICAgIHByaXZhdGUgX3RvYXN0clNlcnZpY2U6IFRvYXN0U2VydmljZSA9IGluamVjdChUb2FzdFNlcnZpY2UpXG4gICAgcHJpdmF0ZSBfY2hhbm5lbFNlcnZpY2U6IENoYW5uZWxTZXJ2aWNlID0gaW5qZWN0KENoYW5uZWxTZXJ2aWNlKVxuICAgIHB1YmxpYyByZWFkb25seSBwcmljZVZpc2liaWxpdHkgPSBpbmplY3QoUHJpY2VWaXNpYmlsaXR5U2VydmljZSk7XG5cbiAgICBwdWJsaWMgdXNlcjogVXNlciB8IG51bGwgPSBudWxsXG4gICAgcHVibGljIG1lZGlhVXJsOiBzdHJpbmcgPSB0aGlzLl9jb25zdHMubWVkaWFVcmwoKTtcbiAgICBwdWJsaWMgcHJvbW90aW9ucyA9IFtdO1xuICAgIHB1YmxpYyB2YXJpYW50c1RvU2hvdzogc3RyaW5nW10gPSBbJ1RBTExFJywgJ0NPTE9SJ107XG4gICAgcHVibGljIGhpZGVEaXNjb3VudHM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBwdWJsaWMgaGlkZVRheGVzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBwdWJsaWMgY2FydEl0ZW1zJCA9IHRoaXMuX2NhcnRTZXJ2aWNlLmNhcnRJdGVtcyQ7XG4gICAgcHVibGljIHN1YlRvdGFsQW1vdW50JCA9IHRoaXMuX2NhcnRTZXJ2aWNlLmdldFN1YlRvdGFsQW1vdW50KCk7XG5cdHB1YmxpYyB0b3RhbFByb21vdGlvbkFtb3VudCQgPSB0aGlzLl9jYXJ0U2VydmljZS5nZXRUb3RhbFByb21vdGlvbkFtb3VudCgpO1xuXHRwdWJsaWMgdGF4ZXNBbW91bnQkID0gdGhpcy5fY2FydFNlcnZpY2UuZ2V0VGF4ZXNBbW91bnQoKTtcblx0cHVibGljIHRvdGFsQW1vdW50JCA9IHRoaXMuX2NhcnRTZXJ2aWNlLmdldFRvdGFsQW1vdW50KCk7XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5fY2FydFNlcnZpY2UucHJvbW90aW9ucyQuc3Vic2NyaWJlKHByb21vdGlvbnMgPT4gdGhpcy5wcm9tb3Rpb25zID0gcHJvbW90aW9ucyk7XG4gICAgICAgIHRoaXMuX2F1dGhTZXJ2aWNlLmdldFVzZXJQcm9maWxlKCkuc3Vic2NyaWJlKHUgPT4ge1xuICAgICAgICAgICAgdGhpcy51c2VyID0gdVxuICAgICAgICB9KVxuICAgICAgICB0aGlzLl9jaGFubmVsU2VydmljZS5jaGFubmVsJC5zdWJzY3JpYmUoY2hhbm5lbCA9PiB7XG4gICAgICAgICAgICB0aGlzLmhpZGVEaXNjb3VudHMgPSBjaGFubmVsPy5oaWRlRGlzY291bnRzID8/IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5oaWRlVGF4ZXMgPSBjaGFubmVsPy5oaWRlVGF4ZXMgPz8gZmFsc2U7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBhY3R1YWxpemFyQ2FudGlkYWQoX3QxMzogYW55LCBhcmcxPzogYW55LCBhcmcyPzogYW55LCBhcmczPzogYW55LCBhcmc0PzogYW55KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgICB9XG5cbiAgICBnZXRWYXJpYW50cyhfdDg6IGFueSk6IGFueSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgICB9XG4gICAgZ2V0VG90YWxBbW91bnQoKTogaW1wb3J0KFwicnhqc1wiKS5PYnNlcnZhYmxlPGFueT4gfCBQcm9taXNlPGFueT4gfCBpbXBvcnQoXCJyeGpzXCIpLlN1YnNjcmliYWJsZTxhbnk+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICAgIH1cbiAgICByZW1vdmVDb3Vwb24oKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgICB9XG5cbiAgICBkZWxldGVDYXJ0SXRlbShfdDg6IGFueSwgYXJnMTogYm9vbGVhbikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIm5hdiBuYXYtc2lkZWJhciBweS00IG14LTAgcG9zaXRpb24tcmVsYXRpdmUgdGV4dC1jZW50ZXIgc2hhZG93LXNtIGJvcmRlci1ib3R0b20gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cbiAgICA8aDIgY2xhc3M9XCJyb3cgdGV4dC1jZW50ZXJcIj5NaSBwZWRpZG88L2gyPlxuICAgIDxkaXYgY2xhc3M9XCIgbWUtMyBjbG9zZUNhcnQgcG9zaXRpb24tYWJzb2x1dGUgZW5kLTBcIiBkYXRhLWJzLWRpc21pc3M9XCJvZmZjYW52YXNcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIj5cbiAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS10aW1lcy1jaXJjbGUgZnMtNVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuXG5cbkBpZihjYXJ0SXRlbXMkIHwgYXN5bmM7IGFzIGl0ZW1zKXtcbiAgICBAaWYoaXRlbXMubGVuZ3RoID4gMCl7XG4gICAgPCEtLSBQUk9EVUNUTyAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIG1iLTQgaXRlbXMgYm9yZGVyLWJvdHRvbVwiPlxuICAgICAgICBAZm9yKGl0ZW0gb2YgaXRlbXM7IHRyYWNrICRpbmRleDsgbGV0IGkgPSAkaW5kZXgpe1xuICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZHVjdG9DYXJyaXRvIG10LTEgbWItMiB3LTEwMFwiPlxuICAgICAgICAgICAgPGFwcC1jYXJ0LWl0ZW0tZWMgW2luU2lkZWJhcl09XCJ0cnVlXCIgW2l0ZW1dPVwiaXRlbVwiPjwvYXBwLWNhcnQtaXRlbS1lYz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICA8L2Rpdj5cbiAgICBAaWYgKHByaWNlVmlzaWJpbGl0eS5jYW5TaG93UHJpY2VzKCkpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBteC00IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIG10LTIgXCI+XG4gICAgICAgICAgICA8cCBjbGFzcz1cImZ3LWJvbGRcIj5TdWJ0b3RhbDwvcD5cbiAgICAgICAgICAgIDxwIGNsYXNzPVwiZnctNzAwXCI+e3sgKHN1YlRvdGFsQW1vdW50JCB8IGFzeW5jKSB8IGVjQ3VycmVuY3lTeW1ib2x9fTwvcD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJteC00IGJvcmRlQm90IHB5LTJcIj5cbiAgICAgICAgICAgIDxhcHAtY291cG9uLWVjPjwvYXBwLWNvdXBvbi1lYz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggbXgtNCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBib3JkZUJvdDIgbXQtMlwiPlxuICAgICAgICAgICAgPHAgY2xhc3M9XCJmdy1ib2xkXCI+RGVzY3VlbnRvczo8L3A+XG4gICAgICAgICAgICA8cD57eyAodG90YWxQcm9tb3Rpb25BbW91bnQkIHwgYXN5bmMpIHxlY0N1cnJlbmN5U3ltYm9sIH19PC9wPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IG14LTQganVzdGlmeS1jb250ZW50LWJldHdlZW4gYm9yZGVCb3QyIHB0LTJcIj5cbiAgICAgICAgICAgIDwhLS0gIEBpZih0aGlzLl9jYXJ0U2VydmljZS5jYXJ0LnNvdXJjZS52YWx1ZS5jb3Vwb25Db2RlKXtcbiAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJxdWl0YXItY3Vwb24gdGV4dC1kYXJrXCIgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVDb3Vwb24oKVwiPihRdWl0YXIgY3Vww7NuKTwvYT5cbiAgICAgICAgICAgICAgICB9IC0tPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBteC00IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIG1iLTMgbXQtMlwiPlxuICAgICAgICAgICAgPHAgY2xhc3M9XCJmdy1ib2xkIGg1XCI+VE9UQUw8L3A+XG4gICAgICAgICA8cCBjbGFzcz1cImZ3LWJvbGQgaDVcIj57eyh0b3RhbEFtb3VudCQgfCBhc3luYykgfCBlY0N1cnJlbmN5U3ltYm9sfX08L3A+XG4gICAgICAgIDwvZGl2PlxuICAgIH1cbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIG14LTQganVzdGlmeS1jb250ZW50LWJldHdlZW4gbWItM1wiIGRhdGEtYnMtZGlzbWlzcz1cIm9mZmNhbnZhc1wiIGFyaWEtbGFiZWw9XCJDbG9zZVwiPlxuICAgICAgICA8YSBbcm91dGVyTGlua109XCJbJy9jYXJ0J11cIiBjbGFzcz1cImJ0biBidG5QZWRpZG8gbWItMlwiPkZJTkFMSVpBUiBQRURJRE88L2E+XG4gICAgICAgIDxhIFtyb3V0ZXJMaW5rXT1cIlsnL2NvbGxlY3Rpb24nXVwiIGNsYXNzPVwiYnRuIGJ0blNlZ3VpciBtYi0zXCI+U0VHVUlSIENPTVBSQU5ETzwvYT5cbiAgICA8L2Rpdj5cblxuXG4gICAgfSBAZWxzZSB7XG4gICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci1sZyBweC1sZy0wIHB4LW1kLTQgbXktNVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCI+XG4gICAgICAgICAgICAgICAgPGg1IGNsYXNzPVwidGV4dC1jZW50ZXIgbWItc20tNCB0ZXh0LXVwcGVyY2FzZVwiPiDCtyBTdSBjYXJyaXRvIHNlXG4gICAgICAgICAgICAgICAgICAgIGVuY3VlbnRyYSB2YWPDrW8gwrcgPC9oNT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICB9XG59Il19
@@ -121,11 +121,13 @@ export class StoresEcComponent extends ComponentHelper {
121
121
  });
122
122
  const center = bounds.getCenter();
123
123
  const style = [{ "elementType": "geometry", "stylers": [{ "color": "#212121" }] }, { "elementType": "labels.icon", "stylers": [{ "visibility": "off" }] }, { "elementType": "labels.text.fill", "stylers": [{ "color": "#757575" }] }, { "elementType": "labels.text.stroke", "stylers": [{ "color": "#212121" }] }, { "featureType": "administrative", "elementType": "geometry", "stylers": [{ "color": "#757575" }] }, { "featureType": "administrative.country", "elementType": "labels.text.fill", "stylers": [{ "color": "#9e9e9e" }] }, { "featureType": "administrative.locality", "elementType": "labels.text.fill", "stylers": [{ "color": "#bdbdbd" }] }, { "featureType": "poi", "elementType": "labels.text.fill", "stylers": [{ "color": "#757575" }] }, { "featureType": "poi.business", "stylers": [{ "visibility": "off" }] }, { "featureType": "poi.park", "elementType": "geometry", "stylers": [{ "color": "#181818" }] }, { "featureType": "poi.park", "elementType": "labels.text.fill", "stylers": [{ "color": "#616161" }] }, { "featureType": "poi.park", "elementType": "labels.text.stroke", "stylers": [{ "color": "#1b1b1b" }] }, { "featureType": "road", "elementType": "geometry.fill", "stylers": [{ "color": "#2c2c2c" }] }, { "featureType": "road", "elementType": "labels.icon", "stylers": [{ "visibility": "off" }] }, { "featureType": "road", "elementType": "labels.text.fill", "stylers": [{ "color": "#8a8a8a" }] }, { "featureType": "road.arterial", "elementType": "geometry", "stylers": [{ "color": "#373737" }] }, { "featureType": "road.arterial", "elementType": "labels", "stylers": [{ "visibility": "off" }] }, { "featureType": "road.highway", "elementType": "geometry", "stylers": [{ "color": "#3c3c3c" }] }, { "featureType": "road.highway", "elementType": "labels", "stylers": [{ "visibility": "off" }] }, { "featureType": "road.highway.controlled_access", "elementType": "geometry", "stylers": [{ "color": "#4e4e4e" }] }, { "featureType": "road.local", "stylers": [{ "visibility": "off" }] }, { "featureType": "road.local", "elementType": "labels.text.fill", "stylers": [{ "color": "#616161" }] }, { "featureType": "transit", "stylers": [{ "visibility": "off" }] }, { "featureType": "transit", "elementType": "labels.text.fill", "stylers": [{ "color": "#757575" }] }, { "featureType": "water", "elementType": "geometry", "stylers": [{ "color": "#000000" }] }, { "featureType": "water", "elementType": "labels.text.fill", "stylers": [{ "color": "#3d3d3d" }] }];
124
- this.map = new google.maps.Map(document.getElementById('map'), {
125
- zoom: 12,
126
- center: center, // Centrar el mapa en el centro calculado
127
- styles: style // Aplica los estilos personalizados
128
- });
124
+ if (typeof document !== 'undefined' && typeof window !== 'undefined') {
125
+ this.map = new google.maps.Map(document.getElementById('map'), {
126
+ zoom: 12,
127
+ center: center, // Centrar el mapa en el centro calculado
128
+ styles: style // Aplica los estilos personalizados
129
+ });
130
+ }
129
131
  this.locations.forEach(location => {
130
132
  const marker = new google.maps.Marker({
131
133
  position: { lat: location.lat, lng: location.lng },
@@ -139,8 +141,12 @@ export class StoresEcComponent extends ComponentHelper {
139
141
  marker.set('id', location.id); // Associate marker with its ID
140
142
  this.markers.push(marker);
141
143
  marker.addListener('click', () => {
142
- const elemento = document.getElementById(location.id);
143
- const contenedor = document.getElementById('home');
144
+ let elemento = null;
145
+ let contenedor = null;
146
+ if (typeof document !== 'undefined') {
147
+ elemento = document.getElementById(location.id);
148
+ contenedor = document.getElementById('home');
149
+ }
144
150
  if (elemento && contenedor) {
145
151
  contenedor.scrollTo({
146
152
  top: elemento.offsetTop - contenedor.offsetTop + contenedor.scrollTop,
@@ -168,7 +174,10 @@ export class StoresEcComponent extends ComponentHelper {
168
174
  showStoreOnMap(storeCode) {
169
175
  this.stopBounce();
170
176
  const marker = this.markers.find(m => m.get('id') === storeCode);
171
- const elemento = document.getElementById(storeCode);
177
+ let elemento = null;
178
+ if (typeof document !== 'undefined') {
179
+ elemento = document.getElementById(storeCode);
180
+ }
172
181
  if (this.ultimoElementoSeleccionado !== null) {
173
182
  // Quitar la clase del último elemento seleccionado
174
183
  this.ultimoElementoSeleccionado.classList.remove('selected');
@@ -188,10 +197,10 @@ export class StoresEcComponent extends ComponentHelper {
188
197
  });
189
198
  }
190
199
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StoresEcComponent, deps: [{ token: i1.StoresService }, { token: i2.CoreConstantsService }, { token: i3.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component });
191
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: StoresEcComponent, isStandalone: true, selector: "app-store-ec", usesInheritance: true, ngImport: i0, template: "<!-- <div class=\"row w-100 mx-auto my-4 px-3 bb-s bt-md-s py-1\">\r\n <strong>{{ 'stores' | translate }}</strong>\r\n</div>\r\n@if(stores){\r\n<div class=\"row\">\r\n <div class=\"col-12 col-md-3 order-1 order-md-1\">\r\n <div class=\"row\">\r\n <div class=\"form-group w-100\">\r\n <select (change)=\"selectChange($event.target.value)\" class=\"rounded-0 form-control form-control-sm\"\r\n id=\"exampleFormControlSelect1\">\r\n <option selected [value]=\"''\">Seleccione provincia</option>\r\n <option [value]=\"item.code\" *ngFor=\"let item of getProvices(stores)\"> {{item.name}}\r\n </option>\r\n </select>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-12 col-md-3 order-3 order-md-2\">\r\n <div class=\"container-fluid scrolleable\" *ngIf=\"filterStores && filterStores.length\">\r\n <div class=\"row mb-1\" *ngFor=\"let store of filterStores; let i = index\">\r\n <div class=\"col-12\">\r\n <h6 class=\"\"><strong>{{ store.name }}</strong></h6>\r\n <label>{{ store.address }}</label>\r\n <label>{{ store.phone }}</label>\r\n <div [innerHtml]=\"store.note\"></div>\r\n <div class=\"text-right\">\r\n\r\n <a *ngIf=\"store.urlMap\" (click)=\"updateMap (store.urlMap)\" class=\"custom-a\">Ver mapa</a>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-12 col-md-6 order-2 order-md-3 my-4 mt-md-0\">\r\n\r\n <iframe id=\"map-iframe\" [src]=\"urlmap\" frameborder=\"0\"></iframe>\r\n </div>\r\n</div>\r\n}@else {\r\n<div class=\"d-flex flex-row justify-content-center my-5 align-items-center alto-total\">\r\n <h5 class=\"text-center\">{{ 'no-stores' | translate }}</h5>\r\n</div>\r\n}\r\n\r\n\r\n\r\n<ng-template #loading>\r\n <div class=\"container\">\r\n <div class=\"row\">\r\n <div class=\"col-12 align-items-center\">\r\n <div class=\"d-flex flex-column justify-content-center align-items-center my-5\">\r\n <app-loading-full-ec></app-loading-full-ec>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-template> -->", styles: [".scrolleable{height:70vh;overflow:auto}@media screen and (max-width: 768px){.scrolleable{height:auto}}.background-white{background-color:#fff}.alto-total{height:60vh}.custom-a{color:#000}#map-iframe{width:100%;border:0;height:100%}@media screen and (max-width: 425px){#map-iframe{height:400px}}\n"], dependencies: [{ kind: "ngmodule", type: TranslateModule }] });
200
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: StoresEcComponent, isStandalone: true, selector: "app-store-ec", usesInheritance: true, ngImport: i0, template: "<!-- <div class=\"row w-100 mx-auto my-4 px-3 bb-s bt-md-s py-1\">\n <strong>{{ 'stores' | translate }}</strong>\n</div>\n@if(stores){\n<div class=\"row\">\n <div class=\"col-12 col-md-3 order-1 order-md-1\">\n <div class=\"row\">\n <div class=\"form-group w-100\">\n <select (change)=\"selectChange($event.target.value)\" class=\"rounded-0 form-control form-control-sm\"\n id=\"exampleFormControlSelect1\">\n <option selected [value]=\"''\">Seleccione provincia</option>\n <option [value]=\"item.code\" *ngFor=\"let item of getProvices(stores)\"> {{item.name}}\n </option>\n </select>\n </div>\n </div>\n </div>\n <div class=\"col-12 col-md-3 order-3 order-md-2\">\n <div class=\"container-fluid scrolleable\" *ngIf=\"filterStores && filterStores.length\">\n <div class=\"row mb-1\" *ngFor=\"let store of filterStores; let i = index\">\n <div class=\"col-12\">\n <h6 class=\"\"><strong>{{ store.name }}</strong></h6>\n <label>{{ store.address }}</label>\n <label>{{ store.phone }}</label>\n <div [innerHtml]=\"store.note\"></div>\n <div class=\"text-right\">\n\n <a *ngIf=\"store.urlMap\" (click)=\"updateMap (store.urlMap)\" class=\"custom-a\">Ver mapa</a>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"col-12 col-md-6 order-2 order-md-3 my-4 mt-md-0\">\n\n <iframe id=\"map-iframe\" [src]=\"urlmap\" frameborder=\"0\"></iframe>\n </div>\n</div>\n}@else {\n<div class=\"d-flex flex-row justify-content-center my-5 align-items-center alto-total\">\n <h5 class=\"text-center\">{{ 'no-stores' | translate }}</h5>\n</div>\n}\n\n\n\n<ng-template #loading>\n <div class=\"container\">\n <div class=\"row\">\n <div class=\"col-12 align-items-center\">\n <div class=\"d-flex flex-column justify-content-center align-items-center my-5\">\n <app-loading-full-ec></app-loading-full-ec>\n </div>\n </div>\n </div>\n </div>\n</ng-template> -->", styles: [".scrolleable{height:70vh;overflow:auto}@media screen and (max-width: 768px){.scrolleable{height:auto}}.background-white{background-color:#fff}.alto-total{height:60vh}.custom-a{color:#000}#map-iframe{width:100%;border:0;height:100%}@media screen and (max-width: 425px){#map-iframe{height:400px}}\n"], dependencies: [{ kind: "ngmodule", type: TranslateModule }] });
192
201
  }
193
202
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StoresEcComponent, decorators: [{
194
203
  type: Component,
195
- args: [{ selector: 'app-store-ec', standalone: true, imports: [TranslateModule], template: "<!-- <div class=\"row w-100 mx-auto my-4 px-3 bb-s bt-md-s py-1\">\r\n <strong>{{ 'stores' | translate }}</strong>\r\n</div>\r\n@if(stores){\r\n<div class=\"row\">\r\n <div class=\"col-12 col-md-3 order-1 order-md-1\">\r\n <div class=\"row\">\r\n <div class=\"form-group w-100\">\r\n <select (change)=\"selectChange($event.target.value)\" class=\"rounded-0 form-control form-control-sm\"\r\n id=\"exampleFormControlSelect1\">\r\n <option selected [value]=\"''\">Seleccione provincia</option>\r\n <option [value]=\"item.code\" *ngFor=\"let item of getProvices(stores)\"> {{item.name}}\r\n </option>\r\n </select>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-12 col-md-3 order-3 order-md-2\">\r\n <div class=\"container-fluid scrolleable\" *ngIf=\"filterStores && filterStores.length\">\r\n <div class=\"row mb-1\" *ngFor=\"let store of filterStores; let i = index\">\r\n <div class=\"col-12\">\r\n <h6 class=\"\"><strong>{{ store.name }}</strong></h6>\r\n <label>{{ store.address }}</label>\r\n <label>{{ store.phone }}</label>\r\n <div [innerHtml]=\"store.note\"></div>\r\n <div class=\"text-right\">\r\n\r\n <a *ngIf=\"store.urlMap\" (click)=\"updateMap (store.urlMap)\" class=\"custom-a\">Ver mapa</a>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-12 col-md-6 order-2 order-md-3 my-4 mt-md-0\">\r\n\r\n <iframe id=\"map-iframe\" [src]=\"urlmap\" frameborder=\"0\"></iframe>\r\n </div>\r\n</div>\r\n}@else {\r\n<div class=\"d-flex flex-row justify-content-center my-5 align-items-center alto-total\">\r\n <h5 class=\"text-center\">{{ 'no-stores' | translate }}</h5>\r\n</div>\r\n}\r\n\r\n\r\n\r\n<ng-template #loading>\r\n <div class=\"container\">\r\n <div class=\"row\">\r\n <div class=\"col-12 align-items-center\">\r\n <div class=\"d-flex flex-column justify-content-center align-items-center my-5\">\r\n <app-loading-full-ec></app-loading-full-ec>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-template> -->", styles: [".scrolleable{height:70vh;overflow:auto}@media screen and (max-width: 768px){.scrolleable{height:auto}}.background-white{background-color:#fff}.alto-total{height:60vh}.custom-a{color:#000}#map-iframe{width:100%;border:0;height:100%}@media screen and (max-width: 425px){#map-iframe{height:400px}}\n"] }]
204
+ args: [{ selector: 'app-store-ec', standalone: true, imports: [TranslateModule], template: "<!-- <div class=\"row w-100 mx-auto my-4 px-3 bb-s bt-md-s py-1\">\n <strong>{{ 'stores' | translate }}</strong>\n</div>\n@if(stores){\n<div class=\"row\">\n <div class=\"col-12 col-md-3 order-1 order-md-1\">\n <div class=\"row\">\n <div class=\"form-group w-100\">\n <select (change)=\"selectChange($event.target.value)\" class=\"rounded-0 form-control form-control-sm\"\n id=\"exampleFormControlSelect1\">\n <option selected [value]=\"''\">Seleccione provincia</option>\n <option [value]=\"item.code\" *ngFor=\"let item of getProvices(stores)\"> {{item.name}}\n </option>\n </select>\n </div>\n </div>\n </div>\n <div class=\"col-12 col-md-3 order-3 order-md-2\">\n <div class=\"container-fluid scrolleable\" *ngIf=\"filterStores && filterStores.length\">\n <div class=\"row mb-1\" *ngFor=\"let store of filterStores; let i = index\">\n <div class=\"col-12\">\n <h6 class=\"\"><strong>{{ store.name }}</strong></h6>\n <label>{{ store.address }}</label>\n <label>{{ store.phone }}</label>\n <div [innerHtml]=\"store.note\"></div>\n <div class=\"text-right\">\n\n <a *ngIf=\"store.urlMap\" (click)=\"updateMap (store.urlMap)\" class=\"custom-a\">Ver mapa</a>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"col-12 col-md-6 order-2 order-md-3 my-4 mt-md-0\">\n\n <iframe id=\"map-iframe\" [src]=\"urlmap\" frameborder=\"0\"></iframe>\n </div>\n</div>\n}@else {\n<div class=\"d-flex flex-row justify-content-center my-5 align-items-center alto-total\">\n <h5 class=\"text-center\">{{ 'no-stores' | translate }}</h5>\n</div>\n}\n\n\n\n<ng-template #loading>\n <div class=\"container\">\n <div class=\"row\">\n <div class=\"col-12 align-items-center\">\n <div class=\"d-flex flex-column justify-content-center align-items-center my-5\">\n <app-loading-full-ec></app-loading-full-ec>\n </div>\n </div>\n </div>\n </div>\n</ng-template> -->", styles: [".scrolleable{height:70vh;overflow:auto}@media screen and (max-width: 768px){.scrolleable{height:auto}}.background-white{background-color:#fff}.alto-total{height:60vh}.custom-a{color:#000}#map-iframe{width:100%;border:0;height:100%}@media screen and (max-width: 425px){#map-iframe{height:400px}}\n"] }]
196
205
  }], ctorParameters: () => [{ type: i1.StoresService }, { type: i2.CoreConstantsService }, { type: i3.DomSanitizer }] });
197
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmVzLWVjLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVhc3ljb21tZXJjZS12MTgvc3JjL2xpYi9lYy1jb21wb25lbnRzL3N0b3Jlcy1lYy9zdG9yZXMtZWMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLWNvbXBvbmVudHMvc3RvcmVzLWVjL3N0b3Jlcy1lYy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFHakUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFdkMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7OztBQVV0RCxNQUFNLE9BQU8saUJBQWtCLFNBQVEsZUFBZTtJQWNoQztJQUFxQztJQUF5QztJQWJ6RixNQUFNLEdBQUcsSUFBSSxlQUFlLENBQVUsRUFBRSxDQUFDLENBQUM7SUFDMUMsWUFBWSxHQUFtQixJQUFJLENBQUE7SUFDbkMsU0FBUyxHQUFtQixJQUFJLENBQUE7SUFDaEMsZUFBZSxHQUFtQixJQUFJLENBQUE7SUFDdEMsUUFBUSxHQUFHLElBQUksQ0FBQTtJQUNmLE1BQU0sQ0FBQztJQUNQLFNBQVMsR0FBRyxFQUFFLENBQUE7SUFDYixHQUFHLENBQVU7SUFDYixHQUFHLENBQU07SUFDVCxPQUFPLEdBQVUsRUFBRSxDQUFDO0lBQ3BCLFNBQVMsR0FBVSxFQUFFLENBQUM7SUFDdkIsMEJBQTBCLEdBQVEsSUFBSSxDQUFDO0lBRS9DLFlBQW1CLGFBQTRCLEVBQVMsTUFBNEIsRUFBYSxTQUF1QjtRQUN2SCxLQUFLLEVBQUUsQ0FBQztRQURVLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQVMsV0FBTSxHQUFOLE1BQU0sQ0FBc0I7UUFBYSxjQUFTLEdBQVQsU0FBUyxDQUFjO1FBRXZILElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyw4QkFBOEIsQ0FBQyxtS0FBbUssQ0FBQyxDQUFDO1FBQ2pPLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTTthQUN4QixJQUFJLENBQ0QsTUFBTSxDQUFDLENBQUMsTUFBc0IsRUFBcUIsRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FDcEc7YUFDQSxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDaEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUM7WUFDeEIsSUFBSSxNQUFNLEVBQUUsQ0FBQztnQkFDVCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUM3QixDQUFDO1lBQ0QsSUFBSSxDQUFDLGVBQWUsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUNoRix5QkFBeUI7WUFDakMscUNBQXFDO1FBQ2pDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRyxRQUFRO1FBQ0osSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFBO0lBQ25CLENBQUM7SUFFRCxTQUFTLENBQUMsR0FBVTtRQUNoQixHQUFHLEdBQUcsR0FBRyxDQUFDLFFBQVEsQ0FBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxtS0FBbUssQ0FBQTtRQUN4TSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsOEJBQThCLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDcEUsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxXQUFXLEdBQUcsQ0FBQyxNQUFlLEVBQUUsRUFBRTtRQUM5QixJQUFJLFlBQVksR0FBVSxFQUFFLENBQUE7UUFDNUIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNuQixJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUssU0FBUyxFQUFFLENBQUM7Z0JBQ3RFLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFBO1lBQ3JDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sWUFBWSxDQUFBO0lBQ3ZCLENBQUMsQ0FBQTtJQUVEOzs7Ozs7T0FNRztJQUNILG9CQUFvQixHQUFHLENBQUMsU0FBa0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsRUFBRTtRQUMzRCxJQUFJLGlCQUFpQixHQUF5QyxFQUFFLENBQUE7UUFDaEUsSUFBRyxNQUFNLEVBQUMsQ0FBQztZQUNQLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUE7WUFDeEMsU0FBUyxDQUFDLE9BQU8sQ0FBRSxJQUFJLENBQUMsRUFBRTtnQkFDdEIsSUFBSSxHQUFHLEdBQUcsTUFBTSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtnQkFDcEUsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEVBQUMsUUFBUSxFQUFDLElBQUksRUFBQyxNQUFNLEVBQUMsR0FBRyxFQUFDLENBQUMsQ0FBQTtZQUN0RCxDQUFDLENBQUMsQ0FBQTtRQUNOLENBQUM7UUFDRCxPQUFPLGlCQUFpQixDQUFBO0lBQzVCLENBQUMsQ0FBQTtJQUVEOzs7OztPQUtHO0lBQ0gsZUFBZSxHQUFHLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLE9BQWUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUE7SUFFbEk7OztPQUdHO0lBQ0gscUJBQXFCLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFFLENBQUE7SUFFbEYsWUFBWSxHQUFHLENBQUMsTUFBYyxFQUFFLEVBQUU7UUFDOUIsSUFBSSxDQUFDLFlBQVksR0FBRyxNQUFNLEtBQUssRUFBRSxJQUFJLElBQUksQ0FBQyxTQUFTO1lBQy9DLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxJQUFJLE1BQU0sQ0FBQztZQUMvRCxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUNyQixPQUFPLElBQUksQ0FBQTtJQUNmLENBQUMsQ0FBQTtJQUVELE9BQU87UUFFTixJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQzFCLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUMsd0JBQXdCO1NBQzdFLENBQUMsU0FBUyxDQUNULENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDTixzRkFBc0Y7WUFFdEYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUNoQyxJQUFJLEtBQUssR0FBRztvQkFDVixFQUFFLEVBQUUsS0FBSyxDQUFDLElBQUk7b0JBQ2QsR0FBRyxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsUUFBUSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO29CQUMvRSxHQUFHLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxTQUFTLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7b0JBQ2pGLEtBQUssRUFBRSxLQUFLLENBQUMsSUFBSSxHQUFHLEtBQUssR0FBRyxLQUFLLENBQUMsT0FBTztvQkFDekMsV0FBVyxFQUFFLEtBQUssQ0FBQyxLQUFLO2lCQUN6QixDQUFDO2dCQUNILHNCQUFzQjtnQkFDckIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFN0IsQ0FBQyxDQUFDLENBQUM7WUFDSCxNQUFNLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDOUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUU7Z0JBQ2hDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3BFLENBQUMsQ0FBQyxDQUFDO1lBQ0gsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2xDLE1BQU0sS0FBSyxHQUFHLENBQUMsRUFBQyxhQUFhLEVBQUMsVUFBVSxFQUFDLFNBQVMsRUFBQyxDQUFDLEVBQUMsT0FBTyxFQUFDLFNBQVMsRUFBQyxDQUFDLEVBQUMsRUFBQyxFQUFDLGFBQWEsRUFBQyxhQUFhLEVBQUMsU0FBUyxFQUFDLENBQUMsRUFBQyxZQUFZLEVBQUMsS0FBSyxFQUFDLENBQUMsRUFBQyxFQUFDLEVBQUMsYUFBYSxFQUFDLGtCQUFrQixFQUFDLFNBQVMsRUFBQyxDQUFDLEVBQUMsT0FBTyxFQUFDLFNBQVMsRUFBQyxDQUFDLEVBQUMsRUFBQyxFQUFDLGFBQWEsRUFBQyxvQkFBb0IsRUFBQyxTQUFTLEVBQUMsQ0FBQyxFQUFDLE9BQU8sRUFBQyxTQUFTLEVBQUMsQ0FBQyxFQUFDLEVBQUMsRUFBQyxhQUFhLEVBQUMsZ0JBQWdCLEVBQUMsYUFBYSxFQUFDLFVBQVUsRUFBQyxTQUFTLEVBQUMsQ0FBQyxFQUFDLE9BQU8sRUFBQyxTQUFTLEVBQUMsQ0FBQyxFQUFDLEVBQUMsRUFBQyxhQUFhLEVBQUMsd0JBQXdCLEVBQUMsYUFBYSxFQUFDLGtCQUFrQixFQUFDLFNBQVMsRUFBQyxDQUFDLEVBQUMsT0FBTyxFQUFDLFNBQVMsRUFBQyxDQUFDLEVBQUMsRUFBQyxFQUFDLGFBQWEsRUFBQyx5QkFBeUIsRUFBQyxhQUFhLEVBQUMsa0JBQWtCLEVBQUMsU0FBUyxFQUFDLENBQUMsRUFBQyxPQUFPLEVBQUMsU0FBUyxFQUFDLENBQUMsRUFBQyxFQUFDLEVBQUMsYUFBYSxFQUFDLEtBQUssRUFBQyxhQUFhLEVBQUMsa0JBQWtCLEVBQUMsU0FBUyxFQUFDLENBQUMsRUFBQyxPQUFPLEVBQUMsU0FBUyxFQUFDLENBQUMsRUFBQyxFQUFDLEVBQUMsYUFBYSxFQUFDLGNBQWMsRUFBQyxTQUFTLEVBQUMsQ0FBQyxFQUFDLFlBQVksRUFBQyxLQUFLLEVBQUMsQ0FBQyxFQUFDLEVBQUMsRUFBQyxhQUFhLEVBQUMsVUFBVSxFQUFDLGFBQWEsRUFBQyxVQUFVLEVBQUMsU0FBUyxFQUFDLENBQUMsRUFBQyxPQUFPLEVBQUMsU0FBUyxFQUFDLENBQUMsRUFBQyxFQUFDLEVBQUMsYUFBYSxFQUFDLFVBQVUsRUFBQyxhQUFhLEVBQUMsa0JBQWtCLEVBQUMsU0FBUyxFQUFDLENBQUMsRUFBQyxPQUFPLEVBQUMsU0FBUyxFQUFDLENBQUMsRUFBQyxFQUFDLEVBQUMsYUFBYSxFQUFDLFVBQVUsRUFBQyxhQUFhLEVBQUMsb0JBQW9CLEVBQUMsU0FBUyxFQUFDLENBQUMsRUFBQyxPQUFPLEVBQUMsU0FBUyxFQUFDLENBQUMsRUFBQyxFQUFDLEVBQUMsYUFBYSxFQUFDLE1BQU0sRUFBQyxhQUFhLEVBQUMsZUFBZSxFQUFDLFNBQVMsRUFBQyxDQUFDLEVBQUMsT0FBTyxFQUFDLFNBQVMsRUFBQyxDQUFDLEVBQUMsRUFBQyxFQUFDLGFBQWEsRUFBQyxNQUFNLEVBQUMsYUFBYSxFQUFDLGFBQWEsRUFBQyxTQUFTLEVBQUMsQ0FBQyxFQUFDLFlBQVksRUFBQyxLQUFLLEVBQUMsQ0FBQyxFQUFDLEVBQUMsRUFBQyxhQUFhLEVBQUMsTUFBTSxFQUFDLGFBQWEsRUFBQyxrQkFBa0IsRUFBQyxTQUFTLEVBQUMsQ0FBQyxFQUFDLE9BQU8sRUFBQyxTQUFTLEVBQUMsQ0FBQyxFQUFDLEVBQUMsRUFBQyxhQUFhLEVBQUMsZUFBZSxFQUFDLGFBQWEsRUFBQyxVQUFVLEVBQUMsU0FBUyxFQUFDLENBQUMsRUFBQyxPQUFPLEVBQUMsU0FBUyxFQUFDLENBQUMsRUFBQyxFQUFDLEVBQUMsYUFBYSxFQUFDLGVBQWUsRUFBQyxhQUFhLEVBQUMsUUFBUSxFQUFDLFNBQVMsRUFBQyxDQUFDLEVBQUMsWUFBWSxFQUFDLEtBQUssRUFBQyxDQUFDLEVBQUMsRUFBQyxFQUFDLGFBQWEsRUFBQyxjQUFjLEVBQUMsYUFBYSxFQUFDLFVBQVUsRUFBQyxTQUFTLEVBQUMsQ0FBQyxFQUFDLE9BQU8sRUFBQyxTQUFTLEVBQUMsQ0FBQyxFQUFDLEVBQUMsRUFBQyxhQUFhLEVBQUMsY0FBYyxFQUFDLGFBQWEsRUFBQyxRQUFRLEVBQUMsU0FBUyxFQUFDLENBQUMsRUFBQyxZQUFZLEVBQUMsS0FBSyxFQUFDLENBQUMsRUFBQyxFQUFDLEVBQUMsYUFBYSxFQUFDLGdDQUFnQyxFQUFDLGFBQWEsRUFBQyxVQUFVLEVBQUMsU0FBUyxFQUFD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LFNBQVMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDbkMsSUFBSSxDQUFDLDBCQUEwQixHQUFHLFFBQVEsQ0FBQztRQUM3QyxDQUFDO1FBQ0YsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNULE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdEQsQ0FBQztJQUNMLENBQUM7SUFFRCxVQUFVO1FBQ04sSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDekIsTUFBTSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM5QixDQUFDLENBQUMsQ0FBQztJQUNSLENBQUM7d0dBeE1TLGlCQUFpQjs0RkFBakIsaUJBQWlCLCtGQ25COUIsMjNFQXdEa0IsaVdEdkNKLGVBQWU7OzRGQUVoQixpQkFBaUI7a0JBUDdCLFNBQVM7K0JBQ0ksY0FBYyxjQUdaLElBQUksV0FDUCxDQUFDLGVBQWUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHsgZmlsdGVyIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRIZWxwZXIgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2NvbXBvbmVudC1oZWxwZXInO1xyXG5pbXBvcnQgeyBDb3JlQ29uc3RhbnRzU2VydmljZSB9IGZyb20gXCIuLi8uLi9jb25zdGFudHNcIjtcclxuaW1wb3J0IHsgU3RvcmVzU2VydmljZSB9IGZyb20gJy4uLy4uL2VjLXNlcnZpY2VzL3N0b3Jlcy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgc2tpcFdoaWxlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmRlY2xhcmUgdmFyICQ6IGFueTtcclxuZGVjbGFyZSB2YXIgZ29vZ2xlOiBhbnk7XHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdhcHAtc3RvcmUtZWMnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICdzdG9yZXMtZWMuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJ3N0b3Jlcy1lYy5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICAgIGltcG9ydHM6IFtUcmFuc2xhdGVNb2R1bGVdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTdG9yZXNFY0NvbXBvbmVudCBleHRlbmRzIENvbXBvbmVudEhlbHBlciAge1xyXG4gICAgcHVibGljIHN0b3JlcyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U3RvcmVbXT4oW10pO1xyXG4gICAgcHVibGljIGZpbHRlclN0b3JlczogU3RvcmVbXSB8IG51bGwgPSBudWxsXHJcbiAgICBwdWJsaWMgc3RvcmVzQWxsOiBTdG9yZVtdIHwgbnVsbCA9IG51bGxcclxuICAgIHB1YmxpYyBleGNsdXNpdmVTdG9yZXM6IFN0b3JlW10gfCBudWxsID0gbnVsbFxyXG4gICAgcHVibGljIGltYWdlTWFwID0gdHJ1ZVxyXG4gICAgcHVibGljIHVybG1hcDtcclxuICAgIHB1YmxpYyBwcm92aW5jZXMgPSBbXVxyXG4gICAgcHJpdmF0ZSB1cmwhOiBzdHJpbmc7XHJcbiAgICBwcml2YXRlIG1hcDogYW55O1xyXG4gICAgcHJpdmF0ZSBtYXJrZXJzOiBhbnlbXSA9IFtdO1xyXG4gICAgcHJpdmF0ZSBsb2NhdGlvbnM6IGFueVtdID0gW107XHJcbiAgICBwdWJsaWMgdWx0aW1vRWxlbWVudG9TZWxlY2Npb25hZG86IGFueSA9IG51bGw7XHJcblxyXG4gICBjb25zdHJ1Y3RvcihwdWJsaWMgc3RvcmVzU2VydmljZTogU3RvcmVzU2VydmljZSwgcHVibGljIGNvbnN0czogQ29yZUNvbnN0YW50c1NlcnZpY2UgLCBwcm90ZWN0ZWQgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgICB0aGlzLnVybG1hcCA9IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybCgnaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9tYXBzL2VtYmVkP3BiPSExbTEwITFtOCExbTMhMWQxMzEzNy41MTk2ODg5NTc1NDUhMmQtNTguMzg4ODE2MyEzZC0zNC41OTQ1NTMzITNtMiExaTEwMjQhMmk3NjghNGYxMy4xITVlMCEzbTIhMXNlcy00MTkhMnNhciE0djE1MjM4ODkyMDQxNDgnKTtcclxuICAgIHRoaXMuc3RvcmVzU2VydmljZS5zdG9yZXNcclxuICAgIC5waXBlKFxyXG4gICAgICAgIGZpbHRlcigoc3RvcmVzOiBTdG9yZVtdIHwgbnVsbCk6IHN0b3JlcyBpcyBTdG9yZVtdID0+IEFycmF5LmlzQXJyYXkoc3RvcmVzKSAmJiBzdG9yZXMubGVuZ3RoID4gMClcclxuICAgIClcclxuICAgIC5zdWJzY3JpYmUoc3RvcmVzID0+IHtcclxuICAgICAgICB0aGlzLnN0b3Jlc0FsbCA9IHN0b3JlcztcclxuICAgICAgICBpZiAoc3RvcmVzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmVzLm5leHQoc3RvcmVzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5leGNsdXNpdmVTdG9yZXMgPSBzdG9yZXMgPyBzdG9yZXMuZmlsdGVyKHN0b3JlID0+IHN0b3JlLmV4Y2x1c2l2ZSApIDogbnVsbDtcclxuICAgICAgICAvLyB0aGlzLnNlbGVjdENoYW5nZSgnJyk7XHJcbi8vICAgIGNvbnNvbGUubG9nKCdTdG9yZXM6Jywgc3RvcmVzKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5lY09uQ29uc3RydWN0KCk7XHJcbn1cclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICB0aGlzLmVjT25Jbml0KClcclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGVNYXAodXJsOnN0cmluZykge1xyXG4gICAgICAgIHVybCA9IHVybC5pbmNsdWRlcyAoJ2VtYmVkJykgPyB1cmwgOiAnaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9tYXBzL2VtYmVkP3BiPSExbTEwITFtOCExbTMhMWQxMzEzNy41MTk2ODg5NTc1NDUhMmQtNTguMzg4ODE2MyEzZC0zNC41OTQ1NTMzITNtMiExaTEwMjQhMmk3NjghNGYxMy4xITVlMCEzbTIhMXNlcy00MTkhMnNhciE0djE1MjM4ODkyMDQxNDgnXHJcbiAgICAgICAgdGhpcy51cmxtYXAgPSB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwodXJsKVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGRlc2NyaXB0aW9uIE9idGllbmUgdG9kYXMgbGEgcHJvdmluY2lhcyBxdWUgZmlndXJlbiBlbiBlbCBhcnJlZ2xvXHJcbiAgICAgKiBAcGFyYW0gc3RvcmVzIEFycmVnbG8gZGUgdGllbmRhc1xyXG4gICAgICogQHJldHVybnMge0FycmF5fSBBcnJlZ2xvIGRlIHByb3ZpbmNpYXNcclxuICAgICAqL1xyXG4gICAgZ2V0UHJvdmljZXMgPSAoc3RvcmVzOiBTdG9yZVtdKSA9PiB7XHJcbiAgICAgICAgbGV0IHByb3ZpbmNlc09wdDogYW55W10gPSBbXVxyXG4gICAgICAgIHN0b3Jlcy5mb3JFYWNoKHN0b3JlID0+IHtcclxuICAgICAgICAgICAgaWYgKHByb3ZpbmNlc09wdC5maW5kKHMgPT4gcy5jb2RlID09IHN0b3JlLnByb3ZpbmNlLmNvZGUpID09ICB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgIHByb3ZpbmNlc09wdC5wdXNoKHN0b3JlLnByb3ZpbmNlKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIHByb3ZpbmNlc09wdFxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGRlc2NyaXB0aW9uIFJldG9ybmEgdW4gYXJyZWdsbyBkZSBvYmpldG9zIGZvcm1hZG8gcG9yIGxhcyBjbGF2ZXNcclxuICAgICAqICAgICAgXCJwcm92aW5jZVwiKGNvbnRpZW5lIHVuIG9iamV0byBwcm92aW5jaWEpIHlcclxuICAgICAqICAgICAgXCJzdG9yZXNcIiAoY29udGllbmUgdW4gYXJyZWdsbyBkZSB0aWVuZGFzIHBlcnRlbmVjaWVudGVzIGEgbGEgcHJvdmluY2lhKVxyXG4gICAgICogQHBhcmFtIHN0b3JlcyBPcGNpb25hbCwgYXJyZWdsbyBkZSB0aWVuZGFzIGEgbGEgcXVlIHNlIGxlIHF1aWVyZSBhcGxpY2FyIGxhIGRpdmlzaW9uIHBvciBwcm92aW5jaWFcclxuICAgICAqIEByZXR1cm5zIHtBcnJheTx7XCJwcm92aW5jZVwiLCBcInN0b3Jlc1wifT59XHJcbiAgICAgKi9cclxuICAgIGdldFN0b3Jlc0J5UHJvdmluY2VzID0gKHN0b3JlczogU3RvcmVbXSA9IHRoaXMuc3RvcmVzLnZhbHVlKSA9PiB7XHJcbiAgICAgICAgbGV0IHN0b3Jlc0J5UHJvdmluY2VzOiB7IHByb3ZpbmNlOiBhbnksIHN0b3JlczogU3RvcmVbXSB9W10gPSBbXVxyXG4gICAgICAgIGlmKHN0b3Jlcyl7XHJcbiAgICAgICAgICAgIGxldCBwcm92aW5jZXMgPSB0aGlzLmdldFByb3ZpY2VzKHN0b3JlcylcclxuICAgICAgICAgICAgcHJvdmluY2VzLmZvckVhY2goIGVsZW0gPT4ge1xyXG4gICAgICAgICAgICAgICAgbGV0IGF1eCA9IHN0b3Jlcz8uZmlsdGVyKHN0b3JlID0+ICBzdG9yZS5wcm92aW5jZS5jb2RlID09IGVsZW0uY29kZSlcclxuICAgICAgICAgICAgICAgIHN0b3Jlc0J5UHJvdmluY2VzLnB1c2goe3Byb3ZpbmNlOmVsZW0sc3RvcmVzOmF1eH0pXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBzdG9yZXNCeVByb3ZpbmNlc1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGRlc2NyaXB0aW9uIFJldG9ybmEgbGFzIHRpZW5kYXMgY29uL3NpbiByZXRpcm8gZW4gZWwgbG9jYWxcclxuICAgICAqIEBwYXJhbSBzdG9yZXMgT3BjaW9uYWwsIGFycmVnbG8gZGUgdGllbmRhc1xyXG4gICAgICogQHBhcmFtIGNvbmQgT3BjaW9uYWwsIFNpIGVzIFwidHJ1ZVwiIG9idGllbmUgbGFzIHRpZW5kYXMgY29uIHJldGlybyBsb2NhbCBjYXNvIGNvbnRyYXJpbyBcImZhbHNlXCJcclxuICAgICAqIEByZXR1cm5zIHtBcnJheTxTdG9yZT59IEFycmVnbG8gZGUgU3RvcmVcclxuICAgICAqL1xyXG4gICAgZ2V0UGlja3VwU3RvcmVzID0gKHN0b3JlcyA9IHRoaXMuc3RvcmVzLnZhbHVlLCBjb25kOkJvb2xlYW4gPSB0cnVlKSA9PiBzdG9yZXMgJiYgc3RvcmVzLmZpbHRlcihzdG9yZSA9PiBjb25kID09IHN0b3JlLnBpY2t1cFN0b3JlKVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGRlc2NyaXB0aW9uIE1ldG9kbyBxdWUgZGV2dWVsdmUgbGFzIHRpZW5kYXMgcXVlIE5PIHNvbiBleGNsdXNpdmFzLlxyXG4gICAgICogQHJldHVybnMge0FycmF5PFN0b3JlPn0gQXJyZWdsbyBkZSBTdG9yZVxyXG4gICAgICovXHJcbiAgICBnZXROb25FeGNsdXNpdmVTdG9yZXMgPSAoKSA9PiB0aGlzLnN0b3Jlcy52YWx1ZS5maWx0ZXIoc3RvcmUgPT4gIXN0b3JlLmV4Y2x1c2l2ZSApXHJcblxyXG4gICAgc2VsZWN0Q2hhbmdlID0gKHNlbGVjdDogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJTdG9yZXMgPSBzZWxlY3QgIT09ICcnICYmIHRoaXMuc3RvcmVzQWxsXHJcbiAgICAgICAgICAgID8gdGhpcy5zdG9yZXNBbGwuZmlsdGVyKHN0b3JlID0+IHN0b3JlLnByb3ZpbmNlLmNvZGUgPT0gc2VsZWN0KVxyXG4gICAgICAgICAgICA6IHRoaXMuc3RvcmVzQWxsO1xyXG4gICAgICAgIHJldHVybiB0cnVlXHJcbiAgICB9XHJcblxyXG4gICAgaW5pdE1hcCgpOiB2b2lkIHtcclxuXHJcbiAgICAgdGhpcy5zdG9yZXNTZXJ2aWNlLnN0b3Jlcy5waXBlKFxyXG4gICAgICAgICBza2lwV2hpbGUoc3RvcmVzID0+ICFzdG9yZXMgfHwgc3RvcmVzLmxlbmd0aCA9PT0gMCkgLy8gT21pdGlyIHZhbG9yZXMgdmFjw61vc1xyXG4gICAgICAgKS5zdWJzY3JpYmUoXHJcbiAgICAgICAgIChyZXMpID0+IHtcclxuICAgICAgICAgICAvLyB0aGlzLnN0b3Jlcy5uZXh0KHJlcyA/PyBbXSk7IC8vIEVsaW1pbmFkbyBwYXJhIG5vIHNvYnJlc2NyaWJpciBlbCBsaXN0YWRvIHByaW5jaXBhbFxyXG5cclxuICAgICAgICAgICB0aGlzLnN0b3Jlcy52YWx1ZS5mb3JFYWNoKHN0b3JlID0+IHtcclxuICAgICAgICAgICAgIGxldCBkYXRvcyA9IHtcclxuICAgICAgICAgICAgICAgaWQ6IHN0b3JlLmNvZGUsXHJcbiAgICAgICAgICAgICAgIGxhdDogcGFyc2VGbG9hdChzdG9yZS5sYXRpdHVkZSAhPT0gdW5kZWZpbmVkID8gc3RvcmUubGF0aXR1ZGUudG9TdHJpbmcoKSA6ICcwJyksXHJcbiAgICAgICAgICAgICAgIGxuZzogcGFyc2VGbG9hdChzdG9yZS5sb25naXR1ZGUgIT09IHVuZGVmaW5lZCA/IHN0b3JlLmxvbmdpdHVkZS50b1N0cmluZygpIDogJzAnKSxcclxuICAgICAgICAgICAgICAgdGl0bGU6IHN0b3JlLm5hbWUgKyAnIC0gJyArIHN0b3JlLmFkZHJlc3MsXHJcbiAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBzdG9yZS5waG9uZSxcclxuICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIC8vICBjb25zb2xlLmxvZyhkYXRvcylcclxuICAgICAgICAgICAgIHRoaXMubG9jYXRpb25zLnB1c2goZGF0b3MpO1xyXG5cclxuICAgICAgICAgICB9KTtcclxuICAgICAgICAgICBjb25zdCBib3VuZHMgPSBuZXcgZ29vZ2xlLm1hcHMuTGF0TG5nQm91bmRzKCk7XHJcbiAgICAgICAgICAgdGhpcy5sb2NhdGlvbnMuZm9yRWFjaChsb2NhdGlvbiA9PiB7XHJcbiAgICAgICAgICAgICBib3VuZHMuZXh0ZW5kKG5ldyBnb29nbGUubWFwcy5MYXRMbmcobG9jYXRpb24ubGF0LCBsb2NhdGlvbi5sbmcpKTtcclxuICAgICAgICAgICB9KTtcclxuICAgICAgICAgICBjb25zdCBjZW50ZXIgPSBib3VuZHMuZ2V0Q2VudGVyKCk7XHJcbiAgICAgICAgICAgY29uc3Qgc3R5bGUgPSBbe1wiZWxlbWVudFR5cGVcIjpcImdlb21ldHJ5XCIsXCJzdHlsZXJzXCI6W3tcImNvbG9yXCI6XCIjMjEyMTIxXCJ9XX0se1wiZWxlbWVudFR5cGVcIjpcImxhYmVscy5pY29uXCIsXCJzdHlsZXJzXCI6W3tcInZpc2liaWxpdHlcIjpcIm9mZlwifV19LHtcImVsZW1lbnRUeXBlXCI6XCJsYWJlbHMudGV4dC5maWxsXCIsXCJzdHlsZXJzXCI6W3tcImNvbG9yXCI6XCIjNzU3NTc1XCJ9XX0se1wiZWxlbWVudFR5cGVcIjpcImxhYmVscy50ZXh0LnN0cm9rZVwiLFwic3R5bGVyc1wiOlt7XCJjb2xvclwiOlwiIzIxMjEyMVwifV19LHtcImZlYXR1cmVUeXBlXCI6XCJhZG1pbmlzdHJhdGl2ZVwiLFwiZWxlbWVudFR5cGVcIjpcImdlb21ldHJ5XCIsXCJzdHlsZXJzXCI6W3tcImNvbG9yXCI6XCIjNzU3NTc1XCJ9XX0se1wiZmVhdHVyZVR5cGVcIjpcImFkbWluaXN0cmF0aXZlLmNvdW50cnlcIixcImVsZW1lbnRUeXBlXCI6XCJsYWJlbHMudGV4dC5maWxsXCIsXCJzdHlsZXJzXCI6W3tcImNvbG9yXCI6XCIjOWU5ZTllXCJ9XX0se1wiZmVhdHVyZVR5cGVcIjpcImFkbWluaXN0cmF0aXZlLmxvY2FsaXR5XCIsXCJlbGVtZW50VHlwZVwiOlwibGFiZWxzLnRleHQuZmlsbFwiLFwic3R5bGVyc1wiOlt7XCJjb2xvclwiOlwiI2JkYmRiZFwifV19LHtcImZlYXR1cmVUeXBlXCI6XCJwb2lcIixcImVsZW1lbnRUeXBlXCI6XCJsYWJlbHMudGV4dC5maWxsXCIsXCJzdHlsZXJzXCI6W3tcImNvbG9yXCI6XCIjNzU3NTc1XCJ9XX0se1wiZmVhdHVyZVR5cGVcIjpcInBvaS5idXNpbmVzc1wiLFwic3R5bGVyc1wiOlt7XCJ2aXNpYmlsaXR5XCI6XCJvZmZcIn1dfSx7XCJmZWF0dXJlVHlwZVwiOlwicG9pLnBhcmtcIixcImVsZW1lbnRUeXBlXCI6XCJnZW9tZXRyeVwiLFwic3R5bGVyc1wiOlt7XCJjb2xvclwiOlwiIzE4MTgxOFwifV19LHtcImZlYXR1cmVUeXBlXCI6XCJwb2kucGFya1wiLFwiZWxlbWVudFR5cGVcIjpcImxhYmVscy50ZXh0LmZpbGxcIixcInN0eWxlcnNcIjpbe1wiY29sb3JcIjpcIiM2MTYxNjFcIn1dfSx7XCJmZWF0dXJlVHlwZVwiOlwicG9pLnBhcmtcIixcImVsZW1lbnRUeXBlXCI6XCJsYWJlbHMudGV4dC5zdHJva2VcIixcInN0eWxlcnNcIjpbe1wiY29sb3JcIjpcIiMxYjFiMWJcIn1dfSx7XCJmZWF0dXJlVHlwZVwiOlwicm9hZFwiLFwiZWxlbWVudFR5cGVcIjpcImdlb21ldHJ5LmZpbGxcIixcInN0eWxlcnNcIjpbe1wiY29sb3JcIjpcIiMyYzJjMmNcIn1dfSx7XCJmZWF0dXJlVHlwZVwiOlwicm9hZFwiLFwiZWxlbWVudFR5cGVcIjpcImxhYmVscy5pY29uXCIsXCJzdHlsZXJzXCI6W3tcInZpc2liaWxpdHlcIjpcIm9mZlwifV19LHtcImZlYXR1cmVUeXBlXCI6XCJyb2FkXCIsXCJlbGVtZW50VHlwZVwiOlwibGFiZWxzLnRleHQuZmlsbFwiLFwic3R5bGVyc1wiOlt7XCJjb2xvclwiOlwiIzhhOGE4YVwifV19LHtcImZlYXR1cmVUeXBlXCI6XCJyb2FkLmFydGVyaWFsXCIsXCJlbGVtZW50VHlwZVwiOlwiZ2VvbWV0cnlcIixcInN0eWxlcnNcIjpbe1wiY29sb3JcIjpcIiMzNzM3MzdcIn1dfSx7XCJmZWF0dXJlVHlwZVwiOlwicm9hZC5hcnRlcmlhbFwiLFwiZWxlbWVudFR5cGVcIjpcImxhYmVsc1wiLFwic3R5bGVyc1wiOlt7XCJ2aXNpYmlsaXR5XCI6XCJvZmZcIn1dfSx7XCJmZWF0dXJlVHlwZVwiOlwicm9hZC5oaWdod2F5XCIsXCJlbGVtZW50VHlwZVwiOlwiZ2VvbWV0cnlcIixcInN0eWxlcnNcIjpbe1wiY29sb3JcIjpcIiMzYzNjM2NcIn1dfSx7XCJmZWF0dXJlVHlwZVwiOlwicm9hZC5oaWdod2F5XCIsXCJlbGVtZW50VHlwZVwiOlwibGFiZWxzXCIsXCJzdHlsZXJzXCI6W3tcInZpc2liaWxpdHlcIjpcIm9mZlwifV19LHtcImZlYXR1cmVUeXBlXCI6XCJyb2FkLmhpZ2h3YXkuY29udHJvbGxlZF9hY2Nlc3NcIixcImVsZW1lbnRUeXBlXCI6XCJnZW9tZXRyeVwiLFwic3R5bGVyc1wiOlt7XCJjb2xvclwiOlwiIzRlNGU0ZVwifV19LHtcImZlYXR1cmVUeXBlXCI6XCJyb2FkLmxvY2FsXCIsXCJzdHlsZXJzXCI6W3tcInZpc2liaWxpdHlcIjpcIm9mZlwifV19LHtcImZlYXR1cmVUeXBlXCI6XCJyb2FkLmxvY2FsXCIsXCJlbGVtZW50VHlwZVwiOlwibGFiZWxzLnRleHQuZmlsbFwiLFwic3R5bGVyc1wiOlt7XCJjb2xvclwiOlwiIzYxNjE2MVwifV19LHtcImZlYXR1cmVUeXBlXCI6XCJ0cmFuc2l0XCIsXCJzdHlsZXJzXCI6W3tcInZpc2liaWxpdHlcIjpcIm9mZlwifV19LHtcImZlYXR1cmVUeXBlXCI6XCJ0cmFuc2l0XCIsXCJlbGVtZW50VHlwZVwiOlwibGFiZWxzLnRleHQuZmlsbFwiLFwic3R5bGVyc1wiOlt7XCJjb2xvclwiOlwiIzc1NzU3NVwifV19LHtcImZlYXR1cmVUeXBlXCI6XCJ3YXRlclwiLFwiZWxlbWVudFR5cGVcIjpcImdlb21ldHJ5XCIsXCJzdHlsZXJzXCI6W3tcImNvbG9yXCI6XCIjMDAwMDAwXCJ9XX0se1wiZmVhdHVyZVR5cGVcIjpcIndhdGVyXCIsXCJlbGVtZW50VHlwZVwiOlwibGFiZWxzLnRleHQuZmlsbFwiLFwic3R5bGVyc1wiOlt7XCJjb2xvclwiOlwiIzNkM2QzZFwifV19XTtcclxuICAgICAgICAgICB0aGlzLm1hcCA9IG5ldyBnb29nbGUubWFwcy5NYXAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21hcCcpLCB7XHJcbiAgICAgICAgICAgICB6b29tOiAxMixcclxuICAgICAgICAgICAgIGNlbnRlcjogY2VudGVyLCAvLyBDZW50cmFyIGVsIG1hcGEgZW4gZWwgY2VudHJvIGNhbGN1bGFkb1xyXG4gICAgICAgICAgICAgc3R5bGVzOiBzdHlsZSAvLyBBcGxpY2EgbG9zIGVzdGlsb3MgcGVyc29uYWxpemFkb3NcclxuICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgdGhpcy5sb2NhdGlvbnMuZm9yRWFjaChsb2NhdGlvbiA9PiB7XHJcbiAgICAgICAgICAgICBjb25zdCBtYXJrZXIgPSBuZXcgZ29vZ2xlLm1hcHMuTWFya2VyKHtcclxuICAgICAgICAgICAgICAgcG9zaXRpb246IHsgbGF0OiBsb2NhdGlvbi5sYXQsIGxuZzogbG9jYXRpb24ubG5nIH0sXHJcbiAgICAgICAgICAgICAgIG1hcDogdGhpcy5tYXAsXHJcbiAgICAgICAgICAgICAgIHRpdGxlOiBsb2NhdGlvbi50aXRsZSxcclxuICAgICAgICAgICAgICAgaWNvbjoge1xyXG4gICAgICAgICAgICAgICAgdXJsOiBcIi4uLy4uLy4uL2Fzc2V0cy9sb2NhdGlvbi5zdmdcIixcclxuICAgICAgICAgICAgICAgIHNjYWxlZFNpemU6IG5ldyBnb29nbGUubWFwcy5TaXplKDMwLCAzMClcclxuICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICBtYXJrZXIuc2V0KCdpZCcsIGxvY2F0aW9uLmlkKTsgLy8gQXNzb2NpYXRlIG1hcmtlciB3aXRoIGl0cyBJRFxyXG4gICAgICAgICAgICAgdGhpcy5tYXJrZXJzLnB1c2gobWFya2VyKTtcclxuICAgICAgICAgICAgIG1hcmtlci5hZGRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgY29uc3QgZWxlbWVudG8gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChsb2NhdGlvbi5pZCk7XHJcbiAgICAgICAgICAgICAgICAgY29uc3QgY29udGVuZWRvciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdob21lJyk7XHJcblxyXG4gICAgICAgICAgICAgICAgIGlmIChlbGVtZW50byAmJiBjb250ZW5lZG9yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgIGNvbnRlbmVkb3Iuc2Nyb2xsVG8oe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgdG9wOiBlbGVtZW50by5vZmZzZXRUb3AgLSBjb250ZW5lZG9yLm9mZnNldFRvcCArIGNvbnRlbmVkb3Iuc2Nyb2xsVG9wLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgYmVoYXZpb3I6ICdzbW9vdGgnXHJcbiAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgaWYgKHRoaXMudWx0aW1vRWxlbWVudG9TZWxlY2Npb25hZG8gIT09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgLy8gUXVpdGFyIGxhIGNsYXNlIGRlbCDDumx0aW1vIGVsZW1lbnRvIHNlbGVjY2lvbmFkb1xyXG4gICAgICAgICAgICAgICAgICAgICB0aGlzLnVsdGltb0VsZW1lbnRvU2VsZWNjaW9uYWRvLmNsYXNzTGlzdC5yZW1vdmUoJ3NlbGVjdGVkJyk7XHJcbiAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAvLyBBZ3JlZ2FyIHVuYSBjbGFzZSBhbCBudWV2byBlbGVtZW50byBzZWxlY2Npb25hZG9cclxuICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudG8pIHtcclxuICAgICAgICAgICAgICAgICAgIGVsZW1lbnRvLmNsYXNzTGlzdC5hZGQoJ3NlbGVjdGVkJyk7XHJcbiAgICAgICAgICAgICAgICAgICB0aGlzLnVsdGltb0VsZW1lbnRvU2VsZWNjaW9uYWRvID0gZWxlbWVudG87XHJcbiAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICB0aGlzLnN0b3BCb3VuY2UoKTtcclxuICAgICAgICAgICAgICAgICBtYXJrZXIuc2V0QW5pbWF0aW9uKGdvb2dsZS5tYXBzLkFuaW1hdGlvbi5CT1VOQ0UpO1xyXG4gICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgdGhpcy5tYXAuZml0Qm91bmRzKGJvdW5kcyk7XHJcbiAgICAgICAgIH0sXHJcbiAgICAgICAgIChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgYWwgb2J0ZW5lciBsYXMgdGllbmRhczonLCBlcnJvcik7XHJcbiAgICAgICAgIH1cclxuICAgICAgICk7XHJcbiAgICAgICB9KTtcclxuXHJcbiAgICAgfVxyXG5cclxuICAgc2hvd1N0b3JlT25NYXAoc3RvcmVDb2RlOiBzdHJpbmcpIHtcclxuICAgICAgIHRoaXMuc3RvcEJvdW5jZSgpO1xyXG4gICAgICAgY29uc3QgbWFya2VyID0gdGhpcy5tYXJrZXJzLmZpbmQobSA9PiBtLmdldCgnaWQnKSA9PT0gc3RvcmVDb2RlKTtcclxuICAgICAgIGNvbnN0IGVsZW1lbnRvID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoc3RvcmVDb2RlKTtcclxuICAgICAgIGlmICh0aGlzLnVsdGltb0VsZW1lbnRvU2VsZWNjaW9uYWRvICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIC8vIFF1aXRhciBsYSBjbGFzZSBkZWwgw7psdGltbyBlbGVtZW50byBzZWxlY2Npb25hZG9cclxuICAgICAgICAgICAgdGhpcy51bHRpbW9FbGVtZW50b1NlbGVjY2lvbmFkby5jbGFzc0xpc3QucmVtb3ZlKCdzZWxlY3RlZCcpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gQWdyZWdhciB1bmEgY2xhc2UgYWwgbnVldm8gZWxlbWVudG8gc2VsZWNjaW9uYWRvXHJcbiAgICAgICAgaWYgKGVsZW1lbnRvKSB7XHJcbiAgICAgICAgICBlbGVtZW50by5jbGFzc0xpc3QuYWRkKCdzZWxlY3RlZCcpO1xyXG4gICAgICAgICAgdGhpcy51bHRpbW9FbGVtZW50b1NlbGVjY2lvbmFkbyA9IGVsZW1lbnRvO1xyXG4gICAgICAgIH1cclxuICAgICAgIGlmIChtYXJrZXIpIHtcclxuICAgICAgICAgICBtYXJrZXIuc2V0QW5pbWF0aW9uKGdvb2dsZS5tYXBzLkFuaW1hdGlvbi5CT1VOQ0UpO1xyXG4gICAgICAgfVxyXG4gICB9XHJcblxyXG4gICBzdG9wQm91bmNlKCl7XHJcbiAgICAgICB0aGlzLm1hcmtlcnMuZm9yRWFjaChtYXJrZXIgPT4ge1xyXG4gICAgICAgICAgICBtYXJrZXIuc2V0QW5pbWF0aW9uKG51bGwpO1xyXG4gICAgICAgIH0pO1xyXG4gICB9XHJcblxyXG5cclxufVxyXG4iLCI8IS0tIDxkaXYgY2xhc3M9XCJyb3cgdy0xMDAgbXgtYXV0byBteS00IHB4LTMgYmItcyBidC1tZC1zIHB5LTFcIj5cclxuICAgIDxzdHJvbmc+e3sgJ3N0b3JlcycgfCB0cmFuc2xhdGUgfX08L3N0cm9uZz5cclxuPC9kaXY+XHJcbkBpZihzdG9yZXMpe1xyXG48ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1tZC0zIG9yZGVyLTEgb3JkZXItbWQtMVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgdy0xMDBcIj5cclxuICAgICAgICAgICAgICAgIDxzZWxlY3QgKGNoYW5nZSk9XCJzZWxlY3RDaGFuZ2UoJGV2ZW50LnRhcmdldC52YWx1ZSlcIiBjbGFzcz1cInJvdW5kZWQtMCBmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCJcclxuICAgICAgICAgICAgICAgICAgICBpZD1cImV4YW1wbGVGb3JtQ29udHJvbFNlbGVjdDFcIj5cclxuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHNlbGVjdGVkIFt2YWx1ZV09XCInJ1wiPlNlbGVjY2lvbmUgcHJvdmluY2lhPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBbdmFsdWVdPVwiaXRlbS5jb2RlXCIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZ2V0UHJvdmljZXMoc3RvcmVzKVwiPiB7e2l0ZW0ubmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgY29sLW1kLTMgb3JkZXItMyBvcmRlci1tZC0yXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci1mbHVpZCBzY3JvbGxlYWJsZVwiICpuZ0lmPVwiZmlsdGVyU3RvcmVzICYmIGZpbHRlclN0b3Jlcy5sZW5ndGhcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi0xXCIgKm5nRm9yPVwibGV0IHN0b3JlIG9mIGZpbHRlclN0b3JlczsgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxoNiBjbGFzcz1cIlwiPjxzdHJvbmc+e3sgc3RvcmUubmFtZSB9fTwvc3Ryb25nPjwvaDY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsPnt7IHN0b3JlLmFkZHJlc3MgfX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbD57eyBzdG9yZS5waG9uZSB9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBbaW5uZXJIdG1sXT1cInN0b3JlLm5vdGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1yaWdodFwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGEgKm5nSWY9XCJzdG9yZS51cmxNYXBcIiAoY2xpY2spPVwidXBkYXRlTWFwIChzdG9yZS51cmxNYXApXCIgY2xhc3M9XCJjdXN0b20tYVwiPlZlciBtYXBhPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1tZC02IG9yZGVyLTIgb3JkZXItbWQtMyBteS00IG10LW1kLTBcIj5cclxuXHJcbiAgICAgICAgPGlmcmFtZSBpZD1cIm1hcC1pZnJhbWVcIiBbc3JjXT1cInVybG1hcFwiIGZyYW1lYm9yZGVyPVwiMFwiPjwvaWZyYW1lPlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG59QGVsc2Uge1xyXG48ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtcm93IGp1c3RpZnktY29udGVudC1jZW50ZXIgbXktNSBhbGlnbi1pdGVtcy1jZW50ZXIgYWx0by10b3RhbFwiPlxyXG4gICAgPGg1IGNsYXNzPVwidGV4dC1jZW50ZXJcIj57eyAnbm8tc3RvcmVzJyB8IHRyYW5zbGF0ZSB9fTwvaDU+XHJcbjwvZGl2PlxyXG59XHJcblxyXG5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjbG9hZGluZz5cclxuICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIG15LTVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YXBwLWxvYWRpbmctZnVsbC1lYz48L2FwcC1sb2FkaW5nLWZ1bGwtZWM+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT4gLS0+Il19
206
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmVzLWVjLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVhc3ljb21tZXJjZS12MTgvc3JjL2xpYi9lYy1jb21wb25lbnRzL3N0b3Jlcy1lYy9zdG9yZXMtZWMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLWNvbXBvbmVudHMvc3RvcmVzLWVjL3N0b3Jlcy1lYy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFHakUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFdkMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7OztBQVV0RCxNQUFNLE9BQU8saUJBQWtCLFNBQVEsZUFBZTtJQWNoQztJQUFxQztJQUF5QztJQWJ6RixNQUFNLEdBQUcsSUFBSSxlQUFlLENBQVUsRUFBRSxDQUFDLENBQUM7SUFDMUMsWUFBWSxHQUFtQixJQUFJLENBQUE7SUFDbkMsU0FBUyxHQUFtQixJQUFJLENBQUE7SUFDaEMsZUFBZSxHQUFtQixJQUFJLENBQUE7SUFDdEMsUUFBUSxHQUFHLElBQUksQ0FBQTtJQUNmLE1BQU0sQ0FBQztJQUNQLFNBQVMsR0FBRyxFQUFFLENBQUE7SUFDYixHQUFHLENBQVU7SUFDYixHQUFHLENBQU07SUFDVCxPQUFPLEdBQVUsRUFBRSxDQUFDO0lBQ3BCLFNBQVMsR0FBVSxFQUFFLENBQUM7SUFDdkIsMEJBQTBC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RUFBQyxPQUFPLEVBQUMsU0FBUyxFQUFDLENBQUMsRUFBQyxFQUFDLEVBQUMsYUFBYSxFQUFDLFVBQVUsRUFBQyxhQUFhLEVBQUMsb0JBQW9CLEVBQUMsU0FBUyxFQUFDLENBQUMsRUFBQyxPQUFPLEVBQUMsU0FBUyxFQUFDLENBQUMsRUFBQyxFQUFDLEVBQUMsYUFBYSxFQUFDLE1BQU0sRUFBQyxhQUFhLEVBQUMsZUFBZSxFQUFDLFNBQVMsRUFBQyxDQUFDLEVBQUMsT0FBTyxFQUFDLFNBQVMsRUFBQyxDQUFDLEVBQUMsRUFBQyxFQUFDLGFBQWEsRUFBQyxNQUFNLEVBQUMsYUFBYSxFQUFDLGFBQWEsRUFBQyxTQUFTLEVBQUMsQ0FBQyxFQUFDLFlBQVksRUFBQyxLQUFLLEVBQUMsQ0FBQyxFQUFDLEVBQUMsRUFBQyxhQUFhLEVBQUMsTUFBTSxFQUFDLGFBQWEsRUFBQyxrQkFBa0IsRUFBQyxTQUFTLEVBQUMsQ0FBQyxFQUFDLE9BQU8sRUFBQyxTQUFTLEVBQUMsQ0FBQyxFQUFDLEVBQUMsRUFBQyxhQUFhLEVBQUMsZUFBZSxFQUFDLGFBQWEsRUFBQyxVQUFVLEVBQUMsU0FBUyxFQUFDLENBQUMsRUFBQyxPQUFPLEVBQUMsU0FBUyxFQUFDLENBQUMsRUFBQyxFQUFDLEVBQUMsYUFBYSxFQUFDLGVBQWUsRUFBQyxhQUFhLEVBQUMsUUFBUSxFQUFDLFNBQVMsRUFBQyxDQUFDLEVBQUMsWUFBWSxFQUFDLEtBQUssRUFBQyxDQUFDLEVBQUMsRUFBQyxFQUFDLGFBQWEsRUFBQyxjQUFjLEVBQUMsYUFBYSxFQUFDLFVBQVUsRUFBQyxTQUFTLEVBQUMsQ0FBQyxFQUFDLE9BQU8sRUFBQyxTQUFTLEVBQUMsQ0FBQyxFQUFDLEVBQUMsRUFBQyxhQUFhLEVBQUMsY0FBYyxFQUFDLGFBQWEsRUFBQyxRQUFRLEVBQUMsU0FBUyxFQUFDLENBQUMsRUFBQyxZQUFZLEVBQUMsS0FBSyxFQUFDLENBQUMsRUFBQyxFQUFDLEVBQUMsYUFBYSxFQUFDLGdDQUFnQyxFQUFDLGFBQWEsRUFBQyxVQUFVLEVBQUMsU0FBUyxFQUFD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QUFXLEVBQUUsQ0FBQztZQUNsQyxRQUFRLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNsRCxDQUFDO1FBQ1AsSUFBSSxJQUFJLENBQUMsMEJBQTBCLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDMUMsbURBQW1EO1lBQ25ELElBQUksQ0FBQywwQkFBMEIsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2pFLENBQUM7UUFFRCxtREFBbUQ7UUFDbkQsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNiLFFBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ25DLElBQUksQ0FBQywwQkFBMEIsR0FBRyxRQUFRLENBQUM7UUFDN0MsQ0FBQztRQUNGLElBQUksTUFBTSxFQUFFLENBQUM7WUFDVCxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3RELENBQUM7SUFDTCxDQUFDO0lBRUQsVUFBVTtRQUNOLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3pCLE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUIsQ0FBQyxDQUFDLENBQUM7SUFDUixDQUFDO3dHQWpOUyxpQkFBaUI7NEZBQWpCLGlCQUFpQiwrRkNuQjlCLDJ3RUF3RGtCLGlXRHZDSixlQUFlOzs0RkFFaEIsaUJBQWlCO2tCQVA3QixTQUFTOytCQUNJLGNBQWMsY0FHWixJQUFJLFdBQ1AsQ0FBQyxlQUFlLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgZmlsdGVyIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ29tcG9uZW50SGVscGVyIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9jb21wb25lbnQtaGVscGVyJztcbmltcG9ydCB7IENvcmVDb25zdGFudHNTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgU3RvcmVzU2VydmljZSB9IGZyb20gJy4uLy4uL2VjLXNlcnZpY2VzL3N0b3Jlcy5zZXJ2aWNlJztcbmltcG9ydCB7IHNraXBXaGlsZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuZGVjbGFyZSB2YXIgJDogYW55O1xuZGVjbGFyZSB2YXIgZ29vZ2xlOiBhbnk7XG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FwcC1zdG9yZS1lYycsXG4gICAgdGVtcGxhdGVVcmw6ICdzdG9yZXMtZWMuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWydzdG9yZXMtZWMuY29tcG9uZW50LnNjc3MnXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtUcmFuc2xhdGVNb2R1bGVdXG59KVxuZXhwb3J0IGNsYXNzIFN0b3Jlc0VjQ29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50SGVscGVyICB7XG4gICAgcHVibGljIHN0b3JlcyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U3RvcmVbXT4oW10pO1xuICAgIHB1YmxpYyBmaWx0ZXJTdG9yZXM6IFN0b3JlW10gfCBudWxsID0gbnVsbFxuICAgIHB1YmxpYyBzdG9yZXNBbGw6IFN0b3JlW10gfCBudWxsID0gbnVsbFxuICAgIHB1YmxpYyBleGNsdXNpdmVTdG9yZXM6IFN0b3JlW10gfCBudWxsID0gbnVsbFxuICAgIHB1YmxpYyBpbWFnZU1hcCA9IHRydWVcbiAgICBwdWJsaWMgdXJsbWFwO1xuICAgIHB1YmxpYyBwcm92aW5jZXMgPSBbXVxuICAgIHByaXZhdGUgdXJsITogc3RyaW5nO1xuICAgIHByaXZhdGUgbWFwOiBhbnk7XG4gICAgcHJpdmF0ZSBtYXJrZXJzOiBhbnlbXSA9IFtdO1xuICAgIHByaXZhdGUgbG9jYXRpb25zOiBhbnlbXSA9IFtdO1xuICAgIHB1YmxpYyB1bHRpbW9FbGVtZW50b1NlbGVjY2lvbmFkbzogYW55ID0gbnVsbDtcblxuICAgY29uc3RydWN0b3IocHVibGljIHN0b3Jlc1NlcnZpY2U6IFN0b3Jlc1NlcnZpY2UsIHB1YmxpYyBjb25zdHM6IENvcmVDb25zdGFudHNTZXJ2aWNlICwgcHJvdGVjdGVkIHNhbml0aXplcjogRG9tU2FuaXRpemVyKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnVybG1hcCA9IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybCgnaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9tYXBzL2VtYmVkP3BiPSExbTEwITFtOCExbTMhMWQxMzEzNy41MTk2ODg5NTc1NDUhMmQtNTguMzg4ODE2MyEzZC0zNC41OTQ1NTMzITNtMiExaTEwMjQhMmk3NjghNGYxMy4xITVlMCEzbTIhMXNlcy00MTkhMnNhciE0djE1MjM4ODkyMDQxNDgnKTtcbiAgICB0aGlzLnN0b3Jlc1NlcnZpY2Uuc3RvcmVzXG4gICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcigoc3RvcmVzOiBTdG9yZVtdIHwgbnVsbCk6IHN0b3JlcyBpcyBTdG9yZVtdID0+IEFycmF5LmlzQXJyYXkoc3RvcmVzKSAmJiBzdG9yZXMubGVuZ3RoID4gMClcbiAgICApXG4gICAgLnN1YnNjcmliZShzdG9yZXMgPT4ge1xuICAgICAgICB0aGlzLnN0b3Jlc0FsbCA9IHN0b3JlcztcbiAgICAgICAgaWYgKHN0b3Jlcykge1xuICAgICAgICAgICAgdGhpcy5zdG9yZXMubmV4dChzdG9yZXMpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZXhjbHVzaXZlU3RvcmVzID0gc3RvcmVzID8gc3RvcmVzLmZpbHRlcihzdG9yZSA9PiBzdG9yZS5leGNsdXNpdmUgKSA6IG51bGw7XG4gICAgICAgIC8vIHRoaXMuc2VsZWN0Q2hhbmdlKCcnKTtcbi8vICAgIGNvbnNvbGUubG9nKCdTdG9yZXM6Jywgc3RvcmVzKTtcbiAgICB9KTtcbiAgICB0aGlzLmVjT25Db25zdHJ1Y3QoKTtcbn1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmVjT25Jbml0KClcbiAgICB9XG5cbiAgICB1cGRhdGVNYXAodXJsOnN0cmluZykge1xuICAgICAgICB1cmwgPSB1cmwuaW5jbHVkZXMgKCdlbWJlZCcpID8gdXJsIDogJ2h0dHBzOi8vd3d3Lmdvb2dsZS5jb20vbWFwcy9lbWJlZD9wYj0hMW0xMCExbTghMW0zITFkMTMxMzcuNTE5Njg4OTU3NTQ1ITJkLTU4LjM4ODgxNjMhM2QtMzQuNTk0NTUzMyEzbTIhMWkxMDI0ITJpNzY4ITRmMTMuMSE1ZTAhM20yITFzZXMtNDE5ITJzYXIhNHYxNTIzODg5MjA0MTQ4J1xuICAgICAgICB0aGlzLnVybG1hcCA9IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybCh1cmwpXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIE9idGllbmUgdG9kYXMgbGEgcHJvdmluY2lhcyBxdWUgZmlndXJlbiBlbiBlbCBhcnJlZ2xvXG4gICAgICogQHBhcmFtIHN0b3JlcyBBcnJlZ2xvIGRlIHRpZW5kYXNcbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IEFycmVnbG8gZGUgcHJvdmluY2lhc1xuICAgICAqL1xuICAgIGdldFByb3ZpY2VzID0gKHN0b3JlczogU3RvcmVbXSkgPT4ge1xuICAgICAgICBsZXQgcHJvdmluY2VzT3B0OiBhbnlbXSA9IFtdXG4gICAgICAgIHN0b3Jlcy5mb3JFYWNoKHN0b3JlID0+IHtcbiAgICAgICAgICAgIGlmIChwcm92aW5jZXNPcHQuZmluZChzID0+IHMuY29kZSA9PSBzdG9yZS5wcm92aW5jZS5jb2RlKSA9PSAgdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcHJvdmluY2VzT3B0LnB1c2goc3RvcmUucHJvdmluY2UpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcHJvdmluY2VzT3B0XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJldG9ybmEgdW4gYXJyZWdsbyBkZSBvYmpldG9zIGZvcm1hZG8gcG9yIGxhcyBjbGF2ZXNcbiAgICAgKiAgICAgIFwicHJvdmluY2VcIihjb250aWVuZSB1biBvYmpldG8gcHJvdmluY2lhKSB5XG4gICAgICogICAgICBcInN0b3Jlc1wiIChjb250aWVuZSB1biBhcnJlZ2xvIGRlIHRpZW5kYXMgcGVydGVuZWNpZW50ZXMgYSBsYSBwcm92aW5jaWEpXG4gICAgICogQHBhcmFtIHN0b3JlcyBPcGNpb25hbCwgYXJyZWdsbyBkZSB0aWVuZGFzIGEgbGEgcXVlIHNlIGxlIHF1aWVyZSBhcGxpY2FyIGxhIGRpdmlzaW9uIHBvciBwcm92aW5jaWFcbiAgICAgKiBAcmV0dXJucyB7QXJyYXk8e1wicHJvdmluY2VcIiwgXCJzdG9yZXNcIn0+fVxuICAgICAqL1xuICAgIGdldFN0b3Jlc0J5UHJvdmluY2VzID0gKHN0b3JlczogU3RvcmVbXSA9IHRoaXMuc3RvcmVzLnZhbHVlKSA9PiB7XG4gICAgICAgIGxldCBzdG9yZXNCeVByb3ZpbmNlczogeyBwcm92aW5jZTogYW55LCBzdG9yZXM6IFN0b3JlW10gfVtdID0gW11cbiAgICAgICAgaWYoc3RvcmVzKXtcbiAgICAgICAgICAgIGxldCBwcm92aW5jZXMgPSB0aGlzLmdldFByb3ZpY2VzKHN0b3JlcylcbiAgICAgICAgICAgIHByb3ZpbmNlcy5mb3JFYWNoKCBlbGVtID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgYXV4ID0gc3RvcmVzPy5maWx0ZXIoc3RvcmUgPT4gIHN0b3JlLnByb3ZpbmNlLmNvZGUgPT0gZWxlbS5jb2RlKVxuICAgICAgICAgICAgICAgIHN0b3Jlc0J5UHJvdmluY2VzLnB1c2goe3Byb3ZpbmNlOmVsZW0sc3RvcmVzOmF1eH0pXG4gICAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdG9yZXNCeVByb3ZpbmNlc1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBSZXRvcm5hIGxhcyB0aWVuZGFzIGNvbi9zaW4gcmV0aXJvIGVuIGVsIGxvY2FsXG4gICAgICogQHBhcmFtIHN0b3JlcyBPcGNpb25hbCwgYXJyZWdsbyBkZSB0aWVuZGFzXG4gICAgICogQHBhcmFtIGNvbmQgT3BjaW9uYWwsIFNpIGVzIFwidHJ1ZVwiIG9idGllbmUgbGFzIHRpZW5kYXMgY29uIHJldGlybyBsb2NhbCBjYXNvIGNvbnRyYXJpbyBcImZhbHNlXCJcbiAgICAgKiBAcmV0dXJucyB7QXJyYXk8U3RvcmU+fSBBcnJlZ2xvIGRlIFN0b3JlXG4gICAgICovXG4gICAgZ2V0UGlja3VwU3RvcmVzID0gKHN0b3JlcyA9IHRoaXMuc3RvcmVzLnZhbHVlLCBjb25kOkJvb2xlYW4gPSB0cnVlKSA9PiBzdG9yZXMgJiYgc3RvcmVzLmZpbHRlcihzdG9yZSA9PiBjb25kID09IHN0b3JlLnBpY2t1cFN0b3JlKVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIE1ldG9kbyBxdWUgZGV2dWVsdmUgbGFzIHRpZW5kYXMgcXVlIE5PIHNvbiBleGNsdXNpdmFzLlxuICAgICAqIEByZXR1cm5zIHtBcnJheTxTdG9yZT59IEFycmVnbG8gZGUgU3RvcmVcbiAgICAgKi9cbiAgICBnZXROb25FeGNsdXNpdmVTdG9yZXMgPSAoKSA9PiB0aGlzLnN0b3Jlcy52YWx1ZS5maWx0ZXIoc3RvcmUgPT4gIXN0b3JlLmV4Y2x1c2l2ZSApXG5cbiAgICBzZWxlY3RDaGFuZ2UgPSAoc2VsZWN0OiBzdHJpbmcpID0+IHtcbiAgICAgICAgdGhpcy5maWx0ZXJTdG9yZXMgPSBzZWxlY3QgIT09ICcnICYmIHRoaXMuc3RvcmVzQWxsXG4gICAgICAgICAgICA/IHRoaXMuc3RvcmVzQWxsLmZpbHRlcihzdG9yZSA9PiBzdG9yZS5wcm92aW5jZS5jb2RlID09IHNlbGVjdClcbiAgICAgICAgICAgIDogdGhpcy5zdG9yZXNBbGw7XG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuXG4gICAgaW5pdE1hcCgpOiB2b2lkIHtcblxuICAgICB0aGlzLnN0b3Jlc1NlcnZpY2Uuc3RvcmVzLnBpcGUoXG4gICAgICAgICBza2lwV2hpbGUoc3RvcmVzID0+ICFzdG9yZXMgfHwgc3RvcmVzLmxlbmd0aCA9PT0gMCkgLy8gT21pdGlyIHZhbG9yZXMgdmFjw61vc1xuICAgICAgICkuc3Vic2NyaWJlKFxuICAgICAgICAgKHJlcykgPT4ge1xuICAgICAgICAgICAvLyB0aGlzLnN0b3Jlcy5uZXh0KHJlcyA/PyBbXSk7IC8vIEVsaW1pbmFkbyBwYXJhIG5vIHNvYnJlc2NyaWJpciBlbCBsaXN0YWRvIHByaW5jaXBhbFxuXG4gICAgICAgICAgIHRoaXMuc3RvcmVzLnZhbHVlLmZvckVhY2goc3RvcmUgPT4ge1xuICAgICAgICAgICAgIGxldCBkYXRvcyA9IHtcbiAgICAgICAgICAgICAgIGlkOiBzdG9yZS5jb2RlLFxuICAgICAgICAgICAgICAgbGF0OiBwYXJzZUZsb2F0KHN0b3JlLmxhdGl0dWRlICE9PSB1bmRlZmluZWQgPyBzdG9yZS5sYXRpdHVkZS50b1N0cmluZygpIDogJzAnKSxcbiAgICAgICAgICAgICAgIGxuZzogcGFyc2VGbG9hdChzdG9yZS5sb25naXR1ZGUgIT09IHVuZGVmaW5lZCA/IHN0b3JlLmxvbmdpdHVkZS50b1N0cmluZygpIDogJzAnKSxcbiAgICAgICAgICAgICAgIHRpdGxlOiBzdG9yZS5uYW1lICsgJyAtICcgKyBzdG9yZS5hZGRyZXNzLFxuICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHN0b3JlLnBob25lLFxuICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAvLyAgY29uc29sZS5sb2coZGF0b3MpXG4gICAgICAgICAgICAgdGhpcy5sb2NhdGlvbnMucHVzaChkYXRvcyk7XG5cbiAgICAgICAgICAgfSk7XG4gICAgICAgICAgIGNvbnN0IGJvdW5kcyA9IG5ldyBnb29nbGUubWFwcy5MYXRMbmdCb3VuZHMoKTtcbiAgICAgICAgICAgdGhpcy5sb2NhdGlvbnMuZm9yRWFjaChsb2NhdGlvbiA9PiB7XG4gICAgICAgICAgICAgYm91bmRzLmV4dGVuZChuZXcgZ29vZ2xlLm1hcHMuTGF0TG5nKGxvY2F0aW9uLmxhdCwgbG9jYXRpb24ubG5nKSk7XG4gICAgICAgICAgIH0pO1xuICAgICAgICAgICBjb25zdCBjZW50ZXIgPSBib3VuZHMuZ2V0Q2VudGVyKCk7XG4gICAgICAgICAgIGNvbnN0IHN0eWxlID0gW3tcImVsZW1lbnRUeXBlXCI6XCJnZW9tZXRyeVwiLFwic3R5bGVyc1wiOlt7XCJjb2xvclwiOlwiIzIxMjEyMVwifV19LHtcImVsZW1lbnRUeXBlXCI6XCJsYWJlbHMuaWNvblwiLFwic3R5bGVyc1wiOlt7XCJ2aXNpYmlsaXR5XCI6XCJvZmZcIn1dfSx7XCJlbGVtZW50VHlwZVwiOlwibGFiZWxzLnRleHQuZmlsbFwiLFwic3R5bGVyc1wiOlt7XCJjb2xvclwiOlwiIzc1NzU3NVwifV19LHtcImVsZW1lbnRUeXBlXCI6XCJsYWJlbHMudGV4dC5zdHJva2VcIixcInN0eWxlcnNcIjpbe1wiY29sb3JcIjpcIiMyMTIxMjFcIn1dfSx7XCJmZWF0dXJlVHlwZVwiOlwiYWRtaW5pc3RyYXRpdmVcIixcImVsZW1lbnRUeXBlXCI6XCJnZW9tZXRyeVwiLFwic3R5bGVyc1wiOlt7XCJjb2xvclwiOlwiIzc1NzU3NVwifV19LHtcImZlYXR1cmVUeXBlXCI6XCJhZG1pbmlzdHJhdGl2ZS5jb3VudHJ5XCIsXCJlbGVtZW50VHlwZVwiOlwibGFiZWxzLnRleHQuZmlsbFwiLFwic3R5bGVyc1wiOlt7XCJjb2xvclwiOlwiIzllOWU5ZVwifV19LHtcImZlYXR1cmVUeXBlXCI6XCJhZG1pbmlzdHJhdGl2ZS5sb2NhbGl0eVwiLFwiZWxlbWVudFR5cGVcIjpcImxhYmVscy50ZXh0LmZpbGxcIixcInN0eWxlcnNcIjpbe1wiY29sb3JcIjpcIiNiZGJkYmRcIn1dfSx7XCJmZWF0dXJlVHlwZVwiOlwicG9pXCIsXCJlbGVtZW50VHlwZVwiOlwibGFiZWxzLnRleHQuZmlsbFwiLFwic3R5bGVyc1wiOlt7XCJjb2xvclwiOlwiIzc1NzU3NVwifV19LHtcImZlYXR1cmVUeXBlXCI6XCJwb2kuYnVzaW5lc3NcIixcInN0eWxlcnNcIjpbe1widmlzaWJpbGl0eVwiOlwib2ZmXCJ9XX0se1wiZmVhdHVyZVR5cGVcIjpcInBvaS5wYXJrXCIsXCJlbGVtZW50VHlwZVwiOlwiZ2VvbWV0cnlcIixcInN0eWxlcnNcIjpbe1wiY29sb3JcIjpcIiMxODE4MThcIn1dfSx7XCJmZWF0dXJlVHlwZVwiOlwicG9pLnBhcmtcIixcImVsZW1lbnRUeXBlXCI6XCJsYWJlbHMudGV4dC5maWxsXCIsXCJzdHlsZXJzXCI6W3tcImNvbG9yXCI6XCIjNjE2MTYxXCJ9XX0se1wiZmVhdHVyZVR5cGVcIjpcInBvaS5wYXJrXCIsXCJlbGVtZW50VHlwZVwiOlwibGFiZWxzLnRleHQuc3Ryb2tlXCIsXCJzdHlsZXJzXCI6W3tcImNvbG9yXCI6XCIjMWIxYjFiXCJ9XX0se1wiZmVhdHVyZVR5cGVcIjpcInJvYWRcIixcImVsZW1lbnRUeXBlXCI6XCJnZW9tZXRyeS5maWxsXCIsXCJzdHlsZXJzXCI6W3tcImNvbG9yXCI6XCIjMmMyYzJjXCJ9XX0se1wiZmVhdHVyZVR5cGVcIjpcInJvYWRcIixcImVsZW1lbnRUeXBlXCI6XCJsYWJlbHMuaWNvblwiLFwic3R5bGVyc1wiOlt7XCJ2aXNpYmlsaXR5XCI6XCJvZmZcIn1dfSx7XCJmZWF0dXJlVHlwZVwiOlwicm9hZFwiLFwiZWxlbWVudFR5cGVcIjpcImxhYmVscy50ZXh0LmZpbGxcIixcInN0eWxlcnNcIjpbe1wiY29sb3JcIjpcIiM4YThhOGFcIn1dfSx7XCJmZWF0dXJlVHlwZVwiOlwicm9hZC5hcnRlcmlhbFwiLFwiZWxlbWVudFR5cGVcIjpcImdlb21ldHJ5XCIsXCJzdHlsZXJzXCI6W3tcImNvbG9yXCI6XCIjMzczNzM3XCJ9XX0se1wiZmVhdHVyZVR5cGVcIjpcInJvYWQuYXJ0ZXJpYWxcIixcImVsZW1lbnRUeXBlXCI6XCJsYWJlbHNcIixcInN0eWxlcnNcIjpbe1widmlzaWJpbGl0eVwiOlwib2ZmXCJ9XX0se1wiZmVhdHVyZVR5cGVcIjpcInJvYWQuaGlnaHdheVwiLFwiZWxlbWVudFR5cGVcIjpcImdlb21ldHJ5XCIsXCJzdHlsZXJzXCI6W3tcImNvbG9yXCI6XCIjM2MzYzNjXCJ9XX0se1wiZmVhdHVyZVR5cGVcIjpcInJvYWQuaGlnaHdheVwiLFwiZWxlbWVudFR5cGVcIjpcImxhYmVsc1wiLFwic3R5bGVyc1wiOlt7XCJ2aXNpYmlsaXR5XCI6XCJvZmZcIn1dfSx7XCJmZWF0dXJlVHlwZVwiOlwicm9hZC5oaWdod2F5LmNvbnRyb2xsZWRfYWNjZXNzXCIsXCJlbGVtZW50VHlwZVwiOlwiZ2VvbWV0cnlcIixcInN0eWxlcnNcIjpbe1wiY29sb3JcIjpcIiM0ZTRlNGVcIn1dfSx7XCJmZWF0dXJlVHlwZVwiOlwicm9hZC5sb2NhbFwiLFwic3R5bGVyc1wiOlt7XCJ2aXNpYmlsaXR5XCI6XCJvZmZcIn1dfSx7XCJmZWF0dXJlVHlwZVwiOlwicm9hZC5sb2NhbFwiLFwiZWxlbWVudFR5cGVcIjpcImxhYmVscy50ZXh0LmZpbGxcIixcInN0eWxlcnNcIjpbe1wiY29sb3JcIjpcIiM2MTYxNjFcIn1dfSx7XCJmZWF0dXJlVHlwZVwiOlwidHJhbnNpdFwiLFwic3R5bGVyc1wiOlt7XCJ2aXNpYmlsaXR5XCI6XCJvZmZcIn1dfSx7XCJmZWF0dXJlVHlwZVwiOlwidHJhbnNpdFwiLFwiZWxlbWVudFR5cGVcIjpcImxhYmVscy50ZXh0LmZpbGxcIixcInN0eWxlcnNcIjpbe1wiY29sb3JcIjpcIiM3NTc1NzVcIn1dfSx7XCJmZWF0dXJlVHlwZVwiOlwid2F0ZXJcIixcImVsZW1lbnRUeXBlXCI6XCJnZW9tZXRyeVwiLFwic3R5bGVyc1wiOlt7XCJjb2xvclwiOlwiIzAwMDAwMFwifV19LHtcImZlYXR1cmVUeXBlXCI6XCJ3YXRlclwiLFwiZWxlbWVudFR5cGVcIjpcImxhYmVscy50ZXh0LmZpbGxcIixcInN0eWxlcnNcIjpbe1wiY29sb3JcIjpcIiMzZDNkM2RcIn1dfV07XG4gICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWFwID0gbmV3IGdvb2dsZS5tYXBzLk1hcChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWFwJyksIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgem9vbTogMTIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlbnRlcjogY2VudGVyLCAvLyBDZW50cmFyIGVsIG1hcGEgZW4gZWwgY2VudHJvIGNhbGN1bGFkb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZXM6IHN0eWxlIC8vIEFwbGljYSBsb3MgZXN0aWxvcyBwZXJzb25hbGl6YWRvc1xuICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgIHRoaXMubG9jYXRpb25zLmZvckVhY2gobG9jYXRpb24gPT4ge1xuICAgICAgICAgICAgIGNvbnN0IG1hcmtlciA9IG5ldyBnb29nbGUubWFwcy5NYXJrZXIoe1xuICAgICAgICAgICAgICAgcG9zaXRpb246IHsgbGF0OiBsb2NhdGlvbi5sYXQsIGxuZzogbG9jYXRpb24ubG5nIH0sXG4gICAgICAgICAgICAgICBtYXA6IHRoaXMubWFwLFxuICAgICAgICAgICAgICAgdGl0bGU6IGxvY2F0aW9uLnRpdGxlLFxuICAgICAgICAgICAgICAgaWNvbjoge1xuICAgICAgICAgICAgICAgIHVybDogXCIuLi8uLi8uLi9hc3NldHMvbG9jYXRpb24uc3ZnXCIsXG4gICAgICAgICAgICAgICAgc2NhbGVkU2l6ZTogbmV3IGdvb2dsZS5tYXBzLlNpemUoMzAsIDMwKVxuICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgIG1hcmtlci5zZXQoJ2lkJywgbG9jYXRpb24uaWQpOyAvLyBBc3NvY2lhdGUgbWFya2VyIHdpdGggaXRzIElEXG4gICAgICAgICAgICAgdGhpcy5tYXJrZXJzLnB1c2gobWFya2VyKTtcbiAgICAgICAgICAgICBtYXJrZXIuYWRkTGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGVsZW1lbnRvID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjb250ZW5lZG9yID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudG8gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChsb2NhdGlvbi5pZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVuZWRvciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdob21lJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnRvICYmIGNvbnRlbmVkb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgIGNvbnRlbmVkb3Iuc2Nyb2xsVG8oe1xuICAgICAgICAgICAgICAgICAgICAgICAgIHRvcDogZWxlbWVudG8ub2Zmc2V0VG9wIC0gY29udGVuZWRvci5vZmZzZXRUb3AgKyBjb250ZW5lZG9yLnNjcm9sbFRvcCxcbiAgICAgICAgICAgICAgICAgICAgICAgICBiZWhhdmlvcjogJ3Ntb290aCdcbiAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgaWYgKHRoaXMudWx0aW1vRWxlbWVudG9TZWxlY2Npb25hZG8gIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgIC8vIFF1aXRhciBsYSBjbGFzZSBkZWwgw7psdGltbyBlbGVtZW50byBzZWxlY2Npb25hZG9cbiAgICAgICAgICAgICAgICAgICAgIHRoaXMudWx0aW1vRWxlbWVudG9TZWxlY2Npb25hZG8uY2xhc3NMaXN0LnJlbW92ZSgnc2VsZWN0ZWQnKTtcbiAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgIC8vIEFncmVnYXIgdW5hIGNsYXNlIGFsIG51ZXZvIGVsZW1lbnRvIHNlbGVjY2lvbmFkb1xuICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudG8pIHtcbiAgICAgICAgICAgICAgICAgICBlbGVtZW50by5jbGFzc0xpc3QuYWRkKCdzZWxlY3RlZCcpO1xuICAgICAgICAgICAgICAgICAgIHRoaXMudWx0aW1vRWxlbWVudG9TZWxlY2Npb25hZG8gPSBlbGVtZW50bztcbiAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgIHRoaXMuc3RvcEJvdW5jZSgpO1xuICAgICAgICAgICAgICAgICBtYXJrZXIuc2V0QW5pbWF0aW9uKGdvb2dsZS5tYXBzLkFuaW1hdGlvbi5CT1VOQ0UpO1xuICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgdGhpcy5tYXAuZml0Qm91bmRzKGJvdW5kcyk7XG4gICAgICAgICB9LFxuICAgICAgICAgKGVycm9yOiBhbnkpID0+IHtcbiAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgYWwgb2J0ZW5lciBsYXMgdGllbmRhczonLCBlcnJvcik7XG4gICAgICAgICB9XG4gICAgICAgKTtcbiAgICAgICB9KTtcblxuICAgICB9XG5cbiAgIHNob3dTdG9yZU9uTWFwKHN0b3JlQ29kZTogc3RyaW5nKSB7XG4gICAgICAgdGhpcy5zdG9wQm91bmNlKCk7XG4gICAgICAgY29uc3QgbWFya2VyID0gdGhpcy5tYXJrZXJzLmZpbmQobSA9PiBtLmdldCgnaWQnKSA9PT0gc3RvcmVDb2RlKTtcbiAgICAgICAgICAgICBsZXQgZWxlbWVudG8gPSBudWxsO1xuICAgICAgICAgICAgIGlmICh0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgIGVsZW1lbnRvID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoc3RvcmVDb2RlKTtcbiAgICAgICAgICAgICB9XG4gICAgICAgaWYgKHRoaXMudWx0aW1vRWxlbWVudG9TZWxlY2Npb25hZG8gIT09IG51bGwpIHtcbiAgICAgICAgICAgIC8vIFF1aXRhciBsYSBjbGFzZSBkZWwgw7psdGltbyBlbGVtZW50byBzZWxlY2Npb25hZG9cbiAgICAgICAgICAgIHRoaXMudWx0aW1vRWxlbWVudG9TZWxlY2Npb25hZG8uY2xhc3NMaXN0LnJlbW92ZSgnc2VsZWN0ZWQnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEFncmVnYXIgdW5hIGNsYXNlIGFsIG51ZXZvIGVsZW1lbnRvIHNlbGVjY2lvbmFkb1xuICAgICAgICBpZiAoZWxlbWVudG8pIHtcbiAgICAgICAgICBlbGVtZW50by5jbGFzc0xpc3QuYWRkKCdzZWxlY3RlZCcpO1xuICAgICAgICAgIHRoaXMudWx0aW1vRWxlbWVudG9TZWxlY2Npb25hZG8gPSBlbGVtZW50bztcbiAgICAgICAgfVxuICAgICAgIGlmIChtYXJrZXIpIHtcbiAgICAgICAgICAgbWFya2VyLnNldEFuaW1hdGlvbihnb29nbGUubWFwcy5BbmltYXRpb24uQk9VTkNFKTtcbiAgICAgICB9XG4gICB9XG5cbiAgIHN0b3BCb3VuY2UoKXtcbiAgICAgICB0aGlzLm1hcmtlcnMuZm9yRWFjaChtYXJrZXIgPT4ge1xuICAgICAgICAgICAgbWFya2VyLnNldEFuaW1hdGlvbihudWxsKTtcbiAgICAgICAgfSk7XG4gICB9XG5cblxufVxuIiwiPCEtLSA8ZGl2IGNsYXNzPVwicm93IHctMTAwIG14LWF1dG8gbXktNCBweC0zIGJiLXMgYnQtbWQtcyBweS0xXCI+XG4gICAgPHN0cm9uZz57eyAnc3RvcmVzJyB8IHRyYW5zbGF0ZSB9fTwvc3Ryb25nPlxuPC9kaXY+XG5AaWYoc3RvcmVzKXtcbjxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1tZC0zIG9yZGVyLTEgb3JkZXItbWQtMVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCB3LTEwMFwiPlxuICAgICAgICAgICAgICAgIDxzZWxlY3QgKGNoYW5nZSk9XCJzZWxlY3RDaGFuZ2UoJGV2ZW50LnRhcmdldC52YWx1ZSlcIiBjbGFzcz1cInJvdW5kZWQtMCBmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJleGFtcGxlRm9ybUNvbnRyb2xTZWxlY3QxXCI+XG4gICAgICAgICAgICAgICAgICAgIDxvcHRpb24gc2VsZWN0ZWQgW3ZhbHVlXT1cIicnXCI+U2VsZWNjaW9uZSBwcm92aW5jaWE8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBbdmFsdWVdPVwiaXRlbS5jb2RlXCIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZ2V0UHJvdmljZXMoc3RvcmVzKVwiPiB7e2l0ZW0ubmFtZX19XG4gICAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgY29sLW1kLTMgb3JkZXItMyBvcmRlci1tZC0yXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXItZmx1aWQgc2Nyb2xsZWFibGVcIiAqbmdJZj1cImZpbHRlclN0b3JlcyAmJiBmaWx0ZXJTdG9yZXMubGVuZ3RoXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTFcIiAqbmdGb3I9XCJsZXQgc3RvcmUgb2YgZmlsdGVyU3RvcmVzOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiPlxuICAgICAgICAgICAgICAgICAgICA8aDYgY2xhc3M9XCJcIj48c3Ryb25nPnt7IHN0b3JlLm5hbWUgfX08L3N0cm9uZz48L2g2PlxuICAgICAgICAgICAgICAgICAgICA8bGFiZWw+e3sgc3RvcmUuYWRkcmVzcyB9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbD57eyBzdG9yZS5waG9uZSB9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgW2lubmVySHRtbF09XCJzdG9yZS5ub3RlXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXJpZ2h0XCI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhICpuZ0lmPVwic3RvcmUudXJsTWFwXCIgKGNsaWNrKT1cInVwZGF0ZU1hcCAoc3RvcmUudXJsTWFwKVwiIGNsYXNzPVwiY3VzdG9tLWFcIj5WZXIgbWFwYTwvYT5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNvbC0xMiBjb2wtbWQtNiBvcmRlci0yIG9yZGVyLW1kLTMgbXktNCBtdC1tZC0wXCI+XG5cbiAgICAgICAgPGlmcmFtZSBpZD1cIm1hcC1pZnJhbWVcIiBbc3JjXT1cInVybG1hcFwiIGZyYW1lYm9yZGVyPVwiMFwiPjwvaWZyYW1lPlxuICAgIDwvZGl2PlxuPC9kaXY+XG59QGVsc2Uge1xuPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LXJvdyBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIG15LTUgYWxpZ24taXRlbXMtY2VudGVyIGFsdG8tdG90YWxcIj5cbiAgICA8aDUgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPnt7ICduby1zdG9yZXMnIHwgdHJhbnNsYXRlIH19PC9oNT5cbjwvZGl2PlxufVxuXG5cblxuPG5nLXRlbXBsYXRlICNsb2FkaW5nPlxuICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIG15LTVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGFwcC1sb2FkaW5nLWZ1bGwtZWM+PC9hcHAtbG9hZGluZy1mdWxsLWVjPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT4gLS0+Il19
@@ -45,14 +45,14 @@ export class VariantsEcComponent {
45
45
  return products[index].stock;
46
46
  }
47
47
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: VariantsEcComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
48
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: VariantsEcComponent, isStandalone: true, selector: "app-variants-ec", inputs: { setImages: "setImages", product: "product" }, ngImport: i0, template: "@if(options$ | async; as options){\r\n@if(options && options.length ){\r\n@for(option of options; track $index){\r\n\r\n@switch (option.type) {\r\n@case ('color') {\r\n@if(option.values && option.values.length > 1) {\r\n<h5>{{option.name | uppercase}}</h5>\r\n<div class=\"row w-100 mx-auto pb-3 mb-3\">\r\n @for(value of option.values; track $index; let x = $index){\r\n <a role=\"button\" (click)=\"setValuesImages(value.name, option.code) && setOption(option.code, value.name)\"\r\n [class]=\"'rounded-circle color-item m-1 ' + (value.selected ? 'shadow' : '')\" [id]=\"x + value.name\"\r\n [style.border]=\"'1px solid black'\"\r\n [style.background]=\"value.image && (value.image.endsWith('.jpg') || value.image.endsWith('.png') || value.image.endsWith('.svg')) ? 'url(' + this.consts.mediaUrl(value.image) + ')' : '#' + value.name\"\r\n [style.background-size]=\"'cover'\" [style.background-repeat]=\"'no-repeat'\" [style.background-position]=\"'center'\"\r\n [style.box-shadow]=\"(value.selected ? '0px 0px 0px 2px #000' : 'none')\"></a>\r\n }\r\n</div>\r\n}\r\n}\r\n@case ('size') {\r\n@if(option.values && option.values.length > 1) {\r\n<h5>{{option.name | uppercase}}</h5>\r\n<div class=\"row w-100 mx-auto pb-3\">\r\n <div class=\"btn-group ps-0\">\r\n <a class=\"btn btn-light dropdown-toggle cursor-pointer border border-1 d-flex flex-row justify-content-between align-items-center\"\r\n data-bs-toggle=\"dropdown\" aria-expanded=\"false\"> {{ itemSelected ? itemSelected :\r\n getValueSelect(option.values)}}</a>\r\n <ul class=\"dropdown-menu\">\r\n @for(value of option.values; track $index; let x = $index){\r\n <li [class]=\" (value.selected ? 'selected-size' : 'unselected-size')\">\r\n <a [class]=\"'dropdown-item cursor-pointer '+ (value.selected ? 'text-light' : '')\"\r\n (click)=\"chosenOption(option.code, value.name)\">{{ value.name }}</a>\r\n </li>\r\n }\r\n </ul>\r\n </div>\r\n\r\n</div>\r\n}\r\n}\r\n@default {\r\n\r\n}\r\n}\r\n}\r\n}\r\n}", styles: [".circle{width:32px;height:32px;border-radius:50%}.shadow{border:1px solid #000}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1.UpperCasePipe, name: "uppercase" }] });
48
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: VariantsEcComponent, isStandalone: true, selector: "app-variants-ec", inputs: { setImages: "setImages", product: "product" }, ngImport: i0, template: "@if(options$ | async; as options){\n@if(options && options.length ){\n@for(option of options; track $index){\n\n@switch (option.type) {\n@case ('color') {\n@if(option.values && option.values.length > 1) {\n<h5>{{option.name | uppercase}}</h5>\n<div class=\"row w-100 mx-auto pb-3 mb-3\">\n @for(value of option.values; track $index; let x = $index){\n <a role=\"button\" (click)=\"setValuesImages(value.name, option.code) && setOption(option.code, value.name)\"\n [class]=\"'rounded-circle color-item m-1 ' + (value.selected ? 'shadow' : '')\" [id]=\"x + value.name\"\n [style.border]=\"'1px solid black'\"\n [style.background]=\"value.image && (value.image.endsWith('.jpg') || value.image.endsWith('.png') || value.image.endsWith('.svg')) ? 'url(' + this.consts.mediaUrl(value.image) + ')' : '#' + value.name\"\n [style.background-size]=\"'cover'\" [style.background-repeat]=\"'no-repeat'\" [style.background-position]=\"'center'\"\n [style.box-shadow]=\"(value.selected ? '0px 0px 0px 2px #000' : 'none')\"></a>\n }\n</div>\n}\n}\n@case ('size') {\n@if(option.values && option.values.length > 1) {\n<h5>{{option.name | uppercase}}</h5>\n<div class=\"row w-100 mx-auto pb-3\">\n <div class=\"btn-group ps-0\">\n <a class=\"btn btn-light dropdown-toggle cursor-pointer border border-1 d-flex flex-row justify-content-between align-items-center\"\n data-bs-toggle=\"dropdown\" aria-expanded=\"false\"> {{ itemSelected ? itemSelected :\n getValueSelect(option.values)}}</a>\n <ul class=\"dropdown-menu\">\n @for(value of option.values; track $index; let x = $index){\n <li [class]=\" (value.selected ? 'selected-size' : 'unselected-size')\">\n <a [class]=\"'dropdown-item cursor-pointer '+ (value.selected ? 'text-light' : '')\"\n (click)=\"chosenOption(option.code, value.name)\">{{ value.name }}</a>\n </li>\n }\n </ul>\n </div>\n\n</div>\n}\n}\n@default {\n\n}\n}\n}\n}\n}", styles: [".circle{width:32px;height:32px;border-radius:50%}.shadow{border:1px solid #000}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1.UpperCasePipe, name: "uppercase" }] });
49
49
  }
50
50
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: VariantsEcComponent, decorators: [{
51
51
  type: Component,
52
- args: [{ selector: 'app-variants-ec', standalone: true, imports: [AsyncPipe, CommonModule], template: "@if(options$ | async; as options){\r\n@if(options && options.length ){\r\n@for(option of options; track $index){\r\n\r\n@switch (option.type) {\r\n@case ('color') {\r\n@if(option.values && option.values.length > 1) {\r\n<h5>{{option.name | uppercase}}</h5>\r\n<div class=\"row w-100 mx-auto pb-3 mb-3\">\r\n @for(value of option.values; track $index; let x = $index){\r\n <a role=\"button\" (click)=\"setValuesImages(value.name, option.code) && setOption(option.code, value.name)\"\r\n [class]=\"'rounded-circle color-item m-1 ' + (value.selected ? 'shadow' : '')\" [id]=\"x + value.name\"\r\n [style.border]=\"'1px solid black'\"\r\n [style.background]=\"value.image && (value.image.endsWith('.jpg') || value.image.endsWith('.png') || value.image.endsWith('.svg')) ? 'url(' + this.consts.mediaUrl(value.image) + ')' : '#' + value.name\"\r\n [style.background-size]=\"'cover'\" [style.background-repeat]=\"'no-repeat'\" [style.background-position]=\"'center'\"\r\n [style.box-shadow]=\"(value.selected ? '0px 0px 0px 2px #000' : 'none')\"></a>\r\n }\r\n</div>\r\n}\r\n}\r\n@case ('size') {\r\n@if(option.values && option.values.length > 1) {\r\n<h5>{{option.name | uppercase}}</h5>\r\n<div class=\"row w-100 mx-auto pb-3\">\r\n <div class=\"btn-group ps-0\">\r\n <a class=\"btn btn-light dropdown-toggle cursor-pointer border border-1 d-flex flex-row justify-content-between align-items-center\"\r\n data-bs-toggle=\"dropdown\" aria-expanded=\"false\"> {{ itemSelected ? itemSelected :\r\n getValueSelect(option.values)}}</a>\r\n <ul class=\"dropdown-menu\">\r\n @for(value of option.values; track $index; let x = $index){\r\n <li [class]=\" (value.selected ? 'selected-size' : 'unselected-size')\">\r\n <a [class]=\"'dropdown-item cursor-pointer '+ (value.selected ? 'text-light' : '')\"\r\n (click)=\"chosenOption(option.code, value.name)\">{{ value.name }}</a>\r\n </li>\r\n }\r\n </ul>\r\n </div>\r\n\r\n</div>\r\n}\r\n}\r\n@default {\r\n\r\n}\r\n}\r\n}\r\n}\r\n}", styles: [".circle{width:32px;height:32px;border-radius:50%}.shadow{border:1px solid #000}\n"] }]
52
+ args: [{ selector: 'app-variants-ec', standalone: true, imports: [AsyncPipe, CommonModule], template: "@if(options$ | async; as options){\n@if(options && options.length ){\n@for(option of options; track $index){\n\n@switch (option.type) {\n@case ('color') {\n@if(option.values && option.values.length > 1) {\n<h5>{{option.name | uppercase}}</h5>\n<div class=\"row w-100 mx-auto pb-3 mb-3\">\n @for(value of option.values; track $index; let x = $index){\n <a role=\"button\" (click)=\"setValuesImages(value.name, option.code) && setOption(option.code, value.name)\"\n [class]=\"'rounded-circle color-item m-1 ' + (value.selected ? 'shadow' : '')\" [id]=\"x + value.name\"\n [style.border]=\"'1px solid black'\"\n [style.background]=\"value.image && (value.image.endsWith('.jpg') || value.image.endsWith('.png') || value.image.endsWith('.svg')) ? 'url(' + this.consts.mediaUrl(value.image) + ')' : '#' + value.name\"\n [style.background-size]=\"'cover'\" [style.background-repeat]=\"'no-repeat'\" [style.background-position]=\"'center'\"\n [style.box-shadow]=\"(value.selected ? '0px 0px 0px 2px #000' : 'none')\"></a>\n }\n</div>\n}\n}\n@case ('size') {\n@if(option.values && option.values.length > 1) {\n<h5>{{option.name | uppercase}}</h5>\n<div class=\"row w-100 mx-auto pb-3\">\n <div class=\"btn-group ps-0\">\n <a class=\"btn btn-light dropdown-toggle cursor-pointer border border-1 d-flex flex-row justify-content-between align-items-center\"\n data-bs-toggle=\"dropdown\" aria-expanded=\"false\"> {{ itemSelected ? itemSelected :\n getValueSelect(option.values)}}</a>\n <ul class=\"dropdown-menu\">\n @for(value of option.values; track $index; let x = $index){\n <li [class]=\" (value.selected ? 'selected-size' : 'unselected-size')\">\n <a [class]=\"'dropdown-item cursor-pointer '+ (value.selected ? 'text-light' : '')\"\n (click)=\"chosenOption(option.code, value.name)\">{{ value.name }}</a>\n </li>\n }\n </ul>\n </div>\n\n</div>\n}\n}\n@default {\n\n}\n}\n}\n}\n}", styles: [".circle{width:32px;height:32px;border-radius:50%}.shadow{border:1px solid #000}\n"] }]
53
53
  }], propDecorators: { setImages: [{
54
54
  type: Input
55
55
  }], product: [{
56
56
  type: Input
57
57
  }] } });
58
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFyaWFudHMtZWMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLWNvbXBvbmVudHMvdmFyaWFudHMtZWMvdmFyaWFudHMtZWMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLWNvbXBvbmVudHMvdmFyaWFudHMtZWMvdmFyaWFudHMtZWMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0saUJBQWlCLENBQUM7OztBQVl2RCxNQUFNLE9BQU8sbUJBQW1CO0lBQ3RCLHNCQUFzQixHQUF5QixNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUM1RSxrQkFBa0IsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQTtJQUUvQyxNQUFNLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUE7SUFDckMsTUFBTSxHQUFRLEVBQUUsQ0FBQztJQUNqQixXQUFXLEdBQW1DLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLEVBQUUsQ0FBQTtJQUdyRixRQUFRLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFFBQVEsQ0FBQztJQUM5QyxTQUFTLENBQXNDO0lBQy9DLE9BQU8sQ0FBTTtJQUNmLFlBQVksQ0FBTTtJQUNuQixRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQTtJQUN4Qzs7T0FFRztJQUNJLFNBQVMsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFBO0lBR25ELFNBQVMsQ0FBQyxVQUFlLEVBQUUsV0FBZ0I7UUFDekMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDL0QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsVUFBVSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFDRCxlQUFlLEdBQUcsQ0FBQyxLQUFVLEVBQUUsT0FBWSxFQUFFLEVBQUU7UUFDN0MsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDakMsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQyxDQUFBO0lBQ0QsWUFBWSxHQUFHLENBQUMsTUFBVyxFQUFFLEtBQVUsRUFBRSxFQUFFO1FBQ3pDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFBO1FBQzdCLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFBO1FBQ3pCLE9BQU8sSUFBSSxDQUFBO0lBQ2IsQ0FBQyxDQUFBO0lBRUQsY0FBYyxHQUFHLENBQUMsT0FBYyxFQUFFLEVBQUU7UUFDbEMsSUFBSSxHQUFHLEdBQVEsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUNwRCxPQUFPLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUE7SUFDaEUsQ0FBQyxDQUFBO0lBQ0EsWUFBWSxDQUFDLEtBQWE7UUFFckIsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUE7UUFDcEMsT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBRWpDLENBQUM7d0dBN0NRLG1CQUFtQjs0RkFBbkIsbUJBQW1CLG1JQ2pCaEMsNGxFQStDQyxzSURsQ1csU0FBUyw2Q0FBRSxZQUFZOzs0RkFJdEIsbUJBQW1CO2tCQVAvQixTQUFTOytCQUNFLGlCQUFpQixjQUNmLElBQUksV0FDUCxDQUFDLFNBQVMsRUFBRSxZQUFZLENBQUM7OEJBY3pCLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBpbmplY3QsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFByb2R1Y3REZXRhaWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZWMtc2VydmljZXMnO1xyXG5pbXBvcnQgeyBQYXJhbWV0ZXJzU2VydmljZSB9IGZyb20gJy4uLy4uL2VjLXNlcnZpY2VzJztcclxuaW1wb3J0IHsgQXN5bmNQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29yZUNvbnN0YW50c1NlcnZpY2UgfSBmcm9tIFwiLi4vLi4vY29uc3RhbnRzXCI7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgUGFyYW1ldGVyIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtdmFyaWFudHMtZWMnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW0FzeW5jUGlwZSwgQ29tbW9uTW9kdWxlXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vdmFyaWFudHMtZWMuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi92YXJpYW50cy1lYy5jb21wb25lbnQuc2NzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIFZhcmlhbnRzRWNDb21wb25lbnQge1xyXG4gIHByaXZhdGUgX3Byb2R1Y3REZXRhaWxzU2VydmljZTogUHJvZHVjdERldGFpbFNlcnZpY2UgPSBpbmplY3QoUHJvZHVjdERldGFpbFNlcnZpY2UpO1xyXG4gIHByaXZhdGUgX3BhcmFtZXRlcnNTZXJ2aWNlID0gaW5qZWN0KFBhcmFtZXRlcnNTZXJ2aWNlKVxyXG5cclxuICBwdWJsaWMgY29uc3RzID0gaW5qZWN0KENvcmVDb25zdGFudHNTZXJ2aWNlKVxyXG4gIHB1YmxpYyBwYXJhbXM6IGFueSA9IHt9O1xyXG4gIHB1YmxpYyBwYXJhbWV0ZXJzJDogT2JzZXJ2YWJsZTxQYXJhbWV0ZXJbXSB8IG51bGw+ID0gdGhpcy5fcGFyYW1ldGVyc1NlcnZpY2UuZ2V0UGFyYW1ldGVycygpXHJcblxyXG4gIFxyXG4gIHB1YmxpYyBvcHRpb25zJCA9IHRoaXMuX3Byb2R1Y3REZXRhaWxzU2VydmljZS5vcHRpb25zJDtcclxuICBASW5wdXQoKSBzZXRJbWFnZXM/OiAoY29sb3I6IGFueSwgb3B0Q29kZTogYW55KSA9PiB2b2lkO1xyXG4gIEBJbnB1dCgpIHByb2R1Y3Q6IGFueTtcclxuICBwdWJsaWMgaXRlbVNlbGVjdGVkOiBhbnk7XHJcblx0cHVibGljIG1lZGlhVXJsID0gdGhpcy5jb25zdHMubWVkaWFVcmwoKVxyXG5cdC8qKlxyXG5cdCAqIEZ1bmNpb24gcGFyYSBzYWJlciBzaSBleGlzdGVuIHVuIHBhcmFtZXRyby4gXHJcblx0ICovXHJcblx0cHVibGljIGhhc1BhcmFtcyA9IHRoaXMuX3BhcmFtZXRlcnNTZXJ2aWNlLmhhc1BhcmFtc1xyXG5cclxuXHJcbiAgc2V0T3B0aW9uKG9wdGlvbkNvZGU6IGFueSwgb3B0aW9uVmFsdWU6IGFueSkge1xyXG4gICAgdGhpcy5fcHJvZHVjdERldGFpbHNTZXJ2aWNlLnNldE9wdGlvbihvcHRpb25Db2RlLCBvcHRpb25WYWx1ZSk7XHJcbiAgICBjb25zb2xlLmxvZygnT3B0aW9uIHNldDonLCBvcHRpb25Db2RlLCBvcHRpb25WYWx1ZSk7XHJcbiAgfVxyXG4gIHNldFZhbHVlc0ltYWdlcyA9IChjb2xvcjogYW55LCBvcHRDb2RlOiBhbnkpID0+IHtcclxuICAgIGlmICh0aGlzLnNldEltYWdlcykge1xyXG4gICAgICB0aGlzLnNldEltYWdlcyhjb2xvciwgb3B0Q29kZSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcbiAgY2hvc2VuT3B0aW9uID0gKG9wdGlvbjogYW55LCB2YWx1ZTogYW55KSA9PiB7XHJcbiAgICB0aGlzLnNldE9wdGlvbihvcHRpb24sIHZhbHVlKVxyXG4gICAgdGhpcy5pdGVtU2VsZWN0ZWQgPSB2YWx1ZVxyXG4gICAgcmV0dXJuIHRydWVcclxuICB9XHJcblxyXG4gIGdldFZhbHVlU2VsZWN0ID0gKG9wdGlvbnM6IGFueVtdKSA9PiB7XHJcbiAgICBsZXQgcmVzOiBhbnkgPSBvcHRpb25zLmZpbHRlcihlbGVtID0+IGVsZW0uc2VsZWN0ZWQpXHJcbiAgICByZXR1cm4gcmVzICYmIChyZXMubGVuZ3RoID4gMCkgPyByZXNbMF0ubmFtZSA6IG9wdGlvbnNbMF0ubmFtZVxyXG4gIH1cclxuICAgcmV2aXNhclN0b2NrKGluZGV4OiBudW1iZXIpIHtcclxuXHJcbiAgICAgICAgbGV0IHByb2R1Y3RzID0gdGhpcy5wcm9kdWN0LnZhcmlhbnRzXHJcbiAgICAgICAgcmV0dXJuIHByb2R1Y3RzW2luZGV4XS5zdG9jaztcclxuXHJcbiAgICB9XHJcbn1cclxuIiwiQGlmKG9wdGlvbnMkIHwgYXN5bmM7IGFzIG9wdGlvbnMpe1xyXG5AaWYob3B0aW9ucyAmJiBvcHRpb25zLmxlbmd0aCApe1xyXG5AZm9yKG9wdGlvbiBvZiBvcHRpb25zOyB0cmFjayAkaW5kZXgpe1xyXG5cclxuQHN3aXRjaCAob3B0aW9uLnR5cGUpIHtcclxuQGNhc2UgKCdjb2xvcicpIHtcclxuQGlmKG9wdGlvbi52YWx1ZXMgJiYgb3B0aW9uLnZhbHVlcy5sZW5ndGggPiAxKSB7XHJcbjxoNT57e29wdGlvbi5uYW1lIHwgdXBwZXJjYXNlfX08L2g1PlxyXG48ZGl2IGNsYXNzPVwicm93IHctMTAwIG14LWF1dG8gcGItMyBtYi0zXCI+XHJcbiAgICBAZm9yKHZhbHVlIG9mIG9wdGlvbi52YWx1ZXM7IHRyYWNrICRpbmRleDsgbGV0IHggPSAkaW5kZXgpe1xyXG4gICAgPGEgcm9sZT1cImJ1dHRvblwiIChjbGljayk9XCJzZXRWYWx1ZXNJbWFnZXModmFsdWUubmFtZSwgb3B0aW9uLmNvZGUpICYmIHNldE9wdGlvbihvcHRpb24uY29kZSwgdmFsdWUubmFtZSlcIlxyXG4gICAgICAgIFtjbGFzc109XCIncm91bmRlZC1jaXJjbGUgY29sb3ItaXRlbSBtLTEgJyArICh2YWx1ZS5zZWxlY3RlZCA/ICdzaGFkb3cnIDogJycpXCIgW2lkXT1cInggKyB2YWx1ZS5uYW1lXCJcclxuICAgICAgICBbc3R5bGUuYm9yZGVyXT1cIicxcHggc29saWQgYmxhY2snXCJcclxuICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJ2YWx1ZS5pbWFnZSAmJiAodmFsdWUuaW1hZ2UuZW5kc1dpdGgoJy5qcGcnKSB8fCB2YWx1ZS5pbWFnZS5lbmRzV2l0aCgnLnBuZycpIHx8IHZhbHVlLmltYWdlLmVuZHNXaXRoKCcuc3ZnJykpID8gJ3VybCgnICsgdGhpcy5jb25zdHMubWVkaWFVcmwodmFsdWUuaW1hZ2UpICsgJyknIDogJyMnICsgdmFsdWUubmFtZVwiXHJcbiAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtc2l6ZV09XCInY292ZXInXCIgW3N0eWxlLmJhY2tncm91bmQtcmVwZWF0XT1cIiduby1yZXBlYXQnXCIgW3N0eWxlLmJhY2tncm91bmQtcG9zaXRpb25dPVwiJ2NlbnRlcidcIlxyXG4gICAgICAgIFtzdHlsZS5ib3gtc2hhZG93XT1cIih2YWx1ZS5zZWxlY3RlZCA/ICcwcHggMHB4IDBweCAycHggIzAwMCcgOiAnbm9uZScpXCI+PC9hPlxyXG4gICAgfVxyXG48L2Rpdj5cclxufVxyXG59XHJcbkBjYXNlICgnc2l6ZScpIHtcclxuQGlmKG9wdGlvbi52YWx1ZXMgJiYgb3B0aW9uLnZhbHVlcy5sZW5ndGggPiAxKSB7XHJcbjxoNT57e29wdGlvbi5uYW1lIHwgdXBwZXJjYXNlfX08L2g1PlxyXG48ZGl2IGNsYXNzPVwicm93IHctMTAwIG14LWF1dG8gcGItM1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cImJ0bi1ncm91cCBwcy0wXCI+XHJcbiAgICAgICAgPGEgY2xhc3M9XCJidG4gYnRuLWxpZ2h0IGRyb3Bkb3duLXRvZ2dsZSBjdXJzb3ItcG9pbnRlciBib3JkZXIgYm9yZGVyLTEgZC1mbGV4IGZsZXgtcm93IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICAgIGRhdGEtYnMtdG9nZ2xlPVwiZHJvcGRvd25cIiBhcmlhLWV4cGFuZGVkPVwiZmFsc2VcIj4ge3sgaXRlbVNlbGVjdGVkID8gaXRlbVNlbGVjdGVkIDpcclxuICAgICAgICAgICAgZ2V0VmFsdWVTZWxlY3Qob3B0aW9uLnZhbHVlcyl9fTwvYT5cclxuICAgICAgICA8dWwgY2xhc3M9XCJkcm9wZG93bi1tZW51XCI+XHJcbiAgICAgICAgICAgIEBmb3IodmFsdWUgb2Ygb3B0aW9uLnZhbHVlczsgdHJhY2sgJGluZGV4OyBsZXQgeCA9ICRpbmRleCl7XHJcbiAgICAgICAgICAgIDxsaSBbY2xhc3NdPVwiICh2YWx1ZS5zZWxlY3RlZCA/ICdzZWxlY3RlZC1zaXplJyA6ICd1bnNlbGVjdGVkLXNpemUnKVwiPlxyXG4gICAgICAgICAgICAgICAgPGEgW2NsYXNzXT1cIidkcm9wZG93bi1pdGVtIGN1cnNvci1wb2ludGVyICcrICh2YWx1ZS5zZWxlY3RlZCA/ICd0ZXh0LWxpZ2h0JyA6ICcnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNob3Nlbk9wdGlvbihvcHRpb24uY29kZSwgdmFsdWUubmFtZSlcIj57eyB2YWx1ZS5uYW1lIH19PC9hPlxyXG4gICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgPC91bD5cclxuICAgIDwvZGl2PlxyXG5cclxuPC9kaXY+XHJcbn1cclxufVxyXG5AZGVmYXVsdCB7XHJcblxyXG59XHJcbn1cclxufVxyXG59XHJcbn0iXX0=
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFyaWFudHMtZWMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLWNvbXBvbmVudHMvdmFyaWFudHMtZWMvdmFyaWFudHMtZWMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLWNvbXBvbmVudHMvdmFyaWFudHMtZWMvdmFyaWFudHMtZWMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0saUJBQWlCLENBQUM7OztBQVl2RCxNQUFNLE9BQU8sbUJBQW1CO0lBQ3RCLHNCQUFzQixHQUF5QixNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUM1RSxrQkFBa0IsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQTtJQUUvQyxNQUFNLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUE7SUFDckMsTUFBTSxHQUFRLEVBQUUsQ0FBQztJQUNqQixXQUFXLEdBQW1DLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLEVBQUUsQ0FBQTtJQUdyRixRQUFRLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFFBQVEsQ0FBQztJQUM5QyxTQUFTLENBQXNDO0lBQy9DLE9BQU8sQ0FBTTtJQUNmLFlBQVksQ0FBTTtJQUNuQixRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQTtJQUN4Qzs7T0FFRztJQUNJLFNBQVMsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFBO0lBR25ELFNBQVMsQ0FBQyxVQUFlLEVBQUUsV0FBZ0I7UUFDekMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDL0QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsVUFBVSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFDRCxlQUFlLEdBQUcsQ0FBQyxLQUFVLEVBQUUsT0FBWSxFQUFFLEVBQUU7UUFDN0MsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDakMsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQyxDQUFBO0lBQ0QsWUFBWSxHQUFHLENBQUMsTUFBVyxFQUFFLEtBQVUsRUFBRSxFQUFFO1FBQ3pDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFBO1FBQzdCLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFBO1FBQ3pCLE9BQU8sSUFBSSxDQUFBO0lBQ2IsQ0FBQyxDQUFBO0lBRUQsY0FBYyxHQUFHLENBQUMsT0FBYyxFQUFFLEVBQUU7UUFDbEMsSUFBSSxHQUFHLEdBQVEsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUNwRCxPQUFPLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUE7SUFDaEUsQ0FBQyxDQUFBO0lBQ0EsWUFBWSxDQUFDLEtBQWE7UUFFckIsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUE7UUFDcEMsT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBRWpDLENBQUM7d0dBN0NRLG1CQUFtQjs0RkFBbkIsbUJBQW1CLG1JQ2pCaEMsOC9EQStDQyxzSURsQ1csU0FBUyw2Q0FBRSxZQUFZOzs0RkFJdEIsbUJBQW1CO2tCQVAvQixTQUFTOytCQUNFLGlCQUFpQixjQUNmLElBQUksV0FDUCxDQUFDLFNBQVMsRUFBRSxZQUFZLENBQUM7OEJBY3pCLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBpbmplY3QsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQcm9kdWN0RGV0YWlsU2VydmljZSB9IGZyb20gJy4uLy4uL2VjLXNlcnZpY2VzJztcbmltcG9ydCB7IFBhcmFtZXRlcnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZWMtc2VydmljZXMnO1xuaW1wb3J0IHsgQXN5bmNQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb3JlQ29uc3RhbnRzU2VydmljZSB9IGZyb20gXCIuLi8uLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFBhcmFtZXRlciB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC12YXJpYW50cy1lYycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtBc3luY1BpcGUsIENvbW1vbk1vZHVsZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi92YXJpYW50cy1lYy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi92YXJpYW50cy1lYy5jb21wb25lbnQuc2Nzcydcbn0pXG5leHBvcnQgY2xhc3MgVmFyaWFudHNFY0NvbXBvbmVudCB7XG4gIHByaXZhdGUgX3Byb2R1Y3REZXRhaWxzU2VydmljZTogUHJvZHVjdERldGFpbFNlcnZpY2UgPSBpbmplY3QoUHJvZHVjdERldGFpbFNlcnZpY2UpO1xuICBwcml2YXRlIF9wYXJhbWV0ZXJzU2VydmljZSA9IGluamVjdChQYXJhbWV0ZXJzU2VydmljZSlcblxuICBwdWJsaWMgY29uc3RzID0gaW5qZWN0KENvcmVDb25zdGFudHNTZXJ2aWNlKVxuICBwdWJsaWMgcGFyYW1zOiBhbnkgPSB7fTtcbiAgcHVibGljIHBhcmFtZXRlcnMkOiBPYnNlcnZhYmxlPFBhcmFtZXRlcltdIHwgbnVsbD4gPSB0aGlzLl9wYXJhbWV0ZXJzU2VydmljZS5nZXRQYXJhbWV0ZXJzKClcblxuICBcbiAgcHVibGljIG9wdGlvbnMkID0gdGhpcy5fcHJvZHVjdERldGFpbHNTZXJ2aWNlLm9wdGlvbnMkO1xuICBASW5wdXQoKSBzZXRJbWFnZXM/OiAoY29sb3I6IGFueSwgb3B0Q29kZTogYW55KSA9PiB2b2lkO1xuICBASW5wdXQoKSBwcm9kdWN0OiBhbnk7XG4gIHB1YmxpYyBpdGVtU2VsZWN0ZWQ6IGFueTtcblx0cHVibGljIG1lZGlhVXJsID0gdGhpcy5jb25zdHMubWVkaWFVcmwoKVxuXHQvKipcblx0ICogRnVuY2lvbiBwYXJhIHNhYmVyIHNpIGV4aXN0ZW4gdW4gcGFyYW1ldHJvLiBcblx0ICovXG5cdHB1YmxpYyBoYXNQYXJhbXMgPSB0aGlzLl9wYXJhbWV0ZXJzU2VydmljZS5oYXNQYXJhbXNcblxuXG4gIHNldE9wdGlvbihvcHRpb25Db2RlOiBhbnksIG9wdGlvblZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLl9wcm9kdWN0RGV0YWlsc1NlcnZpY2Uuc2V0T3B0aW9uKG9wdGlvbkNvZGUsIG9wdGlvblZhbHVlKTtcbiAgICBjb25zb2xlLmxvZygnT3B0aW9uIHNldDonLCBvcHRpb25Db2RlLCBvcHRpb25WYWx1ZSk7XG4gIH1cbiAgc2V0VmFsdWVzSW1hZ2VzID0gKGNvbG9yOiBhbnksIG9wdENvZGU6IGFueSkgPT4ge1xuICAgIGlmICh0aGlzLnNldEltYWdlcykge1xuICAgICAgdGhpcy5zZXRJbWFnZXMoY29sb3IsIG9wdENvZGUpO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBjaG9zZW5PcHRpb24gPSAob3B0aW9uOiBhbnksIHZhbHVlOiBhbnkpID0+IHtcbiAgICB0aGlzLnNldE9wdGlvbihvcHRpb24sIHZhbHVlKVxuICAgIHRoaXMuaXRlbVNlbGVjdGVkID0gdmFsdWVcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgZ2V0VmFsdWVTZWxlY3QgPSAob3B0aW9uczogYW55W10pID0+IHtcbiAgICBsZXQgcmVzOiBhbnkgPSBvcHRpb25zLmZpbHRlcihlbGVtID0+IGVsZW0uc2VsZWN0ZWQpXG4gICAgcmV0dXJuIHJlcyAmJiAocmVzLmxlbmd0aCA+IDApID8gcmVzWzBdLm5hbWUgOiBvcHRpb25zWzBdLm5hbWVcbiAgfVxuICAgcmV2aXNhclN0b2NrKGluZGV4OiBudW1iZXIpIHtcblxuICAgICAgICBsZXQgcHJvZHVjdHMgPSB0aGlzLnByb2R1Y3QudmFyaWFudHNcbiAgICAgICAgcmV0dXJuIHByb2R1Y3RzW2luZGV4XS5zdG9jaztcblxuICAgIH1cbn1cbiIsIkBpZihvcHRpb25zJCB8IGFzeW5jOyBhcyBvcHRpb25zKXtcbkBpZihvcHRpb25zICYmIG9wdGlvbnMubGVuZ3RoICl7XG5AZm9yKG9wdGlvbiBvZiBvcHRpb25zOyB0cmFjayAkaW5kZXgpe1xuXG5Ac3dpdGNoIChvcHRpb24udHlwZSkge1xuQGNhc2UgKCdjb2xvcicpIHtcbkBpZihvcHRpb24udmFsdWVzICYmIG9wdGlvbi52YWx1ZXMubGVuZ3RoID4gMSkge1xuPGg1Pnt7b3B0aW9uLm5hbWUgfCB1cHBlcmNhc2V9fTwvaDU+XG48ZGl2IGNsYXNzPVwicm93IHctMTAwIG14LWF1dG8gcGItMyBtYi0zXCI+XG4gICAgQGZvcih2YWx1ZSBvZiBvcHRpb24udmFsdWVzOyB0cmFjayAkaW5kZXg7IGxldCB4ID0gJGluZGV4KXtcbiAgICA8YSByb2xlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInNldFZhbHVlc0ltYWdlcyh2YWx1ZS5uYW1lLCBvcHRpb24uY29kZSkgJiYgc2V0T3B0aW9uKG9wdGlvbi5jb2RlLCB2YWx1ZS5uYW1lKVwiXG4gICAgICAgIFtjbGFzc109XCIncm91bmRlZC1jaXJjbGUgY29sb3ItaXRlbSBtLTEgJyArICh2YWx1ZS5zZWxlY3RlZCA/ICdzaGFkb3cnIDogJycpXCIgW2lkXT1cInggKyB2YWx1ZS5uYW1lXCJcbiAgICAgICAgW3N0eWxlLmJvcmRlcl09XCInMXB4IHNvbGlkIGJsYWNrJ1wiXG4gICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cInZhbHVlLmltYWdlICYmICh2YWx1ZS5pbWFnZS5lbmRzV2l0aCgnLmpwZycpIHx8IHZhbHVlLmltYWdlLmVuZHNXaXRoKCcucG5nJykgfHwgdmFsdWUuaW1hZ2UuZW5kc1dpdGgoJy5zdmcnKSkgPyAndXJsKCcgKyB0aGlzLmNvbnN0cy5tZWRpYVVybCh2YWx1ZS5pbWFnZSkgKyAnKScgOiAnIycgKyB2YWx1ZS5uYW1lXCJcbiAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtc2l6ZV09XCInY292ZXInXCIgW3N0eWxlLmJhY2tncm91bmQtcmVwZWF0XT1cIiduby1yZXBlYXQnXCIgW3N0eWxlLmJhY2tncm91bmQtcG9zaXRpb25dPVwiJ2NlbnRlcidcIlxuICAgICAgICBbc3R5bGUuYm94LXNoYWRvd109XCIodmFsdWUuc2VsZWN0ZWQgPyAnMHB4IDBweCAwcHggMnB4ICMwMDAnIDogJ25vbmUnKVwiPjwvYT5cbiAgICB9XG48L2Rpdj5cbn1cbn1cbkBjYXNlICgnc2l6ZScpIHtcbkBpZihvcHRpb24udmFsdWVzICYmIG9wdGlvbi52YWx1ZXMubGVuZ3RoID4gMSkge1xuPGg1Pnt7b3B0aW9uLm5hbWUgfCB1cHBlcmNhc2V9fTwvaDU+XG48ZGl2IGNsYXNzPVwicm93IHctMTAwIG14LWF1dG8gcGItM1wiPlxuICAgIDxkaXYgY2xhc3M9XCJidG4tZ3JvdXAgcHMtMFwiPlxuICAgICAgICA8YSBjbGFzcz1cImJ0biBidG4tbGlnaHQgZHJvcGRvd24tdG9nZ2xlIGN1cnNvci1wb2ludGVyIGJvcmRlciBib3JkZXItMSBkLWZsZXggZmxleC1yb3cganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgIGRhdGEtYnMtdG9nZ2xlPVwiZHJvcGRvd25cIiBhcmlhLWV4cGFuZGVkPVwiZmFsc2VcIj4ge3sgaXRlbVNlbGVjdGVkID8gaXRlbVNlbGVjdGVkIDpcbiAgICAgICAgICAgIGdldFZhbHVlU2VsZWN0KG9wdGlvbi52YWx1ZXMpfX08L2E+XG4gICAgICAgIDx1bCBjbGFzcz1cImRyb3Bkb3duLW1lbnVcIj5cbiAgICAgICAgICAgIEBmb3IodmFsdWUgb2Ygb3B0aW9uLnZhbHVlczsgdHJhY2sgJGluZGV4OyBsZXQgeCA9ICRpbmRleCl7XG4gICAgICAgICAgICA8bGkgW2NsYXNzXT1cIiAodmFsdWUuc2VsZWN0ZWQgPyAnc2VsZWN0ZWQtc2l6ZScgOiAndW5zZWxlY3RlZC1zaXplJylcIj5cbiAgICAgICAgICAgICAgICA8YSBbY2xhc3NdPVwiJ2Ryb3Bkb3duLWl0ZW0gY3Vyc29yLXBvaW50ZXIgJysgKHZhbHVlLnNlbGVjdGVkID8gJ3RleHQtbGlnaHQnIDogJycpXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNob3Nlbk9wdGlvbihvcHRpb24uY29kZSwgdmFsdWUubmFtZSlcIj57eyB2YWx1ZS5uYW1lIH19PC9hPlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC91bD5cbiAgICA8L2Rpdj5cblxuPC9kaXY+XG59XG59XG5AZGVmYXVsdCB7XG5cbn1cbn1cbn1cbn1cbn0iXX0=