ng-easycommerce-v18 0.3.17-beta.3 → 0.3.17

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 (183) hide show
  1. package/README.md +94 -98
  2. package/assets/decidirFormEc.html +514 -514
  3. package/assets/ec-i18n/ct.json +282 -281
  4. package/assets/ec-i18n/en.json +87 -83
  5. package/assets/ec-i18n/es.json +433 -429
  6. package/assets/ec-i18n/fr.json +1 -0
  7. package/assets/ec-i18n/gl.json +282 -281
  8. package/assets/ec-i18n/pr.json +282 -281
  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 +2 -27
  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 +44 -41
  27. package/esm2022/lib/constants/core.constants.service.mjs +1 -1
  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 +1 -17
  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 +3 -3
  35. package/esm2022/lib/ec-components/account-ec/orders-list-ec/orders-list-ec.component.mjs +3 -3
  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 +3 -3
  41. package/esm2022/lib/ec-components/auth-ec/password-reset-ec/password-reset-ec.component.mjs +3 -3
  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 +11 -5
  49. package/esm2022/lib/ec-components/blocks-ec/block-products-ec/block-products-ec.component.mjs +5 -7
  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 +3 -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 +3 -3
  57. package/esm2022/lib/ec-components/checkout-ec/dataform-ec/dataform-ec.component.mjs +3 -3
  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 +3 -3
  60. package/esm2022/lib/ec-components/checkout-ec/payment-ec/payment-ec.component.mjs +3 -3
  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 +3 -3
  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 +3 -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/faqs-ec/faqs-ec.component.mjs +3 -3
  72. package/esm2022/lib/ec-components/filters-ec/filters-ec.component.mjs +7 -32
  73. package/esm2022/lib/ec-components/filters-sort-ec/filters-sort-ec.component.mjs +3 -3
  74. package/esm2022/lib/ec-components/footer-ec/footer-ec.component.mjs +3 -3
  75. package/esm2022/lib/ec-components/header-ec/header-ec.component.mjs +56 -36
  76. package/esm2022/lib/ec-components/home-ec/home-ec.component.mjs +3 -3
  77. package/esm2022/lib/ec-components/index.mjs +1 -1
  78. package/esm2022/lib/ec-components/price-range-filter/price-range-filter.component.mjs +3 -3
  79. package/esm2022/lib/ec-components/product-detail-ec/product-detail-ec.component.mjs +1 -1
  80. package/esm2022/lib/ec-components/product-ec/product-ec.component.mjs +3 -3
  81. package/esm2022/lib/ec-components/related-products-ec/related-products-ec.component.mjs +6 -8
  82. package/esm2022/lib/ec-components/reviews-ec/reviews-ec.component.mjs +3 -3
  83. package/esm2022/lib/ec-components/reviews-form-ec/reviews-form-ec.component.mjs +3 -3
  84. package/esm2022/lib/ec-components/section-container-ec/section-container-ec.component.mjs +3 -3
  85. package/esm2022/lib/ec-components/share-ec/share-buttons-ec/index.mjs +1 -1
  86. package/esm2022/lib/ec-components/share-ec/share-buttons-ec/share-email-ec/share-email-ec.component.mjs +3 -3
  87. package/esm2022/lib/ec-components/share-ec/share-buttons-ec/share-facebook-ec/share-facebook-ec.component.mjs +3 -3
  88. package/esm2022/lib/ec-components/share-ec/share-buttons-ec/share-pinterest-ec/share-pinterest-ec.component.mjs +3 -3
  89. package/esm2022/lib/ec-components/share-ec/share-buttons-ec/share-twitter-ec/share-twitter-ec.component.mjs +3 -3
  90. package/esm2022/lib/ec-components/share-ec/share-buttons-ec/share-whatsapp-ec/share-whatsapp-ec.component.mjs +3 -3
  91. package/esm2022/lib/ec-components/share-ec/share-ec.component.mjs +3 -3
  92. package/esm2022/lib/ec-components/sidebar-ec/sidebar-ec.component.mjs +3 -3
  93. package/esm2022/lib/ec-components/stores-ec/stores-ec.component.mjs +3 -3
  94. package/esm2022/lib/ec-components/variants-ec/variants-ec.component.mjs +3 -3
  95. package/esm2022/lib/ec-components/widgets-ec/decidir-ec/decidir-ec.component.mjs +3 -3
  96. package/esm2022/lib/ec-components/widgets-ec/index.mjs +1 -1
  97. package/esm2022/lib/ec-components/widgets-ec/loading/index.mjs +1 -1
  98. package/esm2022/lib/ec-components/widgets-ec/loading/loading-full-ec/loading-full-ec.component.mjs +3 -3
  99. package/esm2022/lib/ec-components/widgets-ec/loading/loading-inline-ec/loading-inline-ec.component.mjs +3 -3
  100. package/esm2022/lib/ec-components/widgets-ec/loading/loading-section-ec/loading-section-ec.component.mjs +3 -3
  101. package/esm2022/lib/ec-components/widgets-ec/magnizoom-ec/magnizoom-ec.component.mjs +4 -6
  102. package/esm2022/lib/ec-components/widgets-ec/price-ec/price-ec.component.mjs +3 -3
  103. package/esm2022/lib/ec-components/widgets-ec/rating-ec/rating-ec.component.mjs +3 -3
  104. package/esm2022/lib/ec-components/widgets-ec/re-captcha-ec/re-captcha-ec.component.mjs +3 -3
  105. package/esm2022/lib/ec-components/widgets-ec/redsys-catch-ec/redsys-catch-ec.component.mjs +3 -3
  106. package/esm2022/lib/ec-directive/index.mjs +1 -1
  107. package/esm2022/lib/ec-directive/product-off.directive.mjs +1 -1
  108. package/esm2022/lib/ec-directive/product-stock.directive.mjs +1 -1
  109. package/esm2022/lib/ec-guards/auth.guard.mjs +1 -1
  110. package/esm2022/lib/ec-pipe/ec-currency-symbol.pipe.mjs +1 -1
  111. package/esm2022/lib/ec-pipe/ec-safe-html.pipe.mjs +1 -1
  112. package/esm2022/lib/ec-pipe/index.mjs +1 -1
  113. package/esm2022/lib/ec-services/addressing.service.mjs +1 -1
  114. package/esm2022/lib/ec-services/analytics/analytics.service.mjs +1 -1
  115. package/esm2022/lib/ec-services/analytics/doppler.service.mjs +1 -1
  116. package/esm2022/lib/ec-services/analytics/facebook-pixel.service.mjs +2 -4
  117. package/esm2022/lib/ec-services/analytics/google-analytics.service.mjs +2 -4
  118. package/esm2022/lib/ec-services/analytics/gtm.service.mjs +1 -1
  119. package/esm2022/lib/ec-services/analytics/index.mjs +1 -1
  120. package/esm2022/lib/ec-services/analytics/metricool-pixel.service.mjs +11 -11
  121. package/esm2022/lib/ec-services/auth.service.mjs +1 -1
  122. package/esm2022/lib/ec-services/auth.storage.service.mjs +1 -1
  123. package/esm2022/lib/ec-services/blocks-repository.service.mjs +1 -1
  124. package/esm2022/lib/ec-services/blocks.service.mjs +1 -1
  125. package/esm2022/lib/ec-services/cart.service.mjs +1 -1
  126. package/esm2022/lib/ec-services/channel.service.mjs +1 -1
  127. package/esm2022/lib/ec-services/checkout.service.mjs +1 -1
  128. package/esm2022/lib/ec-services/currency.service.mjs +1 -1
  129. package/esm2022/lib/ec-services/filters.service.mjs +1 -1
  130. package/esm2022/lib/ec-services/form.service.mjs +1 -1
  131. package/esm2022/lib/ec-services/index.mjs +1 -1
  132. package/esm2022/lib/ec-services/local-storage.service.mjs +1 -1
  133. package/esm2022/lib/ec-services/ngx-local-storage.service.mjs +1 -1
  134. package/esm2022/lib/ec-services/options.service.mjs +3 -27
  135. package/esm2022/lib/ec-services/order-utility.service.mjs +11 -5
  136. package/esm2022/lib/ec-services/orders.service.mjs +1 -1
  137. package/esm2022/lib/ec-services/pagination.service.mjs +1 -1
  138. package/esm2022/lib/ec-services/parameters.service.mjs +1 -1
  139. package/esm2022/lib/ec-services/payment.service.mjs +1 -1
  140. package/esm2022/lib/ec-services/product-detail.service.mjs +1 -1
  141. package/esm2022/lib/ec-services/products.service.mjs +1 -1
  142. package/esm2022/lib/ec-services/re-captcha.service.mjs +1 -1
  143. package/esm2022/lib/ec-services/reviews.service.mjs +1 -1
  144. package/esm2022/lib/ec-services/shipment.service.mjs +1 -1
  145. package/esm2022/lib/ec-services/stores.service.mjs +1 -1
  146. package/esm2022/lib/ec-services/test.service.mjs +1 -1
  147. package/esm2022/lib/ec-services/toast.service.mjs +1 -1
  148. package/esm2022/lib/interceptors/auth.interceptor.mjs +1 -1
  149. package/esm2022/lib/interfaces/analytics/event-key.mjs +1 -1
  150. package/esm2022/lib/interfaces/analytics/facebook-pixel-data.mjs +1 -1
  151. package/esm2022/lib/interfaces/analytics/gtm-config.mjs +1 -1
  152. package/esm2022/lib/interfaces/analytics/index.mjs +1 -1
  153. package/esm2022/lib/interfaces/blocks.mjs +1 -1
  154. package/esm2022/lib/interfaces/checkout.mjs +1 -1
  155. package/esm2022/lib/interfaces/connection.mjs +1 -1
  156. package/esm2022/lib/interfaces/coupon.mjs +1 -1
  157. package/esm2022/lib/interfaces/currency.mjs +1 -1
  158. package/esm2022/lib/interfaces/deserializable.mjs +1 -1
  159. package/esm2022/lib/interfaces/environment.mjs +1 -1
  160. package/esm2022/lib/interfaces/faqs.mjs +1 -1
  161. package/esm2022/lib/interfaces/filter.mjs +1 -1
  162. package/esm2022/lib/interfaces/index.mjs +1 -1
  163. package/esm2022/lib/interfaces/options.mjs +1 -1
  164. package/esm2022/lib/interfaces/pagination.mjs +1 -1
  165. package/esm2022/lib/interfaces/parameter.mjs +1 -1
  166. package/esm2022/lib/interfaces/product.mjs +1 -1
  167. package/esm2022/lib/interfaces/step.mjs +1 -1
  168. package/esm2022/lib/interfaces/storage.mjs +1 -1
  169. package/esm2022/lib/interfaces/store.mjs +1 -1
  170. package/esm2022/lib/interfaces/types/user.type.mjs +1 -1
  171. package/esm2022/lib/providers/provideEnvironment.mjs +1 -1
  172. package/esm2022/lib/stores/currency.store.mjs +1 -1
  173. package/esm2022/public-api.mjs +1 -1
  174. package/fesm2022/ng-easycommerce-v18.mjs +259 -323
  175. package/fesm2022/ng-easycommerce-v18.mjs.map +1 -1
  176. package/lib/constants/api.constants.service.d.ts +24 -13
  177. package/lib/ec-components/abstractions-components/menu-ec.component.d.ts +0 -12
  178. package/lib/ec-components/filters-ec/filters-ec.component.d.ts +4 -12
  179. package/lib/ec-components/header-ec/header-ec.component.d.ts +14 -5
  180. package/lib/ec-services/options.service.d.ts +0 -4
  181. package/lib/interfaces/filter.d.ts +0 -1
  182. package/lib/interfaces/options.d.ts +0 -2
  183. package/package.json +1 -1
@@ -130,14 +130,14 @@ export class PriceRangeFilterComponent {
130
130
  return value;
131
131
  }
