@snabcentr/client-ui 4.6.6 → 5.1.0

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 (469) hide show
  1. package/fesm2022/snabcentr-client-ui.mjs +3362 -4046
  2. package/fesm2022/snabcentr-client-ui.mjs.map +1 -1
  3. package/package.json +35 -36
  4. package/release_notes.tmp +2 -14
  5. package/styles/taiga/variables.less +16 -17
  6. package/styles/tailwind/tailwind.scss +0 -8
  7. package/types/snabcentr-client-ui.d.ts +5704 -0
  8. package/accordion/index.d.ts +0 -3
  9. package/accordion/sc-accordion-content.directive.d.ts +0 -9
  10. package/accordion/sc-accordion.component.d.ts +0 -56
  11. package/accordion/sc-accordion.module.d.ts +0 -15
  12. package/auth/enums/auth-method.d.ts +0 -13
  13. package/auth/index.d.ts +0 -8
  14. package/auth/interfaces/index.d.ts +0 -2
  15. package/auth/interfaces/sc-bank-account-form-group.d.ts +0 -11
  16. package/auth/interfaces/sc-contact-form-group.d.ts +0 -10
  17. package/auth/sc-auth.module.d.ts +0 -27
  18. package/auth/sc-sign-in-form/sc-sign-in-form-by-email/sc-sign-in-form-by-email.component.d.ts +0 -55
  19. package/auth/sc-sign-in-form/sc-sign-in-form-by-phone/sc-sign-in-form-by-phone.component.d.ts +0 -45
  20. package/auth/sc-sign-in-form/sc-sign-in-form.component.d.ts +0 -53
  21. package/auth/sc-simple-sign-up-form/sc-simple-sign-up-form.component.d.ts +0 -113
  22. package/auth/sign-up-form/sc-sign-up-form.component.d.ts +0 -166
  23. package/banner/index.d.ts +0 -2
  24. package/banner/sc-banner.component.d.ts +0 -79
  25. package/banner/sc-banner.module.d.ts +0 -17
  26. package/brands-list/index.d.ts +0 -2
  27. package/brands-list/sc-brands-list.component.d.ts +0 -15
  28. package/brands-list/sc-brands-list.module.d.ts +0 -12
  29. package/cart/add-or-editing-cart-item-dialog/add-or-editing-cart-item-form/sc-add-or-editing-cart-item-form.component.d.ts +0 -98
  30. package/cart/add-or-editing-cart-item-dialog/index.d.ts +0 -2
  31. package/cart/add-or-editing-cart-item-dialog/sc-add-or-editing-cart-item-dialog.component.d.ts +0 -49
  32. package/cart/index.d.ts +0 -2
  33. package/cart/sc-cart-add-products-from-csv-dialog/sc-cart-add-products-from-csv-dialog.component.d.ts +0 -62
  34. package/catalog/catalog-filters/collapsible/sc-catalog-filter-collapsible.component.d.ts +0 -47
  35. package/catalog/catalog-filters/index.d.ts +0 -4
  36. package/catalog/catalog-filters/sc-catalog-filters.component.d.ts +0 -180
  37. package/catalog/catalog-filters/tokens/sc-catalog-products-filters.d.ts +0 -7
  38. package/catalog/catalog-filters/tokens/sc-catalog-show-products-recursively.d.ts +0 -5
  39. package/catalog/category-card/sc-category-card.component.d.ts +0 -76
  40. package/catalog/cost-with-discount/cost-with-discount.component.d.ts +0 -23
  41. package/catalog/download-price-list/sc-download-price-list.component.d.ts +0 -38
  42. package/catalog/hover-image-carousel/sc-hover-image-carousel.component.d.ts +0 -48
  43. package/catalog/index.d.ts +0 -15
  44. package/catalog/input-quantity/sc-input-quantity.component.d.ts +0 -82
  45. package/catalog/notify-when-in-stock-dialog/index.d.ts +0 -2
  46. package/catalog/notify-when-in-stock-dialog/sc-notify-when-in-stock-dialog.component.d.ts +0 -90
  47. package/catalog/notify-when-in-stock-dialog/sc-product-in-all-warehouses.pipe.d.ts +0 -22
  48. package/catalog/price-card/sc-price-card.component.d.ts +0 -18
  49. package/catalog/price-card-inline/sc-price-card-inline.component.d.ts +0 -10
  50. package/catalog/price-history/sc-price-history.component.d.ts +0 -88
  51. package/catalog/price-list-pagination/sc-price-list-pagination.component.d.ts +0 -40
  52. package/catalog/price-warehouse-stock/sc-price-warehouse-stock.component.d.ts +0 -47
  53. package/catalog/sc-catalog.module.d.ts +0 -29
  54. package/catalog/sc-favorite-button/sc-favorite-button.component.d.ts +0 -25
  55. package/catalog/seo-tags/sc-seo-tags.component.d.ts +0 -20
  56. package/configurators/index.d.ts +0 -3
  57. package/configurators/models/index.d.ts +0 -3
  58. package/configurators/models/sandwich/sc-i-configurator-search-product-sandwich.d.ts +0 -22
  59. package/configurators/models/sandwich/sc-i-sandwich-settings.d.ts +0 -18
  60. package/configurators/models/sandwich_m2/sc-i-sandwich-m2-settings.d.ts +0 -18
  61. package/configurators/sandwich/index.d.ts +0 -3
  62. package/configurators/sandwich/sandwich-skeleton/sc-sandwich-skeleton.component.d.ts +0 -8
  63. package/configurators/sandwich/sc-i-new-cart-item-sandwich.d.ts +0 -14
  64. package/configurators/sandwich/sc-sandwich.component.d.ts +0 -182
  65. package/configurators/sandwich_m2/index.d.ts +0 -4
  66. package/configurators/sandwich_m2/sandwich-m2-skeleton/sc-sandwich-m2-skeleton.component.d.ts +0 -8
  67. package/configurators/sandwich_m2/sc-i-new-cart-item-sandwich-m2.d.ts +0 -23
  68. package/configurators/sandwich_m2/sc-sandwich-m2-item-submit-state.d.ts +0 -13
  69. package/configurators/sandwich_m2/sc-sandwich-m2.component.d.ts +0 -267
  70. package/contacts/add-contact-dialog/sc-add-contact-dialog.component.d.ts +0 -49
  71. package/contacts/contacts-accordion/sc-contacts-accordion.component.d.ts +0 -23
  72. package/contacts/index.d.ts +0 -7
  73. package/contacts/manager-card/sc-manager-card.component.d.ts +0 -22
  74. package/contacts/manager-card-push/sc-manager-card-push.component.d.ts +0 -18
  75. package/contacts/new-contact-form/sc-new-contact-form.component.d.ts +0 -28
  76. package/contacts/sc-contacts.module.d.ts +0 -27
  77. package/contacts/tokens/index.d.ts +0 -2
  78. package/contacts/tokens/sc-manager-qr-handler.token.d.ts +0 -6
  79. package/contacts/tokens/sc-show-help-notification-in-phone-input.token.d.ts +0 -5
  80. package/contragents/add-contragent-bank-account-dialog/sc-add-contragent-bank-account-dialog.component.d.ts +0 -49
  81. package/contragents/add-contragent-dialog/sc-add-contragent-dialog.component.d.ts +0 -158
  82. package/contragents/contragents-accordion/contragents-accordion-item/sc-contragents-accordion-item.component.d.ts +0 -62
  83. package/contragents/contragents-accordion/sc-contragents-accordion.component.d.ts +0 -49
  84. package/contragents/index.d.ts +0 -7
  85. package/contragents/new-contragent-bank-account-form/sc-new-contragent-bank-account-form.component.d.ts +0 -64
  86. package/contragents/new-contragent-form/sc-new-contragent-form.component.d.ts +0 -119
  87. package/contragents/sc-contragents.module.d.ts +0 -26
  88. package/delivery-address/add-delivery-address-dialog/sc-add-delivery-address-dialog.component.d.ts +0 -141
  89. package/delivery-address/delivery-address-accordion/delivery-address-accordion-item/sc-delivery-address-accordion-item.component.d.ts +0 -50
  90. package/delivery-address/delivery-address-accordion/sc-delivery-address-accordion.component.d.ts +0 -49
  91. package/delivery-address/index.d.ts +0 -4
  92. package/delivery-address/sc-delivery-address.module.d.ts +0 -25
  93. package/dialogs/index.d.ts +0 -1
  94. package/dialogs/sc-resource-preview/sc-resource-preview.component.d.ts +0 -42
  95. package/directives/abstract-price-card/abstract-sc-price-card.directive.d.ts +0 -136
  96. package/directives/index.d.ts +0 -9
  97. package/directives/links/index.d.ts +0 -4
  98. package/directives/links/sc-email-link.directive.d.ts +0 -25
  99. package/directives/links/sc-link-location.d.ts +0 -5
  100. package/directives/links/sc-links.d.ts +0 -7
  101. package/directives/links/sc-tel-link.directive.d.ts +0 -40
  102. package/directives/next-input-focus/sc-next-input-focus.directive.d.ts +0 -27
  103. package/directives/next-input-focus/sc-next-input-focus.module.d.ts +0 -10
  104. package/directives/print/sc-print.directive.d.ts +0 -21
  105. package/directives/sc-date-value-transformer.directive.d.ts +0 -8
  106. package/directives/sc-focus-first-invalid-field.directive.d.ts +0 -30
  107. package/directives/select-on-focusin/sc-select-on-focusin.directive.d.ts +0 -14
  108. package/directives/terminal-link/sc-terminal-link.directive.d.ts +0 -34
  109. package/error-handler/consts/error-change-handler.providers.d.ts +0 -6
  110. package/error-handler/error-block-status/error-block-status.component.d.ts +0 -45
  111. package/error-handler/index.d.ts +0 -4
  112. package/error-handler/interfaces/i-block-error.d.ts +0 -17
  113. package/error-handler/sc-error-handler.component.d.ts +0 -40
  114. package/esm2022/accordion/index.mjs +0 -4
  115. package/esm2022/accordion/sc-accordion-content.directive.mjs +0 -17
  116. package/esm2022/accordion/sc-accordion.component.mjs +0 -92
  117. package/esm2022/accordion/sc-accordion.module.mjs +0 -26
  118. package/esm2022/auth/enums/auth-method.mjs +0 -15
  119. package/esm2022/auth/index.mjs +0 -9
  120. package/esm2022/auth/interfaces/index.mjs +0 -3
  121. package/esm2022/auth/interfaces/sc-bank-account-form-group.mjs +0 -2
  122. package/esm2022/auth/interfaces/sc-contact-form-group.mjs +0 -2
  123. package/esm2022/auth/sc-auth.module.mjs +0 -103
  124. package/esm2022/auth/sc-sign-in-form/sc-sign-in-form-by-email/sc-sign-in-form-by-email.component.mjs +0 -100
  125. package/esm2022/auth/sc-sign-in-form/sc-sign-in-form-by-phone/sc-sign-in-form-by-phone.component.mjs +0 -81
  126. package/esm2022/auth/sc-sign-in-form/sc-sign-in-form.component.mjs +0 -89
  127. package/esm2022/auth/sc-simple-sign-up-form/sc-simple-sign-up-form.component.mjs +0 -203
  128. package/esm2022/auth/sign-up-form/sc-sign-up-form.component.mjs +0 -334
  129. package/esm2022/banner/index.mjs +0 -3
  130. package/esm2022/banner/sc-banner.component.mjs +0 -131
  131. package/esm2022/banner/sc-banner.module.mjs +0 -29
  132. package/esm2022/brands-list/index.mjs +0 -3
  133. package/esm2022/brands-list/sc-brands-list.component.mjs +0 -24
  134. package/esm2022/brands-list/sc-brands-list.module.mjs +0 -22
  135. package/esm2022/cart/add-or-editing-cart-item-dialog/add-or-editing-cart-item-form/sc-add-or-editing-cart-item-form.component.mjs +0 -229
  136. package/esm2022/cart/add-or-editing-cart-item-dialog/index.mjs +0 -3
  137. package/esm2022/cart/add-or-editing-cart-item-dialog/sc-add-or-editing-cart-item-dialog.component.mjs +0 -75
  138. package/esm2022/cart/index.mjs +0 -3
  139. package/esm2022/cart/sc-cart-add-products-from-csv-dialog/sc-cart-add-products-from-csv-dialog.component.mjs +0 -110
  140. package/esm2022/catalog/catalog-filters/collapsible/sc-catalog-filter-collapsible.component.mjs +0 -59
  141. package/esm2022/catalog/catalog-filters/index.mjs +0 -5
  142. package/esm2022/catalog/catalog-filters/sc-catalog-filters.component.mjs +0 -402
  143. package/esm2022/catalog/catalog-filters/tokens/sc-catalog-products-filters.mjs +0 -10
  144. package/esm2022/catalog/catalog-filters/tokens/sc-catalog-show-products-recursively.mjs +0 -6
  145. package/esm2022/catalog/category-card/sc-category-card.component.mjs +0 -102
  146. package/esm2022/catalog/cost-with-discount/cost-with-discount.component.mjs +0 -39
  147. package/esm2022/catalog/download-price-list/sc-download-price-list.component.mjs +0 -56
  148. package/esm2022/catalog/hover-image-carousel/sc-hover-image-carousel.component.mjs +0 -76
  149. package/esm2022/catalog/index.mjs +0 -16
  150. package/esm2022/catalog/input-quantity/sc-input-quantity.component.mjs +0 -189
  151. package/esm2022/catalog/notify-when-in-stock-dialog/index.mjs +0 -3
  152. package/esm2022/catalog/notify-when-in-stock-dialog/sc-notify-when-in-stock-dialog.component.mjs +0 -173
  153. package/esm2022/catalog/notify-when-in-stock-dialog/sc-product-in-all-warehouses.pipe.mjs +0 -35
  154. package/esm2022/catalog/price-card/sc-price-card.component.mjs +0 -73
  155. package/esm2022/catalog/price-card-inline/sc-price-card-inline.component.mjs +0 -56
  156. package/esm2022/catalog/price-history/sc-price-history.component.mjs +0 -140
  157. package/esm2022/catalog/price-list-pagination/sc-price-list-pagination.component.mjs +0 -65
  158. package/esm2022/catalog/price-warehouse-stock/sc-price-warehouse-stock.component.mjs +0 -61
  159. package/esm2022/catalog/sc-catalog.module.mjs +0 -126
  160. package/esm2022/catalog/sc-favorite-button/sc-favorite-button.component.mjs +0 -42
  161. package/esm2022/catalog/seo-tags/sc-seo-tags.component.mjs +0 -25
  162. package/esm2022/configurators/index.mjs +0 -4
  163. package/esm2022/configurators/models/index.mjs +0 -4
  164. package/esm2022/configurators/models/sandwich/sc-i-configurator-search-product-sandwich.mjs +0 -2
  165. package/esm2022/configurators/models/sandwich/sc-i-sandwich-settings.mjs +0 -2
  166. package/esm2022/configurators/models/sandwich_m2/sc-i-sandwich-m2-settings.mjs +0 -2
  167. package/esm2022/configurators/sandwich/index.mjs +0 -4
  168. package/esm2022/configurators/sandwich/sandwich-skeleton/sc-sandwich-skeleton.component.mjs +0 -14
  169. package/esm2022/configurators/sandwich/sc-i-new-cart-item-sandwich.mjs +0 -2
  170. package/esm2022/configurators/sandwich/sc-sandwich.component.mjs +0 -382
  171. package/esm2022/configurators/sandwich_m2/index.mjs +0 -5
  172. package/esm2022/configurators/sandwich_m2/sandwich-m2-skeleton/sc-sandwich-m2-skeleton.component.mjs +0 -14
  173. package/esm2022/configurators/sandwich_m2/sc-i-new-cart-item-sandwich-m2.mjs +0 -2
  174. package/esm2022/configurators/sandwich_m2/sc-sandwich-m2-item-submit-state.mjs +0 -5
  175. package/esm2022/configurators/sandwich_m2/sc-sandwich-m2.component.mjs +0 -561
  176. package/esm2022/contacts/add-contact-dialog/sc-add-contact-dialog.component.mjs +0 -91
  177. package/esm2022/contacts/contacts-accordion/sc-contacts-accordion.component.mjs +0 -37
  178. package/esm2022/contacts/index.mjs +0 -8
  179. package/esm2022/contacts/manager-card/sc-manager-card.component.mjs +0 -58
  180. package/esm2022/contacts/manager-card-push/sc-manager-card-push.component.mjs +0 -28
  181. package/esm2022/contacts/new-contact-form/sc-new-contact-form.component.mjs +0 -37
  182. package/esm2022/contacts/sc-contacts.module.mjs +0 -89
  183. package/esm2022/contacts/tokens/index.mjs +0 -3
  184. package/esm2022/contacts/tokens/sc-manager-qr-handler.token.mjs +0 -25
  185. package/esm2022/contacts/tokens/sc-show-help-notification-in-phone-input.token.mjs +0 -9
  186. package/esm2022/contragents/add-contragent-bank-account-dialog/sc-add-contragent-bank-account-dialog.component.mjs +0 -81
  187. package/esm2022/contragents/add-contragent-dialog/sc-add-contragent-dialog.component.mjs +0 -266
  188. package/esm2022/contragents/contragents-accordion/contragents-accordion-item/sc-contragents-accordion-item.component.mjs +0 -74
  189. package/esm2022/contragents/contragents-accordion/sc-contragents-accordion.component.mjs +0 -68
  190. package/esm2022/contragents/index.mjs +0 -8
  191. package/esm2022/contragents/new-contragent-bank-account-form/sc-new-contragent-bank-account-form.component.mjs +0 -72
  192. package/esm2022/contragents/new-contragent-form/sc-new-contragent-form.component.mjs +0 -224
  193. package/esm2022/contragents/sc-contragents.module.mjs +0 -115
  194. package/esm2022/delivery-address/add-delivery-address-dialog/sc-add-delivery-address-dialog.component.mjs +0 -248
  195. package/esm2022/delivery-address/delivery-address-accordion/delivery-address-accordion-item/sc-delivery-address-accordion-item.component.mjs +0 -60
  196. package/esm2022/delivery-address/delivery-address-accordion/sc-delivery-address-accordion.component.mjs +0 -68
  197. package/esm2022/delivery-address/index.mjs +0 -5
  198. package/esm2022/delivery-address/sc-delivery-address.module.mjs +0 -96
  199. package/esm2022/dialogs/index.mjs +0 -2
  200. package/esm2022/dialogs/sc-resource-preview/sc-resource-preview.component.mjs +0 -73
  201. package/esm2022/directives/abstract-price-card/abstract-sc-price-card.directive.mjs +0 -170
  202. package/esm2022/directives/index.mjs +0 -10
  203. package/esm2022/directives/links/index.mjs +0 -5
  204. package/esm2022/directives/links/sc-email-link.directive.mjs +0 -49
  205. package/esm2022/directives/links/sc-link-location.mjs +0 -2
  206. package/esm2022/directives/links/sc-links.mjs +0 -8
  207. package/esm2022/directives/links/sc-tel-link.directive.mjs +0 -79
  208. package/esm2022/directives/next-input-focus/sc-next-input-focus.directive.mjs +0 -70
  209. package/esm2022/directives/next-input-focus/sc-next-input-focus.module.mjs +0 -19
  210. package/esm2022/directives/print/sc-print.directive.mjs +0 -36
  211. package/esm2022/directives/sc-date-value-transformer.directive.mjs +0 -30
  212. package/esm2022/directives/sc-focus-first-invalid-field.directive.mjs +0 -85
  213. package/esm2022/directives/select-on-focusin/sc-select-on-focusin.directive.mjs +0 -31
  214. package/esm2022/directives/terminal-link/sc-terminal-link.directive.mjs +0 -69
  215. package/esm2022/error-handler/consts/error-change-handler.providers.mjs +0 -10
  216. package/esm2022/error-handler/error-block-status/error-block-status.component.mjs +0 -88
  217. package/esm2022/error-handler/index.mjs +0 -5
  218. package/esm2022/error-handler/interfaces/i-block-error.mjs +0 -2
  219. package/esm2022/error-handler/sc-error-handler.component.mjs +0 -58
  220. package/esm2022/feedback/feedback-form/sc-feedback-form.component.mjs +0 -344
  221. package/esm2022/feedback/gratitude/sc-gratitude.component.mjs +0 -32
  222. package/esm2022/feedback/index.mjs +0 -4
  223. package/esm2022/feedback/interfaces/index.mjs +0 -2
  224. package/esm2022/feedback/interfaces/sc-feedback-form-config.mjs +0 -2
  225. package/esm2022/files/directives/index.mjs +0 -3
  226. package/esm2022/files/directives/tree-top.directive.mjs +0 -63
  227. package/esm2022/files/directives/tree.directive.mjs +0 -47
  228. package/esm2022/files/file-tree-item/file-tree-item.component.mjs +0 -18
  229. package/esm2022/files/files-and-documents/files-and-documents.component.mjs +0 -61
  230. package/esm2022/files/files-and-documents.module.mjs +0 -28
  231. package/esm2022/files/index.mjs +0 -6
  232. package/esm2022/files/interfaces/tree-node.mjs +0 -2
  233. package/esm2022/files/services/index.mjs +0 -3
  234. package/esm2022/files/services/tree-icon.service.mjs +0 -49
  235. package/esm2022/files/services/tree-loader.service.mjs +0 -62
  236. package/esm2022/form-fields/addresses-selection-field/sc-addresses-selection-field.component.mjs +0 -156
  237. package/esm2022/form-fields/form-fields.module.mjs +0 -66
  238. package/esm2022/form-fields/index.mjs +0 -4
  239. package/esm2022/form-fields/suggestion-field/sc-suggestion-field.component.mjs +0 -174
  240. package/esm2022/icons/index.mjs +0 -2
  241. package/esm2022/icons/sc-client-ui-icons-name.mjs +0 -99
  242. package/esm2022/loader/index.mjs +0 -2
  243. package/esm2022/loader/sc-i-loader.mjs +0 -2
  244. package/esm2022/masks/index.mjs +0 -8
  245. package/esm2022/masks/sc-account-number-mask.mjs +0 -7
  246. package/esm2022/masks/sc-bic-mask.mjs +0 -7
  247. package/esm2022/masks/sc-correspondent-account-mask.mjs +0 -7
  248. package/esm2022/masks/sc-inn-mask.mjs +0 -13
  249. package/esm2022/masks/sc-kpp-mask.mjs +0 -7
  250. package/esm2022/masks/sc-okpo-mask.mjs +0 -13
  251. package/esm2022/masks/sc-phone-verification-code-mask.mjs +0 -7
  252. package/esm2022/methods/index.mjs +0 -2
  253. package/esm2022/methods/sc-get-current-route.mjs +0 -14
  254. package/esm2022/models/i-sc-image.mjs +0 -2
  255. package/esm2022/models/index.mjs +0 -2
  256. package/esm2022/news/index.mjs +0 -4
  257. package/esm2022/news/news-card/sc-news-card.component.mjs +0 -34
  258. package/esm2022/news/news-card-skeleton/sc-news-card-skeleton.component.mjs +0 -31
  259. package/esm2022/news/sc-news.module.mjs +0 -26
  260. package/esm2022/noindex-wrapper/directives/index.mjs +0 -2
  261. package/esm2022/noindex-wrapper/directives/sc-noindex.directive.mjs +0 -58
  262. package/esm2022/noindex-wrapper/index.mjs +0 -3
  263. package/esm2022/noindex-wrapper/sc-noindex-wrapper.component.mjs +0 -18
  264. package/esm2022/order/directives/index.mjs +0 -3
  265. package/esm2022/order/directives/sc-order-accessor.directive.mjs +0 -28
  266. package/esm2022/order/directives/sc-order-options.mjs +0 -11
  267. package/esm2022/order/draft/sc-draft.component.mjs +0 -118
  268. package/esm2022/order/index.mjs +0 -10
  269. package/esm2022/order/models/sc-i-cart-items-by-direction.mjs +0 -22
  270. package/esm2022/order/order-item/sc-order-item.component.mjs +0 -108
  271. package/esm2022/order/order-items-list/sc-order-items-list.component.mjs +0 -208
  272. package/esm2022/order/order-items-list-by-directions/sc-order-items-list-by-directions.component.mjs +0 -75
  273. package/esm2022/order/order-items-list-by-stock/sc-order-items-list-by-stock.component.mjs +0 -75
  274. package/esm2022/order/sc-order.module.mjs +0 -52
  275. package/esm2022/order/sc-payment-status/sc-payment-status.component.mjs +0 -35
  276. package/esm2022/pages/frequently-asked-questions/sc-frequently-asked-questions.component.mjs +0 -49
  277. package/esm2022/pages/frequently-asked-questions/sc-page-size-options.mjs +0 -8
  278. package/esm2022/pages/frequently-asked-questions-group-selector/sc-frequently-asked-questions-group-selector.component.mjs +0 -59
  279. package/esm2022/pages/frequently-asked-questions-with-groups/sc-frequently-asked-questions-with-groups.component.mjs +0 -107
  280. package/esm2022/pages/index.mjs +0 -7
  281. package/esm2022/pages/personal-data-processing-policy/sc-personal-data-processing-policy.component.mjs +0 -46
  282. package/esm2022/pages/privacy-policy/sc-privacy-policy.component.mjs +0 -30
  283. package/esm2022/pages/public-offer/sc-public-offer.component.mjs +0 -50
  284. package/esm2022/pipes/index.mjs +0 -3
  285. package/esm2022/pipes/sc-format-date.mjs +0 -33
  286. package/esm2022/pipes/sc-phone-format.mjs +0 -44
  287. package/esm2022/profile/index.mjs +0 -3
  288. package/esm2022/profile/sc-profile-accordions-content/sc-profile-accordions-content.component.mjs +0 -174
  289. package/esm2022/profile/sc-profile.module.mjs +0 -73
  290. package/esm2022/providers/cleanup-recaptcha-artifacts.mjs +0 -30
  291. package/esm2022/providers/date-value-transformer/index.mjs +0 -4
  292. package/esm2022/providers/date-value-transformer/sc-date-value-transformer-types.mjs +0 -2
  293. package/esm2022/providers/date-value-transformer/sc-date-value-transformer-with-end-time.mjs +0 -26
  294. package/esm2022/providers/date-value-transformer/sc-date-value-transformer-with-start-time.mjs +0 -37
  295. package/esm2022/providers/index.mjs +0 -17
  296. package/esm2022/providers/sc-allow-select-terminated.mjs +0 -8
  297. package/esm2022/providers/sc-banner-duration.mjs +0 -8
  298. package/esm2022/providers/sc-country-ids.mjs +0 -8
  299. package/esm2022/providers/sc-date-formatter.mjs +0 -15
  300. package/esm2022/providers/sc-date-value-transformer.mjs +0 -12
  301. package/esm2022/providers/sc-debounce-time-default.mjs +0 -9
  302. package/esm2022/providers/sc-dialog-service.providers.mjs +0 -6
  303. package/esm2022/providers/sc-help-notification-close.mjs +0 -9
  304. package/esm2022/providers/sc-help-notification-limit.mjs +0 -8
  305. package/esm2022/providers/sc-hidden-print-elements.token.mjs +0 -10
  306. package/esm2022/providers/sc-max-files-in-form-input.mjs +0 -8
  307. package/esm2022/providers/sc-notify-when-in-stock-required-fields.mjs +0 -8
  308. package/esm2022/providers/sc-page-size-options.mjs +0 -8
  309. package/esm2022/providers/sc-user-providers.mjs +0 -38
  310. package/esm2022/providers/sc-verification-code-timeout.mjs +0 -8
  311. package/esm2022/public-api.mjs +0 -35
  312. package/esm2022/qrcode/index.mjs +0 -3
  313. package/esm2022/qrcode/qrcode-dialog/sc-qrcode-dialog.component.mjs +0 -58
  314. package/esm2022/qrcode/sc-qrcode.module.mjs +0 -25
  315. package/esm2022/samples/index.mjs +0 -5
  316. package/esm2022/samples/interfaces/index.mjs +0 -3
  317. package/esm2022/samples/interfaces/sc-i-preview-sample.mjs +0 -2
  318. package/esm2022/samples/interfaces/sc-preview-mosquito-config.mjs +0 -2
  319. package/esm2022/samples/preview-sample/sc-preview-sample.component.mjs +0 -42
  320. package/esm2022/samples/sc-preview-samples-mosquito/sc-preview-samples-mosquito.component.mjs +0 -63
  321. package/esm2022/samples/sc-sample.module.mjs +0 -66
  322. package/esm2022/services/index.mjs +0 -3
  323. package/esm2022/services/print.service.mjs +0 -49
  324. package/esm2022/services/sc-help-notification.service.mjs +0 -100
  325. package/esm2022/share-button/index.mjs +0 -3
  326. package/esm2022/share-button/sc-share-button.component.mjs +0 -35
  327. package/esm2022/share-button/sc-share-button.module.mjs +0 -22
  328. package/esm2022/snabcentr-client-ui.mjs +0 -5
  329. package/esm2022/user/index.mjs +0 -6
  330. package/esm2022/user/reset-user-password/sc-reset-user-password.component.mjs +0 -74
  331. package/esm2022/user/sc-user.module.mjs +0 -86
  332. package/esm2022/user/update-user-info-dialog/sc-update-user-info-dialog.component.mjs +0 -121
  333. package/esm2022/user/user-managers/sc-user-managers.component.mjs +0 -40
  334. package/esm2022/user/user-phone-approve-dialog/sc-user-phone-approve-dialog.component.mjs +0 -105
  335. package/esm2022/validators/index.mjs +0 -7
  336. package/esm2022/validators/sc-at-least-one-required-validator.mjs +0 -25
  337. package/esm2022/validators/sc-bic-validator.mjs +0 -10
  338. package/esm2022/validators/sc-correspondent-account-validator.mjs +0 -10
  339. package/esm2022/validators/sc-password-confirm-matching-validator.mjs +0 -17
  340. package/esm2022/validators/sc-phone-validator.mjs +0 -14
  341. package/esm2022/validators/step-validator.mjs +0 -18
  342. package/esm2022/verification/index.mjs +0 -3
  343. package/esm2022/verification/sc-verification.module.mjs +0 -86
  344. package/esm2022/verification/verification-phone-check-form/sc-verification-phone-check-form.component.mjs +0 -259
  345. package/feedback/feedback-form/sc-feedback-form.component.d.ts +0 -163
  346. package/feedback/gratitude/sc-gratitude.component.d.ts +0 -20
  347. package/feedback/index.d.ts +0 -3
  348. package/feedback/interfaces/index.d.ts +0 -1
  349. package/feedback/interfaces/sc-feedback-form-config.d.ts +0 -23
  350. package/files/directives/index.d.ts +0 -2
  351. package/files/directives/tree-top.directive.d.ts +0 -33
  352. package/files/directives/tree.directive.d.ts +0 -35
  353. package/files/file-tree-item/file-tree-item.component.d.ts +0 -9
  354. package/files/files-and-documents/files-and-documents.component.d.ts +0 -27
  355. package/files/files-and-documents.module.d.ts +0 -17
  356. package/files/index.d.ts +0 -5
  357. package/files/interfaces/tree-node.d.ts +0 -29
  358. package/files/services/index.d.ts +0 -2
  359. package/files/services/tree-icon.service.d.ts +0 -23
  360. package/files/services/tree-loader.service.d.ts +0 -43
  361. package/form-fields/addresses-selection-field/sc-addresses-selection-field.component.d.ts +0 -78
  362. package/form-fields/form-fields.module.d.ts +0 -18
  363. package/form-fields/index.d.ts +0 -3
  364. package/form-fields/suggestion-field/sc-suggestion-field.component.d.ts +0 -73
  365. package/icons/index.d.ts +0 -1
  366. package/icons/sc-client-ui-icons-name.d.ts +0 -4
  367. package/index.d.ts +0 -5
  368. package/loader/index.d.ts +0 -1
  369. package/loader/sc-i-loader.d.ts +0 -9
  370. package/masks/index.d.ts +0 -7
  371. package/masks/sc-account-number-mask.d.ts +0 -5
  372. package/masks/sc-bic-mask.d.ts +0 -5
  373. package/masks/sc-correspondent-account-mask.d.ts +0 -5
  374. package/masks/sc-inn-mask.d.ts +0 -9
  375. package/masks/sc-kpp-mask.d.ts +0 -5
  376. package/masks/sc-okpo-mask.d.ts +0 -9
  377. package/masks/sc-phone-verification-code-mask.d.ts +0 -5
  378. package/methods/index.d.ts +0 -1
  379. package/methods/sc-get-current-route.d.ts +0 -8
  380. package/models/i-sc-image.d.ts +0 -17
  381. package/models/index.d.ts +0 -1
  382. package/news/index.d.ts +0 -3
  383. package/news/news-card/sc-news-card.component.d.ts +0 -22
  384. package/news/news-card-skeleton/sc-news-card-skeleton.component.d.ts +0 -16
  385. package/news/sc-news.module.d.ts +0 -16
  386. package/noindex-wrapper/directives/index.d.ts +0 -1
  387. package/noindex-wrapper/directives/sc-noindex.directive.d.ts +0 -29
  388. package/noindex-wrapper/index.d.ts +0 -2
  389. package/noindex-wrapper/sc-noindex-wrapper.component.d.ts +0 -9
  390. package/order/directives/index.d.ts +0 -2
  391. package/order/directives/sc-order-accessor.directive.d.ts +0 -13
  392. package/order/directives/sc-order-options.d.ts +0 -14
  393. package/order/draft/sc-draft.component.d.ts +0 -63
  394. package/order/index.d.ts +0 -9
  395. package/order/models/sc-i-cart-items-by-direction.d.ts +0 -25
  396. package/order/order-item/sc-order-item.component.d.ts +0 -39
  397. package/order/order-items-list/sc-order-items-list.component.d.ts +0 -109
  398. package/order/order-items-list-by-directions/sc-order-items-list-by-directions.component.d.ts +0 -58
  399. package/order/order-items-list-by-stock/sc-order-items-list-by-stock.component.d.ts +0 -55
  400. package/order/sc-order.module.d.ts +0 -18
  401. package/order/sc-payment-status/sc-payment-status.component.d.ts +0 -25
  402. package/pages/frequently-asked-questions/sc-frequently-asked-questions.component.d.ts +0 -22
  403. package/pages/frequently-asked-questions/sc-page-size-options.d.ts +0 -5
  404. package/pages/frequently-asked-questions-group-selector/sc-frequently-asked-questions-group-selector.component.d.ts +0 -28
  405. package/pages/frequently-asked-questions-with-groups/sc-frequently-asked-questions-with-groups.component.d.ts +0 -79
  406. package/pages/index.d.ts +0 -6
  407. package/pages/personal-data-processing-policy/sc-personal-data-processing-policy.component.d.ts +0 -17
  408. package/pages/privacy-policy/sc-privacy-policy.component.d.ts +0 -17
  409. package/pages/public-offer/sc-public-offer.component.d.ts +0 -22
  410. package/pipes/index.d.ts +0 -2
  411. package/pipes/sc-format-date.d.ts +0 -20
  412. package/pipes/sc-phone-format.d.ts +0 -21
  413. package/profile/index.d.ts +0 -2
  414. package/profile/sc-profile-accordions-content/sc-profile-accordions-content.component.d.ts +0 -126
  415. package/profile/sc-profile.module.d.ts +0 -23
  416. package/providers/cleanup-recaptcha-artifacts.d.ts +0 -7
  417. package/providers/date-value-transformer/index.d.ts +0 -3
  418. package/providers/date-value-transformer/sc-date-value-transformer-types.d.ts +0 -9
  419. package/providers/date-value-transformer/sc-date-value-transformer-with-end-time.d.ts +0 -16
  420. package/providers/date-value-transformer/sc-date-value-transformer-with-start-time.d.ts +0 -22
  421. package/providers/index.d.ts +0 -16
  422. package/providers/sc-allow-select-terminated.d.ts +0 -5
  423. package/providers/sc-banner-duration.d.ts +0 -5
  424. package/providers/sc-country-ids.d.ts +0 -5
  425. package/providers/sc-date-formatter.d.ts +0 -6
  426. package/providers/sc-date-value-transformer.d.ts +0 -5
  427. package/providers/sc-debounce-time-default.d.ts +0 -5
  428. package/providers/sc-dialog-service.providers.d.ts +0 -45
  429. package/providers/sc-help-notification-close.d.ts +0 -6
  430. package/providers/sc-help-notification-limit.d.ts +0 -5
  431. package/providers/sc-hidden-print-elements.token.d.ts +0 -6
  432. package/providers/sc-max-files-in-form-input.d.ts +0 -5
  433. package/providers/sc-notify-when-in-stock-required-fields.d.ts +0 -5
  434. package/providers/sc-page-size-options.d.ts +0 -5
  435. package/providers/sc-user-providers.d.ts +0 -21
  436. package/providers/sc-verification-code-timeout.d.ts +0 -5
  437. package/public-api.d.ts +0 -34
  438. package/qrcode/index.d.ts +0 -2
  439. package/qrcode/qrcode-dialog/sc-qrcode-dialog.component.d.ts +0 -37
  440. package/qrcode/sc-qrcode.module.d.ts +0 -14
  441. package/samples/index.d.ts +0 -4
  442. package/samples/interfaces/index.d.ts +0 -2
  443. package/samples/interfaces/sc-i-preview-sample.d.ts +0 -56
  444. package/samples/interfaces/sc-preview-mosquito-config.d.ts +0 -62
  445. package/samples/preview-sample/sc-preview-sample.component.d.ts +0 -30
  446. package/samples/sc-preview-samples-mosquito/sc-preview-samples-mosquito.component.d.ts +0 -50
  447. package/samples/sc-sample.module.d.ts +0 -19
  448. package/services/index.d.ts +0 -2
  449. package/services/print.service.d.ts +0 -31
  450. package/services/sc-help-notification.service.d.ts +0 -70
  451. package/share-button/index.d.ts +0 -2
  452. package/share-button/sc-share-button.component.d.ts +0 -22
  453. package/share-button/sc-share-button.module.d.ts +0 -12
  454. package/user/index.d.ts +0 -5
  455. package/user/reset-user-password/sc-reset-user-password.component.d.ts +0 -46
  456. package/user/sc-user.module.d.ts +0 -24
  457. package/user/update-user-info-dialog/sc-update-user-info-dialog.component.d.ts +0 -63
  458. package/user/user-managers/sc-user-managers.component.d.ts +0 -23
  459. package/user/user-phone-approve-dialog/sc-user-phone-approve-dialog.component.d.ts +0 -53
  460. package/validators/index.d.ts +0 -6
  461. package/validators/sc-at-least-one-required-validator.d.ts +0 -10
  462. package/validators/sc-bic-validator.d.ts +0 -8
  463. package/validators/sc-correspondent-account-validator.d.ts +0 -8
  464. package/validators/sc-password-confirm-matching-validator.d.ts +0 -8
  465. package/validators/sc-phone-validator.d.ts +0 -5
  466. package/validators/step-validator.d.ts +0 -8
  467. package/verification/index.d.ts +0 -2
  468. package/verification/sc-verification.module.d.ts +0 -21
  469. package/verification/verification-phone-check-form/sc-verification-phone-check-form.component.d.ts +0 -145
