merchi_cart 0.0.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 (307) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +99 -0
  3. package/lib/Cart.js +62 -0
  4. package/lib/CartAlert.js +43 -0
  5. package/lib/CartHeader.js +28 -0
  6. package/lib/CartProvider.js +304 -0
  7. package/lib/CartTotals.js +99 -0
  8. package/lib/MerchiSDK/constants/auto_assign_production_on_actions.js +8 -0
  9. package/lib/MerchiSDK/constants/call_to_actions.js +16 -0
  10. package/lib/MerchiSDK/constants/call_to_actions.test.js +5 -0
  11. package/lib/MerchiSDK/constants/discount_types.js +5 -0
  12. package/lib/MerchiSDK/constants/discount_types.test.js +5 -0
  13. package/lib/MerchiSDK/constants/domain_types.js +14 -0
  14. package/lib/MerchiSDK/constants/domain_types.test.js +5 -0
  15. package/lib/MerchiSDK/constants/errors.js +33 -0
  16. package/lib/MerchiSDK/constants/event_types.js +7 -0
  17. package/lib/MerchiSDK/constants/event_types.test.js +5 -0
  18. package/lib/MerchiSDK/constants/field_types.js +15 -0
  19. package/lib/MerchiSDK/constants/field_types.test.js +5 -0
  20. package/lib/MerchiSDK/constants/input_types.js +15 -0
  21. package/lib/MerchiSDK/constants/input_types.test.js +5 -0
  22. package/lib/MerchiSDK/constants/inventory_status.test.js +5 -0
  23. package/lib/MerchiSDK/constants/inventory_statuses.js +8 -0
  24. package/lib/MerchiSDK/constants/invoice_types.js +7 -0
  25. package/lib/MerchiSDK/constants/invoice_types.test.js +5 -0
  26. package/lib/MerchiSDK/constants/item_types.js +7 -0
  27. package/lib/MerchiSDK/constants/item_types.test.js +5 -0
  28. package/lib/MerchiSDK/constants/job/drafting_status.js +9 -0
  29. package/lib/MerchiSDK/constants/job/drafting_status.test.js +5 -0
  30. package/lib/MerchiSDK/constants/job/payment_status.js +9 -0
  31. package/lib/MerchiSDK/constants/job/payment_status.test.js +5 -0
  32. package/lib/MerchiSDK/constants/job/production_status.js +14 -0
  33. package/lib/MerchiSDK/constants/job/production_status.test.js +5 -0
  34. package/lib/MerchiSDK/constants/job/shipment_status.js +13 -0
  35. package/lib/MerchiSDK/constants/job/shipment_status.test.js +5 -0
  36. package/lib/MerchiSDK/constants/job/supply_chain_request_status.js +8 -0
  37. package/lib/MerchiSDK/constants/job/supply_chain_request_status.test.js +5 -0
  38. package/lib/MerchiSDK/constants/job_priorities.js +8 -0
  39. package/lib/MerchiSDK/constants/job_priorities.test.js +5 -0
  40. package/lib/MerchiSDK/constants/job_status.js +51 -0
  41. package/lib/MerchiSDK/constants/job_status.test.js +5 -0
  42. package/lib/MerchiSDK/constants/job_types.js +17 -0
  43. package/lib/MerchiSDK/constants/job_types.test.js +5 -0
  44. package/lib/MerchiSDK/constants/notification_sections.js +15 -0
  45. package/lib/MerchiSDK/constants/notification_sections.test.js +5 -0
  46. package/lib/MerchiSDK/constants/notification_types.js +99 -0
  47. package/lib/MerchiSDK/constants/notification_types.test.js +5 -0
  48. package/lib/MerchiSDK/constants/notification_urgencies.js +8 -0
  49. package/lib/MerchiSDK/constants/notification_urgencies.test.js +5 -0
  50. package/lib/MerchiSDK/constants/payment_types.js +12 -0
  51. package/lib/MerchiSDK/constants/payment_types.test.js +5 -0
  52. package/lib/MerchiSDK/constants/platform.js +6 -0
  53. package/lib/MerchiSDK/constants/platform.test.js +9 -0
  54. package/lib/MerchiSDK/constants/product_types.js +27 -0
  55. package/lib/MerchiSDK/constants/product_types.test.js +5 -0
  56. package/lib/MerchiSDK/constants/rights.js +7 -0
  57. package/lib/MerchiSDK/constants/rights.test.js +5 -0
  58. package/lib/MerchiSDK/constants/robots_meta_directives.js +2 -0
  59. package/lib/MerchiSDK/constants/robots_meta_directives.test.js +5 -0
  60. package/lib/MerchiSDK/constants/roles.js +26 -0
  61. package/lib/MerchiSDK/constants/roles.test.js +5 -0
  62. package/lib/MerchiSDK/constants/shipment_companies.js +20 -0
  63. package/lib/MerchiSDK/constants/shipment_companies.test.js +5 -0
  64. package/lib/MerchiSDK/constants/shipment_services.js +5 -0
  65. package/lib/MerchiSDK/constants/shipment_services.test.js +5 -0
  66. package/lib/MerchiSDK/constants/system_roles.js +5 -0
  67. package/lib/MerchiSDK/constants/system_roles.test.js +5 -0
  68. package/lib/MerchiSDK/constants/theme_foundations.js +8 -0
  69. package/lib/MerchiSDK/constants/theme_foundations.test.js +5 -0
  70. package/lib/MerchiSDK/constants/theme_status.js +7 -0
  71. package/lib/MerchiSDK/constants/theme_status.test.js +5 -0
  72. package/lib/MerchiSDK/constants/user_types.js +19 -0
  73. package/lib/MerchiSDK/constants/user_types.test.js +5 -0
  74. package/lib/MerchiSDK/constants/white_label_accessibilities.js +7 -0
  75. package/lib/MerchiSDK/constants/white_label_accessibilities.test.js +5 -0
  76. package/lib/MerchiSDK/cookie.js +17 -0
  77. package/lib/MerchiSDK/cookie.test.js +13 -0
  78. package/lib/MerchiSDK/entities/address.js +166 -0
  79. package/lib/MerchiSDK/entities/address.test.js +7 -0
  80. package/lib/MerchiSDK/entities/assignment.js +185 -0
  81. package/lib/MerchiSDK/entities/assignment.test.js +39 -0
  82. package/lib/MerchiSDK/entities/automatic_payment_relationship.js +77 -0
  83. package/lib/MerchiSDK/entities/automatic_payment_relationship.test.js +7 -0
  84. package/lib/MerchiSDK/entities/backup.js +44 -0
  85. package/lib/MerchiSDK/entities/backup.test.js +7 -0
  86. package/lib/MerchiSDK/entities/bank.js +116 -0
  87. package/lib/MerchiSDK/entities/bank.test.js +7 -0
  88. package/lib/MerchiSDK/entities/cart.js +203 -0
  89. package/lib/MerchiSDK/entities/cart.test.js +53 -0
  90. package/lib/MerchiSDK/entities/cart_item.js +153 -0
  91. package/lib/MerchiSDK/entities/cart_item.test.js +35 -0
  92. package/lib/MerchiSDK/entities/cart_shipment_group.js +62 -0
  93. package/lib/MerchiSDK/entities/cart_shipment_quote.js +85 -0
  94. package/lib/MerchiSDK/entities/category.js +92 -0
  95. package/lib/MerchiSDK/entities/category.test.js +53 -0
  96. package/lib/MerchiSDK/entities/company.js +648 -0
  97. package/lib/MerchiSDK/entities/company.test.js +7 -0
  98. package/lib/MerchiSDK/entities/company_invitation.js +82 -0
  99. package/lib/MerchiSDK/entities/company_invitation.test.js +7 -0
  100. package/lib/MerchiSDK/entities/component.js +209 -0
  101. package/lib/MerchiSDK/entities/component.test.js +13 -0
  102. package/lib/MerchiSDK/entities/component_tag.js +50 -0
  103. package/lib/MerchiSDK/entities/component_tag.test.js +7 -0
  104. package/lib/MerchiSDK/entities/component_version.js +80 -0
  105. package/lib/MerchiSDK/entities/component_version.test.js +7 -0
  106. package/lib/MerchiSDK/entities/country_tax.js +110 -0
  107. package/lib/MerchiSDK/entities/country_tax.test.js +12 -0
  108. package/lib/MerchiSDK/entities/discount.js +77 -0
  109. package/lib/MerchiSDK/entities/discount.test.js +21 -0
  110. package/lib/MerchiSDK/entities/discount_group.js +74 -0
  111. package/lib/MerchiSDK/entities/discount_group.test.js +7 -0
  112. package/lib/MerchiSDK/entities/domain.js +535 -0
  113. package/lib/MerchiSDK/entities/domain.test.js +76 -0
  114. package/lib/MerchiSDK/entities/domain_invitation.js +90 -0
  115. package/lib/MerchiSDK/entities/domain_invitation.test.js +7 -0
  116. package/lib/MerchiSDK/entities/domain_tag.js +100 -0
  117. package/lib/MerchiSDK/entities/domain_tag.test.js +7 -0
  118. package/lib/MerchiSDK/entities/draft.js +180 -0
  119. package/lib/MerchiSDK/entities/draft.test.js +40 -0
  120. package/lib/MerchiSDK/entities/draft_comment.js +132 -0
  121. package/lib/MerchiSDK/entities/draft_comment.test.js +7 -0
  122. package/lib/MerchiSDK/entities/draft_template.js +105 -0
  123. package/lib/MerchiSDK/entities/draft_template.test.js +7 -0
  124. package/lib/MerchiSDK/entities/email_address.js +68 -0
  125. package/lib/MerchiSDK/entities/email_address.test.js +7 -0
  126. package/lib/MerchiSDK/entities/email_counter.js +56 -0
  127. package/lib/MerchiSDK/entities/email_counter.test.js +7 -0
  128. package/lib/MerchiSDK/entities/enrolled_domain.js +85 -0
  129. package/lib/MerchiSDK/entities/enrolled_domain.test.js +7 -0
  130. package/lib/MerchiSDK/entities/exchange_rate.js +62 -0
  131. package/lib/MerchiSDK/entities/exchange_rate.test.js +7 -0
  132. package/lib/MerchiSDK/entities/file.js +384 -0
  133. package/lib/MerchiSDK/entities/file.test.js +39 -0
  134. package/lib/MerchiSDK/entities/internal_tag.js +120 -0
  135. package/lib/MerchiSDK/entities/internal_tag.test.js +7 -0
  136. package/lib/MerchiSDK/entities/inventory.js +120 -0
  137. package/lib/MerchiSDK/entities/inventory.test.js +27 -0
  138. package/lib/MerchiSDK/entities/inventory_unit_variation.js +64 -0
  139. package/lib/MerchiSDK/entities/inventory_unit_variation.test.js +7 -0
  140. package/lib/MerchiSDK/entities/invoice.js +420 -0
  141. package/lib/MerchiSDK/entities/invoice.test.js +40 -0
  142. package/lib/MerchiSDK/entities/item.js +102 -0
  143. package/lib/MerchiSDK/entities/item.test.js +18 -0
  144. package/lib/MerchiSDK/entities/job.js +744 -0
  145. package/lib/MerchiSDK/entities/job.test.js +104 -0
  146. package/lib/MerchiSDK/entities/job_comment.js +120 -0
  147. package/lib/MerchiSDK/entities/job_comment.test.js +7 -0
  148. package/lib/MerchiSDK/entities/matching_inventory.js +77 -0
  149. package/lib/MerchiSDK/entities/menu.js +78 -0
  150. package/lib/MerchiSDK/entities/menu.test.js +7 -0
  151. package/lib/MerchiSDK/entities/menu_item.js +76 -0
  152. package/lib/MerchiSDK/entities/menu_item.test.js +7 -0
  153. package/lib/MerchiSDK/entities/notification.js +234 -0
  154. package/lib/MerchiSDK/entities/notification.test.js +7 -0
  155. package/lib/MerchiSDK/entities/page.js +84 -0
  156. package/lib/MerchiSDK/entities/page.test.js +7 -0
  157. package/lib/MerchiSDK/entities/payment.js +141 -0
  158. package/lib/MerchiSDK/entities/payment.test.js +19 -0
  159. package/lib/MerchiSDK/entities/payment_device.js +87 -0
  160. package/lib/MerchiSDK/entities/payment_device.test.js +7 -0
  161. package/lib/MerchiSDK/entities/phone_number.js +98 -0
  162. package/lib/MerchiSDK/entities/phone_number.test.js +7 -0
  163. package/lib/MerchiSDK/entities/product.js +806 -0
  164. package/lib/MerchiSDK/entities/product.test.js +812 -0
  165. package/lib/MerchiSDK/entities/production_comment.js +120 -0
  166. package/lib/MerchiSDK/entities/production_comment.test.js +7 -0
  167. package/lib/MerchiSDK/entities/quote.js +208 -0
  168. package/lib/MerchiSDK/entities/quote.test.js +108 -0
  169. package/lib/MerchiSDK/entities/quote_item.js +121 -0
  170. package/lib/MerchiSDK/entities/quote_item.test.js +57 -0
  171. package/lib/MerchiSDK/entities/seo_domain_page.js +82 -0
  172. package/lib/MerchiSDK/entities/seo_domain_page.test.js +7 -0
  173. package/lib/MerchiSDK/entities/session.js +77 -0
  174. package/lib/MerchiSDK/entities/session.test.js +7 -0
  175. package/lib/MerchiSDK/entities/shipment.js +401 -0
  176. package/lib/MerchiSDK/entities/shipment.test.js +29 -0
  177. package/lib/MerchiSDK/entities/shipment_item.js +49 -0
  178. package/lib/MerchiSDK/entities/shipment_item.test.js +7 -0
  179. package/lib/MerchiSDK/entities/shipment_item_fulfillment.js +48 -0
  180. package/lib/MerchiSDK/entities/shipment_item_fulfillment.test.js +7 -0
  181. package/lib/MerchiSDK/entities/shipment_method.js +146 -0
  182. package/lib/MerchiSDK/entities/shipment_method.test.js +7 -0
  183. package/lib/MerchiSDK/entities/shipment_method_variation.js +104 -0
  184. package/lib/MerchiSDK/entities/shipment_method_variation.test.js +7 -0
  185. package/lib/MerchiSDK/entities/short_url.js +95 -0
  186. package/lib/MerchiSDK/entities/short_url.test.js +7 -0
  187. package/lib/MerchiSDK/entities/subscription_plan.js +172 -0
  188. package/lib/MerchiSDK/entities/subscription_plan.test.js +7 -0
  189. package/lib/MerchiSDK/entities/supply_domain.js +73 -0
  190. package/lib/MerchiSDK/entities/supply_domain.test.js +7 -0
  191. package/lib/MerchiSDK/entities/system_role.js +50 -0
  192. package/lib/MerchiSDK/entities/system_role.test.js +7 -0
  193. package/lib/MerchiSDK/entities/theme.js +614 -0
  194. package/lib/MerchiSDK/entities/theme.test.js +40 -0
  195. package/lib/MerchiSDK/entities/theme_css_setting.js +67 -0
  196. package/lib/MerchiSDK/entities/theme_css_setting.test.js +7 -0
  197. package/lib/MerchiSDK/entities/user.js +749 -0
  198. package/lib/MerchiSDK/entities/user.test.js +158 -0
  199. package/lib/MerchiSDK/entities/user_company.js +78 -0
  200. package/lib/MerchiSDK/entities/user_company.test.js +7 -0
  201. package/lib/MerchiSDK/entities/variation.js +147 -0
  202. package/lib/MerchiSDK/entities/variation.test.js +7 -0
  203. package/lib/MerchiSDK/entities/variation_field.js +313 -0
  204. package/lib/MerchiSDK/entities/variation_field.test.js +70 -0
  205. package/lib/MerchiSDK/entities/variation_fields_option.js +190 -0
  206. package/lib/MerchiSDK/entities/variation_fields_option.test.js +48 -0
  207. package/lib/MerchiSDK/entities/variation_option.js +129 -0
  208. package/lib/MerchiSDK/entities/variation_option.test.js +7 -0
  209. package/lib/MerchiSDK/entities/variations_group.js +111 -0
  210. package/lib/MerchiSDK/entities/variations_group.test.js +7 -0
  211. package/lib/MerchiSDK/entity.js +896 -0
  212. package/lib/MerchiSDK/merchi.js +332 -0
  213. package/lib/MerchiSDK/merchi.test.js +36 -0
  214. package/lib/MerchiSDK/request.js +137 -0
  215. package/lib/MerchiSDK/request.test.js +47 -0
  216. package/lib/MerchiSDK/test_util.js +20 -0
  217. package/lib/MerchiSDK/toasts.js +28 -0
  218. package/lib/MerchiSDK/toasts.test.js +47 -0
  219. package/lib/MerchiSDK/util/float.js +25 -0
  220. package/lib/MerchiSDK/util/query_string.js +12 -0
  221. package/lib/MerchiSDK/util/query_string.test.js +7 -0
  222. package/lib/MerchiSDK/util/validation.js +4 -0
  223. package/lib/MerchiSDK/util/validation.test.js +13 -0
  224. package/lib/MerchiSDK/uuid.js +9 -0
  225. package/lib/MerchiSDK/uuid.test.js +14 -0
  226. package/lib/assets/merchi-swipe-outline.png +0 -0
  227. package/lib/assets/product-not-found.png +0 -0
  228. package/lib/buttons/Button.js +24 -0
  229. package/lib/buttons/ButtonBack.js +38 -0
  230. package/lib/buttons/ButtonClearCart.js +19 -0
  231. package/lib/buttons/ButtonInvoiceDownload.js +96 -0
  232. package/lib/buttons/ButtonNext.js +45 -0
  233. package/lib/buttons/ButtonNextDynamic.js +23 -0
  234. package/lib/buttons/ButtonPay.js +28 -0
  235. package/lib/buttons/ButtonShipmentTabNext.js +33 -0
  236. package/lib/buttons/index.js +8 -0
  237. package/lib/components/Alert.js +27 -0
  238. package/lib/components/CartBody.js +15 -0
  239. package/lib/components/CartClient.js +52 -0
  240. package/lib/components/CartFooter.js +13 -0
  241. package/lib/components/CartItemRow.js +133 -0
  242. package/lib/components/CartPaymentSettingsInvalid.js +15 -0
  243. package/lib/components/CartShipment.js +57 -0
  244. package/lib/components/CartTabContent.js +13 -0
  245. package/lib/components/CartTabPanel.js +26 -0
  246. package/lib/components/CartTableContainer.js +13 -0
  247. package/lib/components/Collapse.js +33 -0
  248. package/lib/components/LoadingTemplate.js +25 -0
  249. package/lib/components/NoCartItems.js +18 -0
  250. package/lib/components/ShipmentGroupCard.js +132 -0
  251. package/lib/components/Table.js +12 -0
  252. package/lib/components/Title.js +28 -0
  253. package/lib/components/containers.js +32 -0
  254. package/lib/components/index.js +15 -0
  255. package/lib/forms/FormNewCustomer.js +157 -0
  256. package/lib/forms/FormReturningCustomer.js +93 -0
  257. package/lib/forms/FormShipmentAddressAndNotes.js +118 -0
  258. package/lib/forms/FormSquarePayment.js +17 -0
  259. package/lib/forms/FormStripePayment.js +17 -0
  260. package/lib/forms/InputAcceptUserTermsAndConditions.js +38 -0
  261. package/lib/forms/InputError.js +17 -0
  262. package/lib/forms/InputSelect.js +52 -0
  263. package/lib/forms/InputText.js +59 -0
  264. package/lib/forms/InputsAddress.js +226 -0
  265. package/lib/index.js +5 -0
  266. package/lib/panels/PanelCartItems.js +59 -0
  267. package/lib/panels/PanelCartShipment.js +74 -0
  268. package/lib/panels/PanelClearCart.js +49 -0
  269. package/lib/panels/PanelClientCheckout.js +80 -0
  270. package/lib/panels/PanelEditCartItem.js +63 -0
  271. package/lib/panels/PanelPaymentSuccess.js +70 -0
  272. package/lib/panels/index.js +8 -0
  273. package/lib/slices/sliceCart.js +178 -0
  274. package/lib/slices/sliceCartAlert.js +35 -0
  275. package/lib/slices/sliceCartItem.js +30 -0
  276. package/lib/slices/sliceCartPayment.js +47 -0
  277. package/lib/slices/sliceCartShipment.js +72 -0
  278. package/lib/slices/sliceFormReturningCustomer.js +24 -0
  279. package/lib/slices/sliceNewCustomerForm.js +23 -0
  280. package/lib/square/SquareCard.js +52 -0
  281. package/lib/square/actions.js +53 -0
  282. package/lib/square/slices/reducersSquare.js +8 -0
  283. package/lib/square/slices/sliceSquareAlerts.js +34 -0
  284. package/lib/square/slices/sliceSquareForm.js +30 -0
  285. package/lib/store.js +704 -0
  286. package/lib/stripe/StripeCardFields.js +131 -0
  287. package/lib/stripe/StripeCardForm.js +149 -0
  288. package/lib/stripe/StripePaymentButtons.js +99 -0
  289. package/lib/stripe/actions.js +203 -0
  290. package/lib/stripe/slices/sliceStripeAlerts.js +34 -0
  291. package/lib/stripe/slices/sliceStripeCardForm.js +8 -0
  292. package/lib/stripe/slices/sliceStripeForm.js +57 -0
  293. package/lib/stripe/utils.js +20 -0
  294. package/lib/styles/globals.scss +179 -0
  295. package/lib/tabs/CartNav.js +33 -0
  296. package/lib/tabs/NavTab.js +38 -0
  297. package/lib/utilities/address.js +343 -0
  298. package/lib/utilities/cart.js +91 -0
  299. package/lib/utilities/company.js +7 -0
  300. package/lib/utilities/cookie.js +135 -0
  301. package/lib/utilities/currency.js +220 -0
  302. package/lib/utilities/helpers.js +224 -0
  303. package/lib/utilities/invoice.js +120 -0
  304. package/lib/utilities/product.js +6 -0
  305. package/lib/utilities/user.js +77 -0
  306. package/lib/utilities/variations.js +48 -0
  307. package/package.json +90 -0