132
132
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PriceRangeFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
133
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: PriceRangeFilterComponent, isStandalone: true, selector: "lib-price-range-filter", inputs: { filter: "filter" }, outputs: { rangeChanged: "rangeChanged" }, ngImport: i0, template: "<div class=\"slider\">\n <div class=\"slider\">\n <div class=\"progress\" [ngStyle]=\"getSliderStyle(filter)\">\n </div>\n </div>\n</div>\n<div class=\"range-input d-flex gap-2\">\n <input #rangeMin type=\"range\" class=\"range-min\" [min]=\"filter.minPrice\" [max]=\"filter.maxPrice\"\n [value]=\"getMinValue(filter)\" (input)=\"onRangeChange($event, 'min', filter)\"\n (change)=\"updatePriceRange(filter); scrollUp()\">\n <input #rangeMax type=\"range\" class=\"range-max\" [min]=\"filter.minPrice\" [max]=\"filter.maxPrice\"\n [value]=\"getMaxValue(filter)\" (input)=\"onRangeChange($event, 'max', filter)\"\n (change)=\"updatePriceRange(filter); scrollUp()\">\n</div>\n<!-- precios M\u00EDnimo / M\u00E1ximo -->\n<div class=\"price-container mt-2\">\n <div class=\"price-label-wrapper\">\n <span class=\"price-label\">M\u00EDnimo:</span>\n <span class=\"price-value\">\n {{ (getFormattedMinPrice(filter) | ecCurrencySymbol) || '0' }}\n </span>\n </div>\n <div class=\"price-label-wrapper\">\n <span class=\"price-label\">M\u00E1ximo:</span>\n <span class=\"price-value price-value-right\">\n {{ getFormattedMaxPrice(filter) | ecCurrencySymbol }}\n </span>\n </div>\n</div>", styles: [":root{--slider-bg: #ddd;--slider-progress-bg: #0FA3AF;--thumb-bg: #0FA3AF;--thumb-border: #fff;--text-color: #131716;--label-color: #0FA3AF;--shadow-color: rgba(15, 163, 175, .4)}.slider{height:6px;border-radius:5px;background:var(--slider-bg);position:relative;overflow:hidden}.slider .progress{height:6px;position:absolute;left:0;right:0;border-radius:5px;background:var(--slider-progress-bg)}.range-input{position:relative;margin-bottom:14px}.range-input input[type=range]{position:absolute;top:-5px;width:100%;height:5px;background:none;pointer-events:none;-webkit-appearance:none}.range-input input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;pointer-events:auto;height:20px;width:20px;border-radius:50%;background:var(--thumb-bg);border:3px solid var(--thumb-border);cursor:pointer;box-shadow:0 4px 8px #0003}.range-input input[type=range]::-moz-range-thumb{-moz-appearance:none;pointer-events:auto;height:20px;width:20px;border-radius:50%;background:var(--thumb-bg);border:3px solid var(--thumb-border);cursor:pointer;box-shadow:0 4px 8px #0003}.range-input input[type=range]:focus::-webkit-slider-thumb,.range-input input[type=range]:focus::-moz-range-thumb{box-shadow:0 0 0 4px var(--shadow-color);outline:none}.price-container{display:flex;flex-wrap:wrap;gap:1rem}.price-label-wrapper{display:flex;flex-direction:column;flex:0 1 auto;min-width:0}.price-label{font-weight:600;color:var(--label-color);margin-bottom:.25rem}.price-value{white-space:nowrap;font-weight:700;color:var(--text-color);overflow:hidden;text-overflow:ellipsis;font-size:14px}.price-value-right{text-align:right}\n"], dependencies: [{ kind: "pipe", type: EcCurrencySymbolPipe, name: "ecCurrencySymbol" }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
133
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: PriceRangeFilterComponent, isStandalone: true, selector: "lib-price-range-filter", inputs: { filter: "filter" }, outputs: { rangeChanged: "rangeChanged" }, ngImport: i0, template: "<div class=\"slider\">\r\n <div class=\"slider\">\r\n <div class=\"progress\" [ngStyle]=\"getSliderStyle(filter)\">\r\n </div>\r\n </div>\r\n</div>\r\n<div class=\"range-input d-flex gap-2\">\r\n <input #rangeMin type=\"range\" class=\"range-min\" [min]=\"filter.minPrice\" [max]=\"filter.maxPrice\"\r\n [value]=\"getMinValue(filter)\" (input)=\"onRangeChange($event, 'min', filter)\"\r\n (change)=\"updatePriceRange(filter); scrollUp()\">\r\n <input #rangeMax type=\"range\" class=\"range-max\" [min]=\"filter.minPrice\" [max]=\"filter.maxPrice\"\r\n [value]=\"getMaxValue(filter)\" (input)=\"onRangeChange($event, 'max', filter)\"\r\n (change)=\"updatePriceRange(filter); scrollUp()\">\r\n</div>\r\n<!-- precios M\u00EDnimo / M\u00E1ximo -->\r\n<div class=\"price-container mt-2\">\r\n <div class=\"price-label-wrapper\">\r\n <span class=\"price-label\">M\u00EDnimo:</span>\r\n <span class=\"price-value\">\r\n {{ (getFormattedMinPrice(filter) | ecCurrencySymbol) || '0' }}\r\n </span>\r\n </div>\r\n <div class=\"price-label-wrapper\">\r\n <span class=\"price-label\">M\u00E1ximo:</span>\r\n <span class=\"price-value price-value-right\">\r\n {{ getFormattedMaxPrice(filter) | ecCurrencySymbol }}\r\n </span>\r\n </div>\r\n</div>", styles: [":root{--slider-bg: #ddd;--slider-progress-bg: #0FA3AF;--thumb-bg: #0FA3AF;--thumb-border: #fff;--text-color: #131716;--label-color: #0FA3AF;--shadow-color: rgba(15, 163, 175, .4)}.slider{height:6px;border-radius:5px;background:var(--slider-bg);position:relative;overflow:hidden}.slider .progress{height:6px;position:absolute;left:0;right:0;border-radius:5px;background:var(--slider-progress-bg)}.range-input{position:relative;margin-bottom:14px}.range-input input[type=range]{position:absolute;top:-5px;width:100%;height:5px;background:none;pointer-events:none;-webkit-appearance:none}.range-input input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;pointer-events:auto;height:20px;width:20px;border-radius:50%;background:var(--thumb-bg);border:3px solid var(--thumb-border);cursor:pointer;box-shadow:0 4px 8px #0003}.range-input input[type=range]::-moz-range-thumb{-moz-appearance:none;pointer-events:auto;height:20px;width:20px;border-radius:50%;background:var(--thumb-bg);border:3px solid var(--thumb-border);cursor:pointer;box-shadow:0 4px 8px #0003}.range-input input[type=range]:focus::-webkit-slider-thumb,.range-input input[type=range]:focus::-moz-range-thumb{box-shadow:0 0 0 4px var(--shadow-color);outline:none}.price-container{display:flex;flex-wrap:wrap;gap:1rem}.price-label-wrapper{display:flex;flex-direction:column;flex:0 1 auto;min-width:0}.price-label{font-weight:600;color:var(--label-color);margin-bottom:.25rem}.price-value{white-space:nowrap;font-weight:700;color:var(--text-color);overflow:hidden;text-overflow:ellipsis;font-size:14px}.price-value-right{text-align:right}\n"], dependencies: [{ kind: "pipe", type: EcCurrencySymbolPipe, name: "ecCurrencySymbol" }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
134
134
  }
135
135
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PriceRangeFilterComponent, decorators: [{
136
136
  type: Component,
137
- args: [{ selector: 'lib-price-range-filter', standalone: true, imports: [EcCurrencySymbolPipe, CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"slider\">\n <div class=\"slider\">\n <div class=\"progress\" [ngStyle]=\"getSliderStyle(filter)\">\n </div>\n </div>\n</div>\n<div class=\"range-input d-flex gap-2\">\n <input #rangeMin type=\"range\" class=\"range-min\" [min]=\"filter.minPrice\" [max]=\"filter.maxPrice\"\n [value]=\"getMinValue(filter)\" (input)=\"onRangeChange($event, 'min', filter)\"\n (change)=\"updatePriceRange(filter); scrollUp()\">\n <input #rangeMax type=\"range\" class=\"range-max\" [min]=\"filter.minPrice\" [max]=\"filter.maxPrice\"\n [value]=\"getMaxValue(filter)\" (input)=\"onRangeChange($event, 'max', filter)\"\n (change)=\"updatePriceRange(filter); scrollUp()\">\n</div>\n<!-- precios M\u00EDnimo / M\u00E1ximo -->\n<div class=\"price-container mt-2\">\n <div class=\"price-label-wrapper\">\n <span class=\"price-label\">M\u00EDnimo:</span>\n <span class=\"price-value\">\n {{ (getFormattedMinPrice(filter) | ecCurrencySymbol) || '0' }}\n </span>\n </div>\n <div class=\"price-label-wrapper\">\n <span class=\"price-label\">M\u00E1ximo:</span>\n <span class=\"price-value price-value-right\">\n {{ getFormattedMaxPrice(filter) | ecCurrencySymbol }}\n </span>\n </div>\n</div>", styles: [":root{--slider-bg: #ddd;--slider-progress-bg: #0FA3AF;--thumb-bg: #0FA3AF;--thumb-border: #fff;--text-color: #131716;--label-color: #0FA3AF;--shadow-color: rgba(15, 163, 175, .4)}.slider{height:6px;border-radius:5px;background:var(--slider-bg);position:relative;overflow:hidden}.slider .progress{height:6px;position:absolute;left:0;right:0;border-radius:5px;background:var(--slider-progress-bg)}.range-input{position:relative;margin-bottom:14px}.range-input input[type=range]{position:absolute;top:-5px;width:100%;height:5px;background:none;pointer-events:none;-webkit-appearance:none}.range-input input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;pointer-events:auto;height:20px;width:20px;border-radius:50%;background:var(--thumb-bg);border:3px solid var(--thumb-border);cursor:pointer;box-shadow:0 4px 8px #0003}.range-input input[type=range]::-moz-range-thumb{-moz-appearance:none;pointer-events:auto;height:20px;width:20px;border-radius:50%;background:var(--thumb-bg);border:3px solid var(--thumb-border);cursor:pointer;box-shadow:0 4px 8px #0003}.range-input input[type=range]:focus::-webkit-slider-thumb,.range-input input[type=range]:focus::-moz-range-thumb{box-shadow:0 0 0 4px var(--shadow-color);outline:none}.price-container{display:flex;flex-wrap:wrap;gap:1rem}.price-label-wrapper{display:flex;flex-direction:column;flex:0 1 auto;min-width:0}.price-label{font-weight:600;color:var(--label-color);margin-bottom:.25rem}.price-value{white-space:nowrap;font-weight:700;color:var(--text-color);overflow:hidden;text-overflow:ellipsis;font-size:14px}.price-value-right{text-align:right}\n"] }]
137
+ args: [{ selector: 'lib-price-range-filter', standalone: true, imports: [EcCurrencySymbolPipe, CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"slider\">\r\n <div class=\"slider\">\r\n <div class=\"progress\" [ngStyle]=\"getSliderStyle(filter)\">\r\n </div>\r\n </div>\r\n</div>\r\n<div class=\"range-input d-flex gap-2\">\r\n <input #rangeMin type=\"range\" class=\"range-min\" [min]=\"filter.minPrice\" [max]=\"filter.maxPrice\"\r\n [value]=\"getMinValue(filter)\" (input)=\"onRangeChange($event, 'min', filter)\"\r\n (change)=\"updatePriceRange(filter); scrollUp()\">\r\n <input #rangeMax type=\"range\" class=\"range-max\" [min]=\"filter.minPrice\" [max]=\"filter.maxPrice\"\r\n [value]=\"getMaxValue(filter)\" (input)=\"onRangeChange($event, 'max', filter)\"\r\n (change)=\"updatePriceRange(filter); scrollUp()\">\r\n</div>\r\n<!-- precios M\u00EDnimo / M\u00E1ximo -->\r\n<div class=\"price-container mt-2\">\r\n <div class=\"price-label-wrapper\">\r\n <span class=\"price-label\">M\u00EDnimo:</span>\r\n <span class=\"price-value\">\r\n {{ (getFormattedMinPrice(filter) | ecCurrencySymbol) || '0' }}\r\n </span>\r\n </div>\r\n <div class=\"price-label-wrapper\">\r\n <span class=\"price-label\">M\u00E1ximo:</span>\r\n <span class=\"price-value price-value-right\">\r\n {{ getFormattedMaxPrice(filter) | ecCurrencySymbol }}\r\n </span>\r\n </div>\r\n</div>", styles: [":root{--slider-bg: #ddd;--slider-progress-bg: #0FA3AF;--thumb-bg: #0FA3AF;--thumb-border: #fff;--text-color: #131716;--label-color: #0FA3AF;--shadow-color: rgba(15, 163, 175, .4)}.slider{height:6px;border-radius:5px;background:var(--slider-bg);position:relative;overflow:hidden}.slider .progress{height:6px;position:absolute;left:0;right:0;border-radius:5px;background:var(--slider-progress-bg)}.range-input{position:relative;margin-bottom:14px}.range-input input[type=range]{position:absolute;top:-5px;width:100%;height:5px;background:none;pointer-events:none;-webkit-appearance:none}.range-input input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;pointer-events:auto;height:20px;width:20px;border-radius:50%;background:var(--thumb-bg);border:3px solid var(--thumb-border);cursor:pointer;box-shadow:0 4px 8px #0003}.range-input input[type=range]::-moz-range-thumb{-moz-appearance:none;pointer-events:auto;height:20px;width:20px;border-radius:50%;background:var(--thumb-bg);border:3px solid var(--thumb-border);cursor:pointer;box-shadow:0 4px 8px #0003}.range-input input[type=range]:focus::-webkit-slider-thumb,.range-input input[type=range]:focus::-moz-range-thumb{box-shadow:0 0 0 4px var(--shadow-color);outline:none}.price-container{display:flex;flex-wrap:wrap;gap:1rem}.price-label-wrapper{display:flex;flex-direction:column;flex:0 1 auto;min-width:0}.price-label{font-weight:600;color:var(--label-color);margin-bottom:.25rem}.price-value{white-space:nowrap;font-weight:700;color:var(--text-color);overflow:hidden;text-overflow:ellipsis;font-size:14px}.price-value-right{text-align:right}\n"] }]
138
138
  }], propDecorators: { filter: [{
139
139
  type: Input
140
140
  }], rangeChanged: [{
141
141
  type: Output
142
142
  }] } });
143
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpY2UtcmFuZ2UtZmlsdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVhc3ljb21tZXJjZS12MTgvc3JjL2xpYi9lYy1jb21wb25lbnRzL3ByaWNlLXJhbmdlLWZpbHRlci9wcmljZS1yYW5nZS1maWx0ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLWNvbXBvbmVudHMvcHJpY2UtcmFuZ2UtZmlsdGVyL3ByaWNlLXJhbmdlLWZpbHRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7O0FBVW5ELE1BQU0sT0FBTyx5QkFBeUI7SUFFNUIsZUFBZSxHQUFtQixNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7SUFFakUsUUFBUSxHQUFHLENBQUMsQ0FBQztJQUNiLFNBQVMsR0FBRyxDQUFDLENBQUM7SUFFTCxNQUFNLENBQW9CO0lBQ3pCLFlBQVksR0FBRyxJQUFJLFlBQVksRUFBZ0MsQ0FBQztJQUUxRSxjQUFjLENBQUMsTUFBVztRQUN4QixJQUFJLENBQUMsQ0FBQyxNQUFNLFlBQVksZ0JBQWdCLENBQUM7WUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFB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QUFkLEtBQUs7Z0JBQ0ksWUFBWTtzQkFBckIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgaW5qZWN0LCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQcmljZVJhbmdlRmlsdGVyIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9maWx0ZXJzL3ByaWNlX3JhbmdlLWZpbHRlcic7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRWNDdXJyZW5jeVN5bWJvbFBpcGUgfSBmcm9tICcuLi8uLi9lYy1waXBlJztcbmltcG9ydCB7IEZpbHRlcnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZWMtc2VydmljZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItcHJpY2UtcmFuZ2UtZmlsdGVyJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0VjQ3VycmVuY3lTeW1ib2xQaXBlLCBDb21tb25Nb2R1bGVdLFxuICB0ZW1wbGF0ZVVybDogJy4vcHJpY2UtcmFuZ2UtZmlsdGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL3ByaWNlLXJhbmdlLWZpbHRlci5jb21wb25lbnQuc2NzcycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFByaWNlUmFuZ2VGaWx0ZXJDb21wb25lbnQge1xuXG4gIHByaXZhdGUgX2ZpbHRlcnNTZXJ2aWNlOiBGaWx0ZXJzU2VydmljZSA9IGluamVjdChGaWx0ZXJzU2VydmljZSk7XG5cbiAgcHJpY2VHYXAgPSAxO1xuICByb3VuZFN0ZXAgPSA1O1xuXG4gIEBJbnB1dCgpIGZpbHRlciE6IFByaWNlUmFuZ2VGaWx0ZXI7XG4gIEBPdXRwdXQoKSByYW5nZUNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHsgbWluOiBudW1iZXI7IG1heDogbnVtYmVyIH0+KCk7XG5cbiAgZ2V0U2xpZGVyU3R5bGUoZmlsdGVyOiBhbnkpOiB7IFtrbGFzczogc3RyaW5nXTogc3RyaW5nIH0ge1xuICAgIGlmICghKGZpbHRlciBpbnN0YW5jZW9mIFByaWNlUmFuZ2VGaWx0ZXIpKSByZXR1cm4geyBsZWZ0OiAnMCUnLCByaWdodDogJzAlJyB9O1xuXG4gICAgY29uc3QgbGVmdCA9IHRoaXMuY2FsY3VsYXRlTGVmdFBlcmNlbnRhZ2UoZmlsdGVyKTtcbiAgICBjb25zdCByaWdodCA9IHRoaXMuY2FsY3VsYXRlUmlnaHRQZXJjZW50YWdlKGZpbHRlcik7XG4gICAgcmV0dXJuIHsgbGVmdDogYCR7bGVmdH0lYCwgcmlnaHQ6IGAke3JpZ2h0fSVgIH07XG4gIH1cblxuICAvLyBNw6l0b2RvcyBwYXJhIGFjdHVhbGl6YXIgbGEgYmFycmEgZGVsIGZpbHRybyBwb3IgcHJlY2lvXG4gIGNhbGN1bGF0ZUxlZnRQZXJjZW50YWdlKGZpbHRlcjogYW55KTogbnVtYmVyIHtcbiAgICBpZiAoIShmaWx0ZXIgaW5zdGFuY2VvZiBQcmljZVJhbmdlRmlsdGVyKSkgcmV0dXJuIDA7XG5cbiAgICBjb25zdCBtaW4gPSBmaWx0ZXIubWluUHJpY2U7XG4gICAgY29uc3QgbWF4ID0gZmlsdGVyLm1heFByaWNlO1xuICAgIGNvbnN0IGN1cnJlbnRNaW4gPSBmaWx0ZXIuY3VycmVudE1pblByaWNlID8/IG1pbjtcblxuICAgIGNvbnN0IGNsYW1wZWRNaW4gPSBNYXRoLm1heChtaW4sIE1hdGgubWluKGN1cnJlbnRNaW4sIG1heCkpO1xuICAgIHJldHVybiBNYXRoLm1heCgwLCBNYXRoLm1pbigoKGNsYW1wZWRNaW4gLSBtaW4pIC8gKG1heCAtIG1pbikpICogMTAwLCAxMDApKTtcbiAgfVxuXG4gIGNhbGN1bGF0ZVJpZ2h0UGVyY2VudGFnZShmaWx0ZXI6IGFueSk6IG51bWJlciB7XG4gICAgaWYgKCEoZmlsdGVyIGluc3RhbmNlb2YgUHJpY2VSYW5nZUZpbHRlcikpIHJldHVybiAwO1xuXG4gICAgY29uc3QgbWluID0gZmlsdGVyLm1pblByaWNlO1xuICAgIGNvbnN0IG1heCA9IGZpbHRlci5tYXhQcmljZTtcbiAgICBjb25zdCBjdXJyZW50TWF4ID0gZmlsdGVyLmN1cnJlbnRNYXhQcmljZSA/PyBtYXg7XG5cbiAgICBjb25zdCBjbGFtcGVkTWF4ID0gTWF0aC5tYXgobWluLCBNYXRoLm1pbihjdXJyZW50TWF4LCBtYXgpKTtcbiAgICByZXR1cm4gTWF0aC5tYXgoMCwgTWF0aC5taW4oMTAwIC0gKChjbGFtcGVkTWF4IC0gbWluKSAvIChtYXggLSBtaW4pKSAqIDEwMCwgMTAwKSk7XG4gIH1cblxuICAvLyBNw6l0b2RvIHBhcmEgYWN0dWFsaXphciBsb3MgdmFsb3JlcyBkZSBwcmVjaW8gc2VsZWNjaW9uYWRvc1xuICB1cGRhdGVQcmljZVJhbmdlKGZpbHRlcjogYW55KSB7XG4gICAgaWYgKCEoZmlsdGVyIGluc3RhbmNlb2YgUHJpY2VSYW5nZUZpbHRlcikpIHJldHVybjtcblxuICAgIGNvbnN0IG1pbiA9IGZpbHRlci5jdXJyZW50TWluUHJpY2UgPz8gZmlsdGVyLm1pblByaWNlO1xuICAgIGNvbnN0IG1heCA9IGZpbHRlci5jdXJyZW50TWF4UHJpY2UgPz8gZmlsdGVyLm1heFByaWNlO1xuICAgIHRoaXMuX2ZpbHRlcnNTZXJ2aWNlLnVwZGF0ZVByaWNlUmFuZ2VGaWx0ZXIobWluLCBtYXgpO1xuICB9XG5cbiAgZ2V0TWluVmFsdWUoZmlsdGVyOiBhbnkpOiBudW1iZXIge1xuICAgIHJldHVybiAoZmlsdGVyIGluc3RhbmNlb2YgUHJpY2VSYW5nZUZpbHRlciAmJiBmaWx0ZXIuY3VycmVudE1pblByaWNlICE9IG51bGwpXG4gICAgICA/IGZpbHRlci5jdXJyZW50TWluUHJpY2VcbiAgICAgIDogZmlsdGVyLm1pblByaWNlO1xuICB9XG5cbiAgZ2V0TWF4VmFsdWUoZmlsdGVyOiBhbnkpOiBudW1iZXIge1xuICAgIHJldHVybiAoZmlsdGVyIGluc3RhbmNlb2YgUHJpY2VSYW5nZUZpbHRlciAmJiBmaWx0ZXIuY3VycmVudE1heFByaWNlICE9IG51bGwpXG4gICAgICA/IGZpbHRlci5jdXJyZW50TWF4UHJpY2VcbiAgICAgIDogZmlsdGVyLm1heFByaWNlO1xuICB9XG5cbiAgLyoqXG4gICogUmVkb25kZWEgYWwgbcO6bHRpcGxvIGRlICdzdGVwJyByZXNwZXRhbmRvIGVsIHJlZG9uZGVvIGVudGVybzpcbiAgKiAtIE3DrW5pbW86IHJlZG9uZGVhIGhhY2lhIGFiYWpvLlxuICAqIC0gTcOheGltbzogcmVkb25kZWEgaGFjaWEgYXJyaWJhLlxuICAqL1xuICBvblJhbmdlQ2hhbmdlKGV2ZW50OiBFdmVudCwgdHlwZTogJ21pbicgfCAnbWF4JywgZmlsdGVyOiBhbnkpIHtcbiAgICBjb25zdCBpbnB1dCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgIGxldCB2YWx1ZSA9IHBhcnNlRmxvYXQoaW5wdXQudmFsdWUpO1xuICAgIHZhbHVlID0gdGhpcy5yb3VuZFRvTmVhcmVzdCh2YWx1ZSwgdGhpcy5yb3VuZFN0ZXAsIHR5cGUsIGZpbHRlcik7XG4gICAgdGhpcy51cGRhdGVGaWx0ZXJQcmljZXModHlwZSwgdmFsdWUsIGZpbHRlciwgdGhpcy5wcmljZUdhcCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcm91bmRUb05lYXJlc3QodmFsdWU6IG51bWJlciwgc3RlcDogbnVtYmVyLCB0eXBlOiAnbWluJyB8ICdtYXgnLCBmaWx0ZXI6IGFueSk6IG51bWJlciB7XG4gICAgbGV0IHJvdW5kZWQgPSBNYXRoLnJvdW5kKHZhbHVlIC8gc3RlcCkgKiBzdGVwO1xuICAgIGlmICh0eXBlID09PSAnbWF4JyAmJiByb3VuZGVkIDwgZmlsdGVyLm1heFByaWNlKSB7XG4gICAgICByb3VuZGVkID0gTWF0aC5jZWlsKHZhbHVlIC8gc3RlcCkgKiBzdGVwO1xuICAgIH1cbiAgICBpZiAodHlwZSA9PT0gJ21pbicgJiYgcm91bmRlZCA+IGZpbHRlci5taW5QcmljZSkge1xuICAgICAgcm91bmRlZCA9IE1hdGguZmxvb3IodmFsdWUgLyBzdGVwKSAqIHN0ZXA7XG4gICAgfVxuICAgIHJldHVybiByb3VuZGVkO1xuICB9XG5cbiAgLyoqXG4gICogQWN0dWFsaXphIGxvcyB2YWxvcmVzIGRlbCBmaWx0cm8gcGVybWl0aWVuZG8gcXVlIHVuIGlucHV0IGVtcHVqZSBhbCBvdHJvLlxuICAqL1xuICBwcm90ZWN0ZWQgdXBkYXRlRmlsdGVyUHJpY2VzKHR5cGU6ICdtaW4nIHwgJ21heCcsIHZhbHVlOiBudW1iZXIsIGZpbHRlcjogYW55LCBwcmljZUdhcDogbnVtYmVyKSB7XG4gICAgY29uc3QgZ2xvYmFsTWluID0gZmlsdGVyLm1pblByaWNlID8/IDA7XG4gICAgY29uc3QgZ2xvYmFsTWF4ID0gZmlsdGVyLm1heFByaWNlO1xuXG4gICAgbGV0IGN1cnJlbnRNaW4gPSBmaWx0ZXIuY3VycmVudE1pblByaWNlID8/IGdsb2JhbE1pbjtcbiAgICBsZXQgY3VycmVudE1heCA9IGZpbHRlci5jdXJyZW50TWF4UHJpY2UgPz8gZ2xvYmFsTWF4O1xuXG4gICAgaWYgKHR5cGUgPT09ICdtaW4nKSB7XG4gICAgICBsZXQgbmV3TWluID0gTWF0aC5taW4oTWF0aC5tYXgodmFsdWUsIGdsb2JhbE1pbiksIGdsb2JhbE1heCk7XG4gICAgICBpZiAobmV3TWluICsgcHJpY2VHYXAgPiBjdXJyZW50TWF4KSB7XG4gICAgICAgIGxldCBuZXdNYXhDYW5kaWRhdGUgPSBuZXdNaW4gKyBwcmljZUdhcDtcbiAgICAgICAgaWYgKG5ld01heENhbmRpZGF0ZSA8PSBnbG9iYWxNYXgpIHtcbiAgICAgICAgICBjdXJyZW50TWF4ID0gbmV3TWF4Q2FuZGlkYXRlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5ld01pbiA9IGdsb2JhbE1heCAtIHByaWNlR2FwO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBmaWx0ZXIuY3VycmVudE1pblByaWNlID0gbmV3TWluO1xuICAgICAgZmlsdGVyLmN1cnJlbnRNYXhQcmljZSA9IGN1cnJlbnRNYXg7XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnbWF4Jykge1xuICAgICAgbGV0IG5ld01heCA9IE1hdGgubWF4KE1hdGgubWluKHZhbHVlLCBnbG9iYWxNYXgpLCBnbG9iYWxNaW4pO1xuICAgICAgaWYgKG5ld01heCAtIHByaWNlR2FwIDwgY3VycmVudE1pbikge1xuICAgICAgICBsZXQgbmV3TWluQ2FuZGlkYXRlID0gbmV3TWF4IC0gcHJpY2VHYXA7XG4gICAgICAgIGlmIChuZXdNaW5DYW5kaWRhdGUgPj0gZ2xvYmFsTWluKSB7XG4gICAgICAgICAgY3VycmVudE1pbiA9IG5ld01pbkNhbmRpZGF0ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBuZXdNYXggPSBnbG9iYWxNaW4gKyBwcmljZUdhcDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZmlsdGVyLmN1cnJlbnRNYXhQcmljZSA9IG5ld01heDtcbiAgICAgIGZpbHRlci5jdXJyZW50TWluUHJpY2UgPSBjdXJyZW50TWluO1xuICAgIH1cbiAgfVxuXG4gIHNjcm9sbFVwID0gKCkgPT4ge1xuICAgIHdpbmRvdy5zY3JvbGwoMCwgMCk7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIGdldEZvcm1hdHRlZE1pblByaWNlKGZpbHRlcjogYW55KTogc3RyaW5nIHtcbiAgICBjb25zdCB2YWx1ZSA9IChmaWx0ZXIgaW5zdGFuY2VvZiBQcmljZVJhbmdlRmlsdGVyICYmIGZpbHRlci5jdXJyZW50TWluUHJpY2UgIT0gbnVsbClcbiAgICAgID8gZmlsdGVyLmN1cnJlbnRNaW5QcmljZVxuICAgICAgOiBmaWx0ZXIubWluUHJpY2U7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgZ2V0Rm9ybWF0dGVkTWF4UHJpY2UoZmlsdGVyOiBhbnkpOiBzdHJpbmcge1xuICAgIGNvbnN0IHZhbHVlID0gKGZpbHRlciBpbnN0YW5jZW9mIFByaWNlUmFuZ2VGaWx0ZXIgJiYgZmlsdGVyLmN1cnJlbnRNYXhQcmljZSAhPSBudWxsKVxuICAgICAgPyBmaWx0ZXIuY3VycmVudE1heFByaWNlXG4gICAgICA6IGZpbHRlci5tYXhQcmljZTtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJzbGlkZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwic2xpZGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwcm9ncmVzc1wiIFtuZ1N0eWxlXT1cImdldFNsaWRlclN0eWxlKGZpbHRlcilcIj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJyYW5nZS1pbnB1dCBkLWZsZXggZ2FwLTJcIj5cbiAgICA8aW5wdXQgI3JhbmdlTWluIHR5cGU9XCJyYW5nZVwiIGNsYXNzPVwicmFuZ2UtbWluXCIgW21pbl09XCJmaWx0ZXIubWluUHJpY2VcIiBbbWF4XT1cImZpbHRlci5tYXhQcmljZVwiXG4gICAgICAgIFt2YWx1ZV09XCJnZXRNaW5WYWx1ZShmaWx0ZXIpXCIgKGlucHV0KT1cIm9uUmFuZ2VDaGFuZ2UoJGV2ZW50LCAnbWluJywgZmlsdGVyKVwiXG4gICAgICAgIChjaGFuZ2UpPVwidXBkYXRlUHJpY2VSYW5nZShmaWx0ZXIpOyBzY3JvbGxVcCgpXCI+XG4gICAgPGlucHV0ICNyYW5nZU1heCB0eXBlPVwicmFuZ2VcIiBjbGFzcz1cInJhbmdlLW1heFwiIFttaW5dPVwiZmlsdGVyLm1pblByaWNlXCIgW21heF09XCJmaWx0ZXIubWF4UHJpY2VcIlxuICAgICAgICBbdmFsdWVdPVwiZ2V0TWF4VmFsdWUoZmlsdGVyKVwiIChpbnB1dCk9XCJvblJhbmdlQ2hhbmdlKCRldmVudCwgJ21heCcsIGZpbHRlcilcIlxuICAgICAgICAoY2hhbmdlKT1cInVwZGF0ZVByaWNlUmFuZ2UoZmlsdGVyKTsgc2Nyb2xsVXAoKVwiPlxuPC9kaXY+XG48IS0tIHByZWNpb3MgTcOtbmltbyAvIE3DoXhpbW8gLS0+XG48ZGl2IGNsYXNzPVwicHJpY2UtY29udGFpbmVyIG10LTJcIj5cbiAgICA8ZGl2IGNsYXNzPVwicHJpY2UtbGFiZWwtd3JhcHBlclwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInByaWNlLWxhYmVsXCI+TcOtbmltbzo8L3NwYW4+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwicHJpY2UtdmFsdWVcIj5cbiAgICAgICAgICAgIHt7IChnZXRGb3JtYXR0ZWRNaW5QcmljZShmaWx0ZXIpIHwgZWNDdXJyZW5jeVN5bWJvbCkgfHwgJzAnIH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwicHJpY2UtbGFiZWwtd3JhcHBlclwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInByaWNlLWxhYmVsXCI+TcOheGltbzo8L3NwYW4+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwicHJpY2UtdmFsdWUgcHJpY2UtdmFsdWUtcmlnaHRcIj5cbiAgICAgICAgICAgIHt7IGdldEZvcm1hdHRlZE1heFByaWNlKGZpbHRlcikgfCBlY0N1cnJlbmN5U3ltYm9sIH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cbjwvZGl2PiJdfQ==
143
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpY2UtcmFuZ2UtZmlsdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVhc3ljb21tZXJjZS12MTgvc3JjL2xpYi9lYy1jb21wb25lbnRzL3ByaWNlLXJhbmdlLWZpbHRlci9wcmljZS1yYW5nZS1maWx0ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLWNvbXBvbmVudHMvcHJpY2UtcmFuZ2UtZmlsdGVyL3ByaWNlLXJhbmdlLWZpbHRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7O0FBVW5ELE1BQU0sT0FBTyx5QkFBeUI7SUFFNUIsZUFBZSxHQUFtQixNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7SUFFakUsUUFBUSxHQUFHLENBQUMsQ0FBQztJQUNiLFNBQVMsR0FBRyxDQUFDLENBQUM7SUFFTCxNQUFNLENBQW9CO0lBQ3pCLFlBQVksR0FBRyxJQUFJLFlBQVksRUFBZ0MsQ0FBQztJQUUxRSxjQUFjLENBQUMsTUFBVztRQUN4QixJQUFJLENBQUMsQ0FBQyxNQUFNLFlBQVksZ0JBQWdCLENBQUM7WUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFB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QUFkLEtBQUs7Z0JBQ0ksWUFBWTtzQkFBckIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgaW5qZWN0LCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFByaWNlUmFuZ2VGaWx0ZXIgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2ZpbHRlcnMvcHJpY2VfcmFuZ2UtZmlsdGVyJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgRWNDdXJyZW5jeVN5bWJvbFBpcGUgfSBmcm9tICcuLi8uLi9lYy1waXBlJztcclxuaW1wb3J0IHsgRmlsdGVyc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9lYy1zZXJ2aWNlcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1wcmljZS1yYW5nZS1maWx0ZXInLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW0VjQ3VycmVuY3lTeW1ib2xQaXBlLCBDb21tb25Nb2R1bGVdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9wcmljZS1yYW5nZS1maWx0ZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9wcmljZS1yYW5nZS1maWx0ZXIuY29tcG9uZW50LnNjc3MnLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQcmljZVJhbmdlRmlsdGVyQ29tcG9uZW50IHtcclxuXHJcbiAgcHJpdmF0ZSBfZmlsdGVyc1NlcnZpY2U6IEZpbHRlcnNTZXJ2aWNlID0gaW5qZWN0KEZpbHRlcnNTZXJ2aWNlKTtcclxuXHJcbiAgcHJpY2VHYXAgPSAxO1xyXG4gIHJvdW5kU3RlcCA9IDU7XHJcblxyXG4gIEBJbnB1dCgpIGZpbHRlciE6IFByaWNlUmFuZ2VGaWx0ZXI7XHJcbiAgQE91dHB1dCgpIHJhbmdlQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8eyBtaW46IG51bWJlcjsgbWF4OiBudW1iZXIgfT4oKTtcclxuXHJcbiAgZ2V0U2xpZGVyU3R5bGUoZmlsdGVyOiBhbnkpOiB7IFtrbGFzczogc3RyaW5nXTogc3RyaW5nIH0ge1xyXG4gICAgaWYgKCEoZmlsdGVyIGluc3RhbmNlb2YgUHJpY2VSYW5nZUZpbHRlcikpIHJldHVybiB7IGxlZnQ6ICcwJScsIHJpZ2h0OiAnMCUnIH07XHJcblxyXG4gICAgY29uc3QgbGVmdCA9IHRoaXMuY2FsY3VsYXRlTGVmdFBlcmNlbnRhZ2UoZmlsdGVyKTtcclxuICAgIGNvbnN0IHJpZ2h0ID0gdGhpcy5jYWxjdWxhdGVSaWdodFBlcmNlbnRhZ2UoZmlsdGVyKTtcclxuICAgIHJldHVybiB7IGxlZnQ6IGAke2xlZnR9JWAsIHJpZ2h0OiBgJHtyaWdodH0lYCB9O1xyXG4gIH1cclxuXHJcbiAgLy8gTcOpdG9kb3MgcGFyYSBhY3R1YWxpemFyIGxhIGJhcnJhIGRlbCBmaWx0cm8gcG9yIHByZWNpb1xyXG4gIGNhbGN1bGF0ZUxlZnRQZXJjZW50YWdlKGZpbHRlcjogYW55KTogbnVtYmVyIHtcclxuICAgIGlmICghKGZpbHRlciBpbnN0YW5jZW9mIFByaWNlUmFuZ2VGaWx0ZXIpKSByZXR1cm4gMDtcclxuXHJcbiAgICBjb25zdCBtaW4gPSBmaWx0ZXIubWluUHJpY2U7XHJcbiAgICBjb25zdCBtYXggPSBmaWx0ZXIubWF4UHJpY2U7XHJcbiAgICBjb25zdCBjdXJyZW50TWluID0gZmlsdGVyLmN1cnJlbnRNaW5QcmljZSA/PyBtaW47XHJcblxyXG4gICAgY29uc3QgY2xhbXBlZE1pbiA9IE1hdGgubWF4KG1pbiwgTWF0aC5taW4oY3VycmVudE1pbiwgbWF4KSk7XHJcbiAgICByZXR1cm4gTWF0aC5tYXgoMCwgTWF0aC5taW4oKChjbGFtcGVkTWluIC0gbWluKSAvIChtYXggLSBtaW4pKSAqIDEwMCwgMTAwKSk7XHJcbiAgfVxyXG5cclxuICBjYWxjdWxhdGVSaWdodFBlcmNlbnRhZ2UoZmlsdGVyOiBhbnkpOiBudW1iZXIge1xyXG4gICAgaWYgKCEoZmlsdGVyIGluc3RhbmNlb2YgUHJpY2VSYW5nZUZpbHRlcikpIHJldHVybiAwO1xyXG5cclxuICAgIGNvbnN0IG1pbiA9IGZpbHRlci5taW5QcmljZTtcclxuICAgIGNvbnN0IG1heCA9IGZpbHRlci5tYXhQcmljZTtcclxuICAgIGNvbnN0IGN1cnJlbnRNYXggPSBmaWx0ZXIuY3VycmVudE1heFByaWNlID8/IG1heDtcclxuXHJcbiAgICBjb25zdCBjbGFtcGVkTWF4ID0gTWF0aC5tYXgobWluLCBNYXRoLm1pbihjdXJyZW50TWF4LCBtYXgpKTtcclxuICAgIHJldHVybiBNYXRoLm1heCgwLCBNYXRoLm1pbigxMDAgLSAoKGNsYW1wZWRNYXggLSBtaW4pIC8gKG1heCAtIG1pbikpICogMTAwLCAxMDApKTtcclxuICB9XHJcblxyXG4gIC8vIE3DqXRvZG8gcGFyYSBhY3R1YWxpemFyIGxvcyB2YWxvcmVzIGRlIHByZWNpbyBzZWxlY2Npb25hZG9zXHJcbiAgdXBkYXRlUHJpY2VSYW5nZShmaWx0ZXI6IGFueSkge1xyXG4gICAgaWYgKCEoZmlsdGVyIGluc3RhbmNlb2YgUHJpY2VSYW5nZUZpbHRlcikpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCBtaW4gPSBmaWx0ZXIuY3VycmVudE1pblByaWNlID8/IGZpbHRlci5taW5QcmljZTtcclxuICAgIGNvbnN0IG1heCA9IGZpbHRlci5jdXJyZW50TWF4UHJpY2UgPz8gZmlsdGVyLm1heFByaWNlO1xyXG4gICAgdGhpcy5fZmlsdGVyc1NlcnZpY2UudXBkYXRlUHJpY2VSYW5nZUZpbHRlcihtaW4sIG1heCk7XHJcbiAgfVxyXG5cclxuICBnZXRNaW5WYWx1ZShmaWx0ZXI6IGFueSk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gKGZpbHRlciBpbnN0YW5jZW9mIFByaWNlUmFuZ2VGaWx0ZXIgJiYgZmlsdGVyLmN1cnJlbnRNaW5QcmljZSAhPSBudWxsKVxyXG4gICAgICA/IGZpbHRlci5jdXJyZW50TWluUHJpY2VcclxuICAgICAgOiBmaWx0ZXIubWluUHJpY2U7XHJcbiAgfVxyXG5cclxuICBnZXRNYXhWYWx1ZShmaWx0ZXI6IGFueSk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gKGZpbHRlciBpbnN0YW5jZW9mIFByaWNlUmFuZ2VGaWx0ZXIgJiYgZmlsdGVyLmN1cnJlbnRNYXhQcmljZSAhPSBudWxsKVxyXG4gICAgICA/IGZpbHRlci5jdXJyZW50TWF4UHJpY2VcclxuICAgICAgOiBmaWx0ZXIubWF4UHJpY2U7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAqIFJlZG9uZGVhIGFsIG3Dumx0aXBsbyBkZSAnc3RlcCcgcmVzcGV0YW5kbyBlbCByZWRvbmRlbyBlbnRlcm86XHJcbiAgKiAtIE3DrW5pbW86IHJlZG9uZGVhIGhhY2lhIGFiYWpvLlxyXG4gICogLSBNw6F4aW1vOiByZWRvbmRlYSBoYWNpYSBhcnJpYmEuXHJcbiAgKi9cclxuICBvblJhbmdlQ2hhbmdlKGV2ZW50OiBFdmVudCwgdHlwZTogJ21pbicgfCAnbWF4JywgZmlsdGVyOiBhbnkpIHtcclxuICAgIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XHJcbiAgICBsZXQgdmFsdWUgPSBwYXJzZUZsb2F0KGlucHV0LnZhbHVlKTtcclxuICAgIHZhbHVlID0gdGhpcy5yb3VuZFRvTmVhcmVzdCh2YWx1ZSwgdGhpcy5yb3VuZFN0ZXAsIHR5cGUsIGZpbHRlcik7XHJcbiAgICB0aGlzLnVwZGF0ZUZpbHRlclByaWNlcyh0eXBlLCB2YWx1ZSwgZmlsdGVyLCB0aGlzLnByaWNlR2FwKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCByb3VuZFRvTmVhcmVzdCh2YWx1ZTogbnVtYmVyLCBzdGVwOiBudW1iZXIsIHR5cGU6ICdtaW4nIHwgJ21heCcsIGZpbHRlcjogYW55KTogbnVtYmVyIHtcclxuICAgIGxldCByb3VuZGVkID0gTWF0aC5yb3VuZCh2YWx1ZSAvIHN0ZXApICogc3RlcDtcclxuICAgIGlmICh0eXBlID09PSAnbWF4JyAmJiByb3VuZGVkIDwgZmlsdGVyLm1heFByaWNlKSB7XHJcbiAgICAgIHJvdW5kZWQgPSBNYXRoLmNlaWwodmFsdWUgLyBzdGVwKSAqIHN0ZXA7XHJcbiAgICB9XHJcbiAgICBpZiAodHlwZSA9PT0gJ21pbicgJiYgcm91bmRlZCA+IGZpbHRlci5taW5QcmljZSkge1xyXG4gICAgICByb3VuZGVkID0gTWF0aC5mbG9vcih2YWx1ZSAvIHN0ZXApICogc3RlcDtcclxuICAgIH1cclxuICAgIHJldHVybiByb3VuZGVkO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgKiBBY3R1YWxpemEgbG9zIHZhbG9yZXMgZGVsIGZpbHRybyBwZXJtaXRpZW5kbyBxdWUgdW4gaW5wdXQgZW1wdWplIGFsIG90cm8uXHJcbiAgKi9cclxuICBwcm90ZWN0ZWQgdXBkYXRlRmlsdGVyUHJpY2VzKHR5cGU6ICdtaW4nIHwgJ21heCcsIHZhbHVlOiBudW1iZXIsIGZpbHRlcjogYW55LCBwcmljZUdhcDogbnVtYmVyKSB7XHJcbiAgICBjb25zdCBnbG9iYWxNaW4gPSBmaWx0ZXIubWluUHJpY2UgPz8gMDtcclxuICAgIGNvbnN0IGdsb2JhbE1heCA9IGZpbHRlci5tYXhQcmljZTtcclxuXHJcbiAgICBsZXQgY3VycmVudE1pbiA9IGZpbHRlci5jdXJyZW50TWluUHJpY2UgPz8gZ2xvYmFsTWluO1xyXG4gICAgbGV0IGN1cnJlbnRNYXggPSBmaWx0ZXIuY3VycmVudE1heFByaWNlID8/IGdsb2JhbE1heDtcclxuXHJcbiAgICBpZiAodHlwZSA9PT0gJ21pbicpIHtcclxuICAgICAgbGV0IG5ld01pbiA9IE1hdGgubWluKE1hdGgubWF4KHZhbHVlLCBnbG9iYWxNaW4pLCBnbG9iYWxNYXgpO1xyXG4gICAgICBpZiAobmV3TWluICsgcHJpY2VHYXAgPiBjdXJyZW50TWF4KSB7XHJcbiAgICAgICAgbGV0IG5ld01heENhbmRpZGF0ZSA9IG5ld01pbiArIHByaWNlR2FwO1xyXG4gICAgICAgIGlmIChuZXdNYXhDYW5kaWRhdGUgPD0gZ2xvYmFsTWF4KSB7XHJcbiAgICAgICAgICBjdXJyZW50TWF4ID0gbmV3TWF4Q2FuZGlkYXRlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBuZXdNaW4gPSBnbG9iYWxNYXggLSBwcmljZUdhcDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZmlsdGVyLmN1cnJlbnRNaW5QcmljZSA9IG5ld01pbjtcclxuICAgICAgZmlsdGVyLmN1cnJlbnRNYXhQcmljZSA9IGN1cnJlbnRNYXg7XHJcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdtYXgnKSB7XHJcbiAgICAgIGxldCBuZXdNYXggPSBNYXRoLm1heChNYXRoLm1pbih2YWx1ZSwgZ2xvYmFsTWF4KSwgZ2xvYmFsTWluKTtcclxuICAgICAgaWYgKG5ld01heCAtIHByaWNlR2FwIDwgY3VycmVudE1pbikge1xyXG4gICAgICAgIGxldCBuZXdNaW5DYW5kaWRhdGUgPSBuZXdNYXggLSBwcmljZUdhcDtcclxuICAgICAgICBpZiAobmV3TWluQ2FuZGlkYXRlID49IGdsb2JhbE1pbikge1xyXG4gICAgICAgICAgY3VycmVudE1pbiA9IG5ld01pbkNhbmRpZGF0ZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgbmV3TWF4ID0gZ2xvYmFsTWluICsgcHJpY2VHYXA7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGZpbHRlci5jdXJyZW50TWF4UHJpY2UgPSBuZXdNYXg7XHJcbiAgICAgIGZpbHRlci5jdXJyZW50TWluUHJpY2UgPSBjdXJyZW50TWluO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2Nyb2xsVXAgPSAoKSA9PiB7XHJcbiAgICB3aW5kb3cuc2Nyb2xsKDAsIDApO1xyXG4gICAgcmV0dXJuIHRydWVcclxuICB9XHJcblxyXG4gIGdldEZvcm1hdHRlZE1pblByaWNlKGZpbHRlcjogYW55KTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHZhbHVlID0gKGZpbHRlciBpbnN0YW5jZW9mIFByaWNlUmFuZ2VGaWx0ZXIgJiYgZmlsdGVyLmN1cnJlbnRNaW5QcmljZSAhPSBudWxsKVxyXG4gICAgICA/IGZpbHRlci5jdXJyZW50TWluUHJpY2VcclxuICAgICAgOiBmaWx0ZXIubWluUHJpY2U7XHJcbiAgICByZXR1cm4gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBnZXRGb3JtYXR0ZWRNYXhQcmljZShmaWx0ZXI6IGFueSk6IHN0cmluZyB7XHJcbiAgICBjb25zdCB2YWx1ZSA9IChmaWx0ZXIgaW5zdGFuY2VvZiBQcmljZVJhbmdlRmlsdGVyICYmIGZpbHRlci5jdXJyZW50TWF4UHJpY2UgIT0gbnVsbClcclxuICAgICAgPyBmaWx0ZXIuY3VycmVudE1heFByaWNlXHJcbiAgICAgIDogZmlsdGVyLm1heFByaWNlO1xyXG4gICAgcmV0dXJuIHZhbHVlO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwic2xpZGVyXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwic2xpZGVyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInByb2dyZXNzXCIgW25nU3R5bGVdPVwiZ2V0U2xpZGVyU3R5bGUoZmlsdGVyKVwiPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG48ZGl2IGNsYXNzPVwicmFuZ2UtaW5wdXQgZC1mbGV4IGdhcC0yXCI+XHJcbiAgICA8aW5wdXQgI3JhbmdlTWluIHR5cGU9XCJyYW5nZVwiIGNsYXNzPVwicmFuZ2UtbWluXCIgW21pbl09XCJmaWx0ZXIubWluUHJpY2VcIiBbbWF4XT1cImZpbHRlci5tYXhQcmljZVwiXHJcbiAgICAgICAgW3ZhbHVlXT1cImdldE1pblZhbHVlKGZpbHRlcilcIiAoaW5wdXQpPVwib25SYW5nZUNoYW5nZSgkZXZlbnQsICdtaW4nLCBmaWx0ZXIpXCJcclxuICAgICAgICAoY2hhbmdlKT1cInVwZGF0ZVByaWNlUmFuZ2UoZmlsdGVyKTsgc2Nyb2xsVXAoKVwiPlxyXG4gICAgPGlucHV0ICNyYW5nZU1heCB0eXBlPVwicmFuZ2VcIiBjbGFzcz1cInJhbmdlLW1heFwiIFttaW5dPVwiZmlsdGVyLm1pblByaWNlXCIgW21heF09XCJmaWx0ZXIubWF4UHJpY2VcIlxyXG4gICAgICAgIFt2YWx1ZV09XCJnZXRNYXhWYWx1ZShmaWx0ZXIpXCIgKGlucHV0KT1cIm9uUmFuZ2VDaGFuZ2UoJGV2ZW50LCAnbWF4JywgZmlsdGVyKVwiXHJcbiAgICAgICAgKGNoYW5nZSk9XCJ1cGRhdGVQcmljZVJhbmdlKGZpbHRlcik7IHNjcm9sbFVwKClcIj5cclxuPC9kaXY+XHJcbjwhLS0gcHJlY2lvcyBNw61uaW1vIC8gTcOheGltbyAtLT5cclxuPGRpdiBjbGFzcz1cInByaWNlLWNvbnRhaW5lciBtdC0yXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwicHJpY2UtbGFiZWwtd3JhcHBlclwiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwicHJpY2UtbGFiZWxcIj5Nw61uaW1vOjwvc3Bhbj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cInByaWNlLXZhbHVlXCI+XHJcbiAgICAgICAgICAgIHt7IChnZXRGb3JtYXR0ZWRNaW5QcmljZShmaWx0ZXIpIHwgZWNDdXJyZW5jeVN5bWJvbCkgfHwgJzAnIH19XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwicHJpY2UtbGFiZWwtd3JhcHBlclwiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwicHJpY2UtbGFiZWxcIj5Nw6F4aW1vOjwvc3Bhbj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cInByaWNlLXZhbHVlIHByaWNlLXZhbHVlLXJpZ2h0XCI+XHJcbiAgICAgICAgICAgIHt7IGdldEZvcm1hdHRlZE1heFByaWNlKGZpbHRlcikgfCBlY0N1cnJlbmN5U3ltYm9sIH19XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==
@@ -214,4 +214,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
214
214
  type: Component,
215
215
  args: [{ selector: 'app-product-detail-ec', standalone: true, imports: [VariantsEcComponent], template: "" }]
216
216
  }], ctorParameters: () => [] });