@@ -1,81 +0,0 @@
1
- /* eslint-disable no-restricted-syntax,@typescript-eslint/unbound-method */
2
- import { HttpErrorResponse } from '@angular/common/http';
3
- import { ChangeDetectionStrategy, Component, Inject } from '@angular/core';
4
- import { FormControl, FormGroup, Validators } from '@angular/forms';
5
- import { tuiIsFalsy, tuiMarkControlAsTouchedAndValidate } from '@taiga-ui/cdk';
6
- import { POLYMORPHEUS_CONTEXT } from '@taiga-ui/polymorpheus';
7
- import { catchError, filter, map, of, share, startWith, Subject, switchMap, tap } from 'rxjs';
8
- import { scBicValidator, scCorrespondentAccountValidator } from '../../validators';
9
- import * as i0 from "@angular/core";
10
- import * as i1 from "@snabcentr/client-core";
11
- import * as i2 from "@angular/forms";
12
- import * as i3 from "@taiga-ui/core";
13
- import * as i4 from "@taiga-ui/kit";
14
- import * as i5 from "../new-contragent-bank-account-form/sc-new-contragent-bank-account-form.component";
15
- import * as i6 from "@angular/common";
16
- /**
17
- * Компонент формы создания нового банковского счета контрагента.
18
- */
19
- export class ScAddContragentBankAccountsDialogComponent {
20
- /**
21
- * Инициализирует экземпляр класса {@link ScAddContragentBankAccountsFormComponent}.
22
- *
23
- * @param contragentService Сервис работы с контрагентами.
24
- * @param context Контекст диалогового окна, в котором открыт компонент.
25
- */
26
- constructor(contragentService, context) {
27
- this.contragentService = contragentService;
28
- this.context = context;
29
- /**
30
- * Группа с полем банковских реквизитов.
31
- */
32
- this.form = new FormGroup({
33
- bankName: new FormControl(null, Validators.required),
34
- bic: new FormControl(null, [Validators.required, Validators.minLength(9), scBicValidator]),
35
- accountNumber: new FormControl(null, [Validators.required, Validators.minLength(20)]),
36
- correspondentAccount: new FormControl(null, [Validators.required, Validators.minLength(20), scCorrespondentAccountValidator]),
37
- currencyId: new FormControl(null, Validators.required),
38
- });
39
- /**
40
- * {@link Subject} события отправки формы.
41
- */
42
- this.onSubmit = new Subject();
43
- /**
44
- * {@link Observable} запроса создания банковского счёта контрагента.
45
- */
46
- this.request$ = this.onSubmit.pipe(map(() => this.form.value), filter((value) => this.form.valid), switchMap((value) => {
47
- return this.contragentService.createContragentBankAccount$(this.context.data.contragentId, value).pipe(tap((bankAccount) => {
48
- this.context.completeWith(bankAccount);
49
- }), catchError((error) => {
50
- tuiMarkControlAsTouchedAndValidate(this.form);
51
- if (error instanceof HttpErrorResponse) {
52
- const { errors, message } = error.error;
53
- for (const key in errors) {
54
- if (Object.hasOwn(errors, key)) {
55
- // eslint-disable-next-line security/detect-object-injection
56
- this.form.get(key)?.setErrors({ serverResponse: errors[key] });
57
- }
58
- }
59
- if (!errors && message) {
60
- this.form.setErrors({ serverResponse: [message] });
61
- }
62
- }
63
- return of({});
64
- }), startWith(null));
65
- }), share());
66
- /**
67
- * {@link Observable} изменения состояния загрузки данных аутентификации по номеру телефона.
68
- */
69
- this.loading$ = this.request$.pipe(map(tuiIsFalsy));
70
- }
71
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScAddContragentBankAccountsDialogComponent, deps: [{ token: i1.ScContragentService }, { token: POLYMORPHEUS_CONTEXT }], target: i0.ɵɵFactoryTarget.Component }); }
72
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: ScAddContragentBankAccountsDialogComponent, selector: "sc-add-contragent-bank-account-dialog", ngImport: i0, template: "<form\n [formGroup]=\"form\"\n (ngSubmit)=\"onSubmit.next()\"\n class=\"flex flex-col gap-3\"\n>\n <sc-new-contragent-bank-account-form\n [opf]=\"$any(context.data).opf.slug\"\n [form]=\"form\"\n />\n <div class=\"flex justify-center gap-4\">\n <button\n tuiButton\n (click)=\"context.$implicit.complete()\"\n type=\"button\"\n iconStart=\"@tui.x\"\n appearance=\"secondary\"\n >\n \u041E\u0442\u043C\u0435\u043D\u0430\n </button>\n <button\n tuiButton\n [disabled]=\"form.invalid\"\n [loading]=\"!!(loading$ | async)\"\n type=\"submit\"\n iconStart=\"@tui.save\"\n >\n \u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C\n </button>\n </div>\n</form>\n", dependencies: [{ kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "component", type: i4.TuiButtonLoading, selector: "[tuiButton][loading],[tuiIconButton][loading]", inputs: ["size", "loading"] }, { kind: "component", type: i5.ScNewContragentBankAccountsFormComponent, selector: "sc-new-contragent-bank-account-form", inputs: ["form", "opf"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
73
- }
74
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScAddContragentBankAccountsDialogComponent, decorators: [{
75
- type: Component,
76
- args: [{ selector: 'sc-add-contragent-bank-account-dialog', changeDetection: ChangeDetectionStrategy.OnPush, template: "<form\n [formGroup]=\"form\"\n (ngSubmit)=\"onSubmit.next()\"\n class=\"flex flex-col gap-3\"\n>\n <sc-new-contragent-bank-account-form\n [opf]=\"$any(context.data).opf.slug\"\n [form]=\"form\"\n />\n <div class=\"flex justify-center gap-4\">\n <button\n tuiButton\n (click)=\"context.$implicit.complete()\"\n type=\"button\"\n iconStart=\"@tui.x\"\n appearance=\"secondary\"\n >\n \u041E\u0442\u043C\u0435\u043D\u0430\n </button>\n <button\n tuiButton\n [disabled]=\"form.invalid\"\n [loading]=\"!!(loading$ | async)\"\n type=\"submit\"\n iconStart=\"@tui.save\"\n >\n \u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C\n </button>\n </div>\n</form>\n" }]
77
- }], ctorParameters: () => [{ type: i1.ScContragentService }, { type: undefined, decorators: [{
78
- type: Inject,
79
- args: [POLYMORPHEUS_CONTEXT]
80
- }] }] });
81
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtYWRkLWNvbnRyYWdlbnQtYmFuay1hY2NvdW50LWRpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvY29udHJhZ2VudHMvYWRkLWNvbnRyYWdlbnQtYmFuay1hY2NvdW50LWRpYWxvZy9zYy1hZGQtY29udHJhZ2VudC1iYW5rLWFjY291bnQtZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9jb250cmFnZW50cy9hZGQtY29udHJhZ2VudC1iYW5rLWFjY291bnQtZGlhbG9nL3NjLWFkZC1jb250cmFnZW50LWJhbmstYWNjb3VudC1kaWFsb2cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMkVBQTJFO0FBRTNFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXBFLE9BQU8sRUFBRSxVQUFVLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0UsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFjLEVBQUUsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTFHLE9BQU8sRUFBRSxjQUFjLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7Ozs7Ozs7QUFFbkY7O0dBRUc7QUFNSCxNQUFNLE9BQU8sMENBQTBDO0lBZ0VuRDs7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LENBQ1YsQ0FBQztRQUVGOztXQUVHO1FBQ2EsYUFBUSxHQUF3QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztJQVlqRixDQUFDOytHQTFFSywwQ0FBMEMscURBd0V2QyxvQkFBb0I7bUdBeEV2QiwwQ0FBMEMsNkVDckJ2RCxtMkJBOEJBOzs0RkRUYSwwQ0FBMEM7a0JBTHRELFNBQVM7K0JBQ0ksdUNBQXVDLG1CQUVoQyx1QkFBdUIsQ0FBQyxNQUFNOzswQkEwRTFDLE1BQU07MkJBQUMsb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcmVzdHJpY3RlZC1zeW50YXgsQHR5cGVzY3JpcHQtZXNsaW50L3VuYm91bmQtbWV0aG9kICovXG5cbmltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU2NDb250cmFnZW50U2VydmljZSwgU2NJQXBpRXJyb3JSZXNwb25zZSwgU2NJQmFua0FjY291bnQsIFNjSUJhbmtBY2NvdW50T25EYXRhQ3JlYXRlLCBTY0lPcGYgfSBmcm9tICdAc25hYmNlbnRyL2NsaWVudC1jb3JlJztcbmltcG9ydCB7IHR1aUlzRmFsc3ksIHR1aU1hcmtDb250cm9sQXNUb3VjaGVkQW5kVmFsaWRhdGUgfSBmcm9tICdAdGFpZ2EtdWkvY2RrJztcbmltcG9ydCB7IFR1aURpYWxvZ0NvbnRleHQgfSBmcm9tICdAdGFpZ2EtdWkvY29yZSc7XG5pbXBvcnQgeyBQT0xZTU9SUEhFVVNfQ09OVEVYVCB9IGZyb20gJ0B0YWlnYS11aS9wb2x5bW9ycGhldXMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZmlsdGVyLCBtYXAsIE9ic2VydmFibGUsIG9mLCBzaGFyZSwgc3RhcnRXaXRoLCBTdWJqZWN0LCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBzY0JpY1ZhbGlkYXRvciwgc2NDb3JyZXNwb25kZW50QWNjb3VudFZhbGlkYXRvciB9IGZyb20gJy4uLy4uL3ZhbGlkYXRvcnMnO1xuXG4vKipcbiAqINCa0L7QvNC/0L7QvdC10L3RgiDRhNC+0YDQvNGLINGB0L7Qt9C00LDQvdC40Y8g0L3QvtCy0L7Qs9C+INCx0LDQvdC60L7QstGB0LrQvtCz0L4g0YHRh9C10YLQsCDQutC+0L3RgtGA0LDQs9C10L3RgtCwLlxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3NjLWFkZC1jb250cmFnZW50LWJhbmstYWNjb3VudC1kaWFsb2cnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zYy1hZGQtY29udHJhZ2VudC1iYW5rLWFjY291bnQtZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU2NBZGRDb250cmFnZW50QmFua0FjY291bnRzRGlhbG9nQ29tcG9uZW50IHtcbiAgICAvKipcbiAgICAgKiDQk9GA0YPQv9C/0LAg0YEg0L/QvtC70LXQvCDQsdCw0L3QutC+0LLRgdC60LjRhSDRgNC10LrQstC40LfQuNGC0L7Qsi5cbiAgICAgKi9cbiAgICBwdWJsaWMgZm9ybSA9IG5ldyBGb3JtR3JvdXA8e1xuICAgICAgICBiYW5rTmFtZTogRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD47XG4gICAgICAgIGJpYzogRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD47XG4gICAgICAgIGFjY291bnROdW1iZXI6IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+O1xuICAgICAgICBjb3JyZXNwb25kZW50QWNjb3VudDogRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD47XG4gICAgICAgIGN1cnJlbmN5SWQ6IEZvcm1Db250cm9sPG51bWJlciB8IG51bGw+O1xuICAgIH0+KHtcbiAgICAgICAgYmFua05hbWU6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICAgICAgYmljOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluTGVuZ3RoKDkpLCBzY0JpY1ZhbGlkYXRvcl0pLFxuICAgICAgICBhY2NvdW50TnVtYmVyOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluTGVuZ3RoKDIwKV0pLFxuICAgICAgICBjb3JyZXNwb25kZW50QWNjb3VudDogbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+KG51bGwsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbkxlbmd0aCgyMCksIHNjQ29ycmVzcG9uZGVudEFjY291bnRWYWxpZGF0b3JdKSxcbiAgICAgICAgY3VycmVuY3lJZDogbmV3IEZvcm1Db250cm9sPG51bWJlciB8IG51bGw+KG51bGwsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIFN1YmplY3R9INGB0L7QsdGL0YLQuNGPINC+0YLQv9GA0LDQstC60Lgg0YTQvtGA0LzRiy5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgb25TdWJtaXQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIE9ic2VydmFibGV9INC30LDQv9GA0L7RgdCwINGB0L7Qt9C00LDQvdC40Y8g0LHQsNC90LrQvtCy0YHQutC+0LPQviDRgdGH0ZHRgtCwINC60L7QvdGC0YDQsNCz0LXQvdGC0LAuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSByZXF1ZXN0JCA9IHRoaXMub25TdWJtaXQucGlwZShcbiAgICAgICAgbWFwKCgpID0+IHRoaXMuZm9ybS52YWx1ZSksXG4gICAgICAgIGZpbHRlcigodmFsdWUpOiB2YWx1ZSBpcyBTY0lCYW5rQWNjb3VudE9uRGF0YUNyZWF0ZSA9PiB0aGlzLmZvcm0udmFsaWQpLFxuICAgICAgICBzd2l0Y2hNYXAoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jb250cmFnZW50U2VydmljZS5jcmVhdGVDb250cmFnZW50QmFua0FjY291bnQkKHRoaXMuY29udGV4dC5kYXRhLmNvbnRyYWdlbnRJZCwgdmFsdWUpLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFwKChiYW5rQWNjb3VudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuY29tcGxldGVXaXRoKGJhbmtBY2NvdW50KTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogdW5rbm93bikgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0dWlNYXJrQ29udHJvbEFzVG91Y2hlZEFuZFZhbGlkYXRlKHRoaXMuZm9ybSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEh0dHBFcnJvclJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGVycm9ycywgbWVzc2FnZSB9ID0gZXJyb3IuZXJyb3IgYXMgU2NJQXBpRXJyb3JSZXNwb25zZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gZXJyb3JzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKE9iamVjdC5oYXNPd24oZXJyb3JzLCBrZXkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzZWN1cml0eS9kZXRlY3Qtb2JqZWN0LWluamVjdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KGtleSk/LnNldEVycm9ycyh7IHNlcnZlclJlc3BvbnNlOiBlcnJvcnNba2V5XSB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZXJyb3JzICYmIG1lc3NhZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0uc2V0RXJyb3JzKHsgc2VydmVyUmVzcG9uc2U6IFttZXNzYWdlXSB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvZih7fSBhcyBTY0lCYW5rQWNjb3VudCk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgc3RhcnRXaXRoKG51bGwpXG4gICAgICAgICAgICApO1xuICAgICAgICB9KSxcbiAgICAgICAgc2hhcmUoKVxuICAgICk7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgT2JzZXJ2YWJsZX0g0LjQt9C80LXQvdC10L3QuNGPINGB0L7RgdGC0L7Rj9C90LjRjyDQt9Cw0LPRgNGD0LfQutC4INC00LDQvdC90YvRhSDQsNGD0YLQtdC90YLQuNGE0LjQutCw0YbQuNC4INC/0L4g0L3QvtC80LXRgNGDINGC0LXQu9C10YTQvtC90LAuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGxvYWRpbmckOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5yZXF1ZXN0JC5waXBlKG1hcCh0dWlJc0ZhbHN5KSk7XG5cbiAgICAvKipcbiAgICAgKiDQmNC90LjRhtC40LDQu9C40LfQuNGA0YPQtdGCINGN0LrQt9C10LzQv9C70Y/RgCDQutC70LDRgdGB0LAge0BsaW5rIFNjQWRkQ29udHJhZ2VudEJhbmtBY2NvdW50c0Zvcm1Db21wb25lbnR9LlxuICAgICAqXG4gICAgICogQHBhcmFtIGNvbnRyYWdlbnRTZXJ2aWNlINCh0LXRgNCy0LjRgSDRgNCw0LHQvtGC0Ysg0YEg0LrQvtC90YLRgNCw0LPQtdC90YLQsNC80LguXG4gICAgICogQHBhcmFtIGNvbnRleHQg0JrQvtC90YLQtdC60YHRgiDQtNC40LDQu9C+0LPQvtCy0L7Qs9C+INC+0LrQvdCwLCDQsiDQutC+0YLQvtGA0L7QvCDQvtGC0LrRgNGL0YIg0LrQvtC80L/QvtC90LXQvdGCLlxuICAgICAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBjb250cmFnZW50U2VydmljZTogU2NDb250cmFnZW50U2VydmljZSxcbiAgICAgICAgQEluamVjdChQT0xZTU9SUEhFVVNfQ09OVEVYVClcbiAgICAgICAgcHVibGljIHJlYWRvbmx5IGNvbnRleHQ6IFR1aURpYWxvZ0NvbnRleHQ8U2NJQmFua0FjY291bnQsIHsgY29udHJhZ2VudElkOiBudW1iZXI7IG9wZjogU2NJT3BmIH0+XG4gICAgKSB7fVxufVxuIiwiPGZvcm1cbiAgICBbZm9ybUdyb3VwXT1cImZvcm1cIlxuICAgIChuZ1N1Ym1pdCk9XCJvblN1Ym1pdC5uZXh0KClcIlxuICAgIGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAtM1wiXG4+XG4gICAgPHNjLW5ldy1jb250cmFnZW50LWJhbmstYWNjb3VudC1mb3JtXG4gICAgICAgIFtvcGZdPVwiJGFueShjb250ZXh0LmRhdGEpLm9wZi5zbHVnXCJcbiAgICAgICAgW2Zvcm1dPVwiZm9ybVwiXG4gICAgLz5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNlbnRlciBnYXAtNFwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0dWlCdXR0b25cbiAgICAgICAgICAgIChjbGljayk9XCJjb250ZXh0LiRpbXBsaWNpdC5jb21wbGV0ZSgpXCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgaWNvblN0YXJ0PVwiQHR1aS54XCJcbiAgICAgICAgICAgIGFwcGVhcmFuY2U9XCJzZWNvbmRhcnlcIlxuICAgICAgICA+XG4gICAgICAgICAgICDQntGC0LzQtdC90LBcbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR1aUJ1dHRvblxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImZvcm0uaW52YWxpZFwiXG4gICAgICAgICAgICBbbG9hZGluZ109XCIhIShsb2FkaW5nJCB8IGFzeW5jKVwiXG4gICAgICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgICAgIGljb25TdGFydD1cIkB0dWkuc2F2ZVwiXG4gICAgICAgID5cbiAgICAgICAgICAgINCh0L7RhdGA0LDQvdC40YLRjFxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbjwvZm9ybT5cbiJdfQ==
@@ -1,266 +0,0 @@
1
- /* eslint-disable class-methods-use-this,@typescript-eslint/unbound-method,no-restricted-syntax */
2
- import { HttpErrorResponse } from '@angular/common/http';
3
- import { ChangeDetectionStrategy, Component, inject } from '@angular/core';
4
- import { FormControl, FormGroup, Validators } from '@angular/forms';
5
- import { ScContragentService, ScConvertersService, ScLocationsService, ScOpfList, ScReferencesService, ScUserMetrikaGoalsEnum, ScUserMetrikaService, } from '@snabcentr/client-core';
6
- import { tuiIsFalsy, tuiMarkControlAsTouchedAndValidate } from '@taiga-ui/cdk';
7
- import { POLYMORPHEUS_CONTEXT } from '@taiga-ui/polymorpheus';
8
- import { catchError, filter, map, of, share, startWith, Subject, switchMap, tap } from 'rxjs';
9
- import { scBicValidator, scCorrespondentAccountValidator } from '../../validators';
10
- import { phoneValidator } from '../../validators/sc-phone-validator';
11
- import * as i0 from "@angular/core";
12
- import * as i1 from "@angular/forms";
13
- import * as i2 from "@angular/common";
14
- import * as i3 from "@taiga-ui/core";
15
- import * as i4 from "../../contacts/new-contact-form/sc-new-contact-form.component";
16
- import * as i5 from "@taiga-ui/kit";
17
- import * as i6 from "../new-contragent-bank-account-form/sc-new-contragent-bank-account-form.component";
18
- import * as i7 from "../new-contragent-form/sc-new-contragent-form.component";
19
- /**
20
- * Компотен добавления контрагента.
21
- */
22
- export class ScAddContragentDialogComponent {
23
- constructor() {
24
- /**
25
- * Сервис справочников.
26
- */
27
- this.referencesService = inject(ScReferencesService);
28
- /**
29
- * Сервис работы с контрагентами.
30
- */
31
- this.contragentService = inject(ScContragentService);
32
- /**
33
- * Сервис конвертации данных.
34
- */
35
- this.convertersService = inject(ScConvertersService);
36
- /**
37
- * Сервис для сбора метрик о действиях пользователей.
38
- */
39
- this.userMetrikaService = inject(ScUserMetrikaService);
40
- /**
41
- * Сервис для получения списков стран, регионов, городов.
42
- */
43
- this.locationsService = inject(ScLocationsService);
44
- /**
45
- * Контекст диалогового окна, в котором открыт компонент.
46
- */
47
- this.context = inject(POLYMORPHEUS_CONTEXT);
48
- /**
49
- * Перечисление организационно-правовых форм.
50
- */
51
- this.opfListEnum = ScOpfList;
52
- /**
53
- * Индекс этапа.
54
- */
55
- this.stepIndex = 0;
56
- /**
57
- * Список этапов создания контрагента.
58
- */
59
- this.steps = ['Общие данные контрагента', 'Контакты контрагента', 'Банковские реквизиты контрагента'];
60
- /**
61
- * Родительская `FormGroup`.
62
- */
63
- this.form = new FormGroup({
64
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
65
- contragent: new FormGroup({}),
66
- });
67
- /**
68
- * {@link Subject} события отправки формы.
69
- */
70
- this.onSubmit = new Subject();
71
- /**
72
- * {@link Observable} запроса добавления контрагента.
73
- */
74
- this.request$ = this.onSubmit.pipe(map(() => this.form.value.contragent), filter((value) => this.form.valid), switchMap((value) => {
75
- return this.contragentService.createContragent$(this.convertersService.removeNullRecursive(value)).pipe(tap((contragent) => {
76
- this.context.completeWith(contragent);
77
- }), catchError((error) => {
78
- tuiMarkControlAsTouchedAndValidate(this.form);
79
- if (error instanceof HttpErrorResponse) {
80
- const { errors, message } = error.error;
81
- for (const key in errors) {
82
- if (Object.hasOwn(errors, key)) {
83
- // eslint-disable-next-line security/detect-object-injection
84
- this.form.controls.contragent.get(key)?.setErrors({ serverResponse: errors[key] });
85
- }
86
- }
87
- if (!errors && message) {
88
- this.form.setErrors({ serverResponse: [message] });
89
- }
90
- this.stepIndex = this.steps.findIndex((_, index) => !this.canNextStep(index));
91
- }
92
- return of({});
93
- }), startWith(null));
94
- }), share());
95
- /**
96
- * {@link Observable} изменения состояния загрузки данных аутентификации по номеру телефона.
97
- */
98
- this.loading$ = this.request$.pipe(map(tuiIsFalsy));
99
- }
100
- /** @inheritdoc */
101
- ngAfterViewInit() {
102
- this.userMetrikaService.emitUserMetrikaEvent({
103
- target: ScUserMetrikaGoalsEnum.userProfileContragentAddShow,
104
- });
105
- }
106
- /**
107
- * Текущий выбранный ОПФ.
108
- */
109
- get selectOpf() {
110
- return this.opfListEnum[this.form.controls.contragent.controls['opf'].value];
111
- }
112
- /**
113
- * Список групп полей банковских реквизитов.
114
- */
115
- get bankAccounts() {
116
- return this.form.controls.contragent.get('bankAccounts');
117
- }
118
- /**
119
- * Список групп полей контактных лиц.
120
- */
121
- get contacts() {
122
- return this.form.controls.contragent.get('contacts');
123
- }
124
- /**
125
- * Выполняет навигацию по форме создания контрагента.
126
- *
127
- * @param delta Значение, на которое необходимо выполнить навигацию.
128
- */
129
- navigate(delta) {
130
- this.stepIndex = (this.stepIndex + delta) % 3;
131
- }
132
- /**
133
- * Проверяет, может ли пользователь перейти к следующему шагу создания контрагента.
134
- * При проверке каждого этапа последовательно проверяется корректность заполнения данных на предыдущих этапах.
135
- *
136
- * @param index Индекс этапа для которого нужно проверить валидность.
137
- * @returns Выводит значение `boolean` на основании {@link index}.
138
- */
139
- canNextStep(index) {
140
- switch (index) {
141
- case 0:
142
- for (const key in this.form.controls.contragent.controls) {
143
- if (Object.prototype.hasOwnProperty.call(this.form.controls.contragent.controls, key) &&
144
- // eslint-disable-next-line security/detect-object-injection
145
- !Array.isArray(this.form.controls.contragent.controls[key].value) &&
146
- // eslint-disable-next-line security/detect-object-injection
147
- this.form.controls.contragent.controls[key].invalid) {
148
- return false;
149
- }
150
- }
151
- return true;
152
- case 1: {
153
- const { contacts } = this.form.controls.contragent.controls;
154
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
155
- return contacts?.valid ?? false;
156
- }
157
- case 2: {
158
- const { bankAccounts } = this.form.controls.contragent.controls;
159
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
160
- return bankAccounts?.valid ?? false;
161
- }
162
- default:
163
- return true;
164
- }
165
- }
166
- /**
167
- * Возвращает {@link Observable} список организационно-правовых форм.
168
- */
169
- getOpf$() {
170
- return this.referencesService.opf$;
171
- }
172
- /**
173
- * Возвращает {@link Observable} организационно-правовой формы, соответствующий символьному обозначению (slug) на входе.
174
- *
175
- * @param slug Символьное обозначение (slug).
176
- */
177
- getOpfBySlug$(slug) {
178
- return this.referencesService.getOpfBySlug$(slug);
179
- }
180
- /**
181
- * Возвращает {@link Observable} списка валют.
182
- */
183
- getCurrencies$() {
184
- return this.referencesService.currencies$;
185
- }
186
- /**
187
- * Возвращает {@link Observable} валюты, соответствующий идентификатору на входе.
188
- *
189
- * @param currencyId — Идентификатор валюты.
190
- */
191
- getCurrencyById$(currencyId) {
192
- return this.referencesService.getCurrencyById$(currencyId);
193
- }
194
- /**
195
- * Возвращает {@link Observable} списка стран.
196
- */
197
- getCountries$() {
198
- return this.locationsService.getCountries$();
199
- }
200
- /**
201
- * Возвращает {@link Observable} страны, соответствующий идентификатору на входе.
202
- *
203
- * @param countryId — Идентификатор страны.
204
- */
205
- getCountriesById$(countryId) {
206
- return this.locationsService.getCountries$().pipe(map((countries) => countries.find((country) => country.id === countryId)));
207
- }
208
- /**
209
- * Создаёт группу полей банковских реквизитов.
210
- */
211
- createBankAccountGroup() {
212
- return new FormGroup({
213
- bankName: new FormControl(null, Validators.required),
214
- bic: new FormControl(null, [Validators.required, Validators.minLength(9), scBicValidator]),
215
- accountNumber: new FormControl(null, [Validators.required, Validators.minLength(20)]),
216
- correspondentAccount: new FormControl(null, [Validators.required, Validators.minLength(20), scCorrespondentAccountValidator]),
217
- currencyId: new FormControl(null, Validators.required),
218
- });
219
- }
220
- /**
221
- * Добавляет Банковские реквизиты.
222
- */
223
- addBankAccountGroup() {
224
- this.bankAccounts.push(this.createBankAccountGroup());
225
- }
226
- /**
227
- * Удаляет банковские реквизиты.
228
- *
229
- * @param index Индекс банковских реквизитов.
230
- */
231
- removeBankAccountGroup(index) {
232
- this.bankAccounts.removeAt(index);
233
- }
234
- /**
235
- * Создаёт группу полей контактного лица.
236
- */
237
- createContactGroup() {
238
- return new FormGroup({
239
- name: new FormControl(null, Validators.required),
240
- phone: new FormControl(null, [Validators.required, phoneValidator()]),
241
- email: new FormControl(null, Validators.email),
242
- position: new FormControl(null, Validators.required),
243
- });
244
- }
245
- /**
246
- * Добавляет контактное лицо контрагента.
247
- */
248
- addContactGroup() {
249
- this.contacts.push(this.createContactGroup());
250
- }
251
- /**
252
- * Удаляет контактное лицо контрагента.
253
- *
254
- * @param index Индекс контактного лица.
255
- */
256
- removeContactGroup(index) {
257
- this.contacts.removeAt(index);
258
- }
259
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScAddContragentDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
260
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ScAddContragentDialogComponent, selector: "sc-add-contragent-dialog", ngImport: i0, template: "<form\n [formGroup]=\"form\"\n (ngSubmit)=\"onSubmit.next()\"\n class=\"flex flex-col gap-4\"\n>\n <tui-stepper [(activeItemIndex)]=\"stepIndex\">\n @for (step of steps; track $index) {\n <button\n *ngIf=\"$index !== 2 || form.controls.contragent.controls['bankAccounts']\"\n [stepState]=\"!canNextStep($index) ? 'error' : 'pass'\"\n [attr.disabled]=\"$index && !canNextStep($index - 1) ? '' : null\"\n type=\"button\"\n tuiStep\n >\n {{ step }}\n </button>\n }\n </tui-stepper>\n <tui-elastic-container>\n <sc-new-contragent-form [class.!hidden]=\"stepIndex !== 0\" />\n\n <div [class.!hidden]=\"stepIndex !== 1\">\n <div\n *ngIf=\"contacts\"\n class=\"flex flex-col gap-5 pb-1\"\n >\n <p class=\"text-lg font-bold\">\u041A\u043E\u043D\u0442\u0430\u043A\u0442\u044B</p>\n <div\n *ngFor=\"let contact of contacts.controls; let index = index; let count = count; let last = last\"\n class=\"flex flex-col gap-3\"\n >\n <div class=\"flex h-10 items-center justify-between\">\n <p class=\"font-bold\">\u041A\u043E\u043D\u0442\u0430\u043A\u0442 \u2116{{ index + 1 }}:</p>\n <button\n *ngIf=\"count - 1\"\n tuiIconButton\n appearance=\"secondary\"\n (click)=\"removeContactGroup(index)\"\n iconStart=\"@tui.trash-2\"\n ></button>\n </div>\n <sc-new-contact-form [form]=\"contact\"></sc-new-contact-form>\n <hr\n *ngIf=\"!last\"\n class=\"h-px w-full bg-tui-base-04\"\n />\n </div>\n <button\n tuiButton\n iconStart=\"@tui.plus\"\n appearance=\"secondary\"\n (click)=\"addContactGroup()\"\n type=\"button\"\n class=\"self-center\"\n >\n \u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u043A\u043E\u043D\u0442\u0430\u043A\u0442\n </button>\n </div>\n </div>\n\n <div [class.!hidden]=\"stepIndex !== 2\">\n <div\n *ngIf=\"bankAccounts\"\n class=\"flex flex-col gap-5 pb-1\"\n >\n <p class=\"text-lg font-bold\">\u0411\u0430\u043D\u043A\u043E\u0432\u0441\u043A\u0438\u0435 \u0440\u0435\u043A\u0432\u0438\u0437\u0438\u0442\u044B</p>\n <div\n *ngFor=\"let bankAccount of bankAccounts.controls; let index = index; let count = count; let last = last\"\n class=\"flex flex-col gap-3\"\n >\n <div class=\"flex h-12 items-center justify-between\">\n <p class=\"font-bold\">\u0411\u0430\u043D\u043A\u043E\u0432\u0441\u043A\u0438\u0435 \u0440\u0435\u043A\u0432\u0438\u0437\u0438\u0442\u044B \u2116{{ index + 1 }}:</p>\n <button\n *ngIf=\"count - 1\"\n tuiIconButton\n appearance=\"secondary\"\n (click)=\"removeBankAccountGroup(index)\"\n iconStart=\"@tui.trash-2\"\n ></button>\n </div>\n <sc-new-contragent-bank-account-form\n *ngIf=\"form.controls.contragent.controls['opf'].value as opf\"\n [form]=\"bankAccount\"\n [opf]=\"opf\"\n />\n <hr\n *ngIf=\"!last\"\n class=\"h-px w-full bg-tui-base-04\"\n />\n </div>\n <button\n tuiButton\n iconStart=\"@tui.plus\"\n appearance=\"secondary\"\n (click)=\"addBankAccountGroup()\"\n type=\"button\"\n class=\"self-center\"\n >\n \u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0431\u0430\u043D\u043A\u043E\u0432\u0441\u043A\u0438\u0435 \u0440\u0435\u043A\u0432\u0438\u0437\u0438\u0442\u044B\n </button>\n </div>\n </div>\n </tui-elastic-container>\n <div class=\"flex justify-center gap-2\">\n <button\n *ngIf=\"stepIndex > 0\"\n tuiButton\n appearance=\"secondary\"\n type=\"button\"\n (click)=\"stepIndex = (stepIndex - 1) % 3\"\n >\n \u041D\u0430\u0437\u0430\u0434\n </button>\n <button\n *ngIf=\"stepIndex === 0\"\n tuiButton\n (click)=\"context.$implicit.complete()\"\n type=\"button\"\n appearance=\"secondary\"\n >\n \u041E\u0442\u043C\u0435\u043D\u0430\n </button>\n <button\n *ngIf=\"stepIndex === 2 || (stepIndex === 1 && !form.controls.contragent.controls['bankAccounts']); else nextIndexBtn\"\n tuiButton\n [disabled]=\"form.invalid\"\n [loading]=\"!!(loading$ | async)\"\n type=\"submit\"\n class=\"self-center\"\n >\n \u0421\u043E\u0437\u0434\u0430\u0442\u044C\n </button>\n <ng-template #nextIndexBtn>\n <button\n tuiButton\n [disabled]=\"!canNextStep(stepIndex)\"\n type=\"button\"\n (click)=\"navigate(1)\"\n >\n \u0414\u0430\u043B\u0435\u0435\n </button>\n </ng-template>\n </div>\n</form>\n", styles: ["tui-carousel{--tui-carousel-padding: .5rem}\n"], dependencies: [{ kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "component", type: i4.ScNewContactFormComponent, selector: "sc-new-contact-form", inputs: ["form"] }, { kind: "component", type: i5.TuiElasticContainer, selector: "tui-elastic-container" }, { kind: "component", type: i5.TuiButtonLoading, selector: "[tuiButton][loading],[tuiIconButton][loading]", inputs: ["size", "loading"] }, { kind: "component", type: i5.TuiStepperComponent, selector: "tui-stepper, nav[tuiStepper]", inputs: ["activeItemIndex", "orientation"], outputs: ["activeItemIndexChange"] }, { kind: "component", type: i5.TuiStep, selector: "button[tuiStep], a[tuiStep]:not([routerLink]), a[tuiStep][routerLink][routerLinkActive]", inputs: ["stepState", "icon"] }, { kind: "component", type: i6.ScNewContragentBankAccountsFormComponent, selector: "sc-new-contragent-bank-account-form", inputs: ["form", "opf"] }, { kind: "component", type: i7.ScNewContragentFormComponent, selector: "sc-new-contragent-form", inputs: ["opfControl"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
261
- }
262
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScAddContragentDialogComponent, decorators: [{
263
- type: Component,
264
- args: [{ selector: 'sc-add-contragent-dialog', changeDetection: ChangeDetectionStrategy.OnPush, template: "<form\n [formGroup]=\"form\"\n (ngSubmit)=\"onSubmit.next()\"\n class=\"flex flex-col gap-4\"\n>\n <tui-stepper [(activeItemIndex)]=\"stepIndex\">\n @for (step of steps; track $index) {\n <button\n *ngIf=\"$index !== 2 || form.controls.contragent.controls['bankAccounts']\"\n [stepState]=\"!canNextStep($index) ? 'error' : 'pass'\"\n [attr.disabled]=\"$index && !canNextStep($index - 1) ? '' : null\"\n type=\"button\"\n tuiStep\n >\n {{ step }}\n </button>\n }\n </tui-stepper>\n <tui-elastic-container>\n <sc-new-contragent-form [class.!hidden]=\"stepIndex !== 0\" />\n\n <div [class.!hidden]=\"stepIndex !== 1\">\n <div\n *ngIf=\"contacts\"\n class=\"flex flex-col gap-5 pb-1\"\n >\n <p class=\"text-lg font-bold\">\u041A\u043E\u043D\u0442\u0430\u043A\u0442\u044B</p>\n <div\n *ngFor=\"let contact of contacts.controls; let index = index; let count = count; let last = last\"\n class=\"flex flex-col gap-3\"\n >\n <div class=\"flex h-10 items-center justify-between\">\n <p class=\"font-bold\">\u041A\u043E\u043D\u0442\u0430\u043A\u0442 \u2116{{ index + 1 }}:</p>\n <button\n *ngIf=\"count - 1\"\n tuiIconButton\n appearance=\"secondary\"\n (click)=\"removeContactGroup(index)\"\n iconStart=\"@tui.trash-2\"\n ></button>\n </div>\n <sc-new-contact-form [form]=\"contact\"></sc-new-contact-form>\n <hr\n *ngIf=\"!last\"\n class=\"h-px w-full bg-tui-base-04\"\n />\n </div>\n <button\n tuiButton\n iconStart=\"@tui.plus\"\n appearance=\"secondary\"\n (click)=\"addContactGroup()\"\n type=\"button\"\n class=\"self-center\"\n >\n \u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u043A\u043E\u043D\u0442\u0430\u043A\u0442\n </button>\n </div>\n </div>\n\n <div [class.!hidden]=\"stepIndex !== 2\">\n <div\n *ngIf=\"bankAccounts\"\n class=\"flex flex-col gap-5 pb-1\"\n >\n <p class=\"text-lg font-bold\">\u0411\u0430\u043D\u043A\u043E\u0432\u0441\u043A\u0438\u0435 \u0440\u0435\u043A\u0432\u0438\u0437\u0438\u0442\u044B</p>\n <div\n *ngFor=\"let bankAccount of bankAccounts.controls; let index = index; let count = count; let last = last\"\n class=\"flex flex-col gap-3\"\n >\n <div class=\"flex h-12 items-center justify-between\">\n <p class=\"font-bold\">\u0411\u0430\u043D\u043A\u043E\u0432\u0441\u043A\u0438\u0435 \u0440\u0435\u043A\u0432\u0438\u0437\u0438\u0442\u044B \u2116{{ index + 1 }}:</p>\n <button\n *ngIf=\"count - 1\"\n tuiIconButton\n appearance=\"secondary\"\n (click)=\"removeBankAccountGroup(index)\"\n iconStart=\"@tui.trash-2\"\n ></button>\n </div>\n <sc-new-contragent-bank-account-form\n *ngIf=\"form.controls.contragent.controls['opf'].value as opf\"\n [form]=\"bankAccount\"\n [opf]=\"opf\"\n />\n <hr\n *ngIf=\"!last\"\n class=\"h-px w-full bg-tui-base-04\"\n />\n </div>\n <button\n tuiButton\n iconStart=\"@tui.plus\"\n appearance=\"secondary\"\n (click)=\"addBankAccountGroup()\"\n type=\"button\"\n class=\"self-center\"\n >\n \u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0431\u0430\u043D\u043A\u043E\u0432\u0441\u043A\u0438\u0435 \u0440\u0435\u043A\u0432\u0438\u0437\u0438\u0442\u044B\n </button>\n </div>\n </div>\n </tui-elastic-container>\n <div class=\"flex justify-center gap-2\">\n <button\n *ngIf=\"stepIndex > 0\"\n tuiButton\n appearance=\"secondary\"\n type=\"button\"\n (click)=\"stepIndex = (stepIndex - 1) % 3\"\n >\n \u041D\u0430\u0437\u0430\u0434\n </button>\n <button\n *ngIf=\"stepIndex === 0\"\n tuiButton\n (click)=\"context.$implicit.complete()\"\n type=\"button\"\n appearance=\"secondary\"\n >\n \u041E\u0442\u043C\u0435\u043D\u0430\n </button>\n <button\n *ngIf=\"stepIndex === 2 || (stepIndex === 1 && !form.controls.contragent.controls['bankAccounts']); else nextIndexBtn\"\n tuiButton\n [disabled]=\"form.invalid\"\n [loading]=\"!!(loading$ | async)\"\n type=\"submit\"\n class=\"self-center\"\n >\n \u0421\u043E\u0437\u0434\u0430\u0442\u044C\n </button>\n <ng-template #nextIndexBtn>\n <button\n tuiButton\n [disabled]=\"!canNextStep(stepIndex)\"\n type=\"button\"\n (click)=\"navigate(1)\"\n >\n \u0414\u0430\u043B\u0435\u0435\n </button>\n </ng-template>\n </div>\n</form>\n", styles: ["tui-carousel{--tui-carousel-padding: .5rem}\n"] }]
265
- }] });
266
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtYWRkLWNvbnRyYWdlbnQtZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9jb250cmFnZW50cy9hZGQtY29udHJhZ2VudC1kaWFsb2cvc2MtYWRkLWNvbnRyYWdlbnQtZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9jb250cmFnZW50cy9hZGQtY29udHJhZ2VudC1kaWFsb2cvc2MtYWRkLWNvbnRyYWdlbnQtZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGtHQUFrRztBQUVsRyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQWlCLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUYsT0FBTyxFQUFhLFdBQVcsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0UsT0FBTyxFQUdILG1CQUFtQixFQUNuQixtQkFBbUIsRUFNbkIsa0JBQWtCLEVBQ2xCLFNBQVMsRUFDVCxtQkFBbUIsRUFDbkIsc0JBQXNCLEVBQ3RCLG9CQUFvQixHQUN2QixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sRUFBRSxVQUFVLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0UsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFjLEVBQUUsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTFHLE9BQU8sRUFBRSxjQUFjLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxrQkFB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O1lBQzdELFFBQVEsRUFBRSxJQUFJLFdBQVcsQ0FBZ0IsSUFBSSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7U0FDdEUsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVEOztPQUVHO0lBQ0ksZUFBZTtRQUNsQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksa0JBQWtCLENBQUMsS0FBYTtRQUNuQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsQyxDQUFDOytHQW5TUSw4QkFBOEI7bUdBQTlCLDhCQUE4QixnRUN0QzNDLDQ4TEFnSkE7OzRGRDFHYSw4QkFBOEI7a0JBTjFDLFNBQVM7K0JBQ0ksMEJBQTBCLG1CQUduQix1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgY2xhc3MtbWV0aG9kcy11c2UtdGhpcyxAdHlwZXNjcmlwdC1lc2xpbnQvdW5ib3VuZC1tZXRob2Qsbm8tcmVzdHJpY3RlZC1zeW50YXggKi9cblxuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1BcnJheSwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gICAgU2NDb250cmFnZW50LFxuICAgIFNjQ29udHJhZ2VudE9uRGF0YUNyZWF0ZSxcbiAgICBTY0NvbnRyYWdlbnRTZXJ2aWNlLFxuICAgIFNjQ29udmVydGVyc1NlcnZpY2UsXG4gICAgU2NJQXBpRXJyb3JSZXNwb25zZSxcbiAgICBTY0lCYW5rQWNjb3VudCxcbiAgICBTY0lDb3VudHJ5LFxuICAgIFNjSUN1cnJlbmN5LFxuICAgIFNjSVJlZmVyZW5jZXNUeXBlcyxcbiAgICBTY0xvY2F0aW9uc1NlcnZpY2UsXG4gICAgU2NPcGZMaXN0LFxuICAgIFNjUmVmZXJlbmNlc1NlcnZpY2UsXG4gICAgU2NVc2VyTWV0cmlrYUdvYWxzRW51bSxcbiAgICBTY1VzZXJNZXRyaWthU2VydmljZSxcbn0gZnJvbSAnQHNuYWJjZW50ci9jbGllbnQtY29yZSc7XG5pbXBvcnQgeyB0dWlJc0ZhbHN5LCB0dWlNYXJrQ29udHJvbEFzVG91Y2hlZEFuZFZhbGlkYXRlIH0gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5pbXBvcnQgeyBUdWlEaWFsb2dDb250ZXh0IH0gZnJvbSAnQHRhaWdhLXVpL2NvcmUnO1xuaW1wb3J0IHsgUE9MWU1PUlBIRVVTX0NPTlRFWFQgfSBmcm9tICdAdGFpZ2EtdWkvcG9seW1vcnBoZXVzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGZpbHRlciwgbWFwLCBPYnNlcnZhYmxlLCBvZiwgc2hhcmUsIHN0YXJ0V2l0aCwgU3ViamVjdCwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgc2NCaWNWYWxpZGF0b3IsIHNjQ29ycmVzcG9uZGVudEFjY291bnRWYWxpZGF0b3IgfSBmcm9tICcuLi8uLi92YWxpZGF0b3JzJztcbmltcG9ydCB7IHBob25lVmFsaWRhdG9yIH0gZnJvbSAnLi4vLi4vdmFsaWRhdG9ycy9zYy1waG9uZS12YWxpZGF0b3InO1xuXG4vKipcbiAqINCa0L7QvNC/0L7RgtC10L0g0LTQvtCx0LDQstC70LXQvdC40Y8g0LrQvtC90YLRgNCw0LPQtdC90YLQsC5cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdzYy1hZGQtY29udHJhZ2VudC1kaWFsb2cnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zYy1hZGQtY29udHJhZ2VudC1kaWFsb2cuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3NjLWFkZC1jb250cmFnZW50LWRpYWxvZy5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBTY0FkZENvbnRyYWdlbnREaWFsb2dDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgICAvKipcbiAgICAgKiDQodC10YDQstC40YEg0YHQv9GA0LDQstC+0YfQvdC40LrQvtCyLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVmZXJlbmNlc1NlcnZpY2U6IFNjUmVmZXJlbmNlc1NlcnZpY2UgPSBpbmplY3QoU2NSZWZlcmVuY2VzU2VydmljZSk7XG5cbiAgICAvKipcbiAgICAgKiDQodC10YDQstC40YEg0YDQsNCx0L7RgtGLINGBINC60L7QvdGC0YDQsNCz0LXQvdGC0LDQvNC4LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY29udHJhZ2VudFNlcnZpY2U6IFNjQ29udHJhZ2VudFNlcnZpY2UgPSBpbmplY3QoU2NDb250cmFnZW50U2VydmljZSk7XG5cbiAgICAvKipcbiAgICAgKiDQodC10YDQstC40YEg0LrQvtC90LLQtdGA0YLQsNGG0LjQuCDQtNCw0L3QvdGL0YUuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb252ZXJ0ZXJzU2VydmljZTogU2NDb252ZXJ0ZXJzU2VydmljZSA9IGluamVjdChTY0NvbnZlcnRlcnNTZXJ2aWNlKTtcblxuICAgIC8qKlxuICAgICAqINCh0LXRgNCy0LjRgSDQtNC70Y8g0YHQsdC+0YDQsCDQvNC10YLRgNC40Log0L4g0LTQtdC50YHRgtCy0LjRj9GFINC/0L7Qu9GM0LfQvtCy0LDRgtC10LvQtdC5LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdXNlck1ldHJpa2FTZXJ2aWNlOiBTY1VzZXJNZXRyaWthU2VydmljZSA9IGluamVjdChTY1VzZXJNZXRyaWthU2VydmljZSk7XG5cbiAgICAvKipcbiAgICAgKiDQodC10YDQstC40YEg0LTQu9GPINC/0L7Qu9GD0YfQtdC90LjRjyDRgdC/0LjRgdC60L7QsiDRgdGC0YDQsNC9LCDRgNC10LPQuNC+0L3QvtCyLCDQs9C+0YDQvtC00L7Qsi5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGxvY2F0aW9uc1NlcnZpY2U6IFNjTG9jYXRpb25zU2VydmljZSA9IGluamVjdChTY0xvY2F0aW9uc1NlcnZpY2UpO1xuXG4gICAgLyoqXG4gICAgICog0JrQvtC90YLQtdC60YHRgiDQtNC40LDQu9C+0LPQvtCy0L7Qs9C+INC+0LrQvdCwLCDQsiDQutC+0YLQvtGA0L7QvCDQvtGC0LrRgNGL0YIg0LrQvtC80L/QvtC90LXQvdGCLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBjb250ZXh0OiBUdWlEaWFsb2dDb250ZXh0PFNjQ29udHJhZ2VudCwgdm9pZD4gPSBpbmplY3Q8VHVpRGlhbG9nQ29udGV4dDxTY0NvbnRyYWdlbnQsIHZvaWQ+PihQT0xZTU9SUEhFVVNfQ09OVEVYVCk7XG5cbiAgICAvKipcbiAgICAgKiDQn9C10YDQtdGH0LjRgdC70LXQvdC40LUg0L7RgNCz0LDQvdC40LfQsNGG0LjQvtC90L3Qvi3Qv9GA0LDQstC+0LLRi9GFINGE0L7RgNC8LlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBvcGZMaXN0RW51bTogdHlwZW9mIFNjT3BmTGlzdCA9IFNjT3BmTGlzdDtcblxuICAgIC8qKlxuICAgICAqINCY0L3QtNC10LrRgSDRjdGC0LDQv9CwLlxuICAgICAqL1xuICAgIHB1YmxpYyBzdGVwSW5kZXggPSAwO1xuXG4gICAgLyoqXG4gICAgICog0KHQv9C40YHQvtC6INGN0YLQsNC/0L7QsiDRgdC+0LfQtNCw0L3QuNGPINC60L7QvdGC0YDQsNCz0LXQvdGC0LAuXG4gICAgICovXG4gICAgcmVhZG9ubHkgc3RlcHM6IHN0cmluZ1tdID0gWyfQntCx0YnQuNC1INC00LDQvdC90YvQtSDQutC+0L3RgtGA0LDQs9C10L3RgtCwJywgJ9Ca0L7QvdGC0LDQutGC0Ysg0LrQvtC90YLRgNCw0LPQtdC90YLQsCcsICfQkdCw0L3QutC+0LLRgdC60LjQtSDRgNC10LrQstC40LfQuNGC0Ysg0LrQvtC90YLRgNCw0LPQtdC90YLQsCddO1xuXG4gICAgLyoqXG4gICAgICog0KDQvtC00LjRgtC10LvRjNGB0LrQsNGPIGBGb3JtR3JvdXBgLlxuICAgICAqL1xuICAgIHB1YmxpYyBmb3JtID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgIGNvbnRyYWdlbnQ6IG5ldyBGb3JtR3JvdXA8YW55Pih7fSksXG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgU3ViamVjdH0g0YHQvtCx0YvRgtC40Y8g0L7RgtC/0YDQsNCy0LrQuCDRhNC+0YDQvNGLLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBvblN1Ym1pdDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgT2JzZXJ2YWJsZX0g0LfQsNC/0YDQvtGB0LAg0LTQvtCx0LDQstC70LXQvdC40Y8g0LrQvtC90YLRgNCw0LPQtdC90YLQsC5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlcXVlc3QkID0gdGhpcy5vblN1Ym1pdC5waXBlKFxuICAgICAgICBtYXAoKCkgPT4gdGhpcy5mb3JtLnZhbHVlLmNvbnRyYWdlbnQgYXMgU2NDb250cmFnZW50T25EYXRhQ3JlYXRlKSxcbiAgICAgICAgZmlsdGVyKCh2YWx1ZSk6IHZhbHVlIGlzIFNjQ29udHJhZ2VudE9uRGF0YUNyZWF0ZSA9PiB0aGlzLmZvcm0udmFsaWQpLFxuICAgICAgICBzd2l0Y2hNYXAoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jb250cmFnZW50U2VydmljZS5jcmVhdGVDb250cmFnZW50JCh0aGlzLmNvbnZlcnRlcnNTZXJ2aWNlLnJlbW92ZU51bGxSZWN1cnNpdmUodmFsdWUpKS5waXBlKFxuICAgICAgICAgICAgICAgIHRhcCgoY29udHJhZ2VudCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuY29tcGxldGVXaXRoKGNvbnRyYWdlbnQpO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiB1bmtub3duKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHR1aU1hcmtDb250cm9sQXNUb3VjaGVkQW5kVmFsaWRhdGUodGhpcy5mb3JtKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgSHR0cEVycm9yUmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgZXJyb3JzLCBtZXNzYWdlIH0gPSBlcnJvci5lcnJvciBhcyBTY0lBcGlFcnJvclJlc3BvbnNlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBlcnJvcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoT2JqZWN0Lmhhc093bihlcnJvcnMsIGtleSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHNlY3VyaXR5L2RldGVjdC1vYmplY3QtaW5qZWN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5jb250cm9scy5jb250cmFnZW50LmdldChrZXkpPy5zZXRFcnJvcnMoeyBzZXJ2ZXJSZXNwb25zZTogZXJyb3JzW2tleV0gfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWVycm9ycyAmJiBtZXNzYWdlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLnNldEVycm9ycyh7IHNlcnZlclJlc3BvbnNlOiBbbWVzc2FnZV0gfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RlcEluZGV4ID0gdGhpcy5zdGVwcy5maW5kSW5kZXgoKF8sIGluZGV4KSA9PiAhdGhpcy5jYW5OZXh0U3RlcChpbmRleCkpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKHt9IGFzIFNjSUJhbmtBY2NvdW50KTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBzdGFydFdpdGgobnVsbClcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0pLFxuICAgICAgICBzaGFyZSgpXG4gICAgKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBPYnNlcnZhYmxlfSDQuNC30LzQtdC90LXQvdC40Y8g0YHQvtGB0YLQvtGP0L3QuNGPINC30LDQs9GA0YPQt9C60Lgg0LTQsNC90L3Ri9GFINCw0YPRgtC10L3RgtC40YTQuNC60LDRhtC40Lgg0L/QviDQvdC+0LzQtdGA0YMg0YLQtdC70LXRhNC+0L3QsC5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgbG9hZGluZyQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLnJlcXVlc3QkLnBpcGUobWFwKHR1aUlzRmFsc3kpKTtcblxuICAgIC8qKiBAaW5oZXJpdGRvYyAqL1xuICAgIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudXNlck1ldHJpa2FTZXJ2aWNlLmVtaXRVc2VyTWV0cmlrYUV2ZW50KHtcbiAgICAgICAgICAgIHRhcmdldDogU2NVc2VyTWV0cmlrYUdvYWxzRW51bS51c2VyUHJvZmlsZUNvbnRyYWdlbnRBZGRTaG93LFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQotC10LrRg9GJ0LjQuSDQstGL0LHRgNCw0L3QvdGL0Lkg0J7Qn9CkLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgc2VsZWN0T3BmKCk6IFNjT3BmTGlzdCB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wZkxpc3RFbnVtW3RoaXMuZm9ybS5jb250cm9scy5jb250cmFnZW50LmNvbnRyb2xzWydvcGYnXS52YWx1ZSBhcyBrZXlvZiB0eXBlb2YgU2NPcGZMaXN0XTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQodC/0LjRgdC+0Log0LPRgNGD0L/QvyDQv9C+0LvQtdC5INCx0LDQvdC60L7QstGB0LrQuNGFINGA0LXQutCy0LjQt9C40YLQvtCyLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgYmFua0FjY291bnRzKCk6IEZvcm1BcnJheTxSZXR1cm5UeXBlPFNjQWRkQ29udHJhZ2VudERpYWxvZ0NvbXBvbmVudFsnY3JlYXRlQmFua0FjY291bnRHcm91cCddPj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5mb3JtLmNvbnRyb2xzLmNvbnRyYWdlbnQuZ2V0KCdiYW5rQWNjb3VudHMnKSBhcyBGb3JtQXJyYXk8UmV0dXJuVHlwZTxTY0FkZENvbnRyYWdlbnREaWFsb2dDb21wb25lbnRbJ2NyZWF0ZUJhbmtBY2NvdW50R3JvdXAnXT4+O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCh0L/QuNGB0L7QuiDQs9GA0YPQv9C/INC/0L7Qu9C10Lkg0LrQvtC90YLQsNC60YLQvdGL0YUg0LvQuNGGLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgY29udGFjdHMoKTogRm9ybUFycmF5PFJldHVyblR5cGU8U2NBZGRDb250cmFnZW50RGlhbG9nQ29tcG9uZW50WydjcmVhdGVDb250YWN0R3JvdXAnXT4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybS5jb250cm9scy5jb250cmFnZW50LmdldCgnY29udGFjdHMnKSBhcyBGb3JtQXJyYXk8UmV0dXJuVHlwZTxTY0FkZENvbnRyYWdlbnREaWFsb2dDb21wb25lbnRbJ2NyZWF0ZUNvbnRhY3RHcm91cCddPj47XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLRi9C/0L7Qu9C90Y/QtdGCINC90LDQstC40LPQsNGG0LjRjiDQv9C+INGE0L7RgNC80LUg0YHQvtC30LTQsNC90LjRjyDQutC+0L3RgtGA0LDQs9C10L3RgtCwLlxuICAgICAqXG4gICAgICogQHBhcmFtIGRlbHRhINCX0L3QsNGH0LXQvdC40LUsINC90LAg0LrQvtGC0L7RgNC+0LUg0L3QtdC+0LHRhdC+0LTQuNC80L4g0LLRi9C/0L7Qu9C90LjRgtGMINC90LDQstC40LPQsNGG0LjRji5cbiAgICAgKi9cbiAgICBwdWJsaWMgbmF2aWdhdGUoZGVsdGE6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLnN0ZXBJbmRleCA9ICh0aGlzLnN0ZXBJbmRleCArIGRlbHRhKSAlIDM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0J/RgNC+0LLQtdGA0Y/QtdGCLCDQvNC+0LbQtdGCINC70Lgg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GMINC/0LXRgNC10LnRgtC4INC6INGB0LvQtdC00YPRjtGJ0LXQvNGDINGI0LDQs9GDINGB0L7Qt9C00LDQvdC40Y8g0LrQvtC90YLRgNCw0LPQtdC90YLQsC5cbiAgICAgKiDQn9GA0Lgg0L/RgNC+0LLQtdGA0LrQtSDQutCw0LbQtNC+0LPQviDRjdGC0LDQv9CwINC/0L7RgdC70LXQtNC+0LLQsNGC0LXQu9GM0L3QviDQv9GA0L7QstC10YDRj9C10YLRgdGPINC60L7RgNGA0LXQutGC0L3QvtGB0YLRjCDQt9Cw0L/QvtC70L3QtdC90LjRjyDQtNCw0L3QvdGL0YUg0L3QsCDQv9GA0LXQtNGL0LTRg9GJ0LjRhSDRjdGC0LDQv9Cw0YUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gaW5kZXgg0JjQvdC00LXQutGBINGN0YLQsNC/0LAg0LTQu9GPINC60L7RgtC+0YDQvtCz0L4g0L3Rg9C20L3QviDQv9GA0L7QstC10YDQuNGC0Ywg0LLQsNC70LjQtNC90L7RgdGC0YwuXG4gICAgICogQHJldHVybnMg0JLRi9Cy0L7QtNC40YIg0LfQvdCw0YfQtdC90LjQtSBgYm9vbGVhbmAg0L3QsCDQvtGB0L3QvtCy0LDQvdC40Lgge0BsaW5rIGluZGV4fS5cbiAgICAgKi9cbiAgICBwdWJsaWMgY2FuTmV4dFN0ZXAoaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgICAgICBzd2l0Y2ggKGluZGV4KSB7XG4gICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gdGhpcy5mb3JtLmNvbnRyb2xzLmNvbnRyYWdlbnQuY29udHJvbHMpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMuZm9ybS5jb250cm9scy5jb250cmFnZW50LmNvbnRyb2xzLCBrZXkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc2VjdXJpdHkvZGV0ZWN0LW9iamVjdC1pbmplY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICFBcnJheS5pc0FycmF5KHRoaXMuZm9ybS5jb250cm9scy5jb250cmFnZW50LmNvbnRyb2xzW2tleV0udmFsdWUpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc2VjdXJpdHkvZGV0ZWN0LW9iamVjdC1pbmplY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5jb250cm9scy5jb250cmFnZW50LmNvbnRyb2xzW2tleV0uaW52YWxpZFxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgY2FzZSAxOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBjb250YWN0cyB9ID0gdGhpcy5mb3JtLmNvbnRyb2xzLmNvbnRyYWdlbnQuY29udHJvbHM7XG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bm5lY2Vzc2FyeS1jb25kaXRpb25cbiAgICAgICAgICAgICAgICByZXR1cm4gY29udGFjdHM/LnZhbGlkID8/IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAyOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBiYW5rQWNjb3VudHMgfSA9IHRoaXMuZm9ybS5jb250cm9scy5jb250cmFnZW50LmNvbnRyb2xzO1xuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5uZWNlc3NhcnktY29uZGl0aW9uXG4gICAgICAgICAgICAgICAgcmV0dXJuIGJhbmtBY2NvdW50cz8udmFsaWQgPz8gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIge0BsaW5rIE9ic2VydmFibGV9INGB0L/QuNGB0L7QuiDQvtGA0LPQsNC90LjQt9Cw0YbQuNC+0L3QvdC+LdC/0YDQsNCy0L7QstGL0YUg0YTQvtGA0LwuXG4gICAgICovXG4gICAgcHVibGljIGdldE9wZiQoKTogT2JzZXJ2YWJsZTxBcnJheTxTY0lSZWZlcmVuY2VzVHlwZXM8U2NPcGZMaXN0LCBrZXlvZiB0eXBlb2YgU2NPcGZMaXN0Pj4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVmZXJlbmNlc1NlcnZpY2Uub3BmJDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiB7QGxpbmsgT2JzZXJ2YWJsZX0g0L7RgNCz0LDQvdC40LfQsNGG0LjQvtC90L3Qvi3Qv9GA0LDQstC+0LLQvtC5INGE0L7RgNC80YssINGB0L7QvtGC0LLQtdGC0YHRgtCy0YPRjtGJ0LjQuSDRgdC40LzQstC+0LvRjNC90L7QvNGDINC+0LHQvtC30L3QsNGH0LXQvdC40Y4gKHNsdWcpINC90LAg0LLRhdC+0LTQtS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBzbHVnINCh0LjQvNCy0L7Qu9GM0L3QvtC1INC+0LHQvtC30L3QsNGH0LXQvdC40LUgKHNsdWcpLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRPcGZCeVNsdWckKHNsdWc6IGtleW9mIHR5cGVvZiBTY09wZkxpc3QpOiBPYnNlcnZhYmxlPFNjSVJlZmVyZW5jZXNUeXBlczxTY09wZkxpc3QsIGtleW9mIHR5cGVvZiBTY09wZkxpc3Q+IHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlZmVyZW5jZXNTZXJ2aWNlLmdldE9wZkJ5U2x1ZyQoc2x1Zyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIge0BsaW5rIE9ic2VydmFibGV9INGB0L/QuNGB0LrQsCDQstCw0LvRjtGCLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRDdXJyZW5jaWVzJCgpOiBPYnNlcnZhYmxlPFNjSUN1cnJlbmN5W10+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVmZXJlbmNlc1NlcnZpY2UuY3VycmVuY2llcyQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIge0BsaW5rIE9ic2VydmFibGV9INCy0LDQu9GO0YLRiywg0YHQvtC+0YLQstC10YLRgdGC0LLRg9GO0YnQuNC5INC40LTQtdC90YLQuNGE0LjQutCw0YLQvtGA0YMg0L3QsCDQstGF0L7QtNC1LlxuICAgICAqXG4gICAgICogQHBhcmFtIGN1cnJlbmN5SWQg4oCUINCY0LTQtdC90YLQuNGE0LjQutCw0YLQvtGAINCy0LDQu9GO0YLRiy5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0Q3VycmVuY3lCeUlkJChjdXJyZW5jeUlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPFNjSUN1cnJlbmN5IHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlZmVyZW5jZXNTZXJ2aWNlLmdldEN1cnJlbmN5QnlJZCQoY3VycmVuY3lJZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIge0BsaW5rIE9ic2VydmFibGV9INGB0L/QuNGB0LrQsCDRgdGC0YDQsNC9LlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRDb3VudHJpZXMkKCk6IE9ic2VydmFibGU8U2NJQ291bnRyeVtdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvY2F0aW9uc1NlcnZpY2UuZ2V0Q291bnRyaWVzJCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCIHtAbGluayBPYnNlcnZhYmxlfSDRgdGC0YDQsNC90YssINGB0L7QvtGC0LLQtdGC0YHRgtCy0YPRjtGJ0LjQuSDQuNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgNGDINC90LAg0LLRhdC+0LTQtS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjb3VudHJ5SWQg4oCUINCY0LTQtdC90YLQuNGE0LjQutCw0YLQvtGAINGB0YLRgNCw0L3Riy5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0Q291bnRyaWVzQnlJZCQoY291bnRyeUlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPFNjSUNvdW50cnkgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9jYXRpb25zU2VydmljZS5nZXRDb3VudHJpZXMkKCkucGlwZShtYXAoKGNvdW50cmllcykgPT4gY291bnRyaWVzLmZpbmQoKGNvdW50cnkpID0+IGNvdW50cnkuaWQgPT09IGNvdW50cnlJZCkpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQodC+0LfQtNCw0ZHRgiDQs9GA0YPQv9C/0YMg0L/QvtC70LXQuSDQsdCw0L3QutC+0LLRgdC60LjRhSDRgNC10LrQstC40LfQuNGC0L7Qsi5cbiAgICAgKi9cbiAgICBwcml2YXRlIGNyZWF0ZUJhbmtBY2NvdW50R3JvdXAoKTogRm9ybUdyb3VwPHtcbiAgICAgICAgYmFua05hbWU6IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+O1xuICAgICAgICBiaWM6IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+O1xuICAgICAgICBhY2NvdW50TnVtYmVyOiBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPjtcbiAgICAgICAgY29ycmVzcG9uZGVudEFjY291bnQ6IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+O1xuICAgICAgICBjdXJyZW5jeUlkOiBGb3JtQ29udHJvbDxudW1iZXIgfCBudWxsPjtcbiAgICB9PiB7XG4gICAgICAgIHJldHVybiBuZXcgRm9ybUdyb3VwKHtcbiAgICAgICAgICAgIGJhbmtOYW1lOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgICAgICAgICBiaWM6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoOSksIHNjQmljVmFsaWRhdG9yXSksXG4gICAgICAgICAgICBhY2NvdW50TnVtYmVyOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluTGVuZ3RoKDIwKV0pLFxuICAgICAgICAgICAgY29ycmVzcG9uZGVudEFjY291bnQ6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoMjApLCBzY0NvcnJlc3BvbmRlbnRBY2NvdW50VmFsaWRhdG9yXSksXG4gICAgICAgICAgICBjdXJyZW5jeUlkOiBuZXcgRm9ybUNvbnRyb2w8bnVtYmVyIHwgbnVsbD4obnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCU0L7QsdCw0LLQu9GP0LXRgiDQkdCw0L3QutC+0LLRgdC60LjQtSDRgNC10LrQstC40LfQuNGC0YsuXG4gICAgICovXG4gICAgcHVibGljIGFkZEJhbmtBY2NvdW50R3JvdXAoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYmFua0FjY291bnRzLnB1c2godGhpcy5jcmVhdGVCYW5rQWNjb3VudEdyb3VwKCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCj0LTQsNC70Y/QtdGCINCx0LDQvdC60L7QstGB0LrQuNC1INGA0LXQutCy0LjQt9C40YLRiy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBpbmRleCDQmNC90LTQtdC60YEg0LHQsNC90LrQvtCy0YHQutC40YUg0YDQtdC60LLQuNC30LjRgtC+0LIuXG4gICAgICovXG4gICAgcHVibGljIHJlbW92ZUJhbmtBY2NvdW50R3JvdXAoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLmJhbmtBY2NvdW50cy5yZW1vdmVBdChpbmRleCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KHQvtC30LTQsNGR0YIg0LPRgNGD0L/Qv9GDINC/0L7Qu9C10Lkg0LrQvtC90YLQsNC60YLQvdC+0LPQviDQu9C40YbQsC5cbiAgICAgKi9cbiAgICBwdWJsaWMgY3JlYXRlQ29udGFjdEdyb3VwKCk6IEZvcm1Hcm91cDx7XG4gICAgICAgIG5hbWU6IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+O1xuICAgICAgICBwaG9uZTogRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD47XG4gICAgICAgIGVtYWlsOiBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPjtcbiAgICAgICAgcG9zaXRpb246IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+O1xuICAgIH0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBGb3JtR3JvdXAoe1xuICAgICAgICAgICAgbmFtZTogbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+KG51bGwsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxuICAgICAgICAgICAgcGhvbmU6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgcGhvbmVWYWxpZGF0b3IoKV0pLFxuICAgICAgICAgICAgZW1haWw6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsLCBWYWxpZGF0b3JzLmVtYWlsKSxcbiAgICAgICAgICAgIHBvc2l0aW9uOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCU0L7QsdCw0LLQu9GP0LXRgiDQutC+0L3RgtCw0LrRgtC90L7QtSDQu9C40YbQviDQutC+0L3RgtGA0LDQs9C10L3RgtCwLlxuICAgICAqL1xuICAgIHB1YmxpYyBhZGRDb250YWN0R3JvdXAoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY29udGFjdHMucHVzaCh0aGlzLmNyZWF0ZUNvbnRhY3RHcm91cCgpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQo9C00LDQu9GP0LXRgiDQutC+0L3RgtCw0LrRgtC90L7QtSDQu9C40YbQviDQutC+0L3RgtGA0LDQs9C10L3RgtCwLlxuICAgICAqXG4gICAgICogQHBhcmFtIGluZGV4INCY0L3QtNC10LrRgSDQutC+0L3RgtCw0LrRgtC90L7Qs9C+INC70LjRhtCwLlxuICAgICAqL1xuICAgIHB1YmxpYyByZW1vdmVDb250YWN0R3JvdXAoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLmNvbnRhY3RzLnJlbW92ZUF0KGluZGV4KTtcbiAgICB9XG59XG4iLCI8Zm9ybVxuICAgIFtmb3JtR3JvdXBdPVwiZm9ybVwiXG4gICAgKG5nU3VibWl0KT1cIm9uU3VibWl0Lm5leHQoKVwiXG4gICAgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdhcC00XCJcbj5cbiAgICA8dHVpLXN0ZXBwZXIgWyhhY3RpdmVJdGVtSW5kZXgpXT1cInN0ZXBJbmRleFwiPlxuICAgICAgICBAZm9yIChzdGVwIG9mIHN0ZXBzOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAqbmdJZj1cIiRpbmRleCAhPT0gMiB8fCBmb3JtLmNvbnRyb2xzLmNvbnRyYWdlbnQuY29udHJvbHNbJ2JhbmtBY2NvdW50cyddXCJcbiAgICAgICAgICAgICAgICBbc3RlcFN0YXRlXT1cIiFjYW5OZXh0U3RlcCgkaW5kZXgpID8gJ2Vycm9yJyA6ICdwYXNzJ1wiXG4gICAgICAgICAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwiJGluZGV4ICYmICFjYW5OZXh0U3RlcCgkaW5kZXggLSAxKSA/ICcnIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgdHVpU3RlcFxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IHN0ZXAgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICB9XG4gICAgPC90dWktc3RlcHBlcj5cbiAgICA8dHVpLWVsYXN0aWMtY29udGFpbmVyPlxuICAgICAgICA8c2MtbmV3LWNvbnRyYWdlbnQtZm9ybSBbY2xhc3MuIWhpZGRlbl09XCJzdGVwSW5kZXggIT09IDBcIiAvPlxuXG4gICAgICAgIDxkaXYgW2NsYXNzLiFoaWRkZW5dPVwic3RlcEluZGV4ICE9PSAxXCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgKm5nSWY9XCJjb250YWN0c1wiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdhcC01IHBiLTFcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidGV4dC1sZyBmb250LWJvbGRcIj7QmtC+0L3RgtCw0LrRgtGLPC9wPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNvbnRhY3Qgb2YgY29udGFjdHMuY29udHJvbHM7IGxldCBpbmRleCA9IGluZGV4OyBsZXQgY291bnQgPSBjb3VudDsgbGV0IGxhc3QgPSBsYXN0XCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdhcC0zXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGgtMTAgaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJmb250LWJvbGRcIj7QmtC+0L3RgtCw0LrRgiDihJZ7eyBpbmRleCArIDEgfX06PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY291bnQgLSAxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0dWlJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwZWFyYW5jZT1cInNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZUNvbnRhY3RHcm91cChpbmRleClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb25TdGFydD1cIkB0dWkudHJhc2gtMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8c2MtbmV3LWNvbnRhY3QtZm9ybSBbZm9ybV09XCJjb250YWN0XCI+PC9zYy1uZXctY29udGFjdC1mb3JtPlxuICAgICAgICAgICAgICAgICAgICA8aHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWxhc3RcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJoLXB4IHctZnVsbCBiZy10dWktYmFzZS0wNFwiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICB0dWlCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgaWNvblN0YXJ0PVwiQHR1aS5wbHVzXCJcbiAgICAgICAgICAgICAgICAgICAgYXBwZWFyYW5jZT1cInNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhZGRDb250YWN0R3JvdXAoKVwiXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNlbGYtY2VudGVyXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgINCU0L7QsdCw0LLQuNGC0Ywg0LrQvtC90YLQsNC60YJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IFtjbGFzcy4haGlkZGVuXT1cInN0ZXBJbmRleCAhPT0gMlwiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiYmFua0FjY291bnRzXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTUgcGItMVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LWxnIGZvbnQtYm9sZFwiPtCR0LDQvdC60L7QstGB0LrQuNC1INGA0LXQutCy0LjQt9C40YLRizwvcD5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBiYW5rQWNjb3VudCBvZiBiYW5rQWNjb3VudHMuY29udHJvbHM7IGxldCBpbmRleCA9IGluZGV4OyBsZXQgY291bnQgPSBjb3VudDsgbGV0IGxhc3QgPSBsYXN0XCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdhcC0zXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGgtMTIgaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJmb250LWJvbGRcIj7QkdCw0L3QutC+0LLRgdC60LjQtSDRgNC10LrQstC40LfQuNGC0Ysg4oSWe3sgaW5kZXggKyAxIH19OjwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNvdW50IC0gMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHVpSWNvbkJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVhcmFuY2U9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVCYW5rQWNjb3VudEdyb3VwKGluZGV4KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvblN0YXJ0PVwiQHR1aS50cmFzaC0yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxzYy1uZXctY29udHJhZ2VudC1iYW5rLWFjY291bnQtZm9ybVxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJmb3JtLmNvbnRyb2xzLmNvbnRyYWdlbnQuY29udHJvbHNbJ29wZiddLnZhbHVlIGFzIG9wZlwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZm9ybV09XCJiYW5rQWNjb3VudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbb3BmXT1cIm9wZlwiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDxoclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhbGFzdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImgtcHggdy1mdWxsIGJnLXR1aS1iYXNlLTA0XCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHR1aUJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBpY29uU3RhcnQ9XCJAdHVpLnBsdXNcIlxuICAgICAgICAgICAgICAgICAgICBhcHBlYXJhbmNlPVwic2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFkZEJhbmtBY2NvdW50R3JvdXAoKVwiXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNlbGYtY2VudGVyXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgINCU0L7QsdCw0LLQuNGC0Ywg0LHQsNC90LrQvtCy0YHQutC40LUg0YDQtdC60LLQuNC30LjRgtGLXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC90dWktZWxhc3RpYy1jb250YWluZXI+XG4gICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nSWY9XCJzdGVwSW5kZXggPiAwXCJcbiAgICAgICAgICAgIHR1aUJ1dHRvblxuICAgICAgICAgICAgYXBwZWFyYW5jZT1cInNlY29uZGFyeVwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIChjbGljayk9XCJzdGVwSW5kZXggPSAoc3RlcEluZGV4IC0gMSkgJSAzXCJcbiAgICAgICAgPlxuICAgICAgICAgICAg0J3QsNC30LDQtFxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nSWY9XCJzdGVwSW5kZXggPT09IDBcIlxuICAgICAgICAgICAgdHVpQnV0dG9uXG4gICAgICAgICAgICAoY2xpY2spPVwiY29udGV4dC4kaW1wbGljaXQuY29tcGxldGUoKVwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGFwcGVhcmFuY2U9XCJzZWNvbmRhcnlcIlxuICAgICAgICA+XG4gICAgICAgICAgICDQntGC0LzQtdC90LBcbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICpuZ0lmPVwic3RlcEluZGV4ID09PSAyIHx8IChzdGVwSW5kZXggPT09IDEgJiYgIWZvcm0uY29udHJvbHMuY29udHJhZ2VudC5jb250cm9sc1snYmFua0FjY291bnRzJ10pOyBlbHNlIG5leHRJbmRleEJ0blwiXG4gICAgICAgICAgICB0dWlCdXR0b25cbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmb3JtLmludmFsaWRcIlxuICAgICAgICAgICAgW2xvYWRpbmddPVwiISEobG9hZGluZyQgfCBhc3luYylcIlxuICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICBjbGFzcz1cInNlbGYtY2VudGVyXCJcbiAgICAgICAgPlxuICAgICAgICAgICAg0KHQvtC30LTQsNGC0YxcbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjbmV4dEluZGV4QnRuPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR1aUJ1dHRvblxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhY2FuTmV4dFN0ZXAoc3RlcEluZGV4KVwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm5hdmlnYXRlKDEpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICDQlNCw0LvQtdC1XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cbjwvZm9ybT5cbiJdfQ==
@@ -1,74 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "@snabcentr/client-core";
4
- import * as i2 from "@angular/common";
5
- import * as i3 from "../../../accordion/sc-accordion.component";
6
- import * as i4 from "../../../accordion/sc-accordion-content.directive";
7
- import * as i5 from "@taiga-ui/core";
8
- import * as i6 from "../../../contacts/contacts-accordion/sc-contacts-accordion.component";
9
- /**
10
- * Компонент контрагента пользователя.
11
- */
12
- export class ScContragentsAccordionItemComponent {
13
- /**
14
- * Инициализирует экземпляр класса {@link ScContragentsAccordionItemComponent}.
15
- *
16
- * @param contragentService Сервис работы с контрагентами.
17
- */
18
- constructor(contragentService) {
19
- this.contragentService = contragentService;
20
- /**
21
- * Событие нажатия на кнопку удаления контрагента.
22
- */
23
- this.deleteContragentClick = new EventEmitter();
24
- /**
25
- * Событие нажатия на кнопку добавления банковского счёта контрагенту.
26
- */
27
- this.addContragentBankAccountClick = new EventEmitter();
28
- /**
29
- * Событие нажатия на кнопку удаления банковского счёта контрагента.
30
- */
31
- this.deleteContragentBankAccountClick = new EventEmitter();
32
- /**
33
- * Событие нажатия на кнопку добавления контактного лица контрагенту.
34
- */
35
- this.addContragentContactClick = new EventEmitter();
36
- /**
37
- * Событие нажатия на кнопку удаления контактного лица у контрагента.
38
- */
39
- this.deleteContragentContactClick = new EventEmitter();
40
- }
41
- /** @inheritDoc */
42
- ngOnInit() {
43
- this.bankAccounts$ = this.contragentService.getContragentBankAccounts$(this.contragent.id);
44
- this.contacts$ = this.contragentService.getContragentContacts$(this.contragent.id);
45
- }
46
- /**
47
- * Обработчик нажатия на кнопку удаления контактного лица у контрагента.
48
- *
49
- * @param contact Контактное лицо.
50
- * @param contragent Контрагент.
51
- */
52
- onDeleteContragentContactClick(contact, contragent) {
53
- this.deleteContragentContactClick.emit({ contact: contact, contragent: contragent });
54
- }
55
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScContragentsAccordionItemComponent, deps: [{ token: i1.ScContragentService }], target: i0.ɵɵFactoryTarget.Component }); }
56
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: ScContragentsAccordionItemComponent, selector: "sc-contragents-accordion-item", inputs: { contragent: "contragent" }, outputs: { deleteContragentClick: "deleteContragentClick", addContragentBankAccountClick: "addContragentBankAccountClick", deleteContragentBankAccountClick: "deleteContragentBankAccountClick", addContragentContactClick: "addContragentContactClick", deleteContragentContactClick: "deleteContragentContactClick" }, ngImport: i0, template: "<sc-accordion [showAddButton]=\"false\">\n {{ contragent.name }}\n <span *ngIf=\"$any(contragent).inn as inn\">\u0418\u041D\u041D: {{ inn }}</span>\n\n <ng-template scAccordionContent>\n <div class=\"flex flex-col gap-2\">\n <div class=\"flex gap-2\">\n <div class=\"flex grow flex-col gap-2\">\n {{ contragent.name }}\n <span *ngIf=\"$any(contragent).inn as inn\">\u0418\u041D\u041D: {{ inn }}</span>\n <span *ngIf=\"$any(contragent).kpp as kpp\">\u041A\u041F\u041F: {{ kpp }}</span>\n </div>\n <!-- \u0424\u0443\u043D\u043A\u0446\u0438\u043E\u043D\u0430\u043B \u0443\u0434\u0430\u043B\u0435\u043D\u0438\u044F \u0438 \u0440\u0435\u0434\u0430\u043A\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u044F \u0432\u0440\u0435\u043C\u0435\u043D\u043D\u043E \u043D\u0435 \u0434\u043E\u0441\u0442\u0443\u043F\u0435\u043D \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044E. -->\n <!-- <button\n tuiIconButton\n size=\"m\"\n type=\"button\"\n icon=\"@tui.pencil\"\n appearance=\"flat\"\n (click)=\"$event.stopPropagation(); editContragentClick.emit(contragent.id)\"\n ></button>\n <button\n tuiIconButton\n size=\"m\"\n type=\"button\"\n icon=\"@tui.trash-2\"\n appearance=\"flat\"\n (click)=\"$event.stopPropagation(); deleteContragentClick.emit(contragent)\"\n ></button> -->\n </div>\n\n <sc-accordion (addButtonClick)=\"addContragentBankAccountClick.emit(contragent)\">\n \u0411\u0430\u043D\u043A\u043E\u0432\u0441\u043A\u0438\u0435 \u0440\u0435\u043A\u0432\u0438\u0437\u0438\u0442\u044B\n <ng-template scAccordionContent>\n @let bankAccounts = bankAccounts$ | async;\n <tui-loader\n [overlay]=\"true\"\n [showLoader]=\"bankAccounts === null\"\n >\n <div class=\"flex flex-col gap-2\">\n <ng-container *ngIf=\"!bankAccounts || bankAccounts.length; else bankAccountsNotExist\">\n <div\n *ngFor=\"let bankAccount of bankAccounts\"\n class=\"flex gap-2 border-b border-tui-base-03\"\n >\n <div class=\"flex grow flex-col gap-2\">\n <span>\u0411\u0430\u043D\u043A: {{ bankAccount.bankName }}</span>\n <span>\u0411\u0418\u041A: {{ bankAccount.bic }}</span>\n <span>\u0420/\u0441\u0447\u0451\u0442: {{ bankAccount.accountNumber }}</span>\n <span>\u041A\u043E\u0440/\u0441\u0447\u0451\u0442: {{ bankAccount.correspondentAccount }}</span>\n <span>\u0412\u0430\u043B\u044E\u0442\u0430: {{ bankAccount.currency.name }}</span>\n </div>\n <!-- <div class=\"flex flex-col md:flex-row gap-4\">\n <button\n tuiIconButton\n size=\"m\"\n type=\"button\"\n icon=\"@tui.pencil\"\n appearance=\"flat\"\n (click)=\"$event.stopPropagation(); editBankAccountsContragentClick.emit(bankAccount.id)\"\n ></button>\n <button\n tuiIconButton\n size=\"m\"\n type=\"button\"\n icon=\"@tui.trash-2\"\n appearance=\"flat\"\n (click)=\"$event.stopPropagation(); deleteContragentBankAccountClick.emit(bankAccount)\"\n ></button>\n </div> -->\n </div>\n </ng-container>\n\n <ng-template #bankAccountsNotExist>\n <tui-notification size=\"l\"\n ><div>\n <div class=\"flex flex-wrap gap-2 font-medium\">\n \u0423 \u043A\u043E\u043D\u0442\u0440\u0430\u0433\u0435\u043D\u0442\u0430 <span class=\"font-bold\">{{ contragent.name }}</span> \u043D\u0435 \u0443\u043A\u0430\u0437\u0430\u043D\u044B \u0431\u0430\u043D\u043A\u043E\u0432\u0441\u043A\u0438\u0435 \u0440\u0435\u043A\u0432\u0438\u0437\u0438\u0442\u044B.\n </div>\n </div></tui-notification\n >\n </ng-template>\n </div>\n </tui-loader>\n </ng-template>\n </sc-accordion>\n <sc-contacts-accordion\n *ngIf=\"contacts$\"\n [contacts$]=\"contacts$\"\n (addContactClick)=\"addContragentContactClick.emit(contragent)\"\n (deleteButtonClick)=\"onDeleteContragentContactClick($event, contragent)\"\n ></sc-contacts-accordion>\n </div>\n </ng-template>\n</sc-accordion>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.ScAccordionComponent, selector: "sc-accordion", inputs: ["showAddButton", "showDeleteButton", "showArrow", "open", "size", "disabledButtons"], outputs: ["addButtonClick", "deleteButtonClick"] }, { kind: "directive", type: i4.ScAccordionContentDirective, selector: "ng-template[scAccordionContent]" }, { kind: "component", type: i5.TuiLoader, selector: "tui-loader", inputs: ["size", "inheritColor", "overlay", "textContent", "showLoader"] }, { kind: "directive", type: i5.TuiNotification, selector: "tui-notification,a[tuiNotification],button[tuiNotification]", inputs: ["appearance", "icon", "size"] }, { kind: "component", type: i6.ScContactsAccordionComponent, selector: "sc-contacts-accordion", inputs: ["contacts$"], outputs: ["addContactClick", "deleteButtonClick"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
57
- }
58
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScContragentsAccordionItemComponent, decorators: [{
59
- type: Component,
60
- args: [{ selector: 'sc-contragents-accordion-item', changeDetection: ChangeDetectionStrategy.OnPush, template: "<sc-accordion [showAddButton]=\"false\">\n {{ contragent.name }}\n <span *ngIf=\"$any(contragent).inn as inn\">\u0418\u041D\u041D: {{ inn }}</span>\n\n <ng-template scAccordionContent>\n <div class=\"flex flex-col gap-2\">\n <div class=\"flex gap-2\">\n <div class=\"flex grow flex-col gap-2\">\n {{ contragent.name }}\n <span *ngIf=\"$any(contragent).inn as inn\">\u0418\u041D\u041D: {{ inn }}</span>\n <span *ngIf=\"$any(contragent).kpp as kpp\">\u041A\u041F\u041F: {{ kpp }}</span>\n </div>\n <!-- \u0424\u0443\u043D\u043A\u0446\u0438\u043E\u043D\u0430\u043B \u0443\u0434\u0430\u043B\u0435\u043D\u0438\u044F \u0438 \u0440\u0435\u0434\u0430\u043A\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u044F \u0432\u0440\u0435\u043C\u0435\u043D\u043D\u043E \u043D\u0435 \u0434\u043E\u0441\u0442\u0443\u043F\u0435\u043D \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044E. -->\n <!-- <button\n tuiIconButton\n size=\"m\"\n type=\"button\"\n icon=\"@tui.pencil\"\n appearance=\"flat\"\n (click)=\"$event.stopPropagation(); editContragentClick.emit(contragent.id)\"\n ></button>\n <button\n tuiIconButton\n size=\"m\"\n type=\"button\"\n icon=\"@tui.trash-2\"\n appearance=\"flat\"\n (click)=\"$event.stopPropagation(); deleteContragentClick.emit(contragent)\"\n ></button> -->\n </div>\n\n <sc-accordion (addButtonClick)=\"addContragentBankAccountClick.emit(contragent)\">\n \u0411\u0430\u043D\u043A\u043E\u0432\u0441\u043A\u0438\u0435 \u0440\u0435\u043A\u0432\u0438\u0437\u0438\u0442\u044B\n <ng-template scAccordionContent>\n @let bankAccounts = bankAccounts$ | async;\n <tui-loader\n [overlay]=\"true\"\n [showLoader]=\"bankAccounts === null\"\n >\n <div class=\"flex flex-col gap-2\">\n <ng-container *ngIf=\"!bankAccounts || bankAccounts.length; else bankAccountsNotExist\">\n <div\n *ngFor=\"let bankAccount of bankAccounts\"\n class=\"flex gap-2 border-b border-tui-base-03\"\n >\n <div class=\"flex grow flex-col gap-2\">\n <span>\u0411\u0430\u043D\u043A: {{ bankAccount.bankName }}</span>\n <span>\u0411\u0418\u041A: {{ bankAccount.bic }}</span>\n <span>\u0420/\u0441\u0447\u0451\u0442: {{ bankAccount.accountNumber }}</span>\n <span>\u041A\u043E\u0440/\u0441\u0447\u0451\u0442: {{ bankAccount.correspondentAccount }}</span>\n <span>\u0412\u0430\u043B\u044E\u0442\u0430: {{ bankAccount.currency.name }}</span>\n </div>\n <!-- <div class=\"flex flex-col md:flex-row gap-4\">\n <button\n tuiIconButton\n size=\"m\"\n type=\"button\"\n icon=\"@tui.pencil\"\n appearance=\"flat\"\n (click)=\"$event.stopPropagation(); editBankAccountsContragentClick.emit(bankAccount.id)\"\n ></button>\n <button\n tuiIconButton\n size=\"m\"\n type=\"button\"\n icon=\"@tui.trash-2\"\n appearance=\"flat\"\n (click)=\"$event.stopPropagation(); deleteContragentBankAccountClick.emit(bankAccount)\"\n ></button>\n </div> -->\n </div>\n </ng-container>\n\n <ng-template #bankAccountsNotExist>\n <tui-notification size=\"l\"\n ><div>\n <div class=\"flex flex-wrap gap-2 font-medium\">\n \u0423 \u043A\u043E\u043D\u0442\u0440\u0430\u0433\u0435\u043D\u0442\u0430 <span class=\"font-bold\">{{ contragent.name }}</span> \u043D\u0435 \u0443\u043A\u0430\u0437\u0430\u043D\u044B \u0431\u0430\u043D\u043A\u043E\u0432\u0441\u043A\u0438\u0435 \u0440\u0435\u043A\u0432\u0438\u0437\u0438\u0442\u044B.\n </div>\n </div></tui-notification\n >\n </ng-template>\n </div>\n </tui-loader>\n </ng-template>\n </sc-accordion>\n <sc-contacts-accordion\n *ngIf=\"contacts$\"\n [contacts$]=\"contacts$\"\n (addContactClick)=\"addContragentContactClick.emit(contragent)\"\n (deleteButtonClick)=\"onDeleteContragentContactClick($event, contragent)\"\n ></sc-contacts-accordion>\n </div>\n </ng-template>\n</sc-accordion>\n" }]
61
- }], ctorParameters: () => [{ type: i1.ScContragentService }], propDecorators: { contragent: [{
62
- type: Input
63
- }], deleteContragentClick: [{
64
- type: Output
65
- }], addContragentBankAccountClick: [{
66
- type: Output
67
- }], deleteContragentBankAccountClick: [{
68
- type: Output
69
- }], addContragentContactClick: [{
70
- type: Output
71
- }], deleteContragentContactClick: [{
72
- type: Output
73
- }] } });
74
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtY29udHJhZ2VudHMtYWNjb3JkaW9uLWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL2NvbnRyYWdlbnRzL2NvbnRyYWdlbnRzLWFjY29yZGlvbi9jb250cmFnZW50cy1hY2NvcmRpb24taXRlbS9zYy1jb250cmFnZW50cy1hY2NvcmRpb24taXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvY29udHJhZ2VudHMvY29udHJhZ2VudHMtYWNjb3JkaW9uL2NvbnRyYWdlbnRzLWFjY29yZGlvbi1pdGVtL3NjLWNvbnRyYWdlbnRzLWFjY29yZGlvbi1pdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7O0FBSXhHOztHQUVHO0FBTUgsTUFBTSxPQUFPLG1DQUFtQztJQStDNUM7Ozs7T0FJRztJQUNILFlBQW9DLGlCQUFzQztRQUF0QyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQXFCO1FBN0MxRTs7V0FFRztRQUVJLDBCQUFxQixHQUErQixJQUFJLFlBQVksRUFBZ0IsQ0FBQztRQUU1Rjs7V0FFRztRQUVJLGtDQUE2QixHQUErQixJQUFJLFlBQVksRUFBZ0IsQ0FBQztRQUVwRzs7V0FFRztRQUVJLHFDQUFnQyxHQUFpQyxJQUFJLFlBQVksRUFBa0IsQ0FBQztRQUUzRzs7V0FFRztRQUVJLDhCQUF5QixHQUErQixJQUFJLFlBQVksRUFBZ0IsQ0FBQztRQUVoRzs7V0FFRztRQUVJLGlDQUE0QixHQUFvRSxJQUFJLFlBQVksRUFBcUQsQ0FBQztJQWlCaEcsQ0FBQztJQUU5RSxrQkFBa0I7SUFDWCxRQUFRO1FBQ1gsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsMEJBQTBCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMzRixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZGLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLDhCQUE4QixDQUFDLE9BQW1CLEVBQUUsVUFBd0I7UUFDL0UsSUFBSSxDQUFDLDRCQUE0QixDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFDekYsQ0FBQzsrR0FwRVEsbUNBQW1DO21HQUFuQyxtQ0FBbUMsb2FDWmhELCsxTEErRkE7OzRGRG5GYSxtQ0FBbUM7a0JBTC9DLFNBQVM7K0JBQ0ksK0JBQStCLG1CQUV4Qix1QkFBdUIsQ0FBQyxNQUFNO3dGQU94QyxVQUFVO3NCQURoQixLQUFLO2dCQU9DLHFCQUFxQjtzQkFEM0IsTUFBTTtnQkFPQSw2QkFBNkI7c0JBRG5DLE1BQU07Z0JBT0EsZ0NBQWdDO3NCQUR0QyxNQUFNO2dCQU9BLHlCQUF5QjtzQkFEL0IsTUFBTTtnQkFPQSw0QkFBNEI7c0JBRGxDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2NDb250cmFnZW50LCBTY0NvbnRyYWdlbnRTZXJ2aWNlLCBTY0lCYW5rQWNjb3VudCwgU2NJQ29udGFjdCB9IGZyb20gJ0BzbmFiY2VudHIvY2xpZW50LWNvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG4vKipcbiAqINCa0L7QvNC/0L7QvdC10L3RgiDQutC+0L3RgtGA0LDQs9C10L3RgtCwINC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjy5cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdzYy1jb250cmFnZW50cy1hY2NvcmRpb24taXRlbScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NjLWNvbnRyYWdlbnRzLWFjY29yZGlvbi1pdGVtLmNvbXBvbmVudC5odG1sJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU2NDb250cmFnZW50c0FjY29yZGlvbkl0ZW1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIC8qKlxuICAgICAqINCa0L7QvdGC0YDQsNCz0LXQvdGCINC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjy5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBjb250cmFnZW50OiBTY0NvbnRyYWdlbnQ7XG5cbiAgICAvKipcbiAgICAgKiDQodC+0LHRi9GC0LjQtSDQvdCw0LbQsNGC0LjRjyDQvdCwINC60L3QvtC/0LrRgyDRg9C00LDQu9C10L3QuNGPINC60L7QvdGC0YDQsNCz0LXQvdGC0LAuXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGRlbGV0ZUNvbnRyYWdlbnRDbGljazogRXZlbnRFbWl0dGVyPFNjQ29udHJhZ2VudD4gPSBuZXcgRXZlbnRFbWl0dGVyPFNjQ29udHJhZ2VudD4oKTtcblxuICAgIC8qKlxuICAgICAqINCh0L7QsdGL0YLQuNC1INC90LDQttCw0YLQuNGPINC90LAg0LrQvdC+0L/QutGDINC00L7QsdCw0LLQu9C10L3QuNGPINCx0LDQvdC60L7QstGB0LrQvtCz0L4g0YHRh9GR0YLQsCDQutC+0L3RgtGA0LDQs9C10L3RgtGDLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBhZGRDb250cmFnZW50QmFua0FjY291bnRDbGljazogRXZlbnRFbWl0dGVyPFNjQ29udHJhZ2VudD4gPSBuZXcgRXZlbnRFbWl0dGVyPFNjQ29udHJhZ2VudD4oKTtcblxuICAgIC8qKlxuICAgICAqINCh0L7QsdGL0YLQuNC1INC90LDQttCw0YLQuNGPINC90LAg0LrQvdC+0L/QutGDINGD0LTQsNC70LXQvdC40Y8g0LHQsNC90LrQvtCy0YHQutC+0LPQviDRgdGH0ZHRgtCwINC60L7QvdGC0YDQsNCz0LXQvdGC0LAuXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGRlbGV0ZUNvbnRyYWdlbnRCYW5rQWNjb3VudENsaWNrOiBFdmVudEVtaXR0ZXI8U2NJQmFua0FjY291bnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxTY0lCYW5rQWNjb3VudD4oKTtcblxuICAgIC8qKlxuICAgICAqINCh0L7QsdGL0YLQuNC1INC90LDQttCw0YLQuNGPINC90LAg0LrQvdC+0L/QutGDINC00L7QsdCw0LLQu9C10L3QuNGPINC60L7QvdGC0LDQutGC0L3QvtCz0L4g0LvQuNGG0LAg0LrQvtC90YLRgNCw0LPQtdC90YLRgy5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgYWRkQ29udHJhZ2VudENvbnRhY3RDbGljazogRXZlbnRFbWl0dGVyPFNjQ29udHJhZ2VudD4gPSBuZXcgRXZlbnRFbWl0dGVyPFNjQ29udHJhZ2VudD4oKTtcblxuICAgIC8qKlxuICAgICAqINCh0L7QsdGL0YLQuNC1INC90LDQttCw0YLQuNGPINC90LAg0LrQvdC+0L/QutGDINGD0LTQsNC70LXQvdC40Y8g0LrQvtC90YLQsNC60YLQvdC+0LPQviDQu9C40YbQsCDRgyDQutC+0L3RgtGA0LDQs9C10L3RgtCwLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBkZWxldGVDb250cmFnZW50Q29udGFjdENsaWNrOiBFdmVudEVtaXR0ZXI8eyBjb250YWN0OiBTY0lDb250YWN0OyBjb250cmFnZW50OiBTY0NvbnRyYWdlbnQgfT4gPSBuZXcgRXZlbnRFbWl0dGVyPHsgY29udGFjdDogU2NJQ29udGFjdDsgY29udHJhZ2VudDogU2NDb250cmFnZW50IH0+KCk7XG5cbiAgICAvKipcbiAgICAgKiDQodC/0LjRgdC+0Log0LHQsNC90LrQvtCy0YHQutC40YUg0YHRh9C10YLQvtCyINC60L7QvdGC0YDQsNCz0LXQvdGC0LAuXG4gICAgICovXG4gICAgcHVibGljIGJhbmtBY2NvdW50cyQ/OiBPYnNlcnZhYmxlPFNjSUJhbmtBY2NvdW50W10gfCBudWxsPjtcblxuICAgIC8qKlxuICAgICAqINCh0L/QuNGB0L7QuiDQsdCw0L3QutC+0LLRgdC60LjRhSDRgdGH0LXRgtC+0LIg0LrQvtC90YLRgNCw0LPQtdC90YLQsC5cbiAgICAgKi9cbiAgICBwdWJsaWMgY29udGFjdHMkPzogT2JzZXJ2YWJsZTxTY0lDb250YWN0W10gfCBudWxsPjtcblxuICAgIC8qKlxuICAgICAqINCY0L3QuNGG0LjQsNC70LjQt9C40YDRg9C10YIg0Y3QutC30LXQvNC/0LvRj9GAINC60LvQsNGB0YHQsCB7QGxpbmsgU2NDb250cmFnZW50c0FjY29yZGlvbkl0ZW1Db21wb25lbnR9LlxuICAgICAqXG4gICAgICogQHBhcmFtIGNvbnRyYWdlbnRTZXJ2aWNlINCh0LXRgNCy0LjRgSDRgNCw0LHQvtGC0Ysg0YEg0LrQvtC90YLRgNCw0LPQtdC90YLQsNC80LguXG4gICAgICovXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgY29udHJhZ2VudFNlcnZpY2U6IFNjQ29udHJhZ2VudFNlcnZpY2UpIHt9XG5cbiAgICAvKiogQGluaGVyaXREb2MgKi9cbiAgICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYmFua0FjY291bnRzJCA9IHRoaXMuY29udHJhZ2VudFNlcnZpY2UuZ2V0Q29udHJhZ2VudEJhbmtBY2NvdW50cyQodGhpcy5jb250cmFnZW50LmlkKTtcbiAgICAgICAgdGhpcy5jb250YWN0cyQgPSB0aGlzLmNvbnRyYWdlbnRTZXJ2aWNlLmdldENvbnRyYWdlbnRDb250YWN0cyQodGhpcy5jb250cmFnZW50LmlkKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQntCx0YDQsNCx0L7RgtGH0LjQuiDQvdCw0LbQsNGC0LjRjyDQvdCwINC60L3QvtC/0LrRgyDRg9C00LDQu9C10L3QuNGPINC60L7QvdGC0LDQutGC0L3QvtCz0L4g0LvQuNGG0LAg0YMg0LrQvtC90YLRgNCw0LPQtdC90YLQsC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjb250YWN0INCa0L7QvdGC0LDQutGC0L3QvtC1INC70LjRhtC+LlxuICAgICAqIEBwYXJhbSBjb250cmFnZW50INCa0L7QvdGC0YDQsNCz0LXQvdGCLlxuICAgICAqL1xuICAgIHB1YmxpYyBvbkRlbGV0ZUNvbnRyYWdlbnRDb250YWN0Q2xpY2soY29udGFjdDogU2NJQ29udGFjdCwgY29udHJhZ2VudDogU2NDb250cmFnZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGVsZXRlQ29udHJhZ2VudENvbnRhY3RDbGljay5lbWl0KHsgY29udGFjdDogY29udGFjdCwgY29udHJhZ2VudDogY29udHJhZ2VudCB9KTtcbiAgICB9XG59XG4iLCI8c2MtYWNjb3JkaW9uIFtzaG93QWRkQnV0dG9uXT1cImZhbHNlXCI+XG4gICAge3sgY29udHJhZ2VudC5uYW1lIH19XG4gICAgPHNwYW4gKm5nSWY9XCIkYW55KGNvbnRyYWdlbnQpLmlubiBhcyBpbm5cIj7QmNCd0J06IHt7IGlubiB9fTwvc3Bhbj5cblxuICAgIDxuZy10ZW1wbGF0ZSBzY0FjY29yZGlvbkNvbnRlbnQ+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdhcC0yXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBnYXAtMlwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGdyb3cgZmxleC1jb2wgZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgY29udHJhZ2VudC5uYW1lIH19XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiJGFueShjb250cmFnZW50KS5pbm4gYXMgaW5uXCI+0JjQndCdOiB7eyBpbm4gfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiJGFueShjb250cmFnZW50KS5rcHAgYXMga3BwXCI+0JrQn9CfOiB7eyBrcHAgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPCEtLSDQpNGD0L3QutGG0LjQvtC90LDQuyDRg9C00LDQu9C10L3QuNGPINC4INGA0LXQtNCw0LrRgtC40YDQvtCy0LDQvdC40Y8g0LLRgNC10LzQtdC90L3QviDQvdC1INC00L7RgdGC0YPQv9C10L0g0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GOLiAtLT5cbiAgICAgICAgICAgICAgICA8IS0tIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgdHVpSWNvbkJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBzaXplPVwibVwiXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBpY29uPVwiQHR1aS5wZW5jaWxcIlxuICAgICAgICAgICAgICAgICAgICBhcHBlYXJhbmNlPVwiZmxhdFwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IGVkaXRDb250cmFnZW50Q2xpY2suZW1pdChjb250cmFnZW50LmlkKVwiXG4gICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgdHVpSWNvbkJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBzaXplPVwibVwiXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBpY29uPVwiQHR1aS50cmFzaC0yXCJcbiAgICAgICAgICAgICAgICAgICAgYXBwZWFyYW5jZT1cImZsYXRcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyBkZWxldGVDb250cmFnZW50Q2xpY2suZW1pdChjb250cmFnZW50KVwiXG4gICAgICAgICAgICAgICAgPjwvYnV0dG9uPiAtLT5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8c2MtYWNjb3JkaW9uIChhZGRCdXR0b25DbGljayk9XCJhZGRDb250cmFnZW50QmFua0FjY291bnRDbGljay5lbWl0KGNvbnRyYWdlbnQpXCI+XG4gICAgICAgICAgICAgICAg0JHQsNC90LrQvtCy0YHQutC40LUg0YDQtdC60LLQuNC30LjRgtGLXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHNjQWNjb3JkaW9uQ29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgQGxldCBiYW5rQWNjb3VudHMgPSBiYW5rQWNjb3VudHMkIHwgYXN5bmM7XG4gICAgICAgICAgICAgICAgICAgIDx0dWktbG9hZGVyXG4gICAgICAgICAgICAgICAgICAgICAgICBbb3ZlcmxheV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93TG9hZGVyXT1cImJhbmtBY2NvdW50cyA9PT0gbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFiYW5rQWNjb3VudHMgfHwgYmFua0FjY291bnRzLmxlbmd0aDsgZWxzZSBiYW5rQWNjb3VudHNOb3RFeGlzdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgYmFua0FjY291bnQgb2YgYmFua0FjY291bnRzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmxleCBnYXAtMiBib3JkZXItYiBib3JkZXItdHVpLWJhc2UtMDNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBncm93IGZsZXgtY29sIGdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+0JHQsNC90Lo6IHt7IGJhbmtBY2NvdW50LmJhbmtOYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPtCR0JjQmjoge3sgYmFua0FjY291bnQuYmljIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPtCgL9GB0YfRkdGCOiB7eyBiYW5rQWNjb3VudC5hY2NvdW50TnVtYmVyIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPtCa0L7RgC/RgdGH0ZHRgjoge3sgYmFua0FjY291bnQuY29ycmVzcG9uZGVudEFjY291bnQgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+0JLQsNC70Y7RgtCwOiB7eyBiYW5rQWNjb3VudC5jdXJyZW5jeS5uYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIG1kOmZsZXgtcm93IGdhcC00XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0dWlJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb249XCJAdHVpLnBlbmNpbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVhcmFuY2U9XCJmbGF0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgZWRpdEJhbmtBY2NvdW50c0NvbnRyYWdlbnRDbGljay5lbWl0KGJhbmtBY2NvdW50LmlkKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHVpSWNvbkJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwibVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwiQHR1aS50cmFzaC0yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwZWFyYW5jZT1cImZsYXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyBkZWxldGVDb250cmFnZW50QmFua0FjY291bnRDbGljay5lbWl0KGJhbmtBY2NvdW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjYmFua0FjY291bnRzTm90RXhpc3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0dWktbm90aWZpY2F0aW9uIHNpemU9XCJsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtd3JhcCBnYXAtMiBmb250LW1lZGl1bVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDQoyDQutC+0L3RgtGA0LDQs9C10L3RgtCwIDxzcGFuIGNsYXNzPVwiZm9udC1ib2xkXCI+e3sgY29udHJhZ2VudC5uYW1lIH19PC9zcGFuPiDQvdC1INGD0LrQsNC30LDQvdGLINCx0LDQvdC60L7QstGB0LrQuNC1INGA0LXQutCy0LjQt9C40YLRiy5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PjwvdHVpLW5vdGlmaWNhdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L3R1aS1sb2FkZXI+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvc2MtYWNjb3JkaW9uPlxuICAgICAgICAgICAgPHNjLWNvbnRhY3RzLWFjY29yZGlvblxuICAgICAgICAgICAgICAgICpuZ0lmPVwiY29udGFjdHMkXCJcbiAgICAgICAgICAgICAgICBbY29udGFjdHMkXT1cImNvbnRhY3RzJFwiXG4gICAgICAgICAgICAgICAgKGFkZENvbnRhY3RDbGljayk9XCJhZGRDb250cmFnZW50Q29udGFjdENsaWNrLmVtaXQoY29udHJhZ2VudClcIlxuICAgICAgICAgICAgICAgIChkZWxldGVCdXR0b25DbGljayk9XCJvbkRlbGV0ZUNvbnRyYWdlbnRDb250YWN0Q2xpY2soJGV2ZW50LCBjb250cmFnZW50KVwiXG4gICAgICAgICAgICA+PC9zYy1jb250YWN0cy1hY2NvcmRpb24+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG48L3NjLWFjY29yZGlvbj5cbiJdfQ==