package/lib/store.js ADDED
@@ -0,0 +1,704 @@
1
+ function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator["return"] && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
2
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
3
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
4
+ function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
5
+ function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
6
+ function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
7
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
8
+ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
9
+ function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
10
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
11
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
12
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
13
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
14
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
15
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
16
+ import { batch } from 'react-redux';
17
+ import { configureStore, getDefaultMiddleware } from '@reduxjs/toolkit';
18
+ import { sliceCart, tabIdCheckout, tabIdItem, tabIdItems, tabIdPaymentSuccess } from './slices/sliceCart';
19
+ import { sliceCartAlert } from './slices/sliceCartAlert';
20
+ import sliceCartItem from './slices/sliceCartItem';
21
+ import { sliceCartPayment } from './slices/sliceCartPayment';
22
+ import { sliceCartShipment } from './slices/sliceCartShipment';
23
+ import sliceNewCustomerForm from './slices/sliceNewCustomerForm';
24
+ import sliceFormReturningCustomer from './slices/sliceFormReturningCustomer';
25
+ import reducersSquare from './square/slices/reducersSquare';
26
+ import sliceStripeCardForm from './stripe/slices/sliceStripeCardForm';
27
+ import { Merchi } from './MerchiSDK/merchi';
28
+ import { cartEmbed } from './utilities/helpers';
29
+ import { makeAddress } from './utilities/address';
30
+ import { getCartCookie as getMerchiCartCookie, setCartCookie } from './utilities/cookie';
31
+ import { getCartShipmentGroupsAndQuotes, makeCart, makeCartItem, makeCartShipmentQuote, stripeIsValidAndActive } from './utilities/cart';
32
+ import { makeUser, createNewCustomer, tryReturningCustomerEmail } from './utilities/user';
33
+ import { appendStyleSheetText } from './utilities/helpers';
34
+ var merchi = new Merchi();
35
+ var middleware = getDefaultMiddleware({
36
+ serializableCheck: false
37
+ });
38
+ var merchiCartReducer = _objectSpread(_objectSpread({
39
+ stateCartAlert: sliceCartAlert.reducer,
40
+ stateCartItem: sliceCartItem.reducer,
41
+ stateCartPayment: sliceCartPayment.reducer,
42
+ stateCartShipment: sliceCartShipment.reducer,
43
+ stateCart: sliceCart.reducer,
44
+ stateNewCustomerForm: sliceNewCustomerForm.reducer,
45
+ stateFormReturningCustomer: sliceFormReturningCustomer.reducer
46
+ }, reducersSquare), sliceStripeCardForm);
47
+ export var store = configureStore({
48
+ middleware: _toConsumableArray(middleware),
49
+ reducer: merchiCartReducer
50
+ });
51
+ function getStore() {
52
+ return store.getState();
53
+ }
54
+ var _sliceCart$actions = sliceCart.actions,
55
+ deleteCartItem = _sliceCart$actions.deleteCartItem,
56
+ deleteCartItemError = _sliceCart$actions.deleteCartItemError,
57
+ deleteCartItemSuccess = _sliceCart$actions.deleteCartItemSuccess,
58
+ fetchCart = _sliceCart$actions.fetchCart,
59
+ fetchCartError = _sliceCart$actions.fetchCartError,
60
+ fetchCartSuccess = _sliceCart$actions.fetchCartSuccess,
61
+ fetchTheme = _sliceCart$actions.fetchTheme,
62
+ fetchThemeError = _sliceCart$actions.fetchThemeError,
63
+ fetchThemeSuccess = _sliceCart$actions.fetchThemeSuccess,
64
+ setCart = _sliceCart$actions.setCart,
65
+ setCartClient = _sliceCart$actions.setCartClient,
66
+ setDomainId = _sliceCart$actions.setDomainId,
67
+ setCartShipmentGroups = _sliceCart$actions.setCartShipmentGroups;
68
+ function getCartToken() {
69
+ return _getCartToken.apply(this, arguments);
70
+ }
71
+ function _getCartToken() {
72
+ _getCartToken = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
73
+ var domainId, cartIdAndToken;
74
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
75
+ while (1) switch (_context.prev = _context.next) {
76
+ case 0:
77
+ domainId = getStore().stateCart.domainId;
78
+ if (!domainId) {
79
+ _context.next = 7;
80
+ break;
81
+ }
82
+ _context.next = 4;
83
+ return getMerchiCartCookie(Number(domainId));
84
+ case 4:
85
+ _context.t0 = _context.sent;
86
+ _context.next = 8;
87
+ break;
88
+ case 7:
89
+ _context.t0 = undefined;
90
+ case 8:
91
+ cartIdAndToken = _context.t0;
92
+ return _context.abrupt("return", cartIdAndToken && cartIdAndToken[1] ? cartIdAndToken[1] : undefined);
93
+ case 10:
94
+ case "end":
95
+ return _context.stop();
96
+ }
97
+ }, _callee);
98
+ }));
99
+ return _getCartToken.apply(this, arguments);
100
+ }
101
+ function dispatch(method) {
102
+ store.dispatch(method);
103
+ }
104
+ export function axtionSetCartClient(client) {
105
+ dispatch(setCartClient(client));
106
+ }
107
+ export function setCartItem(cartItem, index) {
108
+ batch(function () {
109
+ if (cartItem && cartItem.id) {
110
+ setActiveTab(tabIdItem);
111
+ } else {
112
+ setActiveTab(tabIdItems);
113
+ }
114
+ dispatch(sliceCartItem.actions.setCartItem({
115
+ cartItem: cartItem,
116
+ index: index
117
+ }));
118
+ });
119
+ }
120
+ export function setActiveTab(tabId) {
121
+ dispatch(sliceCart.actions.setActiveTab(tabId));
122
+ }
123
+ export function setActiveTabAndEditDisabled(settings) {
124
+ dispatch(sliceCart.actions.setActiveTabAndEditDisabled(settings));
125
+ }
126
+ export function closeAlert() {
127
+ dispatch(sliceCartAlert.actions.closeAlert());
128
+ }
129
+ export function closeClearCart() {
130
+ dispatch(sliceCart.actions.setActiveTab(tabIdItems));
131
+ }
132
+ export function alertError(message) {
133
+ dispatch(sliceCartAlert.actions.showAlertDanger({
134
+ message: message,
135
+ title: 'Error!'
136
+ }));
137
+ }
138
+ function alertSuccess(message) {
139
+ dispatch(sliceCartAlert.actions.showAlertSuccess({
140
+ message: message,
141
+ title: 'Success!'
142
+ }));
143
+ }
144
+ export function actionFetchTheme(id) {
145
+ dispatch(fetchTheme());
146
+ merchi.Domain.get(id, {
147
+ embed: {
148
+ activeTheme: {
149
+ mainCss: {}
150
+ }
151
+ }
152
+ }).then(function (domain) {
153
+ return domain.activeTheme;
154
+ }).then(function (theme) {
155
+ appendStyleSheetText(theme.mainCss, function () {
156
+ return dispatch(fetchThemeSuccess());
157
+ });
158
+ })["catch"](function (e) {
159
+ alertError(e.errorMessage);
160
+ dispatch(fetchThemeError());
161
+ });
162
+ }
163
+ function cartAndCookie() {
164
+ return _cartAndCookie.apply(this, arguments);
165
+ }
166
+ function _cartAndCookie() {
167
+ _cartAndCookie = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
168
+ var domainId, cart;
169
+ return _regeneratorRuntime().wrap(function _callee2$(_context2) {
170
+ while (1) switch (_context2.prev = _context2.next) {
171
+ case 0:
172
+ domainId = getStore().stateCart.domainId;
173
+ cart = makeCart({
174
+ domain: {
175
+ id: domainId
176
+ }
177
+ }, true);
178
+ return _context2.abrupt("return", cart.create({
179
+ embed: cartEmbed
180
+ }).then(function (c) {
181
+ if (domainId) {
182
+ setCartCookie(Number(domainId), c.toJson(), undefined);
183
+ }
184
+ return c.toJson();
185
+ }).then(function (cJson) {
186
+ dispatch(fetchCartSuccess(cJson));
187
+ })["catch"](function (e) {
188
+ batch(function () {
189
+ alertError(e.errorMessage);
190
+ dispatch(fetchCartError());
191
+ });
192
+ }));
193
+ case 3:
194
+ case "end":
195
+ return _context2.stop();
196
+ }
197
+ }, _callee2);
198
+ }));
199
+ return _cartAndCookie.apply(this, arguments);
200
+ }
201
+ export function createAndSetNewCartCookie() {
202
+ return _createAndSetNewCartCookie.apply(this, arguments);
203
+ }
204
+ function _createAndSetNewCartCookie() {
205
+ _createAndSetNewCartCookie = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {
206
+ return _regeneratorRuntime().wrap(function _callee3$(_context3) {
207
+ while (1) switch (_context3.prev = _context3.next) {
208
+ case 0:
209
+ dispatch(fetchCart());
210
+ _context3.next = 3;
211
+ return cartAndCookie();
212
+ case 3:
213
+ case "end":
214
+ return _context3.stop();
215
+ }
216
+ }, _callee3);
217
+ }));
218
+ return _createAndSetNewCartCookie.apply(this, arguments);
219
+ }
220
+ export function doClearCart() {
221
+ return _doClearCart.apply(this, arguments);
222
+ }
223
+ function _doClearCart() {
224
+ _doClearCart = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {
225
+ return _regeneratorRuntime().wrap(function _callee4$(_context4) {
226
+ while (1) switch (_context4.prev = _context4.next) {
227
+ case 0:
228
+ dispatch(setCart({}));
229
+ closeClearCart();
230
+ _context4.next = 4;
231
+ return createAndSetNewCartCookie();
232
+ case 4:
233
+ case "end":
234
+ return _context4.stop();
235
+ }
236
+ }, _callee4);
237
+ }));
238
+ return _doClearCart.apply(this, arguments);
239
+ }
240
+ export function patchCartItem(_x) {
241
+ return _patchCartItem.apply(this, arguments);
242
+ }
243
+ function _patchCartItem() {
244
+ _patchCartItem = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5(cartItem) {
245
+ var data, _sliceCartItem$action, doPatch, doPatchError, doPatchSuccess, cartToken, cart, _data$stateCartItem, stateCartItem, index, cartEnt, cartItemEnt;
246
+ return _regeneratorRuntime().wrap(function _callee5$(_context5) {
247
+ while (1) switch (_context5.prev = _context5.next) {
248
+ case 0:
249
+ data = getStore();
250
+ _sliceCartItem$action = sliceCartItem.actions, doPatch = _sliceCartItem$action.patchCartItem, doPatchError = _sliceCartItem$action.patchCartItemError, doPatchSuccess = _sliceCartItem$action.patchCartItemSuccess;
251
+ _context5.next = 4;
252
+ return getCartToken();
253
+ case 4:
254
+ cartToken = _context5.sent;
255
+ cart = data.stateCart.cart, _data$stateCartItem = data.stateCartItem, stateCartItem = _data$stateCartItem.cartItem, index = _data$stateCartItem.index;
256
+ cartEnt = makeCart(cart, false, cartToken);
257
+ cartItemEnt = makeCartItem(cartItem, true);
258
+ cartItemEnt.id = stateCartItem.id;
259
+ cartEnt.cartItems[index] = cartItemEnt;
260
+ dispatch(doPatch());
261
+ cartEnt.save({
262
+ embed: cartEmbed
263
+ }).then(function (c) {
264
+ batch(function () {
265
+ alertSuccess('Item updated.');
266
+ dispatch(setCart(c.toJson()));
267
+ dispatch(doPatchSuccess());
268
+ setActiveTab(tabIdItems);
269
+ });
270
+ }).then(function () {
271
+ setCartItem({}, 0);
272
+ })["catch"](function (e) {
273
+ batch(function () {
274
+ alertError(e.errorMessage);
275
+ dispatch(doPatchError());
276
+ });
277
+ });
278
+ case 12:
279
+ case "end":
280
+ return _context5.stop();
281
+ }
282
+ }, _callee5);
283
+ }));
284
+ return _patchCartItem.apply(this, arguments);
285
+ }
286
+ export function actionDeleteCartItem(_x2) {
287
+ return _actionDeleteCartItem.apply(this, arguments);
288
+ }
289
+ function _actionDeleteCartItem() {
290
+ _actionDeleteCartItem = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee6(index) {
291
+ var data, cartToken, cart, cartEnt, cartItems;
292
+ return _regeneratorRuntime().wrap(function _callee6$(_context6) {
293
+ while (1) switch (_context6.prev = _context6.next) {
294
+ case 0:
295
+ data = getStore();
296
+ _context6.next = 3;
297
+ return getCartToken();
298
+ case 3:
299
+ cartToken = _context6.sent;
300
+ cart = data.stateCart.cart;
301
+ cartEnt = makeCart(cart, false, cartToken);
302
+ cartItems = cartEnt.cartItems;
303
+ cartItems.splice(index, 1);
304
+ cartEnt.cartItems = cartItems;
305
+ dispatch(deleteCartItem(index));
306
+ cartEnt.save({
307
+ embed: cartEmbed
308
+ }).then(function (c) {
309
+ dispatch(deleteCartItemSuccess(c.toJson()));
310
+ })["catch"](function (e) {
311
+ batch(function () {
312
+ alertError(e.errorMessage);
313
+ dispatch(deleteCartItemError());
314
+ });
315
+ });
316
+ case 11:
317
+ case "end":
318
+ return _context6.stop();
319
+ }
320
+ }, _callee6);
321
+ }));
322
+ return _actionDeleteCartItem.apply(this, arguments);
323
+ }
324
+ export function updateCartShipmentAddress() {
325
+ return _updateCartShipmentAddress.apply(this, arguments);
326
+ }
327
+ function _updateCartShipmentAddress() {
328
+ _updateCartShipmentAddress = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee7() {
329
+ var _sliceCartShipment$ac, updateShipmentAddressError, updateShipmentAddressSuccess, cartToken, _getStore, cart, address, receiverAddress, cartEnt;
330
+ return _regeneratorRuntime().wrap(function _callee7$(_context7) {
331
+ while (1) switch (_context7.prev = _context7.next) {
332
+ case 0:
333
+ _sliceCartShipment$ac = sliceCartShipment.actions, updateShipmentAddressError = _sliceCartShipment$ac.updateShipmentAddressError, updateShipmentAddressSuccess = _sliceCartShipment$ac.updateShipmentAddressSuccess;
334
+ _context7.next = 3;
335
+ return getCartToken();
336
+ case 3:
337
+ cartToken = _context7.sent;
338
+ _getStore = getStore(), cart = _getStore.stateCart.cart, address = _getStore.stateCartShipment.receiverAddress;
339
+ receiverAddress = makeAddress(address, true);
340
+ cartEnt = makeCart(cart, false, cartToken);
341
+ cartEnt.receiverAddress = receiverAddress;
342
+ cartEnt.save({
343
+ embed: cartEmbed
344
+ }).then(function (c) {
345
+ dispatch(setCart(c.toJson()));
346
+ getCartShipmentGroupsAndQuotes(c.toJson()).then(function (cartWithShipmentGroups) {
347
+ var cartJson = cartWithShipmentGroups;
348
+ batch(function () {
349
+ dispatch(setCartShipmentGroups(cartJson.shipmentGroups));
350
+ dispatch(updateShipmentAddressSuccess(cartJson.shipmentGroups));
351
+ });
352
+ });
353
+ })["catch"](function (e) {
354
+ batch(function () {
355
+ alertError(e.errorMessage);
356
+ dispatch(updateShipmentAddressError());
357
+ });
358
+ });
359
+ case 9:
360
+ case "end":
361
+ return _context7.stop();
362
+ }
363
+ }, _callee7);
364
+ }));
365
+ return _updateCartShipmentAddress.apply(this, arguments);
366
+ }
367
+ export function saveCartShipmentAddressAndGoToNextTab(_x3) {
368
+ return _saveCartShipmentAddressAndGoToNextTab.apply(this, arguments);
369
+ }
370
+ function _saveCartShipmentAddressAndGoToNextTab() {
371
+ _saveCartShipmentAddressAndGoToNextTab = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee8(values) {
372
+ var address, receiverNotes, _sliceCartShipment$ac2, saveShipmentAddress, saveShipmentAddressError, saveShipmentAddressSuccess, cartToken, _getStore2, cart, receiverAddress, cartEnt;
373
+ return _regeneratorRuntime().wrap(function _callee8$(_context8) {
374
+ while (1) switch (_context8.prev = _context8.next) {
375
+ case 0:
376
+ address = values.receiverAddress, receiverNotes = values.receiverNotes;
377
+ _sliceCartShipment$ac2 = sliceCartShipment.actions, saveShipmentAddress = _sliceCartShipment$ac2.saveShipmentAddress, saveShipmentAddressError = _sliceCartShipment$ac2.saveShipmentAddressError, saveShipmentAddressSuccess = _sliceCartShipment$ac2.saveShipmentAddressSuccess;
378
+ _context8.next = 4;
379
+ return getCartToken();
380
+ case 4:
381
+ cartToken = _context8.sent;
382
+ _getStore2 = getStore(), cart = _getStore2.stateCart.cart;
383
+ dispatch(saveShipmentAddress());
384
+ receiverAddress = makeAddress(address, true);
385
+ cartEnt = makeCart(cart, false, cartToken);
386
+ cartEnt.receiverAddress = receiverAddress;
387
+ cartEnt.receiverNotes = receiverNotes;
388
+ cartEnt.save({
389
+ embed: cartEmbed
390
+ }).then(function (c) {
391
+ batch(function () {
392
+ dispatch(setCart(c.toJson()));
393
+ dispatch(saveShipmentAddressSuccess());
394
+ setActiveTabAndEditDisabled({
395
+ tabId: tabIdCheckout,
396
+ tabIndexToSet: 2,
397
+ disabled: false
398
+ });
399
+ });
400
+ })["catch"](function (e) {
401
+ batch(function () {
402
+ alertError(e.errorMessage);
403
+ dispatch(saveShipmentAddressError());
404
+ });
405
+ });
406
+ case 12:
407
+ case "end":
408
+ return _context8.stop();
409
+ }
410
+ }, _callee8);
411
+ }));
412
+ return _saveCartShipmentAddressAndGoToNextTab.apply(this, arguments);
413
+ }
414
+ function attachClientToCart(_x4) {
415
+ return _attachClientToCart.apply(this, arguments);
416
+ }
417
+ function _attachClientToCart() {
418
+ _attachClientToCart = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee9(clientJson) {
419
+ var createNewSuccess, cartToken, _getStore3, cart, clientEnt, cartEnt;
420
+ return _regeneratorRuntime().wrap(function _callee9$(_context9) {
421
+ while (1) switch (_context9.prev = _context9.next) {
422
+ case 0:
423
+ createNewSuccess = sliceNewCustomerForm.actions.createNewCustomerSuccess;
424
+ _context9.next = 3;
425
+ return getCartToken();
426
+ case 3:
427
+ cartToken = _context9.sent;
428
+ _getStore3 = getStore(), cart = _getStore3.stateCart.cart;
429
+ clientEnt = makeUser({
430
+ id: clientJson.id
431
+ });
432
+ cartEnt = makeCart(cart, false, cartToken);
433
+ cartEnt.client = clientEnt;
434
+ return _context9.abrupt("return", cartEnt.save({
435
+ embed: cartEmbed
436
+ }).then(function (c) {
437
+ dispatch(setCart(c.toJson()));
438
+ dispatch(createNewSuccess());
439
+ }));
440
+ case 9:
441
+ case "end":
442
+ return _context9.stop();
443
+ }
444
+ }, _callee9);
445
+ }));
446
+ return _attachClientToCart.apply(this, arguments);
447
+ }
448
+ export function setSelectedShipmentQuote(_x5, _x6) {
449
+ return _setSelectedShipmentQuote.apply(this, arguments);
450
+ }
451
+ function _setSelectedShipmentQuote() {
452
+ _setSelectedShipmentQuote = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee10(groupIndex, quote) {
453
+ var cartToken, _getStore4, cart, _sliceCartShipment$ac3, setSelected, setSelectedShipmentQuoteError, setSelectedShipmentQuoteSuccess, cartEnt, cartShipmentQuote;
454
+ return _regeneratorRuntime().wrap(function _callee10$(_context10) {
455
+ while (1) switch (_context10.prev = _context10.next) {
456
+ case 0:
457
+ _context10.next = 2;
458
+ return getCartToken();
459
+ case 2:
460
+ cartToken = _context10.sent;
461
+ _getStore4 = getStore(), cart = _getStore4.stateCart.cart;
462
+ _sliceCartShipment$ac3 = sliceCartShipment.actions, setSelected = _sliceCartShipment$ac3.setSelectedShipmentQuote, setSelectedShipmentQuoteError = _sliceCartShipment$ac3.setSelectedShipmentQuoteError, setSelectedShipmentQuoteSuccess = _sliceCartShipment$ac3.setSelectedShipmentQuoteSuccess;
463
+ cartEnt = makeCart(cart, false, cartToken);
464
+ cartShipmentQuote = makeCartShipmentQuote(quote);
465
+ cartEnt.shipmentGroups[groupIndex].selectedQuote = cartShipmentQuote;
466
+ dispatch(setSelected({
467
+ groupIndex: groupIndex,
468
+ quote: quote
469
+ }));
470
+ cartEnt.save({
471
+ embed: cartEmbed
472
+ }).then(function (c) {
473
+ dispatch(setCart(c.toJson()));
474
+ dispatch(setSelectedShipmentQuoteSuccess());
475
+ })["catch"](function (e) {
476
+ batch(function () {
477
+ alertError(e.errorMessage);
478
+ dispatch(setSelectedShipmentQuoteError());
479
+ });
480
+ });
481
+ case 10:
482
+ case "end":
483
+ return _context10.stop();
484
+ }
485
+ }, _callee10);
486
+ }));
487
+ return _setSelectedShipmentQuote.apply(this, arguments);
488
+ }
489
+ var _sliceFormReturningCu = sliceFormReturningCustomer.actions,
490
+ setReturningCustomerError = _sliceFormReturningCu.setReturningCustomerError,
491
+ tryReturning = _sliceFormReturningCu.tryReturningCustomer,
492
+ tryReturningCustomerError = _sliceFormReturningCu.tryReturningCustomerError,
493
+ tryReturningCustomerSuccess = _sliceFormReturningCu.tryReturningCustomerSuccess;
494
+ export function tryReturningCustomer(urlApi, data) {
495
+ var emailAddress = data.emailAddress;
496
+ dispatch(tryReturning());
497
+ tryReturningCustomerEmail(urlApi, emailAddress).then(function (r) {
498
+ return attachClientToCart({
499
+ emailAddresses: [{
500
+ emailAddress: emailAddress
501
+ }],
502
+ id: r.user_id
503
+ });
504
+ }).then(function () {
505
+ return dispatch(tryReturningCustomerSuccess());
506
+ })["catch"](function (e) {
507
+ return batch(function () {
508
+ alertError(e.errorMessage);
509
+ dispatch(tryReturningCustomerError());
510
+ dispatch(setReturningCustomerError(true));
511
+ });
512
+ });
513
+ }
514
+ var _sliceNewCustomerForm = sliceNewCustomerForm.actions,
515
+ createNew = _sliceNewCustomerForm.createNewCustomer,
516
+ createNewError = _sliceNewCustomerForm.createNewCustomerError,
517
+ createNewSuccess = _sliceNewCustomerForm.createNewCustomerSuccess;
518
+ export function actionCreateNewCustomer(urlApi, customerJson) {
519
+ var cart = getStore().stateCart.cart;
520
+ var domainId = cart && cart.domain && cart.domain.id;
521
+ dispatch(createNew());
522
+ var user = makeUser(_objectSpread(_objectSpread({}, customerJson), {}, {
523
+ registeredUnderDomains: [{
524
+ id: domainId
525
+ }]
526
+ }), true);
527
+ var error = function error(e) {
528
+ return batch(function () {
529
+ alertError(e.errorMessage);
530
+ dispatch(createNewError(e.errorMessage));
531
+ });
532
+ };
533
+ createNewCustomer(urlApi, _objectSpread(_objectSpread({}, customerJson), {}, {
534
+ registeredUnderDomains: [{
535
+ id: domainId
536
+ }]
537
+ })).then(function (r) {
538
+ var userJson = r.user;
539
+ attachClientToCart(userJson);
540
+ }).then(function () {
541
+ return dispatch(createNewSuccess());
542
+ })["catch"](error);
543
+ }
544
+ var creditCardPaySuccess = sliceCartPayment.actions.creditCardPaySuccess;
545
+ export function callbackCreditCardPaymentSuccess(invoiceJson) {
546
+ batch(function () {
547
+ dispatch(creditCardPaySuccess(invoiceJson));
548
+ setActiveTab(tabIdPaymentSuccess);
549
+ });
550
+ }
551
+ function convertToJson(_x7) {
552
+ return _convertToJson.apply(this, arguments);
553
+ }
554
+ function _convertToJson() {
555
+ _convertToJson = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee11(ent) {
556
+ var json;
557
+ return _regeneratorRuntime().wrap(function _callee11$(_context11) {
558
+ while (1) switch (_context11.prev = _context11.next) {
559
+ case 0:
560
+ _context11.next = 2;
561
+ return ent.toJson();
562
+ case 2:
563
+ json = _context11.sent;
564
+ return _context11.abrupt("return", json);
565
+ case 4:
566
+ case "end":
567
+ return _context11.stop();
568
+ }
569
+ }, _callee11);
570
+ }));
571
+ return _convertToJson.apply(this, arguments);
572
+ }
573
+ function updateCartValues(cartJson) {
574
+ var initCartShipmentSlice = sliceCartShipment.actions.initCartShipmentSlice;
575
+ dispatch(sliceCart.actions.fetchCartSuccess(cartJson));
576
+ dispatch(initCartShipmentSlice(cartJson));
577
+ }
578
+ function getCart(cartIdAndToken) {
579
+ var cartSettingsInvalid = sliceCart.actions.cartSettingsInvalid;
580
+ var id = Number(cartIdAndToken[0]);
581
+ if (cartIdAndToken[1]) {
582
+ merchi.cartToken = cartIdAndToken[1];
583
+ }
584
+ dispatch(fetchCart());
585
+ merchi.Cart.get(id, {
586
+ embed: cartEmbed
587
+ }).then(convertToJson).then(function (cart) {
588
+ if (stripeIsValidAndActive(cart)) {
589
+ updateCartValues(cart);
590
+ } else {
591
+ console.error("MErhci cart error: Stripe payment " + "options have not been correctly set up. " + "Check the company profile payment options tab " + "to set and edit stripe payment options.");
592
+ dispatch(cartSettingsInvalid());
593
+ }
594
+ })["catch"](function (e) {
595
+ createAndSetNewCartCookie();
596
+ });
597
+ }
598
+ export function getMerchiCart(_x8) {
599
+ return _getMerchiCart.apply(this, arguments);
600
+ }
601
+ function _getMerchiCart() {
602
+ _getMerchiCart = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee12(domainId) {
603
+ var cartIdAndToken;
604
+ return _regeneratorRuntime().wrap(function _callee12$(_context12) {
605
+ while (1) switch (_context12.prev = _context12.next) {
606
+ case 0:
607
+ _context12.next = 2;
608
+ return getMerchiCartCookie(domainId);
609
+ case 2:
610
+ cartIdAndToken = _context12.sent;
611
+ dispatch(setDomainId({
612
+ cartIdAndToken: cartIdAndToken,
613
+ domainId: domainId
614
+ }));
615
+ if (cartIdAndToken) {
616
+ getCart(cartIdAndToken);
617
+ } else {
618
+ createAndSetNewCartCookie();
619
+ }
620
+ case 5:
621
+ case "end":
622
+ return _context12.stop();
623
+ }
624
+ }, _callee12);
625
+ }));
626
+ return _getMerchiCart.apply(this, arguments);
627
+ }
628
+ export function isMerchiCartFetching() {
629
+ return _isMerchiCartFetching.apply(this, arguments);
630
+ }
631
+ function _isMerchiCartFetching() {
632
+ _isMerchiCartFetching = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee13() {
633
+ return _regeneratorRuntime().wrap(function _callee13$(_context13) {
634
+ while (1) switch (_context13.prev = _context13.next) {
635
+ case 0:
636
+ return _context13.abrupt("return", getStore().stateCart.fetchingCart);
637
+ case 1:
638
+ case "end":
639
+ return _context13.stop();
640
+ }
641
+ }, _callee13);
642
+ }));
643
+ return _isMerchiCartFetching.apply(this, arguments);
644
+ }
645
+ export function getMerchiCartValues() {
646
+ return _getMerchiCartValues.apply(this, arguments);
647
+ }
648
+ function _getMerchiCartValues() {
649
+ _getMerchiCartValues = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee14() {
650
+ var cart, _ref, cartItems, currency, subtotalCost, taxAmount, totalCost, cartItemsCount;
651
+ return _regeneratorRuntime().wrap(function _callee14$(_context14) {
652
+ while (1) switch (_context14.prev = _context14.next) {
653
+ case 0:
654
+ cart = getStore().stateCart.cart;
655
+ _ref = cart, cartItems = _ref.cartItems, currency = _ref.currency, subtotalCost = _ref.subtotalCost, taxAmount = _ref.taxAmount, totalCost = _ref.totalCost;
656
+ cartItemsCount = cartItems ? cartItems.length : 0;
657
+ return _context14.abrupt("return", {
658
+ cart: cart,
659
+ cartItemsCount: cartItemsCount,
660
+ currency: currency || '',
661
+ subtotalCost: subtotalCost || 0,
662
+ taxAmount: taxAmount || 0,
663
+ totalCost: totalCost || 0
664
+ });
665
+ case 4:
666
+ case "end":
667
+ return _context14.stop();
668
+ }
669
+ }, _callee14);
670
+ }));
671
+ return _getMerchiCartValues.apply(this, arguments);
672
+ }
673
+ export function doCartComplete() {
674
+ return _doCartComplete.apply(this, arguments);
675
+ }
676
+ function _doCartComplete() {
677
+ _doCartComplete = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee15() {
678
+ return _regeneratorRuntime().wrap(function _callee15$(_context15) {
679
+ while (1) switch (_context15.prev = _context15.next) {
680
+ case 0:
681
+ dispatch(sliceCartPayment.actions.doCardComplete());
682
+ _context15.next = 3;
683
+ return cartAndCookie().then(function () {
684
+ return location.reload();
685
+ });
686
+ case 3:
687
+ case "end":
688
+ return _context15.stop();
689
+ }
690
+ }, _callee15);
691
+ }));
692
+ return _doCartComplete.apply(this, arguments);
693
+ }
694
+ export function initMerchiCart(domainId) {
695
+ getMerchiCart(domainId);
696
+ if (window && window !== undefined) {
697
+ window.getCart = function () {
698
+ return getMerchiCart(domainId);
699
+ };
700
+ window.isMerchiCartFetching = isMerchiCartFetching;
701
+ window.getMerchiCartValues = getMerchiCartValues;
702
+ }
703
+ }
704
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVnZW5lcmF0b3JSdW50aW1lIiwiZSIsInQiLCJyIiwiT2JqZWN0IiwicHJvdG90eXBlIiwibiIsImhhc093blByb3BlcnR5IiwibyIsImRlZmluZVByb3BlcnR5IiwidmFsdWUiLCJpIiwiU3ltYm9sIiwiYSIsIml0ZXJhdG9yIiwiYyIsImFzeW5jSXRlcmF0b3IiLCJ1IiwidG9TdHJpbmdUYWciLCJkZWZpbmUiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJ3cmFwIiwiR2VuZXJhdG9yIiwiY3JlYXRlIiwiQ29udGV4dCIsIm1ha2VJbnZva2VNZXRob2QiLCJ0cnlDYXRjaCIsInR5cGUiLCJhcmciLCJjYWxsIiwiaCIsImwiLCJmIiwicyIsInkiLCJHZW5lcmF0b3JGdW5jdGlvbiIsIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlIiwicCIsImQiLCJnZXRQcm90b3R5cGVPZiIsInYiLCJ2YWx1ZXMiLCJnIiwiZGVmaW5lSXRlcmF0b3JNZXRob2RzIiwiZm9yRWFjaCIsIl9pbnZva2UiLCJBc3luY0l0ZXJhdG9yIiwiaW52b2tlIiwiX3R5cGVvZiIsInJlc29sdmUiLCJfX2F3YWl0IiwidGhlbiIsImNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnIiwiRXJyb3IiLCJkb25lIiwibWV0aG9kIiwiZGVsZWdhdGUiLCJtYXliZUludm9rZURlbGVnYXRlIiwic2VudCIsIl9zZW50IiwiZGlzcGF0Y2hFeGNlcHRpb24iLCJhYnJ1cHQiLCJUeXBlRXJyb3IiLCJyZXN1bHROYW1lIiwibmV4dCIsIm5leHRMb2MiLCJwdXNoVHJ5RW50cnkiLCJ0cnlMb2MiLCJjYXRjaExvYyIsImZpbmFsbHlMb2MiLCJhZnRlckxvYyIsInRyeUVudHJpZXMiLCJwdXNoIiwicmVzZXRUcnlFbnRyeSIsImNvbXBsZXRpb24iLCJyZXNldCIsImlzTmFOIiwibGVuZ3RoIiwiZGlzcGxheU5hbWUiLCJpc0dlbmVyYXRvckZ1bmN0aW9uIiwiY29uc3RydWN0b3IiLCJuYW1lIiwibWFyayIsInNldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwiYXdyYXAiLCJhc3luYyIsIlByb21pc2UiLCJrZXlzIiwicmV2ZXJzZSIsInBvcCIsInByZXYiLCJjaGFyQXQiLCJzbGljZSIsInN0b3AiLCJydmFsIiwiaGFuZGxlIiwiY29tcGxldGUiLCJmaW5pc2giLCJfY2F0Y2giLCJkZWxlZ2F0ZVlpZWxkIiwiYXN5bmNHZW5lcmF0b3JTdGVwIiwiZ2VuIiwicmVqZWN0IiwiX25leHQiLCJfdGhyb3ciLCJrZXkiLCJpbmZvIiwiZXJyb3IiLCJfYXN5bmNUb0dlbmVyYXRvciIsImZuIiwic2VsZiIsImFyZ3MiLCJhcmd1bWVudHMiLCJhcHBseSIsImVyciIsInVuZGVmaW5lZCIsIl90b0NvbnN1bWFibGVBcnJheSIsImFyciIsIl9hcnJheVdpdGhvdXRIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXkiLCJfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkiLCJfbm9uSXRlcmFibGVTcHJlYWQiLCJtaW5MZW4iLCJfYXJyYXlMaWtlVG9BcnJheSIsInRvU3RyaW5nIiwiQXJyYXkiLCJmcm9tIiwidGVzdCIsIml0ZXIiLCJpc0FycmF5IiwibGVuIiwiYXJyMiIsIm93bktleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJfb2JqZWN0U3ByZWFkIiwiX2RlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJvYmoiLCJfdG9Qcm9wZXJ0eUtleSIsIl90b1ByaW1pdGl2ZSIsIlN0cmluZyIsInRvUHJpbWl0aXZlIiwiTnVtYmVyIiwiYmF0Y2giLCJjb25maWd1cmVTdG9yZSIsImdldERlZmF1bHRNaWRkbGV3YXJlIiwic2xpY2VDYXJ0IiwidGFiSWRDaGVja291dCIsInRhYklkSXRlbSIsInRhYklkSXRlbXMiLCJ0YWJJZFBheW1lbnRTdWNjZXNzIiwic2xpY2VDYXJ0QWxlcnQiLCJzbGljZUNhcnRJdGVtIiwic2xpY2VDYXJ0UGF5bWVudCIsInNsaWNlQ2FydFNoaXBtZW50Iiwic2xpY2VOZXdDdXN0b21lckZvcm0iLCJzbGljZUZvcm1SZXR1cm5pbmdDdXN0b21lciIsInJlZHVjZXJzU3F1YXJlIiwic2xpY2VTdHJpcGVDYXJkRm9ybSIsIk1lcmNoaSIsImNhcnRFbWJlZCIsIm1ha2VBZGRyZXNzIiwiZ2V0Q2FydENvb2tpZSIsImdldE1lcmNoaUNhcnRDb29raWUiLCJzZXRDYXJ0Q29va2llIiwiZ2V0Q2FydFNoaXBtZW50R3JvdXBzQW5kUXVvdGVzIiwibWFrZUNhcnQiLCJtYWtlQ2FydEl0ZW0iLCJtYWtlQ2FydFNoaXBtZW50UXVvdGUiLCJzdHJpcGVJc1ZhbGlkQW5kQWN0aXZlIiwibWFrZVVzZXIiLCJjcmVhdGVOZXdDdXN0b21lciIsInRyeVJldHVybmluZ0N1c3RvbWVyRW1haWwiLCJhcHBlbmRTdHlsZVNoZWV0VGV4dCIsIm1lcmNoaSIsIm1pZGRsZXdhcmUiLCJzZXJpYWxpemFibGVDaGVjayIsIm1lcmNoaUNhcnRSZWR1Y2VyIiwic3RhdGVDYXJ0QWxlcnQiLCJyZWR1Y2VyIiwic3RhdGVDYXJ0SXRlbSIsInN0YXRlQ2FydFBheW1lbnQiLCJzdGF0ZUNhcnRTaGlwbWVudCIsInN0YXRlQ2FydCIsInN0YXRlTmV3Q3VzdG9tZXJGb3JtIiwic3RhdGVGb3JtUmV0dXJuaW5nQ3VzdG9tZXIiLCJzdG9yZSIsImdldFN0b3JlIiwiZ2V0U3RhdGUiLCJfc2xpY2VDYXJ0JGFjdGlvbnMiLCJhY3Rpb25zIiwiZGVsZXRlQ2FydEl0ZW0iLCJkZWxldGVDYXJ0SXRlbUVycm9yIiwiZGVsZXRlQ2FydEl0ZW1TdWNjZXNzIiwiZmV0Y2hDYXJ0IiwiZmV0Y2hDYXJ0RXJyb3IiLCJmZXRjaENhcnRTdWNjZXNzIiwiZmV0Y2hUaGVtZSIsImZldGNoVGhlbWVFcnJvciIsImZldGNoVGhlbWVTdWNjZXNzIiwic2V0Q2FydCIsInNldENhcnRDbGllbnQiLCJzZXREb21haW5JZCIsInNldENhcnRTaGlwbWVudEdyb3VwcyIsImdldENhcnRUb2tlbiIsIl9nZXRDYXJ0VG9rZW4iLCJfY2FsbGVlIiwiZG9tYWluSWQiLCJjYXJ0SWRBbmRUb2tlbiIsIl9jYWxsZWUkIiwiX2NvbnRleHQiLCJ0MCIsImRpc3BhdGNoIiwiYXh0aW9uU2V0Q2FydENsaWVudCIsImNsaWVudCIsInNldENhcnRJdGVtIiwiY2FydEl0ZW0iLCJpbmRleCIsImlkIiwic2V0QWN0aXZlVGFiIiwidGFiSWQiLCJzZXRBY3RpdmVUYWJBbmRFZGl0RGlzYWJsZWQiLCJzZXR0aW5ncyIsImNsb3NlQWxlcnQiLCJjbG9zZUNsZWFyQ2FydCIsImFsZXJ0RXJyb3IiLCJtZXNzYWdlIiwic2hvd0FsZXJ0RGFuZ2VyIiwidGl0bGUiLCJhbGVydFN1Y2Nlc3MiLCJzaG93QWxlcnRTdWNjZXNzIiwiYWN0aW9uRmV0Y2hUaGVtZSIsIkRvbWFpbiIsImdldCIsImVtYmVkIiwiYWN0aXZlVGhlbWUiLCJtYWluQ3NzIiwiZG9tYWluIiwidGhlbWUiLCJlcnJvck1lc3NhZ2UiLCJjYXJ0QW5kQ29va2llIiwiX2NhcnRBbmRDb29raWUiLCJfY2FsbGVlMiIsImNhcnQiLCJfY2FsbGVlMiQiLCJfY29udGV4dDIiLCJ0b0pzb24iLCJjSnNvbiIsImNyZWF0ZUFuZFNldE5ld0NhcnRDb29raWUiLCJfY3JlYXRlQW5kU2V0TmV3Q2FydENvb2tpZSIsIl9jYWxsZWUzIiwiX2NhbGxlZTMkIiwiX2NvbnRleHQzIiwiZG9DbGVhckNhcnQiLCJfZG9DbGVhckNhcnQiLCJfY2FsbGVlNCIsIl9jYWxsZWU0JCIsIl9jb250ZXh0NCIsInBhdGNoQ2FydEl0ZW0iLCJfeCIsIl9wYXRjaENhcnRJdGVtIiwiX2NhbGxlZTUiLCJkYXRhIiwiX3NsaWNlQ2FydEl0ZW0kYWN0aW9uIiwiZG9QYXRjaCIsImRvUGF0Y2hFcnJvciIsImRvUGF0Y2hTdWNjZXNzIiwiY2FydFRva2VuIiwiX2RhdGEkc3RhdGVDYXJ0SXRlbSIsImNhcnRFbnQiLCJjYXJ0SXRlbUVudCIsIl9jYWxsZWU1JCIsIl9jb250ZXh0NSIsInBhdGNoQ2FydEl0ZW1FcnJvciIsInBhdGNoQ2FydEl0ZW1TdWNjZXNzIiwiY2FydEl0ZW1zIiwic2F2ZSIsImFjdGlvbkRlbGV0ZUNhcnRJdGVtIiwiX3gyIiwiX2FjdGlvbkRlbGV0ZUNhcnRJdGVtIiwiX2NhbGxlZTYiLCJfY2FsbGVlNiQiLCJfY29udGV4dDYiLCJzcGxpY2UiLCJ1cGRhdGVDYXJ0U2hpcG1lbnRBZGRyZXNzIiwiX3VwZGF0ZUNhcnRTaGlwbWVudEFkZHJlc3MiLCJfY2FsbGVlNyIsIl9zbGljZUNhcnRTaGlwbWVudCRhYyIsInVwZGF0ZVNoaXBtZW50QWRkcmVzc0Vycm9yIiwidXBkYXRlU2hpcG1lbnRBZGRyZXNzU3VjY2VzcyIsIl9nZXRTdG9yZSIsImFkZHJlc3MiLCJyZWNlaXZlckFkZHJlc3MiLCJfY2FsbGVlNyQiLCJfY29udGV4dDciLCJjYXJ0V2l0aFNoaXBtZW50R3JvdXBzIiwiY2FydEpzb24iLCJzaGlwbWVudEdyb3VwcyIsInNhdmVDYXJ0U2hpcG1lbnRBZGRyZXNzQW5kR29Ub05leHRUYWIiLCJfeDMiLCJfc2F2ZUNhcnRTaGlwbWVudEFkZHJlc3NBbmRHb1RvTmV4dFRhYiIsIl9jYWxsZWU4IiwicmVjZWl2ZXJOb3RlcyIsIl9zbGljZUNhcnRTaGlwbWVudCRhYzIiLCJzYXZlU2hpcG1lbnRBZGRyZXNzIiwic2F2ZVNoaXBtZW50QWRkcmVzc0Vycm9yIiwic2F2ZVNoaXBtZW50QWRkcmVzc1N1Y2Nlc3MiLCJfZ2V0U3RvcmUyIiwiX2NhbGxlZTgkIiwiX2NvbnRleHQ4IiwidGFiSW5kZXhUb1NldCIsImRpc2FibGVkIiwiYXR0YWNoQ2xpZW50VG9DYXJ0IiwiX3g0IiwiX2F0dGFjaENsaWVudFRvQ2FydCIsIl9jYWxsZWU5IiwiY2xpZW50SnNvbiIsImNyZWF0ZU5ld1N1Y2Nlc3MiLCJfZ2V0U3RvcmUzIiwiY2xpZW50RW50IiwiX2NhbGxlZTkkIiwiX2NvbnRleHQ5IiwiY3JlYXRlTmV3Q3VzdG9tZXJTdWNjZXNzIiwic2V0U2VsZWN0ZWRTaGlwbWVudFF1b3RlIiwiX3g1IiwiX3g2IiwiX3NldFNlbGVjdGVkU2hpcG1lbnRRdW90ZSIsIl9jYWxsZWUxMCIsImdyb3VwSW5kZXgiLCJxdW90ZSIsIl9nZXRTdG9yZTQiLCJfc2xpY2VDYXJ0U2hpcG1lbnQkYWMzIiwic2V0U2VsZWN0ZWQiLCJzZXRTZWxlY3RlZFNoaXBtZW50UXVvdGVFcnJvciIsInNldFNlbGVjdGVkU2hpcG1lbnRRdW90ZVN1Y2Nlc3MiLCJjYXJ0U2hpcG1lbnRRdW90ZSIsIl9jYWxsZWUxMCQiLCJfY29udGV4dDEwIiwic2VsZWN0ZWRRdW90ZSIsIl9zbGljZUZvcm1SZXR1cm5pbmdDdSIsInNldFJldHVybmluZ0N1c3RvbWVyRXJyb3IiLCJ0cnlSZXR1cm5pbmciLCJ0cnlSZXR1cm5pbmdDdXN0b21lciIsInRyeVJldHVybmluZ0N1c3RvbWVyRXJyb3IiLCJ0cnlSZXR1cm5pbmdDdXN0b21lclN1Y2Nlc3MiLCJ1cmxBcGkiLCJlbWFpbEFkZHJlc3MiLCJlbWFpbEFkZHJlc3NlcyIsInVzZXJfaWQiLCJfc2xpY2VOZXdDdXN0b21lckZvcm0iLCJjcmVhdGVOZXciLCJjcmVhdGVOZXdFcnJvciIsImNyZWF0ZU5ld0N1c3RvbWVyRXJyb3IiLCJhY3Rpb25DcmVhdGVOZXdDdXN0b21lciIsImN1c3RvbWVySnNvbiIsInVzZXIiLCJyZWdpc3RlcmVkVW5kZXJEb21haW5zIiwidXNlckpzb24iLCJjcmVkaXRDYXJkUGF5U3VjY2VzcyIsImNhbGxiYWNrQ3JlZGl0Q2FyZFBheW1lbnRTdWNjZXNzIiwiaW52b2ljZUpzb24iLCJjb252ZXJ0VG9Kc29uIiwiX3g3IiwiX2NvbnZlcnRUb0pzb24iLCJfY2FsbGVlMTEiLCJlbnQiLCJqc29uIiwiX2NhbGxlZTExJCIsIl9jb250ZXh0MTEiLCJ1cGRhdGVDYXJ0VmFsdWVzIiwiaW5pdENhcnRTaGlwbWVudFNsaWNlIiwiZ2V0Q2FydCIsImNhcnRTZXR0aW5nc0ludmFsaWQiLCJDYXJ0IiwiY29uc29sZSIsImdldE1lcmNoaUNhcnQiLCJfeDgiLCJfZ2V0TWVyY2hpQ2FydCIsIl9jYWxsZWUxMiIsIl9jYWxsZWUxMiQiLCJfY29udGV4dDEyIiwiaXNNZXJjaGlDYXJ0RmV0Y2hpbmciLCJfaXNNZXJjaGlDYXJ0RmV0Y2hpbmciLCJfY2FsbGVlMTMiLCJfY2FsbGVlMTMkIiwiX2NvbnRleHQxMyIsImZldGNoaW5nQ2FydCIsImdldE1lcmNoaUNhcnRWYWx1ZXMiLCJfZ2V0TWVyY2hpQ2FydFZhbHVlcyIsIl9jYWxsZWUxNCIsIl9yZWYiLCJjdXJyZW5jeSIsInN1YnRvdGFsQ29zdCIsInRheEFtb3VudCIsInRvdGFsQ29zdCIsImNhcnRJdGVtc0NvdW50IiwiX2NhbGxlZTE0JCIsIl9jb250ZXh0MTQiLCJkb0NhcnRDb21wbGV0ZSIsIl9kb0NhcnRDb21wbGV0ZSIsIl9jYWxsZWUxNSIsIl9jYWxsZWUxNSQiLCJfY29udGV4dDE1IiwiZG9DYXJkQ29tcGxldGUiLCJsb2NhdGlvbiIsInJlbG9hZCIsImluaXRNZXJjaGlDYXJ0Iiwid2luZG93Il0sInNvdXJjZXMiOlsiLi4vc3JjL3N0b3JlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGJhdGNoIH0gZnJvbSAncmVhY3QtcmVkdXgnO1xuaW1wb3J0IHsgY29uZmlndXJlU3RvcmUsIGdldERlZmF1bHRNaWRkbGV3YXJlIH0gZnJvbSAnQHJlZHV4anMvdG9vbGtpdCc7XG5pbXBvcnQge1xuICBzbGljZUNhcnQsXG4gIHRhYklkQ2hlY2tvdXQsXG4gIHRhYklkSXRlbSxcbiAgdGFiSWRJdGVtcyxcbiAgdGFiSWRQYXltZW50U3VjY2Vzcyxcbn0gZnJvbSAnLi9zbGljZXMvc2xpY2VDYXJ0JztcbmltcG9ydCB7IHNsaWNlQ2FydEFsZXJ0IH0gZnJvbSAnLi9zbGljZXMvc2xpY2VDYXJ0QWxlcnQnO1xuaW1wb3J0IHNsaWNlQ2FydEl0ZW0gZnJvbSAnLi9zbGljZXMvc2xpY2VDYXJ0SXRlbSc7XG5pbXBvcnQgeyBzbGljZUNhcnRQYXltZW50IH0gZnJvbSAnLi9zbGljZXMvc2xpY2VDYXJ0UGF5bWVudCc7XG5pbXBvcnQgeyBzbGljZUNhcnRTaGlwbWVudCB9IGZyb20gJy4vc2xpY2VzL3NsaWNlQ2FydFNoaXBtZW50JztcbmltcG9ydCBzbGljZU5ld0N1c3RvbWVyRm9ybSBmcm9tICcuL3NsaWNlcy9zbGljZU5ld0N1c3RvbWVyRm9ybSc7XG5pbXBvcnQgc2xpY2VGb3JtUmV0dXJuaW5nQ3VzdG9tZXIgZnJvbSAnLi9zbGljZXMvc2xpY2VGb3JtUmV0dXJuaW5nQ3VzdG9tZXInO1xuaW1wb3J0IHJlZHVjZXJzU3F1YXJlIGZyb20gJy4vc3F1YXJlL3NsaWNlcy9yZWR1Y2Vyc1NxdWFyZSc7XG5pbXBvcnQgc2xpY2VTdHJpcGVDYXJkRm9ybSBmcm9tICcuL3N0cmlwZS9zbGljZXMvc2xpY2VTdHJpcGVDYXJkRm9ybSc7XG5pbXBvcnQgeyBNZXJjaGkgfSBmcm9tICcuL01lcmNoaVNESy9tZXJjaGknO1xuaW1wb3J0IHsgY2FydEVtYmVkIH0gZnJvbSAnLi91dGlsaXRpZXMvaGVscGVycyc7XG5pbXBvcnQgeyBtYWtlQWRkcmVzcyB9IGZyb20gJy4vdXRpbGl0aWVzL2FkZHJlc3MnO1xuaW1wb3J0IHtcbiAgZ2V0Q2FydENvb2tpZSBhcyBnZXRNZXJjaGlDYXJ0Q29va2llLFxuICBzZXRDYXJ0Q29va2llLFxufSBmcm9tICcuL3V0aWxpdGllcy9jb29raWUnO1xuaW1wb3J0IHtcbiAgZ2V0Q2FydFNoaXBtZW50R3JvdXBzQW5kUXVvdGVzLFxuICBtYWtlQ2FydCxcbiAgbWFrZUNhcnRJdGVtLFxuICBtYWtlQ2FydFNoaXBtZW50UXVvdGUsXG4gIHN0cmlwZUlzVmFsaWRBbmRBY3RpdmUsXG59IGZyb20gJy4vdXRpbGl0aWVzL2NhcnQnO1xuaW1wb3J0IHtcbiAgbWFrZVVzZXIsXG4gIGNyZWF0ZU5ld0N1c3RvbWVyLFxuICB0cnlSZXR1cm5pbmdDdXN0b21lckVtYWlsLFxufSBmcm9tICcuL3V0aWxpdGllcy91c2VyJztcbmltcG9ydCB7IGFwcGVuZFN0eWxlU2hlZXRUZXh0IH0gZnJvbSAnLi91dGlsaXRpZXMvaGVscGVycyc7XG5cbmNvbnN0IG1lcmNoaSA9IG5ldyBNZXJjaGkoKTtcblxuY29uc3QgbWlkZGxld2FyZSA9IGdldERlZmF1bHRNaWRkbGV3YXJlKHsgc2VyaWFsaXphYmxlQ2hlY2s6IGZhbHNlIH0pO1xuXG5jb25zdCBtZXJjaGlDYXJ0UmVkdWNlciA9IHtcbiAgc3RhdGVDYXJ0QWxlcnQ6IHNsaWNlQ2FydEFsZXJ0LnJlZHVjZXIsXG4gIHN0YXRlQ2FydEl0ZW06IHNsaWNlQ2FydEl0ZW0ucmVkdWNlcixcbiAgc3RhdGVDYXJ0UGF5bWVudDogc2xpY2VDYXJ0UGF5bWVudC5yZWR1Y2VyLFxuICBzdGF0ZUNhcnRTaGlwbWVudDogc2xpY2VDYXJ0U2hpcG1lbnQucmVkdWNlcixcbiAgc3RhdGVDYXJ0OiBzbGljZUNhcnQucmVkdWNlcixcbiAgc3RhdGVOZXdDdXN0b21lckZvcm06IHNsaWNlTmV3Q3VzdG9tZXJGb3JtLnJlZHVjZXIsXG4gIHN0YXRlRm9ybVJldHVybmluZ0N1c3RvbWVyOiBzbGljZUZvcm1SZXR1cm5pbmdDdXN0b21lci5yZWR1Y2VyLFxuXG4gIC8vIFNxdWFyZSBzbGljZXNcbiAgLi4ucmVkdWNlcnNTcXVhcmUsXG5cbiAgLy8gU3RyaXBlIHNsaWNlc1xuICAuLi5zbGljZVN0cmlwZUNhcmRGb3JtLFxufTtcblxuZXhwb3J0IGNvbnN0IHN0b3JlID0gY29uZmlndXJlU3RvcmUoe1xuICBtaWRkbGV3YXJlOiBbLi4ubWlkZGxld2FyZV0sXG4gIHJlZHVjZXI6IG1lcmNoaUNhcnRSZWR1Y2VyLFxufSk7XG5cbmZ1bmN0aW9uIGdldFN0b3JlKCkge1xuICByZXR1cm4gc3RvcmUuZ2V0U3RhdGUoKTtcbn1cblxuY29uc3Qge1xuICBkZWxldGVDYXJ0SXRlbSxcbiAgZGVsZXRlQ2FydEl0ZW1FcnJvcixcbiAgZGVsZXRlQ2FydEl0ZW1TdWNjZXNzLFxuICBmZXRjaENhcnQsXG4gIGZldGNoQ2FydEVycm9yLFxuICBmZXRjaENhcnRTdWNjZXNzLFxuICBmZXRjaFRoZW1lLFxuICBmZXRjaFRoZW1lRXJyb3IsXG4gIGZldGNoVGhlbWVTdWNjZXNzLFxuICBzZXRDYXJ0LFxuICBzZXRDYXJ0Q2xpZW50LFxuICBzZXREb21haW5JZCxcbiAgc2V0Q2FydFNoaXBtZW50R3JvdXBzLFxufSA9IHNsaWNlQ2FydC5hY3Rpb25zO1xuXG5hc3luYyBmdW5jdGlvbiBnZXRDYXJ0VG9rZW4oKSB7XG4gIGNvbnN0IHsgZG9tYWluSWQgfSA9IGdldFN0b3JlKCkuc3RhdGVDYXJ0O1xuICBjb25zdCBjYXJ0SWRBbmRUb2tlbiA9IGRvbWFpbklkID8gYXdhaXQgZ2V0TWVyY2hpQ2FydENvb2tpZShOdW1iZXIoZG9tYWluSWQpKSA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIGNhcnRJZEFuZFRva2VuICYmIGNhcnRJZEFuZFRva2VuWzFdID8gY2FydElkQW5kVG9rZW5bMV0gOiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGRpc3BhdGNoKG1ldGhvZDogYW55KSB7XG4gIHN0b3JlLmRpc3BhdGNoKG1ldGhvZCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBheHRpb25TZXRDYXJ0Q2xpZW50KGNsaWVudDogYW55KSB7XG4gIGRpc3BhdGNoKHNldENhcnRDbGllbnQoY2xpZW50KSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRDYXJ0SXRlbShjYXJ0SXRlbTogYW55LCBpbmRleDogbnVtYmVyKSB7XG4gIGJhdGNoKCgpID0+IHtcbiAgICBpZiAoY2FydEl0ZW0gJiYgY2FydEl0ZW0uaWQpIHtcbiAgICAgIHNldEFjdGl2ZVRhYih0YWJJZEl0ZW0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZXRBY3RpdmVUYWIodGFiSWRJdGVtcyk7XG4gICAgfVxuICAgIGRpc3BhdGNoKHNsaWNlQ2FydEl0ZW0uYWN0aW9ucy5zZXRDYXJ0SXRlbSh7IGNhcnRJdGVtLCBpbmRleCB9KSk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0QWN0aXZlVGFiKHRhYklkOiBudW1iZXIpIHtcbiAgZGlzcGF0Y2goc2xpY2VDYXJ0LmFjdGlvbnMuc2V0QWN0aXZlVGFiKHRhYklkKSk7XG59XG5cbmludGVyZmFjZSBzZXRBY3RpdmVUYWJBbmRFZGl0RGlzYWJsZWRQcm9wcyB7XG4gIHRhYklkOiBudW1iZXI7XG4gIHRhYkluZGV4VG9TZXQ6IG51bWJlcjtcbiAgZGlzYWJsZWQ6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRBY3RpdmVUYWJBbmRFZGl0RGlzYWJsZWQoc2V0dGluZ3M6IHNldEFjdGl2ZVRhYkFuZEVkaXREaXNhYmxlZFByb3BzKSB7XG4gIGRpc3BhdGNoKHNsaWNlQ2FydC5hY3Rpb25zLnNldEFjdGl2ZVRhYkFuZEVkaXREaXNhYmxlZChzZXR0aW5ncykpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xvc2VBbGVydCgpIHtcbiAgZGlzcGF0Y2goc2xpY2VDYXJ0QWxlcnQuYWN0aW9ucy5jbG9zZUFsZXJ0KCkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xvc2VDbGVhckNhcnQoKSB7XG4gIGRpc3BhdGNoKHNsaWNlQ2FydC5hY3Rpb25zLnNldEFjdGl2ZVRhYih0YWJJZEl0ZW1zKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhbGVydEVycm9yKG1lc3NhZ2U6IHN0cmluZykge1xuICBkaXNwYXRjaChzbGljZUNhcnRBbGVydC5hY3Rpb25zLnNob3dBbGVydERhbmdlcihcbiAgICB7IG1lc3NhZ2UsIHRpdGxlOiAnRXJyb3IhJyB9KSk7XG59XG5cbmZ1bmN0aW9uIGFsZXJ0U3VjY2VzcyhtZXNzYWdlOiBzdHJpbmcpIHtcbiAgZGlzcGF0Y2goc2xpY2VDYXJ0QWxlcnQuYWN0aW9ucy5zaG93QWxlcnRTdWNjZXNzKFxuICAgIHsgbWVzc2FnZSwgdGl0bGU6ICdTdWNjZXNzIScgfSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYWN0aW9uRmV0Y2hUaGVtZShpZDogbnVtYmVyKSB7XG4gIGRpc3BhdGNoKGZldGNoVGhlbWUoKSlcbiAgbWVyY2hpLkRvbWFpbi5nZXQoaWQsIHtlbWJlZDoge2FjdGl2ZVRoZW1lOiB7bWFpbkNzczoge319fX0pXG4gICAgLnRoZW4oKGRvbWFpbjogYW55KSA9PiB7XG4gICAgICByZXR1cm4gZG9tYWluLmFjdGl2ZVRoZW1lO1xuICAgIH0pXG4gICAgLnRoZW4oKHRoZW1lOiBhbnkpID0+IHtcbiAgICAgIGFwcGVuZFN0eWxlU2hlZXRUZXh0KHRoZW1lLm1haW5Dc3MsICgpID0+IGRpc3BhdGNoKGZldGNoVGhlbWVTdWNjZXNzKCkpKTtcbiAgICB9KVxuICAgIC5jYXRjaCgoZTogYW55KSA9PiB7XG4gICAgICBhbGVydEVycm9yKGUuZXJyb3JNZXNzYWdlKTtcbiAgICAgIGRpc3BhdGNoKGZldGNoVGhlbWVFcnJvcigpKTtcbiAgICB9KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gY2FydEFuZENvb2tpZSgpIHtcbiAgY29uc3QgeyBkb21haW5JZCB9ID0gZ2V0U3RvcmUoKS5zdGF0ZUNhcnQ7XG4gIGNvbnN0IGNhcnQgPSBtYWtlQ2FydCh7ZG9tYWluOiB7aWQ6IGRvbWFpbklkfX0sIHRydWUpO1xuICByZXR1cm4gY2FydC5jcmVhdGUoe2VtYmVkOiBjYXJ0RW1iZWR9KVxuICAgIC50aGVuKChjOiBhbnkpID0+IHtcbiAgICAgIGlmIChkb21haW5JZCkge1xuICAgICAgICBzZXRDYXJ0Q29va2llKE51bWJlcihkb21haW5JZCksIGMudG9Kc29uKCksIHVuZGVmaW5lZCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gYy50b0pzb24oKTtcbiAgICB9KVxuICAgIC50aGVuKChjSnNvbjogYW55KSA9PiB7XG4gICAgICBkaXNwYXRjaChmZXRjaENhcnRTdWNjZXNzKGNKc29uKSk7XG4gICAgfSlcbiAgICAuY2F0Y2goKGU6IGFueSkgPT4ge1xuICAgICAgYmF0Y2goKCkgPT4ge1xuICAgICAgICBhbGVydEVycm9yKGUuZXJyb3JNZXNzYWdlKTtcbiAgICAgICAgZGlzcGF0Y2goZmV0Y2hDYXJ0RXJyb3IoKSk7XG4gICAgICB9KTtcbiAgICB9KTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZUFuZFNldE5ld0NhcnRDb29raWUoKSB7XG4gIGRpc3BhdGNoKGZldGNoQ2FydCgpKTtcbiAgYXdhaXQgY2FydEFuZENvb2tpZSgpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZG9DbGVhckNhcnQoKSB7XG4gIGRpc3BhdGNoKHNldENhcnQoe30pKTtcbiAgY2xvc2VDbGVhckNhcnQoKTtcbiAgYXdhaXQgY3JlYXRlQW5kU2V0TmV3Q2FydENvb2tpZSgpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcGF0Y2hDYXJ0SXRlbShjYXJ0SXRlbTogYW55KSB7XG4gIGNvbnN0IGRhdGEgPSBnZXRTdG9yZSgpO1xuICBjb25zdCB7XG4gICAgcGF0Y2hDYXJ0SXRlbTogZG9QYXRjaCxcbiAgICBwYXRjaENhcnRJdGVtRXJyb3I6IGRvUGF0Y2hFcnJvcixcbiAgICBwYXRjaENhcnRJdGVtU3VjY2VzczogZG9QYXRjaFN1Y2Nlc3MsXG4gIH0gPSBzbGljZUNhcnRJdGVtLmFjdGlvbnM7XG4gIGNvbnN0IGNhcnRUb2tlbiA9IGF3YWl0IGdldENhcnRUb2tlbigpO1xuICBjb25zdCB7XG4gICAgc3RhdGVDYXJ0OiB7IGNhcnQgfSxcbiAgICBzdGF0ZUNhcnRJdGVtOiB7IGNhcnRJdGVtOiBzdGF0ZUNhcnRJdGVtLCBpbmRleCB9XG4gIH0gPSBkYXRhO1xuICBjb25zdCBjYXJ0RW50ID0gbWFrZUNhcnQoY2FydCwgZmFsc2UsIGNhcnRUb2tlbik7XG4gIGNvbnN0IGNhcnRJdGVtRW50ID0gbWFrZUNhcnRJdGVtKGNhcnRJdGVtLCB0cnVlKTtcbiAgY2FydEl0ZW1FbnQuaWQgPSAoc3RhdGVDYXJ0SXRlbSBhcyBhbnkpLmlkO1xuICAoY2FydEVudCBhcyBhbnkpLmNhcnRJdGVtc1tpbmRleF0gPSBjYXJ0SXRlbUVudDtcbiAgZGlzcGF0Y2goZG9QYXRjaCgpKTtcbiAgY2FydEVudC5zYXZlKHtlbWJlZDogY2FydEVtYmVkfSkuXG4gICAgdGhlbihcbiAgICAgIChjOiBhbnkpID0+IHtcbiAgICAgICAgYmF0Y2goKCkgPT4ge1xuICAgICAgICAgIGFsZXJ0U3VjY2VzcygnSXRlbSB1cGRhdGVkLicpO1xuICAgICAgICAgIGRpc3BhdGNoKHNldENhcnQoYy50b0pzb24oKSkpO1xuICAgICAgICAgIGRpc3BhdGNoKGRvUGF0Y2hTdWNjZXNzKCkpO1xuICAgICAgICAgIHNldEFjdGl2ZVRhYih0YWJJZEl0ZW1zKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgKS5cbiAgICB0aGVuKCgpID0+IHtcbiAgICAgIHNldENhcnRJdGVtKHt9LCAwKTtcbiAgICB9KS5cbiAgICBjYXRjaChcbiAgICAgIChlOiBhbnkpID0+IHtcbiAgICAgICAgYmF0Y2goKCkgPT4ge1xuICAgICAgICAgIGFsZXJ0RXJyb3IoZS5lcnJvck1lc3NhZ2UpO1xuICAgICAgICAgIGRpc3BhdGNoKGRvUGF0Y2hFcnJvcigpKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFjdGlvbkRlbGV0ZUNhcnRJdGVtKGluZGV4OiBudW1iZXIpIHtcbiAgY29uc3QgZGF0YSA9IGdldFN0b3JlKCk7XG4gIGNvbnN0IGNhcnRUb2tlbiA9IGF3YWl0IGdldENhcnRUb2tlbigpO1xuICBjb25zdCB7IHN0YXRlQ2FydDogeyBjYXJ0IH0gfSA9IGRhdGE7XG4gIGNvbnN0IGNhcnRFbnQgPSBtYWtlQ2FydChjYXJ0LCBmYWxzZSwgY2FydFRva2VuKTtcbiAgY29uc3QgY2FydEl0ZW1zID0gKGNhcnRFbnQgYXMgYW55KS5jYXJ0SXRlbXM7XG4gIGNhcnRJdGVtcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAoY2FydEVudCBhcyBhbnkpLmNhcnRJdGVtcyA9IGNhcnRJdGVtcztcbiAgZGlzcGF0Y2goZGVsZXRlQ2FydEl0ZW0oaW5kZXgpKTtcbiAgY2FydEVudC5zYXZlKHtlbWJlZDogY2FydEVtYmVkfSkuXG4gICAgdGhlbihcbiAgICAgIChjOiBhbnkpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goZGVsZXRlQ2FydEl0ZW1TdWNjZXNzKGMudG9Kc29uKCkpKTtcbiAgICAgIH1cbiAgICApLlxuICAgIGNhdGNoKFxuICAgICAgKGU6IGFueSkgPT4ge1xuICAgICAgICBiYXRjaCgoKSA9PiB7XG4gICAgICAgICAgYWxlcnRFcnJvcihlLmVycm9yTWVzc2FnZSk7XG4gICAgICAgICAgZGlzcGF0Y2goZGVsZXRlQ2FydEl0ZW1FcnJvcigpKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHVwZGF0ZUNhcnRTaGlwbWVudEFkZHJlc3MoKSB7XG4gIGNvbnN0IHtcbiAgICB1cGRhdGVTaGlwbWVudEFkZHJlc3NFcnJvcixcbiAgICB1cGRhdGVTaGlwbWVudEFkZHJlc3NTdWNjZXNzLFxuICB9ID0gc2xpY2VDYXJ0U2hpcG1lbnQuYWN0aW9ucztcbiAgY29uc3QgY2FydFRva2VuID0gYXdhaXQgZ2V0Q2FydFRva2VuKCk7XG4gIGNvbnN0IHtcbiAgICBzdGF0ZUNhcnQ6IHsgY2FydCB9LFxuICAgIHN0YXRlQ2FydFNoaXBtZW50OiB7IHJlY2VpdmVyQWRkcmVzczogYWRkcmVzcyB9LFxuICB9ID0gZ2V0U3RvcmUoKTtcbiAgY29uc3QgcmVjZWl2ZXJBZGRyZXNzID0gbWFrZUFkZHJlc3MoYWRkcmVzcywgdHJ1ZSk7XG4gIGNvbnN0IGNhcnRFbnQgPSBtYWtlQ2FydChjYXJ0LCBmYWxzZSwgY2FydFRva2VuKTtcbiAgY2FydEVudC5yZWNlaXZlckFkZHJlc3MgPSByZWNlaXZlckFkZHJlc3M7XG4gIGNhcnRFbnQuc2F2ZSh7ZW1iZWQ6IGNhcnRFbWJlZH0pLlxuICAgIHRoZW4oKGM6IGFueSkgPT4ge1xuICAgICAgZGlzcGF0Y2goc2V0Q2FydChjLnRvSnNvbigpKSk7XG4gICAgICBnZXRDYXJ0U2hpcG1lbnRHcm91cHNBbmRRdW90ZXMoYy50b0pzb24oKSkuXG4gICAgICAgIHRoZW4oKGNhcnRXaXRoU2hpcG1lbnRHcm91cHM6IGFueSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGNhcnRKc29uID0gY2FydFdpdGhTaGlwbWVudEdyb3VwcztcbiAgICAgICAgICBiYXRjaCgoKSA9PiB7XG4gICAgICAgICAgICBkaXNwYXRjaChzZXRDYXJ0U2hpcG1lbnRHcm91cHMoY2FydEpzb24uc2hpcG1lbnRHcm91cHMpKTtcbiAgICAgICAgICAgIGRpc3BhdGNoKHVwZGF0ZVNoaXBtZW50QWRkcmVzc1N1Y2Nlc3MoY2FydEpzb24uc2hpcG1lbnRHcm91cHMpKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfSkuXG4gICAgY2F0Y2goKGU6IGFueSkgPT4ge1xuICAgICAgYmF0Y2goKCkgPT4ge1xuICAgICAgICBhbGVydEVycm9yKGUuZXJyb3JNZXNzYWdlKTtcbiAgICAgICAgZGlzcGF0Y2godXBkYXRlU2hpcG1lbnRBZGRyZXNzRXJyb3IoKSk7XG4gICAgICB9KTtcbiAgICB9KTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNhdmVDYXJ0U2hpcG1lbnRBZGRyZXNzQW5kR29Ub05leHRUYWIodmFsdWVzOiBhbnkpIHtcbiAgY29uc3QgeyByZWNlaXZlckFkZHJlc3M6IGFkZHJlc3MsIHJlY2VpdmVyTm90ZXMgfSA9IHZhbHVlcztcbiAgY29uc3Qge1xuICAgIHNhdmVTaGlwbWVudEFkZHJlc3MsXG4gICAgc2F2ZVNoaXBtZW50QWRkcmVzc0Vycm9yLFxuICAgIHNhdmVTaGlwbWVudEFkZHJlc3NTdWNjZXNzLFxuICB9ID0gc2xpY2VDYXJ0U2hpcG1lbnQuYWN0aW9ucztcbiAgY29uc3QgY2FydFRva2VuID0gYXdhaXQgZ2V0Q2FydFRva2VuKCk7XG4gIGNvbnN0IHsgc3RhdGVDYXJ0OiB7IGNhcnQgfSB9ID0gZ2V0U3RvcmUoKTtcbiAgZGlzcGF0Y2goc2F2ZVNoaXBtZW50QWRkcmVzcygpKTtcbiAgY29uc3QgcmVjZWl2ZXJBZGRyZXNzID0gbWFrZUFkZHJlc3MoYWRkcmVzcywgdHJ1ZSk7XG4gIGNvbnN0IGNhcnRFbnQgPSBtYWtlQ2FydChjYXJ0LCBmYWxzZSwgY2FydFRva2VuKTtcbiAgY2FydEVudC5yZWNlaXZlckFkZHJlc3MgPSByZWNlaXZlckFkZHJlc3M7XG4gIGNhcnRFbnQucmVjZWl2ZXJOb3RlcyA9IHJlY2VpdmVyTm90ZXM7XG4gIGNhcnRFbnQuc2F2ZSh7ZW1iZWQ6IGNhcnRFbWJlZH0pLlxuICAgIHRoZW4oKGM6IGFueSkgPT4ge1xuICAgICAgYmF0Y2goKCkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzZXRDYXJ0KGMudG9Kc29uKCkpKTtcbiAgICAgICAgZGlzcGF0Y2goc2F2ZVNoaXBtZW50QWRkcmVzc1N1Y2Nlc3MoKSk7XG4gICAgICAgIHNldEFjdGl2ZVRhYkFuZEVkaXREaXNhYmxlZChcbiAgICAgICAgICB7dGFiSWQ6IHRhYklkQ2hlY2tvdXQsIHRhYkluZGV4VG9TZXQ6IDIsIGRpc2FibGVkOiBmYWxzZX0pO1xuICAgICAgfSk7XG4gICAgfSkuXG4gICAgY2F0Y2goKGU6IGFueSkgPT4ge1xuICAgICAgYmF0Y2goKCkgPT4ge1xuICAgICAgICBhbGVydEVycm9yKGUuZXJyb3JNZXNzYWdlKTtcbiAgICAgICAgZGlzcGF0Y2goc2F2ZVNoaXBtZW50QWRkcmVzc0Vycm9yKCkpO1xuICAgICAgfSk7XG4gICAgfSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGF0dGFjaENsaWVudFRvQ2FydChjbGllbnRKc29uOiBhbnkpIHtcbiAgY29uc3Qge1xuICAgIGNyZWF0ZU5ld0N1c3RvbWVyU3VjY2VzczogY3JlYXRlTmV3U3VjY2VzcyxcbiAgfSA9IHNsaWNlTmV3Q3VzdG9tZXJGb3JtLmFjdGlvbnM7XG4gIGNvbnN0IGNhcnRUb2tlbiA9IGF3YWl0IGdldENhcnRUb2tlbigpO1xuICBjb25zdCB7IHN0YXRlQ2FydDogeyBjYXJ0IH0gfSA9IGdldFN0b3JlKCk7XG4gIGNvbnN0IGNsaWVudEVudCA9IG1ha2VVc2VyKHtpZDogY2xpZW50SnNvbi5pZH0pO1xuICBjb25zdCBjYXJ0RW50ID0gbWFrZUNhcnQoY2FydCwgZmFsc2UsIGNhcnRUb2tlbik7XG4gIGNhcnRFbnQuY2xpZW50ID0gY2xpZW50RW50O1xuICByZXR1cm4gY2FydEVudC5zYXZlKHtlbWJlZDogY2FydEVtYmVkfSkuXG4gICAgdGhlbigoYzogYW55KSA9PiB7XG4gICAgICBkaXNwYXRjaChzZXRDYXJ0KGMudG9Kc29uKCkpKTtcbiAgICAgIGRpc3BhdGNoKGNyZWF0ZU5ld1N1Y2Nlc3MoKSk7XG4gICAgfSk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzZXRTZWxlY3RlZFNoaXBtZW50UXVvdGUoZ3JvdXBJbmRleDogbnVtYmVyLCBxdW90ZTogYW55KSB7XG4gIGNvbnN0IGNhcnRUb2tlbiA9IGF3YWl0IGdldENhcnRUb2tlbigpO1xuICBjb25zdCB7IHN0YXRlQ2FydDogeyBjYXJ0IH0gfSA9IGdldFN0b3JlKCk7XG4gIGNvbnN0IHtcbiAgICBzZXRTZWxlY3RlZFNoaXBtZW50UXVvdGU6IHNldFNlbGVjdGVkLFxuICAgIHNldFNlbGVjdGVkU2hpcG1lbnRRdW90ZUVycm9yLFxuICAgIHNldFNlbGVjdGVkU2hpcG1lbnRRdW90ZVN1Y2Nlc3MsXG4gIH0gPSBzbGljZUNhcnRTaGlwbWVudC5hY3Rpb25zO1xuICBjb25zdCBjYXJ0RW50ID0gbWFrZUNhcnQoY2FydCwgZmFsc2UsIGNhcnRUb2tlbik7XG4gIGNvbnN0IGNhcnRTaGlwbWVudFF1b3RlID0gbWFrZUNhcnRTaGlwbWVudFF1b3RlKHF1b3RlKTtcbiAgKGNhcnRFbnQgYXMgYW55KS5zaGlwbWVudEdyb3Vwc1tncm91cEluZGV4XS5zZWxlY3RlZFF1b3RlID0gY2FydFNoaXBtZW50UXVvdGU7XG4gIGRpc3BhdGNoKHNldFNlbGVjdGVkKHsgZ3JvdXBJbmRleCwgcXVvdGUgfSkpO1xuICBjYXJ0RW50LnNhdmUoe2VtYmVkOiBjYXJ0RW1iZWR9KS5cbiAgICB0aGVuKChjOiBhbnkpID0+IHtcbiAgICAgIGRpc3BhdGNoKHNldENhcnQoYy50b0pzb24oKSkpO1xuICAgICAgZGlzcGF0Y2goc2V0U2VsZWN0ZWRTaGlwbWVudFF1b3RlU3VjY2VzcygpKTtcbiAgICB9KS5cbiAgICBjYXRjaCgoZTogYW55KSA9PiB7XG4gICAgICBiYXRjaCgoKSA9PiB7XG4gICAgICAgIGFsZXJ0RXJyb3IoZS5lcnJvck1lc3NhZ2UpO1xuICAgICAgICBkaXNwYXRjaChzZXRTZWxlY3RlZFNoaXBtZW50UXVvdGVFcnJvcigpKTtcbiAgICAgIH0pO1xuICAgIH0pO1xufVxuXG5jb25zdCB7XG4gIHNldFJldHVybmluZ0N1c3RvbWVyRXJyb3IsXG4gIHRyeVJldHVybmluZ0N1c3RvbWVyOiB0cnlSZXR1cm5pbmcsXG4gIHRyeVJldHVybmluZ0N1c3RvbWVyRXJyb3IsXG4gIHRyeVJldHVybmluZ0N1c3RvbWVyU3VjY2Vzcyxcbn0gPSBzbGljZUZvcm1SZXR1cm5pbmdDdXN0b21lci5hY3Rpb25zO1xuXG5leHBvcnQgZnVuY3Rpb24gdHJ5UmV0dXJuaW5nQ3VzdG9tZXIodXJsQXBpOiBzdHJpbmcsIGRhdGE6IGFueSkge1xuICBjb25zdCB7IGVtYWlsQWRkcmVzcyB9ID0gZGF0YTtcbiAgZGlzcGF0Y2godHJ5UmV0dXJuaW5nKCkpO1xuICB0cnlSZXR1cm5pbmdDdXN0b21lckVtYWlsKHVybEFwaSwgZW1haWxBZGRyZXNzKVxuICAudGhlbigocjogYW55KSA9PiBhdHRhY2hDbGllbnRUb0NhcnQoe1xuICAgICAgZW1haWxBZGRyZXNzZXM6IFt7ZW1haWxBZGRyZXNzfV0sXG4gICAgICBpZDogci51c2VyX2lkLFxuICAgIH0pKVxuICAudGhlbigoKSA9PiBkaXNwYXRjaCh0cnlSZXR1cm5pbmdDdXN0b21lclN1Y2Nlc3MoKSkpXG4gIC5jYXRjaCgoZTogYW55KSA9PlxuICAgIGJhdGNoKCgpID0+IHtcbiAgICAgIGFsZXJ0RXJyb3IoZS5lcnJvck1lc3NhZ2UpO1xuICAgICAgZGlzcGF0Y2godHJ5UmV0dXJuaW5nQ3VzdG9tZXJFcnJvcigpKTtcbiAgICAgIGRpc3BhdGNoKHNldFJldHVybmluZ0N1c3RvbWVyRXJyb3IodHJ1ZSkpO1xuICAgIH0pKTtcbn1cblxuY29uc3Qge1xuICBjcmVhdGVOZXdDdXN0b21lcjogY3JlYXRlTmV3LFxuICBjcmVhdGVOZXdDdXN0b21lckVycm9yOiBjcmVhdGVOZXdFcnJvcixcbiAgY3JlYXRlTmV3Q3VzdG9tZXJTdWNjZXNzOiBjcmVhdGVOZXdTdWNjZXNzLFxufSA9IHNsaWNlTmV3Q3VzdG9tZXJGb3JtLmFjdGlvbnM7XG5cbmV4cG9ydCBmdW5jdGlvbiBhY3Rpb25DcmVhdGVOZXdDdXN0b21lcih1cmxBcGk6IHN0cmluZywgY3VzdG9tZXJKc29uOiBhbnkpIHtcbiAgY29uc3QgeyBjYXJ0IH0gPSBnZXRTdG9yZSgpLnN0YXRlQ2FydDtcbiAgY29uc3QgZG9tYWluSWQgPSBjYXJ0ICYmIChjYXJ0IGFzIGFueSkuZG9tYWluICYmIChjYXJ0IGFzIGFueSkuZG9tYWluLmlkO1xuICBkaXNwYXRjaChjcmVhdGVOZXcoKSk7XG4gIGNvbnN0IHVzZXIgPSBtYWtlVXNlcihcbiAgICB7Li4uY3VzdG9tZXJKc29uLFxuICAgICAgcmVnaXN0ZXJlZFVuZGVyRG9tYWluczogW3tpZDogZG9tYWluSWR9XX0sXG4gICAgdHJ1ZVxuICApO1xuICBjb25zdCBlcnJvciA9IChlOiBhbnkpID0+IGJhdGNoKFxuICAgICgpID0+IHtcbiAgICAgIGFsZXJ0RXJyb3IoZS5lcnJvck1lc3NhZ2UpO1xuICAgICAgZGlzcGF0Y2goY3JlYXRlTmV3RXJyb3IoZS5lcnJvck1lc3NhZ2UpKTtcbiAgICB9KTtcbiAgY3JlYXRlTmV3Q3VzdG9tZXIodXJsQXBpLCB7Li4uY3VzdG9tZXJKc29uLCByZWdpc3RlcmVkVW5kZXJEb21haW5zOiBbe2lkOiBkb21haW5JZH1dfSlcbiAgICAudGhlbigocjogYW55KSA9PiB7XG4gICAgICBjb25zdCB7IHVzZXI6IHVzZXJKc29uIH0gPSByO1xuICAgICAgYXR0YWNoQ2xpZW50VG9DYXJ0KHVzZXJKc29uKTtcbiAgICB9KVxuICAgIC50aGVuKCgpID0+IGRpc3BhdGNoKGNyZWF0ZU5ld1N1Y2Nlc3MoKSkpXG4gICAgLmNhdGNoKGVycm9yKTtcbn1cblxuY29uc3QgeyBjcmVkaXRDYXJkUGF5U3VjY2VzcyB9ID0gc2xpY2VDYXJ0UGF5bWVudC5hY3Rpb25zOyBcblxuZXhwb3J0IGZ1bmN0aW9uIGNhbGxiYWNrQ3JlZGl0Q2FyZFBheW1lbnRTdWNjZXNzKGludm9pY2VKc29uOiBhbnkpIHtcbiAgYmF0Y2goKCkgPT4ge1xuICAgIGRpc3BhdGNoKGNyZWRpdENhcmRQYXlTdWNjZXNzKGludm9pY2VKc29uKSk7XG4gICAgc2V0QWN0aXZlVGFiKHRhYklkUGF5bWVudFN1Y2Nlc3MpO1xuICB9KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gY29udmVydFRvSnNvbihlbnQ6IGFueSkge1xuICBjb25zdCBqc29uID0gYXdhaXQgZW50LnRvSnNvbigpO1xuICByZXR1cm4ganNvbjtcbn1cblxuZnVuY3Rpb24gdXBkYXRlQ2FydFZhbHVlcyhjYXJ0SnNvbjogYW55KSB7XG4gIGNvbnN0IHsgaW5pdENhcnRTaGlwbWVudFNsaWNlIH0gPSBzbGljZUNhcnRTaGlwbWVudC5hY3Rpb25zO1xuICBkaXNwYXRjaChzbGljZUNhcnQuYWN0aW9ucy5mZXRjaENhcnRTdWNjZXNzKGNhcnRKc29uKSk7XG4gIGRpc3BhdGNoKGluaXRDYXJ0U2hpcG1lbnRTbGljZShjYXJ0SnNvbikpO1xufVxuXG5mdW5jdGlvbiBnZXRDYXJ0KGNhcnRJZEFuZFRva2VuOiBBcnJheTxzdHJpbmc+KSB7XG4gIGNvbnN0IHtcbiAgICBjYXJ0U2V0dGluZ3NJbnZhbGlkLFxuICB9ID0gc2xpY2VDYXJ0LmFjdGlvbnM7XG4gIGNvbnN0IGlkID0gTnVtYmVyKGNhcnRJZEFuZFRva2VuWzBdKTtcbiAgaWYgKGNhcnRJZEFuZFRva2VuWzFdKSB7XG4gICAgbWVyY2hpLmNhcnRUb2tlbiA9IGNhcnRJZEFuZFRva2VuWzFdO1xuICB9XG4gIGRpc3BhdGNoKGZldGNoQ2FydCgpKTtcbiAgbWVyY2hpLkNhcnQuZ2V0KGlkLCB7ZW1iZWQ6IGNhcnRFbWJlZH0pXG4gICAgLnRoZW4oY29udmVydFRvSnNvbilcbiAgICAudGhlbigoY2FydDogYW55KSA9PiB7XG4gICAgICBpZiAoc3RyaXBlSXNWYWxpZEFuZEFjdGl2ZShjYXJ0KSkge1xuICAgICAgICB1cGRhdGVDYXJ0VmFsdWVzKGNhcnQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgIGBNRXJoY2kgY2FydCBlcnJvcjogU3RyaXBlIHBheW1lbnQgYCArXG4gICAgICAgICAgYG9wdGlvbnMgaGF2ZSBub3QgYmVlbiBjb3JyZWN0bHkgc2V0IHVwLiBgICtcbiAgICAgICAgICBgQ2hlY2sgdGhlIGNvbXBhbnkgcHJvZmlsZSBwYXltZW50IG9wdGlvbnMgdGFiIGAgK1xuICAgICAgICAgIGB0byBzZXQgYW5kIGVkaXQgc3RyaXBlIHBheW1lbnQgb3B0aW9ucy5gKTtcbiAgICAgICAgZGlzcGF0Y2goY2FydFNldHRpbmdzSW52YWxpZCgpKTtcbiAgICAgIH1cbiAgICB9KVxuICAgIC5jYXRjaCgoZTogYW55KSA9PiB7XG4gICAgICBjcmVhdGVBbmRTZXROZXdDYXJ0Q29va2llKCk7XG4gICAgfSk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRNZXJjaGlDYXJ0KGRvbWFpbklkOiBudW1iZXIpIHtcbiAgY29uc3QgY2FydElkQW5kVG9rZW4gPSBhd2FpdCBnZXRNZXJjaGlDYXJ0Q29va2llKGRvbWFpbklkKTtcbiAgZGlzcGF0Y2goc2V0RG9tYWluSWQoeyBjYXJ0SWRBbmRUb2tlbiwgZG9tYWluSWQgfSkpO1xuICBpZiAoY2FydElkQW5kVG9rZW4pIHtcbiAgICBnZXRDYXJ0KGNhcnRJZEFuZFRva2VuKTtcbiAgfSBlbHNlIHtcbiAgICBjcmVhdGVBbmRTZXROZXdDYXJ0Q29va2llKCk7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGlzTWVyY2hpQ2FydEZldGNoaW5nKCkge1xuICByZXR1cm4gZ2V0U3RvcmUoKS5zdGF0ZUNhcnQuZmV0Y2hpbmdDYXJ0O1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0TWVyY2hpQ2FydFZhbHVlcygpIHtcbiAgY29uc3QgeyBjYXJ0IH0gPSBnZXRTdG9yZSgpLnN0YXRlQ2FydDtcbiAgY29uc3QgeyBjYXJ0SXRlbXMsIGN1cnJlbmN5LCBzdWJ0b3RhbENvc3QsIHRheEFtb3VudCwgdG90YWxDb3N0IH0gPSAoY2FydCBhcyBhbnkpO1xuICBjb25zdCBjYXJ0SXRlbXNDb3VudCA9IGNhcnRJdGVtcyA/IGNhcnRJdGVtcy5sZW5ndGggOiAwO1xuICByZXR1cm4ge1xuICAgIGNhcnQsXG4gICAgY2FydEl0ZW1zQ291bnQsXG4gICAgY3VycmVuY3k6IGN1cnJlbmN5IHx8ICcnLFxuICAgIHN1YnRvdGFsQ29zdDogc3VidG90YWxDb3N0IHx8IDAsXG4gICAgdGF4QW1vdW50OiB0YXhBbW91bnQgfHwgMCxcbiAgICB0b3RhbENvc3Q6IHRvdGFsQ29zdCB8fCAwLFxuICB9O1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZG9DYXJ0Q29tcGxldGUoKSB7XG4gIGRpc3BhdGNoKHNsaWNlQ2FydFBheW1lbnQuYWN0aW9ucy5kb0NhcmRDb21wbGV0ZSgpKTtcbiAgYXdhaXQgY2FydEFuZENvb2tpZSgpLnRoZW4oKCkgPT4gbG9jYXRpb24ucmVsb2FkKCkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5pdE1lcmNoaUNhcnQoZG9tYWluSWQ6IG51bWJlcikge1xuICBnZXRNZXJjaGlDYXJ0KGRvbWFpbklkKTtcbiAgaWYgKCh3aW5kb3cgYXMgYW55KSAmJiAod2luZG93IGFzIGFueSkgIT09IHVuZGVmaW5lZCkge1xuICAgICh3aW5kb3cgYXMgYW55KS5nZXRDYXJ0ID0gKCkgPT4gZ2V0TWVyY2hpQ2FydChkb21haW5JZCk7XG4gICAgKHdpbmRvdyBhcyBhbnkpLmlzTWVyY2hpQ2FydEZldGNoaW5nID0gaXNNZXJjaGlDYXJ0RmV0Y2hpbmc7XG4gICAgKHdpbmRvdyBhcyBhbnkpLmdldE1lcmNoaUNhcnRWYWx1ZXMgPSBnZXRNZXJjaGlDYXJ0VmFsdWVzO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiIrQ0FDQSxxSkFBQUEsbUJBQUEsWUFBQUEsb0JBQUEsV0FBQUMsQ0FBQSxTQUFBQyxDQUFBLEVBQUFELENBQUEsT0FBQUUsQ0FBQSxHQUFBQyxNQUFBLENBQUFDLFNBQUEsRUFBQUMsQ0FBQSxHQUFBSCxDQUFBLENBQUFJLGNBQUEsRUFBQUMsQ0FBQSxHQUFBSixNQUFBLENBQUFLLGNBQUEsY0FBQVAsQ0FBQSxFQUFBRCxDQUFBLEVBQUFFLENBQUEsSUFBQUQsQ0FBQSxDQUFBRCxDQUFBLElBQUFFLENBQUEsQ0FBQU8sS0FBQSxLQUFBQyxDQUFBLHdCQUFBQyxNQUFBLEdBQUFBLE1BQUEsT0FBQUMsQ0FBQSxHQUFBRixDQUFBLENBQUFHLFFBQUEsa0JBQUFDLENBQUEsR0FBQUosQ0FBQSxDQUFBSyxhQUFBLHVCQUFBQyxDQUFBLEdBQUFOLENBQUEsQ0FBQU8sV0FBQSw4QkFBQUMsT0FBQWpCLENBQUEsRUFBQUQsQ0FBQSxFQUFBRSxDQUFBLFdBQUFDLE1BQUEsQ0FBQUssY0FBQSxDQUFBUCxDQUFBLEVBQUFELENBQUEsSUFBQVMsS0FBQSxFQUFBUCxDQUFBLEVBQUFpQixVQUFBLE1BQUFDLFlBQUEsTUFBQUMsUUFBQSxTQUFBcEIsQ0FBQSxDQUFBRCxDQUFBLFdBQUFrQixNQUFBLG1CQUFBakIsQ0FBQSxJQUFBaUIsTUFBQSxZQUFBQSxPQUFBakIsQ0FBQSxFQUFBRCxDQUFBLEVBQUFFLENBQUEsV0FBQUQsQ0FBQSxDQUFBRCxDQUFBLElBQUFFLENBQUEsZ0JBQUFvQixLQUFBckIsQ0FBQSxFQUFBRCxDQUFBLEVBQUFFLENBQUEsRUFBQUcsQ0FBQSxRQUFBSyxDQUFBLEdBQUFWLENBQUEsSUFBQUEsQ0FBQSxDQUFBSSxTQUFBLFlBQUFtQixTQUFBLEdBQUF2QixDQUFBLEdBQUF1QixTQUFBLEVBQUFYLENBQUEsR0FB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