@envive-ai/react-hooks 0.1.3 → 0.1.5
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.
- package/dist/adapters/amplitude/index.cjs +13 -13
- package/dist/adapters/amplitude/index.d.cts +5 -3
- package/dist/adapters/amplitude/index.d.ts +5 -3
- package/dist/adapters/amplitude/index.js +10 -10
- package/dist/api-B2euFL-5.cjs +269 -0
- package/dist/api-XRr_lAG6.js +190 -0
- package/dist/application/config/index.cjs +14 -5
- package/dist/application/config/index.d.cts +2 -1
- package/dist/application/config/index.d.ts +2 -1
- package/dist/application/config/index.js +14 -5
- package/dist/application/models/graphql/index.cjs +12 -12
- package/dist/application/models/graphql/index.d.cts +1 -1
- package/dist/application/models/graphql/index.d.ts +1 -1
- package/dist/application/models/graphql/index.js +10 -10
- package/dist/application/models/guards/api/index.cjs +2 -2
- package/dist/application/models/guards/api/index.d.cts +2 -2
- package/dist/application/models/guards/api/index.d.ts +2 -2
- package/dist/application/models/guards/api/index.js +2 -2
- package/dist/application/models/index.cjs +54 -54
- package/dist/application/models/index.d.cts +8 -9
- package/dist/application/models/index.d.ts +8 -9
- package/dist/application/models/index.js +10 -10
- package/dist/application/models/utilityTypes/index.cjs +1 -1
- package/dist/application/models/utilityTypes/index.d.cts +1 -1
- package/dist/application/models/utilityTypes/index.d.ts +1 -1
- package/dist/application/models/utilityTypes/index.js +1 -1
- package/dist/application/models/variantInfo/index.cjs +1 -1
- package/dist/application/models/variantInfo/index.d.cts +1 -1
- package/dist/application/models/variantInfo/index.d.ts +1 -1
- package/dist/application/models/variantInfo/index.js +1 -1
- package/dist/application/service/customerService/index.cjs +2 -2
- package/dist/application/service/customerService/index.d.cts +2 -2
- package/dist/application/service/customerService/index.d.ts +2 -2
- package/dist/application/service/customerService/index.js +2 -2
- package/dist/application/service/index.cjs +38 -757
- package/dist/application/service/index.d.cts +26 -20
- package/dist/application/service/index.d.ts +26 -20
- package/dist/application/service/index.js +12 -727
- package/dist/application/utils/index.cjs +37 -37
- package/dist/application/utils/index.d.cts +12 -12
- package/dist/application/utils/index.d.ts +14 -14
- package/dist/application/utils/index.js +10 -10
- package/dist/atomStore-B1cgmbP0.js +32 -0
- package/dist/atomStore-JwGb7pcy.cjs +58 -0
- package/dist/atomStore-ONYy0XuA.d.cts +24 -0
- package/dist/atomStore-kOKiEcNl.d.ts +24 -0
- package/dist/atoms/app/index.cjs +16 -16
- package/dist/atoms/app/index.d.cts +11 -11
- package/dist/atoms/app/index.d.ts +12 -12
- package/dist/atoms/app/index.js +10 -10
- package/dist/atoms/atomStore/index.cjs +1 -2
- package/dist/atoms/atomStore/index.d.cts +1 -22
- package/dist/atoms/atomStore/index.d.ts +1 -22
- package/dist/atoms/atomStore/index.js +1 -2
- package/dist/atoms/chat/index.cjs +40 -40
- package/dist/atoms/chat/index.d.cts +37 -37
- package/dist/atoms/chat/index.d.ts +38 -38
- package/dist/atoms/chat/index.js +10 -10
- package/dist/atoms/globalSearch/index.cjs +1 -1
- package/dist/atoms/globalSearch/index.d.cts +7 -6
- package/dist/atoms/globalSearch/index.d.ts +2 -1
- package/dist/atoms/globalSearch/index.js +1 -1
- package/dist/atoms/org/index.cjs +38 -40
- package/dist/atoms/org/index.d.cts +35 -53
- package/dist/atoms/org/index.d.ts +34 -52
- package/dist/atoms/org/index.js +11 -12
- package/dist/atoms/search/index.cjs +41 -43
- package/dist/atoms/search/index.d.cts +9 -10
- package/dist/atoms/search/index.d.ts +9 -10
- package/dist/atoms/search/index.js +10 -12
- package/dist/bandolier-Da4wt6sm.cjs +1230 -0
- package/dist/bandolier-DzEmYWcz.js +1230 -0
- package/dist/carpe-AXipz0Xl.cjs +608 -0
- package/dist/carpe-CaUKwcEa.js +606 -0
- package/dist/chat-CHmD79E1.js +26 -0
- package/dist/{chat-CCgyDehy.cjs → chat-_NzpO_Hn.cjs} +2 -1
- package/dist/{components-CScS7Ii-.cjs → components-D0XDRcaN.cjs} +2 -1
- package/dist/components-Dl-TMD9k.js +11 -0
- package/dist/config/locators/components/chat/index.cjs +1 -1
- package/dist/config/locators/components/chat/index.d.ts +1 -1
- package/dist/config/locators/components/chat/index.js +1 -1
- package/dist/config/locators/components/chat/variants/index.cjs +2 -1
- package/dist/config/locators/components/chat/variants/index.d.cts +2 -1
- package/dist/config/locators/components/chat/variants/index.d.ts +2 -1
- package/dist/config/locators/components/chat/variants/index.js +2 -1
- package/dist/config/locators/components/index.cjs +1 -1
- package/dist/config/locators/components/index.d.ts +1 -1
- package/dist/config/locators/components/index.js +1 -1
- package/dist/config/locators/components/search/index.cjs +2 -1
- package/dist/config/locators/components/search/index.d.cts +2 -1
- package/dist/config/locators/components/search/index.d.ts +2 -1
- package/dist/config/locators/components/search/index.js +2 -1
- package/dist/config/locators/index.cjs +4 -4
- package/dist/config/locators/index.d.cts +2 -1
- package/dist/config/locators/index.d.ts +4 -3
- package/dist/config/locators/index.js +4 -4
- package/dist/contexts/index.cjs +20 -23
- package/dist/contexts/index.d.cts +10 -59
- package/dist/contexts/index.d.ts +10 -59
- package/dist/contexts/index.js +11 -17
- package/dist/contexts-CtRlNXaS.js +7674 -0
- package/dist/contexts-CtgmnYNn.cjs +9088 -0
- package/dist/coterie--MGvWeVh.cjs +240 -0
- package/dist/coterie-oKHAT0lx.js +240 -0
- package/dist/customerService-BG1uNZZ1.cjs +36 -0
- package/dist/customerService-BHQRnLhC.js +23 -0
- package/dist/custservice-types-C8-9vKWb.cjs +35 -0
- package/dist/custservice-types-CamCiXjq.js +23 -0
- package/dist/default-B4fINY5_.cjs +4 -0
- package/dist/default-BrTQxA0c.js +4 -0
- package/dist/default-C3LrcbZB.cjs +199 -0
- package/dist/default-CXkYrLEr.js +176 -0
- package/dist/divIds-0Vj9g-fM.js +23 -0
- package/dist/{divIds-CFyAjjp3.cjs → divIds-CjceLRD9.cjs} +2 -1
- package/dist/dreamlandBaby-BEqt0eKF.js +347 -0
- package/dist/dreamlandBaby-DBDjEJCc.cjs +347 -0
- package/dist/{embedded-BlXJUbik.cjs → embedded-B5Wi9g0T.cjs} +2 -1
- package/dist/embedded-_cLpd6FK.js +23 -0
- package/dist/entrypoints-CNUvSgnk.js +7 -0
- package/dist/entrypoints-DM9Sm18O.cjs +19 -0
- package/dist/events/index.cjs +1 -1
- package/dist/events/index.d.cts +2 -1
- package/dist/events/index.d.ts +2 -1
- package/dist/events/index.js +1 -1
- package/dist/events-ClCDFK7t.js +78 -0
- package/dist/events-Da7gpmGv.cjs +90 -0
- package/dist/featureFlagService-5wdmW02z.d.ts +18 -0
- package/dist/featureFlagService-DaelrXEk.d.cts +18 -0
- package/dist/fiveCbd-CdqNt16h.cjs +614 -0
- package/dist/fiveCbd-D6B-sgnX.js +614 -0
- package/dist/forLoveAndLemons-C7GsJG7f.cjs +668 -0
- package/dist/forLoveAndLemons-gNDlMtPR.js +666 -0
- package/dist/{globalSearch-hxbXekus.cjs → globalSearch-BTeZxvk1.cjs} +2 -1
- package/dist/globalSearch-b0wC7ZEO.js +14 -0
- package/dist/greenpan-B5AaW4M_.js +398 -0
- package/dist/greenpan-DrORpYms.cjs +398 -0
- package/dist/grooveLife-BJqsfH2H.cjs +343 -0
- package/dist/grooveLife-xIUmDM8s.js +343 -0
- package/dist/homegrownCannabis-8TZ21u6L.cjs +411 -0
- package/dist/homegrownCannabis-BtMuEvbZ.js +411 -0
- package/dist/hooks/index.cjs +36 -38
- package/dist/hooks/index.d.cts +36 -82
- package/dist/hooks/index.d.ts +38 -84
- package/dist/hooks/index.js +11 -17
- package/dist/index-BTK5uzs6.d.cts +98 -0
- package/dist/index-BdNKc2ix.d.cts +2 -1
- package/dist/index-BrXuc_Ck.d.cts +2 -1
- package/dist/index-BzgkfbNO.d.cts +228 -0
- package/dist/index-CKKkTsms.d.ts +39 -0
- package/dist/index-CKUpnyJQ.d.ts +72 -0
- package/dist/index-CSIOQD-A.d.ts +25 -0
- package/dist/index-CbJZOEU4.d.ts +203 -0
- package/dist/index-ClJ0nMsR.d.cts +184 -0
- package/dist/index-Cr2y08f1.d.ts +9 -0
- package/dist/index-Cx9e-fRi.d.ts +184 -0
- package/dist/index-D2VaMPA3.d.ts +98 -0
- package/dist/index-D46Rd0io.d.cts +39 -0
- package/dist/index-DFL1dIT_.d.ts +7 -0
- package/dist/index-DXpgMVpp.d.ts +749 -0
- package/dist/index-Dxpscrvz.d.ts +228 -0
- package/dist/index-K2kNsOTw.d.cts +203 -0
- package/dist/index-MFbPQ8Ji.d.ts +95 -0
- package/dist/index-VHFMGkO-.d.cts +72 -0
- package/dist/index-VSFakgAI.d.cts +95 -0
- package/dist/index-aNW5V9fh.d.cts +749 -0
- package/dist/index-zZjcds15.d.cts +7 -0
- package/dist/interceptors/index.cjs +12 -13
- package/dist/interceptors/index.d.cts +10 -10
- package/dist/interceptors/index.d.ts +10 -10
- package/dist/interceptors/index.js +10 -11
- package/dist/jackArcher-WtkbLBZj.cjs +728 -0
- package/dist/jackArcher-sO9EbgrZ.js +728 -0
- package/dist/jordanCraig-471FcgqF.cjs +1787 -0
- package/dist/jordanCraig-DNOncplU.js +1787 -0
- package/dist/kindredBravely-BlLyHGMX.cjs +491 -0
- package/dist/kindredBravely-cqZ4OvXp.js +491 -0
- package/dist/kutFromTheKloth-3mOIryvt.cjs +370 -0
- package/dist/kutFromTheKloth-DtVNCMKa.js +370 -0
- package/dist/larryAndSerges-88Bvq-Us.cjs +262 -0
- package/dist/larryAndSerges-cvak6May.js +262 -0
- package/dist/leapsAndRebounds-Dmf8eUPq.js +361 -0
- package/dist/leapsAndRebounds-iWKc923H.cjs +361 -0
- package/dist/logger-Dln20ans.cjs +26 -0
- package/dist/logger-pdEEY8T2.js +20 -0
- package/dist/longevityrx-BTMI9vn-.js +321 -0
- package/dist/longevityrx-CobPyigd.cjs +321 -0
- package/dist/lookOptic-C4H_c0JZ.cjs +283 -0
- package/dist/lookOptic-Jwf7EAU8.js +283 -0
- package/dist/mantraBrand-CySGqbn6.cjs +751 -0
- package/dist/mantraBrand-DoaVj837.js +751 -0
- package/dist/medterra-BnZ5p27n.cjs +584 -0
- package/dist/medterra-DaICcPPp.js +584 -0
- package/dist/modells-CZ1L6dD_.js +485 -0
- package/dist/modells-DF0SndHr.cjs +485 -0
- package/dist/nodeSelector-DybpVr-i.d.ts +31 -0
- package/dist/nodeSelector-vKB44CDB.d.cts +2 -1
- package/dist/orgConfigResults--dAwtw3W.d.ts +881 -0
- package/dist/orgConfigResults-BL0XBA6x.d.cts +881 -0
- package/dist/pressedFloral-B3t2cYzs.cjs +662 -0
- package/dist/pressedFloral-Dsws2Kfb.js +662 -0
- package/dist/search-filter-types-9rTb3jMj.d.cts +102 -0
- package/dist/search-filter-types-C-zZSpGo.d.ts +102 -0
- package/dist/skinPerfection-CILQM2bR.cjs +335 -0
- package/dist/skinPerfection-DmQCntRf.js +335 -0
- package/dist/snapSupplements--X_v0KRM.js +286 -0
- package/dist/snapSupplements-Djuzl0Ed.cjs +286 -0
- package/dist/socialProofClasses-DdzG1tZy.js +10 -0
- package/dist/socialProofClasses-ky69yppk.cjs +40 -0
- package/dist/spanx-Bo81yXSF.cjs +664 -0
- package/dist/spanx-DauxB8KE.js +662 -0
- package/dist/spanxStaging-BucYQvR1.cjs +849 -0
- package/dist/spanxStaging-CfXUukdP.js +846 -0
- package/dist/{suggestionBarV2-types-DG3Ekk44.cjs → suggestionBarV2-types-B3lwrENK.cjs} +2 -1
- package/dist/suggestionBarV2-types-Penx3Y67.js +10 -0
- package/dist/supergoop-8qa_NV3F.cjs +338 -0
- package/dist/supergoop-DOaui-A6.js +336 -0
- package/dist/test-types-CXVJxTeu.d.ts +40 -0
- package/dist/test-types-CuOq25VT.d.cts +40 -0
- package/dist/types/index.cjs +2 -2
- package/dist/types/index.d.cts +2 -2
- package/dist/types/index.d.ts +2 -2
- package/dist/types/index.js +2 -2
- package/dist/types-CD4LFta-.d.cts +33 -0
- package/dist/types-CGC6Oozp.cjs +231 -0
- package/dist/types-CnTCkyvK.js +177 -0
- package/dist/types-DBdI0j89.d.ts +33 -0
- package/dist/uniqueVintage-BWkDgt1z.js +1212 -0
- package/dist/uniqueVintage-DAne8XcL.cjs +1214 -0
- package/dist/variant-CC1nrywd.d.ts +13 -0
- package/dist/variant-CQTuQQSq.d.cts +13 -0
- package/dist/venaCbd-B1HO_Pkr.cjs +366 -0
- package/dist/venaCbd-CnByO-5R.js +366 -0
- package/dist/westonJonBoucher-BAGXegsX.js +423 -0
- package/dist/westonJonBoucher-BRfHWMbs.cjs +423 -0
- package/dist/wineEnthusiast-DW8JVwV8.cjs +941 -0
- package/dist/wineEnthusiast-EJbhMeKQ.js +941 -0
- package/dist/wolfMattress-B6INZNRJ.cjs +373 -0
- package/dist/wolfMattress-D9P7ErH_.js +373 -0
- package/dist/wolfTactical-C5Pupi3J.js +350 -0
- package/dist/wolfTactical-TMthZM93.cjs +350 -0
- package/package.json +2 -1
- package/src/adapters/amplitude/amplitudeAdapter.ts +32 -9
- package/src/adapters/spiffy/commerce/api.ts +17 -8
- package/src/adapters/spiffy/commerce/graphql.ts +16 -5
- package/src/application/config/generalStaticConfig.ts +5 -2
- package/src/application/models/api/orgConfigResults.ts +6 -2
- package/src/application/models/supportedOrgs.ts +1 -1
- package/src/application/models/validators/validateGraphQLColorsConfig.ts +23 -21
- package/src/application/service/cdnService.ts +4 -2
- package/src/application/service/graphqlConfigService.ts +59 -0
- package/src/application/service/index.ts +1 -1
- package/src/application/service/pageVariantService.ts +5 -5
- package/src/application/service/searchService.ts +9 -2
- package/src/application/service/windowChatToggleService.ts +28 -19
- package/src/application/service/windowFrontendConfigService.ts +7 -4
- package/src/atoms/app/index.ts +26 -17
- package/src/atoms/app/variant.ts +1 -0
- package/src/atoms/chat/messageQueue.ts +1 -1
- package/src/atoms/envive/enviveConfig.ts +81 -0
- package/src/atoms/org/graphqlConfig.ts +40 -11
- package/src/atoms/org/index.ts +7 -7
- package/src/atoms/org/merchantCss.ts +119 -2
- package/src/atoms/org/org.ts +67 -70
- package/src/atoms/org/orgPageConfig.ts +9 -6
- package/src/atoms/org/orgUIConfig.ts +22 -9
- package/src/atoms/search/chatSearch.ts +85 -67
- package/src/atoms/search/searchAPI.ts +52 -42
- package/src/contexts/chatContext.tsx +4 -1
- package/src/contexts/enviveConfigContext.tsx +37 -26
- package/src/contexts/enviveCssContext.tsx +20 -0
- package/src/contexts/index.ts +2 -0
- package/src/contexts/orgConfigContext.tsx +106 -0
- package/src/contexts/systemSettingsContext.tsx +2 -2
- package/src/contexts/types.ts +12 -9
- package/src/hooks/index.ts +2 -3
- package/src/hooks/useDynamicVariants.ts +48 -32
- package/src/hooks/useFileUpload.ts +1 -1
- package/src/hooks/useHideElements.ts +21 -18
- package/src/hooks/useImageResolver.ts +16 -8
- package/src/hooks/useNewOrgConfig.ts +80 -0
- package/src/hooks/useSearch.tsx +10 -6
- package/src/hooks/utils.ts +1 -1
- package/src/interceptors/useFormEscalation.ts +26 -9
- package/src/types.ts +0 -2
- package/dist/api-BtzLHcfU.cjs +0 -268
- package/dist/api-kpPTZhV9.js +0 -189
- package/dist/atomStore-BNQyGmU_.cjs +0 -57
- package/dist/atomStore-TnLPtYns.js +0 -31
- package/dist/bandolier-CQrxBHsk.cjs +0 -1230
- package/dist/bandolier-Di9DpZ8e.js +0 -1230
- package/dist/carpe-3NJOR-Rj.cjs +0 -608
- package/dist/carpe-DmWKaIQq.js +0 -606
- package/dist/cdnService-BNreZjqy.js +0 -18
- package/dist/cdnService-vLxePdrU.cjs +0 -23
- package/dist/chat-CCQMmhc1.cjs +0 -5057
- package/dist/chat-Dk6KPb1K.js +0 -25
- package/dist/chat-H6YcCS4I.js +0 -4113
- package/dist/components-DAQxVIn9.js +0 -10
- package/dist/coterie-D0UFsFC5.cjs +0 -240
- package/dist/coterie-JblRmIZL.js +0 -240
- package/dist/customerService-C4wc0glQ.js +0 -22
- package/dist/customerService-zsDlp7g2.cjs +0 -35
- package/dist/custservice-types-D8Npo-5Z.js +0 -22
- package/dist/custservice-types-E9_OSaZ7.cjs +0 -34
- package/dist/default-C5ZTV8HA.cjs +0 -4
- package/dist/default-DPv8m-eQ.js +0 -175
- package/dist/default-DRKBosow.cjs +0 -198
- package/dist/default-ao0vRl0W.js +0 -4
- package/dist/divIds-BWvq-i6I.js +0 -22
- package/dist/dreamlandBaby-CyS8oW8X.js +0 -347
- package/dist/dreamlandBaby-y7kSvwH2.cjs +0 -347
- package/dist/embedded-C1jvFj3v.js +0 -22
- package/dist/entrypoints-CmmOszXO.js +0 -6
- package/dist/entrypoints-fowCLUT2.cjs +0 -18
- package/dist/enviveConfigContext-Bs8kepnO.cjs +0 -48
- package/dist/enviveConfigContext-CWVdVWKW.js +0 -34
- package/dist/events-DgFzlVJR.js +0 -77
- package/dist/events-bH-24eRW.cjs +0 -89
- package/dist/featureFlagService-CroFRxvD.d.cts +0 -17
- package/dist/featureFlagService-NkJ2fuEj.d.ts +0 -17
- package/dist/featureGates-BMWXU0dS.d.ts +0 -90
- package/dist/featureGates-N_gyHCTn.d.cts +0 -90
- package/dist/fiveCbd-CXVuIBiZ.cjs +0 -614
- package/dist/fiveCbd-Cyc3-Ab9.js +0 -614
- package/dist/forLoveAndLemons-CxQS0USq.cjs +0 -668
- package/dist/forLoveAndLemons-D8mcgmdk.js +0 -666
- package/dist/frontendConfig-KeNqU1wa.d.cts +0 -790
- package/dist/frontendConfig-cPvCTWm6.d.ts +0 -790
- package/dist/globalSearch-BC0rOX3E.js +0 -13
- package/dist/greenpan-JM6SHcqO.js +0 -398
- package/dist/greenpan-eIzyxVsn.cjs +0 -398
- package/dist/grooveLife-BmsUc2cD.js +0 -343
- package/dist/grooveLife-KdTizVUn.cjs +0 -343
- package/dist/homegrownCannabis-C0GDai4r.cjs +0 -411
- package/dist/homegrownCannabis-a9udocBT.js +0 -411
- package/dist/hooks-DjOa7ihH.cjs +0 -7331
- package/dist/hooks-fneW8SWw.js +0 -7152
- package/dist/index-BQErGgfM.d.cts +0 -202
- package/dist/index-C4zjAR1c.d.cts +0 -227
- package/dist/index-CGB6CAmr.d.ts +0 -6
- package/dist/index-CIco0cCQ.d.ts +0 -183
- package/dist/index-COG1kOZG.d.ts +0 -749
- package/dist/index-CVxe7FpL.d.cts +0 -6
- package/dist/index-Cn1SeI5y.d.cts +0 -183
- package/dist/index-CnqHN_jz.d.ts +0 -202
- package/dist/index-Cqg6ltII.d.ts +0 -38
- package/dist/index-DE_7Q8qK.d.ts +0 -94
- package/dist/index-Da0UzyI9.d.ts +0 -24
- package/dist/index-DbWWcYax.d.cts +0 -749
- package/dist/index-DtoVXd6O.d.cts +0 -97
- package/dist/index-JClBRnSX.d.cts +0 -94
- package/dist/index-ghzD_356.d.ts +0 -8
- package/dist/index-hdbCEjYy.d.cts +0 -38
- package/dist/index-luJrHgPN.d.ts +0 -97
- package/dist/index-tfRj22E1.d.ts +0 -227
- package/dist/jackArcher-B6OJ0N3a.cjs +0 -728
- package/dist/jackArcher-B9fe4Hv8.js +0 -728
- package/dist/jordanCraig-0CB_m_ts.cjs +0 -1787
- package/dist/jordanCraig-DNm1iw1L.js +0 -1787
- package/dist/kindredBravely-CZgt7DJA.js +0 -491
- package/dist/kindredBravely-KvYPbckZ.cjs +0 -491
- package/dist/kutFromTheKloth-BxgtWZs9.cjs +0 -370
- package/dist/kutFromTheKloth-SmteSZjk.js +0 -370
- package/dist/larryAndSerges-6O_u3L90.cjs +0 -261
- package/dist/larryAndSerges-DO-zG8ES.js +0 -261
- package/dist/leapsAndRebounds-BK62AmXw.js +0 -361
- package/dist/leapsAndRebounds-gPsWVUmQ.cjs +0 -361
- package/dist/logger-Be0NyKaY.cjs +0 -25
- package/dist/logger-BexDfK3W.js +0 -19
- package/dist/longevityrx-DjKbwJo3.cjs +0 -321
- package/dist/longevityrx-eq5TeUcy.js +0 -321
- package/dist/lookOptic-BPPqms_j.cjs +0 -283
- package/dist/lookOptic-jRpBXQCN.js +0 -283
- package/dist/mantraBrand-BZOZfkUK.js +0 -751
- package/dist/mantraBrand-Cp8zptkj.cjs +0 -751
- package/dist/medterra-BHYCBgvQ.cjs +0 -584
- package/dist/medterra-CShe6CLY.js +0 -584
- package/dist/modells-DE7-gmjK.cjs +0 -485
- package/dist/modells-DFyJxNwT.js +0 -485
- package/dist/nodeSelector-DpKXszfU.d.ts +0 -30
- package/dist/org-Bkn6fl6I.cjs +0 -106
- package/dist/org-CX8HFbc9.js +0 -63
- package/dist/pressedFloral-BMkCVs8c.cjs +0 -662
- package/dist/pressedFloral-aK9br-LF.js +0 -662
- package/dist/search-DtIFZeMA.cjs +0 -743
- package/dist/search-eWwg8pNn.js +0 -542
- package/dist/search-filter-types-ByJnFPc4.d.cts +0 -101
- package/dist/search-filter-types-DPgeG8FS.d.ts +0 -101
- package/dist/skinPerfection-B9G6yLM2.js +0 -335
- package/dist/skinPerfection-BBC1q65Z.cjs +0 -335
- package/dist/snapSupplements-D7hx6Kgj.cjs +0 -286
- package/dist/snapSupplements-DKvJl__T.js +0 -286
- package/dist/socialProofClasses-BYLiEXpU.cjs +0 -39
- package/dist/socialProofClasses-CkJufEGb.js +0 -9
- package/dist/spanx-D-ZKkxjM.cjs +0 -664
- package/dist/spanx-yl7YfVrf.js +0 -662
- package/dist/spanxStaging-CXeIg6zI.cjs +0 -849
- package/dist/spanxStaging-DzGXL9wD.js +0 -846
- package/dist/suggestionBarV2-types-B0RbMStE.js +0 -9
- package/dist/supergoop-CSpDPOpl.cjs +0 -337
- package/dist/supergoop-D0UkuRiA.js +0 -335
- package/dist/test-types-C9b_OdfO.d.ts +0 -39
- package/dist/test-types-CpKCxk8U.d.cts +0 -39
- package/dist/types-BE4faOO_.d.cts +0 -32
- package/dist/types-C3S1H4hl.js +0 -176
- package/dist/types-TD8g7LnH.d.ts +0 -32
- package/dist/types-lcjuhDBt.cjs +0 -230
- package/dist/uniqueVintage-DygVpCqU.cjs +0 -1214
- package/dist/uniqueVintage-_n0FZFVj.js +0 -1212
- package/dist/useMessageInterceptor-BP6gzo8a.js +0 -57
- package/dist/useMessageInterceptor-BnUG2Pzt.cjs +0 -72
- package/dist/variant-DH4zusMi.d.cts +0 -12
- package/dist/variant-DTEqSBHd.d.ts +0 -12
- package/dist/variantInfo-BTvC6CQh.js +0 -1
- package/dist/variantInfo-Cz2YXraO.cjs +0 -0
- package/dist/venaCbd-BS0dvdBm.js +0 -366
- package/dist/venaCbd-Pqg0bj-P.cjs +0 -366
- package/dist/westonJonBoucher-CLw8Hy6u.js +0 -423
- package/dist/westonJonBoucher-CeA0jwxe.cjs +0 -423
- package/dist/wineEnthusiast-M9P18d1w.js +0 -941
- package/dist/wineEnthusiast-gHBaQMbe.cjs +0 -941
- package/dist/wolfMattress-BQHjoQYu.js +0 -373
- package/dist/wolfMattress-CdmN-Evm.cjs +0 -373
- package/dist/wolfTactical-Cc2ZLBRh.js +0 -350
- package/dist/wolfTactical-dObnPgAG.cjs +0 -350
- package/src/application/service/environmentService.ts +0 -51
- package/src/extension.ts +0 -63
- package/src/hooks/useHorizontalScrollAnimation.ts +0 -115
- package/src/hooks/useReducedMotionWithOverride.ts +0 -15
- package/src/hooks/useSnapControl.ts +0 -155
- package/src/initialize.ts +0 -163
- package/src/main.tsx +0 -108
- package/src/merchants/uniqueVintage/views/useUniqueVintageChatSearch.ts +0 -147
- /package/dist/{atomStore-B3tsg6mF.cjs → locators-CugndTUM.cjs} +0 -0
- /package/dist/{atomStore-FSZd_20F.js → locators-DnKpajbY.js} +0 -0
- /package/dist/{locators-C2DX_nX6.js → utilityTypes-BVikejDo.js} +0 -0
- /package/dist/{locators-CUpyd9Wt.cjs → utilityTypes-C4h2wgAK.cjs} +0 -0
- /package/dist/{utilityTypes-DMdsI0DG.cjs → variantInfo-CNRTY0gH.cjs} +0 -0
- /package/dist/{utilityTypes-UWdNHElu.js → variantInfo-CzhR5W6h.js} +0 -0
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
//#region src/application/models/utilityTypes/primitive.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Matches any [primitive value](https://developer.mozilla.org/en-US/docs/Glossary/Primitive).
|
|
4
|
+
*
|
|
5
|
+
* @category Type
|
|
6
|
+
*/
|
|
7
|
+
type Primitive = null | undefined | string | number | boolean | symbol | bigint;
|
|
8
|
+
//#endregion
|
|
9
|
+
//#region src/application/models/utilityTypes/trim.d.ts
|
|
10
|
+
/**
|
|
11
|
+
* Remove spaces from the left side.
|
|
12
|
+
*/
|
|
13
|
+
type TrimLeft<V extends string> = V extends `${Whitespace}${infer R}` ? TrimLeft<R> : V;
|
|
14
|
+
/**
|
|
15
|
+
* Remove spaces from the right side.
|
|
16
|
+
*/
|
|
17
|
+
type TrimRight<V extends string> = V extends `${infer R}${Whitespace}` ? TrimRight<R> : V;
|
|
18
|
+
/**
|
|
19
|
+
* Remove leading and trailing spaces from a string.
|
|
20
|
+
* @example
|
|
21
|
+
* ```
|
|
22
|
+
* import type {Trim} from 'type-fest';
|
|
23
|
+
*
|
|
24
|
+
* Trim<' foo '>
|
|
25
|
+
* //=> 'foo'
|
|
26
|
+
* ```
|
|
27
|
+
*
|
|
28
|
+
* @category String
|
|
29
|
+
* @category Template literal
|
|
30
|
+
*/
|
|
31
|
+
type Trim<V extends string> = TrimLeft<TrimRight<V>>;
|
|
32
|
+
//#endregion
|
|
33
|
+
//#region src/application/models/utilityTypes/internal.d.ts
|
|
34
|
+
/**
|
|
35
|
+
* Matches any primitive, `void`, `Date`, or `RegExp` value.
|
|
36
|
+
*/
|
|
37
|
+
type BuiltIns = Primitive | void | Date | RegExp;
|
|
38
|
+
/**
|
|
39
|
+
* Matches non-recursive types.
|
|
40
|
+
*/
|
|
41
|
+
type NonRecursiveType = BuiltIns | Function | (new (...arguments_: any[]) => unknown);
|
|
42
|
+
/**
|
|
43
|
+
* Returns a boolean for whether the string is numeric.
|
|
44
|
+
*
|
|
45
|
+
* This type is a workaround for [Microsoft/TypeScript#46109](https://github.com/microsoft/TypeScript/issues/46109#issuecomment-930307987).
|
|
46
|
+
*/
|
|
47
|
+
type IsNumeric<T extends string> = T extends `${number}` ? Trim<T> extends T ? true : false : false;
|
|
48
|
+
/**
|
|
49
|
+
* Returns a boolean for whether the string is lowercased.
|
|
50
|
+
*/
|
|
51
|
+
type IsLowerCase<T extends string> = T extends Lowercase<T> ? true : false;
|
|
52
|
+
/**
|
|
53
|
+
* Returns a boolean for whether the string is upper-cased.
|
|
54
|
+
*/
|
|
55
|
+
type IsUpperCase<T extends string> = T extends Uppercase<T> ? true : false;
|
|
56
|
+
type WordSeparators = '-' | '_' | Whitespace;
|
|
57
|
+
type Whitespace = '\u{9}' | '\u{A}' | '\u{B}' | '\u{C}' | '\u{D}' | '\u{20}' | '\u{85}' | '\u{A0}' | '\u{1680}' | '\u{2000}' | '\u{2001}' | '\u{2002}' | '\u{2003}' | '\u{2004}' | '\u{2005}' | '\u{2006}' | '\u{2007}' | '\u{2008}' | '\u{2009}' | '\u{200A}' | '\u{2028}' | '\u{2029}' | '\u{202F}' | '\u{205F}' | '\u{3000}' | '\u{FEFF}';
|
|
58
|
+
type UpperCaseCharacters = 'A' | 'B' | 'C' | 'D' | 'E' | 'F' | 'G' | 'H' | 'I' | 'J' | 'K' | 'L' | 'M' | 'N' | 'O' | 'P' | 'Q' | 'R' | 'S' | 'T' | 'U' | 'V' | 'W' | 'X' | 'Y' | 'Z';
|
|
59
|
+
//#endregion
|
|
60
|
+
//#region src/application/models/utilityTypes/splitWords.d.ts
|
|
61
|
+
type SkipEmptyWord<Word extends string> = Word extends '' ? [] : [Word];
|
|
62
|
+
type RemoveLastCharacter<Sentence extends string, Character extends string> = Sentence extends `${infer LeftSide}${Character}` ? SkipEmptyWord<LeftSide> : never;
|
|
63
|
+
/**
|
|
64
|
+
* Split a string (almost) like Lodash's `_.words()` function.
|
|
65
|
+
*
|
|
66
|
+
* - Split on each word that begins with a capital letter.
|
|
67
|
+
* - Split on each {@link WordSeparators}.
|
|
68
|
+
* - Split on numeric sequence.
|
|
69
|
+
*
|
|
70
|
+
* @example
|
|
71
|
+
* ```
|
|
72
|
+
* type Words0 = SplitWords<'helloWorld'>; // ['hello', 'World']
|
|
73
|
+
* type Words1 = SplitWords<'helloWORLD'>; // ['hello', 'WORLD']
|
|
74
|
+
* type Words2 = SplitWords<'hello-world'>; // ['hello', 'world']
|
|
75
|
+
* type Words3 = SplitWords<'--hello the_world'>; // ['hello', 'the', 'world']
|
|
76
|
+
* type Words4 = SplitWords<'lifeIs42'>; // ['life', 'Is', '42']
|
|
77
|
+
* ```
|
|
78
|
+
*
|
|
79
|
+
* @internal
|
|
80
|
+
* @category Change case
|
|
81
|
+
* @category Template literal
|
|
82
|
+
*/
|
|
83
|
+
type SplitWords<Sentence extends string, LastCharacter extends string = '', CurrentWord extends string = ''> = Sentence extends `${infer FirstCharacter}${infer RemainingCharacters}` ? FirstCharacter extends WordSeparators ? [...SkipEmptyWord<CurrentWord>, ...SplitWords<RemainingCharacters>] : LastCharacter extends '' ? SplitWords<RemainingCharacters, FirstCharacter, FirstCharacter> : [false, true] extends [IsNumeric<LastCharacter>, IsNumeric<FirstCharacter>] ? [...SkipEmptyWord<CurrentWord>, ...SplitWords<RemainingCharacters, FirstCharacter, FirstCharacter>] : [true, false] extends [IsNumeric<LastCharacter>, IsNumeric<FirstCharacter>] ? [...SkipEmptyWord<CurrentWord>, ...SplitWords<RemainingCharacters, FirstCharacter, FirstCharacter>] : [true, true] extends [IsNumeric<LastCharacter>, IsNumeric<FirstCharacter>] ? SplitWords<RemainingCharacters, FirstCharacter, `${CurrentWord}${FirstCharacter}`> : [true, true] extends [IsLowerCase<LastCharacter>, IsUpperCase<FirstCharacter>] ? [...SkipEmptyWord<CurrentWord>, ...SplitWords<RemainingCharacters, FirstCharacter, FirstCharacter>] : [true, true] extends [IsUpperCase<LastCharacter>, IsLowerCase<FirstCharacter>] ? [...RemoveLastCharacter<CurrentWord, LastCharacter>, ...SplitWords<RemainingCharacters, FirstCharacter, `${LastCharacter}${FirstCharacter}`>] : SplitWords<RemainingCharacters, FirstCharacter, `${CurrentWord}${FirstCharacter}`> : [...SkipEmptyWord<CurrentWord>];
|
|
84
|
+
//#endregion
|
|
85
|
+
//#region src/application/models/utilityTypes/camelCase.d.ts
|
|
86
|
+
/**
|
|
87
|
+
* CamelCase options.
|
|
88
|
+
*
|
|
89
|
+
* @see {@link CamelCase}
|
|
90
|
+
*/
|
|
91
|
+
type CamelCaseOptions = {
|
|
92
|
+
/**
|
|
93
|
+
* Whether to preserved consecutive uppercase letter.
|
|
94
|
+
*
|
|
95
|
+
* @default true
|
|
96
|
+
*/
|
|
97
|
+
preserveConsecutiveUppercase?: boolean;
|
|
98
|
+
};
|
|
99
|
+
/**
|
|
100
|
+
* Convert an array of words to camel-case.
|
|
101
|
+
*/
|
|
102
|
+
type CamelCaseFromArray<Words extends string[], Options extends CamelCaseOptions, OutputString extends string = ''> = Words extends [infer FirstWord extends string, ...infer RemainingWords extends string[]] ? Options['preserveConsecutiveUppercase'] extends true ? `${Capitalize<FirstWord>}${CamelCaseFromArray<RemainingWords, Options>}` : `${Capitalize<Lowercase<FirstWord>>}${CamelCaseFromArray<RemainingWords, Options>}` : OutputString;
|
|
103
|
+
/**
|
|
104
|
+
* Convert a string literal to camel-case.
|
|
105
|
+
*
|
|
106
|
+
* This can be useful when, for example, converting some kebab-cased command-line flags or a snake-cased database result.
|
|
107
|
+
*
|
|
108
|
+
* By default, consecutive uppercase letter are preserved. See {@link CamelCaseOptions.preserveConsecutiveUppercase preserveConsecutiveUppercase} option to change this behaviour.
|
|
109
|
+
*
|
|
110
|
+
* @example
|
|
111
|
+
* ```
|
|
112
|
+
* import type {CamelCase} from 'type-fest';
|
|
113
|
+
*
|
|
114
|
+
* // Simple
|
|
115
|
+
*
|
|
116
|
+
* const someVariable: CamelCase<'foo-bar'> = 'fooBar';
|
|
117
|
+
*
|
|
118
|
+
* // Advanced
|
|
119
|
+
*
|
|
120
|
+
* type CamelCasedProperties<T> = {
|
|
121
|
+
* [K in keyof T as CamelCase<K>]: T[K]
|
|
122
|
+
* };
|
|
123
|
+
*
|
|
124
|
+
* interface RawOptions {
|
|
125
|
+
* 'dry-run': boolean;
|
|
126
|
+
* 'full_family_name': string;
|
|
127
|
+
* foo: number;
|
|
128
|
+
* BAR: string;
|
|
129
|
+
* QUZ_QUX: number;
|
|
130
|
+
* 'OTHER-FIELD': boolean;
|
|
131
|
+
* }
|
|
132
|
+
*
|
|
133
|
+
* const dbResult: CamelCasedProperties<RawOptions> = {
|
|
134
|
+
* dryRun: true,
|
|
135
|
+
* fullFamilyName: 'bar.js',
|
|
136
|
+
* foo: 123,
|
|
137
|
+
* bar: 'foo',
|
|
138
|
+
* quzQux: 6,
|
|
139
|
+
* otherField: false
|
|
140
|
+
* };
|
|
141
|
+
* ```
|
|
142
|
+
*
|
|
143
|
+
* @category Change case
|
|
144
|
+
* @category Template literal
|
|
145
|
+
*/
|
|
146
|
+
type CamelCase<Type, Options extends CamelCaseOptions = {
|
|
147
|
+
preserveConsecutiveUppercase: true;
|
|
148
|
+
}> = Type extends string ? string extends Type ? Type : Uncapitalize<CamelCaseFromArray<SplitWords<Type extends Uppercase<Type> ? Lowercase<Type> : Type>, Options>> : Type;
|
|
149
|
+
//#endregion
|
|
150
|
+
//#region src/application/models/utilityTypes/unknownArray.d.ts
|
|
151
|
+
/**
|
|
152
|
+
* Represents an array with `unknown` value.
|
|
153
|
+
*
|
|
154
|
+
* Use case: You want a type that all arrays can be assigned to, but you don't care about the value.
|
|
155
|
+
*
|
|
156
|
+
* @example
|
|
157
|
+
* ```
|
|
158
|
+
* import type {UnknownArray} from 'type-fest';
|
|
159
|
+
*
|
|
160
|
+
* type IsArray<T> = T extends UnknownArray ? true : false;
|
|
161
|
+
*
|
|
162
|
+
* type A = IsArray<['foo']>;
|
|
163
|
+
* //=> true
|
|
164
|
+
*
|
|
165
|
+
* type B = IsArray<readonly number[]>;
|
|
166
|
+
* //=> true
|
|
167
|
+
*
|
|
168
|
+
* type C = IsArray<string>;
|
|
169
|
+
* //=> false
|
|
170
|
+
* ```
|
|
171
|
+
*
|
|
172
|
+
* @category Type
|
|
173
|
+
* @category Array
|
|
174
|
+
*/
|
|
175
|
+
type UnknownArray = readonly unknown[];
|
|
176
|
+
//#endregion
|
|
177
|
+
//#region src/application/models/utilityTypes/camelCasedPropertiesDeep.d.ts
|
|
178
|
+
/**
|
|
179
|
+
* Convert object properties to camel case recursively.
|
|
180
|
+
*
|
|
181
|
+
* This can be useful when, for example, converting some API types from a different style.
|
|
182
|
+
*
|
|
183
|
+
* @see CamelCasedProperties
|
|
184
|
+
* @see CamelCase
|
|
185
|
+
*
|
|
186
|
+
* @example
|
|
187
|
+
* ```
|
|
188
|
+
* import type {CamelCasedPropertiesDeep} from 'type-fest';
|
|
189
|
+
*
|
|
190
|
+
* interface User {
|
|
191
|
+
* UserId: number;
|
|
192
|
+
* UserName: string;
|
|
193
|
+
* }
|
|
194
|
+
*
|
|
195
|
+
* interface UserWithFriends {
|
|
196
|
+
* UserInfo: User;
|
|
197
|
+
* UserFriends: User[];
|
|
198
|
+
* }
|
|
199
|
+
*
|
|
200
|
+
* const result: CamelCasedPropertiesDeep<UserWithFriends> = {
|
|
201
|
+
* userInfo: {
|
|
202
|
+
* userId: 1,
|
|
203
|
+
* userName: 'Tom',
|
|
204
|
+
* },
|
|
205
|
+
* userFriends: [
|
|
206
|
+
* {
|
|
207
|
+
* userId: 2,
|
|
208
|
+
* userName: 'Jerry',
|
|
209
|
+
* },
|
|
210
|
+
* {
|
|
211
|
+
* userId: 3,
|
|
212
|
+
* userName: 'Spike',
|
|
213
|
+
* },
|
|
214
|
+
* ],
|
|
215
|
+
* };
|
|
216
|
+
* ```
|
|
217
|
+
*
|
|
218
|
+
* @category Change case
|
|
219
|
+
* @category Template literal
|
|
220
|
+
* @category Object
|
|
221
|
+
*/
|
|
222
|
+
type CamelCasedPropertiesDeep<Value, Options extends CamelCaseOptions = {
|
|
223
|
+
preserveConsecutiveUppercase: true;
|
|
224
|
+
}> = Value extends Function ? Value : Value extends UnknownArray ? CamelCasedPropertiesArrayDeep<Value> : Value extends Set<infer U> ? Set<CamelCasedPropertiesDeep<U, Options>> : { [K in keyof Value as CamelCase<K, Options>]: CamelCasedPropertiesDeep<Value[K], Options> };
|
|
225
|
+
type CamelCasedPropertiesArrayDeep<Value extends UnknownArray> = Value extends [] ? [] : Value extends [infer U, ...infer V] ? [CamelCasedPropertiesDeep<U>, ...CamelCasedPropertiesDeep<V>] : Value extends readonly [infer U, ...infer V] ? readonly [CamelCasedPropertiesDeep<U>, ...CamelCasedPropertiesDeep<V>] : Value extends readonly [...infer U, infer V] ? [...CamelCasedPropertiesDeep<U>, CamelCasedPropertiesDeep<V>] : Value extends readonly [...infer U, infer V] ? readonly [...CamelCasedPropertiesDeep<U>, CamelCasedPropertiesDeep<V>] : Value extends Array<infer U> ? Array<CamelCasedPropertiesDeep<U>> : Value extends ReadonlyArray<infer U> ? ReadonlyArray<CamelCasedPropertiesDeep<U>> : never;
|
|
226
|
+
//#endregion
|
|
227
|
+
export { BuiltIns, CamelCase, CamelCaseOptions, CamelCasedPropertiesDeep, IsLowerCase, IsNumeric, IsUpperCase, NonRecursiveType, Primitive, SplitWords, Trim, UnknownArray, UpperCaseCharacters, Whitespace, WordSeparators };
|
|
228
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgtRHhwc2NydnouZC50cyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL3V0aWxpdHlUeXBlcy9wcmltaXRpdmUuZC50cyIsIi4uL3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvdXRpbGl0eVR5cGVzL3RyaW0uZC50cyIsIi4uL3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvdXRpbGl0eVR5cGVzL2ludGVybmFsLmQudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL3V0aWxpdHlUeXBlcy9zcGxpdFdvcmRzLmQudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL3V0aWxpdHlUeXBlcy9jYW1lbENhc2UuZC50cyIsIi4uL3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvdXRpbGl0eVR5cGVzL3Vua25vd25BcnJheS5kLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy91dGlsaXR5VHlwZXMvY2FtZWxDYXNlZFByb3BlcnRpZXNEZWVwLmQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBNYXRjaGVzIGFueSBbcHJpbWl0aXZlIHZhbHVlXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L1ByaW1pdGl2ZSkuXG4gKlxuICogQGNhdGVnb3J5IFR5cGVcbiAqL1xuZXhwb3J0IHR5cGUgUHJpbWl0aXZlID0gbnVsbCB8IHVuZGVmaW5lZCB8IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBzeW1ib2wgfCBiaWdpbnQ7XG4iLCJpbXBvcnQgdHlwZSB7IFdoaXRlc3BhY2UgfSBmcm9tICcuL2ludGVybmFsJztcbi8qKlxuICogUmVtb3ZlIHNwYWNlcyBmcm9tIHRoZSBsZWZ0IHNpZGUuXG4gKi9cbnR5cGUgVHJpbUxlZnQ8ViBleHRlbmRzIHN0cmluZz4gPSBWIGV4dGVuZHMgYCR7V2hpdGVzcGFjZX0ke2luZmVyIFJ9YCA/IFRyaW1MZWZ0PFI+IDogVjtcbi8qKlxuICogUmVtb3ZlIHNwYWNlcyBmcm9tIHRoZSByaWdodCBzaWRlLlxuICovXG50eXBlIFRyaW1SaWdodDxWIGV4dGVuZHMgc3RyaW5nPiA9IFYgZXh0ZW5kcyBgJHtpbmZlciBSfSR7V2hpdGVzcGFjZX1gID8gVHJpbVJpZ2h0PFI+IDogVjtcbi8qKlxuICogUmVtb3ZlIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHNwYWNlcyBmcm9tIGEgc3RyaW5nLlxuICogQGV4YW1wbGVcbiAqIGBgYFxuICogaW1wb3J0IHR5cGUge1RyaW19IGZyb20gJ3R5cGUtZmVzdCc7XG4gKlxuICogVHJpbTwnIGZvbyAnPlxuICogLy89PiAnZm9vJ1xuICogYGBgXG4gKlxuICogQGNhdGVnb3J5IFN0cmluZ1xuICogQGNhdGVnb3J5IFRlbXBsYXRlIGxpdGVyYWxcbiAqL1xuZXhwb3J0IHR5cGUgVHJpbTxWIGV4dGVuZHMgc3RyaW5nPiA9IFRyaW1MZWZ0PFRyaW1SaWdodDxWPj47XG5leHBvcnQge307XG4iLCJpbXBvcnQgeyBQcmltaXRpdmUgfSBmcm9tICcuL3ByaW1pdGl2ZSc7XG5pbXBvcnQgeyBUcmltIH0gZnJvbSAnLi90cmltJztcbi8qKlxuICogTWF0Y2hlcyBhbnkgcHJpbWl0aXZlLCBgdm9pZGAsIGBEYXRlYCwgb3IgYFJlZ0V4cGAgdmFsdWUuXG4gKi9cbmV4cG9ydCB0eXBlIEJ1aWx0SW5zID0gUHJpbWl0aXZlIHwgdm9pZCB8IERhdGUgfCBSZWdFeHA7XG4vKipcbiAqIE1hdGNoZXMgbm9uLXJlY3Vyc2l2ZSB0eXBlcy5cbiAqL1xuZXhwb3J0IHR5cGUgTm9uUmVjdXJzaXZlVHlwZSA9IEJ1aWx0SW5zIHwgRnVuY3Rpb24gfCAobmV3ICguLi5hcmd1bWVudHNfOiBhbnlbXSkgPT4gdW5rbm93bik7XG4vKipcbiAqIFJldHVybnMgYSBib29sZWFuIGZvciB3aGV0aGVyIHRoZSBzdHJpbmcgaXMgbnVtZXJpYy5cbiAqXG4gKiBUaGlzIHR5cGUgaXMgYSB3b3JrYXJvdW5kIGZvciBbTWljcm9zb2Z0L1R5cGVTY3JpcHQjNDYxMDldKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvNDYxMDkjaXNzdWVjb21tZW50LTkzMDMwNzk4NykuXG4gKi9cbmV4cG9ydCB0eXBlIElzTnVtZXJpYzxUIGV4dGVuZHMgc3RyaW5nPiA9IFQgZXh0ZW5kcyBgJHtudW1iZXJ9YCA/IFRyaW08VD4gZXh0ZW5kcyBUID8gdHJ1ZSA6IGZhbHNlIDogZmFsc2U7XG4vKipcbiAqIFJldHVybnMgYSBib29sZWFuIGZvciB3aGV0aGVyIHRoZSBzdHJpbmcgaXMgbG93ZXJjYXNlZC5cbiAqL1xuZXhwb3J0IHR5cGUgSXNMb3dlckNhc2U8VCBleHRlbmRzIHN0cmluZz4gPSBUIGV4dGVuZHMgTG93ZXJjYXNlPFQ+ID8gdHJ1ZSA6IGZhbHNlO1xuLyoqXG4gKiBSZXR1cm5zIGEgYm9vbGVhbiBmb3Igd2hldGhlciB0aGUgc3RyaW5nIGlzIHVwcGVyLWNhc2VkLlxuICovXG5leHBvcnQgdHlwZSBJc1VwcGVyQ2FzZTxUIGV4dGVuZHMgc3RyaW5nPiA9IFQgZXh0ZW5kcyBVcHBlcmNhc2U8VD4gPyB0cnVlIDogZmFsc2U7XG5leHBvcnQgdHlwZSBXb3JkU2VwYXJhdG9ycyA9ICctJyB8ICdfJyB8IFdoaXRlc3BhY2U7XG5leHBvcnQgdHlwZSBXaGl0ZXNwYWNlID0gJ1xcdXs5fScgfCAnXFx1e0F9JyB8ICdcXHV7Qn0nIHwgJ1xcdXtDfScgfCAnXFx1e0R9JyB8ICdcXHV7MjB9JyB8ICdcXHV7ODV9JyB8ICdcXHV7QTB9JyB8ICdcXHV7MTY4MH0nIHwgJ1xcdXsyMDAwfScgfCAnXFx1ezIwMDF9JyB8ICdcXHV7MjAwMn0nIHwgJ1xcdXsyMDAzfScgfCAnXFx1ezIwMDR9JyB8ICdcXHV7MjAwNX0nIHwgJ1xcdXsyMDA2fScgfCAnXFx1ezIwMDd9JyB8ICdcXHV7MjAwOH0nIHwgJ1xcdXsyMDA5fScgfCAnXFx1ezIwMEF9JyB8ICdcXHV7MjAyOH0nIHwgJ1xcdXsyMDI5fScgfCAnXFx1ezIwMkZ9JyB8ICdcXHV7MjA1Rn0nIHwgJ1xcdXszMDAwfScgfCAnXFx1e0ZFRkZ9JztcbmV4cG9ydCB0eXBlIFVwcGVyQ2FzZUNoYXJhY3RlcnMgPSAnQScgfCAnQicgfCAnQycgfCAnRCcgfCAnRScgfCAnRicgfCAnRycgfCAnSCcgfCAnSScgfCAnSicgfCAnSycgfCAnTCcgfCAnTScgfCAnTicgfCAnTycgfCAnUCcgfCAnUScgfCAnUicgfCAnUycgfCAnVCcgfCAnVScgfCAnVicgfCAnVycgfCAnWCcgfCAnWScgfCAnWic7XG4iLCJpbXBvcnQgdHlwZSB7IElzTG93ZXJDYXNlLCBJc051bWVyaWMsIElzVXBwZXJDYXNlLCBXb3JkU2VwYXJhdG9ycyB9IGZyb20gJy4vaW50ZXJuYWwnO1xudHlwZSBTa2lwRW1wdHlXb3JkPFdvcmQgZXh0ZW5kcyBzdHJpbmc+ID0gV29yZCBleHRlbmRzICcnID8gW10gOiBbV29yZF07XG50eXBlIFJlbW92ZUxhc3RDaGFyYWN0ZXI8U2VudGVuY2UgZXh0ZW5kcyBzdHJpbmcsIENoYXJhY3RlciBleHRlbmRzIHN0cmluZz4gPSBTZW50ZW5jZSBleHRlbmRzIGAke2luZmVyIExlZnRTaWRlfSR7Q2hhcmFjdGVyfWAgPyBTa2lwRW1wdHlXb3JkPExlZnRTaWRlPiA6IG5ldmVyO1xuLyoqXG4gKiBTcGxpdCBhIHN0cmluZyAoYWxtb3N0KSBsaWtlIExvZGFzaCdzIGBfLndvcmRzKClgIGZ1bmN0aW9uLlxuICpcbiAqIC0gU3BsaXQgb24gZWFjaCB3b3JkIHRoYXQgYmVnaW5zIHdpdGggYSBjYXBpdGFsIGxldHRlci5cbiAqIC0gU3BsaXQgb24gZWFjaCB7QGxpbmsgV29yZFNlcGFyYXRvcnN9LlxuICogLSBTcGxpdCBvbiBudW1lcmljIHNlcXVlbmNlLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBcbiAqIHR5cGUgV29yZHMwID0gU3BsaXRXb3JkczwnaGVsbG9Xb3JsZCc+OyAvLyBbJ2hlbGxvJywgJ1dvcmxkJ11cbiAqIHR5cGUgV29yZHMxID0gU3BsaXRXb3JkczwnaGVsbG9XT1JMRCc+OyAvLyBbJ2hlbGxvJywgJ1dPUkxEJ11cbiAqIHR5cGUgV29yZHMyID0gU3BsaXRXb3JkczwnaGVsbG8td29ybGQnPjsgLy8gWydoZWxsbycsICd3b3JsZCddXG4gKiB0eXBlIFdvcmRzMyA9IFNwbGl0V29yZHM8Jy0taGVsbG8gdGhlX3dvcmxkJz47IC8vIFsnaGVsbG8nLCAndGhlJywgJ3dvcmxkJ11cbiAqIHR5cGUgV29yZHM0ID0gU3BsaXRXb3JkczwnbGlmZUlzNDInPjsgLy8gWydsaWZlJywgJ0lzJywgJzQyJ11cbiAqIGBgYFxuICpcbiAqIEBpbnRlcm5hbFxuICogQGNhdGVnb3J5IENoYW5nZSBjYXNlXG4gKiBAY2F0ZWdvcnkgVGVtcGxhdGUgbGl0ZXJhbFxuICovXG5leHBvcnQgdHlwZSBTcGxpdFdvcmRzPFNlbnRlbmNlIGV4dGVuZHMgc3RyaW5nLCBMYXN0Q2hhcmFjdGVyIGV4dGVuZHMgc3RyaW5nID0gJycsIEN1cnJlbnRXb3JkIGV4dGVuZHMgc3RyaW5nID0gJyc+ID0gU2VudGVuY2UgZXh0ZW5kcyBgJHtpbmZlciBGaXJzdENoYXJhY3Rlcn0ke2luZmVyIFJlbWFpbmluZ0NoYXJhY3RlcnN9YCA/IEZpcnN0Q2hhcmFjdGVyIGV4dGVuZHMgV29yZFNlcGFyYXRvcnMgPyBbXG4gICAgLi4uU2tpcEVtcHR5V29yZDxDdXJyZW50V29yZD4sXG4gICAgLi4uU3BsaXRXb3JkczxSZW1haW5pbmdDaGFyYWN0ZXJzPlxuXSA6IExhc3RDaGFyYWN0ZXIgZXh0ZW5kcyAnJyA/IFNwbGl0V29yZHM8UmVtYWluaW5nQ2hhcmFjdGVycywgRmlyc3RDaGFyYWN0ZXIsIEZpcnN0Q2hhcmFjdGVyPiA6IFtcbiAgICBmYWxzZSxcbiAgICB0cnVlXG5dIGV4dGVuZHMgW0lzTnVtZXJpYzxMYXN0Q2hhcmFjdGVyPiwgSXNOdW1lcmljPEZpcnN0Q2hhcmFjdGVyPl0gPyBbXG4gICAgLi4uU2tpcEVtcHR5V29yZDxDdXJyZW50V29yZD4sXG4gICAgLi4uU3BsaXRXb3JkczxSZW1haW5pbmdDaGFyYWN0ZXJzLCBGaXJzdENoYXJhY3RlciwgRmlyc3RDaGFyYWN0ZXI+XG5dIDogW1xuICAgIHRydWUsXG4gICAgZmFsc2Vcbl0gZXh0ZW5kcyBbSXNOdW1lcmljPExhc3RDaGFyYWN0ZXI+LCBJc051bWVyaWM8Rmlyc3RDaGFyYWN0ZXI+XSA/IFtcbiAgICAuLi5Ta2lwRW1wdHlXb3JkPEN1cnJlbnRXb3JkPixcbiAgICAuLi5TcGxpdFdvcmRzPFJlbWFpbmluZ0NoYXJhY3RlcnMsIEZpcnN0Q2hhcmFjdGVyLCBGaXJzdENoYXJhY3Rlcj5cbl0gOiBbXG4gICAgdHJ1ZSxcbiAgICB0cnVlXG5dIGV4dGVuZHMgW0lzTnVtZXJpYzxMYXN0Q2hhcmFjdGVyPiwgSXNOdW1lcmljPEZpcnN0Q2hhcmFjdGVyPl0gPyBTcGxpdFdvcmRzPFJlbWFpbmluZ0NoYXJhY3RlcnMsIEZpcnN0Q2hhcmFjdGVyLCBgJHtDdXJyZW50V29yZH0ke0ZpcnN0Q2hhcmFjdGVyfWA+IDogW1xuICAgIHRydWUsXG4gICAgdHJ1ZVxuXSBleHRlbmRzIFtJc0xvd2VyQ2FzZTxMYXN0Q2hhcmFjdGVyPiwgSXNVcHBlckNhc2U8Rmlyc3RDaGFyYWN0ZXI+XSA/IFtcbiAgICAuLi5Ta2lwRW1wdHlXb3JkPEN1cnJlbnRXb3JkPixcbiAgICAuLi5TcGxpdFdvcmRzPFJlbWFpbmluZ0NoYXJhY3RlcnMsIEZpcnN0Q2hhcmFjdGVyLCBGaXJzdENoYXJhY3Rlcj5cbl0gOiBbXG4gICAgdHJ1ZSxcbiAgICB0cnVlXG5dIGV4dGVuZHMgW0lzVXBwZXJDYXNlPExhc3RDaGFyYWN0ZXI+LCBJc0xvd2VyQ2FzZTxGaXJzdENoYXJhY3Rlcj5dID8gW1xuICAgIC4uLlJlbW92ZUxhc3RDaGFyYWN0ZXI8Q3VycmVudFdvcmQsIExhc3RDaGFyYWN0ZXI+LFxuICAgIC4uLlNwbGl0V29yZHM8UmVtYWluaW5nQ2hhcmFjdGVycywgRmlyc3RDaGFyYWN0ZXIsIGAke0xhc3RDaGFyYWN0ZXJ9JHtGaXJzdENoYXJhY3Rlcn1gPlxuXSA6IFNwbGl0V29yZHM8UmVtYWluaW5nQ2hhcmFjdGVycywgRmlyc3RDaGFyYWN0ZXIsIGAke0N1cnJlbnRXb3JkfSR7Rmlyc3RDaGFyYWN0ZXJ9YD4gOiBbLi4uU2tpcEVtcHR5V29yZDxDdXJyZW50V29yZD5dO1xuZXhwb3J0IHt9O1xuIiwiaW1wb3J0IHsgU3BsaXRXb3JkcyB9IGZyb20gJy4vc3BsaXRXb3Jkcyc7XG4vKipcbiAqIENhbWVsQ2FzZSBvcHRpb25zLlxuICpcbiAqIEBzZWUge0BsaW5rIENhbWVsQ2FzZX1cbiAqL1xuZXhwb3J0IHR5cGUgQ2FtZWxDYXNlT3B0aW9ucyA9IHtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRvIHByZXNlcnZlZCBjb25zZWN1dGl2ZSB1cHBlcmNhc2UgbGV0dGVyLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIHByZXNlcnZlQ29uc2VjdXRpdmVVcHBlcmNhc2U/OiBib29sZWFuO1xufTtcbi8qKlxuICogQ29udmVydCBhbiBhcnJheSBvZiB3b3JkcyB0byBjYW1lbC1jYXNlLlxuICovXG50eXBlIENhbWVsQ2FzZUZyb21BcnJheTxXb3JkcyBleHRlbmRzIHN0cmluZ1tdLCBPcHRpb25zIGV4dGVuZHMgQ2FtZWxDYXNlT3B0aW9ucywgT3V0cHV0U3RyaW5nIGV4dGVuZHMgc3RyaW5nID0gJyc+ID0gV29yZHMgZXh0ZW5kcyBbaW5mZXIgRmlyc3RXb3JkIGV4dGVuZHMgc3RyaW5nLCAuLi5pbmZlciBSZW1haW5pbmdXb3JkcyBleHRlbmRzIHN0cmluZ1tdXSA/IE9wdGlvbnNbJ3ByZXNlcnZlQ29uc2VjdXRpdmVVcHBlcmNhc2UnXSBleHRlbmRzIHRydWUgPyBgJHtDYXBpdGFsaXplPEZpcnN0V29yZD59JHtDYW1lbENhc2VGcm9tQXJyYXk8UmVtYWluaW5nV29yZHMsIE9wdGlvbnM+fWAgOiBgJHtDYXBpdGFsaXplPExvd2VyY2FzZTxGaXJzdFdvcmQ+Pn0ke0NhbWVsQ2FzZUZyb21BcnJheTxSZW1haW5pbmdXb3JkcywgT3B0aW9ucz59YCA6IE91dHB1dFN0cmluZztcbi8qKlxuICogQ29udmVydCBhIHN0cmluZyBsaXRlcmFsIHRvIGNhbWVsLWNhc2UuXG4gKlxuICogVGhpcyBjYW4gYmUgdXNlZnVsIHdoZW4sIGZvciBleGFtcGxlLCBjb252ZXJ0aW5nIHNvbWUga2ViYWItY2FzZWQgY29tbWFuZC1saW5lIGZsYWdzIG9yIGEgc25ha2UtY2FzZWQgZGF0YWJhc2UgcmVzdWx0LlxuICpcbiAqIEJ5IGRlZmF1bHQsIGNvbnNlY3V0aXZlIHVwcGVyY2FzZSBsZXR0ZXIgYXJlIHByZXNlcnZlZC4gU2VlIHtAbGluayBDYW1lbENhc2VPcHRpb25zLnByZXNlcnZlQ29uc2VjdXRpdmVVcHBlcmNhc2UgcHJlc2VydmVDb25zZWN1dGl2ZVVwcGVyY2FzZX0gb3B0aW9uIHRvIGNoYW5nZSB0aGlzIGJlaGF2aW91ci5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgXG4gKiBpbXBvcnQgdHlwZSB7Q2FtZWxDYXNlfSBmcm9tICd0eXBlLWZlc3QnO1xuICpcbiAqIC8vIFNpbXBsZVxuICpcbiAqIGNvbnN0IHNvbWVWYXJpYWJsZTogQ2FtZWxDYXNlPCdmb28tYmFyJz4gPSAnZm9vQmFyJztcbiAqXG4gKiAvLyBBZHZhbmNlZFxuICpcbiAqIHR5cGUgQ2FtZWxDYXNlZFByb3BlcnRpZXM8VD4gPSB7XG4gKiBcdFtLIGluIGtleW9mIFQgYXMgQ2FtZWxDYXNlPEs+XTogVFtLXVxuICogfTtcbiAqXG4gKiBpbnRlcmZhY2UgUmF3T3B0aW9ucyB7XG4gKiBcdCdkcnktcnVuJzogYm9vbGVhbjtcbiAqIFx0J2Z1bGxfZmFtaWx5X25hbWUnOiBzdHJpbmc7XG4gKiBcdGZvbzogbnVtYmVyO1xuICogXHRCQVI6IHN0cmluZztcbiAqIFx0UVVaX1FVWDogbnVtYmVyO1xuICogXHQnT1RIRVItRklFTEQnOiBib29sZWFuO1xuICogfVxuICpcbiAqIGNvbnN0IGRiUmVzdWx0OiBDYW1lbENhc2VkUHJvcGVydGllczxSYXdPcHRpb25zPiA9IHtcbiAqIFx0ZHJ5UnVuOiB0cnVlLFxuICogXHRmdWxsRmFtaWx5TmFtZTogJ2Jhci5qcycsXG4gKiBcdGZvbzogMTIzLFxuICogXHRiYXI6ICdmb28nLFxuICogXHRxdXpRdXg6IDYsXG4gKiBcdG90aGVyRmllbGQ6IGZhbHNlXG4gKiB9O1xuICogYGBgXG4gKlxuICogQGNhdGVnb3J5IENoYW5nZSBjYXNlXG4gKiBAY2F0ZWdvcnkgVGVtcGxhdGUgbGl0ZXJhbFxuICovXG5leHBvcnQgdHlwZSBDYW1lbENhc2U8VHlwZSwgT3B0aW9ucyBleHRlbmRzIENhbWVsQ2FzZU9wdGlvbnMgPSB7XG4gICAgcHJlc2VydmVDb25zZWN1dGl2ZVVwcGVyY2FzZTogdHJ1ZTtcbn0+ID0gVHlwZSBleHRlbmRzIHN0cmluZyA/IHN0cmluZyBleHRlbmRzIFR5cGUgPyBUeXBlIDogVW5jYXBpdGFsaXplPENhbWVsQ2FzZUZyb21BcnJheTxTcGxpdFdvcmRzPFR5cGUgZXh0ZW5kcyBVcHBlcmNhc2U8VHlwZT4gPyBMb3dlcmNhc2U8VHlwZT4gOiBUeXBlPiwgT3B0aW9ucz4+IDogVHlwZTtcbmV4cG9ydCB7fTtcbiIsIi8qKlxuICogUmVwcmVzZW50cyBhbiBhcnJheSB3aXRoIGB1bmtub3duYCB2YWx1ZS5cbiAqXG4gKiBVc2UgY2FzZTogWW91IHdhbnQgYSB0eXBlIHRoYXQgYWxsIGFycmF5cyBjYW4gYmUgYXNzaWduZWQgdG8sIGJ1dCB5b3UgZG9uJ3QgY2FyZSBhYm91dCB0aGUgdmFsdWUuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYFxuICogaW1wb3J0IHR5cGUge1Vua25vd25BcnJheX0gZnJvbSAndHlwZS1mZXN0JztcbiAqXG4gKiB0eXBlIElzQXJyYXk8VD4gPSBUIGV4dGVuZHMgVW5rbm93bkFycmF5ID8gdHJ1ZSA6IGZhbHNlO1xuICpcbiAqIHR5cGUgQSA9IElzQXJyYXk8Wydmb28nXT47XG4gKiAvLz0+IHRydWVcbiAqXG4gKiB0eXBlIEIgPSBJc0FycmF5PHJlYWRvbmx5IG51bWJlcltdPjtcbiAqIC8vPT4gdHJ1ZVxuICpcbiAqIHR5cGUgQyA9IElzQXJyYXk8c3RyaW5nPjtcbiAqIC8vPT4gZmFsc2VcbiAqIGBgYFxuICpcbiAqIEBjYXRlZ29yeSBUeXBlXG4gKiBAY2F0ZWdvcnkgQXJyYXlcbiAqL1xuZXhwb3J0IHR5cGUgVW5rbm93bkFycmF5ID0gcmVhZG9ubHkgdW5rbm93bltdO1xuIiwiaW1wb3J0IHsgQ2FtZWxDYXNlLCBDYW1lbENhc2VPcHRpb25zIH0gZnJvbSAnLi9jYW1lbENhc2UnO1xuaW1wb3J0IHsgVW5rbm93bkFycmF5IH0gZnJvbSAnLi91bmtub3duQXJyYXknO1xuLyoqXG4gKiBDb252ZXJ0IG9iamVjdCBwcm9wZXJ0aWVzIHRvIGNhbWVsIGNhc2UgcmVjdXJzaXZlbHkuXG4gKlxuICogVGhpcyBjYW4gYmUgdXNlZnVsIHdoZW4sIGZvciBleGFtcGxlLCBjb252ZXJ0aW5nIHNvbWUgQVBJIHR5cGVzIGZyb20gYSBkaWZmZXJlbnQgc3R5bGUuXG4gKlxuICogQHNlZSBDYW1lbENhc2VkUHJvcGVydGllc1xuICogQHNlZSBDYW1lbENhc2VcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgXG4gKiBpbXBvcnQgdHlwZSB7Q2FtZWxDYXNlZFByb3BlcnRpZXNEZWVwfSBmcm9tICd0eXBlLWZlc3QnO1xuICpcbiAqIGludGVyZmFjZSBVc2VyIHtcbiAqIFx0VXNlcklkOiBudW1iZXI7XG4gKiBcdFVzZXJOYW1lOiBzdHJpbmc7XG4gKiB9XG4gKlxuICogaW50ZXJmYWNlIFVzZXJXaXRoRnJpZW5kcyB7XG4gKiBcdFVzZXJJbmZvOiBVc2VyO1xuICogXHRVc2VyRnJpZW5kczogVXNlcltdO1xuICogfVxuICpcbiAqIGNvbnN0IHJlc3VsdDogQ2FtZWxDYXNlZFByb3BlcnRpZXNEZWVwPFVzZXJXaXRoRnJpZW5kcz4gPSB7XG4gKiBcdHVzZXJJbmZvOiB7XG4gKiBcdFx0dXNlcklkOiAxLFxuICogXHRcdHVzZXJOYW1lOiAnVG9tJyxcbiAqIFx0fSxcbiAqIFx0dXNlckZyaWVuZHM6IFtcbiAqIFx0XHR7XG4gKiBcdFx0XHR1c2VySWQ6IDIsXG4gKiBcdFx0XHR1c2VyTmFtZTogJ0plcnJ5JyxcbiAqIFx0XHR9LFxuICogXHRcdHtcbiAqIFx0XHRcdHVzZXJJZDogMyxcbiAqIFx0XHRcdHVzZXJOYW1lOiAnU3Bpa2UnLFxuICogXHRcdH0sXG4gKiBcdF0sXG4gKiB9O1xuICogYGBgXG4gKlxuICogQGNhdGVnb3J5IENoYW5nZSBjYXNlXG4gKiBAY2F0ZWdvcnkgVGVtcGxhdGUgbGl0ZXJhbFxuICogQGNhdGVnb3J5IE9iamVjdFxuICovXG5leHBvcnQgdHlwZSBDYW1lbENhc2VkUHJvcGVydGllc0RlZXA8VmFsdWUsIE9wdGlvbnMgZXh0ZW5kcyBDYW1lbENhc2VPcHRpb25zID0ge1xuICAgIHByZXNlcnZlQ29uc2VjdXRpdmVVcHBlcmNhc2U6IHRydWU7XG59PiA9IFZhbHVlIGV4dGVuZHMgRnVuY3Rpb24gPyBWYWx1ZSA6IFZhbHVlIGV4dGVuZHMgVW5rbm93bkFycmF5ID8gQ2FtZWxDYXNlZFByb3BlcnRpZXNBcnJheURlZXA8VmFsdWU+IDogVmFsdWUgZXh0ZW5kcyBTZXQ8aW5mZXIgVT4gPyBTZXQ8Q2FtZWxDYXNlZFByb3BlcnRpZXNEZWVwPFUsIE9wdGlvbnM+PiA6IHtcbiAgICBbSyBpbiBrZXlvZiBWYWx1ZSBhcyBDYW1lbENhc2U8SywgT3B0aW9ucz5dOiBDYW1lbENhc2VkUHJvcGVydGllc0RlZXA8VmFsdWVbS10sIE9wdGlvbnM+O1xufTtcbnR5cGUgQ2FtZWxDYXNlZFByb3BlcnRpZXNBcnJheURlZXA8VmFsdWUgZXh0ZW5kcyBVbmtub3duQXJyYXk+ID0gVmFsdWUgZXh0ZW5kcyBbXSA/IFtdIDogVmFsdWUgZXh0ZW5kcyBbaW5mZXIgVSwgLi4uaW5mZXIgVl0gPyBbQ2FtZWxDYXNlZFByb3BlcnRpZXNEZWVwPFU+LCAuLi5DYW1lbENhc2VkUHJvcGVydGllc0RlZXA8Vj5dIDogVmFsdWUgZXh0ZW5kcyByZWFkb25seSBbaW5mZXIgVSwgLi4uaW5mZXIgVl0gPyByZWFkb25seSBbQ2FtZWxDYXNlZFByb3BlcnRpZXNEZWVwPFU+LCAuLi5DYW1lbENhc2VkUHJvcGVydGllc0RlZXA8Vj5dIDogVmFsdWUgZXh0ZW5kcyByZWFkb25seSBbLi4uaW5mZXIgVSwgaW5mZXIgVl0gPyBbLi4uQ2FtZWxDYXNlZFByb3BlcnRpZXNEZWVwPFU+LCBDYW1lbENhc2VkUHJvcGVydGllc0RlZXA8Vj5dIDogVmFsdWUgZXh0ZW5kcyByZWFkb25seSBbLi4uaW5mZXIgVSwgaW5mZXIgVl0gPyByZWFkb25seSBbLi4uQ2FtZWxDYXNlZFByb3BlcnRpZXNEZWVwPFU+LCBDYW1lbENhc2VkUHJvcGVydGllc0RlZXA8Vj5dIDogVmFsdWUgZXh0ZW5kcyBBcnJheTxpbmZlciBVPiA/IEFycmF5PENhbWVsQ2FzZWRQcm9wZXJ0aWVzRGVlcDxVPj4gOiBWYWx1ZSBleHRlbmRzIFJlYWRvbmx5QXJyYXk8aW5mZXIgVT4gPyBSZWFkb25seUFycmF5PENhbWVsQ2FzZWRQcm9wZXJ0aWVzRGVlcDxVPj4gOiBuZXZlcjtcbmV4cG9ydCB7fTtcbiJdLCJtYXBwaW5ncyI6IjtBQUFBLElBQUUsWUFBQSxDQUFBLElBQUE7Ozs7QUNDRixJQUFFLFdBQUE7Q0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7Q0FBQTtBQUNGLElBQUksWUFBWTtDQUFDO09BQVc7T0FBTztPQUFBO09BQUE7T0FBQTtDQUFBO0FBQ25DLElBQUUsT0FBQTtDQUFBO09BQUE7T0FBQTtPQUFBO0NBQUE7Ozs7QUNERixJQUFFLFdBQUE7Q0FBQTtPQUFBO09BQUE7T0FBQTtDQUFBO0FBQ0YsSUFBVyxtQkFBbUI7Q0FBQztPQUFXO09BQWdCO0NBQUM7QUFDM0QsSUFBRSxZQUFBO0NBQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtDQUFBO0FBQ0YsSUFBVyxjQUFjO0NBQUM7T0FBVztPQUFTO09BQVM7Q0FBQTtBQUN2RCxJQUFFLGNBQUE7Q0FBQTtPQUFBO09BQUE7T0FBQTtDQUFBO0FBQ0YsSUFBVyxpQkFBaUIsQ0FBQyxXQUFDLFdBQUE7QUFDOUIsSUFBRSxhQUFBLENBQUEsSUFBQTtBQUNGLElBQVcsc0JBQXNCLENBQUMsSUFBSTs7OztBQ1J0QyxJQUFJLGdCQUFnQjtDQUFDO09BQVc7T0FBWTtDQUFLO0FBQ2pELElBQUksc0JBQXNCO0NBQUM7T0FBVztPQUFnQjtPQUFpQjtPQUFnQjtDQUFjO0FBQ3JHLElBQUUsYUFBQTtDQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7Q0FBQTs7OztBQ0ZGLElBQUUsbUJBQUEsQ0FBQSxJQUFBO0FBQ0YsSUFBSSxxQkFBZ0I7Q0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtDQUFBO0FBQ3BCLElBQUMsWUFBQTtDQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO0NBQUE7Ozs7QUNIRCxJQUFFLGVBQUEsQ0FBQSxJQUFBOzs7O0FDRUYsSUFBRSwyQkFBQTtDQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7Q0FBQTtBQUNGLElBQUksZ0NBQWdDO0NBQUM7T0FBVTtPQUFPO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO0NBQUEifQ==
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
import { ProductResponseAttributes } from "./index-ClJ0nMsR.cjs";
|
|
2
|
+
import { Message, SearchParams, SearchResult } from "./index-aNW5V9fh.cjs";
|
|
3
|
+
import * as jotai5 from "jotai";
|
|
4
|
+
|
|
5
|
+
//#region src/atoms/search/types.d.ts
|
|
6
|
+
declare enum ProductSorting {
|
|
7
|
+
FEATURED = "featured",
|
|
8
|
+
PRICE_ASC = "price_asc",
|
|
9
|
+
PRICE_DESC = "price_desc",
|
|
10
|
+
}
|
|
11
|
+
type ChatSearchStateType = 'entrypoint' | 'initializing-search' | 'product-page';
|
|
12
|
+
type ChatSearchFilter = {
|
|
13
|
+
filterId: string;
|
|
14
|
+
displayName: string;
|
|
15
|
+
items: ChatSearchFilterItem[];
|
|
16
|
+
};
|
|
17
|
+
type ChatSearchFilterItem = {
|
|
18
|
+
filterItemId: string;
|
|
19
|
+
displayName: string;
|
|
20
|
+
productCount: number;
|
|
21
|
+
isSelected: boolean;
|
|
22
|
+
};
|
|
23
|
+
//#endregion
|
|
24
|
+
//#region src/atoms/search/chatSearch.d.ts
|
|
25
|
+
declare const chatSearchStateAtom: jotai5.PrimitiveAtom<ChatSearchStateType> & {
|
|
26
|
+
init: ChatSearchStateType;
|
|
27
|
+
};
|
|
28
|
+
declare const chatSearchHasProductsAtom: jotai5.PrimitiveAtom<boolean> & {
|
|
29
|
+
init: boolean;
|
|
30
|
+
};
|
|
31
|
+
declare const chatSearchProductSortingAtom: jotai5.PrimitiveAtom<ProductSorting> & {
|
|
32
|
+
init: ProductSorting;
|
|
33
|
+
};
|
|
34
|
+
type ChatSearchTurn = {
|
|
35
|
+
id: string;
|
|
36
|
+
generatedQuery?: string;
|
|
37
|
+
productCount: number;
|
|
38
|
+
productList: ProductResponseAttributes["attributes"][];
|
|
39
|
+
filterList: string[];
|
|
40
|
+
messages: Message[];
|
|
41
|
+
};
|
|
42
|
+
declare const chatSearchIsLoadingAtom: jotai5.PrimitiveAtom<boolean> & {
|
|
43
|
+
init: boolean;
|
|
44
|
+
};
|
|
45
|
+
type SelectedChatSearchFilterOption = {
|
|
46
|
+
id: string;
|
|
47
|
+
displayName: string;
|
|
48
|
+
filterId: string;
|
|
49
|
+
filterItemId: string;
|
|
50
|
+
};
|
|
51
|
+
declare const selectedFilterOptionsAtom: jotai5.PrimitiveAtom<SelectedChatSearchFilterOption[]> & {
|
|
52
|
+
init: SelectedChatSearchFilterOption[];
|
|
53
|
+
};
|
|
54
|
+
declare const additiveDynamicFiltersAtom: jotai5.Atom<boolean>;
|
|
55
|
+
declare const createChatSearchFilterOption: (filterId: string, filterItemId: string, displayName: string) => SelectedChatSearchFilterOption;
|
|
56
|
+
declare const chatSearchParamsAtom: jotai5.WritableAtom<{
|
|
57
|
+
id: string | null;
|
|
58
|
+
query: string | null;
|
|
59
|
+
}, [value: {
|
|
60
|
+
id: string | null;
|
|
61
|
+
query: string | null;
|
|
62
|
+
}], void>;
|
|
63
|
+
declare const chatSearchQueryAtom: jotai5.WritableAtom<string | null, [value: string | null], void>;
|
|
64
|
+
declare const chatSearchIdAtom: jotai5.WritableAtom<string | null, [value: string | null], void>;
|
|
65
|
+
declare const ChatSearchTurnAtom: jotai5.Atom<{
|
|
66
|
+
productList: {
|
|
67
|
+
averageRating?: number | undefined;
|
|
68
|
+
colors?: string[] | undefined;
|
|
69
|
+
description?: string | undefined;
|
|
70
|
+
filters?: {
|
|
71
|
+
[x: string]: string[];
|
|
72
|
+
} | undefined;
|
|
73
|
+
id: string;
|
|
74
|
+
imageUrl?: string | undefined;
|
|
75
|
+
imageUrls?: string[] | undefined;
|
|
76
|
+
isForGrid?: boolean | undefined;
|
|
77
|
+
metadata?: {
|
|
78
|
+
label: string;
|
|
79
|
+
value: string;
|
|
80
|
+
}[] | undefined;
|
|
81
|
+
numberReviews?: number | undefined;
|
|
82
|
+
originalPrice?: number | undefined;
|
|
83
|
+
salePrice?: number | undefined;
|
|
84
|
+
sizes?: string[] | undefined;
|
|
85
|
+
title: string;
|
|
86
|
+
url: string;
|
|
87
|
+
}[];
|
|
88
|
+
productCount: number;
|
|
89
|
+
id: string;
|
|
90
|
+
generatedQuery?: string;
|
|
91
|
+
filterList: string[];
|
|
92
|
+
messages: Message[];
|
|
93
|
+
} | null>;
|
|
94
|
+
declare const chatSearchProducts: jotai5.Atom<{
|
|
95
|
+
averageRating?: number | undefined;
|
|
96
|
+
colors?: string[] | undefined;
|
|
97
|
+
description?: string | undefined;
|
|
98
|
+
filters?: {
|
|
99
|
+
[x: string]: string[];
|
|
100
|
+
} | undefined;
|
|
101
|
+
id: string;
|
|
102
|
+
imageUrl?: string | undefined;
|
|
103
|
+
imageUrls?: string[] | undefined;
|
|
104
|
+
isForGrid?: boolean | undefined;
|
|
105
|
+
metadata?: {
|
|
106
|
+
label: string;
|
|
107
|
+
value: string;
|
|
108
|
+
}[] | undefined;
|
|
109
|
+
numberReviews?: number | undefined;
|
|
110
|
+
originalPrice?: number | undefined;
|
|
111
|
+
salePrice?: number | undefined;
|
|
112
|
+
sizes?: string[] | undefined;
|
|
113
|
+
title: string;
|
|
114
|
+
url: string;
|
|
115
|
+
}[]>;
|
|
116
|
+
declare const chatSearchFiltersAtom: jotai5.Atom<ChatSearchFilter[]>;
|
|
117
|
+
declare const setSearchParams: (query: string) => void;
|
|
118
|
+
declare const getSearchParamsAtom: jotai5.Atom<{
|
|
119
|
+
es: string | null;
|
|
120
|
+
esq: string | null;
|
|
121
|
+
}>;
|
|
122
|
+
declare const initiateChatSearchAtom: jotai5.WritableAtom<null, [query: string], void> & {
|
|
123
|
+
init: null;
|
|
124
|
+
};
|
|
125
|
+
declare const handleSearchResultsAtom: jotai5.WritableAtom<null, [message: Message | undefined], void> & {
|
|
126
|
+
init: null;
|
|
127
|
+
};
|
|
128
|
+
declare const setChatSearchParamsAtom: jotai5.WritableAtom<null, [query: string], void> & {
|
|
129
|
+
init: null;
|
|
130
|
+
};
|
|
131
|
+
//#endregion
|
|
132
|
+
//#region src/atoms/search/searchAPI.d.ts
|
|
133
|
+
type SelectedFilterOption = {
|
|
134
|
+
id: string;
|
|
135
|
+
displayName: string;
|
|
136
|
+
filterId: string;
|
|
137
|
+
filterItemId: string;
|
|
138
|
+
};
|
|
139
|
+
interface SearchState {
|
|
140
|
+
data: SearchResult | null;
|
|
141
|
+
loading: boolean;
|
|
142
|
+
error: string | null;
|
|
143
|
+
lastQuery: string | null;
|
|
144
|
+
}
|
|
145
|
+
declare const searchAtom: jotai5.PrimitiveAtom<SearchState> & {
|
|
146
|
+
init: SearchState;
|
|
147
|
+
};
|
|
148
|
+
declare const searchProductSortingAtom: jotai5.PrimitiveAtom<ProductSorting> & {
|
|
149
|
+
init: ProductSorting;
|
|
150
|
+
};
|
|
151
|
+
declare const searchSelectedFiltersAtom: jotai5.PrimitiveAtom<SelectedFilterOption[]> & {
|
|
152
|
+
init: SelectedFilterOption[];
|
|
153
|
+
};
|
|
154
|
+
declare const createFilterOption: (filterId: string, filterItemId: string, displayName: string) => SelectedFilterOption;
|
|
155
|
+
declare const searchParamsAtom: jotai5.WritableAtom<{
|
|
156
|
+
id: string | null;
|
|
157
|
+
query: string | null;
|
|
158
|
+
}, [value: {
|
|
159
|
+
id: string | null;
|
|
160
|
+
query: string | null;
|
|
161
|
+
}], void>;
|
|
162
|
+
declare const internalSearchSystemStateAtom: jotai5.PrimitiveAtom<boolean> & {
|
|
163
|
+
init: boolean;
|
|
164
|
+
};
|
|
165
|
+
declare const searchSystemAtom: jotai5.WritableAtom<boolean, [value: boolean], void>;
|
|
166
|
+
declare const filteredSearchProductsAtom: jotai5.Atom<{
|
|
167
|
+
averageRating?: number | undefined;
|
|
168
|
+
colors?: string[] | undefined;
|
|
169
|
+
description?: string | undefined;
|
|
170
|
+
filters?: {
|
|
171
|
+
[x: string]: string[];
|
|
172
|
+
} | undefined;
|
|
173
|
+
id: string;
|
|
174
|
+
imageUrl?: string | undefined;
|
|
175
|
+
imageUrls?: string[] | undefined;
|
|
176
|
+
isForGrid?: boolean | undefined;
|
|
177
|
+
metadata?: {
|
|
178
|
+
label: string;
|
|
179
|
+
value: string;
|
|
180
|
+
}[] | undefined;
|
|
181
|
+
numberReviews?: number | undefined;
|
|
182
|
+
originalPrice?: number | undefined;
|
|
183
|
+
salePrice?: number | undefined;
|
|
184
|
+
sizes?: string[] | undefined;
|
|
185
|
+
title: string;
|
|
186
|
+
url: string;
|
|
187
|
+
}[]>;
|
|
188
|
+
declare const searchFiltersAtom: jotai5.Atom<ChatSearchFilter[]>;
|
|
189
|
+
declare const addSearchFilterAtom: jotai5.WritableAtom<null, [filter: SelectedFilterOption], void> & {
|
|
190
|
+
init: null;
|
|
191
|
+
};
|
|
192
|
+
declare const removeSearchFilterAtom: jotai5.WritableAtom<null, [filterId: string], void> & {
|
|
193
|
+
init: null;
|
|
194
|
+
};
|
|
195
|
+
declare const clearSearchFiltersAtom: jotai5.WritableAtom<null, [], void> & {
|
|
196
|
+
init: null;
|
|
197
|
+
};
|
|
198
|
+
declare const performSearchAtom: jotai5.WritableAtom<null, [params: SearchParams, allowRedirect?: unknown], Promise<void>> & {
|
|
199
|
+
init: null;
|
|
200
|
+
};
|
|
201
|
+
//#endregion
|
|
202
|
+
export { ChatSearchTurn, ChatSearchTurnAtom, SelectedChatSearchFilterOption, SelectedFilterOption, addSearchFilterAtom, additiveDynamicFiltersAtom, chatSearchFiltersAtom, chatSearchHasProductsAtom, chatSearchIdAtom, chatSearchIsLoadingAtom, chatSearchParamsAtom, chatSearchProductSortingAtom, chatSearchProducts, chatSearchQueryAtom, chatSearchStateAtom, clearSearchFiltersAtom, createChatSearchFilterOption, createFilterOption, filteredSearchProductsAtom, getSearchParamsAtom, handleSearchResultsAtom, initiateChatSearchAtom, internalSearchSystemStateAtom, performSearchAtom, removeSearchFilterAtom, searchAtom, searchFiltersAtom, searchParamsAtom, searchProductSortingAtom, searchSelectedFiltersAtom, searchSystemAtom, selectedFilterOptionsAtom, setChatSearchParamsAtom, setSearchParams };
|
|
203
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgtSzJrTnNPVHcuZC5jdHMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vc3JjL2F0b21zL3NlYXJjaC90eXBlcy5kLnRzIiwiLi4vc3JjL2F0b21zL3NlYXJjaC9jaGF0U2VhcmNoLmQudHMiLCIuLi9zcmMvYXRvbXMvc2VhcmNoL3NlYXJjaEFQSS5kLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWNsYXJlIGVudW0gUHJvZHVjdFNvcnRpbmcge1xuICAgIEZFQVRVUkVEID0gXCJmZWF0dXJlZFwiLFxuICAgIFBSSUNFX0FTQyA9IFwicHJpY2VfYXNjXCIsXG4gICAgUFJJQ0VfREVTQyA9IFwicHJpY2VfZGVzY1wiXG59XG5leHBvcnQgZGVjbGFyZSBjb25zdCBQcm9kdWN0U29ydGluZ05hbWVzOiB7XG4gICAgZmVhdHVyZWQ6IHN0cmluZztcbiAgICBwcmljZV9hc2M6IHN0cmluZztcbiAgICBwcmljZV9kZXNjOiBzdHJpbmc7XG59O1xuZXhwb3J0IHR5cGUgQ2hhdFNlYXJjaFN0YXRlVHlwZSA9ICdlbnRyeXBvaW50JyB8ICdpbml0aWFsaXppbmctc2VhcmNoJyB8ICdwcm9kdWN0LXBhZ2UnO1xuZXhwb3J0IHR5cGUgQ2hhdFNlYXJjaEZpbHRlciA9IHtcbiAgICBmaWx0ZXJJZDogc3RyaW5nO1xuICAgIGRpc3BsYXlOYW1lOiBzdHJpbmc7XG4gICAgaXRlbXM6IENoYXRTZWFyY2hGaWx0ZXJJdGVtW107XG59O1xuZXhwb3J0IHR5cGUgQ2hhdFNlYXJjaEZpbHRlckl0ZW0gPSB7XG4gICAgZmlsdGVySXRlbUlkOiBzdHJpbmc7XG4gICAgZGlzcGxheU5hbWU6IHN0cmluZztcbiAgICBwcm9kdWN0Q291bnQ6IG51bWJlcjtcbiAgICBpc1NlbGVjdGVkOiBib29sZWFuO1xufTtcbmV4cG9ydCBpbnRlcmZhY2UgQ2hhdFNlYXJjaFNvcnRQcm9wcyB7XG4gICAgb3B0aW9uczogUHJvZHVjdFNvcnRpbmdbXTtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQ2hhdFNlYXJjaFNvcnRNb2RhbFByb3BzIGV4dGVuZHMgQ2hhdFNlYXJjaFNvcnRQcm9wcyB7XG4gICAgb3BlbjogYm9vbGVhbjtcbiAgICBoYW5kbGVQb3B1cFN0YXRlOiAoc3RhdGU6IGJvb2xlYW4pID0+IHZvaWQ7XG59XG5leHBvcnQgaW50ZXJmYWNlIFNvcnRPcHRpb24ge1xuICAgIHZhbHVlOiBQcm9kdWN0U29ydGluZztcbiAgICBpc1NlbGVjdGVkOiBib29sZWFuO1xuICAgIG9uU2VsZWN0OiAob3B0aW9uOiBQcm9kdWN0U29ydGluZykgPT4gdm9pZDtcbn1cbmV4cG9ydCBkZWNsYXJlIGVudW0gQ2hhdFNlYXJjaFNvcnRPdmVycmlkZXMge1xuICAgIERFU0tUT1BfRklMVEVSX0NPTlRBSU5FUiA9IFwic3BpZmZ5LWNoYXQtc2VhcmNoLWZpbHRlci1jb250YWluZXJcIixcbiAgICBERVNLVE9QX0ZJTFRFUl9TRUxFQ1RfQ09NUE9ORU5UID0gXCJzcGlmZnktY2hhdC1zZWFyY2gtZmlsdGVyLXNlbGVjdC1jb21wb25lbnRcIixcbiAgICBERVNLVE9QX0ZJTFRFUl9TRUxFQ1RfSUNPTiA9IFwic3BpZmZ5LWNoYXQtc2VhcmNoLWZpbHRlci1zZWxlY3QtaWNvblwiLFxuICAgIE1PQklMRV9GSUxURVJfQlVUVE9OID0gXCJzcGlmZnktY2hhdC1zZWFyY2gtZmlsdGVyLWJ1dHRvblwiLFxuICAgIE1PQklMRV9GSUxURVJfTU9EQUxfQ09OVEFJTkVSID0gXCJzcGlmZnktY2hhdC1zZWFyY2gtZmlsdGVyLW1vZGFsLWNvbnRhaW5lclwiLFxuICAgIE1PQklMRV9GSUxURVJfTU9EQUxfSEVBREVSID0gXCJzcGlmZnktY2hhdC1zZWFyY2gtZmlsdGVyLW1vZGFsLWhlYWRlclwiLFxuICAgIE1PQklMRV9GSUxURVJfTU9EQUxfU0VMRUNUSU9OID0gXCJzcGlmZnktY2hhdC1zZWFyY2gtZmlsdGVyLW1vZGFsLXNlbGVjdGlvblwiLFxuICAgIE1PQklMRV9GSUxURVJfTU9EQUxfT1BUSU9OID0gXCJzcGlmZnktY2hhdC1zZWFyY2gtZmlsdGVyLW1vZGFsLW9wdGlvblwiLFxuICAgIE1PQklMRV9GSUxURVJfTU9EQUxfT1BUSU9OX1BJTEwgPSBcInNwaWZmeS1jaGF0LXNlYXJjaC1maWx0ZXItbW9kYWwtb3B0aW9uLXBpbGxcIixcbiAgICBNT0JJTEVfRklMVEVSX01PREFMX09QVElPTl9ERVNDUklQVElPTiA9IFwic3BpZmZ5LWNoYXQtc2VhcmNoLWZpbHRlci1tb2RhbC1vcHRpb24tZGVzY1wiLFxuICAgIE1PQklMRV9GSUxURVJfTU9EQUxfQVBQTFlfQlVUVE9OID0gXCJzcGlmZnktY2hhdC1zZWFyY2gtZmlsdGVyLW1vZGFsLWFwcGx5LWJ1dHRvblwiXG59XG4iLCJpbXBvcnQgeyBNZXNzYWdlLCBQcm9kdWN0UmVzcG9uc2VBdHRyaWJ1dGVzIH0gZnJvbSBcInNyYy9hcHBsaWNhdGlvbi9tb2RlbHNcIjtcbmltcG9ydCB7IENoYXRTZWFyY2hTdGF0ZVR5cGUsIFByb2R1Y3RTb3J0aW5nIH0gZnJvbSBcIi4vdHlwZXNcIjtcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IGNoYXRTZWFyY2hTdGF0ZUF0b206IGltcG9ydChcImpvdGFpXCIpLlByaW1pdGl2ZUF0b208Q2hhdFNlYXJjaFN0YXRlVHlwZT4gJiB7XG4gICAgaW5pdDogQ2hhdFNlYXJjaFN0YXRlVHlwZTtcbn07XG5leHBvcnQgZGVjbGFyZSBjb25zdCBjaGF0U2VhcmNoSGFzUHJvZHVjdHNBdG9tOiBpbXBvcnQoXCJqb3RhaVwiKS5QcmltaXRpdmVBdG9tPGJvb2xlYW4+ICYge1xuICAgIGluaXQ6IGJvb2xlYW47XG59O1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgY2hhdFNlYXJjaFByb2R1Y3RTb3J0aW5nQXRvbTogaW1wb3J0KFwiam90YWlcIikuUHJpbWl0aXZlQXRvbTxQcm9kdWN0U29ydGluZz4gJiB7XG4gICAgaW5pdDogUHJvZHVjdFNvcnRpbmc7XG59O1xuZXhwb3J0IHR5cGUgQ2hhdFNlYXJjaFR1cm4gPSB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBnZW5lcmF0ZWRRdWVyeT86IHN0cmluZztcbiAgICBwcm9kdWN0Q291bnQ6IG51bWJlcjtcbiAgICBwcm9kdWN0TGlzdDogUHJvZHVjdFJlc3BvbnNlQXR0cmlidXRlc1tcImF0dHJpYnV0ZXNcIl1bXTtcbiAgICBmaWx0ZXJMaXN0OiBzdHJpbmdbXTtcbiAgICBtZXNzYWdlczogTWVzc2FnZVtdO1xufTtcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IGNoYXRTZWFyY2hJc0xvYWRpbmdBdG9tOiBpbXBvcnQoXCJqb3RhaVwiKS5QcmltaXRpdmVBdG9tPGJvb2xlYW4+ICYge1xuICAgIGluaXQ6IGJvb2xlYW47XG59O1xuZXhwb3J0IHR5cGUgU2VsZWN0ZWRDaGF0U2VhcmNoRmlsdGVyT3B0aW9uID0ge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgZGlzcGxheU5hbWU6IHN0cmluZztcbiAgICBmaWx0ZXJJZDogc3RyaW5nO1xuICAgIGZpbHRlckl0ZW1JZDogc3RyaW5nO1xufTtcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IHNlbGVjdGVkRmlsdGVyT3B0aW9uc0F0b206IGltcG9ydChcImpvdGFpXCIpLlByaW1pdGl2ZUF0b208U2VsZWN0ZWRDaGF0U2VhcmNoRmlsdGVyT3B0aW9uW10+ICYge1xuICAgIGluaXQ6IFNlbGVjdGVkQ2hhdFNlYXJjaEZpbHRlck9wdGlvbltdO1xufTtcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IGFkZGl0aXZlRHluYW1pY0ZpbHRlcnNBdG9tOiBpbXBvcnQoXCJqb3RhaVwiKS5BdG9tPGJvb2xlYW4+O1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgY3JlYXRlQ2hhdFNlYXJjaEZpbHRlck9wdGlvbjogKGZpbHRlcklkOiBzdHJpbmcsIGZpbHRlckl0ZW1JZDogc3RyaW5nLCBkaXNwbGF5TmFtZTogc3RyaW5nKSA9PiBTZWxlY3RlZENoYXRTZWFyY2hGaWx0ZXJPcHRpb247XG5leHBvcnQgZGVjbGFyZSBjb25zdCBjaGF0U2VhcmNoUGFyYW1zQXRvbTogaW1wb3J0KFwiam90YWlcIikuV3JpdGFibGVBdG9tPHtcbiAgICBpZDogc3RyaW5nIHwgbnVsbDtcbiAgICBxdWVyeTogc3RyaW5nIHwgbnVsbDtcbn0sIFt2YWx1ZToge1xuICAgIGlkOiBzdHJpbmcgfCBudWxsO1xuICAgIHF1ZXJ5OiBzdHJpbmcgfCBudWxsO1xufV0sIHZvaWQ+O1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgY2hhdFNlYXJjaFF1ZXJ5QXRvbTogaW1wb3J0KFwiam90YWlcIikuV3JpdGFibGVBdG9tPHN0cmluZyB8IG51bGwsIFt2YWx1ZTogc3RyaW5nIHwgbnVsbF0sIHZvaWQ+O1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgY2hhdFNlYXJjaElkQXRvbTogaW1wb3J0KFwiam90YWlcIikuV3JpdGFibGVBdG9tPHN0cmluZyB8IG51bGwsIFt2YWx1ZTogc3RyaW5nIHwgbnVsbF0sIHZvaWQ+O1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgQ2hhdFNlYXJjaFR1cm5BdG9tOiBpbXBvcnQoXCJqb3RhaVwiKS5BdG9tPHtcbiAgICBwcm9kdWN0TGlzdDoge1xuICAgICAgICBhdmVyYWdlUmF0aW5nPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgICAgICBjb2xvcnM/OiBzdHJpbmdbXSB8IHVuZGVmaW5lZDtcbiAgICAgICAgZGVzY3JpcHRpb24/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICAgIGZpbHRlcnM/OiB7XG4gICAgICAgICAgICBbeDogc3RyaW5nXTogc3RyaW5nW107XG4gICAgICAgIH0gfCB1bmRlZmluZWQ7XG4gICAgICAgIGlkOiBzdHJpbmc7XG4gICAgICAgIGltYWdlVXJsPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgICBpbWFnZVVybHM/OiBzdHJpbmdbXSB8IHVuZGVmaW5lZDtcbiAgICAgICAgaXNGb3JHcmlkPzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgICAgICAgbWV0YWRhdGE/OiB7XG4gICAgICAgICAgICBsYWJlbDogc3RyaW5nO1xuICAgICAgICAgICAgdmFsdWU6IHN0cmluZztcbiAgICAgICAgfVtdIHwgdW5kZWZpbmVkO1xuICAgICAgICBudW1iZXJSZXZpZXdzPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgICAgICBvcmlnaW5hbFByaWNlPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgICAgICBzYWxlUHJpY2U/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgICAgIHNpemVzPzogc3RyaW5nW10gfCB1bmRlZmluZWQ7XG4gICAgICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgICAgIHVybDogc3RyaW5nO1xuICAgIH1bXTtcbiAgICBwcm9kdWN0Q291bnQ6IG51bWJlcjtcbiAgICBpZDogc3RyaW5nO1xuICAgIGdlbmVyYXRlZFF1ZXJ5Pzogc3RyaW5nO1xuICAgIGZpbHRlckxpc3Q6IHN0cmluZ1tdO1xuICAgIG1lc3NhZ2VzOiBNZXNzYWdlW107XG59IHwgbnVsbD47XG5leHBvcnQgZGVjbGFyZSBjb25zdCBjaGF0U2VhcmNoUHJvZHVjdHM6IGltcG9ydChcImpvdGFpXCIpLkF0b208e1xuICAgIGF2ZXJhZ2VSYXRpbmc/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgY29sb3JzPzogc3RyaW5nW10gfCB1bmRlZmluZWQ7XG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgZmlsdGVycz86IHtcbiAgICAgICAgW3g6IHN0cmluZ106IHN0cmluZ1tdO1xuICAgIH0gfCB1bmRlZmluZWQ7XG4gICAgaWQ6IHN0cmluZztcbiAgICBpbWFnZVVybD86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBpbWFnZVVybHM/OiBzdHJpbmdbXSB8IHVuZGVmaW5lZDtcbiAgICBpc0ZvckdyaWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAgIG1ldGFkYXRhPzoge1xuICAgICAgICBsYWJlbDogc3RyaW5nO1xuICAgICAgICB2YWx1ZTogc3RyaW5nO1xuICAgIH1bXSB8IHVuZGVmaW5lZDtcbiAgICBudW1iZXJSZXZpZXdzPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIG9yaWdpbmFsUHJpY2U/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgc2FsZVByaWNlPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIHNpemVzPzogc3RyaW5nW10gfCB1bmRlZmluZWQ7XG4gICAgdGl0bGU6IHN0cmluZztcbiAgICB1cmw6IHN0cmluZztcbn1bXT47XG5leHBvcnQgZGVjbGFyZSBjb25zdCBjaGF0U2VhcmNoRmlsdGVyc0F0b206IGltcG9ydChcImpvdGFpXCIpLkF0b208aW1wb3J0KFwiLi90eXBlc1wiKS5DaGF0U2VhcmNoRmlsdGVyW10+O1xuZXhwb3J0IGRlY2xhcmUgY29uc3Qgc2V0U2VhcmNoUGFyYW1zOiAocXVlcnk6IHN0cmluZykgPT4gdm9pZDtcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IGdldFNlYXJjaFBhcmFtc0F0b206IGltcG9ydChcImpvdGFpXCIpLkF0b208e1xuICAgIGVzOiBzdHJpbmcgfCBudWxsO1xuICAgIGVzcTogc3RyaW5nIHwgbnVsbDtcbn0+O1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgaW5pdGlhdGVDaGF0U2VhcmNoQXRvbTogaW1wb3J0KFwiam90YWlcIikuV3JpdGFibGVBdG9tPG51bGwsIFtxdWVyeTogc3RyaW5nXSwgdm9pZD4gJiB7XG4gICAgaW5pdDogbnVsbDtcbn07XG5leHBvcnQgZGVjbGFyZSBjb25zdCBoYW5kbGVTZWFyY2hSZXN1bHRzQXRvbTogaW1wb3J0KFwiam90YWlcIikuV3JpdGFibGVBdG9tPG51bGwsIFttZXNzYWdlOiBNZXNzYWdlIHwgdW5kZWZpbmVkXSwgdm9pZD4gJiB7XG4gICAgaW5pdDogbnVsbDtcbn07XG5leHBvcnQgZGVjbGFyZSBjb25zdCBzZXRDaGF0U2VhcmNoUGFyYW1zQXRvbTogaW1wb3J0KFwiam90YWlcIikuV3JpdGFibGVBdG9tPG51bGwsIFtxdWVyeTogc3RyaW5nXSwgdm9pZD4gJiB7XG4gICAgaW5pdDogbnVsbDtcbn07XG4iLCJpbXBvcnQgeyBTZWFyY2hSZXN1bHQsIFNlYXJjaFBhcmFtcyB9IGZyb20gXCJzcmMvYXBwbGljYXRpb24vbW9kZWxzL2FwaS9zZWFyY2hcIjtcbmltcG9ydCB7IFByb2R1Y3RTb3J0aW5nIH0gZnJvbSBcIi4vdHlwZXNcIjtcbmV4cG9ydCB0eXBlIFNlbGVjdGVkRmlsdGVyT3B0aW9uID0ge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgZGlzcGxheU5hbWU6IHN0cmluZztcbiAgICBmaWx0ZXJJZDogc3RyaW5nO1xuICAgIGZpbHRlckl0ZW1JZDogc3RyaW5nO1xufTtcbmludGVyZmFjZSBTZWFyY2hTdGF0ZSB7XG4gICAgZGF0YTogU2VhcmNoUmVzdWx0IHwgbnVsbDtcbiAgICBsb2FkaW5nOiBib29sZWFuO1xuICAgIGVycm9yOiBzdHJpbmcgfCBudWxsO1xuICAgIGxhc3RRdWVyeTogc3RyaW5nIHwgbnVsbDtcbn1cbmV4cG9ydCBkZWNsYXJlIGNvbnN0IHNlYXJjaEF0b206IGltcG9ydChcImpvdGFpXCIpLlByaW1pdGl2ZUF0b208U2VhcmNoU3RhdGU+ICYge1xuICAgIGluaXQ6IFNlYXJjaFN0YXRlO1xufTtcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IHNlYXJjaFByb2R1Y3RTb3J0aW5nQXRvbTogaW1wb3J0KFwiam90YWlcIikuUHJpbWl0aXZlQXRvbTxQcm9kdWN0U29ydGluZz4gJiB7XG4gICAgaW5pdDogUHJvZHVjdFNvcnRpbmc7XG59O1xuZXhwb3J0IGRlY2xhcmUgY29uc3Qgc2VhcmNoU2VsZWN0ZWRGaWx0ZXJzQXRvbTogaW1wb3J0KFwiam90YWlcIikuUHJpbWl0aXZlQXRvbTxTZWxlY3RlZEZpbHRlck9wdGlvbltdPiAmIHtcbiAgICBpbml0OiBTZWxlY3RlZEZpbHRlck9wdGlvbltdO1xufTtcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IGNyZWF0ZUZpbHRlck9wdGlvbjogKGZpbHRlcklkOiBzdHJpbmcsIGZpbHRlckl0ZW1JZDogc3RyaW5nLCBkaXNwbGF5TmFtZTogc3RyaW5nKSA9PiBTZWxlY3RlZEZpbHRlck9wdGlvbjtcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IHNlYXJjaFBhcmFtc0F0b206IGltcG9ydChcImpvdGFpXCIpLldyaXRhYmxlQXRvbTx7XG4gICAgaWQ6IHN0cmluZyB8IG51bGw7XG4gICAgcXVlcnk6IHN0cmluZyB8IG51bGw7XG59LCBbdmFsdWU6IHtcbiAgICBpZDogc3RyaW5nIHwgbnVsbDtcbiAgICBxdWVyeTogc3RyaW5nIHwgbnVsbDtcbn1dLCB2b2lkPjtcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IGludGVybmFsU2VhcmNoU3lzdGVtU3RhdGVBdG9tOiBpbXBvcnQoXCJqb3RhaVwiKS5QcmltaXRpdmVBdG9tPGJvb2xlYW4+ICYge1xuICAgIGluaXQ6IGJvb2xlYW47XG59O1xuZXhwb3J0IGRlY2xhcmUgY29uc3Qgc2VhcmNoU3lzdGVtQXRvbTogaW1wb3J0KFwiam90YWlcIikuV3JpdGFibGVBdG9tPGJvb2xlYW4sIFt2YWx1ZTogYm9vbGVhbl0sIHZvaWQ+O1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgZmlsdGVyZWRTZWFyY2hQcm9kdWN0c0F0b206IGltcG9ydChcImpvdGFpXCIpLkF0b208e1xuICAgIGF2ZXJhZ2VSYXRpbmc/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgY29sb3JzPzogc3RyaW5nW10gfCB1bmRlZmluZWQ7XG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgZmlsdGVycz86IHtcbiAgICAgICAgW3g6IHN0cmluZ106IHN0cmluZ1tdO1xuICAgIH0gfCB1bmRlZmluZWQ7XG4gICAgaWQ6IHN0cmluZztcbiAgICBpbWFnZVVybD86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBpbWFnZVVybHM/OiBzdHJpbmdbXSB8IHVuZGVmaW5lZDtcbiAgICBpc0ZvckdyaWQ/OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAgIG1ldGFkYXRhPzoge1xuICAgICAgICBsYWJlbDogc3RyaW5nO1xuICAgICAgICB2YWx1ZTogc3RyaW5nO1xuICAgIH1bXSB8IHVuZGVmaW5lZDtcbiAgICBudW1iZXJSZXZpZXdzPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIG9yaWdpbmFsUHJpY2U/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgc2FsZVByaWNlPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIHNpemVzPzogc3RyaW5nW10gfCB1bmRlZmluZWQ7XG4gICAgdGl0bGU6IHN0cmluZztcbiAgICB1cmw6IHN0cmluZztcbn1bXT47XG5leHBvcnQgZGVjbGFyZSBjb25zdCBzZWFyY2hGaWx0ZXJzQXRvbTogaW1wb3J0KFwiam90YWlcIikuQXRvbTxpbXBvcnQoXCIuL3R5cGVzXCIpLkNoYXRTZWFyY2hGaWx0ZXJbXT47XG5leHBvcnQgZGVjbGFyZSBjb25zdCBhZGRTZWFyY2hGaWx0ZXJBdG9tOiBpbXBvcnQoXCJqb3RhaVwiKS5Xcml0YWJsZUF0b208bnVsbCwgW2ZpbHRlcjogU2VsZWN0ZWRGaWx0ZXJPcHRpb25dLCB2b2lkPiAmIHtcbiAgICBpbml0OiBudWxsO1xufTtcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IHJlbW92ZVNlYXJjaEZpbHRlckF0b206IGltcG9ydChcImpvdGFpXCIpLldyaXRhYmxlQXRvbTxudWxsLCBbZmlsdGVySWQ6IHN0cmluZ10sIHZvaWQ+ICYge1xuICAgIGluaXQ6IG51bGw7XG59O1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgY2xlYXJTZWFyY2hGaWx0ZXJzQXRvbTogaW1wb3J0KFwiam90YWlcIikuV3JpdGFibGVBdG9tPG51bGwsIFtdLCB2b2lkPiAmIHtcbiAgICBpbml0OiBudWxsO1xufTtcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IHBlcmZvcm1TZWFyY2hBdG9tOiBpbXBvcnQoXCJqb3RhaVwiKS5Xcml0YWJsZUF0b208bnVsbCwgW3BhcmFtczogU2VhcmNoUGFyYW1zLCBhbGxvd1JlZGlyZWN0PzogdW5rbm93bl0sIFByb21pc2U8dm9pZD4+ICYge1xuICAgIGluaXQ6IG51bGw7XG59O1xuZXhwb3J0IHt9O1xuIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFBLElBQVcsaUJBQWlCLENBQUMsSUFBSTtBQUVqQyxJQUFXLHNCQUFnQixDQUFBLElBQUE7QUFDM0IsSUFBVyxtQkFBaUIsQ0FBQSxXQUFBLHFCQUFBO0FBQzVCLElBQUEsdUJBQUEsQ0FBQSxJQUFBOzs7O0FDQUEsSUFBQyxzQkFBQTtDQUFBO09BQUE7T0FBQSxPQUFBO09BQUE7Q0FBQTtBQUNELElBQVcsNEJBQTRCLENBQUMsV0FBVyxPQUFPLGNBQWM7QUFDeEUsSUFBVywrQkFBTTtDQUFBO09BQUE7T0FBQSxPQUFBO09BQUE7Q0FBQTtBQUNqQixJQUFDLGlCQUFBO0NBQUE7T0FBQTtPQUFBO0NBQUE7QUFDRCxJQUFXLDBCQUEwQixDQUFDLFdBQVcsT0FBTyxjQUFjO0FBQ3RFLElBQVcsaUNBQWEsQ0FBQSxJQUFBO0FBQ3hCLElBQUMsNEJBQUE7Q0FBQTtPQUFBO09BQUEsT0FBQTtPQUFBO0NBQUE7QUFDRCxJQUFXLDZCQUFrQixDQUFBLFdBQUEsT0FBQSxLQUFBO0FBQzdCLElBQVcsK0JBQUcsQ0FBQSxXQUFBLCtCQUFBO0FBQ2QsSUFBVyx1QkFBZ0IsQ0FBQSxXQUFBLE9BQUEsYUFBQTtBQUMzQixJQUFXLHNCQUFhLENBQUEsV0FBQSxPQUFBLGFBQUE7QUFDeEIsSUFBVyxtQkFBbUIsQ0FBQyxXQUFXLE9BQU8sYUFBUztBQUMxRCxJQUFXLHFCQUFhO0NBQUE7T0FBQTtPQUFBLE9BQUE7Q0FBQTtBQUN4QixJQUFXLHFCQUFZLENBQUEsV0FBQSxPQUFBLEtBQUE7QUFDdkIsSUFBQyx3QkFBQTtDQUFBO09BQUE7T0FBQSxPQUFBO0NBQUE7QUFDRCxJQUFXLGtCQUFrQixDQUFDLElBQUk7QUFDbEMsSUFBVyxzQkFBTSxDQUFBLFdBQUEsT0FBQSxLQUFBO0FBQ2pCLElBQUMseUJBQUEsQ0FBQSxXQUFBLE9BQUEsYUFBQTtBQUNELElBQVcsMEJBQTBCO0NBQUM7T0FBTztPQUFBLE9BQUE7Q0FBQTtBQUM3QyxJQUFXLDBCQUFHLENBQUEsV0FBQSxPQUFBLGFBQUE7Ozs7QUNuQmQsSUFBVyx1QkFBWSxDQUFBLElBQUE7QUFDdkIsSUFBSSxjQUFjLENBQUMsV0FBQyxhQUFBO0FBQ3BCLElBQVcsYUFBYTtDQUFBO09BQUE7T0FBQSxPQUFBO09BQUE7Q0FBQTtBQUN4QixJQUFDLDJCQUFBO0NBQUE7T0FBQTtPQUFBLE9BQUE7T0FBQTtDQUFBO0FBQ0QsSUFBVyw0QkFBVztDQUFBO09BQUE7T0FBQSxPQUFBO09BQUE7Q0FBQTtBQUN0QixJQUFXLHFCQUFrQixDQUFBLFdBQUEscUJBQUE7QUFDN0IsSUFBVyxtQkFBUyxDQUFBLFdBQUEsT0FBQSxhQUFBO0FBQ3BCLElBQVcsZ0NBQWEsQ0FBQSxXQUFBLE9BQUEsY0FBQTtBQUN4QixJQUFXLG1CQUFpQixDQUFBLFdBQUEsT0FBQSxhQUFBO0FBQzVCLElBQUEsNkJBQUEsQ0FBQSxXQUFBLE9BQUEsS0FBQTtBQUNBLElBQVcsb0JBQW9CO0NBQUM7T0FBVztPQUFpQyxPQUFFO0NBQUE7QUFDOUUsSUFBVyxzQkFBVTtDQUFBO09BQUE7T0FBQSxPQUFBO0NBQUE7QUFDckIsSUFBQyx5QkFBQSxDQUFBLFdBQUEsT0FBQSxhQUFBO0FBQ0QsSUFBVyx5QkFBeUIsQ0FBQyxXQUFXLE9BQVEsYUFBYTtBQUNyRSxJQUFXLG9CQUFhO0NBQUE7T0FBQTtPQUFBO09BQUEsT0FBQTtDQUFBIn0=
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { OrgAnalyticsGoogleAnalyticsConfig, OrgConfig } from "./orgConfigResults--dAwtw3W.js";
|
|
2
|
+
import { FeatureFlagService } from "./featureFlagService-5wdmW02z.js";
|
|
3
|
+
import { BrowserClient, EnrichmentPlugin } from "@amplitude/analytics-types";
|
|
4
|
+
|
|
5
|
+
//#region src/adapters/amplitude/amplitudeAdapter.d.ts
|
|
6
|
+
declare enum SpiffyMetricsEventName {
|
|
7
|
+
BundleLoaded = "Bundle Loaded",
|
|
8
|
+
ChatLiveAgentBtnClick = "Chat Live Agent Btn Click",
|
|
9
|
+
ChatFloatingButtonVisible = "Chat Floating Button Visible",
|
|
10
|
+
ChatComponentVisible = "Chat Component Visible",
|
|
11
|
+
ChatComponentExpanded = "Chat Component Expanded",
|
|
12
|
+
ChatComponentCollapsed = "Chat Component Collapsed",
|
|
13
|
+
ChatUserMessageInput = "Chat User Message Input",
|
|
14
|
+
ChatSuggestionClicked = "Chat Suggestion Clicked",
|
|
15
|
+
ChatAssistantResponse = "Chat Assistant Response",
|
|
16
|
+
ProductCardClicked = "Product Card Clicked",
|
|
17
|
+
ProductReviewCardClicked = "Product Review Card Clicked",
|
|
18
|
+
AddToCartClicked = "Add to Cart Clicked",
|
|
19
|
+
PromptCardClicked = "Prompt Card Clicked",
|
|
20
|
+
SupportedEvent = "Supported Event",
|
|
21
|
+
SearchBackToResponseClicked = "Search Back to Response Clicked",
|
|
22
|
+
PerformanceMetrics = "Performance Metrics",
|
|
23
|
+
SearchBarClicked = "Search Bar Clicked",
|
|
24
|
+
OrderLookupStarted = "Order Lookup Started",
|
|
25
|
+
OrderLookupFormSubmitted = "Order Lookup Form Submitted",
|
|
26
|
+
SearchComponentVisible = "Search Component Visible",
|
|
27
|
+
GlobalSearchPromptClicked = "Global Search Prompt Clicked",
|
|
28
|
+
// This is the scrolling list of suggestion buttons in global search
|
|
29
|
+
SearchInputStarted = "Search Input Started",
|
|
30
|
+
SearchQuerySubmitted = "Search Query Submitted",
|
|
31
|
+
SearchResultsViewed = "Search Results Viewed",
|
|
32
|
+
SearchTimeToFirstClick = "Search Time to First Click",
|
|
33
|
+
SearchZeroResultsRate = "Search Zero Results Rate",
|
|
34
|
+
SearchFilterClicked = "Search Filter Clicked",
|
|
35
|
+
SearchSortClicked = "Search Sort Clicked",
|
|
36
|
+
}
|
|
37
|
+
declare class AmplitudeAdapter {
|
|
38
|
+
private readonly userId;
|
|
39
|
+
private readonly orgConfig;
|
|
40
|
+
private readonly featureFlagService;
|
|
41
|
+
private readonly orgGaConfig?;
|
|
42
|
+
private underlyingAmplitudeClient;
|
|
43
|
+
private internalEventTrackingEnrichment;
|
|
44
|
+
private supplementalDefaultProps;
|
|
45
|
+
constructor(userId: string, orgConfig: OrgConfig, featureFlagService: FeatureFlagService, orgGaConfig?: OrgAnalyticsGoogleAnalyticsConfig | undefined);
|
|
46
|
+
init(): void;
|
|
47
|
+
getUnderlyingAmplitudeClient(): BrowserClient | undefined;
|
|
48
|
+
getSupplementalDefaultProps(): Record<string, unknown>;
|
|
49
|
+
setSupplementalDefaultProps(supplementalDefaultProps: Record<string, unknown>): void;
|
|
50
|
+
getEventTrackingEnrichment(): EnrichmentPlugin;
|
|
51
|
+
amplitudeSessionReplayInit(): boolean;
|
|
52
|
+
createUnderlyingClient(): BrowserClient;
|
|
53
|
+
getDefaultTrackingProps(): Record<string, unknown>;
|
|
54
|
+
/**
|
|
55
|
+
* Prefixes the event properties sent to Amplitude with the event name to prevent event-level
|
|
56
|
+
* property names from clashing with app-level property names. Event properties will be in the
|
|
57
|
+
* format of `event_name.property_name`.
|
|
58
|
+
*
|
|
59
|
+
* @param eventName - The name of the event to prefix the properties for.
|
|
60
|
+
* @param eventProps - The event properties to prefix.
|
|
61
|
+
*
|
|
62
|
+
* @returns The prefixed properties.
|
|
63
|
+
*/
|
|
64
|
+
private eventPropsToPrefixedEventProps;
|
|
65
|
+
static trackEvent: ({
|
|
66
|
+
eventName,
|
|
67
|
+
eventProps,
|
|
68
|
+
eventGroups,
|
|
69
|
+
alsoSendToGoogleAnalytics
|
|
70
|
+
}: {
|
|
71
|
+
eventName: SpiffyMetricsEventName;
|
|
72
|
+
eventProps?: Record<string, unknown>;
|
|
73
|
+
eventGroups?: Record<string, unknown>;
|
|
74
|
+
alsoSendToGoogleAnalytics?: boolean;
|
|
75
|
+
}) => Promise<void>;
|
|
76
|
+
static amplitudeSafeString(input: string | undefined): string | null;
|
|
77
|
+
static getSingletonInstanceOf(): AmplitudeAdapter;
|
|
78
|
+
}
|
|
79
|
+
//#endregion
|
|
80
|
+
//#region src/adapters/amplitude/stubAmplitudeAdapter.d.ts
|
|
81
|
+
declare class StubAmplitudeAdapter extends AmplitudeAdapter {
|
|
82
|
+
constructor();
|
|
83
|
+
init: () => void;
|
|
84
|
+
getUnderlyingAmplitudeClient: () => BrowserClient | undefined;
|
|
85
|
+
getSupplementalDefaultProps: () => Record<string, unknown>;
|
|
86
|
+
setSupplementalDefaultProps: () => void;
|
|
87
|
+
getEventTrackingEnrichment: () => EnrichmentPlugin;
|
|
88
|
+
amplitudeSessionReplayInit: () => boolean;
|
|
89
|
+
createUnderlyingClient: () => BrowserClient;
|
|
90
|
+
getDefaultTrackingProps: () => Record<string, unknown>;
|
|
91
|
+
trackEvent: () => Promise<void>;
|
|
92
|
+
}
|
|
93
|
+
//#endregion
|
|
94
|
+
export { AmplitudeAdapter, SpiffyMetricsEventName, StubAmplitudeAdapter };
|
|
95
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgtTUZiUFE4SmkuZC50cyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi9zcmMvYWRhcHRlcnMvYW1wbGl0dWRlL2FtcGxpdHVkZUFkYXB0ZXIuZC50cyIsIi4uL3NyYy9hZGFwdGVycy9hbXBsaXR1ZGUvc3R1YkFtcGxpdHVkZUFkYXB0ZXIuZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPcmdDb25maWcgfSBmcm9tIFwic3JjL2FwcGxpY2F0aW9uL21vZGVscy9hcGkvb3JnQ29uZmlnUmVzdWx0c1wiO1xuaW1wb3J0IHsgRmVhdHVyZUZsYWdTZXJ2aWNlIH0gZnJvbSBcInNyYy9hcHBsaWNhdGlvbi9zZXJ2aWNlL2ZlYXR1cmVGbGFnU2VydmljZVwiO1xuaW1wb3J0IHsgT3JnQW5hbHl0aWNzR29vZ2xlQW5hbHl0aWNzQ29uZmlnIH0gZnJvbSBcInNyYy9hcHBsaWNhdGlvbi9tb2RlbHMvYXBpL29yZ0FuYWx5dGljc0NvbmZpZ1wiO1xuaW1wb3J0IHR5cGUgeyBCcm93c2VyQ2xpZW50LCBFbnJpY2htZW50UGx1Z2luIH0gZnJvbSBcIkBhbXBsaXR1ZGUvYW5hbHl0aWNzLXR5cGVzXCI7XG5leHBvcnQgZGVjbGFyZSBlbnVtIFNwaWZmeU1ldHJpY3NFdmVudE5hbWUge1xuICAgIEJ1bmRsZUxvYWRlZCA9IFwiQnVuZGxlIExvYWRlZFwiLFxuICAgIENoYXRMaXZlQWdlbnRCdG5DbGljayA9IFwiQ2hhdCBMaXZlIEFnZW50IEJ0biBDbGlja1wiLFxuICAgIENoYXRGbG9hdGluZ0J1dHRvblZpc2libGUgPSBcIkNoYXQgRmxvYXRpbmcgQnV0dG9uIFZpc2libGVcIixcbiAgICBDaGF0Q29tcG9uZW50VmlzaWJsZSA9IFwiQ2hhdCBDb21wb25lbnQgVmlzaWJsZVwiLFxuICAgIENoYXRDb21wb25lbnRFeHBhbmRlZCA9IFwiQ2hhdCBDb21wb25lbnQgRXhwYW5kZWRcIixcbiAgICBDaGF0Q29tcG9uZW50Q29sbGFwc2VkID0gXCJDaGF0IENvbXBvbmVudCBDb2xsYXBzZWRcIixcbiAgICBDaGF0VXNlck1lc3NhZ2VJbnB1dCA9IFwiQ2hhdCBVc2VyIE1lc3NhZ2UgSW5wdXRcIixcbiAgICBDaGF0U3VnZ2VzdGlvbkNsaWNrZWQgPSBcIkNoYXQgU3VnZ2VzdGlvbiBDbGlja2VkXCIsXG4gICAgQ2hhdEFzc2lzdGFudFJlc3BvbnNlID0gXCJDaGF0IEFzc2lzdGFudCBSZXNwb25zZVwiLFxuICAgIFByb2R1Y3RDYXJkQ2xpY2tlZCA9IFwiUHJvZHVjdCBDYXJkIENsaWNrZWRcIixcbiAgICBQcm9kdWN0UmV2aWV3Q2FyZENsaWNrZWQgPSBcIlByb2R1Y3QgUmV2aWV3IENhcmQgQ2xpY2tlZFwiLFxuICAgIEFkZFRvQ2FydENsaWNrZWQgPSBcIkFkZCB0byBDYXJ0IENsaWNrZWRcIixcbiAgICBQcm9tcHRDYXJkQ2xpY2tlZCA9IFwiUHJvbXB0IENhcmQgQ2xpY2tlZFwiLFxuICAgIFN1cHBvcnRlZEV2ZW50ID0gXCJTdXBwb3J0ZWQgRXZlbnRcIixcbiAgICBTZWFyY2hCYWNrVG9SZXNwb25zZUNsaWNrZWQgPSBcIlNlYXJjaCBCYWNrIHRvIFJlc3BvbnNlIENsaWNrZWRcIixcbiAgICBQZXJmb3JtYW5jZU1ldHJpY3MgPSBcIlBlcmZvcm1hbmNlIE1ldHJpY3NcIixcbiAgICBTZWFyY2hCYXJDbGlja2VkID0gXCJTZWFyY2ggQmFyIENsaWNrZWRcIixcbiAgICBPcmRlckxvb2t1cFN0YXJ0ZWQgPSBcIk9yZGVyIExvb2t1cCBTdGFydGVkXCIsXG4gICAgT3JkZXJMb29rdXBGb3JtU3VibWl0dGVkID0gXCJPcmRlciBMb29rdXAgRm9ybSBTdWJtaXR0ZWRcIixcbiAgICBTZWFyY2hDb21wb25lbnRWaXNpYmxlID0gXCJTZWFyY2ggQ29tcG9uZW50IFZpc2libGVcIixcbiAgICBHbG9iYWxTZWFyY2hQcm9tcHRDbGlja2VkID0gXCJHbG9iYWwgU2VhcmNoIFByb21wdCBDbGlja2VkXCIsLy8gVGhpcyBpcyB0aGUgc2Nyb2xsaW5nIGxpc3Qgb2Ygc3VnZ2VzdGlvbiBidXR0b25zIGluIGdsb2JhbCBzZWFyY2hcbiAgICBTZWFyY2hJbnB1dFN0YXJ0ZWQgPSBcIlNlYXJjaCBJbnB1dCBTdGFydGVkXCIsXG4gICAgU2VhcmNoUXVlcnlTdWJtaXR0ZWQgPSBcIlNlYXJjaCBRdWVyeSBTdWJtaXR0ZWRcIixcbiAgICBTZWFyY2hSZXN1bHRzVmlld2VkID0gXCJTZWFyY2ggUmVzdWx0cyBWaWV3ZWRcIixcbiAgICBTZWFyY2hUaW1lVG9GaXJzdENsaWNrID0gXCJTZWFyY2ggVGltZSB0byBGaXJzdCBDbGlja1wiLFxuICAgIFNlYXJjaFplcm9SZXN1bHRzUmF0ZSA9IFwiU2VhcmNoIFplcm8gUmVzdWx0cyBSYXRlXCIsXG4gICAgU2VhcmNoRmlsdGVyQ2xpY2tlZCA9IFwiU2VhcmNoIEZpbHRlciBDbGlja2VkXCIsXG4gICAgU2VhcmNoU29ydENsaWNrZWQgPSBcIlNlYXJjaCBTb3J0IENsaWNrZWRcIlxufVxuZGVjbGFyZSBjbGFzcyBBbXBsaXR1ZGVBZGFwdGVyIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHVzZXJJZDtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9yZ0NvbmZpZztcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZlYXR1cmVGbGFnU2VydmljZTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9yZ0dhQ29uZmlnPztcbiAgICBwcml2YXRlIHVuZGVybHlpbmdBbXBsaXR1ZGVDbGllbnQ7XG4gICAgcHJpdmF0ZSBpbnRlcm5hbEV2ZW50VHJhY2tpbmdFbnJpY2htZW50O1xuICAgIHByaXZhdGUgc3VwcGxlbWVudGFsRGVmYXVsdFByb3BzO1xuICAgIGNvbnN0cnVjdG9yKHVzZXJJZDogc3RyaW5nLCBvcmdDb25maWc6IE9yZ0NvbmZpZywgZmVhdHVyZUZsYWdTZXJ2aWNlOiBGZWF0dXJlRmxhZ1NlcnZpY2UsIG9yZ0dhQ29uZmlnPzogT3JnQW5hbHl0aWNzR29vZ2xlQW5hbHl0aWNzQ29uZmlnIHwgdW5kZWZpbmVkKTtcbiAgICBpbml0KCk6IHZvaWQ7XG4gICAgZ2V0VW5kZXJseWluZ0FtcGxpdHVkZUNsaWVudCgpOiBCcm93c2VyQ2xpZW50IHwgdW5kZWZpbmVkO1xuICAgIGdldFN1cHBsZW1lbnRhbERlZmF1bHRQcm9wcygpOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICBzZXRTdXBwbGVtZW50YWxEZWZhdWx0UHJvcHMoc3VwcGxlbWVudGFsRGVmYXVsdFByb3BzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IHZvaWQ7XG4gICAgZ2V0RXZlbnRUcmFja2luZ0VucmljaG1lbnQoKTogRW5yaWNobWVudFBsdWdpbjtcbiAgICBhbXBsaXR1ZGVTZXNzaW9uUmVwbGF5SW5pdCgpOiBib29sZWFuO1xuICAgIGNyZWF0ZVVuZGVybHlpbmdDbGllbnQoKTogQnJvd3NlckNsaWVudDtcbiAgICBnZXREZWZhdWx0VHJhY2tpbmdQcm9wcygpOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICAvKipcbiAgICAgKiBQcmVmaXhlcyB0aGUgZXZlbnQgcHJvcGVydGllcyBzZW50IHRvIEFtcGxpdHVkZSB3aXRoIHRoZSBldmVudCBuYW1lIHRvIHByZXZlbnQgZXZlbnQtbGV2ZWxcbiAgICAgKiBwcm9wZXJ0eSBuYW1lcyBmcm9tIGNsYXNoaW5nIHdpdGggYXBwLWxldmVsIHByb3BlcnR5IG5hbWVzLiBFdmVudCBwcm9wZXJ0aWVzIHdpbGwgYmUgaW4gdGhlXG4gICAgICogZm9ybWF0IG9mIGBldmVudF9uYW1lLnByb3BlcnR5X25hbWVgLlxuICAgICAqXG4gICAgICogQHBhcmFtIGV2ZW50TmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBldmVudCB0byBwcmVmaXggdGhlIHByb3BlcnRpZXMgZm9yLlxuICAgICAqIEBwYXJhbSBldmVudFByb3BzIC0gVGhlIGV2ZW50IHByb3BlcnRpZXMgdG8gcHJlZml4LlxuICAgICAqXG4gICAgICogQHJldHVybnMgVGhlIHByZWZpeGVkIHByb3BlcnRpZXMuXG4gICAgICovXG4gICAgcHJpdmF0ZSBldmVudFByb3BzVG9QcmVmaXhlZEV2ZW50UHJvcHM7XG4gICAgc3RhdGljIHRyYWNrRXZlbnQ6ICh7IGV2ZW50TmFtZSwgZXZlbnRQcm9wcywgZXZlbnRHcm91cHMsIGFsc29TZW5kVG9Hb29nbGVBbmFseXRpY3MsIH06IHtcbiAgICAgICAgZXZlbnROYW1lOiBTcGlmZnlNZXRyaWNzRXZlbnROYW1lO1xuICAgICAgICBldmVudFByb3BzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgICAgIGV2ZW50R3JvdXBzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgICAgIGFsc29TZW5kVG9Hb29nbGVBbmFseXRpY3M/OiBib29sZWFuO1xuICAgIH0pID0+IFByb21pc2U8dm9pZD47XG4gICAgc3RhdGljIGFtcGxpdHVkZVNhZmVTdHJpbmcoaW5wdXQ6IHN0cmluZyB8IHVuZGVmaW5lZCk6IHN0cmluZyB8IG51bGw7XG4gICAgc3RhdGljIGdldFNpbmdsZXRvbkluc3RhbmNlT2YoKTogQW1wbGl0dWRlQWRhcHRlcjtcbn1cbmV4cG9ydCB7IEFtcGxpdHVkZUFkYXB0ZXIgfTtcbiIsImltcG9ydCB7IEFtcGxpdHVkZUFkYXB0ZXIgfSBmcm9tICdzcmMvYWRhcHRlcnMvYW1wbGl0dWRlJztcbmltcG9ydCB0eXBlIHsgQnJvd3NlckNsaWVudCwgRW5yaWNobWVudFBsdWdpbiB9IGZyb20gJ0BhbXBsaXR1ZGUvYW5hbHl0aWNzLXR5cGVzJztcbmV4cG9ydCBkZWNsYXJlIGNsYXNzIFN0dWJBbXBsaXR1ZGVBZGFwdGVyIGV4dGVuZHMgQW1wbGl0dWRlQWRhcHRlciB7XG4gICAgY29uc3RydWN0b3IoKTtcbiAgICBpbml0OiAoKSA9PiB2b2lkO1xuICAgIGdldFVuZGVybHlpbmdBbXBsaXR1ZGVDbGllbnQ6ICgpID0+IEJyb3dzZXJDbGllbnQgfCB1bmRlZmluZWQ7XG4gICAgZ2V0U3VwcGxlbWVudGFsRGVmYXVsdFByb3BzOiAoKSA9PiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICBzZXRTdXBwbGVtZW50YWxEZWZhdWx0UHJvcHM6ICgpID0+IHZvaWQ7XG4gICAgZ2V0RXZlbnRUcmFja2luZ0VucmljaG1lbnQ6ICgpID0+IEVucmljaG1lbnRQbHVnaW47XG4gICAgYW1wbGl0dWRlU2Vzc2lvblJlcGxheUluaXQ6ICgpID0+IGJvb2xlYW47XG4gICAgY3JlYXRlVW5kZXJseWluZ0NsaWVudDogKCkgPT4gQnJvd3NlckNsaWVudDtcbiAgICBnZXREZWZhdWx0VHJhY2tpbmdQcm9wczogKCkgPT4gUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgdHJhY2tFdmVudDogKCkgPT4gUHJvbWlzZTx2b2lkPjtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFJQSxJQUFXLHlCQUF5QixDQUFDLElBQUk7QUFDekMsSUFBSSxtQkFBbUI7Q0FBQztPQUFVO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtDQUFBOzs7O0FDSGxDLElBQVcsdUJBQXVCO0NBQUM7T0FBVztPQUFxQjtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7Q0FBQSJ9
|