simpo-component-library 3.6.446 → 3.6.448

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 (250) hide show
  1. package/README.md +24 -24
  2. package/esm2022/lib/components/delete-hover-element/delete-hover-element.component.mjs +3 -3
  3. package/esm2022/lib/components/document/document.component.mjs +3 -3
  4. package/esm2022/lib/components/image-loading/image-loading.component.mjs +3 -3
  5. package/esm2022/lib/components/payment-details/payment-details.component.mjs +3 -3
  6. package/esm2022/lib/constants/business.constant.mjs +1 -1
  7. package/esm2022/lib/directive/alignment.directive.mjs +1 -1
  8. package/esm2022/lib/directive/blur-content.directive.mjs +1 -1
  9. package/esm2022/lib/directive/borderlessImage.directive.mjs +1 -1
  10. package/esm2022/lib/directive/button-directive.directive.mjs +1 -1
  11. package/esm2022/lib/directive/button-editor.directive.mjs +1 -1
  12. package/esm2022/lib/directive/color.directive.mjs +1 -1
  13. package/esm2022/lib/directive/column-directive.directive.mjs +1 -1
  14. package/esm2022/lib/directive/container-alignment.directive.mjs +1 -1
  15. package/esm2022/lib/directive/container-fir.directive.mjs +1 -1
  16. package/esm2022/lib/directive/content-title-spacing.directive.mjs +1 -1
  17. package/esm2022/lib/directive/contenteditable.directive.mjs +1 -1
  18. package/esm2022/lib/directive/corner-directive.mjs +1 -1
  19. package/esm2022/lib/directive/height.directive.mjs +1 -1
  20. package/esm2022/lib/directive/hover-animation.directive.mjs +1 -1
  21. package/esm2022/lib/directive/hoverborder.directive.mjs +1 -1
  22. package/esm2022/lib/directive/icon-directive.directive.mjs +1 -1
  23. package/esm2022/lib/directive/image-container.directive.mjs +1 -1
  24. package/esm2022/lib/directive/image-directive.directive.mjs +2 -2
  25. package/esm2022/lib/directive/image-editor.directive.mjs +1 -1
  26. package/esm2022/lib/directive/image-position.directive.mjs +1 -1
  27. package/esm2022/lib/directive/merge-header.directive.mjs +1 -1
  28. package/esm2022/lib/directive/position-layout-directive.directive.mjs +1 -1
  29. package/esm2022/lib/directive/set-dynamic-background.directive.mjs +1 -1
  30. package/esm2022/lib/directive/spacing-around.directive.mjs +3 -3
  31. package/esm2022/lib/directive/spacing-horizontal.directive.mjs +4 -4
  32. package/esm2022/lib/directive/spacing.directive.mjs +1 -1
  33. package/esm2022/lib/directive/sticky-directive.mjs +1 -1
  34. package/esm2022/lib/directive/text-background-directive.directive.mjs +1 -1
  35. package/esm2022/lib/directive/text-size.directive.mjs +1 -1
  36. package/esm2022/lib/directive/translate-onhover.directive.mjs +3 -3
  37. package/esm2022/lib/directive/wrap-containers.directive.mjs +1 -1
  38. package/esm2022/lib/ecommerce/sections/address/address.component.mjs +3 -3
  39. package/esm2022/lib/ecommerce/sections/authenticate-user/authenticate-user.component.mjs +3 -3
  40. package/esm2022/lib/ecommerce/sections/authentication-required/authentication-required.component.mjs +3 -19
  41. package/esm2022/lib/ecommerce/sections/authentication-required/authentication-required.model.mjs +1 -1
  42. package/esm2022/lib/ecommerce/sections/book-appointment/book-appointment.component.mjs +3 -3
  43. package/esm2022/lib/ecommerce/sections/book-appointment/book-appointment.model.mjs +1 -1
  44. package/esm2022/lib/ecommerce/sections/cart/cart.component.mjs +3 -3
  45. package/esm2022/lib/ecommerce/sections/cart/cart.modal.mjs +1 -1
  46. package/esm2022/lib/ecommerce/sections/category-product/category-product.component.mjs +3 -3
  47. package/esm2022/lib/ecommerce/sections/category-product/category-product.model.mjs +1 -1
  48. package/esm2022/lib/ecommerce/sections/checkout/checkout.component.mjs +3 -3
  49. package/esm2022/lib/ecommerce/sections/checkout/checkout.modal.mjs +1 -1
  50. package/esm2022/lib/ecommerce/sections/customer-review/customer-review.component.mjs +3 -3
  51. package/esm2022/lib/ecommerce/sections/customer-review/customer-review.model.mjs +1 -1
  52. package/esm2022/lib/ecommerce/sections/enrollment-form/enrollment-form.component.mjs +3 -3
  53. package/esm2022/lib/ecommerce/sections/enrollment-form/enrollment-form.model.mjs +1 -1
  54. package/esm2022/lib/ecommerce/sections/featured-category/featured-category.component.mjs +3 -3
  55. package/esm2022/lib/ecommerce/sections/featured-category/featured-category.modal.mjs +1 -1
  56. package/esm2022/lib/ecommerce/sections/featured-category/featured-collection.component.mjs +3 -3
  57. package/esm2022/lib/ecommerce/sections/featured-products/featured-products.component.mjs +3 -3
  58. package/esm2022/lib/ecommerce/sections/featured-products/featured-products.modal.mjs +1 -1
  59. package/esm2022/lib/ecommerce/sections/item-varient/item-varient.component.mjs +3 -3
  60. package/esm2022/lib/ecommerce/sections/new-collection/new-collection.component.mjs +3 -3
  61. package/esm2022/lib/ecommerce/sections/new-collection/new-collection.modal.mjs +1 -1
  62. package/esm2022/lib/ecommerce/sections/order-details/order-details.component.mjs +3 -3
  63. package/esm2022/lib/ecommerce/sections/pagnination/pagnination.component.mjs +3 -3
  64. package/esm2022/lib/ecommerce/sections/product-category-list/product-category-list.component.mjs +3 -3
  65. package/esm2022/lib/ecommerce/sections/product-category-list/product-category-list.model.mjs +1 -1
  66. package/esm2022/lib/ecommerce/sections/product-desc/product-desc.component.mjs +3 -3
  67. package/esm2022/lib/ecommerce/sections/product-desc/product-desc.modal.mjs +1 -1
  68. package/esm2022/lib/ecommerce/sections/product-list/product-list.component.mjs +3 -3
  69. package/esm2022/lib/ecommerce/sections/product-list/product-list.modal.mjs +1 -1
  70. package/esm2022/lib/ecommerce/sections/returns-calculator/returns-calculator.component.mjs +18 -227
  71. package/esm2022/lib/ecommerce/sections/returns-calculator/returns-calculator.model.mjs +1 -1
  72. package/esm2022/lib/ecommerce/sections/scheme-details/scheme-details.component.mjs +14 -193
  73. package/esm2022/lib/ecommerce/sections/scheme-selection/scheme-selection.component.mjs +3 -3
  74. package/esm2022/lib/ecommerce/sections/small-product-listing/small-product-listing.component.mjs +3 -3
  75. package/esm2022/lib/ecommerce/sections/store-list/store-list.component.mjs +3 -3
  76. package/esm2022/lib/ecommerce/sections/store-list/store-list.modal.mjs +1 -1
  77. package/esm2022/lib/ecommerce/sections/store-page/store-page.component.mjs +3 -3
  78. package/esm2022/lib/ecommerce/sections/store-page/store-page.model.mjs +1 -1
  79. package/esm2022/lib/ecommerce/sections/user-basic-info/user-basic-info.component.mjs +3 -3
  80. package/esm2022/lib/ecommerce/sections/user-profile/user-profile.component.mjs +22 -179
  81. package/esm2022/lib/ecommerce/sections/user-profile/user-profile.modal.mjs +1 -1
  82. package/esm2022/lib/ecommerce/sections/verify-payment/verify-payment.component.mjs +31 -90
  83. package/esm2022/lib/ecommerce/sections/verify-payment/verify-payment.model.mjs +1 -1
  84. package/esm2022/lib/ecommerce/sections/whislist/whislist.component.mjs +3 -3
  85. package/esm2022/lib/ecommerce/styles/BaseCollection.modal.mjs +1 -1
  86. package/esm2022/lib/ecommerce/styles/Collection.modal.mjs +1 -1
  87. package/esm2022/lib/ecommerce/styles/OrderedItems.modal.mjs +1 -1
  88. package/esm2022/lib/ecommerce/styles/PincodeLocation.model.mjs +1 -1
  89. package/esm2022/lib/ecommerce/styles/PincodeLocationInter.model.mjs +1 -1
  90. package/esm2022/lib/ecommerce/styles/cart.modal.mjs +1 -1
  91. package/esm2022/lib/ecommerce/styles/category.modal.mjs +1 -1
  92. package/esm2022/lib/ecommerce/styles/order.modal.mjs +1 -1
  93. package/esm2022/lib/ecommerce/styles/product.modal.mjs +1 -1
  94. package/esm2022/lib/ecommerce/styles/review.modal.mjs +1 -1
  95. package/esm2022/lib/ecommerce/styles/user.modal.mjs +1 -1
  96. package/esm2022/lib/elements/add-section/add-section.component.mjs +5 -15
  97. package/esm2022/lib/elements/address-list/address-list.component.mjs +3 -3
  98. package/esm2022/lib/elements/below-image-card/below-image-card.component.mjs +3 -3
  99. package/esm2022/lib/elements/button/button.component.mjs +3 -3
  100. package/esm2022/lib/elements/button/button.model.mjs +1 -1
  101. package/esm2022/lib/elements/card-skeleton-loader/card-skeleton-loader.component.mjs +3 -3
  102. package/esm2022/lib/elements/covering-image-card/covering-image-card.component.mjs +3 -3
  103. package/esm2022/lib/elements/editor-service.service.mjs +6 -29
  104. package/esm2022/lib/elements/heading-element/heading-element.component.mjs +3 -3
  105. package/esm2022/lib/elements/image-editor/image-editor.component.mjs +3 -3
  106. package/esm2022/lib/elements/index.mjs +1 -1
  107. package/esm2022/lib/elements/link-editor/link-editor.component.mjs +3 -3
  108. package/esm2022/lib/elements/list-home-appointment/list-home-appointment.component.mjs +3 -3
  109. package/esm2022/lib/elements/media-selector/media-selector.component.mjs +3 -3
  110. package/esm2022/lib/elements/navbar-button-element/navbar-button-element.component.mjs +3 -3
  111. package/esm2022/lib/elements/portfolio/portfolio.component.mjs +3 -3
  112. package/esm2022/lib/elements/pricing-s1/pricing-s1.component.mjs +3 -3
  113. package/esm2022/lib/elements/property/property.component.mjs +3 -3
  114. package/esm2022/lib/elements/schedule-video-call/schedule-video-call.component.mjs +3 -3
  115. package/esm2022/lib/elements/simpo-button/simpo-button.component.mjs +3 -3
  116. package/esm2022/lib/elements/svg-divider/svg-divider.component.mjs +3 -3
  117. package/esm2022/lib/elements/text/text.component.mjs +3 -3
  118. package/esm2022/lib/elements/text-editor/text-editor.component.mjs +3 -3
  119. package/esm2022/lib/elements/top-of-image-card/top-of-image-card.component.mjs +3 -3
  120. package/esm2022/lib/pipes/amount.pipe.mjs +1 -1
  121. package/esm2022/lib/pipes/gender.pipe.mjs +1 -1
  122. package/esm2022/lib/sections/BaseSection.mjs +1 -1
  123. package/esm2022/lib/sections/add-new-section/add-new-section.component.mjs +3 -3
  124. package/esm2022/lib/sections/appointment-form/appointment-form.component.mjs +3 -3
  125. package/esm2022/lib/sections/appointment-form/appointment-form.model.mjs +1 -1
  126. package/esm2022/lib/sections/banner-carousel/banner-carousel.component.mjs +3 -3
  127. package/esm2022/lib/sections/banner-carousel/banner-carousel.model.mjs +1 -1
  128. package/esm2022/lib/sections/banner-grid-section/banner-grid-section.component.mjs +3 -3
  129. package/esm2022/lib/sections/banner-section/banner-section.component.mjs +13 -3
  130. package/esm2022/lib/sections/banner-section/banner-section.model.mjs +1 -1
  131. package/esm2022/lib/sections/blog-list/blog-list.component.mjs +4 -4
  132. package/esm2022/lib/sections/blog-list/blog-list.model.mjs +1 -1
  133. package/esm2022/lib/sections/choose-us-section/choose-us-section.component.mjs +3 -3
  134. package/esm2022/lib/sections/choose-us-section/choose-us-section.model.mjs +1 -1
  135. package/esm2022/lib/sections/faq-section/faq-section.component.mjs +3 -3
  136. package/esm2022/lib/sections/faq-section/faq-section.modal.mjs +1 -1
  137. package/esm2022/lib/sections/features-section/features-section.component.mjs +3 -3
  138. package/esm2022/lib/sections/features-section/features-section.model.mjs +1 -1
  139. package/esm2022/lib/sections/footer/footer.component.mjs +3 -3
  140. package/esm2022/lib/sections/footer/footer.modal.mjs +1 -1
  141. package/esm2022/lib/sections/header-section/header-section.component.mjs +39 -35
  142. package/esm2022/lib/sections/header-section/header-section.model.mjs +1 -1
  143. package/esm2022/lib/sections/header-text/header-text.component.mjs +3 -3
  144. package/esm2022/lib/sections/header-text/header-text.model.mjs +1 -1
  145. package/esm2022/lib/sections/image-carousel-section/image-carousel-section.component.mjs +3 -3
  146. package/esm2022/lib/sections/image-carousel-section/image-carousel.model.mjs +1 -1
  147. package/esm2022/lib/sections/image-grid-section/image-grid-section.component.mjs +3 -3
  148. package/esm2022/lib/sections/image-grid-section/image-grid-section.model.mjs +1 -1
  149. package/esm2022/lib/sections/image-section/image-section.component.mjs +3 -3
  150. package/esm2022/lib/sections/image-section/image-section.model.mjs +1 -1
  151. package/esm2022/lib/sections/location-section/location-section.component.mjs +3 -3
  152. package/esm2022/lib/sections/location-section/location-section.modal.mjs +1 -1
  153. package/esm2022/lib/sections/logo-showcase/logo-showcase.component.mjs +3 -3
  154. package/esm2022/lib/sections/logo-showcase/logo-showcase.modal.mjs +1 -1
  155. package/esm2022/lib/sections/moving-text/moving-text.component.mjs +3 -3
  156. package/esm2022/lib/sections/moving-text/moving-text.modal.mjs +1 -1
  157. package/esm2022/lib/sections/new-services/new-services.component.mjs +3 -3
  158. package/esm2022/lib/sections/new-services/new-services.model.mjs +1 -1
  159. package/esm2022/lib/sections/new-testimonials/new-testimonials.component.mjs +3 -3
  160. package/esm2022/lib/sections/new-testimonials/new-testimonials.model.mjs +1 -1
  161. package/esm2022/lib/sections/news-letter-component/news-letter-component.component.mjs +3 -3
  162. package/esm2022/lib/sections/news-letter-component/news-letter.modal.mjs +1 -1
  163. package/esm2022/lib/sections/pricing-section/pricing-section.component.mjs +3 -3
  164. package/esm2022/lib/sections/pricing-section/pricing-section.modal.mjs +1 -1
  165. package/esm2022/lib/sections/process-modern/process-modern.component.mjs +3 -3
  166. package/esm2022/lib/sections/process-modern/process-modern.model.mjs +1 -1
  167. package/esm2022/lib/sections/process-section/process-section.component.mjs +3 -3
  168. package/esm2022/lib/sections/process-section/process-section.modal.mjs +1 -1
  169. package/esm2022/lib/sections/property-component/property-component.component.mjs +3 -3
  170. package/esm2022/lib/sections/property-component/property-component.modal.mjs +1 -1
  171. package/esm2022/lib/sections/property-list/property-list.component.mjs +3 -3
  172. package/esm2022/lib/sections/property-list/property-list.modal.mjs +1 -1
  173. package/esm2022/lib/sections/recent-blog-post-section/recent-blog-post-section.component.mjs +3 -3
  174. package/esm2022/lib/sections/recent-blog-post-section/recent-blog-post-section.model.mjs +1 -1
  175. package/esm2022/lib/sections/registration-form/registration-form.component.mjs +3 -3
  176. package/esm2022/lib/sections/registration-form/registrationForm.model.mjs +1 -1
  177. package/esm2022/lib/sections/service-section/service-section.component.mjs +3 -3
  178. package/esm2022/lib/sections/service-section/service-section.model.mjs +1 -1
  179. package/esm2022/lib/sections/skeleton-loader-section/skeleton-loader-section.component.mjs +3 -3
  180. package/esm2022/lib/sections/team-member-section/team-member-section.component.mjs +3 -3
  181. package/esm2022/lib/sections/team-member-section/team-member-section.model.mjs +1 -1
  182. package/esm2022/lib/sections/testimonial-fullwidth/testimonial-fullwidth.component.mjs +3 -3
  183. package/esm2022/lib/sections/testimonial-fullwidth/testimonial-fullwidth.model.mjs +1 -1
  184. package/esm2022/lib/sections/testimonial-section/testimonial-section.component.mjs +3 -3
  185. package/esm2022/lib/sections/testimonial-section/testimonial-section.model.mjs +1 -1
  186. package/esm2022/lib/sections/testimonial-video/testimonial-video.component.mjs +3 -3
  187. package/esm2022/lib/sections/testimonial-video/testimonial-video.model.mjs +1 -1
  188. package/esm2022/lib/sections/text-section/text-section.component.mjs +3 -3
  189. package/esm2022/lib/sections/text-section/text-section.model.mjs +1 -1
  190. package/esm2022/lib/sections/usp-video-section/usp-video-section.component.mjs +3 -3
  191. package/esm2022/lib/sections/usp-video-section/usp-video-section.model.mjs +1 -1
  192. package/esm2022/lib/sections/video-section/video-section.component.mjs +3 -3
  193. package/esm2022/lib/sections/video-section/video-section.model.mjs +1 -1
  194. package/esm2022/lib/sections/view-blog/view-blog.component.mjs +3 -3
  195. package/esm2022/lib/services/cart.service.mjs +1 -1
  196. package/esm2022/lib/services/endUser.service.mjs +1 -1
  197. package/esm2022/lib/services/image-upload-service.service.mjs +1 -1
  198. package/esm2022/lib/services/rest.service.mjs +10 -102
  199. package/esm2022/lib/services/sanitizeHtml.mjs +1 -1
  200. package/esm2022/lib/services/storage.service.mjs +35 -59
  201. package/esm2022/lib/styles/index.mjs +1 -2
  202. package/esm2022/lib/styles/style.model.mjs +1 -1
  203. package/esm2022/lib/styles/types.mjs +1 -1
  204. package/esm2022/lib/tokens/api-token.mjs +1 -1
  205. package/esm2022/public-api.mjs +1 -5
  206. package/fesm2022/simpo-component-library.mjs +438 -1563
  207. package/fesm2022/simpo-component-library.mjs.map +1 -1
  208. package/lib/ecommerce/sections/authentication-required/authentication-required.component.d.ts +1 -2
  209. package/lib/ecommerce/sections/product-desc/product-desc.component.d.ts +1 -1
  210. package/lib/ecommerce/sections/returns-calculator/returns-calculator.component.d.ts +3 -41
  211. package/lib/ecommerce/sections/scheme-details/scheme-details.component.d.ts +3 -35
  212. package/lib/ecommerce/sections/user-profile/user-profile.component.d.ts +2 -19
  213. package/lib/ecommerce/sections/verify-payment/verify-payment.component.d.ts +0 -4
  214. package/lib/elements/editor-service.service.d.ts +1 -4
  215. package/lib/elements/link-editor/link-editor.component.d.ts +1 -1
  216. package/lib/elements/pricing-s1/pricing-s1.component.d.ts +1 -1
  217. package/lib/sections/banner-carousel/banner-carousel.component.d.ts +2 -2
  218. package/lib/sections/banner-section/banner-section.component.d.ts +4 -1
  219. package/lib/sections/banner-section/banner-section.model.d.ts +2 -1
  220. package/lib/sections/carousel-banner/carousel-banner.component.d.ts +1 -1
  221. package/lib/sections/contact-us/contact-us.component.d.ts +1 -1
  222. package/lib/sections/faq-section/faq-section.component.d.ts +1 -1
  223. package/lib/sections/header-section/header-section.component.d.ts +1 -6
  224. package/lib/sections/image-section/image-section.component.d.ts +2 -2
  225. package/lib/sections/logo-showcase/logo-showcase.component.d.ts +1 -1
  226. package/lib/sections/new-testimonials/new-testimonials.component.d.ts +1 -1
  227. package/lib/sections/pricing-section/pricing-section.component.d.ts +1 -1
  228. package/lib/services/rest.service.d.ts +2 -21
  229. package/lib/services/storage.service.d.ts +1 -4
  230. package/lib/styles/index.d.ts +1 -2
  231. package/lib/styles/style.model.d.ts +5 -0
  232. package/package.json +1 -1
  233. package/public-api.d.ts +0 -4
  234. package/simpo-component-library-3.6.448.tgz +0 -0
  235. package/src/lib/styles/global-styles.css +272 -272
  236. package/esm2022/lib/ecommerce/sections/passbook-transactions/passbook-transactions.component.mjs +0 -37
  237. package/esm2022/lib/ecommerce/sections/schemes/schemes.component.mjs +0 -108
  238. package/esm2022/lib/ecommerce/sections/schemes/schemes.component.model.mjs +0 -2
  239. package/esm2022/lib/sections/scheme-detail/scheme-detail.component.mjs +0 -265
  240. package/esm2022/lib/sections/scheme-detail/scheme-detail.modal.mjs +0 -2
  241. package/esm2022/lib/services/local-storage.token.mjs +0 -23
  242. package/esm2022/lib/services/storage-like.mjs +0 -2
  243. package/lib/ecommerce/sections/passbook-transactions/passbook-transactions.component.d.ts +0 -14
  244. package/lib/ecommerce/sections/schemes/schemes.component.d.ts +0 -28
  245. package/lib/ecommerce/sections/schemes/schemes.component.model.d.ts +0 -21
  246. package/lib/sections/scheme-detail/scheme-detail.component.d.ts +0 -68
  247. package/lib/sections/scheme-detail/scheme-detail.modal.d.ts +0 -17
  248. package/lib/services/local-storage.token.d.ts +0 -3
  249. package/lib/services/storage-like.d.ts +0 -8
  250. package/simpo-component-library-3.6.446.tgz +0 -0