217
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1kZXRhaWwtZWMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLWNvbXBvbmVudHMvcHJvZHVjdC1kZXRhaWwtZWMvcHJvZHVjdC1kZXRhaWwtZWMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLWNvbXBvbmVudHMvcHJvZHVjdC1kZXRhaWwtZWMvcHJvZHVjdC1kZXRhaWwtZWMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFbkYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQWtCLE1BQU0sRUFBdUIsTUFBTSxlQUFlLENBQUM7QUFDL0YsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3hGLE9BQU8sRUFBRSxZQUFZLEVBQVksTUFBTSwyQkFBMkIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUd2RCxPQUFPLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQztBQUN6QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1C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LFNBQWM7UUFDNUMsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVEOztPQUVHO0lBQ0ssZ0JBQWdCO1FBQ3RCLCtEQUErRDtRQUMvRCxJQUFJLE9BQVEsSUFBWSxDQUFDLFNBQVMsS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUNqRCxJQUFZLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDNUIsQ0FBQztRQUVELDhDQUE4QztRQUM5QyxJQUFJLFNBQVMsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNyQixJQUFZLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUNoQyxDQUFDO0lBQ0gsQ0FBQzt3R0FsT1Usd0JBQXdCOzRGQUF4Qix3QkFBd0IsaUZDMUJyQyxFQUFBOzs0RkQwQmEsd0JBQXdCO2tCQVBwQyxTQUFTOytCQUNFLHVCQUF1QixjQUNyQixJQUFJLFdBQ1AsQ0FBQyxtQkFBbUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbXB1dGVkLCBJbmplY3RvciwgT25Jbml0LCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFBhcmFtZXRlcnNTZXJ2aWNlLCBDaGFubmVsU2VydmljZSwgQ2FydFNlcnZpY2UgfSBmcm9tICcuLi8uLi9lYy1zZXJ2aWNlcyc7XG5pbXBvcnQgeyBQYXJhbWV0ZXIgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IENvbXBvbmVudCwgaW5qZWN0LCBXcml0YWJsZVNpZ25hbCwgc2lnbmFsLCBQTEFURk9STV9JRCwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBNZXRhLCBUaXRsZSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBQcm9kdWN0RGV0YWlsU2VydmljZSwgUHJvZHVjdHNTZXJ2aWNlLCBUb2FzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9lYy1zZXJ2aWNlcyc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVIdG1sIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBDb3JlQ29uc3RhbnRzU2VydmljZSB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFByb2R1Y3QgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCAqIGFzIGhlIGZyb20gJ2hlJztcbmltcG9ydCB7IE9wdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZWMtc2VydmljZXMnO1xuaW1wb3J0IHsgVmFyaWFudHNFY0NvbXBvbmVudCB9IGZyb20gJy4uL3ZhcmlhbnRzLWVjL3ZhcmlhbnRzLWVjLmNvbXBvbmVudCc7XG5cblxuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1wcm9kdWN0LWRldGFpbC1lYycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtWYXJpYW50c0VjQ29tcG9uZW50XSxcbiAgdGVtcGxhdGVVcmw6ICcuL3Byb2R1Y3QtZGV0YWlsLWVjLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcHJvZHVjdC1kZXRhaWwtZWMuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBQcm9kdWN0RGV0YWlsRWNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgX2NhcnRTZXJ2aWNlOiBDYXJ0U2VydmljZSA9IGluamVjdChDYXJ0U2VydmljZSlcbiAgcHJpdmF0ZSBfb3B0aW9uc1NlcnZpY2U6IE9wdGlvbnNTZXJ2aWNlID0gaW5qZWN0KE9wdGlvbnNTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBfcHJvZHVjdERldGFpbFNlcnZpY2U6IFByb2R1Y3REZXRhaWxTZXJ2aWNlID0gaW5qZWN0KFByb2R1Y3REZXRhaWxTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBfcHJvZHVjdFNlcnZpY2U6IFByb2R1Y3RzU2VydmljZSA9IGluamVjdChQcm9kdWN0c1NlcnZpY2UpO1xuICBwcml2YXRlIF9hY3RpdmVkUm91dGU6IEFjdGl2YXRlZFJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKTtcbiAgcHJpdmF0ZSBfZG9tU2FuaXRpemVyOiBEb21TYW5pdGl6ZXIgPSBpbmplY3QoRG9tU2FuaXRpemVyKTtcbiAgcHJpdmF0ZSBfY29uc3RzOiBDb3JlQ29uc3RhbnRzU2VydmljZSA9IGluamVjdChDb3JlQ29uc3RhbnRzU2VydmljZSk7XG4gIHByaXZhdGUgX3RvYXN0U2VydmljZTogVG9hc3RTZXJ2aWNlID0gaW5qZWN0KFRvYXN0U2VydmljZSk7XG4gIHByaXZhdGUgcGFyYW1ldGVyc1NlcnZpY2UgPSBpbmplY3QoUGFyYW1ldGVyc1NlcnZpY2UpO1xuICBwdWJsaWMgaW5qZWN0b3I6IEluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcbiAgcHJpdmF0ZSBfbWV0YTogTWV0YSA9IGluamVjdChNZXRhKTtcbiAgcHJpdmF0ZSBfdGl0bGU6IFRpdGxlID0gaW5qZWN0KFRpdGxlKTtcbiAgcHJpdmF0ZSBfbG9jYXRpb246IExvY2F0aW9uID0gaW5qZWN0KExvY2F0aW9uKTtcbiAgcHVibGljIHByb2R1Y3QkOiBPYnNlcnZhYmxlPFByb2R1Y3QgfCBudWxsPiA9IHRoaXMuX3Byb2R1Y3REZXRhaWxTZXJ2aWNlLnByb2R1Y3QkO1xuICBwdWJsaWMgb3B0aW9ucyQ6IE9ic2VydmFibGU8YW55PiA9IHRoaXMuX3Byb2R1Y3REZXRhaWxTZXJ2aWNlLm9wdGlvbnMkO1xuICBwdWJsaWMgZGF0YSQ6IE9ic2VydmFibGU8YW55PiA9IHRoaXMuX3Byb2R1Y3REZXRhaWxTZXJ2aWNlLmFzc29jaWF0ZWREYXRhJDtcbiAgcHJpdmF0ZSByb3V0ZVN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSByb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSk7XG4gIHByaXZhdGUgY3VycmVudFByb2R1Y3RJZD86IHN0cmluZztcbiAgICBwcml2YXRlIF9yb3V0ZXI6IFJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuXG5cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnJvdXRlU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHVibGljIG1lZGlhVXJsID0gdGhpcy5fY29uc3RzLm1lZGlhVXJsKCk7XG4gIHB1YmxpYyBjb2RlOiBzdHJpbmcgPSAnJztcbiAgcHVibGljIHNob3dGb3JtQ29udGFjdCA9IGZhbHNlO1xuICBwdWJsaWMgc2hvd1Jldmlld3M6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIHJlc2V0OiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBzdWNjZXNzOiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBjYXRlZ29yaWVzOiBhbnlbXSA9IFtdO1xuICBwdWJsaWMgc2hvd1ByaWNlc09ubHlUb0xvZ2dlZFVzZXJzOiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBoaWRlUHJpY2VzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHVibGljIHF1YW50aXR5OiBXcml0YWJsZVNpZ25hbDxudW1iZXI+ID0gc2lnbmFsKDEpO1xuICBwdWJsaWMgaXNBZGRpbmdUb0NhcnQ6IFdyaXRhYmxlU2lnbmFsPGJvb2xlYW4+ID0gc2lnbmFsKGZhbHNlKTtcbiAgcHVibGljIHBhcmFtZXRlcnMkOiBPYnNlcnZhYmxlPFBhcmFtZXRlcltdIHwgbnVsbD4gPSB0aGlzLnBhcmFtZXRlcnNTZXJ2aWNlLmdldFBhcmFtZXRlcnMoKTtcbiAgcHVibGljIGhhc1BhcmFtcyA9IHRoaXMucGFyYW1ldGVyc1NlcnZpY2UuaGFzUGFyYW1zXG4gIHB1YmxpYyBjcmVkaXRBY2NvdW50U2hvd1ByaWNlczogYm9vbGVhbiB8IG51bGwgPSBudWxsO1xuICAvLyBBZ3JlZ2FyIGVzdGEgcHJvcGllZGFkIGFsIGluaWNpbyBkZSBsYSBjbGFzZVxuICBwcml2YXRlIHByb2R1Y3RTaWduYWwgPSBzaWduYWw8UHJvZHVjdCB8IG51bGw+KG51bGwpO1xuXG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5fYWN0aXZlZFJvdXRlLnBhcmFtcy5zdWJzY3JpYmUocXVlcnlQYXJhbXMgPT4ge1xuICAgICAgdGhpcy5jb2RlID0gcXVlcnlQYXJhbXNbXCJpZFwiXTtcbiAgICAgIHRoaXMuX3Byb2R1Y3REZXRhaWxTZXJ2aWNlLmxvYWRQcm9kdWN0KHRoaXMuY29kZSk7XG4gICAgfSk7XG4gICAgdGhpcy5fYWN0aXZlZFJvdXRlLnBhcmFtcy5zdWJzY3JpYmUocXVlcnlQYXJhbXMgPT4ge1xuICAgICAgdGhpcy5jb2RlID0gcXVlcnlQYXJhbXNbXCJpZFwiXTtcbiAgICAgIHRoaXMuX3Byb2R1Y3REZXRhaWxTZXJ2aWNlLmxvYWRQcm9kdWN0KHRoaXMuY29kZSk7XG4gICAgfSlcbiAgICB0aGlzLmluamVjdG9yLmdldChDaGFubmVsU2VydmljZSkuY2hhbm5lbCQuc3Vic2NyaWJlKGNoYW5uZWwgPT4ge1xuICAgICAgdGhpcy5zaG93UmV2aWV3cyA9IGNoYW5uZWwuc2hvd1Jldmlld3M7XG4gICAgICB0aGlzLnNob3dQcmljZXNPbmx5VG9Mb2dnZWRVc2VycyA9ICEhY2hhbm5lbC5zaG93UHJpY2VzT25seVRvTG9nZ2VkVXNlcnM7XG4gICAgICB0aGlzLmhpZGVQcmljZXMgPSAhIWNoYW5uZWwuaGlkZVByaWNlcztcbiAgICB9KTtcbiAgICB0aGlzLl9vcHRpb25zU2VydmljZS5nZXRDYXRlZ29yaWVzKCkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICB0aGlzLmNhdGVnb3JpZXMgPSByZXM7XG4gICAgfVxuICAgICk7XG4gICAgdGhpcy5fY2FydFNlcnZpY2Uuc2hvd1ByaWNlJC5zdWJzY3JpYmUoKHNob3dQcmljZSkgPT4ge1xuICAgICAgdGhpcy5jcmVkaXRBY2NvdW50U2hvd1ByaWNlcyA9IHNob3dQcmljZTtcbiAgICB9KTtcblxuICAgIHRoaXMucHJvZHVjdCQuc3Vic2NyaWJlKHByb2R1Y3QgPT4ge1xuICAgICAgdGhpcy5wcm9kdWN0U2lnbmFsLnNldChwcm9kdWN0KTtcbiAgICB9KTtcblxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5wcm9kdWN0JC5zdWJzY3JpYmUocHJvZHVjdCA9PiB7XG4gICAgICBpZiAocHJvZHVjdCkge1xuICAgICAgICB0aGlzLnVwZGF0ZU1ldGFUYWdzKHByb2R1Y3QpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIC8vIFN1c2NyaWJpcnNlIGEgbG9zIGNhbWJpb3MgZGUgcGFyw6FtZXRyb3MgZGUgbGEgcnV0YVxuICAgIHRoaXMucm91dGVTdWJzY3JpcHRpb24gPSB0aGlzLnJvdXRlLnBhcmFtcy5zdWJzY3JpYmUocGFyYW1zID0+IHtcbiAgICAgIGNvbnN0IG5ld1Byb2R1Y3RJZCA9IHBhcmFtc1snaWQnXTtcbiAgICAgIGlmIChuZXdQcm9kdWN0SWQgJiYgbmV3UHJvZHVjdElkICE9PSB0aGlzLmN1cnJlbnRQcm9kdWN0SWQpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50UHJvZHVjdElkID0gbmV3UHJvZHVjdElkO1xuXG4gICAgICAgIC8vIFJlc2V0ZWFyIGVsIGVzdGFkbyBkZWwgbW9kYWwgZGUgcmVzZcOxYXMgY3VhbmRvIGNhbWJpZSBlbCBwcm9kdWN0b1xuICAgICAgICB0aGlzLnJlc2V0UmV2aWV3TW9kYWwoKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICB9XG5cbiAgdXBkYXRlTWV0YVRhZ3MocHJvZHVjdDogUHJvZHVjdCkge1xuICAgIGNvbnN0IGRlc2NyaXBjaW9uTGltcGlhID0gaGUuZGVjb2RlKHByb2R1Y3QuZGVzY3JpcHRpb24gfHwgJycpLnJlcGxhY2UoLzxbXj5dKj4vZywgJyAnKS5yZXBsYWNlKC9cXHMrL2csICcgJykudHJpbSgpO1xuICAgIGNvbnN0IGN1cnJlbnRVcmwgPSB0aGlzLl9jb25zdHMuZ2V0RnJvbnRlbmRVcmwoKSArIHRoaXMuX3JvdXRlci51cmw7ICAvLyBVUkwgYWJzb2x1dGEgZGVsIHByb2R1Y3RvXG4gICAgY29uc3QgaW1hZ2VVcmwgPSB0aGlzLl9jb25zdHMuZ2V0QWJzb2x1dGVJbWFnZVVybChBcnJheS5pc0FycmF5KHByb2R1Y3QucGljdHVyZXNkZWZhdWx0KSA/IHByb2R1Y3QucGljdHVyZXNkZWZhdWx0WzBdIDogcHJvZHVjdC5waWN0dXJlc2RlZmF1bHQpO1xuXG5cbiAgICB0aGlzLl9tZXRhLnVwZGF0ZVRhZyh7IHByb3BlcnR5OiAnb2c6dGl0bGUnLCBjb250ZW50OiBwcm9kdWN0Lm5hbWUgfHwgJycgfSk7XG4gICAgdGhpcy5fbWV0YS51cGRhdGVUYWcoeyBwcm9wZXJ0eTogJ29nOmRlc2NyaXB0aW9uJywgY29udGVudDogZGVzY3JpcGNpb25MaW1waWEgfHwgJycgfSk7XG4gICAgdGhpcy5fbWV0YS51cGRhdGVUYWcoeyBwcm9wZXJ0eTogJ29nOmltYWdlJywgY29udGVudDogaW1hZ2VVcmwgfHwgJycgfSk7XG4gICAgLy8gdGhpcy5fbWV0YS51cGRhdGVUYWcoeyBwcm9wZXJ0eTogJ29nOnVybCcsIGNvbnRlbnQ6IGN1cnJlbnRVcmwgfSk7XG4gICAgdGhpcy5fbWV0YS51cGRhdGVUYWcoeyBwcm9wZXJ0eTogJ29nOnR5cGUnLCBjb250ZW50OiAncHJvZHVjdCcgfSk7XG4gIH1cbiAgZGVjb2RlSHRtbChodG1sOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IHR4dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RleHRhcmVhJyk7XG4gICAgdHh0LmlubmVySFRNTCA9IGh0bWw7XG4gICAgcmV0dXJuIHR4dC52YWx1ZTtcblxuICB9XG4gIHNhbml0aXplZEh0bWwoaHRtbDogc3RyaW5nKTogU2FmZUh0bWwge1xuICAgIGNvbnN0IGRlY29kZWRIdG1sID0gdGhpcy5kZWNvZGVIdG1sKGh0bWwpO1xuICAgIHJldHVybiB0aGlzLl9kb21TYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoZGVjb2RlZEh0bWwpO1xuICB9XG5cbiAgYWRkVG9DYXJ0KCkge1xuICAgIGlmICh0aGlzLmlzQWRkaW5nVG9DYXJ0KCkgfHwgdGhpcy5xdWFudGl0eSgpIDw9IDApIHJldHVybjtcblxuICAgIHRoaXMuaXNBZGRpbmdUb0NhcnQuc2V0KHRydWUpO1xuICAgIHRoaXMuX3Byb2R1Y3REZXRhaWxTZXJ2aWNlLmFkZFRvQ2FydCh0aGlzLnF1YW50aXR5KCkpO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmlzQWRkaW5nVG9DYXJ0LnNldChmYWxzZSk7XG4gICAgfSwgMjAwMCk7XG4gIH1cblxuICBwbHVzKHN0b2NrPzogbnVtYmVyLCBtdWx0aXBsZVF1YW50aXR5PzogbnVtYmVyKSB7XG4gIGNvbnN0IGN1cnJlbnQgPSBOdW1iZXIodGhpcy5xdWFudGl0eSgpKTsgLy8gPC0tIGZ1ZXJ6YSBhIG7Dum1lcm9cbiAgaWYgKG11bHRpcGxlUXVhbnRpdHkgJiYgbXVsdGlwbGVRdWFudGl0eSA+IDApIHtcbiAgICBzdG9ja1xuICAgICAgPyAoY3VycmVudCA8IHN0b2NrXG4gICAgICAgICAgPyB0aGlzLnF1YW50aXR5LnNldChjdXJyZW50ICsgbXVsdGlwbGVRdWFudGl0eSlcbiAgICAgICAgICA6IHRoaXMuX3RvYXN0U2VydmljZS5zaG93KCdvdXQtb2Ytc3RvY2stYWN0dWFsbHknKSlcbiAgICAgIDogdGhpcy5xdWFudGl0eS5zZXQoY3VycmVudCArIG11bHRpcGxlUXVhbnRpdHkpO1xuICB9IGVsc2Uge1xuICAgIHN0b2NrXG4gICAgICA/IChjdXJyZW50IDwgc3RvY2tcbiAgICAgICAgICA/IHRoaXMucXVhbnRpdHkuc2V0KGN1cnJlbnQgKyAxKVxuICAgICAgICAgIDogdGhpcy5fdG9hc3RTZXJ2aWNlLnNob3coJ291dC1vZi1zdG9jay1hY3R1YWxseScpKVxuICAgICAgOiB0aGlzLnF1YW50aXR5LnNldChjdXJyZW50ICsgMSk7XG4gIH1cbn1cblxubGVzcyhtdWx0aXBsZVF1YW50aXR5PzogbnVtYmVyKSB7XG4gIGNvbnN0IGN1cnJlbnQgPSBOdW1iZXIodGhpcy5xdWFudGl0eSgpKTsgLy8gPC0tIGZ1ZXJ6YSBhIG7Dum1lcm9cbiAgaWYgKG11bHRpcGxlUXVhbnRpdHkgJiYgbXVsdGlwbGVRdWFudGl0eSA+IDApIHtcbiAgICBjdXJyZW50ID4gbXVsdGlwbGVRdWFudGl0eVxuICAgICAgPyB0aGlzLnF1YW50aXR5LnNldChjdXJyZW50IC0gbXVsdGlwbGVRdWFudGl0eSlcbiAgICAgIDogbnVsbDtcbiAgfSBlbHNlIHtcbiAgICBjdXJyZW50ID4gMSA/IHRoaXMucXVhbnRpdHkuc2V0KGN1cnJlbnQgLSAxKSA6IG51bGw7XG4gIH1cbn1cblxuICBjaGVja1N0b2NrKHN0b2NrOiBudW1iZXIpIHtcbiAgICBpZiAodGhpcy5xdWFudGl0eSgpID49IHN0b2NrKVxuICAgICAgdGhpcy5xdWFudGl0eS5zZXQoc3RvY2spO1xuICB9XG5cbiAgcHVibGljIGdvVG9TZWN0aW9uKHNlY3Rpb246IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuc2hvd0Zvcm1Db250YWN0ID0gdHJ1ZTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChzZWN0aW9uKTtcbiAgICAgIGlmIChlbGVtZW50KSB7XG4gICAgICAgIGVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlvcjogJ3Ntb290aCcgfSk7XG4gICAgICB9XG4gICAgfSwgNTAwKTtcbiAgfVxuXG4gIHJlc2V0Rm9ybSA9ICgpID0+IHtcbiAgICB0aGlzLnJlc2V0ID0gIXRoaXMucmVzZXRcbiAgICB0aGlzLnN1Y2Nlc3MgPSB0cnVlXG4gIH1cblxuICAvLyBDb21wdXRlZCBzaWduYWxzIG3DoXMgZWZpY2llbnRlc1xuICBwdWJsaWMgaGFzRGlzY291bnQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgcHJvZHVjdCA9IHRoaXMucHJvZHVjdFNpZ25hbCgpO1xuICAgIGlmICghcHJvZHVjdD8uc2FsZXByaWNlIHx8ICFwcm9kdWN0Py5wcmljZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IG9yaWdpbmFsUHJpY2UgPSBwYXJzZUZsb2F0KHByb2R1Y3QucHJpY2UudG9TdHJpbmcoKSk7XG4gICAgY29uc3Qgc2FsZVByaWNlID0gcGFyc2VGbG9hdChwcm9kdWN0LnNhbGVwcmljZS50b1N0cmluZygpKTtcblxuICAgIHJldHVybiBzYWxlUHJpY2UgPiAwICYmIG9yaWdpbmFsUHJpY2UgPiBzYWxlUHJpY2U7XG4gIH0pO1xuXG4gIHB1YmxpYyBkaXNjb3VudFBlcmNlbnRhZ2UgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKCF0aGlzLmhhc0Rpc2NvdW50KCkpIHJldHVybiBudWxsO1xuXG4gICAgY29uc3QgcHJvZHVjdCA9IHRoaXMucHJvZHVjdFNpZ25hbCgpO1xuICAgIGlmICghcHJvZHVjdCkgcmV0dXJuIG51bGw7XG5cbiAgICBjb25zdCBvcmlnaW5hbFByaWNlID0gcGFyc2VGbG9hdChwcm9kdWN0LnByaWNlPy50b1N0cmluZygpIHx8ICcwJyk7XG4gICAgY29uc3Qgc2FsZVByaWNlID0gcGFyc2VGbG9hdChwcm9kdWN0LnNhbGVwcmljZT8udG9TdHJpbmcoKSB8fCAnMCcpO1xuXG4gICAgaWYgKG9yaWdpbmFsUHJpY2UgPD0gMCB8fCBzYWxlUHJpY2UgPD0gMCB8fCBzYWxlUHJpY2UgPj0gb3JpZ2luYWxQcmljZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgZGlzY291bnQgPSAoKG9yaWdpbmFsUHJpY2UgLSBzYWxlUHJpY2UpIC8gb3JpZ2luYWxQcmljZSkgKiAxMDA7XG4gICAgcmV0dXJuIE1hdGgucm91bmQoZGlzY291bnQpO1xuICB9KTtcblxuICAvKipcbiAgICAqIE3DqXRvZG8gcGFyYSB0cmFja2VhciBjYW1iaW9zIGVuIGVsIHByb2R1Y3RJZCB5IGZvcnphciBsYSByZWNyZWFjacOzbiBkZWwgY29tcG9uZW50ZSByZWxhY2lvbmFkb3NcbiAgICAqL1xuICB0cmFja0J5UHJvZHVjdElkKGluZGV4OiBudW1iZXIsIHByb2R1Y3RJZDogYW55KTogYW55IHtcbiAgICByZXR1cm4gcHJvZHVjdElkO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0ZWEgZWwgZXN0YWRvIGRlbCBtb2RhbCBkZSByZXNlw7Fhc1xuICAgKi9cbiAgcHJpdmF0ZSByZXNldFJldmlld01vZGFsKCk6IHZvaWQge1xuICAgIC8vIFNpIGV4aXN0ZSB1biBtw6l0b2RvIHJlc2V0Rm9ybSBkZWwgY29tcG9uZW50ZSBwYWRyZSwgbGxhbWFybG9cbiAgICBpZiAodHlwZW9mICh0aGlzIGFzIGFueSkucmVzZXRGb3JtID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAodGhpcyBhcyBhbnkpLnJlc2V0Rm9ybSgpO1xuICAgIH1cblxuICAgIC8vIFNpIGV4aXN0ZSB1bmEgcHJvcGllZGFkIHN1Y2Nlc3MsIHJlc2V0ZWFybGFcbiAgICBpZiAoJ3N1Y2Nlc3MnIGluIHRoaXMpIHtcbiAgICAgICh0aGlzIGFzIGFueSkuc3VjY2VzcyA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG59XG4iLCIiXX0=
217
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1kZXRhaWwtZWMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLWNvbXBvbmVudHMvcHJvZHVjdC1kZXRhaWwtZWMvcHJvZHVjdC1kZXRhaWwtZWMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLWNvbXBvbmVudHMvcHJvZHVjdC1kZXRhaWwtZWMvcHJvZHVjdC1kZXRhaWwtZWMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFbkYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQWtCLE1BQU0sRUFBdUIsTUFBTSxlQUFlLENBQUM7QUFDL0YsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3hGLE9BQU8sRUFBRSxZQUFZLEVBQVksTUFBTSwyQkFBMkIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUd2RCxPQUFPLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQztBQUN6QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1C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LFNBQWM7UUFDNUMsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVEOztPQUVHO0lBQ0ssZ0JBQWdCO1FBQ3RCLCtEQUErRDtRQUMvRCxJQUFJLE9BQVEsSUFBWSxDQUFDLFNBQVMsS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUNqRCxJQUFZLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDNUIsQ0FBQztRQUVELDhDQUE4QztRQUM5QyxJQUFJLFNBQVMsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNyQixJQUFZLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUNoQyxDQUFDO0lBQ0gsQ0FBQzt3R0FsT1Usd0JBQXdCOzRGQUF4Qix3QkFBd0IsaUZDMUJyQyxFQUFBOzs0RkQwQmEsd0JBQXdCO2tCQVBwQyxTQUFTOytCQUNFLHVCQUF1QixjQUNyQixJQUFJLFdBQ1AsQ0FBQyxtQkFBbUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbXB1dGVkLCBJbmplY3RvciwgT25Jbml0LCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUGFyYW1ldGVyc1NlcnZpY2UsIENoYW5uZWxTZXJ2aWNlLCBDYXJ0U2VydmljZSB9IGZyb20gJy4uLy4uL2VjLXNlcnZpY2VzJztcclxuaW1wb3J0IHsgUGFyYW1ldGVyIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgaW5qZWN0LCBXcml0YWJsZVNpZ25hbCwgc2lnbmFsLCBQTEFURk9STV9JRCwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IExvY2F0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgTWV0YSwgVGl0bGUgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IFByb2R1Y3REZXRhaWxTZXJ2aWNlLCBQcm9kdWN0c1NlcnZpY2UsIFRvYXN0U2VydmljZSB9IGZyb20gJy4uLy4uL2VjLXNlcnZpY2VzJztcclxuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlSHRtbCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgeyBDb3JlQ29uc3RhbnRzU2VydmljZSB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBQcm9kdWN0IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XHJcbmltcG9ydCAqIGFzIGhlIGZyb20gJ2hlJztcclxuaW1wb3J0IHsgT3B0aW9uc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9lYy1zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IFZhcmlhbnRzRWNDb21wb25lbnQgfSBmcm9tICcuLi92YXJpYW50cy1lYy92YXJpYW50cy1lYy5jb21wb25lbnQnO1xyXG5cclxuXHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtcHJvZHVjdC1kZXRhaWwtZWMnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1ZhcmlhbnRzRWNDb21wb25lbnRdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9wcm9kdWN0LWRldGFpbC1lYy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vcHJvZHVjdC1kZXRhaWwtZWMuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUHJvZHVjdERldGFpbEVjQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIHByaXZhdGUgX2NhcnRTZXJ2aWNlOiBDYXJ0U2VydmljZSA9IGluamVjdChDYXJ0U2VydmljZSlcclxuICBwcml2YXRlIF9vcHRpb25zU2VydmljZTogT3B0aW9uc1NlcnZpY2UgPSBpbmplY3QoT3B0aW9uc1NlcnZpY2UpO1xyXG4gIHByaXZhdGUgX3Byb2R1Y3REZXRhaWxTZXJ2aWNlOiBQcm9kdWN0RGV0YWlsU2VydmljZSA9IGluamVjdChQcm9kdWN0RGV0YWlsU2VydmljZSk7XHJcbiAgcHJpdmF0ZSBfcHJvZHVjdFNlcnZpY2U6IFByb2R1Y3RzU2VydmljZSA9IGluamVjdChQcm9kdWN0c1NlcnZpY2UpO1xyXG4gIHByaXZhdGUgX2FjdGl2ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xyXG4gIHByaXZhdGUgX2RvbVNhbml0aXplcjogRG9tU2FuaXRpemVyID0gaW5qZWN0KERvbVNhbml0aXplcik7XHJcbiAgcHJpdmF0ZSBfY29uc3RzOiBDb3JlQ29uc3RhbnRzU2VydmljZSA9IGluamVjdChDb3JlQ29uc3RhbnRzU2VydmljZSk7XHJcbiAgcHJpdmF0ZSBfdG9hc3RTZXJ2aWNlOiBUb2FzdFNlcnZpY2UgPSBpbmplY3QoVG9hc3RTZXJ2aWNlKTtcclxuICBwcml2YXRlIHBhcmFtZXRlcnNTZXJ2aWNlID0gaW5qZWN0KFBhcmFtZXRlcnNTZXJ2aWNlKTtcclxuICBwdWJsaWMgaW5qZWN0b3I6IEluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcclxuICBwcml2YXRlIF9tZXRhOiBNZXRhID0gaW5qZWN0KE1ldGEpO1xyXG4gIHByaXZhdGUgX3RpdGxlOiBUaXRsZSA9IGluamVjdChUaXRsZSk7XHJcbiAgcHJpdmF0ZSBfbG9jYXRpb246IExvY2F0aW9uID0gaW5qZWN0KExvY2F0aW9uKTtcclxuICBwdWJsaWMgcHJvZHVjdCQ6IE9ic2VydmFibGU8UHJvZHVjdCB8IG51bGw+ID0gdGhpcy5fcHJvZHVjdERldGFpbFNlcnZpY2UucHJvZHVjdCQ7XHJcbiAgcHVibGljIG9wdGlvbnMkOiBPYnNlcnZhYmxlPGFueT4gPSB0aGlzLl9wcm9kdWN0RGV0YWlsU2VydmljZS5vcHRpb25zJDtcclxuICBwdWJsaWMgZGF0YSQ6IE9ic2VydmFibGU8YW55PiA9IHRoaXMuX3Byb2R1Y3REZXRhaWxTZXJ2aWNlLmFzc29jaWF0ZWREYXRhJDtcclxuICBwcml2YXRlIHJvdXRlU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xyXG4gIHByaXZhdGUgcm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xyXG4gIHByaXZhdGUgY3VycmVudFByb2R1Y3RJZD86IHN0cmluZztcclxuICAgIHByaXZhdGUgX3JvdXRlcjogUm91dGVyID0gaW5qZWN0KFJvdXRlcik7XHJcblxyXG5cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnJvdXRlU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG1lZGlhVXJsID0gdGhpcy5fY29uc3RzLm1lZGlhVXJsKCk7XHJcbiAgcHVibGljIGNvZGU6IHN0cmluZyA9ICcnO1xyXG4gIHB1YmxpYyBzaG93Rm9ybUNvbnRhY3QgPSBmYWxzZTtcclxuICBwdWJsaWMgc2hvd1Jldmlld3M6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgcmVzZXQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgc3VjY2VzczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBjYXRlZ29yaWVzOiBhbnlbXSA9IFtdO1xyXG4gIHB1YmxpYyBzaG93UHJpY2VzT25seVRvTG9nZ2VkVXNlcnM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgaGlkZVByaWNlczogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwdWJsaWMgcXVhbnRpdHk6IFdyaXRhYmxlU2lnbmFsPG51bWJlcj4gPSBzaWduYWwoMSk7XHJcbiAgcHVibGljIGlzQWRkaW5nVG9DYXJ0OiBXcml0YWJsZVNpZ25hbDxib29sZWFuPiA9IHNpZ25hbChmYWxzZSk7XHJcbiAgcHVibGljIHBhcmFtZXRlcnMkOiBPYnNlcnZhYmxlPFBhcmFtZXRlcltdIHwgbnVsbD4gPSB0aGlzLnBhcmFtZXRlcnNTZXJ2aWNlLmdldFBhcmFtZXRlcnMoKTtcclxuICBwdWJsaWMgaGFzUGFyYW1zID0gdGhpcy5wYXJhbWV0ZXJzU2VydmljZS5oYXNQYXJhbXNcclxuICBwdWJsaWMgY3JlZGl0QWNjb3VudFNob3dQcmljZXM6IGJvb2xlYW4gfCBudWxsID0gbnVsbDtcclxuICAvLyBBZ3JlZ2FyIGVzdGEgcHJvcGllZGFkIGFsIGluaWNpbyBkZSBsYSBjbGFzZVxyXG4gIHByaXZhdGUgcHJvZHVjdFNpZ25hbCA9IHNpZ25hbDxQcm9kdWN0IHwgbnVsbD4obnVsbCk7XHJcblxyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHRoaXMuX2FjdGl2ZWRSb3V0ZS5wYXJhbXMuc3Vic2NyaWJlKHF1ZXJ5UGFyYW1zID0+IHtcclxuICAgICAgdGhpcy5jb2RlID0gcXVlcnlQYXJhbXNbXCJpZFwiXTtcclxuICAgICAgdGhpcy5fcHJvZHVjdERldGFpbFNlcnZpY2UubG9hZFByb2R1Y3QodGhpcy5jb2RlKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5fYWN0aXZlZFJvdXRlLnBhcmFtcy5zdWJzY3JpYmUocXVlcnlQYXJhbXMgPT4ge1xyXG4gICAgICB0aGlzLmNvZGUgPSBxdWVyeVBhcmFtc1tcImlkXCJdO1xyXG4gICAgICB0aGlzLl9wcm9kdWN0RGV0YWlsU2VydmljZS5sb2FkUHJvZHVjdCh0aGlzLmNvZGUpO1xyXG4gICAgfSlcclxuICAgIHRoaXMuaW5qZWN0b3IuZ2V0KENoYW5uZWxTZXJ2aWNlKS5jaGFubmVsJC5zdWJzY3JpYmUoY2hhbm5lbCA9PiB7XHJcbiAgICAgIHRoaXMuc2hvd1Jldmlld3MgPSBjaGFubmVsLnNob3dSZXZpZXdzO1xyXG4gICAgICB0aGlzLnNob3dQcmljZXNPbmx5VG9Mb2dnZWRVc2VycyA9ICEhY2hhbm5lbC5zaG93UHJpY2VzT25seVRvTG9nZ2VkVXNlcnM7XHJcbiAgICAgIHRoaXMuaGlkZVByaWNlcyA9ICEhY2hhbm5lbC5oaWRlUHJpY2VzO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLl9vcHRpb25zU2VydmljZS5nZXRDYXRlZ29yaWVzKCkuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgIHRoaXMuY2F0ZWdvcmllcyA9IHJlcztcclxuICAgIH1cclxuICAgICk7XHJcbiAgICB0aGlzLl9jYXJ0U2VydmljZS5zaG93UHJpY2UkLnN1YnNjcmliZSgoc2hvd1ByaWNlKSA9PiB7XHJcbiAgICAgIHRoaXMuY3JlZGl0QWNjb3VudFNob3dQcmljZXMgPSBzaG93UHJpY2U7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLnByb2R1Y3QkLnN1YnNjcmliZShwcm9kdWN0ID0+IHtcclxuICAgICAgdGhpcy5wcm9kdWN0U2lnbmFsLnNldChwcm9kdWN0KTtcclxuICAgIH0pO1xyXG5cclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5wcm9kdWN0JC5zdWJzY3JpYmUocHJvZHVjdCA9PiB7XHJcbiAgICAgIGlmIChwcm9kdWN0KSB7XHJcbiAgICAgICAgdGhpcy51cGRhdGVNZXRhVGFncyhwcm9kdWN0KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICAvLyBTdXNjcmliaXJzZSBhIGxvcyBjYW1iaW9zIGRlIHBhcsOhbWV0cm9zIGRlIGxhIHJ1dGFcclxuICAgIHRoaXMucm91dGVTdWJzY3JpcHRpb24gPSB0aGlzLnJvdXRlLnBhcmFtcy5zdWJzY3JpYmUocGFyYW1zID0+IHtcclxuICAgICAgY29uc3QgbmV3UHJvZHVjdElkID0gcGFyYW1zWydpZCddO1xyXG4gICAgICBpZiAobmV3UHJvZHVjdElkICYmIG5ld1Byb2R1Y3RJZCAhPT0gdGhpcy5jdXJyZW50UHJvZHVjdElkKSB7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50UHJvZHVjdElkID0gbmV3UHJvZHVjdElkO1xyXG5cclxuICAgICAgICAvLyBSZXNldGVhciBlbCBlc3RhZG8gZGVsIG1vZGFsIGRlIHJlc2XDsWFzIGN1YW5kbyBjYW1iaWUgZWwgcHJvZHVjdG9cclxuICAgICAgICB0aGlzLnJlc2V0UmV2aWV3TW9kYWwoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gIH1cclxuXHJcbiAgdXBkYXRlTWV0YVRhZ3MocHJvZHVjdDogUHJvZHVjdCkge1xyXG4gICAgY29uc3QgZGVzY3JpcGNpb25MaW1waWEgPSBoZS5kZWNvZGUocHJvZHVjdC5kZXNjcmlwdGlvbiB8fCAnJykucmVwbGFjZSgvPFtePl0qPi9nLCAnICcpLnJlcGxhY2UoL1xccysvZywgJyAnKS50cmltKCk7XHJcbiAgICBjb25zdCBjdXJyZW50VXJsID0gdGhpcy5fY29uc3RzLmdldEZyb250ZW5kVXJsKCkgKyB0aGlzLl9yb3V0ZXIudXJsOyAgLy8gVVJMIGFic29sdXRhIGRlbCBwcm9kdWN0b1xyXG4gICAgY29uc3QgaW1hZ2VVcmwgPSB0aGlzLl9jb25zdHMuZ2V0QWJzb2x1dGVJbWFnZVVybChBcnJheS5pc0FycmF5KHByb2R1Y3QucGljdHVyZXNkZWZhdWx0KSA/IHByb2R1Y3QucGljdHVyZXNkZWZhdWx0WzBdIDogcHJvZHVjdC5waWN0dXJlc2RlZmF1bHQpO1xyXG5cclxuXHJcbiAgICB0aGlzLl9tZXRhLnVwZGF0ZVRhZyh7IHByb3BlcnR5OiAnb2c6dGl0bGUnLCBjb250ZW50OiBwcm9kdWN0Lm5hbWUgfHwgJycgfSk7XHJcbiAgICB0aGlzLl9tZXRhLnVwZGF0ZVRhZyh7IHByb3BlcnR5OiAnb2c6ZGVzY3JpcHRpb24nLCBjb250ZW50OiBkZXNjcmlwY2lvbkxpbXBpYSB8fCAnJyB9KTtcclxuICAgIHRoaXMuX21ldGEudXBkYXRlVGFnKHsgcHJvcGVydHk6ICdvZzppbWFnZScsIGNvbnRlbnQ6IGltYWdlVXJsIHx8ICcnIH0pO1xyXG4gICAgLy8gdGhpcy5fbWV0YS51cGRhdGVUYWcoeyBwcm9wZXJ0eTogJ29nOnVybCcsIGNvbnRlbnQ6IGN1cnJlbnRVcmwgfSk7XHJcbiAgICB0aGlzLl9tZXRhLnVwZGF0ZVRhZyh7IHByb3BlcnR5OiAnb2c6dHlwZScsIGNvbnRlbnQ6ICdwcm9kdWN0JyB9KTtcclxuICB9XHJcbiAgZGVjb2RlSHRtbChodG1sOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgdHh0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGV4dGFyZWEnKTtcclxuICAgIHR4dC5pbm5lckhUTUwgPSBodG1sO1xyXG4gICAgcmV0dXJuIHR4dC52YWx1ZTtcclxuXHJcbiAgfVxyXG4gIHNhbml0aXplZEh0bWwoaHRtbDogc3RyaW5nKTogU2FmZUh0bWwge1xyXG4gICAgY29uc3QgZGVjb2RlZEh0bWwgPSB0aGlzLmRlY29kZUh0bWwoaHRtbCk7XHJcbiAgICByZXR1cm4gdGhpcy5fZG9tU2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKGRlY29kZWRIdG1sKTtcclxuICB9XHJcblxyXG4gIGFkZFRvQ2FydCgpIHtcclxuICAgIGlmICh0aGlzLmlzQWRkaW5nVG9DYXJ0KCkgfHwgdGhpcy5xdWFudGl0eSgpIDw9IDApIHJldHVybjtcclxuXHJcbiAgICB0aGlzLmlzQWRkaW5nVG9DYXJ0LnNldCh0cnVlKTtcclxuICAgIHRoaXMuX3Byb2R1Y3REZXRhaWxTZXJ2aWNlLmFkZFRvQ2FydCh0aGlzLnF1YW50aXR5KCkpO1xyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmlzQWRkaW5nVG9DYXJ0LnNldChmYWxzZSk7XHJcbiAgICB9LCAyMDAwKTtcclxuICB9XHJcblxyXG4gIHBsdXMoc3RvY2s/OiBudW1iZXIsIG11bHRpcGxlUXVhbnRpdHk/OiBudW1iZXIpIHtcclxuICBjb25zdCBjdXJyZW50ID0gTnVtYmVyKHRoaXMucXVhbnRpdHkoKSk7IC8vIDwtLSBmdWVyemEgYSBuw7ptZXJvXHJcbiAgaWYgKG11bHRpcGxlUXVhbnRpdHkgJiYgbXVsdGlwbGVRdWFudGl0eSA+IDApIHtcclxuICAgIHN0b2NrXHJcbiAgICAgID8gKGN1cnJlbnQgPCBzdG9ja1xyXG4gICAgICAgICAgPyB0aGlzLnF1YW50aXR5LnNldChjdXJyZW50ICsgbXVsdGlwbGVRdWFudGl0eSlcclxuICAgICAgICAgIDogdGhpcy5fdG9hc3RTZXJ2aWNlLnNob3coJ291dC1vZi1zdG9jay1hY3R1YWxseScpKVxyXG4gICAgICA6IHRoaXMucXVhbnRpdHkuc2V0KGN1cnJlbnQgKyBtdWx0aXBsZVF1YW50aXR5KTtcclxuICB9IGVsc2Uge1xyXG4gICAgc3RvY2tcclxuICAgICAgPyAoY3VycmVudCA8IHN0b2NrXHJcbiAgICAgICAgICA/IHRoaXMucXVhbnRpdHkuc2V0KGN1cnJlbnQgKyAxKVxyXG4gICAgICAgICAgOiB0aGlzLl90b2FzdFNlcnZpY2Uuc2hvdygnb3V0LW9mLXN0b2NrLWFjdHVhbGx5JykpXHJcbiAgICAgIDogdGhpcy5xdWFudGl0eS5zZXQoY3VycmVudCArIDEpO1xyXG4gIH1cclxufVxyXG5cclxubGVzcyhtdWx0aXBsZVF1YW50aXR5PzogbnVtYmVyKSB7XHJcbiAgY29uc3QgY3VycmVudCA9IE51bWJlcih0aGlzLnF1YW50aXR5KCkpOyAvLyA8LS0gZnVlcnphIGEgbsO6bWVyb1xyXG4gIGlmIChtdWx0aXBsZVF1YW50aXR5ICYmIG11bHRpcGxlUXVhbnRpdHkgPiAwKSB7XHJcbiAgICBjdXJyZW50ID4gbXVsdGlwbGVRdWFudGl0eVxyXG4gICAgICA/IHRoaXMucXVhbnRpdHkuc2V0KGN1cnJlbnQgLSBtdWx0aXBsZVF1YW50aXR5KVxyXG4gICAgICA6IG51bGw7XHJcbiAgfSBlbHNlIHtcclxuICAgIGN1cnJlbnQgPiAxID8gdGhpcy5xdWFudGl0eS5zZXQoY3VycmVudCAtIDEpIDogbnVsbDtcclxuICB9XHJcbn1cclxuXHJcbiAgY2hlY2tTdG9jayhzdG9jazogbnVtYmVyKSB7XHJcbiAgICBpZiAodGhpcy5xdWFudGl0eSgpID49IHN0b2NrKVxyXG4gICAgICB0aGlzLnF1YW50aXR5LnNldChzdG9jayk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ29Ub1NlY3Rpb24oc2VjdGlvbjogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnNob3dGb3JtQ29udGFjdCA9IHRydWU7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHNlY3Rpb24pO1xyXG4gICAgICBpZiAoZWxlbWVudCkge1xyXG4gICAgICAgIGVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlvcjogJ3Ntb290aCcgfSk7XHJcbiAgICAgIH1cclxuICAgIH0sIDUwMCk7XHJcbiAgfVxyXG5cclxuICByZXNldEZvcm0gPSAoKSA9PiB7XHJcbiAgICB0aGlzLnJlc2V0ID0gIXRoaXMucmVzZXRcclxuICAgIHRoaXMuc3VjY2VzcyA9IHRydWVcclxuICB9XHJcblxyXG4gIC8vIENvbXB1dGVkIHNpZ25hbHMgbcOhcyBlZmljaWVudGVzXHJcbiAgcHVibGljIGhhc0Rpc2NvdW50ID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgY29uc3QgcHJvZHVjdCA9IHRoaXMucHJvZHVjdFNpZ25hbCgpO1xyXG4gICAgaWYgKCFwcm9kdWN0Py5zYWxlcHJpY2UgfHwgIXByb2R1Y3Q/LnByaWNlKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBvcmlnaW5hbFByaWNlID0gcGFyc2VGbG9hdChwcm9kdWN0LnByaWNlLnRvU3RyaW5nKCkpO1xyXG4gICAgY29uc3Qgc2FsZVByaWNlID0gcGFyc2VGbG9hdChwcm9kdWN0LnNhbGVwcmljZS50b1N0cmluZygpKTtcclxuXHJcbiAgICByZXR1cm4gc2FsZVByaWNlID4gMCAmJiBvcmlnaW5hbFByaWNlID4gc2FsZVByaWNlO1xyXG4gIH0pO1xyXG5cclxuICBwdWJsaWMgZGlzY291bnRQZXJjZW50YWdlID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgaWYgKCF0aGlzLmhhc0Rpc2NvdW50KCkpIHJldHVybiBudWxsO1xyXG5cclxuICAgIGNvbnN0IHByb2R1Y3QgPSB0aGlzLnByb2R1Y3RTaWduYWwoKTtcclxuICAgIGlmICghcHJvZHVjdCkgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgY29uc3Qgb3JpZ2luYWxQcmljZSA9IHBhcnNlRmxvYXQocHJvZHVjdC5wcmljZT8udG9TdHJpbmcoKSB8fCAnMCcpO1xyXG4gICAgY29uc3Qgc2FsZVByaWNlID0gcGFyc2VGbG9hdChwcm9kdWN0LnNhbGVwcmljZT8udG9TdHJpbmcoKSB8fCAnMCcpO1xyXG5cclxuICAgIGlmIChvcmlnaW5hbFByaWNlIDw9IDAgfHwgc2FsZVByaWNlIDw9IDAgfHwgc2FsZVByaWNlID49IG9yaWdpbmFsUHJpY2UpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZGlzY291bnQgPSAoKG9yaWdpbmFsUHJpY2UgLSBzYWxlUHJpY2UpIC8gb3JpZ2luYWxQcmljZSkgKiAxMDA7XHJcbiAgICByZXR1cm4gTWF0aC5yb3VuZChkaXNjb3VudCk7XHJcbiAgfSk7XHJcblxyXG4gIC8qKlxyXG4gICAgKiBNw6l0b2RvIHBhcmEgdHJhY2tlYXIgY2FtYmlvcyBlbiBlbCBwcm9kdWN0SWQgeSBmb3J6YXIgbGEgcmVjcmVhY2nDs24gZGVsIGNvbXBvbmVudGUgcmVsYWNpb25hZG9zXHJcbiAgICAqL1xyXG4gIHRyYWNrQnlQcm9kdWN0SWQoaW5kZXg6IG51bWJlciwgcHJvZHVjdElkOiBhbnkpOiBhbnkge1xyXG4gICAgcmV0dXJuIHByb2R1Y3RJZDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlc2V0ZWEgZWwgZXN0YWRvIGRlbCBtb2RhbCBkZSByZXNlw7Fhc1xyXG4gICAqL1xyXG4gIHByaXZhdGUgcmVzZXRSZXZpZXdNb2RhbCgpOiB2b2lkIHtcclxuICAgIC8vIFNpIGV4aXN0ZSB1biBtw6l0b2RvIHJlc2V0Rm9ybSBkZWwgY29tcG9uZW50ZSBwYWRyZSwgbGxhbWFybG9cclxuICAgIGlmICh0eXBlb2YgKHRoaXMgYXMgYW55KS5yZXNldEZvcm0gPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgKHRoaXMgYXMgYW55KS5yZXNldEZvcm0oKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBTaSBleGlzdGUgdW5hIHByb3BpZWRhZCBzdWNjZXNzLCByZXNldGVhcmxhXHJcbiAgICBpZiAoJ3N1Y2Nlc3MnIGluIHRoaXMpIHtcclxuICAgICAgKHRoaXMgYXMgYW55KS5zdWNjZXNzID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxufVxyXG4iLCIiXX0=
@@ -178,11 +178,11 @@ export class ProductEcComponent {
178
178
  }
179
179
  }
180
180
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProductEcComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
181
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ProductEcComponent, isStandalone: true, selector: "app-product-ec", inputs: { product: "product", isProductBox: "isProductBox", isCollection: "isCollection" }, outputs: { loaded: "loaded" }, ngImport: i0, template: "<a [routerLink]=\"['/product', product.id]\" class=\"text-decoration-none producto\">\n <!-- Marca especial y descuento -->\n <!-- <div *ngIf=\"product.saleprice || (product.special_mark && product.special_mark !== null && product.special_mark !== undefined && product.special_mark.length >0)\"\n class=\"marcas\">\n <div *ecProductStock=\"product\" [ecProductMini]=\"product.special_mark\"></div>\n <ng-container *ngIf=\"shouldShowPrice\">\n <div *ecProductStock=\"product\" [ngClass]=\"{'tag-dsc float-right': product.saleprice}\"\n [ecProductOff]=\"product\">\n </div>\n </ng-container>\n </div> -->\n\n <!-- Imagen del producto -->\n <div class=\"foto\">\n @if(product.picturesdefault){\n @if (product.picturesdefault && product.picturesdefault.length > 1 ) {\n <img [src]=\"mediaUrl + product.picturesdefault[0]\" alt=\"Imagen principal\" class=\"w-100 pic01\" />\n <img [src]=\"mediaUrl + product.picturesdefault[1]\" alt=\"Imagen secundaria\" class=\"w-100 pic02\" />\n } @else {\n <img [src]=\"mediaUrl + product.picturesdefault[0]\" alt=\"Imagen principal\" class=\"w-100 pic01\" />\n }\n }\n </div>\n <!-- Precio -->\n\n\n <!-- Nombre del producto -->\n <h6 class=\"title\">{{ product.name | titlecase }}</h6>\n\n <div class=\"sku\" [innerHTML]=\"product.shortdetails\"></div>\n\n @if (shouldShowPrice) {\n <app-price-ec [price]=\"product.price\" [saleprice]=\"product.saleprice\" class=\"\" />\n }\n @if(!hidePrices){\n @if(!showPricesOnlyToLoggedUsers || isAuthenticated$){\n\n <div class=\"fixBottom\">\n\n <!-- Bot\u00F3n de acciones -->\n <!-- <ng-container *ecProductStock=\"product; else noStock\"> -->\n <!-- Cuando no tiene marca especial o es de tipo 'standard' -->\n @if (!product.special_mark || product.special_mark.length === 0 || product.special_mark[0]?.type ===\n 'standard') {\n <button class=\"btn standard\" [ngClass]=\"isCollection ? 'px-2 w-100 d-sm-block' : 'py-2 px-4'\">\n <ng-container *ngIf=\"isCollection; else normalText\">\n <span> {{(\"buy\" | translate) | uppercase}} </span>\n </ng-container>\n <ng-template #normalText>\n {{(\"buy\" | translate) | uppercase}}\n </ng-template>\n </button>\n }@else {\n <!-- Caso 1: Agotado o Disponible muy pronto -->\n @if (product.special_mark[0]?.type === 'out_of_stock' || product.special_mark[0]?.type === 'coming_soon') {\n <button class=\"btn\" [ngClass]=\"isCollection ? 'px-2 w-100 d-sm-block' : 'py-2 px-4'\">\n @if(isCollection){\n <span>{{ product.special_mark[0].name | uppercase }} </span>\n }@else {\n {{ product.special_mark[0]?.name | uppercase }}\n }\n </button>}\n <!-- Caso 2: Contacto por WhatsApp -->\n @if (product.special_mark[0].type === 'whatsapp_contact') {\n <button class=\"btn\" [ngClass]=\"isCollection ? 'px-2 w-100 d-sm-block' : 'py-2 px-4'\"\n (click)=\"openWhatsApp(product.special_mark[0]?.whatsappContact)\">\n @if(isCollection){\n <span>{{ product.special_mark[0]?.name | uppercase }}</span>\n }@else {\n {{ product.special_mark[0]?.name | uppercase }}\n }\n\n </button>\n }\n <!-- Caso 3: Solicitar m\u00E1s informaci\u00F3n -->\n @if (product.special_mark[0]?.type === 'more_info') {\n <button class=\"btn\" [ngClass]=\"isCollection ? 'px-2 w-100 d-sm-block' : 'py-2 px-4'\">\n @if(isCollection){\n <span>{{ product.special_mark[0]?.name | uppercase }}</span>\n }@else {\n {{ product.special_mark[0]?.name | uppercase }}\n }\n </button>\n }\n }\n </div>\n }}\n</a>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.UpperCasePipe, name: "uppercase" }, { kind: "pipe", type: i1.TitleCasePipe, name: "titlecase" }, { kind: "component", type: PriceEcComponent, selector: "app-price-ec", inputs: ["price", "saleprice", "basePrice", "taxeAmount", "taxes", "priceSize", "showTaxLegendOnly", "disableTaxInfo", "customPriceTemplate", "customSalePriceTemplate", "customSimplePriceTemplate", "customSimpleSalePriceTemplate", "customTaxTemplate", "customOnlyTaxLabelTemplate"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: FormsModule }] });
181
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ProductEcComponent, isStandalone: true, selector: "app-product-ec", inputs: { product: "product", isProductBox: "isProductBox", isCollection: "isCollection" }, outputs: { loaded: "loaded" }, ngImport: i0, template: "<a [routerLink]=\"['/product', product.id]\" class=\"text-decoration-none producto\">\r\n <!-- Marca especial y descuento -->\r\n <!-- <div *ngIf=\"product.saleprice || (product.special_mark && product.special_mark !== null && product.special_mark !== undefined && product.special_mark.length >0)\"\r\n class=\"marcas\">\r\n <div *ecProductStock=\"product\" [ecProductMini]=\"product.special_mark\"></div>\r\n <ng-container *ngIf=\"shouldShowPrice\">\r\n <div *ecProductStock=\"product\" [ngClass]=\"{'tag-dsc float-right': product.saleprice}\"\r\n [ecProductOff]=\"product\">\r\n </div>\r\n </ng-container>\r\n </div> -->\r\n\r\n <!-- Imagen del producto -->\r\n <div class=\"foto\">\r\n @if(product.picturesdefault){\r\n @if (product.picturesdefault && product.picturesdefault.length > 1 ) {\r\n <img [src]=\"mediaUrl + product.picturesdefault[0]\" alt=\"Imagen principal\" class=\"w-100 pic01\" />\r\n <img [src]=\"mediaUrl + product.picturesdefault[1]\" alt=\"Imagen secundaria\" class=\"w-100 pic02\" />\r\n } @else {\r\n <img [src]=\"mediaUrl + product.picturesdefault[0]\" alt=\"Imagen principal\" class=\"w-100 pic01\" />\r\n }\r\n }\r\n </div>\r\n <!-- Precio -->\r\n\r\n\r\n <!-- Nombre del producto -->\r\n <h6 class=\"title\">{{ product.name | titlecase }}</h6>\r\n\r\n <div class=\"sku\" [innerHTML]=\"product.shortdetails\"></div>\r\n\r\n @if (shouldShowPrice) {\r\n <app-price-ec [price]=\"product.price\" [saleprice]=\"product.saleprice\" class=\"\" />\r\n }\r\n @if(!hidePrices){\r\n @if(!showPricesOnlyToLoggedUsers || isAuthenticated$){\r\n\r\n <div class=\"fixBottom\">\r\n\r\n <!-- Bot\u00F3n de acciones -->\r\n <!-- <ng-container *ecProductStock=\"product; else noStock\"> -->\r\n <!-- Cuando no tiene marca especial o es de tipo 'standard' -->\r\n @if (!product.special_mark || product.special_mark.length === 0 || product.special_mark[0]?.type ===\r\n 'standard') {\r\n <button class=\"btn standard\" [ngClass]=\"isCollection ? 'px-2 w-100 d-sm-block' : 'py-2 px-4'\">\r\n <ng-container *ngIf=\"isCollection; else normalText\">\r\n <span> {{(\"buy\" | translate) | uppercase}} </span>\r\n </ng-container>\r\n <ng-template #normalText>\r\n {{(\"buy\" | translate) | uppercase}}\r\n </ng-template>\r\n </button>\r\n }@else {\r\n <!-- Caso 1: Agotado o Disponible muy pronto -->\r\n @if (product.special_mark[0]?.type === 'out_of_stock' || product.special_mark[0]?.type === 'coming_soon') {\r\n <button class=\"btn\" [ngClass]=\"isCollection ? 'px-2 w-100 d-sm-block' : 'py-2 px-4'\">\r\n @if(isCollection){\r\n <span>{{ product.special_mark[0].name | uppercase }} </span>\r\n }@else {\r\n {{ product.special_mark[0]?.name | uppercase }}\r\n }\r\n </button>}\r\n <!-- Caso 2: Contacto por WhatsApp -->\r\n @if (product.special_mark[0].type === 'whatsapp_contact') {\r\n <button class=\"btn\" [ngClass]=\"isCollection ? 'px-2 w-100 d-sm-block' : 'py-2 px-4'\"\r\n (click)=\"openWhatsApp(product.special_mark[0]?.whatsappContact)\">\r\n @if(isCollection){\r\n <span>{{ product.special_mark[0]?.name | uppercase }}</span>\r\n }@else {\r\n {{ product.special_mark[0]?.name | uppercase }}\r\n }\r\n\r\n </button>\r\n }\r\n <!-- Caso 3: Solicitar m\u00E1s informaci\u00F3n -->\r\n @if (product.special_mark[0]?.type === 'more_info') {\r\n <button class=\"btn\" [ngClass]=\"isCollection ? 'px-2 w-100 d-sm-block' : 'py-2 px-4'\">\r\n @if(isCollection){\r\n <span>{{ product.special_mark[0]?.name | uppercase }}</span>\r\n }@else {\r\n {{ product.special_mark[0]?.name | uppercase }}\r\n }\r\n </button>\r\n }\r\n }\r\n </div>\r\n }}\r\n</a>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.UpperCasePipe, name: "uppercase" }, { kind: "pipe", type: i1.TitleCasePipe, name: "titlecase" }, { kind: "component", type: PriceEcComponent, selector: "app-price-ec", inputs: ["price", "saleprice", "basePrice", "taxeAmount", "taxes", "priceSize", "showTaxLegendOnly", "disableTaxInfo", "customPriceTemplate", "customSalePriceTemplate", "customSimplePriceTemplate", "customSimpleSalePriceTemplate", "customTaxTemplate", "customOnlyTaxLabelTemplate"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: FormsModule }] });
182
182
  }