@@ -1,265 +0,0 @@
1
- import { Component, HostListener, Input, ViewChild } from '@angular/core';
2
- import { CdkDragPlaceholder } from "@angular/cdk/drag-drop";
3
- import { CommonModule } from '@angular/common';
4
- import { FormsModule } from '@angular/forms';
5
- import { TextEditorComponent } from '../../elements/text-editor/text-editor.component';
6
- import { SpacingHorizontalDirective } from '../../directive/spacing-horizontal.directive';
7
- import { ButtonEditorDirective } from '../../directive/button-editor.directive';
8
- import { MatIcon } from '@angular/material/icon';
9
- import { MatDialog, MatDialogModule } from '@angular/material/dialog';
10
- import { ButtonDirectiveDirective } from '../../directive/button-directive.directive';
11
- import { MatProgressSpinner } from "@angular/material/progress-spinner";
12
- import { MessageService } from 'primeng/api';
13
- import { ToastModule } from 'primeng/toast';
14
- import * as i0 from "@angular/core";
15
- import * as i1 from "@angular/router";
16
- import * as i2 from "../../services/rest.service";
17
- import * as i3 from "../../services/storage.service";
18
- import * as i4 from "@angular/material/dialog";
19
- import * as i5 from "../../services/events.service";
20
- import * as i6 from "primeng/api";
21
- import * as i7 from "@angular/common";
22
- import * as i8 from "@angular/forms";
23
- import * as i9 from "primeng/toast";
24
- export class SchemeDetailComponent {
25
- constructor(activeRoute, restService, storageService, matDialog, router, _eventService, messageService) {
26
- this.activeRoute = activeRoute;
27
- this.restService = restService;
28
- this.storageService = storageService;
29
- this.matDialog = matDialog;
30
- this.router = router;
31
- this._eventService = _eventService;
32
- this.messageService = messageService;
33
- this.data = null;
34
- this.edit = true;
35
- this.scrollToTermsAndCondition = false;
36
- this.Object = Object;
37
- this.stores = [];
38
- this.staffMembers = [];
39
- this.minAmount = 1000;
40
- this.maxAmount = 100000;
41
- this.monthlyAmount = 0;
42
- this.installmentOptions = [];
43
- this.maturityCount = 10;
44
- this.benefitAmount = 0;
45
- this.purchasedGram = 0;
46
- this.currentGoldRate = 0;
47
- this.termsAndCondition = false;
48
- this.enrollButtonLoader = false;
49
- this.screenWidth = 0;
50
- this.faqList = [];
51
- }
52
- ngOnInit() {
53
- this.getScreenSize();
54
- this.styles = this.data?.styles;
55
- this.activeRoute.queryParams.subscribe(params => {
56
- if (params['schemeId']) {
57
- this.getSchemeDetails(params['schemeId']);
58
- }
59
- if (params['termsAndCondition'])
60
- this.scrollToTermsAndCondition = true;
61
- });
62
- }
63
- getKeys(obj) {
64
- return Object.keys(obj ?? {});
65
- }
66
- get stylesLayout() {
67
- return { ...this.styles?.layout };
68
- }
69
- getButtonData(index) {
70
- return this.data?.action?.buttons[index]?.content;
71
- }
72
- getButtonId(index) {
73
- return this.data?.action?.buttons[index]?.id ?? "";
74
- }
75
- getButtonStyle(index) {
76
- return this.data?.action?.buttons[index]?.styles;
77
- }
78
- get getInputText() {
79
- return this.data?.content?.inputText?.[0]?.value ?? "";
80
- }
81
- getScreenSize(event) {
82
- this.screenWidth = window.innerWidth;
83
- }
84
- getStaffList() {
85
- this.restService.getAllStaffList().subscribe({
86
- next: (res) => {
87
- this.staffMembers = res?.data?.data ? res?.data?.data : [];
88
- console.log(this.staffMembers);
89
- },
90
- error: (err) => {
91
- console.log(err);
92
- }
93
- });
94
- }
95
- onAmountChange() {
96
- if (Object.keys(this.schemeDetails.jewellerBenefit).length > 0) {
97
- const values = Object.values(this.schemeDetails.jewellerBenefit);
98
- const highestValue = Math.max(...Object.values(values));
99
- if (this.schemeDetails.benefitType === "PERCENT_ON_MONTH") {
100
- this.benefitAmount = (this.monthlyAmount * highestValue) / 100;
101
- }
102
- else if (this.schemeDetails.benefitType === "SCHEME") {
103
- this.benefitAmount = ((this.monthlyAmount * this.maturityCount) * highestValue) / 100;
104
- }
105
- else if (this.schemeDetails.benefitType === "DISCOUNT") {
106
- this.benefitAmount = ((this.monthlyAmount * this.maturityCount) * highestValue) / 100;
107
- }
108
- }
109
- this.purchasedGram = Number((this.monthlyAmount / this.currentGoldRate).toFixed(2));
110
- }
111
- setMonthlyAmount(amount) {
112
- this.installmentOptions.forEach((option) => {
113
- if (option.value == amount?.value) {
114
- option.status = true;
115
- this.monthlyAmount = amount?.value;
116
- }
117
- else {
118
- option.status = false;
119
- }
120
- });
121
- this.onAmountChange();
122
- }
123
- getSchemeDetails(schemeId) {
124
- this.restService.getSchemeDetails(schemeId).subscribe((res) => {
125
- if (res && res.data) {
126
- this.getStaffList();
127
- this.schemeDetails = res.data;
128
- console.log(this.schemeDetails);
129
- this.minAmount = this.schemeDetails?.minInstallmentValue;
130
- this.maxAmount = this.schemeDetails?.maxInstallmentValue;
131
- this.monthlyAmount = this.minAmount;
132
- this.schemeDetails?.suggestedValues?.forEach((scheme) => this.installmentOptions.push({ status: false, value: scheme }));
133
- this.maturityCount = this.schemeDetails?.maturityCount ? this.schemeDetails.maturityCount : this.maturityCount;
134
- this.stores = this.schemeDetails?.storeList ? this.schemeDetails.storeList : [];
135
- this.getMetalPrice();
136
- this.faqList = this.schemeDetails?.faqs ? this.schemeDetails?.faqs : [];
137
- this.faqList.forEach(faq => faq.showAnswer = false);
138
- if (this.scrollToTermsAndCondition)
139
- this.scrollDown();
140
- }
141
- });
142
- }
143
- enrollScheme(scheme) {
144
- if (!this.termsAndCondition) {
145
- this.messageService.add({ severity: 'error', summary: 'Terms & Condition', detail: 'Please accept terms & condition' });
146
- return;
147
- }
148
- this.enrollButtonLoader = true;
149
- const userDetails = this.storageService.getUser();
150
- let payload = {
151
- userBasicDetails: {
152
- customer_id: userDetails?.userId,
153
- customer_name: userDetails?.contact?.name,
154
- customer_phone: userDetails?.contact?.mobile,
155
- customer_email: userDetails?.contact?.email,
156
- },
157
- schemeId: scheme?.id,
158
- schemeName: scheme?.schemeName,
159
- earlyRedemptionCharge: scheme?.enrollmentFees,
160
- installmentAmount: this.monthlyAmount,
161
- storeRefId: scheme?.schemeRepresentativeId,
162
- storeId: this.stores.length < 2 ? this.stores[0].id : this.selectedStore?.id,
163
- staffId: this.staffMembers.length < 2 ? this.staffMembers[0].id : this.selectedStaff?.id,
164
- staffName: this.staffMembers.length < 2 ? this.staffMembers[0].name : this.selectedStaff?.name,
165
- storeName: this.stores.length < 2 ? this.stores[0].name : this.selectedStore?.name,
166
- maturityCount: scheme?.maturityCount,
167
- jewellerBenefit: scheme?.jewellerBenefit,
168
- dueMonths: scheme?.maturityCount,
169
- businessId: scheme?.businessId,
170
- businessName: scheme?.businessName,
171
- enableEarlyRedemption: scheme?.enableEarlyRedemption,
172
- redemptionSlabList: scheme?.redemptionSlabList,
173
- schemeType: scheme?.schemeType,
174
- metalType: scheme?.metalType,
175
- karatType: scheme?.karatType,
176
- customerAccount: ""
177
- };
178
- if (userDetails != null) {
179
- this.restService.enrollScheme(payload, true).subscribe({
180
- next: (response) => {
181
- this.enrollButtonLoader = false;
182
- if (response.data.cashfreeResponse != null) {
183
- this.continuePayment(payload);
184
- }
185
- else {
186
- this.storeCharges = response.data.cart;
187
- this.dialogRef = this.matDialog.open(this.showChargesTemplate, {
188
- panelClass: 'show-charges-class'
189
- });
190
- this.dialogRef.afterClosed().subscribe((res) => {
191
- if (res === 'SUCCESS')
192
- this.continuePayment(payload);
193
- });
194
- }
195
- },
196
- error: (err) => {
197
- this.enrollButtonLoader = false;
198
- if (err?.error?.message) {
199
- }
200
- }
201
- });
202
- }
203
- else {
204
- this.router.navigate(['/login'], { queryParams: { schemeDetail: 'scheme-detail' } });
205
- }
206
- }
207
- closeDialog(action) {
208
- this.dialogRef.close(action);
209
- }
210
- continuePayment(payload) {
211
- this.restService.enrollScheme(payload, false).subscribe({
212
- next: (response) => {
213
- localStorage.setItem('passbookOrderId', response.data.orderId);
214
- this.openCashfreeSdk(response.data.sessionId);
215
- },
216
- error: (error) => { }
217
- });
218
- }
219
- openCashfreeSdk(sessionId) {
220
- this._eventService.cashFreeEvent.emit({ data: { orderSignature: sessionId } });
221
- }
222
- getMetalPrice() {
223
- let storeId = this.stores.length < 2 ? this.stores[0].id : this.selectedStore?.id;
224
- if (!storeId)
225
- return;
226
- this.restService.getMetalPrice(storeId).subscribe((res) => {
227
- this.metalPrice = res.data;
228
- for (let gold of this.metalPrice?.priceData ?? []) {
229
- if (gold.karats === this.schemeDetails.karatType) {
230
- this.currentGoldRate = gold.price;
231
- this.purchasedGram = Number((this.monthlyAmount / this.currentGoldRate).toFixed(2));
232
- return;
233
- }
234
- }
235
- });
236
- }
237
- get isMobile() {
238
- return window.innerWidth <= 475;
239
- }
240
- scrollDown() {
241
- const el = document.getElementById('termsAndCondition');
242
- if (el) {
243
- el.scrollIntoView({ behavior: 'smooth' });
244
- }
245
- }
246
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SchemeDetailComponent, deps: [{ token: i1.ActivatedRoute }, { token: i2.RestService }, { token: i3.StorageServiceService }, { token: i4.MatDialog }, { token: i1.Router }, { token: i5.EventsService }, { token: i6.MessageService }], target: i0.ɵɵFactoryTarget.Component }); }
247
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SchemeDetailComponent, isStandalone: true, selector: "simpo-scheme-detail", inputs: { data: "data", index: "index", edit: "edit" }, host: { listeners: { "window:resize": "getScreenSize($event)" } }, providers: [MatDialog, MessageService], viewQueries: [{ propertyName: "showChargesTemplate", first: true, predicate: ["showCharges"], descendants: true, static: true }], ngImport: i0, template: "<p-toast position=\"bottom-right\" [baseZIndex]=\"10000000000\" [autoZIndex]=\"true\"\n [showTransformOptions]=\"isMobile ? 'translateY(-100%)' : ''\"></p-toast>\n\n\n<section class=\"main_section w-100\" [spacingHorizontal]=\"stylesLayout\" [id]=\"data?.id\">\n <div class=\"about_plan_section p-5 d-flex flex-column align-items-center justify-content-center\">\n <ng-container *ngTemplateOutlet=\"aboutUsTemplate\"></ng-container>\n </div>\n <div class=\"scheme_calculator_section p-5 d-flex flex-column align-items-center justify-content-center\">\n <ng-container *ngTemplateOutlet=\"schemeCalculator\"></ng-container>\n </div>\n <div class=\"faq_section p-5\" *ngIf=\"faqList.length > 0\">\n <ng-container *ngTemplateOutlet=\"faqTemplate\"></ng-container>\n </div>\n <div class=\"terms_condition_section p-5\"\n *ngIf=\"schemeDetails?.termsAndConditions && schemeDetails?.termsAndConditions != {}\">\n <ng-container *ngTemplateOutlet=\"termsAndConditions\"></ng-container>\n </div>\n</section>\n<ng-template #aboutUsTemplate>\n <div class=\"d-flex flex-column gap-3\">\n <div class=\"text_header d-flex align-items-center justify-content-center\">\n <simpo-text-editor [(value)]=\"getInputText\" [editable]=\"edit || false\"></simpo-text-editor>\n </div>\n <div class=\"desc_text\">\n {{schemeDetails?.about}}\n </div>\n </div>\n</ng-template>\n<ng-template #schemeCalculator>\n <div class=\"d-flex flex-column align-items-center\">\n <div class=\"calc_header d-flex flex-column align-items-center justify-content-center\">\n <span>Calculate Your Returns</span>\n <div class=\"calc_desc\">\n See how your savings grow with our smart investment schemes. choose your preferred scheme and discover\n your potential returns.\n </div>\n </div>\n <div class=\"calculator_section\">\n <div class=\"gold-purity\"\n *ngIf=\"schemeDetails?.schemeType === 'GOLD_PROTECTION' && (stores.length == 1 || selectedStore?.id)\">\n <div class=\"purity\" *ngFor=\"let gold of metalPrice?.priceData ?? []\">\n <img src=\"https://jewellers.stage.passbookapp.in/assets/images/gold-scheme/24k_gold_pic.svg\" alt=\"\">\n <div>\n <div>{{gold?.karats?.replaceAll('_', \"\")}} Gold Purity</div>\n <div class=\"gold-price\">\u20B9{{gold.price}}</div>\n </div>\n </div>\n </div>\n <div class=\"sub-header mb-3 px-3 monthly-scheme\">\n <h6 class=\"mb-0 sub-header-text\">Select Your Monthly Investment Amount</h6>\n <p class=\"enrolled-gram\"\n *ngIf=\"schemeDetails?.schemeType === 'GOLD_PROTECTION' && (stores.length == 1 || selectedStore?.id)\">\n {{purchasedGram}} gms</p>\n </div>\n\n <div class=\"calculate-slider mb-4 px-3\">\n <div class=\"slider-container position-relative\">\n <input type=\"range\" class=\"form-range custom-range\" [min]=\"minAmount\" [max]=\"maxAmount\"\n [step]=\"schemeDetails?.valueStep\" [(ngModel)]=\"monthlyAmount\" (ngModelChange)=\"onAmountChange()\">\n <div class=\"slider-labels d-flex justify-content-between mt-2\">\n <span class=\"fw-bold\">\u20B9{{minAmount | number}}</span>\n <span class=\"fw-bold\">\u20B9{{maxAmount | number}}</span>\n </div>\n <div class=\"random_options d-flex justify-content-center gap-3 align-items-center\"\n *ngIf=\"installmentOptions && installmentOptions.length > 0\">\n <div class=\"option cursor-pointer d-flex justify-content-center align-items-center\"\n [ngStyle]=\"option.status ? {'border': '2px solid grey','font-weight':'bold'} : {}\"\n *ngFor=\"let option of installmentOptions\" (click)=\"setMonthlyAmount(option)\">\n \u20B9 {{option?.value}}\n </div>\n </div>\n </div>\n <div class=\"mt-3\">\n <div class=\"d-flex align-items-center justify-content-center\">\n <span class=\"text-center fw-bold fs-4 monthly-amount\">\u20B9{{monthlyAmount | number}}</span>\n </div>\n <div class=\"text-center text-muted small mt-1\">Monthly Investment</div>\n </div>\n </div>\n\n <div class=\"calculator-bottom px-3 mb-5\">\n <div class=\"scheme-results\">\n <div class=\"row align-items-center justify-content-between mb-3 g-2\">\n <!-- Contribution Card -->\n <div class=\"col-12 col-sm-6\"\n [ngClass]=\"{'card-container': this.schemeDetails?.schemeType !== 'GOLD_PROTECTION'}\">\n <div class=\"card text-center h-100\">\n <div class=\"card-body p-2 p-md-3 d-flex justify-content-center flex-column\">\n <div class=\"fw-bold calc_amount fs-md-5\">\n \u20B9{{(monthlyAmount * maturityCount) | number}}\n </div>\n <div class=\"text-muted small\">\n Your {{maturityCount}}-Month Contribution\n </div>\n </div>\n </div>\n </div>\n\n <!-- Plus Icon - Hidden on mobile -->\n <div class=\"col-auto d-none d-md-flex justify-content-center\"\n *ngIf=\"this.schemeDetails?.schemeType !== 'GOLD_PROTECTION'\">\n <div class=\"fs-3 text-muted\">+</div>\n </div>\n\n <!-- Benefit Card -->\n <div class=\"col-12 col-sm-6 card-container\" *ngIf=\"this.schemeDetails?.schemeType !== 'GOLD_PROTECTION'\">\n <div class=\"card text-center h-100\">\n <div class=\"card-body p-2 p-md-3 d-flex justify-content-center flex-column\">\n <div class=\"fw-bold calc_amount fs-md-5\">\n \u20B9{{benefitAmount | number}}\n </div>\n <div class=\"text-muted small\">\n Scheme Benefit\n </div>\n </div>\n </div>\n </div>\n\n <!-- Equals Icon - Hidden on mobile -->\n <div class=\"col-auto d-none d-md-flex justify-content-center\"\n *ngIf=\"this.schemeDetails?.schemeType !== 'GOLD_PROTECTION'\">\n <div class=\"fs-3 text-muted\">=</div>\n </div>\n\n <!-- Total Card -->\n <div class=\"col-12 card-container col-sm-6 mt-2 mt-md-0\"\n *ngIf=\"this.schemeDetails?.schemeType !== 'GOLD_PROTECTION'\">\n <div class=\"card text-center h-100 border-2\" [style.background]=\"styles?.background?.accentColor\">\n <div class=\"card-body p-2 p-md-3 d-flex justify-content-center flex-column\">\n <div class=\"fw-bold calc_amount fs-md-5 text-white\">\n <span *ngIf=\"schemeDetails?.benefitType != 'DISCOUNT'\">\n \u20B9{{((monthlyAmount * maturityCount) + benefitAmount) | number}}\n </span>\n <span *ngIf=\"schemeDetails?.benefitType === 'DISCOUNT'\">\n \u20B9{{(monthlyAmount * maturityCount) | number}}\n </span>\n </div>\n <div class=\"text-white-50 small\">\n Total Redemption Value\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"col-12 col-sm-6\" *ngIf=\"this.schemeDetails?.schemeType === 'GOLD_PROTECTION'\">\n <div class=\"card text-center h-100\">\n <div class=\"card-body p-2 p-md-3 d-flex justify-content-center flex-column\">\n <div class=\"fw-bold calc_amount fs-md-5\">\n {{purchasedGram}} gms\n </div>\n <div class=\"text-muted small\">\n Gold Allocation Today\n </div>\n </div>\n </div>\n </div>\n </div>\n\n\n <div class=\"bonus-message text-center mb-3 d-flex justify-content-between align-items-center\"\n *ngIf=\"schemeDetails?.storeList?.length >=2 || staffMembers.length >= 2 \">\n <div class=\"store_selection w-50 align-items-center gap-1\" *ngIf=\"schemeDetails?.storeList?.length >=2\">\n <div class=\"w-100 h-100 d-flex justify-content-start align-items-center\"> <span>Select\n Store : </span></div>\n <div class=\"store-selector\">\n <select id=\"storeDropdown\" [(ngModel)]=\"selectedStore\" class=\"form-select\"\n (ngModelChange)=\"getMetalPrice()\">\n <option [ngValue]=\"null\" disabled>Choose a store...</option>\n <option *ngFor=\"let store of stores;\" [ngValue]=\"store\">\n {{store.name}} - {{store.storeRefId}}\n </option>\n </select>\n </div>\n </div>\n <div class=\"staff-selector w-50 align-items-center gap-1\" *ngIf=\"staffMembers.length >= 2\">\n <div class=\"w-100 h-100 d-flex justify-content-start align-items-center\"><span>Select\n Staff Member : </span></div>\n <select id=\"staffDropdown\" [(ngModel)]=\"selectedStaff\" class=\"form-select\">\n <option value=\"\" disabled>Choose a staff member...</option>\n <option *ngFor=\"let staff of staffMembers;\" [ngValue]=\"staff\">\n {{staff.name}} - {{staff.role ? staff.role : 'staff' }}\n </option>\n </select>\n </div>\n </div>\n <div class=\"terms-and-condition\">\n <input type=\"checkbox\" [(ngModel)]=\"termsAndCondition\">I agree to <a (click)=\"scrollDown()\">Terms &\n Conditions</a>\n </div>\n <button class=\"enroll-btn w-100 py-3 fw-bold mb-2\" [appButtonEditor]=\"edit ?? false\" simpoButtonDirective\n [buttonStyle]=\"getButtonStyle(0)\" [buttonId]=\"getButtonId(0)\" [sectionId]=\"data?.id\"\n [id]=\"data?.id+getButtonId(0)\" (click)=\"enrollScheme(schemeDetails)\">\n <span *ngIf=\" !enrollButtonLoader\">Enroll in Scheme</span>\n <ng-container *ngIf=\"enrollButtonLoader\">\n <div class=\"d-flex align-items-center justify-content-center\">\n <div class=\"spinner\"><mat-spinner class=\"w-100 h-100\"></mat-spinner></div>\n Loading...\n </div>\n </ng-container>\n </button>\n </div>\n <!-- <div *ngIf=\"selectedScheme === 'group'\" class=\"scheme-results\">\n <div class=\"d-flex align-items-center mb-3\">\n \u2B50 <h6 class=\"mb-0 group-results-title\">Group Scheme Results</h6>\n </div>\n\n <div class=\"row mb-3\">\n <div class=\"col-6\">\n <div class=\"result-card text-center p-3 border rounded\">\n <div class=\"result-amount fw-bold fs-5\">\u20B9{{(monthlyAmount * 11) | number}}</div>\n <div class=\"result-label text-muted small\">Your Total 11-Month Contribution</div>\n </div>\n </div>\n <div class=\"col-6\">\n <div class=\"result-card result-card-group text-center p-3 border rounded\">\n <div class=\"result-amount fw-bold fs-5\">\u20B9{{(monthlyAmount * 11) | number}}</div>\n <div class=\"result-label small opacity-75\">Monthly Lucky Draw Amount</div>\n </div>\n </div>\n </div>\n\n <button class=\"enroll-btn w-100 py-3 fw-bold mb-2\" [appButtonEditor]=\"edit ?? false\"\n simpoButtonDirective [buttonStyle]=\"getButtonStyle(0)\" [buttonId]=\"getButtonId(0)\"\n [sectionId]=\"data?.id\" [id]=\"data?.id+getButtonId(0)\" [buttonData]=\"getButtonData(0)\">\n Enroll in Scheme\n </button>\n </div> -->\n </div>\n </div>\n </div>\n\n</ng-template>\n<ng-template #faqTemplate>\n <section class=\"faq-section d-flex align-items-center justify-content-center\">\n <div class=\"faq-container\">\n <h1 class=\"faq-title\">Frequently Asked Questions</h1>\n <p class=\"faq-subtitle\">Everything you need to know about our Group Investment Scheme</p>\n <div class=\"d-flex justify-content-center align-items-center w-100\">\n <div class=\"faq-list\">\n <div class=\"faq-item\" *ngFor=\"let faq of faqList ?? []\" (click)=\"faq.showAnswer = !faq.showAnswer\">\n <div class=\"faq-question\">\n <span>{{faq?.question ? faq?.question : 'N/A'}}</span>\n <mat-icon *ngIf=\"faq.showAnswer\">keyboard_arrow_up</mat-icon>\n <mat-icon *ngIf=\"!faq.showAnswer\">keyboard_arrow_down</mat-icon>\n </div>\n <div class=\"faq-answer\" *ngIf=\"faq.showAnswer\">\n <p>{{faq?.answer ? faq?.answer :'N/A' }}</p>\n </div>\n </div>\n </div>\n </div>\n </div>\n </section>\n</ng-template>\n<ng-template #termsAndConditions>\n <section class=\"terms-section d-flex align-items-center justify-content-center\" id=\"termsAndCondition\">\n <div class=\"terms-container d-flex align-items-center justify-content-center flex-column\">\n <h1 class=\"terms-title\">Terms and Conditions</h1>\n\n <div class=\"terms-content\">\n <div class=\"term-item d-flex\" *ngFor=\"let key of getKeys(schemeDetails?.termsAndConditions); let i = index\">\n <div class=\"terms_count\">\n <h3 class=\"term-heading\">{{ key }}.</h3>\n </div>\n <div>\n <p class=\"term-text\">\n {{ schemeDetails?.termsAndConditions?.[key]?.replaceAll('\\n',' ') || 'N/A' }}\n </p>\n </div>\n </div>\n\n <!-- <div class=\"important-note\">\n <p><strong>Important:</strong> These terms and conditions are subject to change with prior notice.\n Participants will be notified of any changes via registered email or SMS. Continued\n participation after notification constitutes acceptance of revised terms.</p>\n </div> -->\n </div>\n </div>\n </section>\n</ng-template>\n<ng-template #showCharges>\n <div class=\"payment-dialog\">\n <div class=\"dialog-header\">\n <h2>Payment Details</h2>\n <button class=\"close-btn\" mat-icon-button (click)=\"closeDialog('FAIL')\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n\n <div class=\"payment-content\">\n <div class=\"payment-row\">\n <span class=\"label\">Installment Amount:</span>\n <span class=\"amount\">\u20B9{{storeCharges?.breakdown?.installmentAmount ?\n (storeCharges?.breakdown?.installmentAmount | number) : 0 }}</span>\n </div>\n\n <div class=\"payment-row\">\n <span class=\"label\">Convenience Fee:</span>\n <span class=\"amount\">\u20B9{{storeCharges?.breakdown?.convenienceFee?.value ?\n (storeCharges?.breakdown?.convenienceFee?.value | number) : 0 }}</span>\n </div>\n\n <div class=\"payment-row\">\n <span class=\"label\">Payment Service Charges:</span>\n <span class=\"amount\">\u20B9{{storeCharges?.breakdown?.paymentServiceCharges?.value ?\n (storeCharges?.breakdown?.paymentServiceCharges?.value | number) : 0 }}</span>\n </div>\n\n <div class=\"payment-row total-row\">\n <span class=\"label total-label\">Total Amount:</span>\n <span class=\"amount total-amount\">\u20B9{{storeCharges?.breakdown?.totalAmount ?\n (storeCharges?.breakdown?.totalAmount | number) : 0 }}</span>\n </div>\n </div>\n\n <div class=\"dialog-actions\">\n <button class=\"continue-btn\" (click)=\"closeDialog('SUCCESS')\">Continue</button>\n </div>\n </div>\n</ng-template>", styles: ["*{font-family:var(--website-font-family)}mat-icon{font-family:Material Icons!important}.p-5{padding:2% 5%!important}.text_header{font-size:50px;font-weight:bolder;color:orange}.calc_header{gap:1rem;padding-bottom:4%}.calc_header span{font-size:23px;font-weight:700}.calc_desc{font-size:17px;text-align:center;padding:0% 23%}.desc_text{font-size:17px;padding:0% 20%;line-height:1.5rem;text-align:center}.sub-header-text{font-weight:500}.slider-container{padding:0 12px}.slider-labels{margin-top:10px;font-size:14px}.random_options{padding:0% 1%}.option{padding:.5% 2%;border:1px solid rgba(227,66,255,.1);border-radius:50px;background:#3a00441a}.calculator_section{padding:2%;width:65vw;box-shadow:0 1px 2px #0000000f,0 4px 12px #00000014;border-radius:16px}.scheme-results{background:#fff9e9;border-radius:8px;padding:20px}.individual-results-title{color:#d4a574;font-weight:600}.result-card{background:#fff;transition:all .3s ease;border:1px solid #e9ecef!important}.add_icon,.total_icon{padding:.3% 1%;background:#fff;border-radius:50px}.w-15{width:15vw}.result-card:hover{transform:translateY(-2px);box-shadow:0 4px 12px #0000001a}.result-card-highlight{color:#fff}.result-card-group{background:#d63384;color:#fff}.result-amount{color:#333;font-size:18px;margin-bottom:8px}.result-card-highlight .result-amount,.result-card-group .result-amount{color:#fff}.result-label{font-size:12px;font-weight:500}.enroll-btn{font-size:16px;border:1px solid}.faq-container{border-radius:16px;padding:40px 0;width:65vw}.faq-title{font-size:2.5rem;font-weight:700;color:#2d3748;text-align:center;margin-bottom:12px}.faq-subtitle{font-size:1.1rem;color:#718096;text-align:center;margin-bottom:40px;font-weight:400}.faq-list{display:flex;flex-direction:column;gap:12px;width:80%}.faq-item{border:1px solid #e2e8f0;border-radius:12px;background:#fff;overflow:hidden;transition:all .3s ease}.faq-item:hover{border-color:#cbd5e0;box-shadow:0 2px 4px #0000000d}.faq-question{padding:20px 24px;cursor:pointer;display:flex;justify-content:space-between;align-items:center;font-weight:500;font-size:1.05rem;color:#2d3748;transition:color .2s ease}.faq-item:hover{box-shadow:0 1px 2px #0000000f,0 4px 12px #00000014}.faq-question:hover span{color:#d4a574;text-decoration:underline}.faq-icon{width:20px;height:20px;color:#718096;transition:transform .3s ease;flex-shrink:0}.faq-item.active .faq-icon{transform:rotate(180deg)}.faq-answer{transition:.3s ease,padding .3s ease;padding:0% 2%}.faq-item.active .faq-answer{max-height:200px;padding:0 24px 20px}.faq-answer p{color:#4a5568;font-size:.95rem;line-height:1.6;margin-top:0}.terms-container{width:65vw}.terms-title{font-size:2.2rem;font-weight:700;color:#2d3748;text-align:center;margin-bottom:40px;letter-spacing:-.02em}.terms-content{display:flex;flex-direction:column;gap:32px;box-shadow:0 1px 2px #0000000f,0 4px 12px #00000014;padding:20px;border-radius:16px;width:80%}.term-item{padding-bottom:20px;border-bottom:1px solid #e2e8f0;gap:10px}.terms_count{padding-top:.2%}.term-item:last-of-type{border-bottom:none;padding-bottom:unset}.term-heading{font-size:1.15rem;font-weight:600;color:#1a202c;margin-bottom:12px;letter-spacing:-.01em}.term-text{font-size:.95rem;color:#4a5568}.important-note{background:#f7fafc;border:1px solid #e2e8f0;border-radius:8px;padding:20px;margin-top:16px}.important-note p{font-size:.9rem;color:#2d3748;line-height:1.6;margin:0}.important-note strong{color:#1a202c;font-weight:600}.footer-note{text-align:center;margin-top:24px;padding-top:16px}.footer-note p{font-size:.85rem;color:#718096;font-style:italic}.payment-dialog{background:#fff;border-radius:12px;padding:0;max-width:400px;width:25vw;box-shadow:0 8px 32px #0000001a}.dialog-header{display:flex;justify-content:space-between;align-items:center;padding:20px 24px 16px;border-bottom:1px solid #f0f0f0}.dialog-header h2{margin:0;font-size:20px;font-weight:500;color:#333;white-space:nowrap}.close-btn{background:none;border:none;padding:4px;cursor:pointer;color:#666;display:flex;align-items:center;width:fit-content!important;justify-content:center}.close-btn:hover{background-color:#f5f5f5;border-radius:50%}.payment-content{padding:24px}.payment-row{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.payment-row .label{color:#000!important;font-size:16px}.bonus-message{border:1px solid #ffeaa7;border-radius:8px;padding:12px;margin:15px 0;gap:25px}.store_selection span{color:#d4a574;font-weight:700}.store-selector{width:100%;margin:5px 0}.store-selector label{display:block;font-weight:600;margin-bottom:8px}.store-selector .form-select{width:100%;padding:10px 12px;border:2px solid #ddd;border-radius:6px;font-size:14px;background-color:#fff;cursor:pointer;transition:border-color .3s ease;min-width:315px}.store-selector .form-select:focus{outline:none;border-color:#007bff;box-shadow:0 0 0 3px #007bff1a}.store-selector .form-select:hover{border-color:#bbb}.store-selector .selected-info{padding:10px;background-color:#f8f9fa;border-radius:4px;border-left:4px solid #007bff}.store-selector .selected-info p{margin:0;font-size:14px;color:#495057}.staff-selector label{display:block;color:#333;white-space:nowrap}.staff-selector span{color:#d4a574;font-weight:700}.staff-selector .form-select{margin:5px 0;width:100%;padding:10px 12px;border:2px solid #ddd;border-radius:6px;font-size:14px;background-color:#fff;cursor:pointer;transition:border-color .3s ease}.staff-selector .form-select:focus{outline:none;border-color:#28a745;box-shadow:0 0 0 3px #28a7451a}.staff-selector .form-select:hover{border-color:#bbb}.staff-selector .selected-info{padding:10px;background-color:#f8f9fa;border-radius:4px;border-left:4px solid #28a745}.staff-selector .selected-info p{margin:0;font-size:14px;color:#495057}.payment-row:last-child{margin-bottom:0}.amount{color:#333;font-size:14px;font-weight:500}.total-row{border-top:1px solid #f0f0f0;padding-top:16px;margin-top:8px}.total-label,.total-amount{color:#333;font-weight:600;font-size:16px}.dialog-actions{padding:0 24px 24px}.continue-btn{width:100%;background-color:#dc3545;color:#fff;border:none;border-radius:8px;padding:12px 24px;font-size:16px;font-weight:500;cursor:pointer;transition:background-color .2s ease}.continue-btn:hover{background-color:#c82333}.continue-btn:active{background-color:#bd2130}@media (min-width :320px) and (max-width : 480px){.calc_desc,.desc_text{padding:0%}.p-5{padding:2% 0%!important}.sub-header{margin:.5rem 0px!important}.calculator_section{width:100%}.gold-purity{flex-wrap:wrap}.option{font-size:13px;white-space:nowrap}}@media (max-width: 768px){.terms-section{width:100%}.terms-container{padding:30px 0;width:100%}.terms-title{font-size:1.8rem;margin-bottom:30px}.terms-content{gap:24px;width:100%}.term-heading{font-size:1.1rem}.term-text{font-size:.9rem;text-align:left}.important-note{padding:16px}.faq-container,.faq-section,.faq-list{width:100%}}@media (min-width:475px){.terms-section{padding:0%!important}.card-container{width:31%;height:13vh;align-items:center}.calc_amount{font-size:1.5rem}}.custom-range{-webkit-appearance:none;appearance:none;width:100%;height:10px;border-radius:999px;outline:none;margin:10px 0}.bonus-message{flex-direction:column!important}.bonus-message :is(.staff-selector,.store_selection){width:100%!important}.custom-range::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:26px;height:26px;border-radius:50%;background:#fff4d0;border:3px solid #F4C24B;cursor:pointer;box-shadow:0 2px 4px #0000001a}.custom-range::-moz-range-thumb{width:26px;height:26px;border-radius:50%;background:#fff4d0;border:3px solid #F4C24B;cursor:pointer;box-shadow:0 2px 4px #0000001a}.custom-range::-moz-range-track{height:10px;border-radius:999px}.gold-purity{padding-left:1rem;padding-bottom:15px;display:flex;gap:15px}.gold-purity .purity{display:flex;gap:10px;background:#fff7d0;width:max-content;padding:5px 8px;border-radius:11px;align-items:center}.gold-purity .purity img{height:40px}.gold-purity .purity div{font-size:12px}.gold-purity .purity .gold-price{font-weight:700}.enrolled-gram{margin-bottom:0;font-size:17px;font-weight:600}.monthly-scheme{display:flex;justify-content:space-between}.color-white{color:#fff}.terms-and-condition{display:flex;align-items:center;gap:10px;margin-bottom:10px}.terms-and-condition input{cursor:pointer}.terms-and-condition :is(.store-selector,.form-select){min-width:unset!important}a{color:#0d6efd!important;text-decoration:underline!important;cursor:pointer}a:hover{color:#0a58ca!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i7.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "pipe", type: i7.DecimalPipe, name: "number" }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: SpacingHorizontalDirective, selector: "[spacingHorizontal]", inputs: ["spacingHorizontal", "isHeader"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i8.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i8.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i8.RangeValueAccessor, selector: "input[type=range][formControlName],input[type=range][formControl],input[type=range][ngModel]" }, { kind: "directive", type: i8.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i8.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: TextEditorComponent, selector: "simpo-text-editor", inputs: ["value", "editable", "sectionId", "label"], outputs: ["valueChange"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: ButtonEditorDirective, selector: "button[appButtonEditor]", inputs: ["appButtonEditor", "buttonData", "buttonStyle", "backgroundInfo", "sectionId", "buttonId"] }, { kind: "component", type: MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "directive", type: ButtonDirectiveDirective, selector: "[simpoButtonDirective]", inputs: ["buttonStyle", "color", "scrollValue", "backgroundInfo"] }, { kind: "ngmodule", type: ToastModule }, { kind: "component", type: i9.Toast, selector: "p-toast", inputs: ["key", "autoZIndex", "baseZIndex", "life", "style", "styleClass", "position", "preventOpenDuplicates", "preventDuplicates", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions", "breakpoints"], outputs: ["onClose"] }] }); }
248
- }
249
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SchemeDetailComponent, decorators: [{
250
- type: Component,
251
- args: [{ selector: 'simpo-scheme-detail', standalone: true, imports: [CdkDragPlaceholder, CommonModule, MatDialogModule, SpacingHorizontalDirective, FormsModule, TextEditorComponent, MatIcon, ButtonEditorDirective, MatProgressSpinner, ButtonDirectiveDirective, ToastModule], providers: [MatDialog, MessageService], template: "<p-toast position=\"bottom-right\" [baseZIndex]=\"10000000000\" [autoZIndex]=\"true\"\n [showTransformOptions]=\"isMobile ? 'translateY(-100%)' : ''\"></p-toast>\n\n\n<section class=\"main_section w-100\" [spacingHorizontal]=\"stylesLayout\" [id]=\"data?.id\">\n <div class=\"about_plan_section p-5 d-flex flex-column align-items-center justify-content-center\">\n <ng-container *ngTemplateOutlet=\"aboutUsTemplate\"></ng-container>\n </div>\n <div class=\"scheme_calculator_section p-5 d-flex flex-column align-items-center justify-content-center\">\n <ng-container *ngTemplateOutlet=\"schemeCalculator\"></ng-container>\n </div>\n <div class=\"faq_section p-5\" *ngIf=\"faqList.length > 0\">\n <ng-container *ngTemplateOutlet=\"faqTemplate\"></ng-container>\n </div>\n <div class=\"terms_condition_section p-5\"\n *ngIf=\"schemeDetails?.termsAndConditions && schemeDetails?.termsAndConditions != {}\">\n <ng-container *ngTemplateOutlet=\"termsAndConditions\"></ng-container>\n </div>\n</section>\n<ng-template #aboutUsTemplate>\n <div class=\"d-flex flex-column gap-3\">\n <div class=\"text_header d-flex align-items-center justify-content-center\">\n <simpo-text-editor [(value)]=\"getInputText\" [editable]=\"edit || false\"></simpo-text-editor>\n </div>\n <div class=\"desc_text\">\n {{schemeDetails?.about}}\n </div>\n </div>\n</ng-template>\n<ng-template #schemeCalculator>\n <div class=\"d-flex flex-column align-items-center\">\n <div class=\"calc_header d-flex flex-column align-items-center justify-content-center\">\n <span>Calculate Your Returns</span>\n <div class=\"calc_desc\">\n See how your savings grow with our smart investment schemes. choose your preferred scheme and discover\n your potential returns.\n </div>\n </div>\n <div class=\"calculator_section\">\n <div class=\"gold-purity\"\n *ngIf=\"schemeDetails?.schemeType === 'GOLD_PROTECTION' && (stores.length == 1 || selectedStore?.id)\">\n <div class=\"purity\" *ngFor=\"let gold of metalPrice?.priceData ?? []\">\n <img src=\"https://jewellers.stage.passbookapp.in/assets/images/gold-scheme/24k_gold_pic.svg\" alt=\"\">\n <div>\n <div>{{gold?.karats?.replaceAll('_', \"\")}} Gold Purity</div>\n <div class=\"gold-price\">\u20B9{{gold.price}}</div>\n </div>\n </div>\n </div>\n <div class=\"sub-header mb-3 px-3 monthly-scheme\">\n <h6 class=\"mb-0 sub-header-text\">Select Your Monthly Investment Amount</h6>\n <p class=\"enrolled-gram\"\n *ngIf=\"schemeDetails?.schemeType === 'GOLD_PROTECTION' && (stores.length == 1 || selectedStore?.id)\">\n {{purchasedGram}} gms</p>\n </div>\n\n <div class=\"calculate-slider mb-4 px-3\">\n <div class=\"slider-container position-relative\">\n <input type=\"range\" class=\"form-range custom-range\" [min]=\"minAmount\" [max]=\"maxAmount\"\n [step]=\"schemeDetails?.valueStep\" [(ngModel)]=\"monthlyAmount\" (ngModelChange)=\"onAmountChange()\">\n <div class=\"slider-labels d-flex justify-content-between mt-2\">\n <span class=\"fw-bold\">\u20B9{{minAmount | number}}</span>\n <span class=\"fw-bold\">\u20B9{{maxAmount | number}}</span>\n </div>\n <div class=\"random_options d-flex justify-content-center gap-3 align-items-center\"\n *ngIf=\"installmentOptions && installmentOptions.length > 0\">\n <div class=\"option cursor-pointer d-flex justify-content-center align-items-center\"\n [ngStyle]=\"option.status ? {'border': '2px solid grey','font-weight':'bold'} : {}\"\n *ngFor=\"let option of installmentOptions\" (click)=\"setMonthlyAmount(option)\">\n \u20B9 {{option?.value}}\n </div>\n </div>\n </div>\n <div class=\"mt-3\">\n <div class=\"d-flex align-items-center justify-content-center\">\n <span class=\"text-center fw-bold fs-4 monthly-amount\">\u20B9{{monthlyAmount | number}}</span>\n </div>\n <div class=\"text-center text-muted small mt-1\">Monthly Investment</div>\n </div>\n </div>\n\n <div class=\"calculator-bottom px-3 mb-5\">\n <div class=\"scheme-results\">\n <div class=\"row align-items-center justify-content-between mb-3 g-2\">\n <!-- Contribution Card -->\n <div class=\"col-12 col-sm-6\"\n [ngClass]=\"{'card-container': this.schemeDetails?.schemeType !== 'GOLD_PROTECTION'}\">\n <div class=\"card text-center h-100\">\n <div class=\"card-body p-2 p-md-3 d-flex justify-content-center flex-column\">\n <div class=\"fw-bold calc_amount fs-md-5\">\n \u20B9{{(monthlyAmount * maturityCount) | number}}\n </div>\n <div class=\"text-muted small\">\n Your {{maturityCount}}-Month Contribution\n </div>\n </div>\n </div>\n </div>\n\n <!-- Plus Icon - Hidden on mobile -->\n <div class=\"col-auto d-none d-md-flex justify-content-center\"\n *ngIf=\"this.schemeDetails?.schemeType !== 'GOLD_PROTECTION'\">\n <div class=\"fs-3 text-muted\">+</div>\n </div>\n\n <!-- Benefit Card -->\n <div class=\"col-12 col-sm-6 card-container\" *ngIf=\"this.schemeDetails?.schemeType !== 'GOLD_PROTECTION'\">\n <div class=\"card text-center h-100\">\n <div class=\"card-body p-2 p-md-3 d-flex justify-content-center flex-column\">\n <div class=\"fw-bold calc_amount fs-md-5\">\n \u20B9{{benefitAmount | number}}\n </div>\n <div class=\"text-muted small\">\n Scheme Benefit\n </div>\n </div>\n </div>\n </div>\n\n <!-- Equals Icon - Hidden on mobile -->\n <div class=\"col-auto d-none d-md-flex justify-content-center\"\n *ngIf=\"this.schemeDetails?.schemeType !== 'GOLD_PROTECTION'\">\n <div class=\"fs-3 text-muted\">=</div>\n </div>\n\n <!-- Total Card -->\n <div class=\"col-12 card-container col-sm-6 mt-2 mt-md-0\"\n *ngIf=\"this.schemeDetails?.schemeType !== 'GOLD_PROTECTION'\">\n <div class=\"card text-center h-100 border-2\" [style.background]=\"styles?.background?.accentColor\">\n <div class=\"card-body p-2 p-md-3 d-flex justify-content-center flex-column\">\n <div class=\"fw-bold calc_amount fs-md-5 text-white\">\n <span *ngIf=\"schemeDetails?.benefitType != 'DISCOUNT'\">\n \u20B9{{((monthlyAmount * maturityCount) + benefitAmount) | number}}\n </span>\n <span *ngIf=\"schemeDetails?.benefitType === 'DISCOUNT'\">\n \u20B9{{(monthlyAmount * maturityCount) | number}}\n </span>\n </div>\n <div class=\"text-white-50 small\">\n Total Redemption Value\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"col-12 col-sm-6\" *ngIf=\"this.schemeDetails?.schemeType === 'GOLD_PROTECTION'\">\n <div class=\"card text-center h-100\">\n <div class=\"card-body p-2 p-md-3 d-flex justify-content-center flex-column\">\n <div class=\"fw-bold calc_amount fs-md-5\">\n {{purchasedGram}} gms\n </div>\n <div class=\"text-muted small\">\n Gold Allocation Today\n </div>\n </div>\n </div>\n </div>\n </div>\n\n\n <div class=\"bonus-message text-center mb-3 d-flex justify-content-between align-items-center\"\n *ngIf=\"schemeDetails?.storeList?.length >=2 || staffMembers.length >= 2 \">\n <div class=\"store_selection w-50 align-items-center gap-1\" *ngIf=\"schemeDetails?.storeList?.length >=2\">\n <div class=\"w-100 h-100 d-flex justify-content-start align-items-center\"> <span>Select\n Store : </span></div>\n <div class=\"store-selector\">\n <select id=\"storeDropdown\" [(ngModel)]=\"selectedStore\" class=\"form-select\"\n (ngModelChange)=\"getMetalPrice()\">\n <option [ngValue]=\"null\" disabled>Choose a store...</option>\n <option *ngFor=\"let store of stores;\" [ngValue]=\"store\">\n {{store.name}} - {{store.storeRefId}}\n </option>\n </select>\n </div>\n </div>\n <div class=\"staff-selector w-50 align-items-center gap-1\" *ngIf=\"staffMembers.length >= 2\">\n <div class=\"w-100 h-100 d-flex justify-content-start align-items-center\"><span>Select\n Staff Member : </span></div>\n <select id=\"staffDropdown\" [(ngModel)]=\"selectedStaff\" class=\"form-select\">\n <option value=\"\" disabled>Choose a staff member...</option>\n <option *ngFor=\"let staff of staffMembers;\" [ngValue]=\"staff\">\n {{staff.name}} - {{staff.role ? staff.role : 'staff' }}\n </option>\n </select>\n </div>\n </div>\n <div class=\"terms-and-condition\">\n <input type=\"checkbox\" [(ngModel)]=\"termsAndCondition\">I agree to <a (click)=\"scrollDown()\">Terms &\n Conditions</a>\n </div>\n <button class=\"enroll-btn w-100 py-3 fw-bold mb-2\" [appButtonEditor]=\"edit ?? false\" simpoButtonDirective\n [buttonStyle]=\"getButtonStyle(0)\" [buttonId]=\"getButtonId(0)\" [sectionId]=\"data?.id\"\n [id]=\"data?.id+getButtonId(0)\" (click)=\"enrollScheme(schemeDetails)\">\n <span *ngIf=\" !enrollButtonLoader\">Enroll in Scheme</span>\n <ng-container *ngIf=\"enrollButtonLoader\">\n <div class=\"d-flex align-items-center justify-content-center\">\n <div class=\"spinner\"><mat-spinner class=\"w-100 h-100\"></mat-spinner></div>\n Loading...\n </div>\n </ng-container>\n </button>\n </div>\n <!-- <div *ngIf=\"selectedScheme === 'group'\" class=\"scheme-results\">\n <div class=\"d-flex align-items-center mb-3\">\n \u2B50 <h6 class=\"mb-0 group-results-title\">Group Scheme Results</h6>\n </div>\n\n <div class=\"row mb-3\">\n <div class=\"col-6\">\n <div class=\"result-card text-center p-3 border rounded\">\n <div class=\"result-amount fw-bold fs-5\">\u20B9{{(monthlyAmount * 11) | number}}</div>\n <div class=\"result-label text-muted small\">Your Total 11-Month Contribution</div>\n </div>\n </div>\n <div class=\"col-6\">\n <div class=\"result-card result-card-group text-center p-3 border rounded\">\n <div class=\"result-amount fw-bold fs-5\">\u20B9{{(monthlyAmount * 11) | number}}</div>\n <div class=\"result-label small opacity-75\">Monthly Lucky Draw Amount</div>\n </div>\n </div>\n </div>\n\n <button class=\"enroll-btn w-100 py-3 fw-bold mb-2\" [appButtonEditor]=\"edit ?? false\"\n simpoButtonDirective [buttonStyle]=\"getButtonStyle(0)\" [buttonId]=\"getButtonId(0)\"\n [sectionId]=\"data?.id\" [id]=\"data?.id+getButtonId(0)\" [buttonData]=\"getButtonData(0)\">\n Enroll in Scheme\n </button>\n </div> -->\n </div>\n </div>\n </div>\n\n</ng-template>\n<ng-template #faqTemplate>\n <section class=\"faq-section d-flex align-items-center justify-content-center\">\n <div class=\"faq-container\">\n <h1 class=\"faq-title\">Frequently Asked Questions</h1>\n <p class=\"faq-subtitle\">Everything you need to know about our Group Investment Scheme</p>\n <div class=\"d-flex justify-content-center align-items-center w-100\">\n <div class=\"faq-list\">\n <div class=\"faq-item\" *ngFor=\"let faq of faqList ?? []\" (click)=\"faq.showAnswer = !faq.showAnswer\">\n <div class=\"faq-question\">\n <span>{{faq?.question ? faq?.question : 'N/A'}}</span>\n <mat-icon *ngIf=\"faq.showAnswer\">keyboard_arrow_up</mat-icon>\n <mat-icon *ngIf=\"!faq.showAnswer\">keyboard_arrow_down</mat-icon>\n </div>\n <div class=\"faq-answer\" *ngIf=\"faq.showAnswer\">\n <p>{{faq?.answer ? faq?.answer :'N/A' }}</p>\n </div>\n </div>\n </div>\n </div>\n </div>\n </section>\n</ng-template>\n<ng-template #termsAndConditions>\n <section class=\"terms-section d-flex align-items-center justify-content-center\" id=\"termsAndCondition\">\n <div class=\"terms-container d-flex align-items-center justify-content-center flex-column\">\n <h1 class=\"terms-title\">Terms and Conditions</h1>\n\n <div class=\"terms-content\">\n <div class=\"term-item d-flex\" *ngFor=\"let key of getKeys(schemeDetails?.termsAndConditions); let i = index\">\n <div class=\"terms_count\">\n <h3 class=\"term-heading\">{{ key }}.</h3>\n </div>\n <div>\n <p class=\"term-text\">\n {{ schemeDetails?.termsAndConditions?.[key]?.replaceAll('\\n',' ') || 'N/A' }}\n </p>\n </div>\n </div>\n\n <!-- <div class=\"important-note\">\n <p><strong>Important:</strong> These terms and conditions are subject to change with prior notice.\n Participants will be notified of any changes via registered email or SMS. Continued\n participation after notification constitutes acceptance of revised terms.</p>\n </div> -->\n </div>\n </div>\n </section>\n</ng-template>\n<ng-template #showCharges>\n <div class=\"payment-dialog\">\n <div class=\"dialog-header\">\n <h2>Payment Details</h2>\n <button class=\"close-btn\" mat-icon-button (click)=\"closeDialog('FAIL')\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n\n <div class=\"payment-content\">\n <div class=\"payment-row\">\n <span class=\"label\">Installment Amount:</span>\n <span class=\"amount\">\u20B9{{storeCharges?.breakdown?.installmentAmount ?\n (storeCharges?.breakdown?.installmentAmount | number) : 0 }}</span>\n </div>\n\n <div class=\"payment-row\">\n <span class=\"label\">Convenience Fee:</span>\n <span class=\"amount\">\u20B9{{storeCharges?.breakdown?.convenienceFee?.value ?\n (storeCharges?.breakdown?.convenienceFee?.value | number) : 0 }}</span>\n </div>\n\n <div class=\"payment-row\">\n <span class=\"label\">Payment Service Charges:</span>\n <span class=\"amount\">\u20B9{{storeCharges?.breakdown?.paymentServiceCharges?.value ?\n (storeCharges?.breakdown?.paymentServiceCharges?.value | number) : 0 }}</span>\n </div>\n\n <div class=\"payment-row total-row\">\n <span class=\"label total-label\">Total Amount:</span>\n <span class=\"amount total-amount\">\u20B9{{storeCharges?.breakdown?.totalAmount ?\n (storeCharges?.breakdown?.totalAmount | number) : 0 }}</span>\n </div>\n </div>\n\n <div class=\"dialog-actions\">\n <button class=\"continue-btn\" (click)=\"closeDialog('SUCCESS')\">Continue</button>\n </div>\n </div>\n</ng-template>", styles: ["*{font-family:var(--website-font-family)}mat-icon{font-family:Material Icons!important}.p-5{padding:2% 5%!important}.text_header{font-size:50px;font-weight:bolder;color:orange}.calc_header{gap:1rem;padding-bottom:4%}.calc_header span{font-size:23px;font-weight:700}.calc_desc{font-size:17px;text-align:center;padding:0% 23%}.desc_text{font-size:17px;padding:0% 20%;line-height:1.5rem;text-align:center}.sub-header-text{font-weight:500}.slider-container{padding:0 12px}.slider-labels{margin-top:10px;font-size:14px}.random_options{padding:0% 1%}.option{padding:.5% 2%;border:1px solid rgba(227,66,255,.1);border-radius:50px;background:#3a00441a}.calculator_section{padding:2%;width:65vw;box-shadow:0 1px 2px #0000000f,0 4px 12px #00000014;border-radius:16px}.scheme-results{background:#fff9e9;border-radius:8px;padding:20px}.individual-results-title{color:#d4a574;font-weight:600}.result-card{background:#fff;transition:all .3s ease;border:1px solid #e9ecef!important}.add_icon,.total_icon{padding:.3% 1%;background:#fff;border-radius:50px}.w-15{width:15vw}.result-card:hover{transform:translateY(-2px);box-shadow:0 4px 12px #0000001a}.result-card-highlight{color:#fff}.result-card-group{background:#d63384;color:#fff}.result-amount{color:#333;font-size:18px;margin-bottom:8px}.result-card-highlight .result-amount,.result-card-group .result-amount{color:#fff}.result-label{font-size:12px;font-weight:500}.enroll-btn{font-size:16px;border:1px solid}.faq-container{border-radius:16px;padding:40px 0;width:65vw}.faq-title{font-size:2.5rem;font-weight:700;color:#2d3748;text-align:center;margin-bottom:12px}.faq-subtitle{font-size:1.1rem;color:#718096;text-align:center;margin-bottom:40px;font-weight:400}.faq-list{display:flex;flex-direction:column;gap:12px;width:80%}.faq-item{border:1px solid #e2e8f0;border-radius:12px;background:#fff;overflow:hidden;transition:all .3s ease}.faq-item:hover{border-color:#cbd5e0;box-shadow:0 2px 4px #0000000d}.faq-question{padding:20px 24px;cursor:pointer;display:flex;justify-content:space-between;align-items:center;font-weight:500;font-size:1.05rem;color:#2d3748;transition:color .2s ease}.faq-item:hover{box-shadow:0 1px 2px #0000000f,0 4px 12px #00000014}.faq-question:hover span{color:#d4a574;text-decoration:underline}.faq-icon{width:20px;height:20px;color:#718096;transition:transform .3s ease;flex-shrink:0}.faq-item.active .faq-icon{transform:rotate(180deg)}.faq-answer{transition:.3s ease,padding .3s ease;padding:0% 2%}.faq-item.active .faq-answer{max-height:200px;padding:0 24px 20px}.faq-answer p{color:#4a5568;font-size:.95rem;line-height:1.6;margin-top:0}.terms-container{width:65vw}.terms-title{font-size:2.2rem;font-weight:700;color:#2d3748;text-align:center;margin-bottom:40px;letter-spacing:-.02em}.terms-content{display:flex;flex-direction:column;gap:32px;box-shadow:0 1px 2px #0000000f,0 4px 12px #00000014;padding:20px;border-radius:16px;width:80%}.term-item{padding-bottom:20px;border-bottom:1px solid #e2e8f0;gap:10px}.terms_count{padding-top:.2%}.term-item:last-of-type{border-bottom:none;padding-bottom:unset}.term-heading{font-size:1.15rem;font-weight:600;color:#1a202c;margin-bottom:12px;letter-spacing:-.01em}.term-text{font-size:.95rem;color:#4a5568}.important-note{background:#f7fafc;border:1px solid #e2e8f0;border-radius:8px;padding:20px;margin-top:16px}.important-note p{font-size:.9rem;color:#2d3748;line-height:1.6;margin:0}.important-note strong{color:#1a202c;font-weight:600}.footer-note{text-align:center;margin-top:24px;padding-top:16px}.footer-note p{font-size:.85rem;color:#718096;font-style:italic}.payment-dialog{background:#fff;border-radius:12px;padding:0;max-width:400px;width:25vw;box-shadow:0 8px 32px #0000001a}.dialog-header{display:flex;justify-content:space-between;align-items:center;padding:20px 24px 16px;border-bottom:1px solid #f0f0f0}.dialog-header h2{margin:0;font-size:20px;font-weight:500;color:#333;white-space:nowrap}.close-btn{background:none;border:none;padding:4px;cursor:pointer;color:#666;display:flex;align-items:center;width:fit-content!important;justify-content:center}.close-btn:hover{background-color:#f5f5f5;border-radius:50%}.payment-content{padding:24px}.payment-row{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.payment-row .label{color:#000!important;font-size:16px}.bonus-message{border:1px solid #ffeaa7;border-radius:8px;padding:12px;margin:15px 0;gap:25px}.store_selection span{color:#d4a574;font-weight:700}.store-selector{width:100%;margin:5px 0}.store-selector label{display:block;font-weight:600;margin-bottom:8px}.store-selector .form-select{width:100%;padding:10px 12px;border:2px solid #ddd;border-radius:6px;font-size:14px;background-color:#fff;cursor:pointer;transition:border-color .3s ease;min-width:315px}.store-selector .form-select:focus{outline:none;border-color:#007bff;box-shadow:0 0 0 3px #007bff1a}.store-selector .form-select:hover{border-color:#bbb}.store-selector .selected-info{padding:10px;background-color:#f8f9fa;border-radius:4px;border-left:4px solid #007bff}.store-selector .selected-info p{margin:0;font-size:14px;color:#495057}.staff-selector label{display:block;color:#333;white-space:nowrap}.staff-selector span{color:#d4a574;font-weight:700}.staff-selector .form-select{margin:5px 0;width:100%;padding:10px 12px;border:2px solid #ddd;border-radius:6px;font-size:14px;background-color:#fff;cursor:pointer;transition:border-color .3s ease}.staff-selector .form-select:focus{outline:none;border-color:#28a745;box-shadow:0 0 0 3px #28a7451a}.staff-selector .form-select:hover{border-color:#bbb}.staff-selector .selected-info{padding:10px;background-color:#f8f9fa;border-radius:4px;border-left:4px solid #28a745}.staff-selector .selected-info p{margin:0;font-size:14px;color:#495057}.payment-row:last-child{margin-bottom:0}.amount{color:#333;font-size:14px;font-weight:500}.total-row{border-top:1px solid #f0f0f0;padding-top:16px;margin-top:8px}.total-label,.total-amount{color:#333;font-weight:600;font-size:16px}.dialog-actions{padding:0 24px 24px}.continue-btn{width:100%;background-color:#dc3545;color:#fff;border:none;border-radius:8px;padding:12px 24px;font-size:16px;font-weight:500;cursor:pointer;transition:background-color .2s ease}.continue-btn:hover{background-color:#c82333}.continue-btn:active{background-color:#bd2130}@media (min-width :320px) and (max-width : 480px){.calc_desc,.desc_text{padding:0%}.p-5{padding:2% 0%!important}.sub-header{margin:.5rem 0px!important}.calculator_section{width:100%}.gold-purity{flex-wrap:wrap}.option{font-size:13px;white-space:nowrap}}@media (max-width: 768px){.terms-section{width:100%}.terms-container{padding:30px 0;width:100%}.terms-title{font-size:1.8rem;margin-bottom:30px}.terms-content{gap:24px;width:100%}.term-heading{font-size:1.1rem}.term-text{font-size:.9rem;text-align:left}.important-note{padding:16px}.faq-container,.faq-section,.faq-list{width:100%}}@media (min-width:475px){.terms-section{padding:0%!important}.card-container{width:31%;height:13vh;align-items:center}.calc_amount{font-size:1.5rem}}.custom-range{-webkit-appearance:none;appearance:none;width:100%;height:10px;border-radius:999px;outline:none;margin:10px 0}.bonus-message{flex-direction:column!important}.bonus-message :is(.staff-selector,.store_selection){width:100%!important}.custom-range::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:26px;height:26px;border-radius:50%;background:#fff4d0;border:3px solid #F4C24B;cursor:pointer;box-shadow:0 2px 4px #0000001a}.custom-range::-moz-range-thumb{width:26px;height:26px;border-radius:50%;background:#fff4d0;border:3px solid #F4C24B;cursor:pointer;box-shadow:0 2px 4px #0000001a}.custom-range::-moz-range-track{height:10px;border-radius:999px}.gold-purity{padding-left:1rem;padding-bottom:15px;display:flex;gap:15px}.gold-purity .purity{display:flex;gap:10px;background:#fff7d0;width:max-content;padding:5px 8px;border-radius:11px;align-items:center}.gold-purity .purity img{height:40px}.gold-purity .purity div{font-size:12px}.gold-purity .purity .gold-price{font-weight:700}.enrolled-gram{margin-bottom:0;font-size:17px;font-weight:600}.monthly-scheme{display:flex;justify-content:space-between}.color-white{color:#fff}.terms-and-condition{display:flex;align-items:center;gap:10px;margin-bottom:10px}.terms-and-condition input{cursor:pointer}.terms-and-condition :is(.store-selector,.form-select){min-width:unset!important}a{color:#0d6efd!important;text-decoration:underline!important;cursor:pointer}a:hover{color:#0a58ca!important}\n"] }]
252
- }], ctorParameters: () => [{ type: i1.ActivatedRoute }, { type: i2.RestService }, { type: i3.StorageServiceService }, { type: i4.MatDialog }, { type: i1.Router }, { type: i5.EventsService }, { type: i6.MessageService }], propDecorators: { data: [{
253
- type: Input
254
- }], index: [{
255
- type: Input
256
- }], edit: [{
257
- type: Input
258
- }], showChargesTemplate: [{
259
- type: ViewChild,
260
- args: ['showCharges', { static: true }]
261
- }], getScreenSize: [{
262
- type: HostListener,
263
- args: ['window:resize', ['$event']]
264
- }] } });
265
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1lLWRldGFpbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL3NlY3Rpb25zL3NjaGVtZS1kZXRhaWwvc2NoZW1lLWRldGFpbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL3NlY3Rpb25zL3NjaGVtZS1kZXRhaWwvc2NoZW1lLWRldGFpbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXZGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDdkYsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFJMUYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDaEYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRWpELE9BQU8sRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFnQixNQUFNLDBCQUEwQixDQUFDO0FBRXBGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDN0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7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LFdBQ1AsQ0FBQyxrQkFBa0IsRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLDBCQUEwQixFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsa0JBQWtCLEVBQUUsd0JBQXdCLEVBQUUsV0FBVyxDQUFDLGFBRTFNLENBQUMsU0FBUyxFQUFFLGNBQWMsQ0FBQzt1UEFJN0IsSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ3NDLG1CQUFtQjtzQkFBOUQsU0FBUzt1QkFBQyxhQUFhLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQStEMUMsYUFBYTtzQkFEWixZQUFZO3VCQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSG9zdExpc3RlbmVyLCBJbnB1dCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2NoZW1lRGV0YWlsTW9kYWwgfSBmcm9tICcuL3NjaGVtZS1kZXRhaWwubW9kYWwnO1xuaW1wb3J0IHsgQ2RrRHJhZ1BsYWNlaG9sZGVyIH0gZnJvbSBcIkBhbmd1bGFyL2Nkay9kcmFnLWRyb3BcIjtcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IERpcmVjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGV4dEVkaXRvckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2VsZW1lbnRzL3RleHQtZWRpdG9yL3RleHQtZWRpdG9yLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTcGFjaW5nSG9yaXpvbnRhbERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9zcGFjaW5nLWhvcml6b250YWwuZGlyZWN0aXZlJztcbmltcG9ydCB7IExheU91dE1vZGVsIH0gZnJvbSAnLi4vLi4vc3R5bGVzL3N0eWxlLm1vZGVsJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgUmVzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9yZXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgQnV0dG9uRWRpdG9yRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2J1dHRvbi1lZGl0b3IuZGlyZWN0aXZlJztcbmltcG9ydCB7IE1hdEljb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IFN0b3JhZ2VTZXJ2aWNlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3N0b3JhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ01vZHVsZSwgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IEV2ZW50c1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9ldmVudHMuc2VydmljZSc7XG5pbXBvcnQgeyBCdXR0b25EaXJlY3RpdmVEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvYnV0dG9uLWRpcmVjdGl2ZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgTWF0UHJvZ3Jlc3NTcGlubmVyIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLXNwaW5uZXJcIjtcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHsgVG9hc3RNb2R1bGUgfSBmcm9tICdwcmltZW5nL3RvYXN0JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2ltcG8tc2NoZW1lLWRldGFpbCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDZGtEcmFnUGxhY2Vob2xkZXIsIENvbW1vbk1vZHVsZSwgTWF0RGlhbG9nTW9kdWxlLCBTcGFjaW5nSG9yaXpvbnRhbERpcmVjdGl2ZSwgRm9ybXNNb2R1bGUsIFRleHRFZGl0b3JDb21wb25lbnQsIE1hdEljb24sIEJ1dHRvbkVkaXRvckRpcmVjdGl2ZSwgTWF0UHJvZ3Jlc3NTcGlubmVyLCBCdXR0b25EaXJlY3RpdmVEaXJlY3RpdmUsIFRvYXN0TW9kdWxlXSxcbiAgdGVtcGxhdGVVcmw6ICcuL3NjaGVtZS1kZXRhaWwuY29tcG9uZW50Lmh0bWwnLFxuICBwcm92aWRlcnM6IFtNYXREaWFsb2csIE1lc3NhZ2VTZXJ2aWNlXSxcbiAgc3R5bGVVcmw6ICcuL3NjaGVtZS1kZXRhaWwuY29tcG9uZW50LmNzcydcbn0pXG5leHBvcnQgY2xhc3MgU2NoZW1lRGV0YWlsQ29tcG9uZW50IHtcbiAgQElucHV0KCkgZGF0YTogU2NoZW1lRGV0YWlsTW9kYWwgfCBudWxsID0gbnVsbDtcbiAgQElucHV0KCkgaW5kZXg/OiBudW1iZXI7XG4gIEBJbnB1dCgpIGVkaXQ/OiBib29sZWFuID0gdHJ1ZTtcbiAgQFZpZXdDaGlsZCgnc2hvd0NoYXJnZXMnLCB7IHN0YXRpYzogdHJ1ZSB9KSBzaG93Q2hhcmdlc1RlbXBsYXRlITogVGVtcGxhdGVSZWY8SFRNTERpdkVsZW1lbnQ+O1xuICBkaWFsb2dSZWYhOiBNYXREaWFsb2dSZWY8YW55PjsgLy8gc2F2ZSB0aGUgZGlhbG9nIHJlZlxuICBzY3JvbGxUb1Rlcm1zQW5kQ29uZGl0aW9uOiBib29sZWFuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBhY3RpdmVSb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSByZXN0U2VydmljZTogUmVzdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzdG9yYWdlU2VydmljZTogU3RvcmFnZVNlcnZpY2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgbWF0RGlhbG9nOiBNYXREaWFsb2csXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9ldmVudFNlcnZpY2U6IEV2ZW50c1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2VcbiAgKSB7IH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmdldFNjcmVlblNpemUoKTtcbiAgICB0aGlzLnN0eWxlcyA9IHRoaXMuZGF0YT8uc3R5bGVzO1xuICAgIHRoaXMuYWN0aXZlUm91dGUucXVlcnlQYXJhbXMuc3Vic2NyaWJlKHBhcmFtcyA9PiB7XG4gICAgICBpZiAocGFyYW1zWydzY2hlbWVJZCddKSB7XG4gICAgICAgIHRoaXMuZ2V0U2NoZW1lRGV0YWlscyhwYXJhbXNbJ3NjaGVtZUlkJ10pO1xuICAgICAgfVxuICAgICAgaWYocGFyYW1zWyd0ZXJtc0FuZENvbmRpdGlvbiddKVxuICAgICAgICB0aGlzLnNjcm9sbFRvVGVybXNBbmRDb25kaXRpb24gPSB0cnVlO1xuICAgIH0pXG4gIH1cbiAgZ2V0S2V5cyhvYmo6IGFueSk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMob2JqID8/IHt9KTtcbiAgfVxuICBPYmplY3QgPSBPYmplY3RcbiAgc3R5bGVzOiBhbnk7XG4gIHNlbGVjdGVkU3RvcmU6IGFueTtcbiAgc2VsZWN0ZWRTdGFmZjogYW55O1xuICBzdG9yZXM6IGFueVtdID0gW107XG4gIHN0YWZmTWVtYmVyczogYW55W10gPSBbXTtcbiAgbWluQW1vdW50OiBudW1iZXIgPSAxMDAwO1xuICBtYXhBbW91bnQ6IG51bWJlciA9IDEwMDAwMDtcbiAgbW9udGhseUFtb3VudDogbnVtYmVyID0gMDtcbiAgaW5zdGFsbG1lbnRPcHRpb25zOiBhbnlbXSA9IFtdXG4gIHNjaGVtZURldGFpbHM6IGFueTtcbiAgbWF0dXJpdHlDb3VudDogbnVtYmVyID0gMTA7XG4gIGJlbmVmaXRBbW91bnQ6IG51bWJlciA9IDA7XG4gIG1ldGFsUHJpY2U6IGFueTtcbiAgcHVyY2hhc2VkR3JhbTogbnVtYmVyID0gMDtcbiAgY3VycmVudEdvbGRSYXRlOiBudW1iZXIgPSAwXG4gIHRlcm1zQW5kQ29uZGl0aW9uOiBib29sZWFuID0gZmFsc2U7XG5cbiAgZ2V0IHN0eWxlc0xheW91dCgpIHtcbiAgICByZXR1cm4geyAuLi50aGlzLnN0eWxlcz8ubGF5b3V0IH0gYXMgTGF5T3V0TW9kZWw7XG4gIH1cbiAgZW5yb2xsQnV0dG9uTG9hZGVyOiBib29sZWFuID0gZmFsc2U7XG4gIGdldEJ1dHRvbkRhdGEoaW5kZXg6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLmRhdGE/LmFjdGlvbj8uYnV0dG9uc1tpbmRleF0/LmNvbnRlbnQ7XG4gIH1cbiAgZ2V0QnV0dG9uSWQoaW5kZXg6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLmRhdGE/LmFjdGlvbj8uYnV0dG9uc1tpbmRleF0/LmlkID8/IFwiXCI7XG4gIH1cbiAgZ2V0QnV0dG9uU3R5bGUoaW5kZXg6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLmRhdGE/LmFjdGlvbj8uYnV0dG9uc1tpbmRleF0/LnN0eWxlcztcbiAgfVxuICBnZXQgZ2V0SW5wdXRUZXh0KCkge1xuICAgIHJldHVybiB0aGlzLmRhdGE/LmNvbnRlbnQ/LmlucHV0VGV4dD8uWzBdPy52YWx1ZSA/PyBcIlwiXG4gIH1cbiAgc2NyZWVuV2lkdGg6IG51bWJlciA9IDA7XG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnLCBbJyRldmVudCddKVxuICBnZXRTY3JlZW5TaXplKGV2ZW50PzogYW55KSB7XG4gICAgdGhpcy5zY3JlZW5XaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoO1xuICB9XG4gIGdldFN0YWZmTGlzdCgpIHtcbiAgICB0aGlzLnJlc3RTZXJ2aWNlLmdldEFsbFN0YWZmTGlzdCgpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5zdGFmZk1lbWJlcnMgPSByZXM/LmRhdGE/LmRhdGEgPyByZXM/LmRhdGE/LmRhdGEgOiBbXVxuICAgICAgICBjb25zb2xlLmxvZyh0aGlzLnN0YWZmTWVtYmVycylcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKGVycjogYW55KSA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKGVycik7XG4gICAgICB9XG4gICAgfSlcbiAgfVxuICBvbkFtb3VudENoYW5nZSgpIHtcbiAgICBpZiAoT2JqZWN0LmtleXModGhpcy5zY2hlbWVEZXRhaWxzLmpld2VsbGVyQmVuZWZpdCkubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgdmFsdWVzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0gT2JqZWN0LnZhbHVlcyh0aGlzLnNjaGVtZURldGFpbHMuamV3ZWxsZXJCZW5lZml0KTtcbiAgICAgIGNvbnN0IGhpZ2hlc3RWYWx1ZSA9IE1hdGgubWF4KC4uLk9iamVjdC52YWx1ZXModmFsdWVzKSk7XG4gICAgICBpZiAodGhpcy5zY2hlbWVEZXRhaWxzLmJlbmVmaXRUeXBlID09PSBcIlBFUkNFTlRfT05fTU9OVEhcIikge1xuICAgICAgICB0aGlzLmJlbmVmaXRBbW91bnQgPSAodGhpcy5tb250aGx5QW1vdW50ICogaGlnaGVzdFZhbHVlKSAvIDEwMDtcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKHRoaXMuc2NoZW1lRGV0YWlscy5iZW5lZml0VHlwZSA9PT0gXCJTQ0hFTUVcIikge1xuICAgICAgICB0aGlzLmJlbmVmaXRBbW91bnQgPSAoKHRoaXMubW9udGhseUFtb3VudCAqIHRoaXMubWF0dXJpdHlDb3VudCkgKiBoaWdoZXN0VmFsdWUpIC8gMTAwO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAodGhpcy5zY2hlbWVEZXRhaWxzLmJlbmVmaXRUeXBlID09PSBcIkRJU0NPVU5UXCIpIHtcbiAgICAgICAgdGhpcy5iZW5lZml0QW1vdW50ID0gKCh0aGlzLm1vbnRobHlBbW91bnQgKiB0aGlzLm1hdHVyaXR5Q291bnQpICogaGlnaGVzdFZhbHVlKSAvIDEwMDtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5wdXJjaGFzZWRHcmFtID0gTnVtYmVyKCh0aGlzLm1vbnRobHlBbW91bnQgLyB0aGlzLmN1cnJlbnRHb2xkUmF0ZSkudG9GaXhlZCgyKSlcbiAgfVxuICBzZXRNb250aGx5QW1vdW50KGFtb3VudDogYW55KSB7XG4gICAgdGhpcy5pbnN0YWxsbWVudE9wdGlvbnMuZm9yRWFjaCgob3B0aW9uOiBhbnkpID0+IHtcbiAgICAgIGlmIChvcHRpb24udmFsdWUgPT0gYW1vdW50Py52YWx1ZSkge1xuICAgICAgICBvcHRpb24uc3RhdHVzID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5tb250aGx5QW1vdW50ID0gYW1vdW50Py52YWx1ZTtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBvcHRpb24uc3RhdHVzID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSlcbiAgICB0aGlzLm9uQW1vdW50Q2hhbmdlKCk7XG4gIH1cbiAgZmFxTGlzdDogYW55W10gPSBbXTtcbiAgZ2V0U2NoZW1lRGV0YWlscyhzY2hlbWVJZDogYW55KSB7XG4gICAgdGhpcy5yZXN0U2VydmljZS5nZXRTY2hlbWVEZXRhaWxzKHNjaGVtZUlkKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XG4gICAgICBpZiAocmVzICYmIHJlcy5kYXRhKSB7XG4gICAgICAgIHRoaXMuZ2V0U3RhZmZMaXN0KCk7XG4gICAgICAgIHRoaXMuc2NoZW1lRGV0YWlscyA9IHJlcy5kYXRhO1xuICAgICAgICBjb25zb2xlLmxvZyh0aGlzLnNjaGVtZURldGFpbHMpXG4gICAgICAgIHRoaXMubWluQW1vdW50ID0gdGhpcy5zY2hlbWVEZXRhaWxzPy5taW5JbnN0YWxsbWVudFZhbHVlO1xuICAgICAgICB0aGlzLm1heEFtb3VudCA9IHRoaXMuc2NoZW1lRGV0YWlscz8ubWF4SW5zdGFsbG1lbnRWYWx1ZTtcbiAgICAgICAgdGhpcy5tb250aGx5QW1vdW50ID0gdGhpcy5taW5BbW91bnQ7XG4gICAgICAgIHRoaXMuc2NoZW1lRGV0YWlscz8uc3VnZ2VzdGVkVmFsdWVzPy5mb3JFYWNoKChzY2hlbWU6IGFueSkgPT4gdGhpcy5pbnN0YWxsbWVudE9wdGlvbnMucHVzaCh7IHN0YXR1czogZmFsc2UsIHZhbHVlOiBzY2hlbWUgfSkpXG4gICAgICAgIHRoaXMubWF0dXJpdHlDb3VudCA9IHRoaXMuc2NoZW1lRGV0YWlscz8ubWF0dXJpdHlDb3VudCA/IHRoaXMuc2NoZW1lRGV0YWlscy5tYXR1cml0eUNvdW50IDogdGhpcy5tYXR1cml0eUNvdW50O1xuICAgICAgICB0aGlzLnN0b3JlcyA9IHRoaXMuc2NoZW1lRGV0YWlscz8uc3RvcmVMaXN0ID8gdGhpcy5zY2hlbWVEZXRhaWxzLnN0b3JlTGlzdCA6IFtdO1xuICAgICAgICB0aGlzLmdldE1ldGFsUHJpY2UoKTtcbiAgICAgICAgdGhpcy5mYXFMaXN0ID0gdGhpcy5zY2hlbWVEZXRhaWxzPy5mYXFzID8gdGhpcy5zY2hlbWVEZXRhaWxzPy5mYXFzIDogW11cbiAgICAgICAgdGhpcy5mYXFMaXN0LmZvckVhY2goZmFxID0+IGZhcS5zaG93QW5zd2VyID0gZmFsc2UpXG5cbiAgICAgICAgaWYodGhpcy5zY3JvbGxUb1Rlcm1zQW5kQ29uZGl0aW9uKVxuICAgICAgICAgIHRoaXMuc2Nyb2xsRG93bigpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIGVucm9sbFNjaGVtZShzY2hlbWU6IGFueSkge1xuICAgIGlmKCF0aGlzLnRlcm1zQW5kQ29uZGl0aW9uKSB7XG4gICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7IHNldmVyaXR5OiAnZXJyb3InLCBzdW1tYXJ5OiAnVGVybXMgJiBDb25kaXRpb24nLCBkZXRhaWw6ICdQbGVhc2UgYWNjZXB0IHRlcm1zICYgY29uZGl0aW9uJyB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmVucm9sbEJ1dHRvbkxvYWRlciA9IHRydWU7XG4gICAgY29uc3QgdXNlckRldGFpbHMgPSB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldFVzZXIoKTtcbiAgICBsZXQgcGF5bG9hZCA9XG4gICAge1xuICAgICAgdXNlckJhc2ljRGV0YWlsczoge1xuICAgICAgICBjdXN0b21lcl9pZDogdXNlckRldGFpbHM/LnVzZXJJZCxcbiAgICAgICAgY3VzdG9tZXJfbmFtZTogdXNlckRldGFpbHM/LmNvbnRhY3Q/Lm5hbWUsXG4gICAgICAgIGN1c3RvbWVyX3Bob25lOiB1c2VyRGV0YWlscz8uY29udGFjdD8ubW9iaWxlLFxuICAgICAgICBjdXN0b21lcl9lbWFpbDogdXNlckRldGFpbHM/LmNvbnRhY3Q/LmVtYWlsLFxuICAgICAgfSxcbiAgICAgIHNjaGVtZUlkOiBzY2hlbWU/LmlkLFxuICAgICAgc2NoZW1lTmFtZTogc2NoZW1lPy5zY2hlbWVOYW1lLFxuICAgICAgZWFybHlSZWRlbXB0aW9uQ2hhcmdlOiBzY2hlbWU/LmVucm9sbG1lbnRGZWVzLFxuICAgICAgaW5zdGFsbG1lbnRBbW91bnQ6IHRoaXMubW9udGhseUFtb3VudCxcbiAgICAgIHN0b3JlUmVmSWQ6IHNjaGVtZT8uc2NoZW1lUmVwcmVzZW50YXRpdmVJZCxcbiAgICAgIHN0b3JlSWQ6IHRoaXMuc3RvcmVzLmxlbmd0aCA8IDIgPyB0aGlzLnN0b3Jlc1swXS5pZCA6IHRoaXMuc2VsZWN0ZWRTdG9yZT8uaWQsXG4gICAgICBzdGFmZklkOiB0aGlzLnN0YWZmTWVtYmVycy5sZW5ndGggPCAyID8gdGhpcy5zdGFmZk1lbWJlcnNbMF0uaWQgOiB0aGlzLnNlbGVjdGVkU3RhZmY/LmlkLFxuICAgICAgc3RhZmZOYW1lOiB0aGlzLnN0YWZmTWVtYmVycy5sZW5ndGggPCAyID8gdGhpcy5zdGFmZk1lbWJlcnNbMF0ubmFtZSA6IHRoaXMuc2VsZWN0ZWRTdGFmZj8ubmFtZSxcbiAgICAgIHN0b3JlTmFtZTogdGhpcy5zdG9yZXMubGVuZ3RoIDwgMiA/IHRoaXMuc3RvcmVzWzBdLm5hbWUgOiB0aGlzLnNlbGVjdGVkU3RvcmU/Lm5hbWUsXG4gICAgICBtYXR1cml0eUNvdW50OiBzY2hlbWU/Lm1hdHVyaXR5Q291bnQsXG4gICAgICBqZXdlbGxlckJlbmVmaXQ6IHNjaGVtZT8uamV3ZWxsZXJCZW5lZml0LFxuICAgICAgZHVlTW9udGhzOiBzY2hlbWU/Lm1hdHVyaXR5Q291bnQsXG4gICAgICBidXNpbmVzc0lkOiBzY2hlbWU/LmJ1c2luZXNzSWQsXG4gICAgICBidXNpbmVzc05hbWU6IHNjaGVtZT8uYnVzaW5lc3NOYW1lLFxuICAgICAgZW5hYmxlRWFybHlSZWRlbXB0aW9uOiBzY2hlbWU/LmVuYWJsZUVhcmx5UmVkZW1wdGlvbixcbiAgICAgIHJlZGVtcHRpb25TbGFiTGlzdDogc2NoZW1lPy5yZWRlbXB0aW9uU2xhYkxpc3QsXG4gICAgICBzY2hlbWVUeXBlOiBzY2hlbWU/LnNjaGVtZVR5cGUsXG4gICAgICBtZXRhbFR5cGU6IHNjaGVtZT8ubWV0YWxUeXBlLFxuICAgICAga2FyYXRUeXBlOiBzY2hlbWU/LmthcmF0VHlwZSxcbiAgICAgIGN1c3RvbWVyQWNjb3VudDogXCJcIlxuICAgIH1cblxuICAgIGlmICh1c2VyRGV0YWlscyAhPSBudWxsKSB7XG4gICAgICB0aGlzLnJlc3RTZXJ2aWNlLmVucm9sbFNjaGVtZShwYXlsb2FkLCB0cnVlKS5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMuZW5yb2xsQnV0dG9uTG9hZGVyID0gZmFsc2U7XG4gICAgICAgICAgaWYgKHJlc3BvbnNlLmRhdGEuY2FzaGZyZWVSZXNwb25zZSAhPSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLmNvbnRpbnVlUGF5bWVudChwYXlsb2FkKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnN0b3JlQ2hhcmdlcyA9IHJlc3BvbnNlLmRhdGEuY2FydDtcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nUmVmID0gdGhpcy5tYXREaWFsb2cub3Blbih0aGlzLnNob3dDaGFyZ2VzVGVtcGxhdGUsIHtcbiAgICAgICAgICAgICAgcGFuZWxDbGFzczogJ3Nob3ctY2hhcmdlcy1jbGFzcydcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgaWYgKHJlcyA9PT0gJ1NVQ0NFU1MnKVxuICAgICAgICAgICAgICAgIHRoaXMuY29udGludWVQYXltZW50KHBheWxvYWQpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XG4gICAgICAgICAgdGhpcy5lbnJvbGxCdXR0b25Mb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgICBpZiAoZXJyPy5lcnJvcj8ubWVzc2FnZSkge1xuXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL2xvZ2luJ10sIHsgcXVlcnlQYXJhbXM6IHsgc2NoZW1lRGV0YWlsOiAnc2NoZW1lLWRldGFpbCcgfSB9KTtcbiAgICB9XG4gIH1cbiAgY2xvc2VEaWFsb2coYWN0aW9uOiAnU1VDQ0VTUycgfCAnRkFJTCcpIHtcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZShhY3Rpb24pO1xuICB9XG4gIHN0b3JlQ2hhcmdlczogYW55O1xuICBjb250aW51ZVBheW1lbnQocGF5bG9hZDogYW55KSB7XG4gICAgdGhpcy5yZXN0U2VydmljZS5lbnJvbGxTY2hlbWUocGF5bG9hZCwgZmFsc2UpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgncGFzc2Jvb2tPcmRlcklkJywgcmVzcG9uc2UuZGF0YS5vcmRlcklkKTtcbiAgICAgICAgdGhpcy5vcGVuQ2FzaGZyZWVTZGsocmVzcG9uc2UuZGF0YS5zZXNzaW9uSWQpXG4gICAgICB9LFxuICAgICAgZXJyb3I6IChlcnJvcjogYW55KSA9PiB7IH1cbiAgICB9KVxuICB9XG4gIG9wZW5DYXNoZnJlZVNkayhzZXNzaW9uSWQ6IHN0cmluZykge1xuICAgIHRoaXMuX2V2ZW50U2VydmljZS5jYXNoRnJlZUV2ZW50LmVtaXQoeyBkYXRhOiB7IG9yZGVyU2lnbmF0dXJlOiBzZXNzaW9uSWQgfSB9KVxuICB9XG5cbiAgZ2V0TWV0YWxQcmljZSgpIHtcbiAgICBsZXQgc3RvcmVJZCA9IHRoaXMuc3RvcmVzLmxlbmd0aCA8IDIgPyB0aGlzLnN0b3Jlc1swXS5pZCA6IHRoaXMuc2VsZWN0ZWRTdG9yZT8uaWRcbiAgICBpZighc3RvcmVJZClcbiAgICAgIHJldHVyblxuXG4gICAgdGhpcy5yZXN0U2VydmljZS5nZXRNZXRhbFByaWNlKHN0b3JlSWQpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcbiAgICAgIHRoaXMubWV0YWxQcmljZSA9IHJlcy5kYXRhO1xuXG4gICAgICBmb3IobGV0IGdvbGQgb2YgdGhpcy5tZXRhbFByaWNlPy5wcmljZURhdGEgPz8gW10pIHtcbiAgICAgICAgaWYoZ29sZC5rYXJhdHMgPT09IHRoaXMuc2NoZW1lRGV0YWlscy5rYXJhdFR5cGUpIHtcbiAgICAgICAgICB0aGlzLmN1cnJlbnRHb2xkUmF0ZSA9IGdvbGQucHJpY2U7XG4gICAgICAgICAgdGhpcy5wdXJjaGFzZWRHcmFtID0gTnVtYmVyKCh0aGlzLm1vbnRobHlBbW91bnQgLyB0aGlzLmN1cnJlbnRHb2xkUmF0ZSkudG9GaXhlZCgyKSlcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICBnZXQgaXNNb2JpbGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHdpbmRvdy5pbm5lcldpZHRoIDw9IDQ3NTtcbiAgfVxuXG4gIHNjcm9sbERvd24oKSB7XG4gICAgY29uc3QgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVybXNBbmRDb25kaXRpb24nKTtcbiAgICBpZiAoZWwpIHtcbiAgICAgIGVsLnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnIH0pO1xuICAgIH1cbiAgfVxufVxuXG4iLCI8cC10b2FzdCBwb3NpdGlvbj1cImJvdHRvbS1yaWdodFwiIFtiYXNlWkluZGV4XT1cIjEwMDAwMDAwMDAwXCIgW2F1dG9aSW5kZXhdPVwidHJ1ZVwiXG4gIFtzaG93VHJhbnNmb3JtT3B0aW9uc109XCJpc01vYmlsZSA/ICd0cmFuc2xhdGVZKC0xMDAlKScgOiAnJ1wiPjwvcC10b2FzdD5cblxuXG48c2VjdGlvbiBjbGFzcz1cIm1haW5fc2VjdGlvbiB3LTEwMFwiIFtzcGFjaW5nSG9yaXpvbnRhbF09XCJzdHlsZXNMYXlvdXRcIiBbaWRdPVwiZGF0YT8uaWRcIj5cbiAgPGRpdiBjbGFzcz1cImFib3V0X3BsYW5fc2VjdGlvbiBwLTUgZC1mbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImFib3V0VXNUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cInNjaGVtZV9jYWxjdWxhdG9yX3NlY3Rpb24gcC01IGQtZmxleCBmbGV4LWNvbHVtbiBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzY2hlbWVDYWxjdWxhdG9yXCI+PC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiZmFxX3NlY3Rpb24gcC01XCIgKm5nSWY9XCJmYXFMaXN0Lmxlbmd0aCA+IDBcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmFxVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJ0ZXJtc19jb25kaXRpb25fc2VjdGlvbiBwLTVcIlxuICAgICpuZ0lmPVwic2NoZW1lRGV0YWlscz8udGVybXNBbmRDb25kaXRpb25zICYmIHNjaGVtZURldGFpbHM/LnRlcm1zQW5kQ29uZGl0aW9ucyAhPSB7fVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZXJtc0FuZENvbmRpdGlvbnNcIj48L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L3NlY3Rpb24+XG48bmctdGVtcGxhdGUgI2Fib3V0VXNUZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBnYXAtM1wiPlxuICAgIDxkaXYgY2xhc3M9XCJ0ZXh0X2hlYWRlciBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cbiAgICAgIDxzaW1wby10ZXh0LWVkaXRvciBbKHZhbHVlKV09XCJnZXRJbnB1dFRleHRcIiBbZWRpdGFibGVdPVwiZWRpdCB8fCBmYWxzZVwiPjwvc2ltcG8tdGV4dC1lZGl0b3I+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImRlc2NfdGV4dFwiPlxuICAgICAge3tzY2hlbWVEZXRhaWxzPy5hYm91dH19XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjc2NoZW1lQ2FsY3VsYXRvcj5cbiAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY2FsY19oZWFkZXIgZC1mbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XG4gICAgICA8c3Bhbj5DYWxjdWxhdGUgWW91ciBSZXR1cm5zPC9zcGFuPlxuICAgICAgPGRpdiBjbGFzcz1cImNhbGNfZGVzY1wiPlxuICAgICAgICBTZWUgaG93IHlvdXIgc2F2aW5ncyBncm93IHdpdGggb3VyIHNtYXJ0IGludmVzdG1lbnQgc2NoZW1lcy4gY2hvb3NlIHlvdXIgcHJlZmVycmVkIHNjaGVtZSBhbmQgZGlzY292ZXJcbiAgICAgICAgeW91ciBwb3RlbnRpYWwgcmV0dXJucy5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjYWxjdWxhdG9yX3NlY3Rpb25cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJnb2xkLXB1cml0eVwiXG4gICAgICAgICpuZ0lmPVwic2NoZW1lRGV0YWlscz8uc2NoZW1lVHlwZSA9PT0gJ0dPTERfUFJPVEVDVElPTicgJiYgKHN0b3Jlcy5sZW5ndGggPT0gMSB8fCBzZWxlY3RlZFN0b3JlPy5pZClcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInB1cml0eVwiICpuZ0Zvcj1cImxldCBnb2xkIG9mIG1ldGFsUHJpY2U/LnByaWNlRGF0YSA/PyBbXVwiPlxuICAgICAgICAgIDxpbWcgc3JjPVwiaHR0cHM6Ly9qZXdlbGxlcnMuc3RhZ2UucGFzc2Jvb2thcHAuaW4vYXNzZXRzL2ltYWdlcy9nb2xkLXNjaGVtZS8yNGtfZ29sZF9waWMuc3ZnXCIgYWx0PVwiXCI+XG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxkaXY+e3tnb2xkPy5rYXJhdHM/LnJlcGxhY2VBbGwoJ18nLCBcIlwiKX19IEdvbGQgUHVyaXR5PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ29sZC1wcmljZVwiPuKCuXt7Z29sZC5wcmljZX19PC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwic3ViLWhlYWRlciBtYi0zIHB4LTMgbW9udGhseS1zY2hlbWVcIj5cbiAgICAgICAgPGg2IGNsYXNzPVwibWItMCBzdWItaGVhZGVyLXRleHRcIj5TZWxlY3QgWW91ciBNb250aGx5IEludmVzdG1lbnQgQW1vdW50PC9oNj5cbiAgICAgICAgPHAgY2xhc3M9XCJlbnJvbGxlZC1ncmFtXCJcbiAgICAgICAgICAqbmdJZj1cInNjaGVtZURldGFpbHM/LnNjaGVtZVR5cGUgPT09ICdHT0xEX1BST1RFQ1RJT04nICYmIChzdG9yZXMubGVuZ3RoID09IDEgfHwgc2VsZWN0ZWRTdG9yZT8uaWQpXCI+XG4gICAgICAgICAge3twdXJjaGFzZWRHcmFtfX0gZ21zPC9wPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJjYWxjdWxhdGUtc2xpZGVyIG1iLTQgcHgtM1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2xpZGVyLWNvbnRhaW5lciBwb3NpdGlvbi1yZWxhdGl2ZVwiPlxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwicmFuZ2VcIiBjbGFzcz1cImZvcm0tcmFuZ2UgY3VzdG9tLXJhbmdlXCIgW21pbl09XCJtaW5BbW91bnRcIiBbbWF4XT1cIm1heEFtb3VudFwiXG4gICAgICAgICAgICBbc3RlcF09XCJzY2hlbWVEZXRhaWxzPy52YWx1ZVN0ZXBcIiBbKG5nTW9kZWwpXT1cIm1vbnRobHlBbW91bnRcIiAobmdNb2RlbENoYW5nZSk9XCJvbkFtb3VudENoYW5nZSgpXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNsaWRlci1sYWJlbHMgZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIG10LTJcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZnctYm9sZFwiPuKCuXt7bWluQW1vdW50IHwgbnVtYmVyfX08L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZ3LWJvbGRcIj7igrl7e21heEFtb3VudCB8IG51bWJlcn19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyYW5kb21fb3B0aW9ucyBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBnYXAtMyBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgKm5nSWY9XCJpbnN0YWxsbWVudE9wdGlvbnMgJiYgaW5zdGFsbG1lbnRPcHRpb25zLmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvcHRpb24gY3Vyc29yLXBvaW50ZXIgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgICAgW25nU3R5bGVdPVwib3B0aW9uLnN0YXR1cyA/IHsnYm9yZGVyJzogJzJweCBzb2xpZCBncmV5JywnZm9udC13ZWlnaHQnOidib2xkJ30gOiB7fVwiXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgaW5zdGFsbG1lbnRPcHRpb25zXCIgKGNsaWNrKT1cInNldE1vbnRobHlBbW91bnQob3B0aW9uKVwiPlxuICAgICAgICAgICAgICDigrkge3tvcHRpb24/LnZhbHVlfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm10LTNcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtY2VudGVyIGZ3LWJvbGQgZnMtNCBtb250aGx5LWFtb3VudFwiPuKCuXt7bW9udGhseUFtb3VudCB8IG51bWJlcn19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciB0ZXh0LW11dGVkIHNtYWxsIG10LTFcIj5Nb250aGx5IEludmVzdG1lbnQ8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cImNhbGN1bGF0b3ItYm90dG9tIHB4LTMgbWItNVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2NoZW1lLXJlc3VsdHNcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtYi0zIGctMlwiPlxuICAgICAgICAgICAgPCEtLSBDb250cmlidXRpb24gQ2FyZCAtLT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgY29sLXNtLTZcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2NhcmQtY29udGFpbmVyJzogdGhpcy5zY2hlbWVEZXRhaWxzPy5zY2hlbWVUeXBlICE9PSAnR09MRF9QUk9URUNUSU9OJ31cIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgdGV4dC1jZW50ZXIgaC0xMDBcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHAtMiBwLW1kLTMgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgZmxleC1jb2x1bW5cIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdy1ib2xkIGNhbGNfYW1vdW50IGZzLW1kLTVcIj5cbiAgICAgICAgICAgICAgICAgICAg4oK5e3sobW9udGhseUFtb3VudCAqIG1hdHVyaXR5Q291bnQpIHwgbnVtYmVyfX1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbXV0ZWQgc21hbGxcIj5cbiAgICAgICAgICAgICAgICAgICAgWW91ciB7e21hdHVyaXR5Q291bnR9fS1Nb250aCBDb250cmlidXRpb25cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8IS0tIFBsdXMgSWNvbiAtIEhpZGRlbiBvbiBtb2JpbGUgLS0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWF1dG8gZC1ub25lIGQtbWQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJ0aGlzLnNjaGVtZURldGFpbHM/LnNjaGVtZVR5cGUgIT09ICdHT0xEX1BST1RFQ1RJT04nXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmcy0zIHRleHQtbXV0ZWRcIj4rPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPCEtLSBCZW5lZml0IENhcmQgLS0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1zbS02IGNhcmQtY29udGFpbmVyXCIgKm5nSWY9XCJ0aGlzLnNjaGVtZURldGFpbHM/LnNjaGVtZVR5cGUgIT09ICdHT0xEX1BST1RFQ1RJT04nXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkIHRleHQtY2VudGVyIGgtMTAwXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBwLTIgcC1tZC0zIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGZsZXgtY29sdW1uXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctYm9sZCBjYWxjX2Ftb3VudCBmcy1tZC01XCI+XG4gICAgICAgICAgICAgICAgICAgIOKCuXt7YmVuZWZpdEFtb3VudCB8IG51bWJlcn19XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW11dGVkIHNtYWxsXCI+XG4gICAgICAgICAgICAgICAgICAgIFNjaGVtZSBCZW5lZml0XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPCEtLSBFcXVhbHMgSWNvbiAtIEhpZGRlbiBvbiBtb2JpbGUgLS0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWF1dG8gZC1ub25lIGQtbWQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJ0aGlzLnNjaGVtZURldGFpbHM/LnNjaGVtZVR5cGUgIT09ICdHT0xEX1BST1RFQ1RJT04nXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmcy0zIHRleHQtbXV0ZWRcIj49PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPCEtLSBUb3RhbCBDYXJkIC0tPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBjYXJkLWNvbnRhaW5lciBjb2wtc20tNiBtdC0yIG10LW1kLTBcIlxuICAgICAgICAgICAgICAqbmdJZj1cInRoaXMuc2NoZW1lRGV0YWlscz8uc2NoZW1lVHlwZSAhPT0gJ0dPTERfUFJPVEVDVElPTidcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgdGV4dC1jZW50ZXIgaC0xMDAgYm9yZGVyLTJcIiBbc3R5bGUuYmFja2dyb3VuZF09XCJzdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBwLTIgcC1tZC0zIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGZsZXgtY29sdW1uXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctYm9sZCBjYWxjX2Ftb3VudCAgZnMtbWQtNSB0ZXh0LXdoaXRlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2NoZW1lRGV0YWlscz8uYmVuZWZpdFR5cGUgIT0gJ0RJU0NPVU5UJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgIOKCuXt7KChtb250aGx5QW1vdW50ICogbWF0dXJpdHlDb3VudCkgKyBiZW5lZml0QW1vdW50KSB8IG51bWJlcn19XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzY2hlbWVEZXRhaWxzPy5iZW5lZml0VHlwZSA9PT0gJ0RJU0NPVU5UJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgIOKCuXt7KG1vbnRobHlBbW91bnQgKiBtYXR1cml0eUNvdW50KSB8IG51bWJlcn19XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtd2hpdGUtNTAgc21hbGxcIj5cbiAgICAgICAgICAgICAgICAgICAgVG90YWwgUmVkZW1wdGlvbiBWYWx1ZVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgY29sLXNtLTZcIiAqbmdJZj1cInRoaXMuc2NoZW1lRGV0YWlscz8uc2NoZW1lVHlwZSA9PT0gJ0dPTERfUFJPVEVDVElPTidcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgdGV4dC1jZW50ZXIgaC0xMDBcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHAtMiBwLW1kLTMgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgZmxleC1jb2x1bW5cIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdy1ib2xkIGNhbGNfYW1vdW50IGZzLW1kLTVcIj5cbiAgICAgICAgICAgICAgICAgICAge3twdXJjaGFzZWRHcmFtfX0gZ21zXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW11dGVkIHNtYWxsXCI+XG4gICAgICAgICAgICAgICAgICAgIEdvbGQgQWxsb2NhdGlvbiBUb2RheVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJib251cy1tZXNzYWdlIHRleHQtY2VudGVyIG1iLTMgZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICAqbmdJZj1cInNjaGVtZURldGFpbHM/LnN0b3JlTGlzdD8ubGVuZ3RoID49MiB8fCBzdGFmZk1lbWJlcnMubGVuZ3RoID49IDIgXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RvcmVfc2VsZWN0aW9uICB3LTUwIGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMVwiICpuZ0lmPVwic2NoZW1lRGV0YWlscz8uc3RvcmVMaXN0Py5sZW5ndGggPj0yXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTEwMCBoLTEwMCBkLWZsZXgganVzdGlmeS1jb250ZW50LXN0YXJ0IGFsaWduLWl0ZW1zLWNlbnRlclwiPiA8c3Bhbj5TZWxlY3RcbiAgICAgICAgICAgICAgICAgIFN0b3JlIDogPC9zcGFuPjwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RvcmUtc2VsZWN0b3JcIj5cbiAgICAgICAgICAgICAgICA8c2VsZWN0IGlkPVwic3RvcmVEcm9wZG93blwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRTdG9yZVwiIGNsYXNzPVwiZm9ybS1zZWxlY3RcIlxuICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiZ2V0TWV0YWxQcmljZSgpXCI+XG4gICAgICAgICAgICAgICAgICA8b3B0aW9uIFtuZ1ZhbHVlXT1cIm51bGxcIiBkaXNhYmxlZD5DaG9vc2UgYSBzdG9yZS4uLjwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgc3RvcmUgb2Ygc3RvcmVzO1wiIFtuZ1ZhbHVlXT1cInN0b3JlXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7c3RvcmUubmFtZX19IC0ge3tzdG9yZS5zdG9yZVJlZklkfX1cbiAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0YWZmLXNlbGVjdG9yIHctNTAgIGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMVwiICpuZ0lmPVwic3RhZmZNZW1iZXJzLmxlbmd0aCA+PSAyXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTEwMCBoLTEwMCBkLWZsZXgganVzdGlmeS1jb250ZW50LXN0YXJ0IGFsaWduLWl0ZW1zLWNlbnRlclwiPjxzcGFuPlNlbGVjdFxuICAgICAgICAgICAgICAgICAgU3RhZmYgTWVtYmVyIDogPC9zcGFuPjwvZGl2PlxuICAgICAgICAgICAgICA8c2VsZWN0IGlkPVwic3RhZmZEcm9wZG93blwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRTdGFmZlwiIGNsYXNzPVwiZm9ybS1zZWxlY3RcIj5cbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiXCIgZGlzYWJsZWQ+Q2hvb3NlIGEgc3RhZmYgbWVtYmVyLi4uPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgc3RhZmYgb2Ygc3RhZmZNZW1iZXJzO1wiIFtuZ1ZhbHVlXT1cInN0YWZmXCI+XG4gICAgICAgICAgICAgICAgICB7e3N0YWZmLm5hbWV9fSAtIHt7c3RhZmYucm9sZSA/IHN0YWZmLnJvbGUgOiAnc3RhZmYnIH19XG4gICAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRlcm1zLWFuZC1jb25kaXRpb25cIj5cbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBbKG5nTW9kZWwpXT1cInRlcm1zQW5kQ29uZGl0aW9uXCI+SSBhZ3JlZSB0byA8YSAoY2xpY2spPVwic2Nyb2xsRG93bigpXCI+VGVybXMgJlxuICAgICAgICAgICAgICBDb25kaXRpb25zPC9hPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJlbnJvbGwtYnRuIHctMTAwIHB5LTMgZnctYm9sZCBtYi0yXCIgW2FwcEJ1dHRvbkVkaXRvcl09XCJlZGl0ID8/IGZhbHNlXCIgc2ltcG9CdXR0b25EaXJlY3RpdmVcbiAgICAgICAgICAgIFtidXR0b25TdHlsZV09XCJnZXRCdXR0b25TdHlsZSgwKVwiIFtidXR0b25JZF09XCJnZXRCdXR0b25JZCgwKVwiIFtzZWN0aW9uSWRdPVwiZGF0YT8uaWRcIlxuICAgICAgICAgICAgW2lkXT1cImRhdGE/LmlkK2dldEJ1dHRvbklkKDApXCIgKGNsaWNrKT1cImVucm9sbFNjaGVtZShzY2hlbWVEZXRhaWxzKVwiPlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIgIWVucm9sbEJ1dHRvbkxvYWRlclwiPkVucm9sbCBpbiBTY2hlbWU8L3NwYW4+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZW5yb2xsQnV0dG9uTG9hZGVyXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Bpbm5lclwiPjxtYXQtc3Bpbm5lciBjbGFzcz1cInctMTAwIGgtMTAwXCI+PC9tYXQtc3Bpbm5lcj48L2Rpdj5cbiAgICAgICAgICAgICAgICBMb2FkaW5nLi4uXG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8IS0tIDxkaXYgKm5nSWY9XCJzZWxlY3RlZFNjaGVtZSA9PT0gJ2dyb3VwJ1wiIGNsYXNzPVwic2NoZW1lLXJlc3VsdHNcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtYi0zXCI+XG4gICAgICAgICAgICAgICAgICAgIOKtkCA8aDYgY2xhc3M9XCJtYi0wIGdyb3VwLXJlc3VsdHMtdGl0bGVcIj5Hcm91cCBTY2hlbWUgUmVzdWx0czwvaDY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVzdWx0LWNhcmQgdGV4dC1jZW50ZXIgcC0zIGJvcmRlciByb3VuZGVkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlc3VsdC1hbW91bnQgZnctYm9sZCBmcy01XCI+4oK5e3sobW9udGhseUFtb3VudCAqIDExKSB8IG51bWJlcn19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlc3VsdC1sYWJlbCB0ZXh0LW11dGVkIHNtYWxsXCI+WW91ciBUb3RhbCAxMS1Nb250aCBDb250cmlidXRpb248L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVzdWx0LWNhcmQgcmVzdWx0LWNhcmQtZ3JvdXAgdGV4dC1jZW50ZXIgcC0zIGJvcmRlciByb3VuZGVkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlc3VsdC1hbW91bnQgZnctYm9sZCBmcy01XCI+4oK5e3sobW9udGhseUFtb3VudCAqIDExKSB8IG51bWJlcn19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlc3VsdC1sYWJlbCBzbWFsbCBvcGFjaXR5LTc1XCI+TW9udGhseSBMdWNreSBEcmF3IEFtb3VudDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImVucm9sbC1idG4gdy0xMDAgcHktMyBmdy1ib2xkIG1iLTJcIiBbYXBwQnV0dG9uRWRpdG9yXT1cImVkaXQgPz8gZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICBzaW1wb0J1dHRvbkRpcmVjdGl2ZSBbYnV0dG9uU3R5bGVdPVwiZ2V0QnV0dG9uU3R5bGUoMClcIiBbYnV0dG9uSWRdPVwiZ2V0QnV0dG9uSWQoMClcIlxuICAgICAgICAgICAgICAgICAgICBbc2VjdGlvbklkXT1cImRhdGE/LmlkXCIgW2lkXT1cImRhdGE/LmlkK2dldEJ1dHRvbklkKDApXCIgW2J1dHRvbkRhdGFdPVwiZ2V0QnV0dG9uRGF0YSgwKVwiPlxuICAgICAgICAgICAgICAgICAgICBFbnJvbGwgaW4gU2NoZW1lXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI2ZhcVRlbXBsYXRlPlxuICA8c2VjdGlvbiBjbGFzcz1cImZhcS1zZWN0aW9uIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJmYXEtY29udGFpbmVyXCI+XG4gICAgICA8aDEgY2xhc3M9XCJmYXEtdGl0bGVcIj5GcmVxdWVudGx5IEFza2VkIFF1ZXN0aW9uczwvaDE+XG4gICAgICA8cCBjbGFzcz1cImZhcS1zdWJ0aXRsZVwiPkV2ZXJ5dGhpbmcgeW91IG5lZWQgdG8ga25vdyBhYm91dCBvdXIgR3JvdXAgSW52ZXN0bWVudCBTY2hlbWU8L3A+XG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIHctMTAwXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmYXEtbGlzdFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmYXEtaXRlbVwiICpuZ0Zvcj1cImxldCBmYXEgb2YgZmFxTGlzdCA/PyBbXVwiIChjbGljayk9XCJmYXEuc2hvd0Fuc3dlciA9ICFmYXEuc2hvd0Fuc3dlclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZhcS1xdWVzdGlvblwiPlxuICAgICAgICAgICAgICA8c3Bhbj57e2ZhcT8ucXVlc3Rpb24gPyBmYXE/LnF1ZXN0aW9uIDogJ04vQSd9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwiZmFxLnNob3dBbnN3ZXJcIj5rZXlib2FyZF9hcnJvd191cDwvbWF0LWljb24+XG4gICAgICAgICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cIiFmYXEuc2hvd0Fuc3dlclwiPmtleWJvYXJkX2Fycm93X2Rvd248L21hdC1pY29uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmFxLWFuc3dlclwiICpuZ0lmPVwiZmFxLnNob3dBbnN3ZXJcIj5cbiAgICAgICAgICAgICAgPHA+e3tmYXE/LmFuc3dlciA/IGZhcT8uYW5zd2VyIDonTi9BJyB9fTwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L3NlY3Rpb24+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICN0ZXJtc0FuZENvbmRpdGlvbnM+XG4gIDxzZWN0aW9uIGNsYXNzPVwidGVybXMtc2VjdGlvbiBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIiBpZD1cInRlcm1zQW5kQ29uZGl0aW9uXCI+XG4gICAgPGRpdiBjbGFzcz1cInRlcm1zLWNvbnRhaW5lciBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgZmxleC1jb2x1bW5cIj5cbiAgICAgIDxoMSBjbGFzcz1cInRlcm1zLXRpdGxlXCI+VGVybXMgYW5kIENvbmRpdGlvbnM8L2gxPlxuXG4gICAgICA8ZGl2IGNsYXNzPVwidGVybXMtY29udGVudFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGVybS1pdGVtIGQtZmxleFwiICpuZ0Zvcj1cImxldCBrZXkgb2YgZ2V0S2V5cyhzY2hlbWVEZXRhaWxzPy50ZXJtc0FuZENvbmRpdGlvbnMpOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRlcm1zX2NvdW50XCI+XG4gICAgICAgICAgICA8aDMgY2xhc3M9XCJ0ZXJtLWhlYWRpbmdcIj57eyBrZXkgfX0uPC9oMz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPHAgY2xhc3M9XCJ0ZXJtLXRleHRcIj5cbiAgICAgICAgICAgICAge3sgc2NoZW1lRGV0YWlscz8udGVybXNBbmRDb25kaXRpb25zPy5ba2V5XT8ucmVwbGFjZUFsbCgnXFxuJywnICcpIHx8ICdOL0EnIH19XG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImltcG9ydGFudC1ub3RlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxwPjxzdHJvbmc+SW1wb3J0YW50Ojwvc3Ryb25nPiBUaGVzZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBhcmUgc3ViamVjdCB0byBjaGFuZ2Ugd2l0aCBwcmlvciBub3RpY2UuXG4gICAgICAgICAgICAgICAgICAgICAgICBQYXJ0aWNpcGFudHMgd2lsbCBiZSBub3RpZmllZCBvZiBhbnkgY2hhbmdlcyB2aWEgcmVnaXN0ZXJlZCBlbWFpbCBvciBTTVMuIENvbnRpbnVlZFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFydGljaXBhdGlvbiBhZnRlciBub3RpZmljYXRpb24gY29uc3RpdHV0ZXMgYWNjZXB0YW5jZSBvZiByZXZpc2VkIHRlcm1zLjwvcD5cbiAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9zZWN0aW9uPlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjc2hvd0NoYXJnZXM+XG4gIDxkaXYgY2xhc3M9XCJwYXltZW50LWRpYWxvZ1wiPlxuICAgIDxkaXYgY2xhc3M9XCJkaWFsb2ctaGVhZGVyXCI+XG4gICAgICA8aDI+UGF5bWVudCBEZXRhaWxzPC9oMj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJjbG9zZS1idG5cIiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cImNsb3NlRGlhbG9nKCdGQUlMJylcIj5cbiAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cInBheW1lbnQtY29udGVudFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInBheW1lbnQtcm93XCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj5JbnN0YWxsbWVudCBBbW91bnQ6PC9zcGFuPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImFtb3VudFwiPuKCuXt7c3RvcmVDaGFyZ2VzPy5icmVha2Rvd24/Lmluc3RhbGxtZW50QW1vdW50ID9cbiAgICAgICAgICAoc3RvcmVDaGFyZ2VzPy5icmVha2Rvd24/Lmluc3RhbGxtZW50QW1vdW50IHwgbnVtYmVyKSA6IDAgfX08L3NwYW4+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cInBheW1lbnQtcm93XCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj5Db252ZW5pZW5jZSBGZWU6PC9zcGFuPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImFtb3VudFwiPuKCuXt7c3RvcmVDaGFyZ2VzPy5icmVha2Rvd24/LmNvbnZlbmllbmNlRmVlPy52YWx1ZSA/XG4gICAgICAgICAgKHN0b3JlQ2hhcmdlcz8uYnJlYWtkb3duPy5jb252ZW5pZW5jZUZlZT8udmFsdWUgfCBudW1iZXIpIDogMCB9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwicGF5bWVudC1yb3dcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPlBheW1lbnQgU2VydmljZSBDaGFyZ2VzOjwvc3Bhbj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJhbW91bnRcIj7igrl7e3N0b3JlQ2hhcmdlcz8uYnJlYWtkb3duPy5wYXltZW50U2VydmljZUNoYXJnZXM/LnZhbHVlID9cbiAgICAgICAgICAoc3RvcmVDaGFyZ2VzPy5icmVha2Rvd24/LnBheW1lbnRTZXJ2aWNlQ2hhcmdlcz8udmFsdWUgfCBudW1iZXIpIDogMCB9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwicGF5bWVudC1yb3cgdG90YWwtcm93XCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWwgdG90YWwtbGFiZWxcIj5Ub3RhbCBBbW91bnQ6PC9zcGFuPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImFtb3VudCB0b3RhbC1hbW91bnRcIj7igrl7e3N0b3JlQ2hhcmdlcz8uYnJlYWtkb3duPy50b3RhbEFtb3VudCA/XG4gICAgICAgICAgKHN0b3JlQ2hhcmdlcz8uYnJlYWtkb3duPy50b3RhbEFtb3VudCB8IG51bWJlcikgOiAwIH19PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZGlhbG9nLWFjdGlvbnNcIj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJjb250aW51ZS1idG5cIiAoY2xpY2spPVwiY2xvc2VEaWFsb2coJ1NVQ0NFU1MnKVwiPkNvbnRpbnVlPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT4iXX0=
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1lLWRldGFpbC5tb2RhbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NpbXBvLXVpL3NyYy9saWIvc2VjdGlvbnMvc2NoZW1lLWRldGFpbC9zY2hlbWUtZGV0YWlsLm1vZGFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYWNrZ3JvdW5kTW9kZWwsIElucHV0VGV4dE1vZGVsLCBMYXlPdXRNb2RlbCAgfSBmcm9tIFwiLi4vLi4vc3R5bGVzL3N0eWxlLm1vZGVsXCI7XG5pbXBvcnQge0FjdGlvbk1vZGVsIH0gZnJvbSAnLi4vLi4vc3R5bGVzL3N0eWxlLm1vZGVsJ1xuXG5leHBvcnQgaW50ZXJmYWNlIFNjaGVtZURldGFpbE1vZGFsIHtcbiAgaWQ6IHN0cmluZztcbiAgc2VjdGlvblR5cGU6IHN0cmluZztcbiAgc2VjdGlvbk5hbWU6IHN0cmluZztcbiAgY29udGVudDogU2NoZW1lRGV0YWlsQ29udGVudE1vZGFsO1xuICBzdHlsZXM6IFNjaGVtZURldGFpbFN0eWxlc01vZGFsO1xuICBhY3Rpb246IEFjdGlvbk1vZGVsO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNjaGVtZURldGFpbFN0eWxlc01vZGFsIHtcbiAgbGF5b3V0OiBMYXlPdXRNb2RlbDtcbiAgYmFja2dyb3VuZDogQmFja2dyb3VuZE1vZGVsO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNjaGVtZURldGFpbENvbnRlbnRNb2RhbCB7XG4gIGlucHV0VGV4dDogSW5wdXRUZXh0TW9kZWxbXVxufVxuIl19
@@ -1,23 +0,0 @@
1
- // projects/common-lib/src/lib/storage/local-storage.token.ts
2
- import { InjectionToken, inject, PLATFORM_ID } from '@angular/core';
3
- import { isPlatformBrowser } from '@angular/common';
4
- export const LOCAL_STORAGE = new InjectionToken('LOCAL_STORAGE', {
5
- providedIn: 'root',
6
- factory: () => {
7
- const platformId = inject(PLATFORM_ID);
8
- if (isPlatformBrowser(platformId) && typeof globalThis !== 'undefined' && 'localStorage' in globalThis) {
9
- return globalThis.localStorage;
10
- }
11
- const store = new Map();
12
- const mem = {
13
- get length() { return store.size; },
14
- clear: () => store.clear(),
15
- getItem: (k) => (store.has(k) ? store.get(k) : null),
16
- key: (i) => Array.from(store.keys())[i] ?? null,
17
- removeItem: (k) => { store.delete(k); },
18
- setItem: (k, v) => { store.set(k, String(v)); },
19
- };
20
- return mem;
21
- },
22
- });
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwtc3RvcmFnZS50b2tlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NpbXBvLXVpL3NyYy9saWIvc2VydmljZXMvbG9jYWwtc3RvcmFnZS50b2tlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw2REFBNkQ7QUFDN0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBR3BELE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxJQUFJLGNBQWMsQ0FBYyxlQUFlLEVBQUU7SUFDNUUsVUFBVSxFQUFFLE1BQU07SUFDbEIsT0FBTyxFQUFFLEdBQUcsRUFBRTtRQUNaLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN2QyxJQUFJLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxJQUFJLE9BQU8sVUFBVSxLQUFLLFdBQVcsSUFBSSxjQUFjLElBQUksVUFBVSxFQUFFLENBQUM7WUFDdkcsT0FBUSxVQUFrQixDQUFDLFlBQTJCLENBQUM7UUFDekQsQ0FBQztRQUNELE1BQU0sS0FBSyxHQUFHLElBQUksR0FBRyxFQUFrQixDQUFDO1FBQ3hDLE1BQU0sR0FBRyxHQUFnQjtZQUN2QixJQUFJLE1BQU0sS0FBSyxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ25DLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFO1lBQzFCLE9BQU8sRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDckQsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUk7WUFDL0MsVUFBVSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN2QyxPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDaEQsQ0FBQztRQUNGLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztDQUNGLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIHByb2plY3RzL2NvbW1vbi1saWIvc3JjL2xpYi9zdG9yYWdlL2xvY2FsLXN0b3JhZ2UudG9rZW4udHNcclxuaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4sIGluamVjdCwgUExBVEZPUk1fSUQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBTdG9yYWdlTGlrZSB9IGZyb20gJy4vc3RvcmFnZS1saWtlJztcclxuXHJcbmV4cG9ydCBjb25zdCBMT0NBTF9TVE9SQUdFID0gbmV3IEluamVjdGlvblRva2VuPFN0b3JhZ2VMaWtlPignTE9DQUxfU1RPUkFHRScsIHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbiAgZmFjdG9yeTogKCkgPT4ge1xyXG4gICAgY29uc3QgcGxhdGZvcm1JZCA9IGluamVjdChQTEFURk9STV9JRCk7XHJcbiAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIocGxhdGZvcm1JZCkgJiYgdHlwZW9mIGdsb2JhbFRoaXMgIT09ICd1bmRlZmluZWQnICYmICdsb2NhbFN0b3JhZ2UnIGluIGdsb2JhbFRoaXMpIHtcclxuICAgICAgcmV0dXJuIChnbG9iYWxUaGlzIGFzIGFueSkubG9jYWxTdG9yYWdlIGFzIFN0b3JhZ2VMaWtlO1xyXG4gICAgfVxyXG4gICAgY29uc3Qgc3RvcmUgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpO1xyXG4gICAgY29uc3QgbWVtOiBTdG9yYWdlTGlrZSA9IHtcclxuICAgICAgZ2V0IGxlbmd0aCgpIHsgcmV0dXJuIHN0b3JlLnNpemU7IH0sXHJcbiAgICAgIGNsZWFyOiAoKSA9PiBzdG9yZS5jbGVhcigpLFxyXG4gICAgICBnZXRJdGVtOiAoaykgPT4gKHN0b3JlLmhhcyhrKSA/IHN0b3JlLmdldChrKSEgOiBudWxsKSxcclxuICAgICAga2V5OiAoaSkgPT4gQXJyYXkuZnJvbShzdG9yZS5rZXlzKCkpW2ldID8/IG51bGwsXHJcbiAgICAgIHJlbW92ZUl0ZW06IChrKSA9PiB7IHN0b3JlLmRlbGV0ZShrKTsgfSxcclxuICAgICAgc2V0SXRlbTogKGssIHYpID0+IHsgc3RvcmUuc2V0KGssIFN0cmluZyh2KSk7IH0sXHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIG1lbTtcclxuICB9LFxyXG59KTtcclxuIl19
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS1saWtlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9zZXJ2aWNlcy9zdG9yYWdlLWxpa2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8vIHByb2plY3RzL2NvbW1vbi1saWIvc3JjL2xpYi9zdG9yYWdlL3N0b3JhZ2UtbGlrZS50c1xyXG5leHBvcnQgaW50ZXJmYWNlIFN0b3JhZ2VMaWtlIHtcclxuICBsZW5ndGg6IG51bWJlcjtcclxuICBjbGVhcigpOiB2b2lkO1xyXG4gIGdldEl0ZW0oa2V5OiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsO1xyXG4gIGtleShpbmRleDogbnVtYmVyKTogc3RyaW5nIHwgbnVsbDtcclxuICByZW1vdmVJdGVtKGtleTogc3RyaW5nKTogdm9pZDtcclxuICBzZXRJdGVtKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZDtcclxufVxyXG4iXX0=
@@ -1,14 +0,0 @@
1
- import { OnInit } from '@angular/core';
2
- import { StorageServiceService } from '../../../services/storage.service';
3
- import { RestService } from '../../../services/rest.service';
4
- import * as i0 from "@angular/core";
5
- export declare class PassbookTransactionsComponent implements OnInit {
6
- private storageService;
7
- private restService;
8
- constructor(storageService: StorageServiceService, restService: RestService);
9
- ngOnInit(): void;
10
- getAllTransactions(): void;
11
- allTransactions: any[];
12
- static ɵfac: i0.ɵɵFactoryDeclaration<PassbookTransactionsComponent, never>;
13
- static ɵcmp: i0.ɵɵComponentDeclaration<PassbookTransactionsComponent, "simpo-passbook-transactions", never, {}, {}, never, never, true, never>;
14
- }
@@ -1,28 +0,0 @@
1
- import { SchemesComponentModel, SchemesContentModel, SchemesStylesModel } from './schemes.component.model';
2
- import BaseSection from '../../../sections/BaseSection';
3
- import { RestService } from '../../../services/rest.service';
4
- import { LayOutModel, SpacingModel } from '../../../styles/style.model';
5
- import { Router } from '@angular/router';
6
- import * as i0 from "@angular/core";
7
- export declare class SchemesComponent extends BaseSection {
8
- private restService;
9
- private router;
10
- data?: SchemesComponentModel;
11
- edit?: boolean;
12
- delete?: boolean;
13
- index?: number;
14
- content?: SchemesContentModel;
15
- styles?: SchemesStylesModel;
16
- constructor(restService: RestService, router: Router);
17
- ngOnInit(): void;
18
- schemes: any;
19
- getAllSchemes(): void;
20
- get getInputText(): string;
21
- get stylesLayout(): LayOutModel;
22
- get spacingLayout(): SpacingModel;
23
- getParentClass(): "" | "overflow-scroll flex-nowrap";
24
- getClass(index: number): "col-12" | "col-6" | "col-6 mb-2" | "col-12 mb-2";
25
- showSchemeDetails(scheme: any): void;
26
- static ɵfac: i0.ɵɵFactoryDeclaration<SchemesComponent, never>;
27
- static ɵcmp: i0.ɵɵComponentDeclaration<SchemesComponent, "simpo-schemes", never, { "data": { "alias": "data"; "required": false; }; "edit": { "alias": "edit"; "required": false; }; "delete": { "alias": "delete"; "required": false; }; "index": { "alias": "index"; "required": false; }; }, {}, never, never, true, never>;
28
- }
@@ -1,21 +0,0 @@
1
- import { Corners } from "../../../styles";
2
- import { AnimationModel, BackgroundModel, DisplaySection, ImageStyle, InputTextModel, LayOutModel } from "../../../styles/style.model";
3
- export interface SchemesComponentModel {
4
- id: string;
5
- sectionType: string;
6
- sectionName: string;
7
- content: SchemesContentModel;
8
- styles: SchemesStylesModel;
9
- }
10
- export interface SchemesContentModel {
11
- display: DisplaySection;
12
- inputText: InputTextModel[];
13
- }
14
- export interface SchemesStylesModel {
15
- layout: LayOutModel;
16
- background: BackgroundModel;
17
- direction: "ROW" | "COLUMN";
18
- corners: Corners;
19
- image: ImageStyle;
20
- animation: AnimationModel;
21
- }