183
183
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProductEcComponent, decorators: [{
184
184
  type: Component,
185
- args: [{ selector: 'app-product-ec', standalone: true, imports: [CommonModule, PriceEcComponent, RouterLink, TranslateModule, FormsModule], template: "<a [routerLink]=\"['/product', product.id]\" class=\"text-decoration-none producto\">\n <!-- Marca especial y descuento -->\n <!-- <div *ngIf=\"product.saleprice || (product.special_mark && product.special_mark !== null && product.special_mark !== undefined && product.special_mark.length >0)\"\n class=\"marcas\">\n <div *ecProductStock=\"product\" [ecProductMini]=\"product.special_mark\"></div>\n <ng-container *ngIf=\"shouldShowPrice\">\n <div *ecProductStock=\"product\" [ngClass]=\"{'tag-dsc float-right': product.saleprice}\"\n [ecProductOff]=\"product\">\n </div>\n </ng-container>\n </div> -->\n\n <!-- Imagen del producto -->\n <div class=\"foto\">\n @if(product.picturesdefault){\n @if (product.picturesdefault && product.picturesdefault.length > 1 ) {\n <img [src]=\"mediaUrl + product.picturesdefault[0]\" alt=\"Imagen principal\" class=\"w-100 pic01\" />\n <img [src]=\"mediaUrl + product.picturesdefault[1]\" alt=\"Imagen secundaria\" class=\"w-100 pic02\" />\n } @else {\n <img [src]=\"mediaUrl + product.picturesdefault[0]\" alt=\"Imagen principal\" class=\"w-100 pic01\" />\n }\n }\n </div>\n <!-- Precio -->\n\n\n <!-- Nombre del producto -->\n <h6 class=\"title\">{{ product.name | titlecase }}</h6>\n\n <div class=\"sku\" [innerHTML]=\"product.shortdetails\"></div>\n\n @if (shouldShowPrice) {\n <app-price-ec [price]=\"product.price\" [saleprice]=\"product.saleprice\" class=\"\" />\n }\n @if(!hidePrices){\n @if(!showPricesOnlyToLoggedUsers || isAuthenticated$){\n\n <div class=\"fixBottom\">\n\n <!-- Bot\u00F3n de acciones -->\n <!-- <ng-container *ecProductStock=\"product; else noStock\"> -->\n <!-- Cuando no tiene marca especial o es de tipo 'standard' -->\n @if (!product.special_mark || product.special_mark.length === 0 || product.special_mark[0]?.type ===\n 'standard') {\n <button class=\"btn standard\" [ngClass]=\"isCollection ? 'px-2 w-100 d-sm-block' : 'py-2 px-4'\">\n <ng-container *ngIf=\"isCollection; else normalText\">\n <span> {{(\"buy\" | translate) | uppercase}} </span>\n </ng-container>\n <ng-template #normalText>\n {{(\"buy\" | translate) | uppercase}}\n </ng-template>\n </button>\n }@else {\n <!-- Caso 1: Agotado o Disponible muy pronto -->\n @if (product.special_mark[0]?.type === 'out_of_stock' || product.special_mark[0]?.type === 'coming_soon') {\n <button class=\"btn\" [ngClass]=\"isCollection ? 'px-2 w-100 d-sm-block' : 'py-2 px-4'\">\n @if(isCollection){\n <span>{{ product.special_mark[0].name | uppercase }} </span>\n }@else {\n {{ product.special_mark[0]?.name | uppercase }}\n }\n </button>}\n <!-- Caso 2: Contacto por WhatsApp -->\n @if (product.special_mark[0].type === 'whatsapp_contact') {\n <button class=\"btn\" [ngClass]=\"isCollection ? 'px-2 w-100 d-sm-block' : 'py-2 px-4'\"\n (click)=\"openWhatsApp(product.special_mark[0]?.whatsappContact)\">\n @if(isCollection){\n <span>{{ product.special_mark[0]?.name | uppercase }}</span>\n }@else {\n {{ product.special_mark[0]?.name | uppercase }}\n }\n\n </button>\n }\n <!-- Caso 3: Solicitar m\u00E1s informaci\u00F3n -->\n @if (product.special_mark[0]?.type === 'more_info') {\n <button class=\"btn\" [ngClass]=\"isCollection ? 'px-2 w-100 d-sm-block' : 'py-2 px-4'\">\n @if(isCollection){\n <span>{{ product.special_mark[0]?.name | uppercase }}</span>\n }@else {\n {{ product.special_mark[0]?.name | uppercase }}\n }\n </button>\n }\n }\n </div>\n }}\n</a>" }]
185
+ args: [{ selector: 'app-product-ec', standalone: true, imports: [CommonModule, PriceEcComponent, RouterLink, TranslateModule, FormsModule], template: "<a [routerLink]=\"['/product', product.id]\" class=\"text-decoration-none producto\">\r\n <!-- Marca especial y descuento -->\r\n <!-- <div *ngIf=\"product.saleprice || (product.special_mark && product.special_mark !== null && product.special_mark !== undefined && product.special_mark.length >0)\"\r\n class=\"marcas\">\r\n <div *ecProductStock=\"product\" [ecProductMini]=\"product.special_mark\"></div>\r\n <ng-container *ngIf=\"shouldShowPrice\">\r\n <div *ecProductStock=\"product\" [ngClass]=\"{'tag-dsc float-right': product.saleprice}\"\r\n [ecProductOff]=\"product\">\r\n </div>\r\n </ng-container>\r\n </div> -->\r\n\r\n <!-- Imagen del producto -->\r\n <div class=\"foto\">\r\n @if(product.picturesdefault){\r\n @if (product.picturesdefault && product.picturesdefault.length > 1 ) {\r\n <img [src]=\"mediaUrl + product.picturesdefault[0]\" alt=\"Imagen principal\" class=\"w-100 pic01\" />\r\n <img [src]=\"mediaUrl + product.picturesdefault[1]\" alt=\"Imagen secundaria\" class=\"w-100 pic02\" />\r\n } @else {\r\n <img [src]=\"mediaUrl + product.picturesdefault[0]\" alt=\"Imagen principal\" class=\"w-100 pic01\" />\r\n }\r\n }\r\n </div>\r\n <!-- Precio -->\r\n\r\n\r\n <!-- Nombre del producto -->\r\n <h6 class=\"title\">{{ product.name | titlecase }}</h6>\r\n\r\n <div class=\"sku\" [innerHTML]=\"product.shortdetails\"></div>\r\n\r\n @if (shouldShowPrice) {\r\n <app-price-ec [price]=\"product.price\" [saleprice]=\"product.saleprice\" class=\"\" />\r\n }\r\n @if(!hidePrices){\r\n @if(!showPricesOnlyToLoggedUsers || isAuthenticated$){\r\n\r\n <div class=\"fixBottom\">\r\n\r\n <!-- Bot\u00F3n de acciones -->\r\n <!-- <ng-container *ecProductStock=\"product; else noStock\"> -->\r\n <!-- Cuando no tiene marca especial o es de tipo 'standard' -->\r\n @if (!product.special_mark || product.special_mark.length === 0 || product.special_mark[0]?.type ===\r\n 'standard') {\r\n <button class=\"btn standard\" [ngClass]=\"isCollection ? 'px-2 w-100 d-sm-block' : 'py-2 px-4'\">\r\n <ng-container *ngIf=\"isCollection; else normalText\">\r\n <span> {{(\"buy\" | translate) | uppercase}} </span>\r\n </ng-container>\r\n <ng-template #normalText>\r\n {{(\"buy\" | translate) | uppercase}}\r\n </ng-template>\r\n </button>\r\n }@else {\r\n <!-- Caso 1: Agotado o Disponible muy pronto -->\r\n @if (product.special_mark[0]?.type === 'out_of_stock' || product.special_mark[0]?.type === 'coming_soon') {\r\n <button class=\"btn\" [ngClass]=\"isCollection ? 'px-2 w-100 d-sm-block' : 'py-2 px-4'\">\r\n @if(isCollection){\r\n <span>{{ product.special_mark[0].name | uppercase }} </span>\r\n }@else {\r\n {{ product.special_mark[0]?.name | uppercase }}\r\n }\r\n </button>}\r\n <!-- Caso 2: Contacto por WhatsApp -->\r\n @if (product.special_mark[0].type === 'whatsapp_contact') {\r\n <button class=\"btn\" [ngClass]=\"isCollection ? 'px-2 w-100 d-sm-block' : 'py-2 px-4'\"\r\n (click)=\"openWhatsApp(product.special_mark[0]?.whatsappContact)\">\r\n @if(isCollection){\r\n <span>{{ product.special_mark[0]?.name | uppercase }}</span>\r\n }@else {\r\n {{ product.special_mark[0]?.name | uppercase }}\r\n }\r\n\r\n </button>\r\n }\r\n <!-- Caso 3: Solicitar m\u00E1s informaci\u00F3n -->\r\n @if (product.special_mark[0]?.type === 'more_info') {\r\n <button class=\"btn\" [ngClass]=\"isCollection ? 'px-2 w-100 d-sm-block' : 'py-2 px-4'\">\r\n @if(isCollection){\r\n <span>{{ product.special_mark[0]?.name | uppercase }}</span>\r\n }@else {\r\n {{ product.special_mark[0]?.name | uppercase }}\r\n }\r\n </button>\r\n }\r\n }\r\n </div>\r\n }}\r\n</a>" }]
186
186
  }], ctorParameters: () => [], propDecorators: { product: [{
187
187
  type: Input,
188
188
  args: [{
@@ -195,4 +195,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
195
195
  }], isCollection: [{
196
196
  type: Input
197
197
  }] } });
198
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1lYy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lYXN5Y29tbWVyY2UtdjE4L3NyYy9saWIvZWMtY29tcG9uZW50cy9wcm9kdWN0LWVjL3Byb2R1Y3QtZWMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLWNvbXBvbmVudHMvcHJvZHVjdC1lYy9wcm9kdWN0LWVjLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLFFBQVEsRUFBa0IsTUFBTSxHQUFHLE1BQU0sZUFBZSxDQUFDO0FBRTFILE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM3RyxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBQzdDOzs7R0FHRztBQVFILE1BQU0sT0FBTyxrQkFBa0I7SUFDdkIsUUFBUSxHQUFhLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNyQyxhQUFhLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQy9CLFlBQVks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LFNBQVM7K0JBQ0MsZ0JBQWdCLGNBQ2QsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxlQUFlLEVBQUUsV0FBVyxDQUFDO3dEQW1DbkYsT0FBTztzQkFITixLQUFLO3VCQUFDO3dCQUNOLFFBQVEsRUFBRSxJQUFJO3FCQUNkO2dCQUtRLFlBQVk7c0JBQXBCLEtBQUs7Z0JBSUksTUFBTTtzQkFBZixNQUFNO2dCQUVFLFlBQVk7c0JBQXBCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgaW5qZWN0LCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIEluamVjdG9yLCBXcml0YWJsZVNpZ25hbCwgc2lnbmFsLCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUHJvZHVjdCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgQ29yZUNvbnN0YW50c1NlcnZpY2UgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgQW5hbHl0aWNzU2VydmljZSwgQ2hhbm5lbFNlcnZpY2UsIEF1dGhTZXJ2aWNlLCBDYXJ0U2VydmljZSwgVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZWMtc2VydmljZXMnO1xuaW1wb3J0IHsgUm91dGVyLCBSb3V0ZXJMaW5rIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBQcmljZUVjQ29tcG9uZW50IH0gZnJvbSBcIi4uL3dpZGdldHMtZWMvcHJpY2UtZWMvcHJpY2UtZWMuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuLyoqXG4gKiBDb21wb25lbnRlIHF1ZSBzZSBlbmNhcmdhIGRlIG1hbmVqYXIgdW4gcHJvZHVjdG8uXG4gKiBAY2xhc3MgUHJvZHVjdEVjQ29tcG9uZW50XG4gKi9cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ2FwcC1wcm9kdWN0LWVjJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0aW1wb3J0czogW0NvbW1vbk1vZHVsZSwgUHJpY2VFY0NvbXBvbmVudCwgUm91dGVyTGluaywgVHJhbnNsYXRlTW9kdWxlLCBGb3Jtc01vZHVsZV0sXG5cdHRlbXBsYXRlVXJsOiAnLi9wcm9kdWN0LWVjLmNvbXBvbmVudC5odG1sJyxcblx0c3R5bGVVcmw6ICcuL3Byb2R1Y3QtZWMuY29tcG9uZW50LnNjc3MnXG59KVxuZXhwb3J0IGNsYXNzIFByb2R1Y3RFY0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cdHB1YmxpYyBpbmplY3RvcjogSW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuXHRwcml2YXRlIHJvdXRlclNlcnZpY2UgPSBpbmplY3QoUm91dGVyKTtcblx0cHJpdmF0ZSBfY2FydFNlcnZpY2U6IENhcnRTZXJ2aWNlID0gaW5qZWN0KENhcnRTZXJ2aWNlKTtcblx0cHJpdmF0ZSBfdG9hc3RTZXJ2aWNlOiBUb2FzdFNlcnZpY2UgPSBpbmplY3QoVG9hc3RTZXJ2aWNlKTtcblxuXHRwdWJsaWMgaXNBZGRpbmdUb0NhcnQ6IFdyaXRhYmxlU2lnbmFsPGJvb2xlYW4+ID0gc2lnbmFsKGZhbHNlKTtcblx0cHVibGljIHF1YW50aXR5OiBXcml0YWJsZVNpZ25hbDxudW1iZXI+ID0gc2lnbmFsKDEpO1xuXG5cdC8qKlxuXHQgKiBOYXZlZ2EgYWwgZGV0YWxsZSBkZWwgcHJvZHVjdG8geSBzdWJlIGFsIGluaWNpbyBkZSBsYSBww6FnaW5hXG5cdCAqIEBwYXJhbSBwcm9kdWN0SWQgSUQgZGVsIHByb2R1Y3RvXG5cdCAqL1xuXHRuYXZpZ2F0ZVRvUHJvZHVjdChwcm9kdWN0SWQ6IHN0cmluZyk6IHZvaWQge1xuXHRcdHRoaXMucm91dGVyU2VydmljZS5uYXZpZ2F0ZShbJy9wcm9kdWN0JywgcHJvZHVjdElkXSkudGhlbigoKSA9PiB7XG5cdFx0XHQvLyBTY3JvbGwgc3VhdmUgYWwgaW5pY2lvIGRlIGxhIHDDoWdpbmFcblx0XHRcdHdpbmRvdy5zY3JvbGxUbyh7XG5cdFx0XHRcdHRvcDogMCxcblx0XHRcdFx0bGVmdDogMCxcblx0XHRcdFx0YmVoYXZpb3I6ICdzbW9vdGgnXG5cdFx0XHR9KTtcblx0XHR9KTtcblx0fVxuXG5cblx0LyoqXG5cdCAqIERhdG9zIGRlbCBwcm9kdWN0by5cblx0ICovXG5cdEBJbnB1dCh7XG5cdFx0cmVxdWlyZWQ6IHRydWVcblx0fSlcblx0cHJvZHVjdCE6IFByb2R1Y3Q7XG5cdC8qKlxuXHQgKiBTZSB1c2EgcGFyYSBzYWJlciBzaSBlbCBwcm9kdWN0byBlcyBkZSB0aXBvIEJveCBvIG5vIHkgZGVmaW5pciBsYSB2aXN0YSBhZGVjdWFkYS5cblx0ICovXG5cdEBJbnB1dCgpIGlzUHJvZHVjdEJveDogYm9vbGVhbiA9IHRydWU7XG5cdC8qKlxuXHQgKiBDb25zdGFudGVzIGRlbCBjb3JlXG5cdCAqL1xuXHRAT3V0cHV0KCkgbG9hZGVkID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cblx0QElucHV0KCkgaXNDb2xsZWN0aW9uOiBib29sZWFuID0gZmFsc2U7XG5cblx0bmdPbkluaXQoKSB7XG5cdFx0dGhpcy5sb2FkZWQuZW1pdCh0aGlzLnByb2R1Y3QuaWQpO1xuXG5cdH1cblx0cHVibGljIHNob3dQcmljZXNPbmx5VG9Mb2dnZWRVc2VyczogYm9vbGVhbiA9IGZhbHNlO1xuXHRwdWJsaWMgaGlkZVByaWNlczogYm9vbGVhbiA9IGZhbHNlO1xuXG5cdHByaXZhdGUgX2F1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSA9IGluamVjdChBdXRoU2VydmljZSlcblx0cHVibGljIGlzQXV0aGVudGljYXRlZCQgPSB0aGlzLl9hdXRoU2VydmljZS5pc0F1dGhlbnRpY2F0ZWQoKTtcblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0dGhpcy5pbmplY3Rvci5nZXQoQ2hhbm5lbFNlcnZpY2UpLmNoYW5uZWwkLnN1YnNjcmliZShjaGFubmVsID0+IHtcblx0XHRcdHRoaXMuc2hvd1ByaWNlc09ubHlUb0xvZ2dlZFVzZXJzID0gISFjaGFubmVsLnNob3dQcmljZXNPbmx5VG9Mb2dnZWRVc2Vycztcblx0XHRcdHRoaXMuaGlkZVByaWNlcyA9ICEhY2hhbm5lbC5oaWRlUHJpY2VzO1xuXHRcdH0pO1xuXHR9XG5cdHByaXZhdGUgY29uc3RzOiBDb3JlQ29uc3RhbnRzU2VydmljZSA9IGluamVjdChDb3JlQ29uc3RhbnRzU2VydmljZSlcblx0cHJpdmF0ZSBhbmFseXRpY3NTZXJ2aWNlOiBBbmFseXRpY3NTZXJ2aWNlID0gaW5qZWN0KEFuYWx5dGljc1NlcnZpY2UpXG5cdHByaXZhdGUgcm91dGVyOiBSb3V0ZXIgPSBpbmplY3QoUm91dGVyKVxuXHQvKipcblx0ICogVVJMIHBhcmEgbGFzIGltYWdlbmVzIGRlbCBwcm9kdWN0by5cblx0ICovXG5cdHB1YmxpYyBtZWRpYVVybDogc3RyaW5nID0gdGhpcy5jb25zdHMubWVkaWFVcmwoKVxuXHRvcGVuV2hhdHNBcHAodXJsOiBzdHJpbmcpOiB2b2lkIHtcblx0XHRpZiAodXJsKSB7XG5cdFx0XHR3aW5kb3cub3Blbih1cmwsICdfYmxhbmsnKTtcblx0XHR9XG5cdH1cblxuXHRnZXQgc2hvdWxkU2hvd1ByaWNlKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiAhdGhpcy5wcm9kdWN0Py5zcGVjaWFsX21hcmsgfHwgdGhpcy5wcm9kdWN0LnNwZWNpYWxfbWFyay5sZW5ndGggPT09IDAgfHwgdGhpcy5wcm9kdWN0LnNwZWNpYWxfbWFya1swXT8uc2hvd1ByaWNlO1xuXHR9XG5cblx0Z2V0IGhhc0Rpc2NvdW50KCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLnByb2R1Y3Quc2FsZXByaWNlICYmIHRoaXMucHJvZHVjdC5zYWxlcHJpY2UgIT09IHRoaXMucHJvZHVjdC5wcmljZTtcblx0fVxuXG5cdGdldCBkaXNjb3VudFBlcmNlbnRhZ2UoKTogbnVtYmVyIHwgbnVsbCB7XG5cdFx0aWYgKCF0aGlzLmhhc0Rpc2NvdW50KSB7XG5cdFx0XHRyZXR1cm4gbnVsbDtcblx0XHR9XG5cblx0XHRjb25zdCBvcmlnaW5hbFByaWNlID0gcGFyc2VGbG9hdCh0aGlzLnByb2R1Y3QucHJpY2U/LnRvU3RyaW5nKCkgfHwgJzAnKTtcblx0XHRjb25zdCBzYWxlUHJpY2UgPSBwYXJzZUZsb2F0KHRoaXMucHJvZHVjdC5zYWxlcHJpY2U/LnRvU3RyaW5nKCkgfHwgJzAnKTtcblxuXHRcdC8vIFZhbGlkYXIgcXVlIGxvcyBwcmVjaW9zIHNlYW4gdsOhbGlkb3Ncblx0XHRpZiAob3JpZ2luYWxQcmljZSA8PSAwIHx8IHNhbGVQcmljZSA8PSAwIHx8IHNhbGVQcmljZSA+PSBvcmlnaW5hbFByaWNlKSB7XG5cdFx0XHRyZXR1cm4gbnVsbDtcblx0XHR9XG5cblx0XHQvLyBDYWxjdWxhciBlbCBwb3JjZW50YWplOiAoKHByZWNpb19vcmlnaW5hbCAtIHByZWNpb19vZmVydGEpIC8gcHJlY2lvX29yaWdpbmFsKSAqIDEwMFxuXHRcdGNvbnN0IGRpc2NvdW50ID0gKChvcmlnaW5hbFByaWNlIC0gc2FsZVByaWNlKSAvIG9yaWdpbmFsUHJpY2UpICogMTAwO1xuXG5cdFx0cmV0dXJuIE1hdGgucm91bmQoZGlzY291bnQpO1xuXHR9XG5cdHBsdXMoc3RvY2s/OiBudW1iZXIsIG11bHRpcGxlUXVhbnRpdHk/OiBudW1iZXIpIHtcblx0XHRjb25zb2xlLmxvZygnQXVtZW50YW5kbyBjYW50aWRhZCcpO1xuXHRcdGNvbnN0IGN1cnJlbnQgPSBOdW1iZXIodGhpcy5xdWFudGl0eSgpKTsgLy8gPC0tIGZ1ZXJ6YSBhIG7Dum1lcm9cblx0XHRpZiAobXVsdGlwbGVRdWFudGl0eSAmJiBtdWx0aXBsZVF1YW50aXR5ID4gMCkge1xuXHRcdFx0c3RvY2tcblx0XHRcdFx0PyAoY3VycmVudCA8IHN0b2NrXG5cdFx0XHRcdFx0PyB0aGlzLnF1YW50aXR5LnNldChjdXJyZW50ICsgbXVsdGlwbGVRdWFudGl0eSlcblx0XHRcdFx0XHQ6IHRoaXMuX3RvYXN0U2VydmljZS5zaG93KCdvdXQtb2Ytc3RvY2stYWN0dWFsbHknKSlcblx0XHRcdFx0OiB0aGlzLnF1YW50aXR5LnNldChjdXJyZW50ICsgbXVsdGlwbGVRdWFudGl0eSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHN0b2NrXG5cdFx0XHRcdD8gKGN1cnJlbnQgPCBzdG9ja1xuXHRcdFx0XHRcdD8gdGhpcy5xdWFudGl0eS5zZXQoY3VycmVudCArIDEpXG5cdFx0XHRcdFx0OiB0aGlzLl90b2FzdFNlcnZpY2Uuc2hvdygnb3V0LW9mLXN0b2NrLWFjdHVhbGx5JykpXG5cdFx0XHRcdDogdGhpcy5xdWFudGl0eS5zZXQoY3VycmVudCArIDEpO1xuXHRcdH1cblx0fVxuXG5cdGxlc3MobXVsdGlwbGVRdWFudGl0eT86IG51bWJlcikge1xuXHRcdGNvbnNvbGUubG9nKCdEaXNtaW51eWVuZG8gY2FudGlkYWQnKTtcblx0XHRjb25zdCBjdXJyZW50ID0gTnVtYmVyKHRoaXMucXVhbnRpdHkoKSk7IC8vIDwtLSBmdWVyemEgYSBuw7ptZXJvXG5cdFx0aWYgKG11bHRpcGxlUXVhbnRpdHkgJiYgbXVsdGlwbGVRdWFudGl0eSA+IDApIHtcblx0XHRcdGN1cnJlbnQgPiBtdWx0aXBsZVF1YW50aXR5XG5cdFx0XHRcdD8gdGhpcy5xdWFudGl0eS5zZXQoY3VycmVudCAtIG11bHRpcGxlUXVhbnRpdHkpXG5cdFx0XHRcdDogbnVsbDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y3VycmVudCA+IDEgPyB0aGlzLnF1YW50aXR5LnNldChjdXJyZW50IC0gMSkgOiBudWxsO1xuXHRcdH1cblx0fVxuXG5cdGFkZFRvQ2FydCgpIHtcblx0XHRjb25zb2xlLmxvZygnQcOxYWRpZW5kbyBhbCBjYXJyaXRvJyk7XG5cdFx0aWYgKHRoaXMuaXNBZGRpbmdUb0NhcnQoKSB8fCB0aGlzLnF1YW50aXR5KCkgPD0gMCkgcmV0dXJuO1xuXG5cdFx0Ly8gVmVyaWZpY2FyIHF1ZSB0ZW5lbW9zIGVsIHByb2R1Y3RvIHkgc3VzIHZhcmlhbnRlc1xuXHRcdGlmICghdGhpcy5wcm9kdWN0IHx8ICF0aGlzLnByb2R1Y3QudmFyaWFudHMgfHwgdGhpcy5wcm9kdWN0LnZhcmlhbnRzLmxlbmd0aCA9PT0gMCkge1xuXHRcdFx0dGhpcy5fdG9hc3RTZXJ2aWNlLnNob3coJ2NhbnQtYnV5Jyk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gVmVyaWZpY2FyIHN0b2NrXG5cdFx0Y29uc3QgZmlyc3RWYXJpYW50ID0gdGhpcy5wcm9kdWN0LnZhcmlhbnRzWzBdO1xuXHRcdGlmICghZmlyc3RWYXJpYW50LnN0b2NrIHx8IGZpcnN0VmFyaWFudC5zdG9jayA8PSAwKSB7XG5cdFx0XHR0aGlzLl90b2FzdFNlcnZpY2Uuc2hvdygnb3V0LW9mLXN0b2NrJyk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gVmVyaWZpY2FyIHF1ZSBubyBzZSBzdXBlcmUgZWwgc3RvY2sgZGlzcG9uaWJsZVxuXHRcdGlmICh0aGlzLnF1YW50aXR5KCkgPiBmaXJzdFZhcmlhbnQuc3RvY2spIHtcblx0XHRcdHRoaXMuX3RvYXN0U2VydmljZS5zaG93KCdvdXQtb2Ytc3RvY2stYWN0dWFsbHknKTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHR0aGlzLmlzQWRkaW5nVG9DYXJ0LnNldCh0cnVlKTtcblxuXHRcdHRyeSB7XG5cdFx0XHQvLyBBZ3JlZ2FyIGFsIGNhcnJpdG8gdXNhbmRvIENhcnRTZXJ2aWNlIGRpcmVjdGFtZW50ZVxuXHRcdFx0dGhpcy5fY2FydFNlcnZpY2UuYWRkVG9DYXJ0KHRoaXMucHJvZHVjdCwgdGhpcy5xdWFudGl0eSgpLCBmaXJzdFZhcmlhbnQuY29kZSk7XG5cdFx0XHRjb25zb2xlLmxvZygnUHJvZHVjdG8gYWdyZWdhZG8gYWwgY2Fycml0byBleGl0b3NhbWVudGUnKTtcblxuXHRcdFx0Ly8gUmVzZXRlYXIgY2FudGlkYWQgYSAxIGRlc3B1w6lzIGRlIGFncmVnYXIgYWwgY2Fycml0b1xuXHRcdFx0dGhpcy5xdWFudGl0eS5zZXQoMSk7XG5cdFx0fSBjYXRjaCAoZXJyb3IpIHtcblx0XHRcdGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGFsIGFncmVnYXIgYWwgY2Fycml0bzonLCBlcnJvcik7XG5cdFx0XHR0aGlzLl90b2FzdFNlcnZpY2Uuc2hvdygnY2FudC1idXknKTtcblx0XHR9XG5cblx0XHRzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdHRoaXMuaXNBZGRpbmdUb0NhcnQuc2V0KGZhbHNlKTtcblx0XHR9LCAyMDAwKTtcblx0fVxuXHRjaGVja1N0b2NrKHN0b2NrOiBudW1iZXIpIHtcblx0XHRpZiAodGhpcy5xdWFudGl0eSgpID49IHN0b2NrKVxuXHRcdFx0dGhpcy5xdWFudGl0eS5zZXQoc3RvY2spO1xuXHR9XG5cblx0b25RdWFudGl0eUNoYW5nZShldmVudDogRXZlbnQpIHtcblx0XHRjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcblx0XHRjb25zdCB2YWx1ZSA9ICt0YXJnZXQudmFsdWU7XG5cblx0XHQvLyBWYWxpZGFyIHF1ZSBlbCB2YWxvciBzZWEgbWF5b3IgYSAwXG5cdFx0aWYgKHZhbHVlID4gMCkge1xuXHRcdFx0dGhpcy5xdWFudGl0eS5zZXQodmFsdWUpO1xuXHRcdFx0Ly8gVmFsaWRhciBjb250cmEgZWwgc3RvY2sgZGlzcG9uaWJsZVxuXHRcdFx0Y29uc3QgbWF4U3RvY2sgPSB0aGlzLnByb2R1Y3Q/LnZhcmlhbnRzPy5bMF0/LnN0b2NrIHx8IHRoaXMucHJvZHVjdD8uc3RvY2sgfHwgMDtcblx0XHRcdHRoaXMuY2hlY2tTdG9jayhtYXhTdG9jayk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIFNpIGVsIHZhbG9yIGVzIDAgbyBuZWdhdGl2bywgcmVzZXRlYXIgYSAxXG5cdFx0XHR0aGlzLnF1YW50aXR5LnNldCgxKTtcblx0XHR9XG5cdH1cbn1cbiIsIjxhIFtyb3V0ZXJMaW5rXT1cIlsnL3Byb2R1Y3QnLCBwcm9kdWN0LmlkXVwiIGNsYXNzPVwidGV4dC1kZWNvcmF0aW9uLW5vbmUgcHJvZHVjdG9cIj5cbiAgICA8IS0tIE1hcmNhIGVzcGVjaWFsIHkgZGVzY3VlbnRvIC0tPlxuICAgIDwhLS0gPGRpdiAqbmdJZj1cInByb2R1Y3Quc2FsZXByaWNlIHx8IChwcm9kdWN0LnNwZWNpYWxfbWFyayAmJiBwcm9kdWN0LnNwZWNpYWxfbWFyayAhPT0gbnVsbCAmJiBwcm9kdWN0LnNwZWNpYWxfbWFyayAhPT0gdW5kZWZpbmVkICYmIHByb2R1Y3Quc3BlY2lhbF9tYXJrLmxlbmd0aCA+MClcIlxuICAgICAgICBjbGFzcz1cIm1hcmNhc1wiPlxuICAgICAgICA8ZGl2ICplY1Byb2R1Y3RTdG9jaz1cInByb2R1Y3RcIiBbZWNQcm9kdWN0TWluaV09XCJwcm9kdWN0LnNwZWNpYWxfbWFya1wiPjwvZGl2PlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvdWxkU2hvd1ByaWNlXCI+XG4gICAgICAgICAgICA8ZGl2ICplY1Byb2R1Y3RTdG9jaz1cInByb2R1Y3RcIiBbbmdDbGFzc109XCJ7J3RhZy1kc2MgZmxvYXQtcmlnaHQnOiBwcm9kdWN0LnNhbGVwcmljZX1cIlxuICAgICAgICAgICAgICAgIFtlY1Byb2R1Y3RPZmZdPVwicHJvZHVjdFwiPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PiAtLT5cblxuICAgIDwhLS0gSW1hZ2VuIGRlbCBwcm9kdWN0byAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiZm90b1wiPlxuICAgICAgICBAaWYocHJvZHVjdC5waWN0dXJlc2RlZmF1bHQpe1xuICAgICAgICBAaWYgKHByb2R1Y3QucGljdHVyZXNkZWZhdWx0ICYmIHByb2R1Y3QucGljdHVyZXNkZWZhdWx0Lmxlbmd0aCA+IDEgKSB7XG4gICAgICAgIDxpbWcgW3NyY109XCJtZWRpYVVybCArIHByb2R1Y3QucGljdHVyZXNkZWZhdWx0WzBdXCIgYWx0PVwiSW1hZ2VuIHByaW5jaXBhbFwiIGNsYXNzPVwidy0xMDAgcGljMDFcIiAvPlxuICAgICAgICA8aW1nIFtzcmNdPVwibWVkaWFVcmwgKyBwcm9kdWN0LnBpY3R1cmVzZGVmYXVsdFsxXVwiIGFsdD1cIkltYWdlbiBzZWN1bmRhcmlhXCIgY2xhc3M9XCJ3LTEwMCBwaWMwMlwiIC8+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICA8aW1nIFtzcmNdPVwibWVkaWFVcmwgKyBwcm9kdWN0LnBpY3R1cmVzZGVmYXVsdFswXVwiIGFsdD1cIkltYWdlbiBwcmluY2lwYWxcIiBjbGFzcz1cInctMTAwIHBpYzAxXCIgLz5cbiAgICAgICAgfVxuICAgICAgICB9XG4gICAgPC9kaXY+XG4gICAgPCEtLSBQcmVjaW8gLS0+XG5cblxuICAgIDwhLS0gTm9tYnJlIGRlbCBwcm9kdWN0byAtLT5cbiAgICA8aDYgY2xhc3M9XCJ0aXRsZVwiPnt7IHByb2R1Y3QubmFtZSB8IHRpdGxlY2FzZSB9fTwvaDY+XG5cbiAgICA8ZGl2IGNsYXNzPVwic2t1XCIgW2lubmVySFRNTF09XCJwcm9kdWN0LnNob3J0ZGV0YWlsc1wiPjwvZGl2PlxuXG4gICAgQGlmIChzaG91bGRTaG93UHJpY2UpIHtcbiAgICA8YXBwLXByaWNlLWVjIFtwcmljZV09XCJwcm9kdWN0LnByaWNlXCIgW3NhbGVwcmljZV09XCJwcm9kdWN0LnNhbGVwcmljZVwiIGNsYXNzPVwiXCIgLz5cbiAgICB9XG4gICAgQGlmKCFoaWRlUHJpY2VzKXtcbiAgICBAaWYoIXNob3dQcmljZXNPbmx5VG9Mb2dnZWRVc2VycyB8fCBpc0F1dGhlbnRpY2F0ZWQkKXtcblxuICAgIDxkaXYgY2xhc3M9XCJmaXhCb3R0b21cIj5cblxuICAgICAgICA8IS0tIEJvdMOzbiBkZSBhY2Npb25lcyAtLT5cbiAgICAgICAgPCEtLSA8bmctY29udGFpbmVyICplY1Byb2R1Y3RTdG9jaz1cInByb2R1Y3Q7IGVsc2Ugbm9TdG9ja1wiPiAtLT5cbiAgICAgICAgPCEtLSBDdWFuZG8gbm8gdGllbmUgbWFyY2EgZXNwZWNpYWwgbyBlcyBkZSB0aXBvICdzdGFuZGFyZCcgLS0+XG4gICAgICAgIEBpZiAoIXByb2R1Y3Quc3BlY2lhbF9tYXJrIHx8IHByb2R1Y3Quc3BlY2lhbF9tYXJrLmxlbmd0aCA9PT0gMCB8fCBwcm9kdWN0LnNwZWNpYWxfbWFya1swXT8udHlwZSA9PT1cbiAgICAgICAgJ3N0YW5kYXJkJykge1xuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIHN0YW5kYXJkXCIgW25nQ2xhc3NdPVwiaXNDb2xsZWN0aW9uID8gJ3B4LTIgdy0xMDAgZC1zbS1ibG9jaycgOiAncHktMiBweC00J1wiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzQ29sbGVjdGlvbjsgZWxzZSBub3JtYWxUZXh0XCI+XG4gICAgICAgICAgICAgICAgPHNwYW4+IHt7KFwiYnV5XCIgfCB0cmFuc2xhdGUpIHwgdXBwZXJjYXNlfX0gPC9zcGFuPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI25vcm1hbFRleHQ+XG4gICAgICAgICAgICAgICAge3soXCJidXlcIiB8IHRyYW5zbGF0ZSkgfCB1cHBlcmNhc2V9fVxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIH1AZWxzZSB7XG4gICAgICAgIDwhLS0gQ2FzbyAxOiBBZ290YWRvIG8gRGlzcG9uaWJsZSBtdXkgcHJvbnRvIC0tPlxuICAgICAgICBAaWYgKHByb2R1Y3Quc3BlY2lhbF9tYXJrWzBdPy50eXBlID09PSAnb3V0X29mX3N0b2NrJyB8fCBwcm9kdWN0LnNwZWNpYWxfbWFya1swXT8udHlwZSA9PT0gJ2NvbWluZ19zb29uJykge1xuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuXCIgW25nQ2xhc3NdPVwiaXNDb2xsZWN0aW9uID8gJ3B4LTIgdy0xMDAgZC1zbS1ibG9jaycgOiAncHktMiBweC00J1wiPlxuICAgICAgICAgICAgQGlmKGlzQ29sbGVjdGlvbil7XG4gICAgICAgICAgICA8c3Bhbj57eyBwcm9kdWN0LnNwZWNpYWxfbWFya1swXS5uYW1lIHwgdXBwZXJjYXNlIH19IDwvc3Bhbj5cbiAgICAgICAgICAgIH1AZWxzZSB7XG4gICAgICAgICAgICB7eyBwcm9kdWN0LnNwZWNpYWxfbWFya1swXT8ubmFtZSB8IHVwcGVyY2FzZSB9fVxuICAgICAgICAgICAgfVxuICAgICAgICA8L2J1dHRvbj59XG4gICAgICAgIDwhLS0gQ2FzbyAyOiBDb250YWN0byBwb3IgV2hhdHNBcHAgLS0+XG4gICAgICAgIEBpZiAocHJvZHVjdC5zcGVjaWFsX21hcmtbMF0udHlwZSA9PT0gJ3doYXRzYXBwX2NvbnRhY3QnKSB7XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidG5cIiBbbmdDbGFzc109XCJpc0NvbGxlY3Rpb24gPyAncHgtMiB3LTEwMCBkLXNtLWJsb2NrJyA6ICdweS0yIHB4LTQnXCJcbiAgICAgICAgICAgIChjbGljayk9XCJvcGVuV2hhdHNBcHAocHJvZHVjdC5zcGVjaWFsX21hcmtbMF0/LndoYXRzYXBwQ29udGFjdClcIj5cbiAgICAgICAgICAgIEBpZihpc0NvbGxlY3Rpb24pe1xuICAgICAgICAgICAgPHNwYW4+e3sgcHJvZHVjdC5zcGVjaWFsX21hcmtbMF0/Lm5hbWUgfCB1cHBlcmNhc2UgfX08L3NwYW4+XG4gICAgICAgICAgICB9QGVsc2Uge1xuICAgICAgICAgICAge3sgcHJvZHVjdC5zcGVjaWFsX21hcmtbMF0/Lm5hbWUgfCB1cHBlcmNhc2UgfX1cbiAgICAgICAgICAgIH1cblxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgfVxuICAgICAgICA8IS0tIENhc28gMzogU29saWNpdGFyIG3DoXMgaW5mb3JtYWNpw7NuIC0tPlxuICAgICAgICBAaWYgKHByb2R1Y3Quc3BlY2lhbF9tYXJrWzBdPy50eXBlID09PSAnbW9yZV9pbmZvJykge1xuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuXCIgW25nQ2xhc3NdPVwiaXNDb2xsZWN0aW9uID8gJ3B4LTIgdy0xMDAgZC1zbS1ibG9jaycgOiAncHktMiBweC00J1wiPlxuICAgICAgICAgICAgQGlmKGlzQ29sbGVjdGlvbil7XG4gICAgICAgICAgICA8c3Bhbj57eyBwcm9kdWN0LnNwZWNpYWxfbWFya1swXT8ubmFtZSB8IHVwcGVyY2FzZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIH1AZWxzZSB7XG4gICAgICAgICAgICB7eyBwcm9kdWN0LnNwZWNpYWxfbWFya1swXT8ubmFtZSB8IHVwcGVyY2FzZSB9fVxuICAgICAgICAgICAgfVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgfVxuICAgICAgICB9XG4gICAgPC9kaXY+XG4gICAgfX1cbjwvYT4iXX0=
198
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1lYy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lYXN5Y29tbWVyY2UtdjE4L3NyYy9saWIvZWMtY29tcG9uZW50cy9wcm9kdWN0LWVjL3Byb2R1Y3QtZWMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLWNvbXBvbmVudHMvcHJvZHVjdC1lYy9wcm9kdWN0LWVjLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLFFBQVEsRUFBa0IsTUFBTSxHQUFHLE1BQU0sZUFBZSxDQUFDO0FBRTFILE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM3RyxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBQzdDOzs7R0FHRztBQVFILE1BQU0sT0FBTyxrQkFBa0I7SUFDdkIsUUFBUSxHQUFhLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNyQyxhQUFhLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQy9CLFlBQVks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LFNBQVM7K0JBQ0MsZ0JBQWdCLGNBQ2QsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxlQUFlLEVBQUUsV0FBVyxDQUFDO3dEQW1DbkYsT0FBTztzQkFITixLQUFLO3VCQUFDO3dCQUNOLFFBQVEsRUFBRSxJQUFJO3FCQUNkO2dCQUtRLFlBQVk7c0JBQXBCLEtBQUs7Z0JBSUksTUFBTTtzQkFBZixNQUFNO2dCQUVFLFlBQVk7c0JBQXBCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgaW5qZWN0LCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIEluamVjdG9yLCBXcml0YWJsZVNpZ25hbCwgc2lnbmFsLCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBQcm9kdWN0IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IENvcmVDb25zdGFudHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcclxuaW1wb3J0IHsgQW5hbHl0aWNzU2VydmljZSwgQ2hhbm5lbFNlcnZpY2UsIEF1dGhTZXJ2aWNlLCBDYXJ0U2VydmljZSwgVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZWMtc2VydmljZXMnO1xyXG5pbXBvcnQgeyBSb3V0ZXIsIFJvdXRlckxpbmsgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBQcmljZUVjQ29tcG9uZW50IH0gZnJvbSBcIi4uL3dpZGdldHMtZWMvcHJpY2UtZWMvcHJpY2UtZWMuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuLyoqXHJcbiAqIENvbXBvbmVudGUgcXVlIHNlIGVuY2FyZ2EgZGUgbWFuZWphciB1biBwcm9kdWN0by5cclxuICogQGNsYXNzIFByb2R1Y3RFY0NvbXBvbmVudFxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcblx0c2VsZWN0b3I6ICdhcHAtcHJvZHVjdC1lYycsXHJcblx0c3RhbmRhbG9uZTogdHJ1ZSxcclxuXHRpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBQcmljZUVjQ29tcG9uZW50LCBSb3V0ZXJMaW5rLCBUcmFuc2xhdGVNb2R1bGUsIEZvcm1zTW9kdWxlXSxcclxuXHR0ZW1wbGF0ZVVybDogJy4vcHJvZHVjdC1lYy5jb21wb25lbnQuaHRtbCcsXHJcblx0c3R5bGVVcmw6ICcuL3Byb2R1Y3QtZWMuY29tcG9uZW50LnNjc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQcm9kdWN0RWNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cdHB1YmxpYyBpbmplY3RvcjogSW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xyXG5cdHByaXZhdGUgcm91dGVyU2VydmljZSA9IGluamVjdChSb3V0ZXIpO1xyXG5cdHByaXZhdGUgX2NhcnRTZXJ2aWNlOiBDYXJ0U2VydmljZSA9IGluamVjdChDYXJ0U2VydmljZSk7XHJcblx0cHJpdmF0ZSBfdG9hc3RTZXJ2aWNlOiBUb2FzdFNlcnZpY2UgPSBpbmplY3QoVG9hc3RTZXJ2aWNlKTtcclxuXHJcblx0cHVibGljIGlzQWRkaW5nVG9DYXJ0OiBXcml0YWJsZVNpZ25hbDxib29sZWFuPiA9IHNpZ25hbChmYWxzZSk7XHJcblx0cHVibGljIHF1YW50aXR5OiBXcml0YWJsZVNpZ25hbDxudW1iZXI+ID0gc2lnbmFsKDEpO1xyXG5cclxuXHQvKipcclxuXHQgKiBOYXZlZ2EgYWwgZGV0YWxsZSBkZWwgcHJvZHVjdG8geSBzdWJlIGFsIGluaWNpbyBkZSBsYSBww6FnaW5hXHJcblx0ICogQHBhcmFtIHByb2R1Y3RJZCBJRCBkZWwgcHJvZHVjdG9cclxuXHQgKi9cclxuXHRuYXZpZ2F0ZVRvUHJvZHVjdChwcm9kdWN0SWQ6IHN0cmluZyk6IHZvaWQge1xyXG5cdFx0dGhpcy5yb3V0ZXJTZXJ2aWNlLm5hdmlnYXRlKFsnL3Byb2R1Y3QnLCBwcm9kdWN0SWRdKS50aGVuKCgpID0+IHtcclxuXHRcdFx0Ly8gU2Nyb2xsIHN1YXZlIGFsIGluaWNpbyBkZSBsYSBww6FnaW5hXHJcblx0XHRcdHdpbmRvdy5zY3JvbGxUbyh7XHJcblx0XHRcdFx0dG9wOiAwLFxyXG5cdFx0XHRcdGxlZnQ6IDAsXHJcblx0XHRcdFx0YmVoYXZpb3I6ICdzbW9vdGgnXHJcblx0XHRcdH0pO1xyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHJcblx0LyoqXHJcblx0ICogRGF0b3MgZGVsIHByb2R1Y3RvLlxyXG5cdCAqL1xyXG5cdEBJbnB1dCh7XHJcblx0XHRyZXF1aXJlZDogdHJ1ZVxyXG5cdH0pXHJcblx0cHJvZHVjdCE6IFByb2R1Y3Q7XHJcblx0LyoqXHJcblx0ICogU2UgdXNhIHBhcmEgc2FiZXIgc2kgZWwgcHJvZHVjdG8gZXMgZGUgdGlwbyBCb3ggbyBubyB5IGRlZmluaXIgbGEgdmlzdGEgYWRlY3VhZGEuXHJcblx0ICovXHJcblx0QElucHV0KCkgaXNQcm9kdWN0Qm94OiBib29sZWFuID0gdHJ1ZTtcclxuXHQvKipcclxuXHQgKiBDb25zdGFudGVzIGRlbCBjb3JlXHJcblx0ICovXHJcblx0QE91dHB1dCgpIGxvYWRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xyXG5cclxuXHRASW5wdXQoKSBpc0NvbGxlY3Rpb246IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcblx0bmdPbkluaXQoKSB7XHJcblx0XHR0aGlzLmxvYWRlZC5lbWl0KHRoaXMucHJvZHVjdC5pZCk7XHJcblxyXG5cdH1cclxuXHRwdWJsaWMgc2hvd1ByaWNlc09ubHlUb0xvZ2dlZFVzZXJzOiBib29sZWFuID0gZmFsc2U7XHJcblx0cHVibGljIGhpZGVQcmljZXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcblx0cHJpdmF0ZSBfYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlID0gaW5qZWN0KEF1dGhTZXJ2aWNlKVxyXG5cdHB1YmxpYyBpc0F1dGhlbnRpY2F0ZWQkID0gdGhpcy5fYXV0aFNlcnZpY2UuaXNBdXRoZW50aWNhdGVkKCk7XHJcblx0Y29uc3RydWN0b3IoKSB7XHJcblx0XHR0aGlzLmluamVjdG9yLmdldChDaGFubmVsU2VydmljZSkuY2hhbm5lbCQuc3Vic2NyaWJlKGNoYW5uZWwgPT4ge1xyXG5cdFx0XHR0aGlzLnNob3dQcmljZXNPbmx5VG9Mb2dnZWRVc2VycyA9ICEhY2hhbm5lbC5zaG93UHJpY2VzT25seVRvTG9nZ2VkVXNlcnM7XHJcblx0XHRcdHRoaXMuaGlkZVByaWNlcyA9ICEhY2hhbm5lbC5oaWRlUHJpY2VzO1xyXG5cdFx0fSk7XHJcblx0fVxyXG5cdHByaXZhdGUgY29uc3RzOiBDb3JlQ29uc3RhbnRzU2VydmljZSA9IGluamVjdChDb3JlQ29uc3RhbnRzU2VydmljZSlcclxuXHRwcml2YXRlIGFuYWx5dGljc1NlcnZpY2U6IEFuYWx5dGljc1NlcnZpY2UgPSBpbmplY3QoQW5hbHl0aWNzU2VydmljZSlcclxuXHRwcml2YXRlIHJvdXRlcjogUm91dGVyID0gaW5qZWN0KFJvdXRlcilcclxuXHQvKipcclxuXHQgKiBVUkwgcGFyYSBsYXMgaW1hZ2VuZXMgZGVsIHByb2R1Y3RvLlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBtZWRpYVVybDogc3RyaW5nID0gdGhpcy5jb25zdHMubWVkaWFVcmwoKVxyXG5cdG9wZW5XaGF0c0FwcCh1cmw6IHN0cmluZyk6IHZvaWQge1xyXG5cdFx0aWYgKHVybCkge1xyXG5cdFx0XHR3aW5kb3cub3Blbih1cmwsICdfYmxhbmsnKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdGdldCBzaG91bGRTaG93UHJpY2UoKTogYm9vbGVhbiB7XHJcblx0XHRyZXR1cm4gIXRoaXMucHJvZHVjdD8uc3BlY2lhbF9tYXJrIHx8IHRoaXMucHJvZHVjdC5zcGVjaWFsX21hcmsubGVuZ3RoID09PSAwIHx8IHRoaXMucHJvZHVjdC5zcGVjaWFsX21hcmtbMF0/LnNob3dQcmljZTtcclxuXHR9XHJcblxyXG5cdGdldCBoYXNEaXNjb3VudCgpOiBib29sZWFuIHtcclxuXHRcdHJldHVybiB0aGlzLnByb2R1Y3Quc2FsZXByaWNlICYmIHRoaXMucHJvZHVjdC5zYWxlcHJpY2UgIT09IHRoaXMucHJvZHVjdC5wcmljZTtcclxuXHR9XHJcblxyXG5cdGdldCBkaXNjb3VudFBlcmNlbnRhZ2UoKTogbnVtYmVyIHwgbnVsbCB7XHJcblx0XHRpZiAoIXRoaXMuaGFzRGlzY291bnQpIHtcclxuXHRcdFx0cmV0dXJuIG51bGw7XHJcblx0XHR9XHJcblxyXG5cdFx0Y29uc3Qgb3JpZ2luYWxQcmljZSA9IHBhcnNlRmxvYXQodGhpcy5wcm9kdWN0LnByaWNlPy50b1N0cmluZygpIHx8ICcwJyk7XHJcblx0XHRjb25zdCBzYWxlUHJpY2UgPSBwYXJzZUZsb2F0KHRoaXMucHJvZHVjdC5zYWxlcHJpY2U/LnRvU3RyaW5nKCkgfHwgJzAnKTtcclxuXHJcblx0XHQvLyBWYWxpZGFyIHF1ZSBsb3MgcHJlY2lvcyBzZWFuIHbDoWxpZG9zXHJcblx0XHRpZiAob3JpZ2luYWxQcmljZSA8PSAwIHx8IHNhbGVQcmljZSA8PSAwIHx8IHNhbGVQcmljZSA+PSBvcmlnaW5hbFByaWNlKSB7XHJcblx0XHRcdHJldHVybiBudWxsO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8vIENhbGN1bGFyIGVsIHBvcmNlbnRhamU6ICgocHJlY2lvX29yaWdpbmFsIC0gcHJlY2lvX29mZXJ0YSkgLyBwcmVjaW9fb3JpZ2luYWwpICogMTAwXHJcblx0XHRjb25zdCBkaXNjb3VudCA9ICgob3JpZ2luYWxQcmljZSAtIHNhbGVQcmljZSkgLyBvcmlnaW5hbFByaWNlKSAqIDEwMDtcclxuXHJcblx0XHRyZXR1cm4gTWF0aC5yb3VuZChkaXNjb3VudCk7XHJcblx0fVxyXG5cdHBsdXMoc3RvY2s/OiBudW1iZXIsIG11bHRpcGxlUXVhbnRpdHk/OiBudW1iZXIpIHtcclxuXHRcdGNvbnNvbGUubG9nKCdBdW1lbnRhbmRvIGNhbnRpZGFkJyk7XHJcblx0XHRjb25zdCBjdXJyZW50ID0gTnVtYmVyKHRoaXMucXVhbnRpdHkoKSk7IC8vIDwtLSBmdWVyemEgYSBuw7ptZXJvXHJcblx0XHRpZiAobXVsdGlwbGVRdWFudGl0eSAmJiBtdWx0aXBsZVF1YW50aXR5ID4gMCkge1xyXG5cdFx0XHRzdG9ja1xyXG5cdFx0XHRcdD8gKGN1cnJlbnQgPCBzdG9ja1xyXG5cdFx0XHRcdFx0PyB0aGlzLnF1YW50aXR5LnNldChjdXJyZW50ICsgbXVsdGlwbGVRdWFudGl0eSlcclxuXHRcdFx0XHRcdDogdGhpcy5fdG9hc3RTZXJ2aWNlLnNob3coJ291dC1vZi1zdG9jay1hY3R1YWxseScpKVxyXG5cdFx0XHRcdDogdGhpcy5xdWFudGl0eS5zZXQoY3VycmVudCArIG11bHRpcGxlUXVhbnRpdHkpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0c3RvY2tcclxuXHRcdFx0XHQ/IChjdXJyZW50IDwgc3RvY2tcclxuXHRcdFx0XHRcdD8gdGhpcy5xdWFudGl0eS5zZXQoY3VycmVudCArIDEpXHJcblx0XHRcdFx0XHQ6IHRoaXMuX3RvYXN0U2VydmljZS5zaG93KCdvdXQtb2Ytc3RvY2stYWN0dWFsbHknKSlcclxuXHRcdFx0XHQ6IHRoaXMucXVhbnRpdHkuc2V0KGN1cnJlbnQgKyAxKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdGxlc3MobXVsdGlwbGVRdWFudGl0eT86IG51bWJlcikge1xyXG5cdFx0Y29uc29sZS5sb2coJ0Rpc21pbnV5ZW5kbyBjYW50aWRhZCcpO1xyXG5cdFx0Y29uc3QgY3VycmVudCA9IE51bWJlcih0aGlzLnF1YW50aXR5KCkpOyAvLyA8LS0gZnVlcnphIGEgbsO6bWVyb1xyXG5cdFx0aWYgKG11bHRpcGxlUXVhbnRpdHkgJiYgbXVsdGlwbGVRdWFudGl0eSA+IDApIHtcclxuXHRcdFx0Y3VycmVudCA+IG11bHRpcGxlUXVhbnRpdHlcclxuXHRcdFx0XHQ/IHRoaXMucXVhbnRpdHkuc2V0KGN1cnJlbnQgLSBtdWx0aXBsZVF1YW50aXR5KVxyXG5cdFx0XHRcdDogbnVsbDtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdGN1cnJlbnQgPiAxID8gdGhpcy5xdWFudGl0eS5zZXQoY3VycmVudCAtIDEpIDogbnVsbDtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdGFkZFRvQ2FydCgpIHtcclxuXHRcdGNvbnNvbGUubG9nKCdBw7FhZGllbmRvIGFsIGNhcnJpdG8nKTtcclxuXHRcdGlmICh0aGlzLmlzQWRkaW5nVG9DYXJ0KCkgfHwgdGhpcy5xdWFudGl0eSgpIDw9IDApIHJldHVybjtcclxuXHJcblx0XHQvLyBWZXJpZmljYXIgcXVlIHRlbmVtb3MgZWwgcHJvZHVjdG8geSBzdXMgdmFyaWFudGVzXHJcblx0XHRpZiAoIXRoaXMucHJvZHVjdCB8fCAhdGhpcy5wcm9kdWN0LnZhcmlhbnRzIHx8IHRoaXMucHJvZHVjdC52YXJpYW50cy5sZW5ndGggPT09IDApIHtcclxuXHRcdFx0dGhpcy5fdG9hc3RTZXJ2aWNlLnNob3coJ2NhbnQtYnV5Jyk7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHJcblx0XHQvLyBWZXJpZmljYXIgc3RvY2tcclxuXHRcdGNvbnN0IGZpcnN0VmFyaWFudCA9IHRoaXMucHJvZHVjdC52YXJpYW50c1swXTtcclxuXHRcdGlmICghZmlyc3RWYXJpYW50LnN0b2NrIHx8IGZpcnN0VmFyaWFudC5zdG9jayA8PSAwKSB7XHJcblx0XHRcdHRoaXMuX3RvYXN0U2VydmljZS5zaG93KCdvdXQtb2Ytc3RvY2snKTtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8vIFZlcmlmaWNhciBxdWUgbm8gc2Ugc3VwZXJlIGVsIHN0b2NrIGRpc3BvbmlibGVcclxuXHRcdGlmICh0aGlzLnF1YW50aXR5KCkgPiBmaXJzdFZhcmlhbnQuc3RvY2spIHtcclxuXHRcdFx0dGhpcy5fdG9hc3RTZXJ2aWNlLnNob3coJ291dC1vZi1zdG9jay1hY3R1YWxseScpO1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblxyXG5cdFx0dGhpcy5pc0FkZGluZ1RvQ2FydC5zZXQodHJ1ZSk7XHJcblxyXG5cdFx0dHJ5IHtcclxuXHRcdFx0Ly8gQWdyZWdhciBhbCBjYXJyaXRvIHVzYW5kbyBDYXJ0U2VydmljZSBkaXJlY3RhbWVudGVcclxuXHRcdFx0dGhpcy5fY2FydFNlcnZpY2UuYWRkVG9DYXJ0KHRoaXMucHJvZHVjdCwgdGhpcy5xdWFudGl0eSgpLCBmaXJzdFZhcmlhbnQuY29kZSk7XHJcblx0XHRcdGNvbnNvbGUubG9nKCdQcm9kdWN0byBhZ3JlZ2FkbyBhbCBjYXJyaXRvIGV4aXRvc2FtZW50ZScpO1xyXG5cclxuXHRcdFx0Ly8gUmVzZXRlYXIgY2FudGlkYWQgYSAxIGRlc3B1w6lzIGRlIGFncmVnYXIgYWwgY2Fycml0b1xyXG5cdFx0XHR0aGlzLnF1YW50aXR5LnNldCgxKTtcclxuXHRcdH0gY2F0Y2ggKGVycm9yKSB7XHJcblx0XHRcdGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGFsIGFncmVnYXIgYWwgY2Fycml0bzonLCBlcnJvcik7XHJcblx0XHRcdHRoaXMuX3RvYXN0U2VydmljZS5zaG93KCdjYW50LWJ1eScpO1xyXG5cdFx0fVxyXG5cclxuXHRcdHNldFRpbWVvdXQoKCkgPT4ge1xyXG5cdFx0XHR0aGlzLmlzQWRkaW5nVG9DYXJ0LnNldChmYWxzZSk7XHJcblx0XHR9LCAyMDAwKTtcclxuXHR9XHJcblx0Y2hlY2tTdG9jayhzdG9jazogbnVtYmVyKSB7XHJcblx0XHRpZiAodGhpcy5xdWFudGl0eSgpID49IHN0b2NrKVxyXG5cdFx0XHR0aGlzLnF1YW50aXR5LnNldChzdG9jayk7XHJcblx0fVxyXG5cclxuXHRvblF1YW50aXR5Q2hhbmdlKGV2ZW50OiBFdmVudCkge1xyXG5cdFx0Y29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XHJcblx0XHRjb25zdCB2YWx1ZSA9ICt0YXJnZXQudmFsdWU7XHJcblxyXG5cdFx0Ly8gVmFsaWRhciBxdWUgZWwgdmFsb3Igc2VhIG1heW9yIGEgMFxyXG5cdFx0aWYgKHZhbHVlID4gMCkge1xyXG5cdFx0XHR0aGlzLnF1YW50aXR5LnNldCh2YWx1ZSk7XHJcblx0XHRcdC8vIFZhbGlkYXIgY29udHJhIGVsIHN0b2NrIGRpc3BvbmlibGVcclxuXHRcdFx0Y29uc3QgbWF4U3RvY2sgPSB0aGlzLnByb2R1Y3Q/LnZhcmlhbnRzPy5bMF0/LnN0b2NrIHx8IHRoaXMucHJvZHVjdD8uc3RvY2sgfHwgMDtcclxuXHRcdFx0dGhpcy5jaGVja1N0b2NrKG1heFN0b2NrKTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdC8vIFNpIGVsIHZhbG9yIGVzIDAgbyBuZWdhdGl2bywgcmVzZXRlYXIgYSAxXHJcblx0XHRcdHRoaXMucXVhbnRpdHkuc2V0KDEpO1xyXG5cdFx0fVxyXG5cdH1cclxufVxyXG4iLCI8YSBbcm91dGVyTGlua109XCJbJy9wcm9kdWN0JywgcHJvZHVjdC5pZF1cIiBjbGFzcz1cInRleHQtZGVjb3JhdGlvbi1ub25lIHByb2R1Y3RvXCI+XHJcbiAgICA8IS0tIE1hcmNhIGVzcGVjaWFsIHkgZGVzY3VlbnRvIC0tPlxyXG4gICAgPCEtLSA8ZGl2ICpuZ0lmPVwicHJvZHVjdC5zYWxlcHJpY2UgfHwgKHByb2R1Y3Quc3BlY2lhbF9tYXJrICYmIHByb2R1Y3Quc3BlY2lhbF9tYXJrICE9PSBudWxsICYmIHByb2R1Y3Quc3BlY2lhbF9tYXJrICE9PSB1bmRlZmluZWQgJiYgcHJvZHVjdC5zcGVjaWFsX21hcmsubGVuZ3RoID4wKVwiXHJcbiAgICAgICAgY2xhc3M9XCJtYXJjYXNcIj5cclxuICAgICAgICA8ZGl2ICplY1Byb2R1Y3RTdG9jaz1cInByb2R1Y3RcIiBbZWNQcm9kdWN0TWluaV09XCJwcm9kdWN0LnNwZWNpYWxfbWFya1wiPjwvZGl2PlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG91bGRTaG93UHJpY2VcIj5cclxuICAgICAgICAgICAgPGRpdiAqZWNQcm9kdWN0U3RvY2s9XCJwcm9kdWN0XCIgW25nQ2xhc3NdPVwieyd0YWctZHNjIGZsb2F0LXJpZ2h0JzogcHJvZHVjdC5zYWxlcHJpY2V9XCJcclxuICAgICAgICAgICAgICAgIFtlY1Byb2R1Y3RPZmZdPVwicHJvZHVjdFwiPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PiAtLT5cclxuXHJcbiAgICA8IS0tIEltYWdlbiBkZWwgcHJvZHVjdG8gLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZm90b1wiPlxyXG4gICAgICAgIEBpZihwcm9kdWN0LnBpY3R1cmVzZGVmYXVsdCl7XHJcbiAgICAgICAgQGlmIChwcm9kdWN0LnBpY3R1cmVzZGVmYXVsdCAmJiBwcm9kdWN0LnBpY3R1cmVzZGVmYXVsdC5sZW5ndGggPiAxICkge1xyXG4gICAgICAgIDxpbWcgW3NyY109XCJtZWRpYVVybCArIHByb2R1Y3QucGljdHVyZXNkZWZhdWx0WzBdXCIgYWx0PVwiSW1hZ2VuIHByaW5jaXBhbFwiIGNsYXNzPVwidy0xMDAgcGljMDFcIiAvPlxyXG4gICAgICAgIDxpbWcgW3NyY109XCJtZWRpYVVybCArIHByb2R1Y3QucGljdHVyZXNkZWZhdWx0WzFdXCIgYWx0PVwiSW1hZ2VuIHNlY3VuZGFyaWFcIiBjbGFzcz1cInctMTAwIHBpYzAyXCIgLz5cclxuICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICA8aW1nIFtzcmNdPVwibWVkaWFVcmwgKyBwcm9kdWN0LnBpY3R1cmVzZGVmYXVsdFswXVwiIGFsdD1cIkltYWdlbiBwcmluY2lwYWxcIiBjbGFzcz1cInctMTAwIHBpYzAxXCIgLz5cclxuICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgPC9kaXY+XHJcbiAgICA8IS0tIFByZWNpbyAtLT5cclxuXHJcblxyXG4gICAgPCEtLSBOb21icmUgZGVsIHByb2R1Y3RvIC0tPlxyXG4gICAgPGg2IGNsYXNzPVwidGl0bGVcIj57eyBwcm9kdWN0Lm5hbWUgfCB0aXRsZWNhc2UgfX08L2g2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJza3VcIiBbaW5uZXJIVE1MXT1cInByb2R1Y3Quc2hvcnRkZXRhaWxzXCI+PC9kaXY+XHJcblxyXG4gICAgQGlmIChzaG91bGRTaG93UHJpY2UpIHtcclxuICAgIDxhcHAtcHJpY2UtZWMgW3ByaWNlXT1cInByb2R1Y3QucHJpY2VcIiBbc2FsZXByaWNlXT1cInByb2R1Y3Quc2FsZXByaWNlXCIgY2xhc3M9XCJcIiAvPlxyXG4gICAgfVxyXG4gICAgQGlmKCFoaWRlUHJpY2VzKXtcclxuICAgIEBpZighc2hvd1ByaWNlc09ubHlUb0xvZ2dlZFVzZXJzIHx8IGlzQXV0aGVudGljYXRlZCQpe1xyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJmaXhCb3R0b21cIj5cclxuXHJcbiAgICAgICAgPCEtLSBCb3TDs24gZGUgYWNjaW9uZXMgLS0+XHJcbiAgICAgICAgPCEtLSA8bmctY29udGFpbmVyICplY1Byb2R1Y3RTdG9jaz1cInByb2R1Y3Q7IGVsc2Ugbm9TdG9ja1wiPiAtLT5cclxuICAgICAgICA8IS0tIEN1YW5kbyBubyB0aWVuZSBtYXJjYSBlc3BlY2lhbCBvIGVzIGRlIHRpcG8gJ3N0YW5kYXJkJyAtLT5cclxuICAgICAgICBAaWYgKCFwcm9kdWN0LnNwZWNpYWxfbWFyayB8fCBwcm9kdWN0LnNwZWNpYWxfbWFyay5sZW5ndGggPT09IDAgfHwgcHJvZHVjdC5zcGVjaWFsX21hcmtbMF0/LnR5cGUgPT09XHJcbiAgICAgICAgJ3N0YW5kYXJkJykge1xyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gc3RhbmRhcmRcIiBbbmdDbGFzc109XCJpc0NvbGxlY3Rpb24gPyAncHgtMiB3LTEwMCBkLXNtLWJsb2NrJyA6ICdweS0yIHB4LTQnXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0NvbGxlY3Rpb247IGVsc2Ugbm9ybWFsVGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4+IHt7KFwiYnV5XCIgfCB0cmFuc2xhdGUpIHwgdXBwZXJjYXNlfX0gPC9zcGFuPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub3JtYWxUZXh0PlxyXG4gICAgICAgICAgICAgICAge3soXCJidXlcIiB8IHRyYW5zbGF0ZSkgfCB1cHBlcmNhc2V9fVxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIH1AZWxzZSB7XHJcbiAgICAgICAgPCEtLSBDYXNvIDE6IEFnb3RhZG8gbyBEaXNwb25pYmxlIG11eSBwcm9udG8gLS0+XHJcbiAgICAgICAgQGlmIChwcm9kdWN0LnNwZWNpYWxfbWFya1swXT8udHlwZSA9PT0gJ291dF9vZl9zdG9jaycgfHwgcHJvZHVjdC5zcGVjaWFsX21hcmtbMF0/LnR5cGUgPT09ICdjb21pbmdfc29vbicpIHtcclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuXCIgW25nQ2xhc3NdPVwiaXNDb2xsZWN0aW9uID8gJ3B4LTIgdy0xMDAgZC1zbS1ibG9jaycgOiAncHktMiBweC00J1wiPlxyXG4gICAgICAgICAgICBAaWYoaXNDb2xsZWN0aW9uKXtcclxuICAgICAgICAgICAgPHNwYW4+e3sgcHJvZHVjdC5zcGVjaWFsX21hcmtbMF0ubmFtZSB8IHVwcGVyY2FzZSB9fSA8L3NwYW4+XHJcbiAgICAgICAgICAgIH1AZWxzZSB7XHJcbiAgICAgICAgICAgIHt7IHByb2R1Y3Quc3BlY2lhbF9tYXJrWzBdPy5uYW1lIHwgdXBwZXJjYXNlIH19XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICA8L2J1dHRvbj59XHJcbiAgICAgICAgPCEtLSBDYXNvIDI6IENvbnRhY3RvIHBvciBXaGF0c0FwcCAtLT5cclxuICAgICAgICBAaWYgKHByb2R1Y3Quc3BlY2lhbF9tYXJrWzBdLnR5cGUgPT09ICd3aGF0c2FwcF9jb250YWN0Jykge1xyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidG5cIiBbbmdDbGFzc109XCJpc0NvbGxlY3Rpb24gPyAncHgtMiB3LTEwMCBkLXNtLWJsb2NrJyA6ICdweS0yIHB4LTQnXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5XaGF0c0FwcChwcm9kdWN0LnNwZWNpYWxfbWFya1swXT8ud2hhdHNhcHBDb250YWN0KVwiPlxyXG4gICAgICAgICAgICBAaWYoaXNDb2xsZWN0aW9uKXtcclxuICAgICAgICAgICAgPHNwYW4+e3sgcHJvZHVjdC5zcGVjaWFsX21hcmtbMF0/Lm5hbWUgfCB1cHBlcmNhc2UgfX08L3NwYW4+XHJcbiAgICAgICAgICAgIH1AZWxzZSB7XHJcbiAgICAgICAgICAgIHt7IHByb2R1Y3Quc3BlY2lhbF9tYXJrWzBdPy5uYW1lIHwgdXBwZXJjYXNlIH19XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIDwhLS0gQ2FzbyAzOiBTb2xpY2l0YXIgbcOhcyBpbmZvcm1hY2nDs24gLS0+XHJcbiAgICAgICAgQGlmIChwcm9kdWN0LnNwZWNpYWxfbWFya1swXT8udHlwZSA9PT0gJ21vcmVfaW5mbycpIHtcclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuXCIgW25nQ2xhc3NdPVwiaXNDb2xsZWN0aW9uID8gJ3B4LTIgdy0xMDAgZC1zbS1ibG9jaycgOiAncHktMiBweC00J1wiPlxyXG4gICAgICAgICAgICBAaWYoaXNDb2xsZWN0aW9uKXtcclxuICAgICAgICAgICAgPHNwYW4+e3sgcHJvZHVjdC5zcGVjaWFsX21hcmtbMF0/Lm5hbWUgfCB1cHBlcmNhc2UgfX08L3NwYW4+XHJcbiAgICAgICAgICAgIH1AZWxzZSB7XHJcbiAgICAgICAgICAgIHt7IHByb2R1Y3Quc3BlY2lhbF9tYXJrWzBdPy5uYW1lIHwgdXBwZXJjYXNlIH19XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgPC9kaXY+XHJcbiAgICB9fVxyXG48L2E+Il19
@@ -67,11 +67,9 @@ export class RelatedProductsEcComponent extends BlockEcComponent {
67
67
  this._relatedProductsSubject.next(relatedProducts);
68
68
  res.map((products) => this._analyticsService.callEvent('view_item_list', { products: products.items, item_list_name: products.title || 'Related Products', item_list_id: products.id || 'related-products' }));
69
69
  // Inicializar swiper después de que los datos estén disponibles
70
- if (isPlatformBrowser(this.platformId)) {
71
- setTimeout(() => {
72
- this.initSwiper();
73
- }, 100);
74
- }
70
+ setTimeout(() => {
71
+ this.initSwiper();
72
+ }, 100);
75
73
  });
76
74
  }
77
75
  initSwiper() {
@@ -99,11 +97,11 @@ export class RelatedProductsEcComponent extends BlockEcComponent {
99
97
  }
100
98
  }
101
99
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RelatedProductsEcComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
102
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: RelatedProductsEcComponent, isStandalone: true, selector: "app-related-products-ec", inputs: { appProduct: "appProduct", productID: "productID" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }] });
100
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: RelatedProductsEcComponent, isStandalone: true, selector: "app-related-products-ec", inputs: { appProduct: "appProduct", productID: "productID" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }] });
103
101
  }
104
102
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RelatedProductsEcComponent, decorators: [{
105
103
  type: Component,
106
- args: [{ selector: 'app-related-products-ec', standalone: true, imports: [AsyncPipe, ProductEcComponent, CommonModule], schemas: [CUSTOM_ELEMENTS_SCHEMA], template: "\n" }]
104
+ args: [{ selector: 'app-related-products-ec', standalone: true, imports: [AsyncPipe, ProductEcComponent, CommonModule], schemas: [CUSTOM_ELEMENTS_SCHEMA], template: "\r\n" }]
107
105
  }], ctorParameters: () => [], propDecorators: { appProduct: [{
108
106
  type: Input
109
107
  }], productID: [{
@@ -112,4 +110,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
112
110
  required: true
113
111
  }]
114
112
  }] } });
115
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVsYXRlZC1wcm9kdWN0cy1lYy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lYXN5Y29tbWVyY2UtdjE4L3NyYy9saWIvZWMtY29tcG9uZW50cy9yZWxhdGVkLXByb2R1Y3RzLWVjL3JlbGF0ZWQtcHJvZHVjdHMtZWMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLWNvbXBvbmVudHMvcmVsYXRlZC1wcm9kdWN0cy1lYy9yZWxhdGVkLXByb2R1Y3RzLWVjLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBOEIsc0JBQXNCLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBK0IsTUFBTSxlQUFlLENBQUM7QUFDL0osT0FBTyxFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsZUFBZSxFQUFjLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN6RCxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRTdFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBR3hFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDOztBQVU5RCxNQUFNLE9BQU8sMEJBQTJCLFNBQVEsZ0JBQWdCO0lBQ3BELGdCQUFnQixHQUFvQixNQUFNLENBQUMsZUFBZSxDQUFDLENBQUE7SUFDM0QsaUJBQWlCLEdBQXFCLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBO0lBQzlELE9BQU8sR0FBVyxNQUFN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UyxFQUFFLGtCQUFrQixFQUFFLFlBQVksQ0FBQyxXQUc3QyxDQUFDLHNCQUFzQixDQUFDO3dEQWF4QixVQUFVO3NCQUFsQixLQUFLO2dCQUdILFNBQVM7c0JBRlgsS0FBSzt1QkFBQzt3QkFDSCxRQUFRLEVBQUUsSUFBSTtxQkFDakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGluamVjdCwgSW5wdXQsIFRlbXBsYXRlUmVmLCBTaW1wbGVDaGFuZ2VzLCBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBzaWduYWwsIFBMQVRGT1JNX0lELCBhZnRlck5leHRSZW5kZXIgLCBPbkNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFuYWx5dGljc1NlcnZpY2UsIFByb2R1Y3RzU2VydmljZSB9IGZyb20gJy4uLy4uL2VjLXNlcnZpY2VzJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIHRha2UgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFzeW5jUGlwZSwgQ29tbW9uTW9kdWxlLCBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBQcm9kdWN0IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBQcm9kdWN0RWNDb21wb25lbnQgfSBmcm9tICcuLi9wcm9kdWN0LWVjL3Byb2R1Y3QtZWMuY29tcG9uZW50JztcbmltcG9ydCB7IFN3aXBlckNvbnRhaW5lciB9IGZyb20gJ3N3aXBlci9lbGVtZW50JztcbmltcG9ydCB7IFN3aXBlck9wdGlvbnMgfSBmcm9tICdzd2lwZXIvdHlwZXMnO1xuaW1wb3J0IHsgQmxvY2tFY0NvbXBvbmVudCB9IGZyb20gJy4uL2Fic3RyYWN0aW9ucy1jb21wb25lbnRzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdhcHAtcmVsYXRlZC1wcm9kdWN0cy1lYycsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbQXN5bmNQaXBlLCBQcm9kdWN0RWNDb21wb25lbnQsIENvbW1vbk1vZHVsZV0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL3JlbGF0ZWQtcHJvZHVjdHMtZWMuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsOiAnLi9yZWxhdGVkLXByb2R1Y3RzLWVjLmNvbXBvbmVudC5zY3NzJyxcbiAgICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV1cbn0pXG5leHBvcnQgY2xhc3MgUmVsYXRlZFByb2R1Y3RzRWNDb21wb25lbnQgZXh0ZW5kcyBCbG9ja0VjQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgICBwcml2YXRlIF9wcm9kdWN0c1NlcnZpY2U6IFByb2R1Y3RzU2VydmljZSA9IGluamVjdChQcm9kdWN0c1NlcnZpY2UpXG4gICAgcHJpdmF0ZSBfYW5hbHl0aWNzU2VydmljZTogQW5hbHl0aWNzU2VydmljZSA9IGluamVjdChBbmFseXRpY3NTZXJ2aWNlKVxuICAgIHByaXZhdGUgX3JvdXRlcjogUm91dGVyID0gaW5qZWN0KFJvdXRlcilcbiAgICBcdC8qKlxuXHQgKiBTaWduYWwgdXRsaXphZG8gcGFyYSBndWFyZGEgZWwgY29udGVuZWRvciBkZWwgY2FycnVzZWxcblx0ICovXG5cdHN3aXBlckVsZW1lbnQgPSBzaWduYWw8U3dpcGVyQ29udGFpbmVyIHwgbnVsbD4obnVsbClcbiAgICAvKipcbiAgICAgKiBJbnB1dCBxdWUgcmVjaWJlIHVuIHRlbXBsYXRlIHBhcmEgZWwgcHJvZHVjdG8uXG4gICAgICovXG4gICAgQElucHV0KCkgYXBwUHJvZHVjdDogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcbiAgICBASW5wdXQoe1xuICAgICAgICByZXF1aXJlZDogdHJ1ZVxuICAgIH0pIHByb2R1Y3RJRDogYW55O1xuXG4gICAgICAgIHByaXZhdGUgZG9jdW1lbnQ/OiBEb2N1bWVudDtcbiAgICAgICAgcHJpdmF0ZSBwbGF0Zm9ybUlkOiBhbnkgPSBpbmplY3QoUExBVEZPUk1fSUQpXG4gICAgXG4gICAgcHJpdmF0ZSBfcmVsYXRlZFByb2R1Y3RzU3ViamVjdDpCZWhhdmlvclN1YmplY3Q8UHJvZHVjdFtdPiA9ICBuZXcgQmVoYXZpb3JTdWJqZWN0PFByb2R1Y3RbXT4oW10pXG4gICAgcHVibGljIHJlbGF0ZWRQcm9kdWN0cyQ6T2JzZXJ2YWJsZTxhbnlbXT4gPSB0aGlzLl9yZWxhdGVkUHJvZHVjdHNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIHByaXZhdGUga2V5d29yZHNUb0NvbXBhcmU6c3RyaW5nW10gPSBbJ2NvbXBhcmUnLCAnY29tcGFyYXInLCAnY29tcGFyYWNpb24nLCAnY29tcGFyYWNpw7NuJywgJ2NvbXBhcmVkJ107XG4gICAgb3ZlcnJpZGUgc3dpcGVyT3B0aW9ucyA9ICgpOiBTd2lwZXJPcHRpb25zID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG5hdmlnYXRpb246IHRydWUsXG4gICAgICAgICAgICBsb29wOiB0cnVlLFxuICAgICAgICAgICAgYXV0b0hlaWdodDogdHJ1ZSxcbiAgICAgICAgICAgIGF1dG9wbGF5OiB0cnVlLFxuICAgICAgICAgICAgYnJlYWtwb2ludHM6IHtcbiAgICAgICAgICAgICAgICAwOiB7XG4gICAgICAgICAgICAgICAgICAgIHNsaWRlc1BlclZpZXc6IDFcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIDU3Njoge1xuICAgICAgICAgICAgICAgICAgICBzbGlkZXNQZXJWaWV3OiAyXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICA3Njg6IHtcbiAgICAgICAgICAgICAgICAgICAgc2xpZGVzUGVyVmlldzogMixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIDk5Mjoge1xuICAgICAgICAgICAgICAgICAgICBzbGlkZXNQZXJWaWV3OiAzLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgMTIwMDoge1xuICAgICAgICAgICAgICAgICAgICBzbGlkZXNQZXJWaWV3OiA0LFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKVxuICAgICAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgICAgICAgdGhpcy5kb2N1bWVudCA9IGRvY3VtZW50XG4gICAgICAgIH1cbiAgICAgICAgLy8gU3dpcGVyIGluaXRpYWxpemF0aW9uIG1vdmVkIHRvIGluaXRTd2lwZXIoKSBtZXRob2QgY2FsbGVkIGFmdGVyIGRhdGEgbG9hZHNcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2codGhpcy5wcm9kdWN0SUQpXG4gICAgICAgIHRoaXMubG9hZCh0aGlzLnByb2R1Y3RJRClcbiAgICB9XG5cbiAgICBwcml2YXRlIGxvYWQocHJvZHVjdF9pZDphbnkpIHtcbiAgICAgICAgdGhpcy5fcHJvZHVjdHNTZXJ2aWNlLmdldFJlbGF0ZWRQcm9kdWN0cyhwcm9kdWN0X2lkKS5waXBlKHRha2UoMSkpLnN1YnNjcmliZShcbiAgICAgICAgICAgIHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ3Jlc3BvbnNlJyxyZXMpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlbGF0ZWRQcm9kdWN0czphbnkgPSByZXMuZmlsdGVyKChlbGVtOmFueSkgPT4gIXRoaXMuaW5jbHVkZUtleXdvcmQoZWxlbS50aXRsZS50b0xvd2VyQ2FzZSgpKSlcbiAgICAgICAgICAgICAgICB0aGlzLl9yZWxhdGVkUHJvZHVjdHNTdWJqZWN0Lm5leHQocmVsYXRlZFByb2R1Y3RzKVxuICAgICAgICAgICAgICAgIHJlcy5tYXAoKHByb2R1Y3RzOmFueSkgPT4gdGhpcy5fYW5hbHl0aWNzU2VydmljZS5jYWxsRXZlbnQoJ3ZpZXdfaXRlbV9saXN0JywgeyBwcm9kdWN0czogcHJvZHVjdHMuaXRlbXMsIGl0ZW1fbGlzdF9uYW1lOiBwcm9kdWN0cy50aXRsZSB8fCAnUmVsYXRlZCBQcm9kdWN0cycsIGl0ZW1fbGlzdF9pZDogcHJvZHVjdHMuaWQgfHwgJ3JlbGF0ZWQtcHJvZHVjdHMnIH0pKVxuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIC8vIEluaWNpYWxpemFyIHN3aXBlciBkZXNwdcOpcyBkZSBxdWUgbG9zIGRhdG9zIGVzdMOpbiBkaXNwb25pYmxlc1xuICAgICAgICAgICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbml0U3dpcGVyKCk7XG4gICAgICAgICAgICAgICAgICAgIH0sIDEwMCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICApXG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0U3dpcGVyKCkge1xuICAgICAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgICAgICAgY29uc3Qgc3dpcGVyRWxlbUNvbnN0cnVjdG9yID0gdGhpcy5kb2N1bWVudD8ucXVlcnlTZWxlY3RvcignI3JlbGF0ZWRQcm9kdWN0c1N3aXBlcicpXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZygnc3dpcGVyRWxlbUNvbnN0cnVjdG9yJywgc3dpcGVyRWxlbUNvbnN0cnVjdG9yKVxuICAgICAgICAgICAgaWYgKHN3aXBlckVsZW1Db25zdHJ1Y3Rvcikge1xuICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oc3dpcGVyRWxlbUNvbnN0cnVjdG9yISwgdGhpcy5zd2lwZXJPcHRpb25zKCkpXG4gICAgICAgICAgICAgICAgdGhpcy5zd2lwZXJFbGVtZW50LnNldChzd2lwZXJFbGVtQ29uc3RydWN0b3IgYXMgU3dpcGVyQ29udGFpbmVyKVxuICAgICAgICAgICAgICAgIHRoaXMuc3dpcGVyRWxlbWVudCgpPy5pbml0aWFsaXplKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpbmNsdWRlS2V5d29yZCA9ICh3b3JkOnN0cmluZykgPT4ge1xuICAgICAgICBsZXQgcmVzdWx0ID0gZmFsc2VcbiAgICAgICAgdGhpcy5rZXl3b3Jkc1RvQ29tcGFyZS5mb3JFYWNoKCBrZXl3b3JkID0+IHtcbiAgICAgICAgICAgIHdvcmQuaW5jbHVkZXMoa2V5d29yZCkgPyByZXN1bHQgPSB0cnVlIDogbnVsbFxuICAgICAgICB9KVxuICAgICAgICByZXR1cm4gcmVzdWx0XG4gICAgfVxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKGNoYW5nZXNbJ3Byb2R1Y3RJRCddICYmIGNoYW5nZXNbJ3Byb2R1Y3RJRCddLmN1cnJlbnRWYWx1ZSAmJiAhY2hhbmdlc1sncHJvZHVjdElEJ10uZmlyc3RDaGFuZ2UpIHtcbiAgICAgICAgICAgIC8vIFNvbG8gcmVpbmljaWFsaXphciBzaSBlbCBwcm9kdWN0SUQgcmVhbG1lbnRlIGNhbWJpw7MgeSBubyBlcyBsYSBwcmltZXJhIHZlelxuICAgICAgICAgICAgdGhpcy5uZ09uSW5pdCgpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4iLCJcbiJdfQ==
113
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVsYXRlZC1wcm9kdWN0cy1lYy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lYXN5Y29tbWVyY2UtdjE4L3NyYy9saWIvZWMtY29tcG9uZW50cy9yZWxhdGVkLXByb2R1Y3RzLWVjL3JlbGF0ZWQtcHJvZHVjdHMtZWMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLWNvbXBvbmVudHMvcmVsYXRlZC1wcm9kdWN0cy1lYy9yZWxhdGVkLXByb2R1Y3RzLWVjLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBOEIsc0JBQXNCLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBK0IsTUFBTSxlQUFlLENBQUM7QUFDL0osT0FBTyxFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsZUFBZSxFQUFjLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN6RCxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRTdFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBR3hFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDOztBQVU5RCxNQUFNLE9BQU8sMEJBQTJCLFNBQVEsZ0JBQWdCO0lBQ3BELGdCQUFnQixHQUFvQixNQUFNLENBQUMsZUFBZSxDQUFDLENBQUE7SUFDM0QsaUJBQWlCLEdBQXFCLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBO0lBQzlELE9BQU8sR0FBVyxNQUFN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QkFBbEIsS0FBSztnQkFHSCxTQUFTO3NCQUZYLEtBQUs7dUJBQUM7d0JBQ0gsUUFBUSxFQUFFLElBQUk7cUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBpbmplY3QsIElucHV0LCBUZW1wbGF0ZVJlZiwgU2ltcGxlQ2hhbmdlcywgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgc2lnbmFsLCBQTEFURk9STV9JRCwgYWZ0ZXJOZXh0UmVuZGVyICwgT25DaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFuYWx5dGljc1NlcnZpY2UsIFByb2R1Y3RzU2VydmljZSB9IGZyb20gJy4uLy4uL2VjLXNlcnZpY2VzJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCB0YWtlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEFzeW5jUGlwZSwgQ29tbW9uTW9kdWxlLCBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IFByb2R1Y3QgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgUHJvZHVjdEVjQ29tcG9uZW50IH0gZnJvbSAnLi4vcHJvZHVjdC1lYy9wcm9kdWN0LWVjLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFN3aXBlckNvbnRhaW5lciB9IGZyb20gJ3N3aXBlci9lbGVtZW50JztcclxuaW1wb3J0IHsgU3dpcGVyT3B0aW9ucyB9IGZyb20gJ3N3aXBlci90eXBlcyc7XHJcbmltcG9ydCB7IEJsb2NrRWNDb21wb25lbnQgfSBmcm9tICcuLi9hYnN0cmFjdGlvbnMtY29tcG9uZW50cyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnYXBwLXJlbGF0ZWQtcHJvZHVjdHMtZWMnLFxyXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICAgIGltcG9ydHM6IFtBc3luY1BpcGUsIFByb2R1Y3RFY0NvbXBvbmVudCwgQ29tbW9uTW9kdWxlXSxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9yZWxhdGVkLXByb2R1Y3RzLWVjLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsOiAnLi9yZWxhdGVkLXByb2R1Y3RzLWVjLmNvbXBvbmVudC5zY3NzJyxcclxuICAgIHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmVsYXRlZFByb2R1Y3RzRWNDb21wb25lbnQgZXh0ZW5kcyBCbG9ja0VjQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcclxuICAgIHByaXZhdGUgX3Byb2R1Y3RzU2VydmljZTogUHJvZHVjdHNTZXJ2aWNlID0gaW5qZWN0KFByb2R1Y3RzU2VydmljZSlcclxuICAgIHByaXZhdGUgX2FuYWx5dGljc1NlcnZpY2U6IEFuYWx5dGljc1NlcnZpY2UgPSBpbmplY3QoQW5hbHl0aWNzU2VydmljZSlcclxuICAgIHByaXZhdGUgX3JvdXRlcjogUm91dGVyID0gaW5qZWN0KFJvdXRlcilcclxuICAgIFx0LyoqXHJcblx0ICogU2lnbmFsIHV0bGl6YWRvIHBhcmEgZ3VhcmRhIGVsIGNvbnRlbmVkb3IgZGVsIGNhcnJ1c2VsXHJcblx0ICovXHJcblx0c3dpcGVyRWxlbWVudCA9IHNpZ25hbDxTd2lwZXJDb250YWluZXIgfCBudWxsPihudWxsKVxyXG4gICAgLyoqXHJcbiAgICAgKiBJbnB1dCBxdWUgcmVjaWJlIHVuIHRlbXBsYXRlIHBhcmEgZWwgcHJvZHVjdG8uXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIGFwcFByb2R1Y3Q6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XHJcbiAgICBASW5wdXQoe1xyXG4gICAgICAgIHJlcXVpcmVkOiB0cnVlXHJcbiAgICB9KSBwcm9kdWN0SUQ6IGFueTtcclxuXHJcbiAgICAgICAgcHJpdmF0ZSBkb2N1bWVudD86IERvY3VtZW50O1xyXG4gICAgICAgIHByaXZhdGUgcGxhdGZvcm1JZDogYW55ID0gaW5qZWN0KFBMQVRGT1JNX0lEKVxyXG4gICAgXHJcbiAgICBwcml2YXRlIF9yZWxhdGVkUHJvZHVjdHNTdWJqZWN0OkJlaGF2aW9yU3ViamVjdDxQcm9kdWN0W10+ID0gIG5ldyBCZWhhdmlvclN1YmplY3Q8UHJvZHVjdFtdPihbXSlcclxuICAgIHB1YmxpYyByZWxhdGVkUHJvZHVjdHMkOk9ic2VydmFibGU8YW55W10+ID0gdGhpcy5fcmVsYXRlZFByb2R1Y3RzU3ViamVjdC5hc09ic2VydmFibGUoKTtcclxuICAgIHByaXZhdGUga2V5d29yZHNUb0NvbXBhcmU6c3RyaW5nW10gPSBbJ2NvbXBhcmUnLCAnY29tcGFyYXInLCAnY29tcGFyYWNpb24nLCAnY29tcGFyYWNpw7NuJywgJ2NvbXBhcmVkJ107XHJcbiAgICBvdmVycmlkZSBzd2lwZXJPcHRpb25zID0gKCk6IFN3aXBlck9wdGlvbnMgPT4ge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIG5hdmlnYXRpb246IHRydWUsXHJcbiAgICAgICAgICAgIGxvb3A6IHRydWUsXHJcbiAgICAgICAgICAgIGF1dG9IZWlnaHQ6IHRydWUsXHJcbiAgICAgICAgICAgIGF1dG9wbGF5OiB0cnVlLFxyXG4gICAgICAgICAgICBicmVha3BvaW50czoge1xyXG4gICAgICAgICAgICAgICAgMDoge1xyXG4gICAgICAgICAgICAgICAgICAgIHNsaWRlc1BlclZpZXc6IDFcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICA1NzY6IHtcclxuICAgICAgICAgICAgICAgICAgICBzbGlkZXNQZXJWaWV3OiAyXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgNzY4OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgc2xpZGVzUGVyVmlldzogMixcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICA5OTI6IHtcclxuICAgICAgICAgICAgICAgICAgICBzbGlkZXNQZXJWaWV3OiAzLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIDEyMDA6IHtcclxuICAgICAgICAgICAgICAgICAgICBzbGlkZXNQZXJWaWV3OiA0LFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAgICAgc3VwZXIoKVxyXG4gICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnQgPSBkb2N1bWVudFxyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBTd2lwZXIgaW5pdGlhbGl6YXRpb24gbW92ZWQgdG8gaW5pdFN3aXBlcigpIG1ldGhvZCBjYWxsZWQgYWZ0ZXIgZGF0YSBsb2Fkc1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKHRoaXMucHJvZHVjdElEKVxyXG4gICAgICAgIHRoaXMubG9hZCh0aGlzLnByb2R1Y3RJRClcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGxvYWQocHJvZHVjdF9pZDphbnkpIHtcclxuICAgICAgICB0aGlzLl9wcm9kdWN0c1NlcnZpY2UuZ2V0UmVsYXRlZFByb2R1Y3RzKHByb2R1Y3RfaWQpLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICByZXMgPT4ge1xyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ3Jlc3BvbnNlJyxyZXMpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcmVsYXRlZFByb2R1Y3RzOmFueSA9IHJlcy5maWx0ZXIoKGVsZW06YW55KSA9PiAhdGhpcy5pbmNsdWRlS2V5d29yZChlbGVtLnRpdGxlLnRvTG93ZXJDYXNlKCkpKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5fcmVsYXRlZFByb2R1Y3RzU3ViamVjdC5uZXh0KHJlbGF0ZWRQcm9kdWN0cylcclxuICAgICAgICAgICAgICAgIHJlcy5tYXAoKHByb2R1Y3RzOmFueSkgPT4gdGhpcy5fYW5hbHl0aWNzU2VydmljZS5jYWxsRXZlbnQoJ3ZpZXdfaXRlbV9saXN0JywgeyBwcm9kdWN0czogcHJvZHVjdHMuaXRlbXMsIGl0ZW1fbGlzdF9uYW1lOiBwcm9kdWN0cy50aXRsZSB8fCAnUmVsYXRlZCBQcm9kdWN0cycsIGl0ZW1fbGlzdF9pZDogcHJvZHVjdHMuaWQgfHwgJ3JlbGF0ZWQtcHJvZHVjdHMnIH0pKVxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAvLyBJbmljaWFsaXphciBzd2lwZXIgZGVzcHXDqXMgZGUgcXVlIGxvcyBkYXRvcyBlc3TDqW4gZGlzcG9uaWJsZXNcclxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5pdFN3aXBlcigpO1xyXG4gICAgICAgICAgICAgICAgfSwgMTAwKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIClcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGluaXRTd2lwZXIoKSB7XHJcbiAgICAgICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcclxuICAgICAgICAgICAgY29uc3Qgc3dpcGVyRWxlbUNvbnN0cnVjdG9yID0gdGhpcy5kb2N1bWVudD8ucXVlcnlTZWxlY3RvcignI3JlbGF0ZWRQcm9kdWN0c1N3aXBlcicpXHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCdzd2lwZXJFbGVtQ29uc3RydWN0b3InLCBzd2lwZXJFbGVtQ29uc3RydWN0b3IpXHJcbiAgICAgICAgICAgIGlmIChzd2lwZXJFbGVtQ29uc3RydWN0b3IpIHtcclxuICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oc3dpcGVyRWxlbUNvbnN0cnVjdG9yISwgdGhpcy5zd2lwZXJPcHRpb25zKCkpXHJcbiAgICAgICAgICAgICAgICB0aGlzLnN3aXBlckVsZW1lbnQuc2V0KHN3aXBlckVsZW1Db25zdHJ1Y3RvciBhcyBTd2lwZXJDb250YWluZXIpXHJcbiAgICAgICAgICAgICAgICB0aGlzLnN3aXBlckVsZW1lbnQoKT8uaW5pdGlhbGl6ZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGluY2x1ZGVLZXl3b3JkID0gKHdvcmQ6c3RyaW5nKSA9PiB7XHJcbiAgICAgICAgbGV0IHJlc3VsdCA9IGZhbHNlXHJcbiAgICAgICAgdGhpcy5rZXl3b3Jkc1RvQ29tcGFyZS5mb3JFYWNoKCBrZXl3b3JkID0+IHtcclxuICAgICAgICAgICAgd29yZC5pbmNsdWRlcyhrZXl3b3JkKSA/IHJlc3VsdCA9IHRydWUgOiBudWxsXHJcbiAgICAgICAgfSlcclxuICAgICAgICByZXR1cm4gcmVzdWx0XHJcbiAgICB9XHJcbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKGNoYW5nZXNbJ3Byb2R1Y3RJRCddICYmIGNoYW5nZXNbJ3Byb2R1Y3RJRCddLmN1cnJlbnRWYWx1ZSAmJiAhY2hhbmdlc1sncHJvZHVjdElEJ10uZmlyc3RDaGFuZ2UpIHtcclxuICAgICAgICAgICAgLy8gU29sbyByZWluaWNpYWxpemFyIHNpIGVsIHByb2R1Y3RJRCByZWFsbWVudGUgY2FtYmnDsyB5IG5vIGVzIGxhIHByaW1lcmEgdmV6XHJcbiAgICAgICAgICAgIHRoaXMubmdPbkluaXQoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbiIsIlxyXG4iXX0=