{"version":3,"sources":["webpack:///./src/constants/transaction-types.ts","webpack:///./src/state/ads/action-types.js","webpack:///./src/apps/syi/services/event-broadcaster.js","webpack:///./src/apps/syi/state/templates-api.ts","webpack:///./src/state/bank-id/reducer.ts","webpack:///./src/apps/syi/state/constants.ts","webpack:///./src/state/ui/api.js","webpack:///./src/state/ui/actions.js","webpack:///./src/state/services/shipping-complaint-api.ts","webpack:///./src/blueprint/theme/logos/maestro_vertical.svg","webpack:///./src/blueprint/theme/logos/mastercard_vertical.svg","webpack:///./src/blueprint/theme/logos/visa.svg","webpack:///./src/blueprint/theme/logos/google-pay.svg","webpack:///./src/blueprint/theme/logos/apple-pay.svg","webpack:///./src/components/payment-method/payment-method-logo.module.scss","webpack:///./src/components/payment-method/payment-method-logo.jsx","webpack:///./src/apps/syi/services/user-data.js","webpack:///./src/state/member/api.js","webpack:///./src/state/member/initial-state.js","webpack:///./src/state/member/actions.js","webpack:///./src/state/services/shopping-api.ts","webpack:///./src/state/random/reducer.js","webpack:///./src/apps/syi/services/publish-service.js","webpack:///./src/apps/syi/state/actions/helpers/server-validation-error-helper.js","webpack:///./src/apps/syi/state/actions/draft-tracking.js","webpack:///./src/apps/syi/state/actions/draft-actions.js","webpack:///./src/blueprint/theme/icons2/close.svg","webpack:///./src/state/categories/reducer.js","webpack:///./src/state/views/invoice-checkout/reducer.js","webpack:///./src/apps/tradera/components/vip/bidding/bid-details.tsx","webpack:///./src/state/views/report-item/constants.ts","webpack:///./src/apps/syi/state/actions/syi-actions.js","webpack:///./src/apps/my-tradera/app/helpers/formats.js","webpack:///./src/apps/tradera/components/vip/helpers/analytics.js","webpack:///./src/apps/syi/services/navigation-service.js","webpack:///./src/state/language/initial-state.ts","webpack:///./src/state/language/reducer.ts","webpack:///./src/state/views/shipping-checkout/selector.js","webpack:///./src/services/storage-service.ts","webpack:///./src/blueprint/theme/logos/paynova.svg","webpack:///./src/apps/my-tradera/app/state/reducers/cookies.js","webpack:///./src/apps/my-tradera/app/state/selectors/router.js","webpack:///./src/apps/syi/state/reducers/short-description.js","webpack:///./src/state/member/action-types.js","webpack:///./src/legacy/static/components/tradera/logo.jsx","webpack:///./src/apps/my-tradera/app/helpers/list-helper.js","webpack:///./src/apps/my-tradera/app/state/actions/my-tradera-items.js","webpack:///./src/state/views/invoice-checkout/utils.js","webpack:///./src/state/views/invoice-checkout/actions.js","webpack:///./src/apps/my-tradera/app/helpers/item-actions-helper.js","webpack:///./src/apps/syi/state/actions/error-actions.js","webpack:///./src/apps/syi/state/actions/image-actions.js","webpack:///./src/apps/syi/services/native-app-service.js","webpack:///./src/apps/my-tradera/app/state/reducers/my-tradera.js","webpack:///./src/state/wish-list-nudge/reducer.js","webpack:///./src/apps/syi/state/actions/attributes-actions.js","webpack:///./src/state/services/discover-api.ts","webpack:///./src/state/services/helpers/search-mapper.js","webpack:///./src/utils/api-rtk.js","webpack:///./src/state/items/api.js","webpack:///./src/state/views/start-page/item-queries.ts","webpack:///./src/state/views/shipping-calculator/reducer.js","webpack:///./src/state/views/view-item/constants.ts","webpack:///./src/state/language/api.js","webpack:///./src/state/language/actions.js","webpack:///./src/blueprint/theme/logos/klarna.svg","webpack:///./src/state/views/start-page/constants.ts","webpack:///./src/state/views/start-page/configuration-mapper.ts","webpack:///./src/apps/my-tradera/app/state/payments/reducer.js","webpack:///./src/apps/my-tradera/app/state/payments/initial-state.js","webpack:///./src/apps/my-tradera/app/data/shipping-providers.ts","webpack:///./src/state/shipping-region/reducer.ts","webpack:///./src/apps/my-tradera/app/constants/column-definitions.ts","webpack:///./src/apps/tradera/components/vip/helpers/time-left.jsx","webpack:///./src/state/state-initializer.js","webpack:///./src/state/init-data/actions.js","webpack:///./src/apps/my-tradera/shipping-checkout/payment/braintree-drop-in.jsx","webpack:///./src/apps/my-tradera/app/state/selectors/item-labels.js","webpack:///./src/apps/my-tradera/app/state/selectors/filters.js","webpack:///./src/state/views/profile/reducer.js","webpack:///./src/state/views/profile/initial-state.js","webpack:///./src/hooks/use-fetch-data.js","webpack:///./src/apps/syi/state/actions/short-description-actions.js","webpack:///./src/apps/my-tradera/app/helpers/enums.js","webpack:///./src/state/views/view-item/api.js","webpack:///./src/utils/login.ts","webpack:///./src/state/ads/actions.js","webpack:///./src/state/ads/initial-state.js","webpack:///./src/apps/syi/state/actions/shipping-actions.js","webpack:///./src/apps/syi/services/shipping-provider-service.js","webpack:///./src/apps/my-tradera/app/helpers/item-helper.js","webpack:///./src/backend/http/webapi-rtk.ts","webpack:///./src/state/services/utils/webapi-base-query.ts","webpack:///./src/apps/tradera/components/discover/helpers/filter-states.js","webpack:///./src/state/discover/helpers.js","webpack:///./src/state/discover/reducer.js","webpack:///./src/state/views/checkout/reducer.js","webpack:///./src/apps/syi/state/selectors/category-selectors.js","webpack:///./src/apps/syi/services/campaign-service.ts","webpack:///./src/apps/syi/state/actions/campaign-code-actions.ts","webpack:///./src/apps/syi/state/selectors/syi.js","webpack:///./src/state/views/view-item/selectors.js","webpack:///./src/state/discover/actions.js","webpack:///./src/state/discover/initial-state.js","webpack:///./src/state/views/invoice-checkout/selector.js","webpack:///./src/state/views/invoice-checkout/initial-state.js","webpack:///./src/state/views/shipping-checkout/api.js","webpack:///./src/utils/allowed-buyer-region.js","webpack:///./src/apps/tradera/components/discover/helpers/search-gtm.js","webpack:///./src/apps/my-tradera/app/constants/text-strings.ts","webpack:///./src/utils/set-nested-object-value.js","webpack:///./src/constants/sentry-redux-filters.js","webpack:///./src/utils/sentry/redux.js","webpack:///./src/apps/syi/services/scribe.js","webpack:///./src/state/services/fees-api.js","webpack:///./src/apps/syi/state/reducers/shipping/shipping-selectors.js","webpack:///./src/apps/syi/state/reducers/charity.js","webpack:///./src/state/views/shipping-calculator/selectors.js","webpack:///./src/helpers/checkout-errors.ts","webpack:///./src/state/views/cart/reducer.js","webpack:///./src/state/views/cart/initial-state.js","webpack:///./src/apps/my-tradera/app/utils/init-data.js","webpack:///./src/apps/my-tradera/app/utils/fetch.js","webpack:///./src/apps/my-tradera/app/components/listing/item/info-item-components.ts","webpack:///./src/helpers/shipping-validation-errors.ts","webpack:///./src/state/views/shipping-checkout/actions.js","webpack:///./src/apps/syi/state/actions/fees-actions.js","webpack:///./src/utils/storage.js","webpack:///./src/apps/syi/state/selectors/attribute-selectors.js","webpack:///./src/apps/my-tradera/app/state/reducers/filters.js","webpack:///./src/apps/syi/state/drafts-api.ts","webpack:///./src/state/services/types/webapi-member-generated.ts","webpack:///./src/utils/cache.js","webpack:///./src/state/views/shipping-checkout/initial-state.js","webpack:///./src/state/views/view-item/reducer.js","webpack:///./src/state/services/webapi-api.ts","webpack:///./src/apps/my-tradera/app/helpers/messaging-helpers.js","webpack:///./src/apps/syi/state/actions/price-actions.js","webpack:///./src/state/multi-currency/reducer.js","webpack:///./src/blueprint/theme/icons2/loading.svg","webpack:///./src/apps/tradera/components/vip/bidding/animate-on-value-change.module.scss","webpack:///./src/apps/tradera/components/vip/bidding/animate-on-value-change.jsx","webpack:///./src/state/init-data/action-types.js","webpack:///./src/apps/syi/services/config.js","webpack:///./src/apps/tradera/components/start-page/content-types.js","webpack:///./src/state/ui/helpers.js","webpack:///./src/apps/my-tradera/app/state/action-types/purchase-order.js","webpack:///./src/state/shipping-region/initial-state.js","webpack:///./src/state/shipping-region/actions.js","webpack:///./src/state/shipping-region/api.js","webpack:///./src/utils/string.js","webpack:///./src/state/personalisation/reducer.js","webpack:///./src/apps/syi/state/actions/category-actions.js","webpack:///./src/localization/map-language-code-to-language-key.js","webpack:///./src/blueprint/theme/logos/swish_horizontal.svg","webpack:///./src/constants/storage.js","webpack:///./src/apps/syi/state/reducers/buyer-region.js","webpack:///./src/state/services/utils/http-client-base-query.ts","webpack:///./src/apps/my-tradera/app/state/actions/scroll-to-initial-scroll.js","webpack:///./src/apps/my-tradera/app/helpers/commands-helper.js","webpack:///./src/apps/my-tradera/app/state/selectors/seller-commands.js","webpack:///./src/apps/my-tradera/app/state/selectors/buyer-commands.js","webpack:///./src/apps/my-tradera/app/state/reducers/my-tradera-items.js","webpack:///./src/components/loader/loader.jsx","webpack:///./src/apps/syi/services/draft-service.js","webpack:///./src/apps/syi/utils/throttled-action.js","webpack:///./src/apps/my-tradera/app/state/selectors/item-columns.js","webpack:///./src/apps/syi/state/reducers/item-duration.ts","webpack:///./src/apps/my-tradera/app/constants/urls.js","webpack:///./src/apps/tradera/components/discover/constants/constants.ts","webpack:///./src/apps/my-tradera/app/components/leave-feedback/constants.ts","webpack:///./src/components/payment-method/payment-method-name.jsx","webpack:///./src/state/personalisation/helpers.ts","webpack:///./src/apps/syi/state/actions/charity-actions.js","webpack:///./src/state/views/report-item/reducer.js","webpack:///./src/state/views/invoice-checkout/api.js","webpack:///./src/state/ui/initial-state.ts","webpack:///./src/state/items/initial-state.js","webpack:///./src/state/items/actions.js","webpack:///./src/localization/countries.js","webpack:///./src/state/bank-id/modal-state.ts","webpack:///./src/apps/my-tradera/app/components/settings/selling/item-localization.tsx","webpack:///./src/apps/syi/state/helpers/image-helpers.js","webpack:///./src/state/views/tradera-shop/reducer.ts","webpack:///./src/state/services/cart-api.ts","webpack:///./src/hooks/use-format-utc-date-in-swedish-timezone.js","webpack:///./src/apps/my-tradera/app/constants/page.ts","webpack:///./src/apps/my-tradera/app/helpers/route-helper.js","webpack:///./src/apps/my-tradera/pick-list2/services/pick-list-item-updater.ts","webpack:///./src/apps/my-tradera/pick-list2/services/pick-list-api.ts","webpack:///./src/state/discover/api.js","webpack:///./src/state/items/action-types.js","webpack:///./src/state/views/shipping-checkout/reducer.js","webpack:///./src/apps/syi/state/selectors/shipping-selectors.js","webpack:///./src/constants/paid-statuses.ts","webpack:///./src/state/views/shipping-checkout/utils.js","webpack:///./src/localization/localized-price.tsx","webpack:///./src/apps/my-tradera/invoice-checkout/payment/braintree-drop-in.jsx","webpack:///./src/state/multi-currency/actions.js","webpack:///./src/apps/my-tradera/app/utils/feature-toggles.js","webpack:///./src/state/page/initial-state.js","webpack:///./src/state/page/actions.js","webpack:///./src/apps/syi/services/image-upload-service.js","webpack:///./src/state/views/report-item/actions.js","webpack:///./src/state/views/report-item/api.js","webpack:///./src/state/services/helpers/saved-searches-storage.js","webpack:///./src/apps/syi/state/actions/long-description-actions.js","webpack:///./src/state/views/checkout/initial-state.js","webpack:///./src/apps/my-tradera/saved-searches/saved-searches-api.ts","webpack:///./src/utils/history.ts","webpack:///./src/state/services/touchweb-search-api.ts","webpack:///./src/blueprint/theme/logos/paypal.svg","webpack:///./src/apps/my-tradera/app/helpers/item-actions-helper-seller.js","webpack:///./src/apps/my-tradera/app/helpers/item-actions-helper-buyer.js","webpack:///./src/apps/my-tradera/app/state/selectors/item-actions.js","webpack:///./src/apps/my-tradera/app/state/selectors/items.js","webpack:///./src/state/views/tradera-shop/selectors.ts","webpack:///./src/components/atoms/button/button.module.scss","webpack:///./src/components/atoms/button/button.tsx","webpack:///./src/apps/tradera/components/vip/api/vip-api-constants.ts","webpack:///./src/state/services/touchweb-syi-api.ts","webpack:///./src/utils/assert.js","webpack:///./src/apps/syi/state/reducers/fees.js","webpack:///./src/state/items/selectors.js","webpack:///./src/apps/my-tradera/app/helpers/payloads/purchase-order.js","webpack:///./src/apps/my-tradera/app/state/actions/purchase-order.js","webpack:///./src/apps/my-tradera/app/state/payouts/reducer.js","webpack:///./src/apps/my-tradera/app/state/payouts/initial-state.js","webpack:///./src/state/views/view-item/item-state-helper.ts","webpack:///./src/components/portals/loading-portal.jsx","webpack:///./src/state/push-notifications/constants.ts","webpack:///./src/state/page/action-types.js","webpack:///./src/components/bid-history/bid-history-api.ts","webpack:///./src/state/views/start-page/types.ts","webpack:///./src/state/views/start-page/initial-state.ts","webpack:///./src/state/views/start-page/reducer.js","webpack:///./src/state/ui/reducer.ts","webpack:///./src/state/push-notifications/helpers.js","webpack:///./src/state/push-notifications/push-notifications-slice.js","webpack:///./src/state/configure-store.tsx","webpack:///./src/constants/ui.ts","webpack:///./src/state/ads/reducer.js","webpack:///./src/state/init-data/reducer.js","webpack:///./src/state/items/reducer.js","webpack:///./src/state/member/reducer.js","webpack:///./src/state/page/reducer.js","webpack:///./src/apps/syi/state/reducers/draft.js","webpack:///./src/apps/syi/state/reducers/category.js","webpack:///./src/apps/syi/state/reducers/syi.js","webpack:///./src/apps/syi/state/reducers/errors.js","webpack:///./src/apps/syi/state/reducers/shipping/validate.js","webpack:///./src/apps/syi/state/reducers/shipping/shipping-reducer.js","webpack:///./src/apps/syi/state/reducers/template.js","webpack:///./src/apps/syi/state/reducers/item-condition.js","webpack:///./src/apps/syi/state/reducers/campaign-code.js","webpack:///./src/apps/syi/state/reducers/extra-features.js","webpack:///./src/apps/syi/state/reducers/images.js","webpack:///./src/apps/syi/state/reducers/price.js","webpack:///./src/apps/syi/state/reducers/edit.js","webpack:///./src/apps/syi/state/reducers/long-description.js","webpack:///./src/apps/syi/state/reducers/scroll.js","webpack:///./src/apps/syi/state/reducers/charity-campaign.js","webpack:///./src/apps/syi/state/reducers/attributes-helpers.js","webpack:///./src/apps/syi/state/reducers/attributes.js","webpack:///./src/apps/syi/state/reducers/member-consent.js","webpack:///./src/apps/syi/state/reducers/preview.js","webpack:///./src/apps/syi/state/reducer.js","webpack:///./src/apps/syi/state/reducers/language.js","webpack:///./src/apps/my-tradera/app/state/reducers/purchase-order.js","webpack:///./src/state/views/my-tradera/reducer.js","webpack:///./src/state/views/reducer.js","webpack:///./src/state/status/reducer.js","webpack:///./src/state/request/reducer.ts","webpack:///./src/state/root-reducer.ts","webpack:///./src/hooks/use-day-js.js","webpack:///./src/constants/item-types.ts","webpack:///./src/state/views/tradera-shop/actions.js","webpack:///./src/state/views/tradera-shop/api.js"],"names":["TransactionTypes","INITIALIZE","SET_TCF_LOADED","observable","Tags","templatesApi","createApi","reducerPath","baseQuery","tagTypes","Object","keys","endpoints","builder","deleteTemplate","mutation","invalidatesTags","TEMPLATES_LIST","query","parameters","url","method","body","loadTemplates","providesTags","useDeleteTemplateMutation","useLoadTemplatesQuery","util","initialState","errorCode","modalState","CLOSED","autoStartToken","bankIdSlice","createSlice","name","reducers","reset","_objectSpread","completed","state","COMPLETED","setError","_ref","payload","ERROR","inProgress","_ref2","startAuth","IN_PROGRESS","close","_bankIdSlice$actions","actions","DRAFT_REASON","NEW_ITEM","CHANGE_ITEM","CHANGE_ITEM_WITH_BIDS","COPY_OTHER_MEMBERS_ITEM","COPY_OWN_ITEM","SELL_SIMILAR_ITEM","RESTART_ITEM","PURE_BIN_CATEGORY_IDS","getMessagingNotifications","touchWebClient","get","cancelTokenId","axiosConfigs","authenticated","signIn","dispatch","getStore","environment","featureSwitches","openProfileMenu","redirectUrl","closeModal","window","location","getReturnUrl","fetchSystemMessages","async","getState","_getState2","isLoggedIn","member","systemMessages","cache","read","CACHE_KEYS","SYSTEM_MESSAGES","fetchedMessages","webApiClient","then","finalizeResponse","catch","handleError","API_ERRORS","IGNORE_ME","data","items","forEach","type","write","setSystemMessages","error","remove","message","LOGGED_OUT","logOut","CANCELLED","NETWORK","TIMEOUT","logger","openQuickViewAction","openedFrom","restOfPayload","_objectWithoutProperties","_excluded","ui","quickView","loading","loadingQuickView","getItem","item","itemId","_data$imageFormats","imageFormats","map","i","alt","shortDescription","openQuickView","gtm","closeQuickView","openNotificationOptinModalAction","modalType","gaLabel","title","description","tagGroups","pushNotifications","enabled","shownModals","openNotificationOptinModal","updateItemLayout","value","defaultCookie","DEFAULT_COOKIES","expires","length","cookieUtil","createCookie","key","e","itemLayout","updateSiteLayout","siteLayout","fetchMessagingNotifications","messagingNotifications","MESSAGING_BADGES","_await$getMessagingNo","updateMessagingNotifications","reloadSystemMessages","logOutAction","shippingComplaintApi","getShippingComplaintData","shipmentId","urlParameters","URLSearchParams","isServer","saveShippingComplaintData","request","onQueryStarted","queryFulfilled","patchResult","updateQueryData","formData","response","submittedDate","undo","useGetShippingComplaintDataQuery","useSaveShippingComplaintDataMutation","_extends","assign","bind","target","arguments","source","prototype","hasOwnProperty","call","apply","this","styles","props","React","createElement","xmlns","viewBox","d","fill","_ref$styles","className","PaymentMethodLogo","paymentMethod","displayText","visaLogo","_jsx","style","padding","children","VisaLogo","mastercardLogo","_jsxs","MaestroLogo","MasterCardLogo","marginRight","PaynovaLogo","PaypalLogo","SwishLogo","ApplePayLogo","GooglePayLogo","KlarnaLogo","TraderaLogo","sellingGlobalData","getGeoPublicApiLocationUrl","geoPublicBaseUrl","search","originalUrl","forceGeoDevMatch","match","FORCE_GEO_DEV","forceGeoDevCookie","readCookie","initData","cleanedMemberAlias","facebookId","memberAlias","memberDetailedSellerRatingAverage","memberCountry","memberCountryCodeIso2","memberEmail","memberEmailMd5","memberEmailSha256","memberFirstName","memberId","memberHeroImage","memberLastName","memberBirthdate","memberTown","hasTraderaPay","isCompany","nullifyUndefinedProperties","geolocation","initialize","actionTypes","getInitialState","setIsFetchingGeolocation","isFetchingGeolocation","SET_IS_FETCHING_GEOLOCATION","setMemberHeroImage","SET_MEMBER_HERO_IMAGE","getGeolocation","Promise","reject","_utilizeCancelToken","utilizeCancelToken","cancel","cancelToken","axios","fetchGeolocation","variables","PUBLIC_GEO_PUBLIC_API_BASE_URL","SET_GEOLOCATION","setCurrencyIfNotChosen","currency","removeShippingCountryCookieIfSwedish","ABORTED","FAILED_LOADING_GEOLOCATION","shoppingApi","webApi","injectEndpoints","getCommissionFeeForItem","qs","stringify","purchaseOffer","result","arg","webApiTags","Item","id","markAsPaid","purchaseOrderId","declinePurchaseOffer","Offer","markAsUnavailable","acceptPurchaseOffer","makeCounterOffer","declineCounterOffer","acceptCounterOffer","getOffersBySellerAndBuyerAndItem","purchaseOffers","getDiscount","getDiscountStatus","discountId","setDiscount","usePurchaseOfferMutation","useMarkAsPaidMutation","useDeclinePurchaseOfferMutation","useAcceptPurchaseOfferMutation","useGetOffersBySellerAndBuyerAndItemQuery","useGetCommissionFeeForItemQuery","useMarkAsUnavailableMutation","useGetDiscountQuery","useGetDiscountStatusQuery","useSetDiscountMutation","useMakeCounterOfferMutation","useDeclineCounterOfferMutation","useAcceptCounterOfferMutation","slice","randomNumber","setRandomNumber","isNextJs","Error","Math","random","reducer","draft","hasTraderaPayConsent","post","shippingOptions","filter","descriptionLanguageCodeIso2","handleServerValidationError","errors","t","invalidImageErrorCodes","imageErrors","includes","nonImageErrors","imageErrorDisplayTexts","handleInvalidImages","translator","displayTexts","invalidImageCount","split","imageActions","removeImageWithId","push","count","nonImageErrorDisplayTexts","translateErrorCode","errorDisplayText","concat","join","trim","reasonDisplayText","trackAttributeSuggestions","draftSelectedAttributes","suggestedAttributes","suggestionEngine","isNewDraft","publishedId","comparer","a","b","localeCompare","attribute","_attribute$values","_suggestedAttributes$","_suggestedAttributes$2","label","backingField","values","sort","find","sa","trackAction","trackAddonBeforePublish","addOnfeatureName","setDraft","params","undefined","_draft$charity","selectMemberCountryCodeIso2","fromCountry","userData","shippingFromCountryCodeIso2","getDefaultShippingFromCountryCodeIso2","shippingActions","setShippingFromCountry","syiActions","disableAutoSave","draftReason","ensureDraftReason","getSyiSlice","draftId","isChangeItem","setIsEditOfPublishedItem","hideAllErrors","setAllowedBuyerRegion","allowedBuyerRegion","setAvailableAllowedBuyerRegions","setItemCondition","itemCondition","campaignCodeActions","setInitialCampaignCode","campaignCode","campaignCodeId","campaignCodeDescription","shortDescriptionActions","setShortDescription","setDescriptionLanguageCodeIso2","selectedDescriptionLanguageCodeIso2","getDefaultSelectedDescriptionLanguageCodeIso2","languageCodeIso2","selectIsFeatureEnabled","setCurrency","setResellPartner","resellPartner","categoryActions","setDraftCategory","categoryId","categoryPath","setDurationDays","durationDays","setCustomEndTime","customEndTime","longDescriptionActions","setLongDescriptionFromDraft","longDescription","setDisplayPromoted","displayPromoted","setDisplayHighlighted","displayHighlighted","setDraftImages","images","resetImageAttributesSuggestions","priceActions","setFromDraft","openingBid","fixedPrice","reservePrice","charity","charityId","vat","selectFeatureSwitches","setCharityAndFetchInfo","setCharityFromDraftAndFetchInfo","setAttributesFromDraft","getAndSetShippingOptionsByWeight","enableAutoSave","scribe","sendSessionStart","setIsLoading","isLoading","loadDraft","draftService","navigationService","goToStart","finally","canBeResumed","hasShortDescription","hasLongDescription","hasImage","Array","isArray","some","image","imageUrl","feesActions","updatePrices","hasResponseErrorCode","responseOrNull","arrayOfErrorCodesToCheck","triggerSave","saveDraft","buildDraftFromState","version","setDraftUrlWithoutReload","setDraftVersion","invalidateTags","DRAFT_LIST","responseJSON","contexts","syiSave","status","setUsedAllowed","isAllowed","condition","updateItemConditionRestrictionForCategory","isUsedAllowed","categoryRestriction","syi","allowUsed","loadImagesFromDraft","browserDraftImageUrls","slots","Boolean","serverDraftImages","serverDraftImageUrls","imagesHaveChanged","x","updateDraftCanBeResumed","imageSlots","setRestart","restart","setReference","reference","publish","_state$extraFeatures","extraFeatures","price","splitTestGroups","itemDuration","String","dayjs","diff","creationStart","publishService","memberConsent","draftSelectedCategoryAttributes","attributeValues","termAttributeValues","suggestedCategoryAttributes","selectCategorySuggestedAttributes","draftSelectedColorAttributes","suggestedColorAttributes","selectImageToColorSuggestedAttributes","trackShippingRecommendations","draftCategoryId","draftShippingOptions","recommendedWeight","shippingRecommendations","selectedShippingWeight","weight","firstSelectedShippingOption","productId","providerId","secondSelectedShippingOption","recommendedShippingOptionForRecommendedWeight","sr","recommendedShippingOptionForSelectedWeight","shippingProductId","shippingProvider","selectRecommendedWeight","selectShippingRecommendations","goToPublished","syiPublish","toggleModal","loadDraftIfMissing","resolve","loadDefaultDraft","resetCharityAndShippingInfo","resetSelected","loadDefaultTemplateDraft","template","templateId","useDraftAsTemplate","resetItemCondition","publishAdditionalDescription","text","resetDraft","fillRule","clipRule","list","topLevelCategories","_initData$allCategori","allCategories","href","isFetching","categoriesSlice","requestCategoryList","receiveCategoryList","action","handleCategoryListError","_categoriesSlice$acti","invoiceCheckoutSlice","setInvoiceData","invoice","setSelectedPayment","payment","selectedPayment","paymentMethodData","checkoutSummary","hasError","setPaymentMethodData","_ref3","setPaymentPaying","_ref4","isPaying","setCheckoutSummaryFetching","_ref5","isUpdating","setCheckoutSummaryHasError","_ref6","modal","MODAL_STATUS","openPaymentModal","_ref7","open","paymentAttemptId","closePaymentModal","START","resetOngoingPaymentAttempt","ongoingPaymentAttempt","invoicePaymentAttemptId","extraReducers","addCase","getInvoice","fulfilled","_ref8","sellerPhoneNumber","sellerPhone","pending","rejected","getPaymentOptions","_ref9","paymentOptions","_invoiceCheckoutSlice","openNonIntegratedModal","closeNonIntegratedModal","setTermsAccepted","BidDetails","bidCount","endDate","hasEnded","isEnding","itemState","leadingBidAmount","onShowBids","timeLeftText","isTimeLeftBelowWarningLimit","finalPrice","useTranslator","formatUtcDateInSwedishTimeZone","useFormatUtcDateInSwedishTimeZone","amountDetails","getAmountDetails","amountTitle","amountValue","AnimateOnValueChange","trigger","LocalizedPrice","amount","timeTitle","timeValue","ITEM_STATES","ENDED_CANCELLED","TimeLeft","bidTitle","Button","theme","onClick","preventDefault","bidValue","showBidCount","ENDED_AUCTION_BIN_BOUGHT_AS_BIN","leadingBid","hasBids","ENDED_AUCTION_WITH_WINNING_BID","VIEW_STATES","FORM","ITEM_ENDED","LOADING","SUBMIT_FAILED","SUBMIT_SUCCESS","SUBMITTING","REASONS","NONE","SUSPECTED_FRAUD","ITEM_IS_A_COUNTERFEIT","BRAND_NAME_MISUSE","WRONG_CATEGORY","PROHIBITED_SHIPPINGvOR_PAYMEN_TMETHOD","OTHER_PROHIBITED_ITEM","OTHER_PROHIBITED_SETUP","OTHER","setIsPropertyEditMode","isPropertyEditMode","setCreationType","creationType","setCreationStart","date","showAllErrors","isEditOfPublishedItem","setCategoryRestriction","restriction","draftActions","modalId","showModal","modalData","hideModal","formatPrice","format","formatMe","toLocaleString","symbol","symbolPosition","decimal","comma","parseInt","CATEGORIES","category","GtmService","trackBiddingConfirmBid","trackBiddingShowEnterBid","trackBiddingShowConfirmBid","trackBiddingShowChangeMaxBid","trackBiddingQuickBid","trackBiddingNewMaxBid","trackNewBid","trackNewMaxBid","trackOpenCheckoutBin","trackConfirmBin","trackPayBin","trackKeepShopping","trackBinError","trackBidPlaced","validationCode","isMaxBid","potentialBidChange","bidId","transactionTotal","BID_VALIDATION_RESULTS","LEADING_BIDDER","HIGHER_BIDDER_EXISTS","event","placedBidId","trackWishlist","isAdding","trackAddToCart","sellerMemberAlias","trackLinkClickAndGotoUrl","defaultClientId","getGaTrackingData","isGoogleAnalyticsImprovedTrackingEnabled","googleAnalyticsTrackingId","isHybridAppContextForIos","isHybridAppContextForAndroid","appInstanceId","sessionId","_window2","_window2$ga","_window2$ga$getAll","_window2$ga$getAll$ca","trackingPlatform","_window","_window$ga","_window$ga$getAll","_window$ga$getAll$cal","clientId","ga","getAll","trackingIds","platform","gaData","getHistory","toLocalizedRiotUrl","goToVIP","toLocalizedUrl","history","replaceState","document","getInitialPreferredLanguage","availableLanguages","defaultLanguage","availableIsoCodes","lang","indexOf","l","getLanguageDisplayName","capitalize","Intl","DisplayNames","of","languageSlice","_state","preferred","available","automaticTranslationPreference","initServerLanguage","_ref$preferredLanguag","preferredLanguage","DEFAULT_LANGUAGE","_ref$memberCountryCod","_ref$automaticTransla","displayName","SUPPORTED_LANGUAGES","getInitialServerLanguage","setPreferred","_state$available","language","setAutomaticTranslationPreference","_languageSlice$action","selectShippingConfirmation","views","shippingCheckout","shippingConfirmation","selectShippingCheckout","selectShipping","shipping","selectItemWithoutShipment","itemWithoutShipment","selectShipment","_state$views$shipping","_state$views$shipping2","shipments","shipment","selectShippingPayment","selectCheckoutSummary","selectSellerPhoneNumber","ResultSet","constructor","_result","orderByTimestamp","orderByValue","orderByExpire","_orderBy","orderProp","StorageService","namespace","options","datastore","localStore","getDataSafe","store","setItem","encodedKey","encodeURI","toLowerCase","purge","Date","getTime","set","timestamp","newData","removeExpired","prop","fetch","rows","decodeURI","flush","clearByPrefix","clipPath","cookiesSlice","defaultState","defaultCookies","MYTRADERA_DEFAULT_COOKIES","val","default","setCookie","prepare","_MYTRADERA_DEFAULT_CO","selectCookiesState","myTradera","cookies","selectRouterState","router","validationError","isDescriptionLanguageCodeIso2ChangeAvailable","isDenmarkCountryCode","getValidationError","validate","shortDescriptionSlice","resetShortDescription","_shortDescriptionSlic","DEFAULT_ACTION","width","height","otherProps","role","propTypes","defaultProps","memo","listActions","listType","selectedFilterBar","PAGE_LIST_TYPES","SELLER_ACTIVE","isCheckboxActive","bidInformation","bulkCssClass","bulkAction","PAGE_BULK_ACTIONS","ACTIVE_CANCEL","icon","heading","itemCount","confirmButtonText","cancelButtonText","dismissable","idType","SELLER_NOT_SOLD","listing","hasRestartedChild","isArchived","UNSOLD_RESTART","wide","headingCSS","messageAlignment","cssClass","BUYER_ACTIVE_ITEMS","caller","leadingBidRemoved","leadingBidder","BUYER_SHOW_ACTIVE","_item$caller","reservePriceReached","BUYER_HIDE_ACTIVE","BUYER_PURCHASES","transaction","buyerState","paid","BUYER_MARK_PAID","PURCHASES_SHOW","BUYER_ITEMS_LOST","searching","BUYER_ACTIVE_ITEMS_HIDE","BUYER_ACTIVE_ITEMS_SHOW","UPDATE_ITEMS","COMPLETED_SEARCH","OPEN_MORE","SELECT_ITEM","SELECT_ALL_ITEMS","REMOVE_ITEMS","OPEN_DEL_LISTING_ITEM","REMOVE_ALL_SELECTED","UPDATE_ITEMS_WITH_ERROR","PURCHASE_ORDERS_MARKED_AS_PAID_BY_SELLER","PURCHASE_ORDERS_MARKED_AS_PAID_BY_BUYER","PURCHASE_ORDERS_UNMARKED_AS_PAID_BY_SELLER","PURCHASE_ORDERS_UNMARKED_AS_PAID_BY_BUYER","PURCHASE_ORDERS_HIDDEN_BY_SELLER","PURCHASE_ORDERS_HIDDEN_BY_BUYER","PURCHASE_ORDERS_SHOWN_BY_SELLER","PURCHASE_ORDERS_SHOWN_BY_BUYER","ITEM_HIDDEN","ITEM_SHOWN","PURCHASE_ORDERS_MARKED_AS_SHIPPED_BY_SELLER","PURCHASE_ORDERS_UNMARKED_AS_SHIPPED_BY_SELLER","PURCHASE_ORDERS_UNMARKED_AS_SHIPPING_BOOKED","PURCHASE_ORDERS_MARKED_AS_SHIPPING_BOOKED","SHIPMENT_DELETED","FEEDBACK_LEFT_BY_SELLER","FEEDBACK_LEFT_BY_BUYER","RESET_ITEMS","SET_RESTARTED","SET_NEW_SHIPPING_PRICE","updateItems","page","listViewType","memberMessagingParticipation","resetSelectedCheckboxes","removeItems","itemIds","updateURL","locationDescriptor","pathname","getAvailableQueryParams","replace","purchaseOrdersMarkAsPaidBySeller","purchaseOrderIds","messagingParticipation","ids","purchaseOrdersMarkAsPaidByBuyer","purchaseOrdersUnmarkAsPaidBySeller","purchaseOrdersUnmarkAsPaidByBuyer","transactionsMarkAsShippedBySeller","transactionIds","transactionsUnmarkAsShippedBySeller","resetMyTraderaItems","changeParamsForBackend","skip","paging","size","newPaging","take","cancelItem","endItems","buyerActiveItemsHide","buyerActiveItemsShow","buyerActiveItemsHideItems","URLS","JSON","buyerActiveItemsShowItems","openMore","pageName","Analytics","trackEvent","runSearch","shouldScrollToInitialScroll","waitForBackend","dontModifyHistory","featureToggles","isMyTraderaElasticEnabled","endPoint","searchUrl","purchaseOrderActions","resetPurchaseOrder","modifiers","selectFiltersState","routeBefore","routeAfter","selectMyTraderaState","scrollToInitialScroll","setTimeout","selectItem","selectAllItems","select","markPurchaseOrdersAsPaidBySeller","SELLER_MARK_PAID","unmarkPurchaseOrdersAsPaidBySeller","SELLER_UNMARK_PAID","rebuildList","existingState","selectMyTraderaItemsState","itemsByID","itemsOrderedByID","newState","currentTime","statistics","LIST_VIEW_TYPE","sellerUnhideTransaction","SELLER_SHOW","purchaseOrdersShownBySeller","sellerHideTransaction","SELLER_HIDE","purchaseOrdersHiddenBySeller","sellerUnhideUnsold","UNSOLDSHOW","unsoldItemsShown","sellerHideUnsold","UNSOLDHIDE","unsoldItemsHidden","sellingMarkAsShippingBooked","booked","transactionsMarkAsShippingBooked","sellingMarkAsShipped","MARK_SHIPPED","sellingUnmarkAsShipped","UNMARK_SHIPPED","sellingUnmarkAsShippingBooked","UNMARK_BOOKED","transactionsUnmarkAsShippingBooked","sellingDeleteShipment","DELETE_SHIPMENT","transactionDeleteShipment","feedbackLeftBySeller","transactionId","feedbackLeftByBuyer","markPurchaseOrdersAsPaidByBuyer","unmarkPurchaseOrdersAsPaidByBuyer","BUYER_UNMARK_PAID","buyerUnhideTransaction","BUYER_SHOW","transactionsShownByBuyer","buyerHideTransaction","BUYER_HIDE","transactionsHiddenByBuyer","setRestarted","setNewShippingPrice","newPrice","getUuid","uuidv4","createAsyncThunk","thunkAPI","invoiceId","api","rejectWithValue","_await$api$getPayment","PAYMENT_STATUS","containsNonPrintableAscii","createThreeDSecureParameters","_selectSellerPhoneNum","currentState","totalCost","selectInvoiceCheckout","amountOwed","selectMemberFirstName","firstName","selectMemberLastName","lastName","buyerAddress","countryCodeAlpha2","phoneNumber","email","selectMemberEmail","billingAddress","givenName","surname","additionalInformation","shippingGivenName","shippingSurname","shippingAddress","initBraintreePayment","paymentOption","onComplete","requestOptions","PAYMENT_OPTIONS","VISA_MASTERCARD","GOOGLEPAY","threeDSecure","paymentInstance","CHECKOUT_ERRORS","NO_PAYMENT_METHOD","requestPaymentMethod","initPayment","selectInvoiceOngoingPayment","_selectInvoicePayment","selectInvoicePayment","utils","initializePayment","checkPaymentStatus","cancelPayment","poll","getPaymentStatus","MODAL_TYPE","SWISH_HANDEL","completePayment","DECLINED","delay","types","LINK","EXTERNAL_LINK","EXTERNAL_LINK_ICON","DISPATCH","DISABLED","getBodyStringFromIDs","bodyString","pos","formHeaders","restartItemsSummary","ACTIVE_ITEMS_RESTART_SUMMARY","ACTIVE_END_ITEMS","headers","showPurchases","showActive","hideActive","restartItems","UNSOLD_RESTART_ITEMS","markPaid","propertyName","draftImageIds","_image$draftImage","draftImage","imageId","n","throttledFetchImageAttributeSuggestions","removeImageInSlot","slotIndex","splice","newSlots","getDefaultImageData","handleAttributeSuggestionsForSlot","setUploadFailed","errorMessage","setUploading","numberOfSlots","prepareUpload","selectedFilesCount","freeSlotCount","errorActions","numberOfFilesToUpload","min","MissingDraftId","setIsUploadingWithApp","isUploadingWithApp","cancelMobileUpload","draftSocket","disconnect","imageIds","slot","isListingImage","fetchImageAttributeSuggestions","setUploadedImageInNextFreeSlot","freeSlotIndex","setUploadedImageInImageSlot","changeImagePosition","from","to","len","rotateImage","rotationDegrees","setImageThunk","fileInput","flow","_fileInput$files","files","imageUploadService","uploadFromFileInput","nativeAppOpenAddPhotoThunk","saveNowIfQueued","_getSyiSlice","_getSyiSlice$draft","currentDraftId","openAddPhoto","fetchImagesFromDraft","isCombinedShippingEnabled","isSearching","splitTests","mobileMenu","mobileActions","messagingModal","MODAL_STATE","src","participating","recipientId","changeShippingModal","setDiscountModal","setCombinedShippingEnabled","TEXT_STRINGS","ERRORS","GENERIC","openModal","setBreakPoint","breakpoint","setMemberMessagingParticipation","openChangeShipping","receiverCountry","closeChangeShipping","openSetDiscount","_ref10","closeSetDiscount","setTranslatedRouteInformation","_ref11","_slice$actions","wishListNudgeHidden","addDisplayCount","WISH_LIST_NOTIFICATION_HIDDEN","displayCount","WISH_LIST_NOTIFICATION_DISPLAY_COUNT","Infinity","eraseCookie","hideWishListNudge","wishListNudge","suggestionsThrottle","ThrottledAction","imageToColorsThrottle","INPUT_TYPE_MAP","Color","Dropdown","transformServerOption","serverOption","sortOrder","isActive","warningLabel","transformServerAttribute","possibleValues","inputType","isMultiSelect","maxNumberOfValues","minNumberOfValues","numberOfValuesSelected","shouldTranslateValues","preserveOptionsOrder","resetSelectedAttributes","fetchForCategory","selectPreferredLanguage","attributeDefinitions","updateCategoryAttributesOptionsStatuses","validateCampaignCode","updateAttribute","attributeId","optionValue","activate","onUpdated","_selectCategoryAttrib","selectCategoryAttributes","resetAttribute","throttledFetchCategoryAttributeSuggestions","execute","fetchCategoryAttributeSuggestions","_getSyiSlice$category","_getSyiSlice2","_getSyiSlice2$attribu","categoryAttributes","attributes","hasColorAttribute","paramKeyPart","_response$data","_response$data$colorV","colorValues","cv","color","splitTestGroup","splitTestEnabled","extractorType","getAttributeSuggestionExtractor","transformServerAttributeSuggestion","suggestionsExtractorType","splitTest","attributeSuggestion","getRecommendationsQueryParams","userLanguage","shippingCountryCode","maxResults","toUpperCase","pageNumber","getFavouriteSellersQueryParams","getSellerSuggestionsQueryParams","getTrendingSellersQueryParams","SavedSearchesSorting","getSavedSearchesQueryParams","isSortingRequired","Sorted","Unsorted","getInstagramQueryParams","getLastChanceQueryParams","discoverApi","baseQueryForWishListableItems","getBrandSuggestions","extraOptions","getWishListableItems","getFavouriteSellers","_ref3$maxItemsPerFavo","maxItemsPerFavouriteSeller","_ref3$maxItems","maxItems","_ref3$maxFavouriteSel","maxFavouriteSellers","getIdeas","getInstagramFeed","getLastChance","shippingCountryCodeIso2","automaticTranslationPreferred","limit","getSellerSuggestions","_ref5$maxSellers","maxSellers","getTrendingSellers","_ref6$maxItems","_ref6$maxItemsPerSell","maxItemsPerSeller","_ref6$maxSellers","getTrendingSearches","transformResponse","searches","getSavedSearches","_meta","savedSearches","savedSearch","dataFromLocalStorage","getSavedSearch","totalItems","sortSavedSearchesResponseOnLatestTotalCount","getRecommendations","getIndependentSearchResult","getCategoryResult","getSavedSearchResults","meta","_response$response","_response$response$re","storeSavedSearch","itemsMatched","getSellpyRecommendations","_params$maxResults","getItemsByIds","getStartPageWishListItems","useGetBrandSuggestionsQuery","useGetIdeasQuery","useGetInstagramFeedQuery","useGetIndependentSearchResultQuery","useGetCategoryResultQuery","useGetLastChanceQuery","useGetSavedSearchesQuery","useGetSavedSearchResultsMutation","useGetRecommendationsQuery","useGetTrendingSearchesQuery","useGetFavouriteSellersQuery","useGetSellpyRecommendationsQuery","useGetItemsByIdsQuery","useGetStartPageWishListItemsQuery","isUnauthorized","fetchBaseQuery","baseUrl","prepareHeaders","defaultJsonRequestHeaders","headerName","credentials","baseQueryWithReauth","args","responseStatus","getLanguage","logError","reload","withCredentials","postWishlistItem","add","checkResponseLoggedOut","getItemDiscountQuota","postItemSettings","onDisplay","discountRate","QueryType","topSearches","itemQueries","queryType","Category","queryParams","sortBy","SortBy","Relevance","fromNumberOfBids","toNumberOfBids","Search","q","queryScope","itemStatus","fromPrice","toPrice","itemType","Popular","AddedOn","defaultBox","weightMap","enabledCountries","shippingCalculatorSlice","box","availableFromCountryCodes","availableToCountryCodes","weightUnit","weightSliderValue","isLoadingShippingProducts","shippingProviders","providerName","service","internationalProductsGroupedByFromThenToCountry","SE","showError","initializeShippingCalculator","defaultCountry","selectedToCountry","selectedFromCountry","setSelectedToCountry","setSelectedFromCountry","setDefaultValuesOnBox","updateFilter","_action$payload","filterName","setWeightFilter","setWeightUnit","beginFetchingShippingProducts","setShowError","setShippingProducts","internationalShippingCalculatorProducts","reduce","prev","product","fromCountryCodeIso2","toCountryCodeIso2","Set","setDefaultValues","fetchShippingProducts","shippingCalculator","_selectBox","selectBox","selectIsBoxValid","axiosWithTokenRefresh","ENDPOINTS","INTERNATIONAL_SHIPPING_CALCULATOR","lengthInMillimeters","heightInMillimeters","widthInMillimeters","weightInGrams","_shippingCalculatorSl","VIEW_ITEM_STATES","saveLanguageSetting","code","setPreferredLanguage","selectIsLoggedIn","locationUtils","reloadLocalized","DEFAULT_START_PAGE_HEADER_CONFIG","alternativeText","backgroundImage","isCampaignMode","webpageUrl","DEFAULT_LOGGED_IN_START_PAGE_CONFIG","header","content","WISH_LIST","SAVED_SEARCHES","FAVOURITE_SELLERS","LAST_CHANCE","RECENTLY_VIEWED","DEFAULT_LOGGED_OUT_START_PAGE_CONFIG","mapConfig","config","contentLoggedIn","contentLoggedOut","restOfConfig","paymentsSlice","bankIdVerification","shouldInitBankID","bankIdInProgress","completeText","verificationText","bankIdErrorMessage","errorCount","requireBankIdVerification","swishDetails","newNumber","verifyCode","isValid","bankAccountDetails","newClearingNumber","newAccountNumber","bankAccountSaved","bankUnknown","isMemberSetForPayout","tink","tinkOnboarding","iframeUrl","shouldInitTink","accounts","account","updateStatus","processCorrelationId","maskedAccountNumber","paypalDetails","emailAddress","payouts","pagination","paginationLinks","initDataLoaded","_payload$initData$pag","pageSpecificData","swishApp2AppMember","braintreeMember","onboardToHyperwalletProblems","tinkLink","hyperwalletPayeeVerification","number","suggestedPhoneNumber","maskedBankAccountNumber","isBankAccountSupplied","updateBankClearingNumber","updateBankAccountNumber","deleteBankAccount","bankError","bankNotMatched","ignoreBankNotMatched","initTink","cancelTink","setTinkFetching","setTinkBankAccounts","selectTinkBankAccount","tinkCompleted","tinkError","skipBankIdAuth","bankIdCompleted","beginBankIdAuth","_ref12","cancelBankIdAuth","_ref13","setBankIdError","_ref14","incrementBankIdError","payoutsLoaded","_ref15","setUpdateStatus","_ref16","finishUpdate","_ref17","setPayPalDetails","_ref18","_paymentsSlice$action","SHIPPING_OPTIONS","SCHENKER","logoImgUrl","POSTNORD","POSTNORD_PARCEL","POSTNORD_STAMP","POSTNORD_STAMP_DENMARK","DHL","BUSSGODS","BRING_DENMARK","ALTERNATIVE","ALTERNATIVE_DENMARK","TAKE_AWAY","TAKE_AWAY_ONLY","NOT_SPECIFIED","isStampProvider","provider","obj","shippingProvidersMap","shippingRegionSlice","setShippingCountry","countryCodeIso2","shippingCountry","shippingCountryCookieValue","expireDate","SHIPPING_COUNTRY","setDefaultShippingCountry","setAvailableShippingCountries","availableShippingCountries","shippingCountries","availableShippingCountryCodes","hasLoadedAvailableShippingCountries","isLoadingAvailableShippingCountries","beginLoadingAvailableShippingOptions","dismissLocalizationRegionPicker","regionPickerDismissed","REGION_PICKER_DISMISSED","_shippingRegionSlice$","columns","buyerActiveItemsColumns","Basic","CurrentPrice","MaxBid","Bids","ShippingCost","EndDate","ItemId","buyerItemsLostColumns","sellerActiveColumns","ReservePrice","OwnReference","sellerSoldColumns","TransactionDate","BuyItNow","Normal","sellerUnsoldColumns","buyerPurchasesColumns","_props$className","initializeState","currencies","currencyCode","itemNext","preferredCurrency","addEventListener","setTcfLoaded","initializeUiFromInitData","pushNotificationActions","initLanguage","initPersonalisation","initShippingRegion","initEnvironment","initMember","initInitData","initMultiCurrency","itemActions","pageActions","initStartPage","uiActions","discoverActions","discoverResponse","receiveSearchResults","endpoint","stripItmFromQueryParameters","formatQueryParams","toQueryParameters","viewItemActions","reportItem","handleReportItemModel","traderaShopProduct","handleTraderaShopProduct","DropInSelected","onPaymentMethodRequestable","useCurrentLanguage","shipmentCheckoutId","useSelector","fetchParams","useMemo","_useFetchData","useFetchData","getBraintreeToken","isRejected","isResolved","retryFetch","useEffect","clientToken","initDropIn","dropIn","paymentProvider","PAYPAL","APPLEPAY","updateConfiguration","variant","minHeight","LocalLoader","authorization","container","locale","vaultManager","dataCollector","kount","card","vault","allowVaultCardOverride","vaultCard","getDropInOptions","dropin","create","callback","err","dropinInstance","isPaymentMethodRequestable","on","paymentMethodRequestable","applePay","googlePay","paypal","paymentRequest","total","toString","requiredBillingContactFields","googlePayVersion","merchantId","transactionInfo","totalPriceStatus","totalPrice","allowedPaymentMethods","billingAddressRequired","billingAddressParameters","BraintreeDropIn","selected","useDispatch","_Fragment","checked","onChange","handlePaymentSelected","disabled","htmlFor","PaymentMethodName","getTranslatedImageLabel","labelKey","buyerActiveItemsLabelKeys","RESERVE_PRICE_NOT_REACHED","activeLabelKeys","unsoldLabelKeys","soldLabelKeys","NOT_PAID","purchasesLabelKeys","PAYMENT_PENDING","PAID","DONE","LEADING","OVERBIDDEN","BID_REMOVED","NOT_STARTED","HAS_BIDS","ACTIVE","SOLD","NOT_SOLD","SHIPPING_BOOKED","SHIPPED","FORICBLY_CLOSED","RESTARTED","itemLostLabelKeys","REMOVED","LOST","buyerActiveItemsLabels","reservePriceNotReached","leading","overbidden","bidRemoved","activeLabels","notStarted","active","sold","notSold","soldLabels","notPaid","paymentPending","shippingBooked","shipped","done","unsoldLabels","forciblyClosed","restarted","purchasesLabels","itemLostLabels","lost","removed","itemHasBids","itemHasBidsButReservePriceNotReached","pricing","getActiveLabel","activityType","getActiveActiveLabel","unSold","getUnsoldLabel","closed","getStates","sellerState","feedbackLeft","getBuyerActiveItemsLabel","getSoldLabel","states","paidStatus","PaidStatuses","getPurchasesLabel","getBuyerItemsLostLabel","filters","profileSlice","isTranslationOnDemandDisabled","loadingModel","model","showTranslatedReviews","translatedReviews","translatedReviewsLoading","translatedReviewsLoadingError","setTranslatedReviews","translatedReviewsProviderName","resetTranslatedReview","review","gradeId","setTranslationOnDemandIsDisabled","show","beginLoadingTranslatedReviews","failedLoadingTranslatedReviews","beginLoadingModel","setModel","feedbackItems","feedbackItem","setFeedbackComment","feedbackId","comment","newFeedbackItems","hasReply","isReplyAllowed","reply","_profileSlice$actions","fetchReducer","apiFunction","apiParameter","apiName","_useReducer2","_slicedToArray","useReducer","handleFetch","useCallback","isIdle","selectCategory","getJSValue","True","False","All","setJSValue","true","false","setEnum","getEnum","fetchDescription","getItemApi","preferredLanguageCode","placeBidApi","onLoggedOut","gaTrackingSessionId","bid","serverSecondsLeft","isSuccessful","leadingBidderMemberId","leadingBidMemberAlias","leadingMemberAlias","nextValidBidAmount","nextBidAmount","validationResult","placedBid","sellerMemberId","sellermemberId","startDate","bidInfo","analyticsData","myMaxBidAmount","getItemsFromSeller","getCombinedShippingUpsell","redirectURL","encodeURIComponent","hash","isTcfLoaded","setShippingOptionSelected","setOfferTakeaway","offerTakeaway","setOfferShipping","offerShipping","setShippingOptionCost","cost","primary","selectItemIdFromDraft","_await$getShippingPro","getShippingProvidersByWeight","fromCountryCode","productsPerWeightSpan","selectSelectedShippingOptions","setShippingOptionVariant","setShippingRecommendations","_await$getShippingRec","shippingRecommendationsClient","getShippingRecommendations","categoryShippingRecommendations","toggleShippingOption","generateSumOfDiscounts","discounts","discount","currentAmount","getBidCount","getSumOfDiscounts","getMaxBid","maxBid","getTimeLeft","timeLeft","timeleft","isTimeLeftCritical","critical","getShippingCost","translateShippingNames","names","Takeaway","TakeawayLong","TakeawayOnly","SchenkerPrivpak","Alternative","LIST_VIEW_TYPES","BASIC","getShippingLabelWithPrice","shippingItem","shippingType","shippingCost","shouldShowShippingPrice","selectedShipping","isTakeaway","isFreeShipping","STRINGS","SHIPPING_LABELS","FREE_SHIPPING","theOnlyShippingOption","TAKEAWAY","shippingOption","accumulator","currentValue","isNormalListViewType","NORMAL","webapiClientModulePromise","webapiClient","input","isServerState","req","res","pathOrConfig","client","json","serverWebApiBaseQuery","mustHandleWishListableItems","inWishList","handleWishListableItems","getActiveFilterStatesAllowedBuyerRegions","constants","FILTER_STATES_ALLOWED_BUYER_REGIONS","isSwedenCountryCode","SWEDEN","isEuCountryCode","EU","INTERNATIONAL","getDefaultAllowedBuyerRegionsFilter","activeFilters","shippingRegionCountryCodeIso2","normalized","selectedValue","ACTIVE_FILTER_STATES_ITEM_CONDITION","ACTIVE_FILTER_STATES_SELLER_TYPE","ACTIVE_FILTER_STATES_ITEM_STATUS","ACTIVE_FILTER_STATES_ITEM_TYPE","ACTIVE_FILTER_STATES_COUNTY","compressAttributeFilterOptions","attributeFilter","normalize","responseData","_responseData$categor","_responseData$categor2","_responseData$itemsOn","activeBrands","attributeFilters","currentCategoryId","filterCategories","filterPrice","headerText","internalSearch","internalSearchBar","introText","isSavedSearchEmailEnabled","isShopOwnedByCurrentMember","itemsOnDisplay","mainText","reduxContainer","searchLanguages","categoryFilter","aggregated","parameter","normalizeFilters","singleOptionFilters","priceRangeFilter","compressAttributeFilters","requestSearchResults","_payload$result","_payload$endpoint","_payload$queryParams","_payload$shippingRegi","hasResult","handleSearchResultsError","setSingleFilterValue","updateItem","itemData","addItemOnDisplay","removeItemOnDisplay","setCategoryPath","setCurrentCategoryId","setIsFilterOpen","isFilterOpen","checkoutSlice","receiveCheckout","buyerMember","purchaseOrder","sellerMember","shippingInfo","combinedShippingInfo","shippingFeeRule","orderNumber","shippingPriceRange","shippingDiscount","selectedCollectionPoint","collectionPointId","shippingOptionsLoading","receiveShippingOptions","setShippingOptionsLoading","receivePaymentOptions","receiveCollectionPoints","collectionPoints","setFetching","setHasError","setPaymentFetching","setPaymentHasError","setPaymentIsValid","setOrderCalculation","orderCalculation","setBuyerProtection","buyerProtection","setSelectedShipping","setOngoingPaymentAttempt","_ref19","setCombinedShippingInfo","_ref20","setBuyerMember","_ref21","setBuyerMemberAddress","_ref22","address","setCollectionPoint","_ref23","setShippingInfoFetching","_ref24","setCollectionPointSaving","_ref25","savingCollectionPoint","setDropinLoading","_ref26","dropinLoading","_checkoutSlice$action","getCampaignCode","brandAttributeValues","requestData","selectedCategories","selectedBrandAttributes","isCancel","campaignCodeValid","validation","validationDisplayMessage","campaign","campaignCodeMessage","isCustomLengthFeeFree","isUnsoldFeeFree","provisionFactor","discountFactor","maxFeeCap","bannerMobileImageUrl","bannerTabletImageUrl","bannerDesktopImageUrl","reason","CHARITIES","charities","throttledCampaignCodeValidation","delayedValidationTimeoutId","resetCharityCampaign","_getSyiSlice$charityC","charityCampaign","wasForceFreeShipping","forceFreeShipping","disableZeroDayAuctions","resetCampaign","enableRestart","isReadOnly","brandAttribute","option","findBrandAttributeValues","campaignService","_result$provisionFact","commissionPercent","applyCharityFromCampaignCodeId","allowZeroDayAuctions","enableZeroDayAuctions","toggleShowInput","isChecked","clearTimeout","saveTypedCampaignCode","inputCampaignCode","selectShortDescription","selectViewItem","viewItem","selectTranslatedDescription","translatedDescription","selectCurrentDescriptionLanguageCodeIso2","currentDescriptionLanguageCodeIso2","selectItemDetails","itemDetails","selectBreadcrumbs","breadCrumbs","selectItemId","_selectItemDetails","selectBidInfo","selectTranslatedDescriptionState","translatedDescriptionState","selectAllowedBuyerRegion","fetchSearchResults","pageType","onLoaded","getSearchResults","isRedirect","fromCategoryId","toCategoryId","newUrl","replacePartInPath","searchResults","selectShippingRegionCountryCodeIso2","receiveSearchResultsReducerAction","VERSION_MISMATCH","afterReceiveSearchResults","pageMeta","discover","setPageMeta","trackNewSearch","initReducer","_state$discover","metaTitle","discoverTracking","invoiceCheckout","BANK_ID","COMPLETE","CARD","PAYMENT_OPTION_STATUS","AVAILABLE","UNAVAILABLE_DUE_TO_AMOUNT","createShipmentCheckout","deleteShipment","getShippingOptions","toCountryCode","setShipmentDetails","shippingDetails","setShippingAsBooked","setShippingAsShipped","getMemberSoldItemShippingInfo","getExternalAuthData","getShippingConfirmation","shippingCheckoutId","getShippingConfirmationStatus","isInternationalShippingToCountryAllowed","region","isNordicCountryCode","isCountryCode","containsCode","nordicCountryCodes","euCountryCodes","codes","c","c1","c2","GA_EVENT_SAVE_SEARCH","GA_EVENT_SAVE_SEARCH_MODAL","GA_EVENT_SAVE_SEARCH_RELATED","GA_EVENT_SAVE_SEARCH_STICKY","GA_EVENT_SAVE_SEARCH_BANNER","filterNameMappings","sellerType","county","countyBox","shoeTypes","subDepartments","shoeSizes","brandTags","Layout","trackFilter","trackButton","trackPriceFilter","lbl","reverseCategoryPath","reverse","trackGtmEvent","keywords","ga_page_title","NO_SELECTED_SHIPPING","TRACK_REDUX_ACTIONS","SAVE_REDUX_STATE_PATHS","sentryReduxEnhancer","Sentry","actionTransformer","stateTransformer","sentryState","keyString","keyArray","has","setNestedObjectValue","object","keyPathArray","acc","index","array","sendSessionDuration","duration","madeByTemplate","durationMilliSeconds","sendDuration","measuredName","sendIncrement","sendValidationErrors","feesApi","getCommissionFee","useGetCommissionFeeQuery","getSelectedShippingProducts","shippingByWeight","selectedShippingOptions","flatMap","products","isShippingFreeBasedOnCharity","possiblePosten","takeAwayOption","summaryDisplayName","windowOrFallback","_windowOrFallback$loc","_windowOrFallback$loc2","endsWith","queryParamCharityId","_windowOrFallback$loc3","preselectCharity","anonymous","Number","logoUrl","percentageToDonate","isFreeShippingPaidByProvider","freeShippingPaidByProviderName","charitySlice","setCharityId","setCharityInfo","_ref2$payload","setCharityAnonymous","setCharityFromDraft","resetCharity","setCharityShippingInfo","_charitySlice$actions","selectFilterValue","selectWeightUnit","selectWeightSliderValue","selectNormalizedWeight","selectWeightString","selectAvailableShippingProviders","shippingProducts","selectShippingProducts","includedProviders","p","selectIsDifferentFromDefaultBox","selectSelectedCountries","selectAvailableCountryCodes","selectShowError","BANK_ID_CANCEL","DECLINED_PAYNOVA","PERSONAL_ID_INVALID","EMAIL_ADDRESS_INVALID","NotSpecifiedShippingOption","CHECKOUT_ERROR_STRINGS","getCheckoutErrorMessage","cartSlice","merchantPreOrders","setCartData","_cartSlice$actions","initDataEL","getElementById","getAttribute","parse","checkStatus","ID","getInitData","tradVersion","statusCode","parseJSON","dataType","infoItemComponents","resolveMostPreciseTranslationKey","errorKeys","errorTranslationKeys","getOrDefault","errorPrio","DefaultReceiverAddressError","DefaultError","getDefaultErrorKey","errorMap","ReceiverAddress","Shipment","SenderAddress","AgentAddress","ValidatedProperty","Unknown","Street","ZipCode","City","CountryCode","Email","Phone","Length","Width","Height","Weight","Product","Type","Name","Agent","ValidationErrorType","Missing","WrongFormat","NotReal","ZipcodeRouting","NotSupported","NotEnabled","DefaultSenderAddressError","DefaultAgentAddressError","_result$data","toCountry","bringEnabled","postnordEnabled","dhlEnabled","schenkerEnabled","updateShipment","shipmentDetails","mostPreciseTranslationKey","NIL_UUID","mostPreciseErrorKey","updateShippingProvider","receiver","shippingPayload","buildShippingPayload","updateShippingAddress","city","zipCode","street","streetName","createShipment","_selectItemWithoutShi","buyerContactDetails","fullName","town","hasUnSupportedProduct","markAsBooked","markAsShipped","getItemWithoutShipment","pollBookingUrl","pollShippingConfirmationStatus","isLongPolling","iterations","poller","setInterval","clearInterval","_await$api$getShippin2","isBookingComplete","shipmentPaymentAttemptId","featureFees","PossibleFeatures","highlight","rankUp","localStorage","defaultStorage","storage","TEST_KEY","removeItem","testStorage","Map","delete","clear","gdprSettings","GdprSettings","setFilter","hasValueForKey","enabledByGdprSettings","isFunctionalEnabled","getItemsByPrefix","prefix","startsWith","stringifiedLength","STORAGE_KEYS","console","warn","selectSyiAttributes","selectableCategorySuggestedAttributes","imageToColorSuggestedAttributes","resetPageIndex","filterBar","shownFilters","updatePageSize","selectSortChange","sorting","order","changeSortOrder","selectTypeChange","setDateFrom","dateRange","sellerFilters","setDateTo","filterByState","showSelectFiltersDropDown","setSellerFilterBarModifiers","defaults","changePage","resetDateRangeTo","resetDateRangeFrom","resetFilters","changeSearchQuery","searchQuery","selectReservationPriceChange","updateFiltersForSelectedPage","newFilters","defaultFilters","setFiltersFromRouter","buyerFilters","hidden","draftsApi","deleteDrafts","loadDrafts","_response$items","_item$images","useDeleteDraftsMutation","useLoadDraftsQuery","PickListFilterPaidStatus","PickListFilterShippedStatus","keyPrefix","cached","now","ttl","removeAll","expire","expireAll","caches","entries","INVOICE","isDeleting","isCreating","termsAccepted","nonIntegrated","markedAsBooked","markedAsShipped","isShippingFetching","hasShippingError","initialPlaceBidResponse","info","translatedDescriptionStates","DEFAULT","SERVER_ERROR","TRANSLATION_ON_DEMAND_DISABLED","initialBidFormValue","isBidding","categoryItems","shopItems","sellerItems","combinedShippingItems","viewItemState","placeBidResponse","viewItemSlice","resetPlaceBidResponse","resetInitialState","setInitialBidFormValue","setIsRestricted","isRestricted","setIsInternationalWacko","wackoInfo","isInternationalWacko","setItemDetails","mapItemDetails","setPurchaseInfo","purchaseInfo","setBreadCrumbs","setIsBidding","setPlaceBidResponse","_ref9$payload","bidError","setBidInfo","_state$itemDetails","_state$bidInfo","_state$bidInfo2","_state$bidInfo3","_ref10$payload","_state$itemDetails2","currentItemId","bidInfoItemId","isFirstBidInfo","isBinPurchase","transactionType","TRANSACTION_TYPES","BIN","bidStatus","getLeadingBidStatus","existingBidCount","incomingBidCount","newBidInfo","assertNoUndefinedProperties","setMyMaxBidAmount","setItemState","setViewItemState","setServerSecondsLeft","setTranslatedDescription","setCurrentDescriptionLanguageCodeIso2","setTranslationOnDemandDisabled","resetTranslatedDescription","beginLoadingTranslatedDescription","failedLoadingTranslatedDescription","setSellerItems","setCategoryItems","setShopItems","setCombinedShippingItems","img","thumbnail","multiThumbnail","medium","small","normal","smallFit","mediumFit","largeFit","video","handleItemModel","itemModel","previousItemId","setTranslation","maxBidAmount","hasBidsWinnerToBeConfirmed","ENDED","hasStarted","updateItemState","handleNewPage","shippingRegion","preferredLanguageCodeIso2","selectPreferredLanguageCode","disabledForEnglishLangSwedes","isSwedenCountryCodeOrUndefined","areLanguageCodesIso2Equal","selectAutomaticTranslationPreference","shouldTranslateDescriptionOnLoad","translations","additionalDescriptions","shippingTerms","currentItemDetails","currentBidInfo","swedishCategoryPath","contentGroup","getAuctionState","hasWon","hasLeadingBid","isLeading","itemFixedPrice","itemCategory","itemEndDate","getItemState","isCancelled","fetchItemAndBidInfo","shouldResetInititalState","setLoading","setLoaded","_getState$member$memb","ensureCorrectUrlForItem","expectedItemId","canonicalLink","previousBidInfo","hadLeadingBid","hasLostLeadingBid","toggleWishList","forceAdd","inWishListOldValue","wishListItemIds","inWishListNewValue","wishListCountOldValue","wishListCount","wishListCountNewValue","isInteger","analytics","placeBid","existsInWishList","selectExistsInWishList","OFFLINE","updatedItem","setNotValidToBidOrBuyNow","BIDDING_OR_BUYING_OWN_ITEM","_viewItemSlice$action","KycPendingActions","KycQuestionnaire","checkUserMessagingParticipation","sellerId","participates","setUserMessagingParticipation","messagingSettings","setUserMessagingEmailSetting","setting","getMessagingThreadLink","u1","u2","optionsWithDefaults","singleThread","openForm","max","addQueryPrefix","getMessagingPageLink","toIntOrNull","isFinite","isNullOrUndefined","setOpeningBid","setFixedPrice","setReservePrice","setAuctionBinPrice","auctionBinPrice","setReservePriceVisibility","visible","setCharityDonationVisibility","setIsPureBinSelected","isPureBinSelected","setVat","setEditCharity","editCharity","hasOpeningBid","hasFixedPrice","hasReservePrice","hasCharityId","isAuction","isAuctionBin","isPureBin","rootCategoryHasBeenSelected","isPureBinCategory","isFeatureEnabled","resolveCurrency","preferredCurrencyCookieValue","multiCurrencySlice","_payload$currencies","setPreferredCurrency","_multiCurrencySlice$a","_React$useState2","animate","setAnimate","firstUpdate","current","onAnimationEnd","sellingGlobalConfig","maxTemplates","domainNameCategoryId","HEADER","PICKS_FOR_YOU","POPULAR_CATEGORIES","INSTAGRAM_FEED","CATEGORY_LINKS","LAST_SEARCH","DISCOVER_SUGGESTIONS","getSystemMessageAlertCount","InvoiceOverdue","PayoutFailed","PayoutReadyBankAccountMissing","HyperwalletPayeeVerificationRequired","PayoutReadyVerificationRequired","PayoutReadyOutstandingTraderaPayLicense","useIsSiteWidthFull","isExtraLargeDesktop","useMediaQuery","minWidth","BREAKPOINT_SIZES","XL","SITE_LAYOUT","FULL_WIDTH","PURCHASE_ORDER_REQUEST_COMBINED_SHIPPING","PURCHASE_ORDER_SHIPPED","PURCHASE_ORDER_LIST","PURCHASE_ORDER_PAID_STATUS","PURCHASE_ORDER_RESET","PURCHASE_ORDER_DELETE_SHIPMENT","PURCHASE_ORDER_HIDDEN","PURCHASE_ORDERS_SHIPPING_BOOKED","PURCHASE_ORDERS_FEEDBACK_LEFT_BY_SELLER","PURCHASE_ORDERS_FEEDBACK_LEFT_BY_BUYER","isFunctionalCookiesEnabled","hasRegionPickerDismissedCookie","fallbackShippingCountry","updateShippingRegion","isoCode","hasCookie","getAvailableShippingCountries","selectIsLoadingAvailableShippingCountries","selectHasLoadedAvailableShippingCountries","AVAILABLE_SHIPPING_COUNTRIES","availableCountries","country","countryNameEng","removeBannedCountries","onLocalizationShippingRegionSelected","getLanguageFromCountryCode","setPreferredCurrencyThunk","getFallbackShippingCountry","getCountryCodeFromLanguage","initializeFromInitData","brands","recentSearches","personalisationSlice","getRecentSearchesLocalStorage","initializeRecentSearches","setPersonalisedSearches","setPersonalisedSearchesStatus","setRecentSearches","recentSearchIndex","findIndex","unshift","removeRecentSearch","_personalisationSlice","updateCategoryRestrictions","mapLanguageCodeToLanguageKey","languageCode","lokaliseKey","sv","da","de","en","fr","nl","x1","y1","x2","y2","stopColor","offset","transform","COOKIE_NOTIFICATION","ITEMS_CLICK","SAVE_SEARCH_HINT","SEARCH_RECENT","WEB_PUSH_ACCEPTED","WEB_PUSH_SHOWN_MODALS","SELLER_LIST_COMPACT_VIEW","SYI_NEW_LAYOUT_INFO_DISMISSED","SYI_RESELL_SHOWN_FOR_DRAFT_IDS","SYI_DISMISSED_AUCTION_INFO_MODAL","SYI_DISMISSED_HIGH_OPENING_BID_MODAL","SHIPPING_CONFIRMATION_PAGE_DIGITAL_STAMP_MODAL_DISMISSED","SELLER_LIST_MARK_AS_SENT_HINT","FEATURE_MODAL_MAO_ACTIVE","CACHE_MESSAGING_BADGES","CACHE_SYSTEM_MESSAGES","APPLE_ID_USER","USER_PROFILE","HAS_SHOWED_MFA_VERIFICATION_MESSAGE","STORAGE_VALUES","SAVE_SEARCH_HINT_CLICKED","SELLER_LIST_MARK_AS_SENT_HINT_CLICKED","FEATURE_MODAL_MAO_DISMISSED_CLICKED","availableAllowedBuyerRegions","defaultBuyerRegion","initModuleGlobals","allowedBuyerRegions","r","selectedBuyerRegion","selectedBuyerRegionText","availableAllowedBuyerRegionsForEditWithBids","isSetAllowedBuyerRegionToAtLeastEuEnabled","isTraderaPayEnabled","buyerRegionSlice","availableRegions","draftState","regionState","buyerRegion","regions","selectedRegion","Sweden","Nordic","International","getRequestConfig","httpClientBaseQuery","requestConfig","signal","_error$response","_error$response2","Axios","isAxiosError","initialScrollEls","querySelectorAll","scrollTo","offsetTop","findKeysByPurchaseOrderId","findKeysByTransactionId","findKeysByItemId","updateStateAndLabels","myTraderaItemsSelector","getSoldItem","updateUnsoldLabelsAndActions","getUnsoldItem","setPaidState","flag","setShippedState","setTransactionHiddenState","setUnsoldItemHiddenState","_item$hiddenByMember","hiddenByMember","removeFromList","setFeedback","setShippingBookedState","markAsPaidBySellerReducer","stateItems","updateChangedItems","findUpdatedKeysByPurchaseOrderId","updatedItems","unmarkAsPaidBySellerReducer","markAsShippedReducer","findUpdatedKeysByTransactionId","unmarkAsShippedReducer","markTransactionAsHiddenBySellerReducer","markTransactionAsShownBySellerReducer","markItemAsHiddenReducer","currentMemberId","findUpdatedKeysByItemId","markItemAsShownReducer","markAsShippingBooked","unmarkAsShippingBooked","hasUnpaidShipping","setRestartedReducer","setItemsHasRestartedChild","feedbacksLeftBySeller","submittables","submittable","getPurchasedItem","markAsPaidByBuyerReducer","unmarkAsPaidByBuyerReducer","markTransactionAsHiddenByBuyerReducer","markTransactionAsShownByBuyerReducer","feedbacksLeftByBuyer","poHiddenByBuyer","poShownByBuyer","myTraderaItems","getItemsInOrder","updateItemsWithError","isSubMenuOpen","bulkChecked","selectedCheckboxes","chosenBoxes","allItemsWithBulk","checkIfActive","openDelListingItem","isOpenDeleteItem","removeAllSelected","newItemsOrderedByID","element","newItems","poMarkedAsPaidBySeller","poMarkedAsPaidByBuyer","poUnmarkedAsPaidBySeller","poUnmarkedAsPaidByBuyer","markedAsShippedBySeller","unmarkedAsShippedBySeller","poHiddenBySeller","poShownBySeller","itemHidden","itemShown","feedbackLeftBySellerReducer","feedbackLeftByBuyerReducer","poMarkedAsShippingBooked","poUnmarkedAsShippingBooked","poShipmentDeleted","resetItems","purchaseOrderActionTypes","feedbacksLeftBySellerReducer","feedbacksLeftByBuyerReducer","itemKeysForPurchaseOrderId","LoaderComponent","visibleClassName","loaderRef","useRef","timeout","_loaderRef$current","classList","ref","GlobalLoader","LoadingIcon","PortalLoader","LoadingPortal","_ref2$className","_excluded2","Loader","usePortal","defaultDrafts","getType","hasOpeningPrice","getDefaultTemplateValue","newTemplate","newItem","loadDraftFromTemplate","draftWithoutItemId","resetUnwantedProperties","ensuredDraft","metadata","applicationId","ensureApplicationId","syiSlice","_syiSlice$charity","MemberId","publishedPromoted","publishedHighlighted","createdDate","lastModifiedDate","publishedDate","publishedAsItemType","templateName","draftCategoryPath","listingImage","filename","imageGroupId","isUploadedBySystem","resolveImages","isPennybridgeCharitiesEnabled","userGenerated","minDelayInMs","alwaysDelay","lastActionTime","timeoutId","wrappedAction","timeNow","labels","OpeningBid","columnCssClassCore","getCoreCssClass","column","getHeading","columnKey","term","getTranslatedColumnKey","getHeadings","columnDefinitions","getUserHeading","highestBidder","PAGE_NAMES","BuyerActiveItems","SellerActive","SellerUnsold","BuyerPurchases","getColumns","hasTransactionDate","transactionDate","currentPrice","getItemId","hasHighestBidder","shouldShowBids","purchaseType","getTransactionDate","formatted","getEndDate","getTimeLeftAsString","columnCssClass","Discount","columnTitle","full","getBids","component","BIDS","getOpeningBid","getReservePrice","getBuyItNow","buyItNow","getOwnReference","ownReference","getDefinitionForPriceLabel","PRICE_LABEL","TIME_LEFT","definitions","ITEM_PRICE","getColumn","definition","tagTitle","getValidationErrors","customEndTimeError","startOf","_customEndTime$split$2","hours","minutes","hour","minute","earliestEndDate","isBefore","isRestartAvailable","_userData$defaultDraf","_userData$defaultDraf2","validationErrors","itemDurationSlice","resetDurationAndEndTime","newStateWithoutCampaignRelatedProps","resetCustomEndTime","_itemDurationSlice$ac","_initData$pageSpecifi","_initData$pageSpecifi2","_initData$pageSpecifi3","MARK_PAID","_initData$pageSpecifi4","_initData$pageSpecifi5","_initData$pageSpecifi6","_initData$pageSpecifi7","_initData$pageSpecifi8","_initData$pageSpecifi9","_initData$pageSpecifi10","_initData$pageSpecifi11","_initData$pageSpecifi12","_initData$pageSpecifi13","_initData$pageSpecifi14","_initData$pageSpecifi15","_initData$pageSpecifi16","_initData$pageSpecifi17","_initData$pageSpecifi18","_initData$pageSpecifi19","_initData$pageSpecifi20","REQUEST_COMBINED_SHIPPING_PRICE","NORDIC","MODALS","FILTER_MODAL","CATEGORY_MODAL","SINGLE_FEEDBACK_DIALOG_ID","ROLES","BUYER","SELLER","MAX_COMMENT_LENGTH","UNSET_RATING_VALUE","MIN_RATING_VALUE","MAX_RATING_VALUE","RATING_NAMES","RATING_NAMES_SELLER","PAYMENT_TIME","RATING_NAMES_BUYER","DESCRIPTION","COMMUNICATION","SHIPPING_TIME","SHIPPING_COST","RATING_SETTINGS","titleKey","descriptionKeys","getName","recentSearchesService","_recentSearchesServic","_recentSearchesServic2","formattedRecentSearches","recent","_recent$value","_recent$value2","setRecentSearchLocalStorage","searchTerm","removeRecentSearchLocalStorage","charityFromDraft","fetchCharityInfo","fetchCharityShippingInfo","getCharity","getCharityShippingInfo","marketingApiClient","notAuthenticated","categoryNames","categories","categoryLevel","itemUrl","paymentTerms","reasons","resultMessage","viewState","setReportItem","_ref$payload","breadCrumb","setViewState","setCategories","getInitialBadges","messaging","threads","threadsUnread","system","messagingBadges","_ref$messageThreadCou","messageThreadCount","_ref$messageThreadsUn","messageThreadsUnreadCount","showHeaderSearch","showSearchForm","productCommunications","showCollectSsnModal","badges","categoryDropdownMenu","itemSettings","modals","currentModal","notificationOptinModal","profileMenu","BankAccountMissing","InvoiceUnpaid","OutstandingTraderaPayLicense","videoModal","youtubeVideoModal","shareModal","isOpen","settings","wishListSideSheet","collectSsnModal","hasSearch","hasSsn","_cookieUtil$readCooki","_cookieUtil$readCooki2","recentItemIds","RECENTLY_VIEWED_ITEM_IDS","addRecentlyViewed","ADD_RECENTLY_VIEWED","setItemWishList","exists","WISHLIST","addItemsToWishList","WISHLIST_ADD_RANGE","removeItemsFromWishList","WISHLIST_REMOVE_RANGE","wishlist","shouldNotTrackEventBecauseNeedsToBeSameAsLegacyVip","_getStore2","_getStore2$member","onSignedOutError","gtmCore","MODAL_TYPES","wishlistReminders","bannedCountries","removeBannedCountryCodes","getAvailableCountries","countries","mapCountryCodeToCountryKey","countryCode","ad","ae","af","ag","ai","al","am","an","ao","aq","ar","as","at","au","aw","ax","az","ba","bb","bd","be","bf","bg","bh","bi","bj","bm","bn","bo","br","bs","bt","bv","bw","by","bz","ca","cc","cd","cf","cg","ch","ci","ck","cl","cm","cn","co","cr","cu","cx","cy","cz","dj","dk","dm","do","dz","ec","ee","eg","eh","er","es","et","fi","fj","fk","fm","fo","fx","gb","gd","ge","gf","gh","gi","gl","gm","gn","gp","gq","gr","gs","gt","gu","gw","gy","hk","hm","hn","hr","ht","hu","ie","il","in","io","iq","ir","is","it","jm","jo","jp","ke","kg","kh","ki","km","kn","kp","kr","kw","ky","kz","la","lb","lc","li","lk","lr","ls","lt","lu","lv","ly","ma","mc","md","mg","mh","mk","ml","mm","mn","mo","mp","mq","mr","ms","mt","mu","mv","mw","mx","my","mz","na","nc","ne","nf","ng","ni","no","np","nr","nu","nz","om","pa","pe","pf","pg","ph","pk","pl","pm","pn","pr","ps","pt","pw","py","qa","re","ro","ru","rs","rw","sb","sc","sd","se","sg","sh","si","sj","sk","sl","sm","sn","so","st","sy","sz","tc","td","tf","tg","th","tj","tk","tl","tm","tn","tr","tt","tv","tw","tz","ua","ug","um","us","uy","uz","va","vc","ve","vg","vi","vn","vu","wf","ws","ye","yt","yu","za","zm","zw","ModalState","ItemLocalization","itemLocalization","memberCountryCode","_useDefaultItemLocali","useDefaultItemLocalizationSettingValues","defaultCountryCodeIso2","defaultLanguageCodeIso2","_useState2","useState","setSelectedDescriptionLanguageCodeIso2","_useState4","setShippingFromCountryCodeIso2","ItemLocalizationSettings","onSelectedDescriptionLanguageChange","put","onShippingFromCountryChange","memberLanguageCodeIso2","isFrenchDutchSelectable","countryLanguageCode","memberCountryCodeCodeIso2","useIsFeatureEnabled","_ref2$narrowSelector","narrowSelector","descriptionLanguages","getLanguageOption","shippingFromCountries","getCountryOption","labelClassName","classNames","selectorClassName","showShippingFrom","topRowClassName","firstEmpty","isUploading","traderaShopSlice","setProduct","_traderaShopSlice$act","CartSummary","getCartSummaryParams","cartId","cartApi","getCartSummary","useGetCartSummaryQuery","useDayJs","formatUtcDateAsSwedishTimeZoneDate","Overview","BuyerItemsLost","MyTraderaLeaveFeedback","MyTraderaMyFeedback","SellerList","SellerSold","SavedSearches","Settings","SettingsAccount","SettingsEmail","SettingsNotifications","SettingsSeller","SettingsSecurity","SettingsPayouts","Payouts","Invoices","WishList","Picklist","filtersState","checkModifiersExist","getDefaultFilters","datatype","field","processState","properties","scope","searchType","userIs","checkStateOfQueryParams","locationQuery","check","checkItem","setBuyerItemProperty","update","buyer","_buyer$items","updateShippingStatusForBuyerItems","patch","buyers","isMarkedAsShipped","updatePaidStatusForBuyerItems","isMarkedAsPaidBySeller","paidConfirmed","updateVisibilityStatusForBuyerItems","hiddenBySeller","_buyer$items2","_buyer$items$length","_buyer$items3","PickListTagTypes","PickListItems","getPickListItemsCacheKeys","pickListApi","patchResults","cacheKey","markAsPaidBySeller","setItemVisibility","_res$responseStatus","updatedBuyers","resp","cacheKeys","_key$skip","_key$take","retrieveHidden","getPickListItems","invalidateTagsOnShippedStatus","tagsToInvalidate","shippedStatus","invalidateTagsOnPaidStatus","useMarkAsShippedMutation","useMarkAsPaidBySellerMutation","useSetItemVisibilityMutation","useGetPickListItemsQuery","baseURL","process","next","filteredParams","paramsSerializer","arrayFormat","checkResponseVersion","SET_RECENTLY_VIEWED","SETTINGS","shippingCheckoutSlice","hasFetchError","totalShippingCost","shippingPrice","hasDeleteError","_arg$buyerAddress","cleanedBuyerAddress","isUpdatingShipment","createdShipmentCheckoutId","translationKey","isQuickFlowPossible","productsDecorated","weightClass","filteredProductsWithDecoration","outage","uuid","_shippingCheckoutSlic","selectSyiShipping","selectShippingProviderIsAnOption","group","renderZero","roundUp","localizedPriceFormatter","useLocalizedPriceFormatter","localizedPriceFormatterRoundingUp","useLocalizedPriceFormatterRoundingUp","formattedPrice","_useSelector","isNativeAppWithApplyPaySupport","preselectedPaymentOption","ignoreQueryPrefix","URL","searchParams","triggerGa","createPreferredCurrencyCookie","isEnabled","ELASTIC_MYTRADERA","isMessagingEnabled","isPostnordComplaintEnabled","isDiscontinuedSaleEnabled","isDiscontinuedSaleMessagingEnabled","breadcrumbs","metaDescription","metaRobots","SET_PAGE_META","allowedFileExtensions","maxFileSize","uploadFileWithFormData","file","imageFlow","replaceIndex","startTime","FormData","append","notifyImageValidationFailed","notifyImageUploaded","endTime","notifyImageUploadFailed","validateFile","fileExt","str","suffix","eventBroadcaster","displayMessage","isMultifileSupported","uploadFiles","maxNumberOfFiles","iframe_name","iframe","form","setAttribute","appendChild","fileInputParent","parentNode","submit","removeChild","theFile","onload","responseText","$","contentDocument","innerHTML","uploadFileWithDom","uploadCroppedImageFile","imageFile","loadReportItemModel","_await$getReportItemM","getReportItemModel","getBackToHereRedirectUrl","reportItemModel","submitReport","postReport","storageService","removeSavedSearch","setLongDescription","SWISH_APP_2_APP","PAYNOVA","PAYNOVA_DIRECT_INVOICE","PAYNOVA_INSTALLMENTS","KLARNA","UNAVAILABLE_DUE_TO_SHIPPING_NOT_TRACEABLE","UNAVAILABLE_DUE_TO_SHIPPING_NOT_TRACEABLE_TO_SERVICEPOINT","savedSearchesApi","SAVED_SEARCHES_LIST","removeSavedSearches","_draft$savedSearches","_params$ids","toggleEmailNotification","_draft$savedSearches2","_params$savedSearchDt","savedSearchDto","hasEnabledEmailNotifications","sendMail","useRemoveSavedSearchesMutation","useToggleEmailNotificationMutation","createBrowserHistory","touchwebSearchApi","saveSearch","toSearchString","searchGtm","useSearchQuery","useSaveSearchMutation","getId","getIds","isTakeAway","hasStampsAsSelectedShippingType","commonActions","sellSimilar","getTranslatedLabel","isVisible","isPrimaryAction","hasTransactionDateNewerThen60Days","_item$transaction2","_item$transaction2$tr","dateLimit","subtract","isAfter","soldActions","haveCombinedShipping","haveMultipleRows","_item$transaction3","_item$transaction4","seller","traderaUserId","openMessagingModal","myTraderaItemActions","UNPAID","MARKED_AS_PAID_BY_BUYER","_item$transaction","_item$transaction$buy","_item$transaction$buy2","o","shouldReplaceBookShippingWithBuyStampAsPrimary","unpaidShippingUrl","unpaidShippingId","trackingLink","paidShipmentCheckoutId","bookedShipment","hasShipmentReceipt","hasShipmentLabel","_item$transaction$boo","_item$transaction$boo2","isSoldByTradera","isPromotedSecondaryAction","isPaidShippingSetWithPostNordStamp","isPaidSingleItemWithOnlyPostNordStamp","isDiscountAfterPaymentSupported","isRefundAllowed","MARKED_AS_PAID_BY_SELLER","upiSubmitted","isMcpSubmitted","isUpiSubmitted","isDiscountBeforePaymentSupported","isDiscountAllowed","updatePurchaseOrderHiddenForSeller","_item$transaction5","hide","_item$transaction6","_item$transaction$sel","_item$listing$shippin","every","openMyTraderaModal","isSingleButton","getTranslatedMessage","itemsFromSeller","cleanedAlias","getActionsForItem","secondaryActions","primaryAction","promotedSecondaryAction","resolveActions","potentialActions","actionCreator","checkAndAdd","actionsForItem","activeBuyerActions","fixedItemUrl","fixItemUrlIfNeeded","buttonTheme","boughtActions","EXPIRED","showSuccessToast","hasBuyerProtection","inr","dispute","updatePurchaseOrderHiddenForBuyer","lostActions","unsoldActions","_item$hiddenByMember2","isShopItem","common","translationKeys","shareHeader","shareMailSubject","shareMailBody","sharePinterestDescription","shareLinkText","tooltip","_props","shareLinkHref","origin","openShareModal","shareTitle","shareImageUrl","main","isContactHighestBidder","activeSellerActions","labelFunc","columnFunc","getCheapestShippingPrice","substring","actionLabelMap","getItemFromPurchaseOrderId","sellerEmail","createReturnObject","hasIncorrectResponse","selectTraderaShop","traderaShop","polyRef","forwardRef","ButtonIcon","IconComponent","round","isValidElement","iconClasses","getClassNameFromReactElement","cloneElement","forwardedRef","_ref2$theme","_ref2$variant","_ref2$size","brandedText","fluid","iconProp","iconLeftProp","iconLeft","iconRightProp","iconRight","iconConfigProp","iconConfig","_ref2$align","align","nowrap","fixedIcon","position","isIconOnRight","isIconOnLeft","isFixedIcon","ariaDisabled","buttonClasses","css","button","filled","outline","ghost","inverted","fixed","onBtnClick","loadingContent","loadingIcon","fixedToLeft","fixedToRight","flex","ALink","AUCTION_HAS_ENDED","AUCTION_HAS_NOT_STARTED","BELOW_MINIMUM","BELOW_OWN_LEADING_BID","BELOW_RESERVE_PRICE","BID_NOT_FOUND","BIDDER_IS_BLOCKED","BUYING_LIMIT_REACHED","EQUAL_OR_HIGHER_THAN_BUY_IT_NOW","ITEM_NO_LONGER_AVAILABLE","ITEM_NOT_FOUND","NO_LONGER_VALID","ONLY_EU_BUYERS_ACCEPTED","ONLY_NORDIC_BUYERS_ACCEPTED","ONLY_SWEDISH_BUYERS_ACCEPTED","SUCCESSFULLY_CHANGED_AUTOBID","USER_IS_SUSPENDED","MAX_PLACED_BIDS_LIMIT","BID_AMOUNT_LIMIT","BID_VALIDATION_RETRY","BIN_VALIDATION_RESULTS","ITEM_HAS_ENDED","BUYING_OWN_ITEM","ITEM_ALREADY_PURCHASED_BY_OTHER_USER","PURCHASE_DID_NOT_SUCCEED","CategorySchema","z","string","isLeaf","boolean","CategorySuggestionSchema","matchedItemCount","CategoriesAndSuggestionsSchema","suggestions","optional","touchwebSyiApi","getCategories","_ref$categoryId","_ref$currentLevel","currentLevel","levelToSearch","_arg$locale","Collator","compare","categorySearch","useCategorySearchQuery","useGetCategoriesQuery","usePrefetch","chosenExtraFeatures","hasChosenExtraFeatures","_state$items","initialPayloadItems","purchaseOrders","row","_purchaseOrder$shippi","_purchaseOrder$shippi2","_purchaseOrder$shippi3","_purchaseOrder$shippi4","combinedShippingInformation","buying","isShippingBooked","isShipped","isHiddenForBuyer","isInrSubmitted","dcsSubmitted","isDcsSubmitted","isHiddenForSeller","initialPayloadPurchaseOrders","itemsToGiveFeedBackTo","isBooked","myTraderaItemsActions","updateShippingBooked","requestCombinedShippingPrice","hasBuyerRequestedCombinedShippingPrice","hasRequested","updatePurchaseOrderShipped","updatePurchaseOrderPaidBySeller","isPaid","updatePurchaseOrderPaidByBuyer","isMarkedAsPaidByBuyer","runPurchaseOrders","_ref$shouldScrollToIn","_ref$waitForBackend","_ref$dontModifyHistor","searchUrlNormalView","modifiersFromState","PageNumber","PageSize","totalPages","totalNumberOfPages","totalNumberOfPurchaseOrders","isHidden","payoutSlice","traderaPay","receivePayouts","removePayout","payoutDestination","_payoutSlice$actions","leadingBidMemberId","getEndedItemState","ITEM_TYPES","AUCTION","AUCTION_BIN","PURE_BIN","SHOP_ITEM","PURCHASE_OFFER_ON_ENDED","ENDED_AUCTION_BIN_SOLD_THROUGH_PURCHASE_OFFER","PURCHASE_OFFER_ON_ACTIVE","ENDED_PURE_BIN_SOLD_THROUGH_PURCHASE_OFFER","ENDED_AUCTION_SOLD_THROUGH_PURCHASE_OFFER","ENDED_AUCTION_WITHOUT_BID","ENDED_AUCTION_WITHOUT_WINNING_BID","ENDED_FIXED_PRICE","UNKNOWN","ONGOING_AUCTION","ONGOING_AUCTION_BIN","ONGOING_FIXED_PRICE","getOngoingItemState","NOT_STARTED_AUCTION","NOT_STARTED_AUCTION_BIN","NOT_STARTED_FIXED_PRICE","getNotStartedItemState","Component","super","el","loadingPortalRoot","componentDidMount","componentWillUnmount","render","_this$props","_this$props$className","ReactDOM","createPortal","selling","CHANNEL_TAG_GROUPS","buyingListingOutbid","buyingListingWon","sellingListingFirstBid","sellingListingAllBids","sellingListingSold","sellingPaymentReceived","SET_PAGE_TYPE","SET_PAGE_META_FROM_SEARCH_RESULT","bidHistoryApi","getBidHistory","useGetBidHistoryQuery","STATUS","startPageResponse","_initData$lastChance","lastChance","NOT_FETCHED","_initData$trendingBra","trendingBrands","_initData$wishList","wishList","_initData$favouriteSe","favouriteSellers","sellers","sellerSuggestions","HAS_DATA","startPageSlice","setStartPageConfigAction","setStartPageConfigStatusAction","setWishListAction","setWishListStatusAction","setFavouriteSellersAction","setFavouriteSellersStatusAction","setItemQueryUsed","itemQueryIndex","used","_startPageSlice$actio","uiSlice","ITEM_LAYOUT","LIST","toggleHeaderSearch","_payload$items","_payload$item","OPEN","openVideoModal","videoUrl","buttonLink","buttonText","closeVideoModal","openYoutubeVideoModal","videoId","closeYoutubeVideoModal","_payload$title","_payload$src","_payload$participatin","_payload$recipientId","_payload$item2","closeMessagingModal","closeNotificationOptinModal","currentModalData","updateSystemMessages","closeProfileMenu","openCategoryDropdownMenu","closeCategoryDropdownMenu","openSearchForm","closeSearchForm","openItemSettings","closeItemSettings","closeShareModal","openHelpSection","helpSection","closeHelpSection","openWishListSideSheet","closeWishListSideSheet","updateProductCommunications","showSaveSearchBanner","_ref20$payload","openCollectSsnModal","closeCollectSsnModal","_uiSlice$actions","getUrbanSdk","UA","UACache","sdk","isSupported","pushNotificationsSlice","initDone","pushSupported","optedIn","setInitDone","setPushSupported","setOptedInValue","setTagGroupsValue","setShownModalTrue","setAllShownModals","setEnabled","init","canRegister","channel","tags","groupTags","tag","getTagGroupsFromUrbanAirship","_getState","isPushEnabled","optIn","register","namedUser","optOut","saveTagsToUrbanAirshipAndUpdateState","tagGroupValue","tagGroupsToSet","channelTags","addTagGroups","tagGroupsToAdd","removeTagGroups","tagGroupsToRemove","observeStore","handleChange","nextState","previousState","unsubscribe","subscribe","browserHistory","reduxStore","configureStore","rootReducer","middleware","getDefaultMiddleware","middlewares","routerMiddleware","devTools","enhancers","enableWebPackHotModuleReplacementForReducers","module","hot","accept","nextRootReducer","require","replaceReducer","initializeStore","ProviderWithGlobalStore","Provider","_state$recentItemIds","updatedRecentItemIds","setRecentlyViewed","wishlistAddRange","wishlistRemoveRange","med","allErrorsVisible","publishPending","publishFailed","publishFailedReasonDisplayText","publishedItemPendingVip","publishedItem","openModalData","autoSaveEnabled","draftCanBeResumed","itemUpdating","itemUpdated","step1","step2","step3","step4","globalValidationError","global","shippingOptionsError","shippingContainsProduct","createReducer","RESET_SHIPPING_OPTIONS","SET_SHIPPING_OPTIONS_BY_WEIGHT","shippingContainsTakeaway","productsWithDecoration","SET_SHIPPING_OPTION_SELECTED","selectedOptions","SET_TAKEAWAY_SELECTED","SET_SHIPPING_OPTIONS_ERROR","SET_SHIPPING_FROMCOUNTRY","CLEAR_SHIPPING_RECOMMENDATIONS","SET_SHIPPING_RECOMMENDATIONS","_action$payload2","saveAsDialogOpen","templatesLimitReachedDialogOpen","ignoreProperties","SET_SAVE_AS_DIALOG_OPEN","SET_TEMPLATES_LIMIT_REACHED_DIALOG_OPEN","RESET_IGNORE_PROPERTIES","ADD_IGNORE_PROPERTIES","REMOVE_IGNORE_PROPERTIES","selectionError","defaultCampaignProperties","campaignCodeChecked","firstTimeSubscribe","validCampaign","searchingDelayed","searchingDelayedTimeoutId","nullIfFalsy","ensureValidCampaignCodeId","uploadError","imageCount","resolveFirstEmpty","foundFirst","resetUploadError","removeLastLoading","setImageCount","withUrl","isValidPrice","isInt","isNaN","validateFixedPrice","validateOpeningBid","validateAuctionBinPrice","showReservePrice","validateReservePrice","errorKey","_window$location","showCharityDonation","selectableVats","selectableVatValues","reservePriceCanChangeButNotBeRemoved","reservePriceCost","draftBeforeChange","textWithHtml","elm","textContent","innerText","ensureString","s","isCurrentDescriptionFromDraft","fromDraftCounter","scrollY","isSchenkerPaidBySchenker","isSchenkerPaying","filterSelectableSuggestions","incomingSuggestedAttributes","selectableSuggestions","categoryAttribute","suggestedAttribute","v","isSelectableSuggestion","isMaxReached","draftAttributes","selectableSuggestedAttributes","selectableImageToColorSuggestedAttributes","updateSelectableSuggestedAttributes","filterCombinedSelectableSuggestions","primarySuggestedAttributes","secondarySuggestedAttributes","primarySuggestedAttribute","psa","secondarySuggestedAttribute","ssa","suggestedAttributeValues","isAlreadySuggested","updateSelectableImageToColorSuggestedAttributes","_state$draftAttribute","_state$draftAttribute2","draftAttributeValues","tav","RESET_ATTRIBUTES","RESET_SELECTED_ATTRIBUTES","RESET_IMAGE_ATTRIBUTES_SUGGESTIONS","SET_CATEGORY_ATTRIBUTES","setCategoryAttributes","SET_DRAFT_ATTRIBUTES","setDraftAttributes","SET_CATEGORY_ATTRIBUTE_OPTION","setCategoryAttributeOption","UPDATE_CATEGORY_ATTRIBUTES_OPTIONS_STATUSES","SET_CATEGORY_ATTRIBUTES_SUGGESTIONS","setCategoryAttributesSuggestions","categorySuggestedAttributes","SET_IMAGE_ATTRIBUTES_SUGGESTIONS","setImageToColorSuggestions","setValidationError","createInitalState","consent","braintree","shouldGiveConsent","isSyiMemberConsentEnabled","isBraintreeOnly","needsConsentOfTraderaPayAgreement","hasValidationError","initalConsentGiven","SET_TRADERAPAY_CONSENT","errorLoading","combineReducers","bankId","traderaStateBankId","newDraft","referenceIsReadonly","newAdditionalDescriptions","toISOString","edit","e1","step1Errors","e2","step2Errors","e3","step3Errors","e4","step4Errors","fees","_slot$isUploadedBySys","numberOfLoading","setLoadingOnFreeSlots","defaultValue","preview","shouldShowAuctionInfoModal","scroll","publishDelayed","newValue","updatePurchaseOrderPaidStatus","checkHaveGivenFeedBackTo","itemToGiveFeedBackTo","payments","payout","updatePurchaseOrderShippedBooked","updatePurchaseOrderRequestCombinedShipping","buyerRequestedCombinedShippingPriceDate","updatePurchaseOrderShippingPrice","sellerSetCombinedShippingPriceDate","shippingAmount","totalAmount","totalItemAmount","updatePurchaseOrders","updatePurchaseOrderShipment","updatePurchaseOrderFeedback","updatePurchaseOrderHidden","checkout","profile","cart","startPage","isActionsPerFullPageLoadDone","hasLoadedAllTranslations","setIsActionsPerFullPageLoadDone","setAllTranslationsLoaded","userAgent","setCookies","setLocation","setUserAgent","setRequestAndResponse","ads","multiCurrency","personalisation","connectRouter","localizedDayjsCallback","localizedDayjs","ItemTypes","fetchTraderaShopProductData","urlSlug","getTraderaShopProductData","loadTranslatedDescription","_selectTranslatedDesc","isOnDemandItemDescriptionTranslation","fetchItemsFromSeller","SellerMemberId","Size","SearchResultLanguageCodeIso2","_result$data$result"],"mappings":"iGAAKA,EAAgB,SAAhBA,GAAgB,OAAhBA,EAAgB,kBAAhBA,EAAgB,YAAhBA,EAAgB,UAAhBA,EAAgB,iDAAhBA,EAAgB,+CAAhBA,CAAgB,EAAhBA,GAAgB,IAQNA,K,sCCRA,KACXC,WAAY,iBACZC,eAAgB,qB,sCCFpB,yBACeC,QAAW,IAAK,WAAa,E,sCCD5C,sMAOO,IAAKC,EAAI,SAAJA,GAAI,OAAJA,EAAI,gCAAJA,CAAI,MAIT,MAAMC,EAAeC,YAAU,CAClCC,YAAa,eACbC,cACAC,SAAUC,OAAOC,KAAKP,GACtBQ,UAAYC,IAAO,CACfC,eAAgBD,EAAQE,SAA0C,CAC9DC,gBAAiB,CAACZ,EAAKa,gBACvBC,MAAQC,IACG,CACHC,IAAK,gCACLC,OAAQ,SACRC,KAAMH,MAIlBI,cAAeV,EAAQK,MAAqC,CACxDM,aAAc,CAACpB,EAAKa,gBACpBC,MAAOA,IAAM,sCAKVO,EACXpB,EADWoB,0BAA2BC,EACtCrB,EADsCqB,sBAAuBC,EAC7DtB,EAD6DsB,I,+xCCtBjE,MAAMC,EAA4B,CAC9BC,UAAW,KACXC,WAAYA,IAAWC,OACvBC,eAAgB,MAGPC,EAAcC,YAAY,CACnCC,KAAM,SACNP,eACAQ,SAAU,CACNC,MAAOA,IACHC,EAAA,GAAYV,GAEhBW,UAAYC,GACRF,IAAA,GAAYE,GAAK,IAAEV,WAAYA,IAAWW,YAE9CC,SAAUA,CAACF,EAAKG,KAAkB,IAAdC,EAAOD,EAAPC,QAChB,OAAAN,IAAA,GACOE,GAAK,IACRX,UAAWe,EACXd,WAAYA,IAAWe,OAAK,EAGpCC,WAAYA,CAACN,EAAKO,KAAkB,IAAdH,EAAOG,EAAPH,QAClB,OAAAN,IAAA,GACOE,GAAK,IACRR,eAAgBY,EAAQZ,gBAAc,EAG9CgB,UAAYR,GACRF,MAAA,GACOE,GACAZ,GAAY,IACfE,WAAYA,IAAWmB,cAG/BC,MAAQV,GACJF,IAAA,GACOE,GAAK,IACRV,WAAYA,IAAWC,YAMhCoB,EACHlB,EAAYmB,QADDf,EAAKc,EAALd,MAAOE,EAASY,EAATZ,UAAWG,EAAQS,EAART,SAAUI,EAAUK,EAAVL,WAAYE,EAASG,EAATH,UAAWE,EAAKC,EAALD,MAGnDjB,MAAmB,O,sCC3DlC,oEAAO,MAAMoB,EAAe,CACxBC,SAAU,UACVC,YAAa,aACbC,sBAAuB,qBACvBC,wBAAyB,uBACzBC,cAAe,cACfC,kBAAmB,kBACnBC,aAAc,eASLC,EAAwB,CALX,GAAI,KAAM,KAGT,GAAI,GAAI,GAAI,GAAI,G,k3BCO3C,SAASC,IACL,OAAOC,IAAeC,IAAI,uB,+VAAsB1B,CAAA,CAC5C2B,cAAe,+BACZC,IAAaC,eAExB,C,k6CCHA,MAuCMC,EAAUxB,GAAY,CAACyB,EAAUC,KAG/BA,IADAC,YAAeC,gBAGE,mBAGjBH,EAASI,YAAgB7B,aAAO,EAAPA,EAAS8B,cAClCL,EAASM,gBAHTC,OAAOC,SAAY,SAAQC,YAAalC,aAAO,EAAPA,EAAS8B,cAIrD,EAoDEK,EAAsBA,IAAMC,MAAOX,EAAUY,KAC/C,MAAAC,EAGID,IAFeT,EAAeU,EAA9BX,YAAeC,gBACLW,EAAUD,EAApBE,OAAUD,WAEd,GAAIX,GAAmBA,EAAgB,qBAAuBW,EAC1D,IACI,IAAIE,EAAiBC,IAAMC,KAAKC,IAAWC,iBAC3C,IAAKJ,EAAgB,CACjB,MAAMK,QD5HXC,IACF3B,IAAI,2BACJ4B,KAAKC,eACLC,MACGC,YAAY,CAER,IAAKC,IAAWC,UAChB,IAAKD,IAAWC,aCsHhBZ,EAAiB,CAAC,EACdK,GAAmB,UAAWA,EAAgBQ,OAC9CR,EAAgBQ,KAAKC,MAAMC,SAAQrD,IAAc,IAAXsD,EAAItD,EAAJsD,KAElChB,EAAegB,IAAQ,CAAI,IAE/Bf,IAAMgB,MAAMd,IAAWC,gBAAiBJ,GAEhD,CACAhB,EAASkC,YAAkBlB,GAC/B,CAAE,MAAOmB,GAGL,OADAlB,IAAMmB,OAAOjB,IAAWC,iBAChBe,EAAME,SACV,KAAKV,IAAWW,iBACNtC,EAASuC,eACfhC,OAAOC,SAAW,gBAClB,MACJ,KAAKmB,IAAWC,UAChB,KAAKD,IAAWa,UAChB,KAAKb,IAAWc,QAChB,KAAKd,IAAWe,QACZ,MACJ,QACIC,YAAOR,GAGnB,CACJ,EA2BW,KACXS,oBAvKyBrE,GAAY,CAACyB,EAAUY,KAChD,MAAQiC,EAAiCtE,EAAjCsE,WAAeC,EAAaC,EAAKxE,EAAOyE,GAEhD,IAAIpC,IAAWqC,GAAGC,UAAUC,QAK5B,OAFAnD,EAASoD,aAAiB,IAEnBC,YAAQP,EAAcQ,KAAKC,QAC7BhC,MAAKjD,IAAc,IAAXuD,EAAIvD,EAAJuD,KACK,IAAA2B,EAAN3B,IAEAiB,EAAcQ,KAAIrF,MAAA,GACX6E,EAAcQ,MACdzB,GAAI,IACP4B,aAA+B,QAAnBD,EAAE3B,EAAK4B,oBAAY,IAAAD,OAAA,EAAjBA,EAAmBE,KAAKC,GAAC1F,IAAA,GAChC0F,GAAC,IACJC,IAAKD,EAAEC,KAAO/B,EAAKgC,wBAQ/B,OAJA7D,EAAS8D,YAAchB,IAEvBiB,IAAgB,aAAe,cAAalB,KAC5C7C,EAASoD,aAAiB,IACnBvB,CAAI,IAEdJ,OAAOU,IACJnC,EAASgE,eACThE,EAASoD,aAAiB,IAC1BT,YAAOR,EAAM,GACf,EAyINpC,SACAkE,iCA9GAA,CAACC,EAAWC,EAASC,EAAOC,EAAaC,IACzC3D,MAAOX,EAAUY,KACb,MAAQ2D,EAAsB3D,IAAtB2D,kBACHA,EAAkBC,UAG0B,IAA7CD,EAAkBE,YAAYP,IAGlClE,EACI0E,YAA2B,CACvBR,YACAC,UACAC,QACAC,cACAC,cAEP,EA8FLK,iBA3FsBC,GAAW5E,IACjC,MAAM6E,EAAgBC,IAA6B,YAC7CC,EAAUF,EAAcG,OAC9B,IACIC,UAAWC,aAAaL,EAAcM,IAAKP,EAAOG,EACtD,CAAE,MAAOK,GACLzC,YAAOyC,EACX,CACApF,EAASqF,YAAWT,GAAO,EAoF3BU,iBAjFsBV,GAAW5E,IACjC,MAAM6E,EAAgBC,IAA6B,YAC7CC,EAAUF,EAAcG,OAC9B,IACIC,UAAWC,aAAaL,EAAcM,IAAKP,EAAOG,EACtD,CAAE,MAAOK,GACLzC,YAAOyC,EACX,CACApF,EAASuF,YAAWX,GAAO,EA0E3BlE,sBACA8E,4BA/BgCA,IAAM7E,UACtC,IACI,IAAI8E,EAAyBxE,IAAMC,KAAKC,IAAWuE,kBACnD,IAAKD,EAAwB,CACzB,MAAAE,QAAuBlG,IACvBgG,EADYE,EAAJ9D,IAEZ,CACA7B,EAAS4F,YAA6BH,GAC1C,CAAE,MAAOtD,GACL,GAuBJ0D,qBAnByBA,IAAO7F,IAChCiB,IAAMmB,OAAOjB,IAAWC,iBACxBpB,EAASU,IAAsB,EAkB/BoF,aAfiBA,IAAMnF,UACvBM,IAAMmB,OAAOjB,IAAWuE,kBACxBzE,IAAMmB,OAAOjB,IAAWC,iBACxBpB,EAASuC,cAAS,E,0HCjLf,MAAMwD,EAAuB9J,YAAU,CAC1CC,YAAa,uBACbC,cACAI,UAAYC,IAAO,CACfwJ,yBAA0BxJ,EAAQK,MAGhC,CACEA,MAAQoJ,IACJ,MAAMC,EAAgB,IAAIC,gBAAgB,CACtCF,eAIJ,MAAQ,GADQG,IAAW,GAAK,gEACoCF,GAAe,IAG3FG,0BAA2B7J,EAAQE,SAGjC,CACEG,MAAQyJ,IAAO,CACXvJ,IAAK,8DACLC,OAAQ,OACRC,KAAMqJ,IAEVC,eAAgB5F,MAAO2F,EAAOhI,KAAmC,IAA/B0B,EAAQ1B,EAAR0B,SAAUwG,EAAclI,EAAdkI,eACxC,MAAMC,EAAczG,EAChB+F,EAAqBzI,KAAKoJ,gBACtB,2BACAJ,EAAQL,YACPhF,IAEGA,EAAM0F,SAAWL,EAAQK,QAAQ,KAI7C,IACI,MAAMC,QAAiBJ,EACvBxG,EACI+F,EAAqBzI,KAAKoJ,gBACtB,2BACAJ,EAAQL,YACPhF,IACQA,EAAM0F,WAEX1F,EAAM4F,cACFD,EAAS/E,KAAKgF,cAAa,IAI/C,CAAE,MACEJ,EAAYK,MAChB,SAUZf,EAHAgB,iCAGAhB,EAFAiB,qCAEAjB,EADAxJ,S,scCvEJ,SAAS0K,IAAiS,OAApRA,EAAW5K,OAAO6K,OAAS7K,OAAO6K,OAAOC,OAAS,SAAUC,GAAU,IAAK,IAAIzD,EAAI,EAAGA,EAAI0D,UAAUrC,OAAQrB,IAAK,CAAE,IAAI2D,EAASD,UAAU1D,GAAI,IAAK,IAAIwB,KAAOmC,EAAcjL,OAAOkL,UAAUC,eAAeC,KAAKH,EAAQnC,KAAQiC,EAAOjC,GAAOmC,EAAOnC,GAAU,CAAE,OAAOiC,CAAQ,EAAUH,EAASS,MAAMC,KAAMN,UAAY,CAElU/I,YACdsJ,OADc,IAEXC,EAAK9E,EAAAzE,EAAA0E,GAAA,OACS8E,IAAMC,cAAc,MAAOd,EAAS,CACrDe,MAAO,6BACPC,QAAS,qBACRJ,GAAqBC,IAAMC,cAAc,OAAQ,CAClDG,EAAG,4wEACYJ,IAAMC,cAAc,OAAQ,CAC3CI,KAAM,UACND,EAAG,mCACYJ,IAAMC,cAAc,OAAQ,CAC3CI,KAAM,UACND,EAAG,4FACYJ,IAAMC,cAAc,OAAQ,CAC3CI,KAAM,UACND,EAAG,yMACF,E,uYCnBH,SAASjB,IAAiS,OAApRA,EAAW5K,OAAO6K,OAAS7K,OAAO6K,OAAOC,OAAS,SAAUC,GAAU,IAAK,IAAIzD,EAAI,EAAGA,EAAI0D,UAAUrC,OAAQrB,IAAK,CAAE,IAAI2D,EAASD,UAAU1D,GAAI,IAAK,IAAIwB,KAAOmC,EAAcjL,OAAOkL,UAAUC,eAAeC,KAAKH,EAAQnC,KAAQiC,EAAOjC,GAAOmC,EAAOnC,GAAU,CAAE,OAAOiC,CAAQ,EAAUH,EAASS,MAAMC,KAAMN,UAAY,CAElU/I,UAAA,IAAA8J,EAAA9J,EACdsJ,cAAM,IAAAQ,EAAG,CAAC,EAACA,EACRP,EAAK9E,EAAAzE,EAAA0E,GAAA,OACS8E,IAAMC,cAAc,MAAOd,EAAS,CACrDe,MAAO,6BACPC,QAAS,oBACRJ,GAAqBC,IAAMC,cAAc,OAAQ,CAClDI,KAAM,OACND,EAAG,yBACYJ,IAAMC,cAAc,OAAQ,CAC3CI,KAAM,UACND,EAAG,8xEACYJ,IAAMC,cAAc,OAAQ,CAC3CI,KAAM,UACND,EAAG,mCACYJ,IAAMC,cAAc,OAAQ,CAC3CM,UAAWT,EAAO,UAAY,QAC9BO,KAAM,UACND,EAAG,2FACYJ,IAAMC,cAAc,OAAQ,CAC3CI,KAAM,UACND,EAAG,wMACF,E,2aCxBH,SAASjB,IAAiS,OAApRA,EAAW5K,OAAO6K,OAAS7K,OAAO6K,OAAOC,OAAS,SAAUC,GAAU,IAAK,IAAIzD,EAAI,EAAGA,EAAI0D,UAAUrC,OAAQrB,IAAK,CAAE,IAAI2D,EAASD,UAAU1D,GAAI,IAAK,IAAIwB,KAAOmC,EAAcjL,OAAOkL,UAAUC,eAAeC,KAAKH,EAAQnC,KAAQiC,EAAOjC,GAAOmC,EAAOnC,GAAU,CAAE,OAAOiC,CAAQ,EAAUH,EAASS,MAAMC,KAAMN,UAAY,CAElU/I,YACdsJ,OADc,IAEXC,EAAK9E,EAAAzE,EAAA0E,GAAA,OACS8E,IAAMC,cAAc,MAAOd,EAAS,CACrDgB,QAAS,cACTE,KAAM,OACNH,MAAO,8BACNH,GAAqBC,IAAMC,cAAc,OAAQ,CAClDG,EAAG,svBACHC,KAAM,YACL,E,uYCZH,SAASlB,IAAiS,OAApRA,EAAW5K,OAAO6K,OAAS7K,OAAO6K,OAAOC,OAAS,SAAUC,GAAU,IAAK,IAAIzD,EAAI,EAAGA,EAAI0D,UAAUrC,OAAQrB,IAAK,CAAE,IAAI2D,EAASD,UAAU1D,GAAI,IAAK,IAAIwB,KAAOmC,EAAcjL,OAAOkL,UAAUC,eAAeC,KAAKH,EAAQnC,KAAQiC,EAAOjC,GAAOmC,EAAOnC,GAAU,CAAE,OAAOiC,CAAQ,EAAUH,EAASS,MAAMC,KAAMN,UAAY,CAElU/I,YACdsJ,OADc,IAEXC,EAAK9E,EAAAzE,EAAA0E,GAAA,OACS8E,IAAMC,cAAc,MAAOd,EAAS,CACrDe,MAAO,6BACPC,QAAS,eACRJ,GAAqBC,IAAMC,cAAc,QAAS,KAAM,cAA4BD,IAAMC,cAAc,OAAQ,CACjHI,KAAM,OACND,EAAG,oFACYJ,IAAMC,cAAc,OAAQ,CAC3CI,KAAM,UACND,EAAG,+tBACYJ,IAAMC,cAAc,OAAQ,CAC3CI,KAAM,UACND,EAAG,uEACYJ,IAAMC,cAAc,OAAQ,CAC3CI,KAAM,UACND,EAAG,uFACYJ,IAAMC,cAAc,OAAQ,CAC3CI,KAAM,UACND,EAAG,wEACYJ,IAAMC,cAAc,OAAQ,CAC3CI,KAAM,UACND,EAAG,6EACF,E,uYC1BH,SAASjB,IAAiS,OAApRA,EAAW5K,OAAO6K,OAAS7K,OAAO6K,OAAOC,OAAS,SAAUC,GAAU,IAAK,IAAIzD,EAAI,EAAGA,EAAI0D,UAAUrC,OAAQrB,IAAK,CAAE,IAAI2D,EAASD,UAAU1D,GAAI,IAAK,IAAIwB,KAAOmC,EAAcjL,OAAOkL,UAAUC,eAAeC,KAAKH,EAAQnC,KAAQiC,EAAOjC,GAAOmC,EAAOnC,GAAU,CAAE,OAAOiC,CAAQ,EAAUH,EAASS,MAAMC,KAAMN,UAAY,CAElU/I,YACdsJ,OADc,IAEXC,EAAK9E,EAAAzE,EAAA0E,GAAA,OACS8E,IAAMC,cAAc,MAAOd,EAAS,CACrDe,MAAO,6BACPC,QAAS,iBACRJ,GAAqBC,IAAMC,cAAc,QAAS,KAAM,aAA2BD,IAAMC,cAAc,OAAQ,CAChHG,EAAG,gWACYJ,IAAMC,cAAc,OAAQ,CAC3CI,KAAM,OACND,EAAG,wUACYJ,IAAMC,cAAc,OAAQ,CAC3CG,EAAG,+zBACF,E,wBCdY,EAA+D,0BAA/D,EAAkG,gBAAlG,EAAyL,6B,YC8GzLI,IAjGWhK,IAAoC,IAAjCiK,EAAajK,EAAbiK,cAAeC,EAAWlK,EAAXkK,YACxC,MAAMC,EACFC,cAAA,OAEIL,UAAY,GAAEM,KAAwBA,IACtCA,MAAO,CAAEC,QAAS,OAClBxE,MAAOoE,EAAYK,SACnBH,cAACI,EAAQ,KAJJP,GAOPQ,EACFC,eAAA,OAEIX,UAAY,GAAEM,KAAwBA,2BACtCA,MAAO,CAAEC,QAAS,OAClBxE,MAAOoE,EAAYK,SAAA,CACnBH,cAACO,EAAW,IACZP,cAACQ,EAAc,MALVX,GAQb,OAAQA,GACJ,IAAK,OACD,OAAOE,EACX,IAAK,aACD,OAAOM,EACX,IAAK,iBACD,OACIC,eAAA,OAAyBX,UAAU,SAAQQ,SAAA,CACvCH,cAAA,OAAKC,MAAO,CAAEQ,YAAa,OAAQN,SAAEJ,IACpCM,IAFKR,GAKlB,IAAK,UACD,OACIG,cAAA,OAEIL,UAAWM,EACXvE,MAAOoE,EAAYK,SACnBH,cAACU,IAAW,KAHPb,GAMjB,IAAK,SACD,OACIG,cAAA,OAEIL,UAAWM,EACXvE,MAAOoE,EAAYK,SACnBH,cAACW,IAAU,KAHNd,GAMjB,IAAK,eACL,IAAK,cACD,OACIG,cAAA,OAEIL,UAAWM,EACXvE,MAAOoE,EAAYK,SACnBH,cAACY,IAAS,KAHLf,GAMjB,IAAK,WACD,OACIG,cAACa,EAAY,CAETlB,UAAWM,EACX/E,IAAK4E,GAFAD,GAKjB,IAAK,YACD,OACIG,cAACc,EAAa,CAEVnB,UAAWM,EACX/E,IAAK4E,GAFAD,GAKjB,IAAK,SACD,OACIG,cAACe,IAAU,CAEPpB,UAAWM,EACX/E,IAAK4E,GAFAD,GAKjB,IAAK,UACD,OACIG,cAACgB,IAAW,CAERrB,UAAWM,EACX/E,IAAK4E,GAFAD,GAKjB,QACI,OAAO,KACf,C,sCC5GJ,gBAEe,KAACnC,KAAY7F,OAAOoJ,iB,uPCQ5B,MAoBMC,EAA6BA,CAACC,EAAkBC,KACzD,MAAMC,EAAe,GAAEF,gBACjBG,EAAmBF,EAAOG,MAAM,uBAEtC,GAAID,EAEA,OADA/E,UAAWC,aAAagF,IAAeF,EAAiB,IAChD,GAAED,KAAeC,EAAiB,KAG9C,MAAMG,EAAoBlF,UAAWmF,WAAWF,KAChD,OAAIC,EACQ,GAAEJ,KAAeI,IAGtBJ,CAAW,E,oDC1CNM,MACZ,MACIC,EAkBAD,EAlBAC,mBACAC,EAiBAF,EAjBAE,WACAzJ,EAgBAuJ,EAhBAvJ,WACA0J,EAeAH,EAfAG,YACAC,EAcAJ,EAdAI,kCACAC,EAaAL,EAbAK,cACAC,EAYAN,EAZAM,sBACAC,EAWAP,EAXAO,YACAC,EAUAR,EAVAQ,eACAC,EASAT,EATAS,kBACAC,EAQAV,EARAU,gBACAC,EAOAX,EAPAW,SACAC,EAMAZ,EANAY,gBACAC,EAKAb,EALAa,eACAC,EAIAd,EAJAc,gBACAC,EAGAf,EAHAe,WACAC,EAEAhB,EAFAgB,cACAC,EACAjB,EADAiB,UAEJ,OAAOC,YAA2B,CAC9BjB,qBACAC,aACAiB,YAAa,KACb1K,aACA0J,cACAC,oCACAC,gBACAC,wBACAC,cACAC,iBACAC,oBACAC,kBACAC,WACAC,kBACAC,iBACAC,kBACAC,aACAC,gBACAC,aAEP,ECpCM,MAAMG,EAAcpB,IAAQ,CAC/BrI,KAAM0J,IAAY9P,WAClB2C,QAASoN,EAAgBtB,KAavBuB,EAA4BC,IAAqB,CACnD7J,KAAM0J,IAAYI,4BAClBvN,QAAS,CACLsN,2BAaKE,EAAsBxN,IAAO,CACtCyD,KAAM0J,IAAYM,sBAClBzN,YAGS0N,EAAiBA,IAAM,CAACjM,EAAUY,KAC3CZ,EAAS4L,GAAyB,IAElC,MFrC6B/B,KAC7B,GAAIzD,IACA,OAAO8F,QAAQC,OACX,iFAIR,MAAAC,EAAgCC,YAAmB,oBAA3CC,EAAMF,EAANE,OAAQC,EAAWH,EAAXG,YAEZD,GAAQA,IAEZ,MAAMxC,EAAUvJ,QAAUA,OAAOC,UAAYD,OAAOC,SAASsJ,QAAW,GACxE,OAAO0C,IACF7M,IAAIiK,EAA2BC,EAAkBC,GAAS,CACvDyC,gBAEHhL,KAAKC,eACLC,MAAMC,cAAc,EEoBlB+K,CADoC7L,IAAWV,YAAYwM,UAA1DC,gCAEHpL,MAAMqF,IACH,MAAQ/E,EAAS+E,EAAT/E,KAnBItD,MAwBZ,OAJAyB,GApBYzB,EAoBYsD,EApBL,CAC3BG,KAAM0J,IAAYkB,gBAClBrO,aAmBQyB,EAAS6M,YAAuBhL,EAAKiL,WACrC9M,EAAS4L,GAAyB,IAClC5L,EAAS+M,YAAqClL,IACvCA,CAAI,IAEdJ,OAAOU,IACJ,OAAQA,EAAME,SACV,KAAKV,IAAWqL,QAChB,KAAKrL,IAAWa,UAChB,KAAKb,IAAWc,QACZ,MACJ,QACIE,YAAOR,GAGfnC,EA/BqB,CAC7BgC,KAAM0J,IAAYuB,4BA8B0B,GACtC,C,sCCnEV,igBA6BO,MAAMC,EAAcC,IAAOC,gBAAgB,CAC9C7Q,UAAYC,IAAO,CACf6Q,wBAAyB7Q,EAAQK,MAG/B,CACEA,MAAQC,GACH,6CAA4CwQ,IAAGC,UAC5CzQ,OAGZ0Q,cAAehR,EAAQE,SAGrB,CACEG,MAAQC,IACG,CACHC,IAAK,+CACLC,OAAQ,OACRC,KAAMH,IAIdH,gBAAiBA,CAAC8Q,EAAQtL,EAAOuL,IAAQ,CACrC,CAAE1L,KAAM2L,IAAWC,KAAMC,GAAIH,EAAInK,WAGzCuK,WAAYtR,EAAQE,SAGlB,CACEG,MAAOyB,IAA0B,CAC7BvB,IAAM,0CACNC,OAAQ,OACRC,KAAM,CAAE8Q,gBAHazP,EAAfyP,qBAMdC,qBAAsBxR,EAAQE,SAG5B,CACEG,MAAQC,IACG,CACHC,IAAM,kDACNC,OAAQ,OACRC,KAAMH,IAGdH,gBAAiBA,CAAC8Q,EAAQtL,EAAOuL,IAC5BvL,EAAuD,GAA/C,CAAC,CAAEH,KAAM2L,IAAWM,MAAOJ,GAAIH,EAAInK,WAEpD2K,kBAAmB1R,EAAQE,SAGzB,CACEG,MAAO6B,IACI,CACH3B,IAAM,mEACNC,OAAQ,OACRC,KAAM,CAAEsG,OAJA7E,EAAN6E,UAOV5G,gBAAiBA,CAAC8Q,EAAQtL,EAAOuL,IAC5BvL,EAAuD,GAA/C,CAAC,CAAEH,KAAM2L,IAAWM,MAAOJ,GAAIH,EAAInK,WAEpD4K,oBAAqB3R,EAAQE,SAG3B,CACEG,MAAQC,IACG,CACHC,IAAM,iDACNC,OAAQ,OACRC,KAAMH,IAGdH,gBAAiBA,CAAC8Q,EAAQtL,EAAOuL,IAC5BvL,EAAuD,GAA/C,CAAC,CAAEH,KAAM2L,IAAWM,MAAOJ,GAAIH,EAAInK,WAEpD6K,iBAAkB5R,EAAQE,SAGxB,CACEG,MAAQC,IACG,CACHC,IAAM,8CACNC,OAAQ,OACRC,KAAMH,IAGdH,gBAAiBA,CAAC8Q,EAAQtL,EAAOuL,IAC5BvL,EAAuD,GAA/C,CAAC,CAAEH,KAAM2L,IAAWM,MAAOJ,GAAIH,EAAInK,WAEpD8K,oBAAqB7R,EAAQE,SAG3B,CACEG,MAAQC,IACG,CACHC,IAAM,iDACNC,OAAQ,OACRC,KAAMH,IAGdH,gBAAiBA,CAAC8Q,EAAQtL,EAAOuL,IAC5BvL,EAAuD,GAA/C,CAAC,CAAEH,KAAM2L,IAAWM,MAAOJ,GAAIH,EAAInK,WAEpD+K,mBAAoB9R,EAAQE,SAG1B,CACEG,MAAQC,IACG,CACHC,IAAM,gDACNC,OAAQ,OACRC,KAAMH,IAGdH,gBAAiBA,CAAC8Q,EAAQtL,EAAOuL,IAC5BvL,EAAuD,GAA/C,CAAC,CAAEH,KAAM2L,IAAWM,MAAOJ,GAAIH,EAAInK,WAEpDgL,iCAAkC/R,EAAQK,MAGxC,CACEA,MAAQC,IACG,CACHC,IAAM,4DAA2DuQ,IAAGC,UAChEzQ,KAEJE,OAAQ,QAGhBG,aAAesQ,GACXA,WAAQe,eACF,IACOf,EAAOe,eAAe9K,KAAK8J,IAAa,CACvCxL,KAAM2L,IAAWM,MACjBJ,GAAIL,EAAcjK,WAEtBoK,IAAWM,OAEf,CAACN,IAAWM,SAE1BQ,YAAajS,EAAQK,MAA+C,CAChEA,MAAQkR,GACH,kEAAiEA,MAE1EW,kBAAmBlS,EAAQK,MAAsC,CAC7DA,MAAQ8R,GACH,oDAAmDA,MAE5DC,YAAapS,EAAQE,SAAkD,CACnEG,MAAQ0B,IAAO,CACXxB,IAAK,wCACLC,OAAQ,OACRC,KAAMsB,UAOlBsQ,EAaA3B,EAbA2B,yBACAC,EAYA5B,EAZA4B,sBACAC,EAWA7B,EAXA6B,gCACAC,EAUA9B,EAVA8B,+BACAC,EASA/B,EATA+B,yCACAC,EAQAhC,EARAgC,gCACAC,EAOAjC,EAPAiC,6BACAC,EAMAlC,EANAkC,oBACAC,EAKAnC,EALAmC,0BACAC,EAIApC,EAJAoC,uBACAC,EAGArC,EAHAqC,4BACAC,EAEAtC,EAFAsC,+BACAC,EACAvC,EADAuC,6B,sCC5MJ,gGAKA,MAAMC,EAAQ7R,YAAY,CACtBC,KAAM,SACNP,aAAc,CACVoS,aAAc,GAElB5R,SAAU,CACN6R,gBAAkBzR,IACd,GAAI0R,MAAazJ,IACb,MAAM,IAAI0J,MACN,uDAGR3R,EAAMwR,aAAeI,KAAKC,QAAQ,KAK/BJ,EAAoBF,EAAM3Q,QAA1B6Q,gBACFK,EAAUP,EAAMO,O,mrCCKd,MA1BCtP,MAAOuP,EAAOC,KAC1B,IAAItO,EACJ,IAcIA,SAbuBnC,IAAe0Q,KAAK,qBAAsB,CAC7DF,MAAKjS,IAAA,GACEiS,GAAK,IACRG,gBAAiBH,EAAMG,gBAAgBC,QAClChN,KAAWA,EAAKtB,OAErBuO,4BACIL,EAAMK,6BAA+B,KACzCzD,SAAUoD,EAAMpD,UAAY,QAEhCqD,qBAAsBA,KAGVtO,IACpB,CAAE,MAAAvD,GACEuD,EADevD,EAARsI,SACS/E,IACpB,CAEA,GAAIA,EAAKrE,UAAW,MAAMqE,EAE1B,OAAOA,CAAI,E,0MCvBf,MAoHa2O,EAA8BA,CAACC,EAAQzQ,EAAU0Q,KAC1D,MAAMC,EAAyB,CAAC,eAAgB,gBAM1CC,EAAcH,EAAOH,QALDnO,GACtBwO,EAAuBE,SAAS1O,EAAM3E,aAKpCsT,EAAiBL,EAAOH,QAJDnO,IACxBwO,EAAuBE,SAAS1O,EAAM3E,aAKrCuT,EA9HkBC,EAACP,EAAQzQ,EAAUiR,KAC3C,MAAMC,EAAe,GACrB,IAAIC,EAAoB,EAgBxB,OAfAV,EAAO1O,SAASI,IACYA,EAAME,QAAQ+O,MAAM,KAC5BrP,SAAS8L,IACrB7N,EAASqR,IAAaC,kBAAkBzD,IAExCsD,GAAmB,GACrB,IAEFA,EAAoB,GACpBD,EAAaK,KACTN,EAAW,kCAAmC,CAC1CO,MAAOL,KAIZD,CAAY,EA4GYF,CAC3BJ,EACA5Q,EACA0Q,GAEEe,EAA4BX,EAAepN,KAAKvB,GA9G/BuP,EAACvP,EAAOuO,KAC/B,OAAQvO,EAAM3E,WACV,IAAK,mBACD,OAAOkT,EAAE,sCACb,IAAK,yCACD,OAAOA,EACH,4DAER,IAAK,yCACD,OAAOA,EACH,4DAER,IAAK,wBACD,OAAOA,EAAE,2CACb,IAAK,qBACD,OAAOA,EAAE,wCACb,IAAK,sBACD,OAAOA,EAAE,yCACb,IAAK,+BACD,OAAOA,EAAE,kDACb,IAAK,4BACD,OAAOA,EAAE,+CACb,IAAK,kCACD,OAAOA,EAAE,qDACb,IAAK,oBACD,OAAOA,EAAE,uCACb,IAAK,uBACD,OAAOA,EAAE,0CACb,IAAK,uBACD,OAAOA,EAAE,0CACb,IAAK,oCACD,OAAOA,EAAE,uDACb,IAAK,iCACD,OAAOA,EAAE,oDACb,IAAK,sDACD,OAAOA,EACH,yEAER,IAAK,qBACD,OAAOA,EAAE,wCACb,IAAK,eACD,OAAOA,EAAE,kCACb,IAAK,gBACD,OAAOA,EAAE,mCACb,IAAK,wBACD,OAAOA,EAAE,2CACb,IAAK,gCACD,OAAOA,EAAE,mDACb,IAAK,+BACD,OAAOA,EAAE,kDACb,IAAK,yBACD,OAAOA,EAAE,4CACb,IAAK,mCACD,OAAOA,EAAE,sDACb,IAAK,oBACD,OAAOA,EAAE,uCACb,IAAK,8CACD,OAAOA,EACH,iEAER,IAAK,uBACD,OAAOA,EAAE,0CACb,IAAK,uBACD,OAAOA,EAAE,0CACb,IAAK,sBACD,OAAOA,EAAE,yCACb,IAAK,gBACD,OAAOA,EAAE,mCACb,IAAK,iBACD,OAAOA,EAAE,oCACb,IAAK,wCACD,OAAOA,EAAE,2DACb,IAAK,uBACD,OAAOA,EAAE,0CACb,IAAK,wBACD,OAAOA,EAAE,2CACb,IAAK,+BACD,OAAOA,EAAE,kDACb,IAAK,+BACD,OAAOA,EAAE,kDACb,IAAK,6CACD,OAAOA,EACH,gEAER,IAAK,gCACD,OAAOA,EAAE,mDACb,IAAK,0BACD,OAAOA,EAAE,6CACb,IAAK,eACD,OAAOA,EAAE,kCAGjB,OAAOvO,EAAME,OAAO,EAmBhBqP,CAAmBvP,EAAOuO,KAMxBiB,EAHoBZ,EAAuBa,OAC7CH,GAEuCI,KAAK,KAAKC,OACrD9R,EAAS,CACLgC,KAAM,qBACN+P,kBAAmBJ,GAAsC,MAC3D,E,wFC5IC,MAAMK,EAA4BA,CACrCC,EACAC,EACAC,EACAC,EACAC,KAEA,MAAMC,EAAWA,CAACC,EAAGC,IAAMD,EAAEE,cAAcD,GAC3C,IACIP,EAAwBlQ,SAAS2Q,IAAc,IAAAC,EAAAC,EAAAC,EAC3C,MAAMC,EAAQ,CACVX,EACAO,EAAU7E,GACV6E,EAAUK,aACM,QADMJ,EACtBD,EAAUM,cAAM,IAAAL,OAAA,EAAhBA,EAAkBM,KAAKX,GAAUT,KAAK,KAEG,QAFCe,EAC1CV,EACKgB,MAAMC,GAAOA,EAAGtF,KAAO6E,EAAU7E,YAAG,IAAA+E,GAC7B,QAD6BC,EADzCD,EAEMI,cAAM,IAAAH,OAD6B,EADzCA,EAEcI,KAAKX,GACdT,KAAK,KACV,IACEO,EACFC,GAEJtO,IAAIqP,YACA,kBACA,yBACAN,EAAMjB,KAAK,KACd,GAET,CAAE,MAAO1P,GACLQ,YAAOR,EACX,G,4lCCgCJ,MAAMkR,EAA0B,SAAUC,GACtCvP,IAAIqP,YAAY,iBAAkBE,EAAkB,iBACxD,EAEMC,EACF,SAACrD,GAAK,IAAEsD,EAAMnM,UAAArC,OAAA,QAAAyO,IAAApM,UAAA,GAAAA,UAAA,GAAG,CAAC,EAAC,MACnB,CAACrH,EAAUY,KAAa,IAAA8S,EACpB,MAAM/I,EAAwBgJ,YAA4B/S,KAEpDgT,EACF1D,EAAM0D,aACNC,IAASC,6BACTC,YAAsCpJ,GAE1C3K,EAASgU,IAAgBC,uBAAuB,CAAEL,iBAElD5T,EAASkU,IAAWC,mBAvB5B,SAA2BjE,GAClBA,EAAMkE,cAEPlE,EAAMkE,YAAc,UAE5B,CAmBQC,CAAkBnE,GAElB,MAAMkC,EACFkC,YAAY1T,KAAYsP,MAAMqE,SAAWrE,EAAMqE,SAC/CD,YAAY1T,KAAYsP,MAAMkE,aAAelE,EAAMkE,YACjDI,EAAqC,eAAtBtE,EAAMkE,YAG3BpU,EAASkU,IAAWO,yBAAyBD,IAC7CxU,EAASkU,IAAWQ,iBAEpB1U,EAAS,CACLgC,KAAM,uBACNkO,MAAOA,IAGXlQ,EACI2U,YAAsB,CAClBC,mBAAoB1E,EAAM0E,sBAGlC5U,EAAS6U,eACT7U,EAAS8U,GAAiB5E,EAAM6E,gBAChC/U,EACIgV,IAAoBC,uBAChB/E,EAAMgF,aACNhF,EAAMiF,eACNjF,EAAMkF,wBACNZ,IAKRxU,EACIqV,IAAwBC,oBAAoBpF,EAAMrM,mBAEtD7D,EACIuV,YACIrF,EAAMK,6BACFsD,IAAS2B,qCACTC,YACIpL,IAASqL,iBACT/K,EACAgL,YAAuB,0BAAvBA,CACI/U,QAKpBZ,EAAS4V,GAAY1F,EAAMpD,WAC3B9M,EAAS6V,GAAiB3F,EAAM4F,gBAChC9V,EACI+V,IAAgBC,iBACZ9F,EAAM+F,WACN/F,EAAMgG,eAGdlW,EAASmW,YAAgBjG,EAAMkG,eAC/BpW,EAASqW,YAAiBnG,EAAMoG,gBAChCtW,EACIuW,IAAuBC,4BACnBtG,EAAMuG,kBAGdzW,EAAS0W,EAAmBxG,EAAMyG,kBAClC3W,EAAS4W,EAAsB1G,EAAM2G,qBACrC7W,EAASqR,IAAayF,eAAe5G,EAAM6G,QAAU,KACrD/W,EAASgX,eACThX,EACIiX,IAAaC,aACThH,EAAMiH,WACNjH,EAAMkH,WACNlH,EAAMmH,aACO,QADK3D,EAClBxD,EAAMoH,eAAO,IAAA5D,OAAA,EAAbA,EAAe6D,UACfrH,EAAMsH,IACNhD,IAI4BiD,YAAsB7W,KACtD,2BAII4S,EAAO+D,UACPvX,EAAS0X,YAAuBlE,EAAO+D,YAChCrH,EAAMoH,SACbtX,EAAS2X,YAAgCzH,EAAMoH,WAGvDtX,EAAS4X,YAAuB1H,IAEhClQ,EACIgU,IAAgB6D,iCACZ3H,EAAMG,kBAIdrQ,EAASkU,IAAW4D,kBAEhB1F,GACA2F,IAAOC,kBACX,CACH,EAECC,EAAgBC,IAAS,CAC3BlW,KAAM,uBACNzD,QAAS2Z,IAGPC,EAAYA,CAACnY,EAAUuU,KACzBvU,EAASiY,GAAa,IACfG,IACFD,UAAU5D,GACVhT,MAAMkM,IACHzN,EAASuT,EAAS9F,IACXA,KAEVhM,OAAOgM,IAEJ,MADA4K,IAAkBC,YACZ7K,CAAM,IAEf8K,SAAQ,IAAMvY,EAASiY,GAAa,OA8BhCO,EAAeA,CACxBjE,EACAH,EACAvQ,EACA4S,EACAM,KAEA,IAAKxC,EACD,OAAO,EAGX,GAAoB,YAAhBH,EACA,OAAO,EAGX,IAAIqE,EACA5U,GAAoBA,EAAiBiO,OAAO9M,OAAS,EACrD0T,EACAjC,GAAmBA,EAAgB3E,OAAO9M,OAAS,EACnD2T,EACAC,MAAMC,QAAQ9B,IAAWA,EAAO+B,MAAMC,KAAYA,EAAMC,WAC5D,OAAOP,GAAuBC,GAAsBC,CAAQ,EAwC1DjC,EAAsBC,GAAqB3W,IAC7CA,EAAS,CACLgC,KAAM,uBACNzD,QAASoY,IAAmB,IAEhC3W,EAASiZ,IAAYC,eAAe,EAGlCtC,EAAyBC,GAAwB7W,IACnDA,EAAS,CACLgC,KAAM,0BACNzD,QAASsY,IAAsB,IAEnC7W,EAASiZ,IAAYC,eAAe,EAkHlCC,EAAuBA,CAACC,EAAgBC,IAC1CD,GACAC,EAAyBxI,SAASuI,EAAe5b,WA6CxC8b,EAAcA,IAAM,CAACtZ,EAAUY,IACxC2Y,EAAUvZ,EAAUY,GAElB2Y,EAAYA,CAACvZ,EAAUY,KACzB,MAAMsP,EAAQkI,IAAaoB,oBAAoBlF,YAAY1T,MACrD6Y,EAAUnF,YAAY1T,KAAYsP,MAAMuJ,SAAW,EACzD,OAAOrB,IACFmB,UAAUrJ,GACV3O,MAAMkM,IACCyC,EAAMqE,UAAY9G,EAAO8G,SACzBvU,EAAS,CACLgC,KAAM,eACNzD,QAASkP,EAAO8G,UAGpBkF,EAAU,GAAqBhM,EAAOgM,QAY1C,OAT8BvJ,EAAMqE,WAAa9G,EAAO8G,SAEpD8D,IAAkBqB,yBAAyBjM,EAAO8G,SAGtDvU,EA9BayZ,IAAazZ,IAClCA,EAAS,CACLgC,KAAM,oBACNzD,QAASkb,GACX,EA0BeE,CAAgBlM,EAAOgM,UAEhCzZ,EAAS1C,IAAKsc,eAAe,CAAC7d,IAAK8d,cAE5BpM,CAAM,IAEhBhM,OAAOgM,IACJ,MAAM7G,EAAW6G,EAAOqM,aAoBxB,MAlBAnX,YAAO,2BAA4B,CAC/BoX,SAAU,CACNC,QAASpT,MAKbuS,EAAqBvS,EAAU,CAC3B,wBACA,iCAKoB,KAAjB6G,EAAOwM,UAFdja,EAASuT,EAAS,CAAC,IACnB8E,IAAkBC,aAKhB7K,CAAM,GACd,EAGJyM,EAAkBC,IAAS,CAC7BnY,KAAM,qCACNzD,QAAS4b,EAAY,KAAO,iDAG1BrF,GAAoBsF,GAAepa,IACrCA,EAAS,CACLgC,KAAM,qBACNzD,QAAS6b,IAEbpa,EAASqa,KAA4C,EAGnDA,GACFA,IAAM,CAACra,EAAUY,KAGb,GAD6B,SADX0T,YAAY1T,KAAYmU,cAAcA,cAE5C,CACR,MAAMoF,EAAYG,GAAc1Z,GAChCZ,EAASka,EAAeC,GAC5B,MACIna,EAASka,GAAe,GAC5B,EAGFI,GAAiB1Z,IACnB,MAAM2Z,EAAsBjG,YAAY1T,KAAY4Z,IAAID,oBACxD,OAAQA,IAAyD,IAAlCA,EAAoBE,SAAmB,EA6BpE7E,GAAe9I,IAAQ,CACzB9K,KAAM,eACNzD,QAAS,CAAEuO,cAGT+I,GAAoBC,IAAa,CACnC9T,KAAM,qBACNzD,QAAS,CAAEuX,mBAGA,KACXvC,WACA4E,YACAuC,oBAjYyBnG,GAAY5T,MAAOX,EAAUY,KACtD,MAAM+Z,GAAyBrG,YAAY1T,KAAYmW,OAAO6D,OAAS,IAClElX,KAAKqV,GAAUA,EAAMC,WACrB1I,OAAOuK,SAGNC,SADoB1C,IAAaD,UAAU5D,IACXwC,QAAU,GAC1CgE,EAAuBD,EAAkBpX,KAC1CqV,GAAUA,EAAMC,WAUfgC,EAPgBL,EACjBrK,QAAQ2K,IAAOF,EAAqBlK,SAASoK,KAC7CrJ,OACGmJ,EAAqBzK,QAChB2K,IAAON,EAAsB9J,SAASoK,MAGXjW,OAAS,EAIjD,OAHIgW,GACAhb,EAASqR,IAAayF,eAAegE,IAElCE,CAAiB,EA4WxBxC,aAAY,EACZ0C,wBAhV4BA,IAAM,CAAClb,EAAUY,KAC7C,MAAMsP,EAAQoE,YAAY1T,KAAYsP,MAChCrM,EAAmByQ,YAAY1T,KAAYiD,iBAC5CA,iBACC4S,EAAkBnC,YAAY1T,KAAY6V,gBAC3CA,gBACC0E,EAAa7G,YAAY1T,KAAYmW,OAAO6D,MAGlD,IAAK1K,EAAMqE,QACP,OAAO,EAGX,GAA0B,YAAtBrE,EAAMkE,YACN,OAAO,EAGX,IAAIqE,EACA5U,GAAoBA,EAAiBiO,OAAO9M,OAAS,EACrD0T,EACAjC,GAAmBA,EAAgB3E,OAAO9M,OAAS,EACnD2T,EACAC,MAAMC,QAAQsC,IACdA,EAAWrC,MAAMC,KAAYA,EAAMC,WAGvChZ,EAAS,CACLgC,KAAM,2BACNzD,QAJiBka,GAAuBC,GAAsBC,GAKhE,EAoTFyC,WAjTgBC,IAAO,CACvBrZ,KAAM,cACNzD,QAAS8c,IAgTT3E,qBACAE,wBACA0E,aA/RkBC,IAAS,CAC3BvZ,KAAM,gBACNzD,QAASgd,IA8RTC,QA3Ra9K,GAAM,CAAC1Q,EAAUY,KAC9BZ,EAAS,CAAEgC,KAAM,wBAEjB,MAAM7D,EAAQmW,YAAY1T,KAC1B6a,EAAgDtd,EAAMud,cAA9C7E,EAAkB4E,EAAlB5E,mBAAoBF,EAAe8E,EAAf9E,gBACtBU,EAAelZ,EAAMwd,MAAMtE,aAC3BnH,EAAQkI,IAAaoB,oBAAoBrb,GAC/C,IAAIyd,EAAkBhb,IAAWV,YAAY0b,gBACzCzb,EAAkBS,IAAWV,YAAYC,gBAC7C,MAAMmW,EAAgBnY,EAAM0d,aAAavF,cAEf,YAAtBpG,EAAMkE,aACNrQ,IAAIqP,YACA,MACA,2BACA0I,OAAOC,MAAQC,KAAKD,IAAM5d,EAAMqc,IAAIyB,eAAgB,YAI5DC,EACahM,EAAO/R,EAAMge,cAAchM,sBACnC5O,MAAMkM,IAcH,GAbIoJ,GACAxD,EAAwB,aAExBsD,GACAtD,EAAwB,WAExBgE,GACAhE,EAAwB,iBAExBiD,GACAjD,EAAwB,YAGxBlT,EAAgB,6BAA8B,CAC9C,MAAMic,EACFlM,EAAMmM,gBAAgBC,oBACpBC,EACFC,YAAkC5b,MAAe,GACjDwb,EAAgCpX,OAAS,GACzCgN,EACIoK,EACAG,EACAX,EAAgD,+BAChDzd,EAAM+R,MAAMkC,WACZ3E,EAAOlK,OAGnB,CAEA,GAAIpD,EAAgB,mCAAoC,CACpD,MAAMsc,EACFvM,EAAMmM,gBAAgBC,oBAAoBhM,QACrCiC,GAAyB,UAAnBA,EAAEQ,eAEX2J,EACFC,YAAsC/b,MAAe,GACrD6b,GACAzK,EACIyK,EACAC,EACA,eACAve,EAAM+R,MAAMkC,WACZ3E,EAAOlK,OAGnB,CAEIpD,EAAgB,6BD7VYyc,EACxCC,EACAC,EACAC,EACAC,EACA3K,KAEA,GAAI2K,EACA,IACI,MAAMC,EAAyBH,EAAqB,GAAGI,OACjDC,EAA+B,GAAEL,EAAqB,GAAGM,aAAaN,EAAqB,GAAGO,aAC9FC,EAC6B,GAA/BR,EAAqB9X,OACd,GAAE8X,EAAqB,GAAGM,aAAaN,EAAqB,GAAGO,aAChE,IACJE,EACFP,EAAwB9J,MAAMsK,GACnBA,EAAGN,SAAWH,IAEvBU,EACFT,EAAwB9J,MAAMsK,GACnBA,EAAGN,SAAWD,IAKvBnK,EAAQ,CACV+J,EACAE,EACAQ,EACMA,EAA8CG,kBAC9C,GACNH,EACMA,EAA8CI,iBAC9C,GACNF,EACMA,EAA2CC,kBAC3C,GACND,EACMA,EAA2CE,iBAC3C,GACNV,EACAE,EACAG,EACA,EACAjL,GAEJtO,IAAIqP,YACA,kBACA,6BACAN,EAAMjB,KAAK,KAEnB,CAAE,MAAO1P,GACLQ,YAAOR,EACX,CACJ,ECuSYya,CACI1M,EAAM+F,WACN/F,EAAMG,gBACNuN,YAAwBhd,MAAe,EACvCid,YAA8Bjd,MAAe,GAC7C6M,EAAOlK,QAIfvD,EAASuT,EAAS,CAAC,IACnB8E,IAAkByF,cAAcrQ,EAAOlK,OAAO,IAEjD9B,OAAOmF,IACJjE,YAAO,8BAA+B,CAClCoX,SAAU,CACNgE,WAAYnX,KAKhBuS,EAAqBvS,EAAU,CAC3B,wBACA,iCAGJyR,IAAkBC,YAClBtY,EAASuT,EAAS,CAAC,KACZ4F,EAAqBvS,EAAU,CAAC,oBACvC4J,EAA4B5J,EAAS6J,QAAU,GAAIzQ,EAAU0Q,IAE7D1Q,EAAS,CAAEgC,KAAM,uBACjBhC,EAASkU,IAAW8J,YAAY,+BACpC,GACF,EAqLNC,mBA9KwB1J,GAAY,CAACvU,EAAUY,KAC/C,IAAIsP,EAAQoE,YAAY1T,KAAYsP,MAEpC,OADwBA,EAAMqE,UAAYA,EAE/BrI,QAAQgS,QAAQhO,GAEpBiI,EAAUnY,EAAUuU,EAAQ,EAyKnC4J,iBArKA7f,IAAA,IAAGiZ,EAASjZ,EAATiZ,UAAS,OACXvX,IACGA,EAASkU,IAAWlW,SACpBgC,EAASoe,eACTpe,EAASuT,EAAS6E,IAAa+F,mBAAoB,CAAE5G,eACrDvX,EAASgU,IAAgBqK,gBAAgB,CAC5C,EAgKDC,yBA9J6BA,IAAOte,IACpCA,EAASkU,IAAWlW,SACpBgC,EAASoe,eACT,IAAIG,EAAWnG,IAAakG,2BAC5Bte,EAASuT,EAAQtV,IAAC,CAAC,EAAIsgB,GAAQ,IAAEC,WAAY,SAAS,EA2JtDC,mBAxJuBA,IAAOze,IAC9BA,EAAS,CACLgC,KAAM,mBACNzD,QAAS,aAEbyB,EAAS,CACLgC,KAAM,eACNzD,QAAS,MACX,EAiJFgb,YACAzE,oBACA4J,mBArDuBA,KAAA,CACvB1c,KAAM,yBAqDN2c,6BAlDkCC,GAAS,CAAC5e,EAAUY,KAClDge,GAAQA,EAAK5Z,OAAS,GACtBhF,EAAS,CACLgC,KAAM,6BACNzD,QAASqgB,IAGjB5e,EAAS,CAAEgC,KAAM,wBACjB,MAAMkO,EAAQkI,IAAaoB,oBAAoBlF,YAAY1T,MAC3Dsb,EACahM,GACR3O,MAAMkM,IACH4K,IAAkByF,cAAcrQ,EAAOlK,QACvCvD,EAASuT,EAAS,CAAC,GAAG,IAEzB9R,OAAM,KACHzB,EAAS,CAAEgC,KAAM,sBAAuB,GAC1C,EAkCN6c,WA/BeA,KAAA,CAAS7c,KAAM,gBAgC9BqY,6CACApC,e,scCpmBJ,SAAShR,IAAiS,OAApRA,EAAW5K,OAAO6K,OAAS7K,OAAO6K,OAAOC,OAAS,SAAUC,GAAU,IAAK,IAAIzD,EAAI,EAAGA,EAAI0D,UAAUrC,OAAQrB,IAAK,CAAE,IAAI2D,EAASD,UAAU1D,GAAI,IAAK,IAAIwB,KAAOmC,EAAcjL,OAAOkL,UAAUC,eAAeC,KAAKH,EAAQnC,KAAQiC,EAAOjC,GAAOmC,EAAOnC,GAAU,CAAE,OAAOiC,CAAQ,EAAUH,EAASS,MAAMC,KAAMN,UAAY,CAElU/I,UACdsJ,OADc,IAEXC,EAAK9E,EAAAzE,EAAA0E,GAAA,OACS8E,IAAMC,cAAc,MAAOd,EAAS,CACrDgB,QAAS,YACTD,MAAO,8BACNH,GAAqBC,IAAMC,cAAc,OAAQ,CAClD+W,SAAU,UACVC,SAAU,UACV7W,EAAG,yKACF,C,4MCRI,MAAM3K,EAAe,CACxByhB,KAAM,GACNC,oBAC0B,QAAtBC,EAAA7U,IAAS8U,qBAAa,IAAAD,OAAA,EAAtBA,EAAwBxb,KAAIpF,IAAyB,CACjDuP,GAD6BvP,EAAFuP,GAE3BzJ,MAFmC9F,EAAJR,KAG/BshB,KAHyC9gB,EAAJ8gB,WAIlC,GACXC,YAAY,EACZld,MAAO,MAGLmd,EAAkBzhB,YAAY,CAChCC,KAAM,aACNP,eACAQ,SAAU,CACN0N,WAAYA,CAACtN,EAAKO,KAAkB,IAAdH,EAAOG,EAAPH,QAClBJ,EAAM8gB,mBACF1gB,EAAQ0gB,oBAAsB9gB,EAAM8gB,kBAAkB,EAE9DM,oBAAsBphB,IAClBA,EAAMkhB,YAAa,EACnBlhB,EAAMgE,MAAQ,IAAI,EAEtBqd,oBAAqBA,CAACrhB,EAAOshB,KACzBthB,EAAM6gB,KAAOS,EAAOlhB,QACpBJ,EAAMkhB,YAAa,EACnBlhB,EAAMgE,MAAQ,IAAI,EAEtBud,wBAAyBA,CAACvhB,EAAOshB,KAC7BthB,EAAMkhB,YAAa,EACnBlhB,EAAMgE,MAAQsd,EAAOlhB,OAAO,KAK3B0R,EAAUqP,EAAgBrP,QAEhC0P,EAKHL,EAAgBvgB,QAHhBwgB,GADUI,EAAVlU,WACmBkU,EAAnBJ,qBACAC,EAAmBG,EAAnBH,oBACAE,EAAuBC,EAAvBD,uB,60CCxCJ,MAAME,EAAuB/hB,YAAY,CACrCC,KAAM,kBACNP,aAAcoO,cACd5N,SAAU,CACN8hB,eAAgBA,CAAC1hB,EAAKG,KAAkB,IAAdC,EAAOD,EAAPC,QACtBJ,EAAM2hB,QAAUvhB,CAAO,EAE3BwhB,mBAAoBA,CAAC5hB,EAAKO,KAAkB,IAAdH,EAAOG,EAAPH,QAC1BJ,EAAM6hB,QAAQC,gBAAkB1hB,EAChCJ,EAAM6hB,QAAQE,kBAAoB,KAClC/hB,EAAMgiB,gBAAgBC,UAAW,CAAK,EAE1CC,qBAAsBA,CAACliB,EAAKmiB,KAAkB,IAAd/hB,EAAO+hB,EAAP/hB,QAC5BJ,EAAM6hB,QAAQE,kBAAoB3hB,CAAO,EAE7CgiB,iBAAkBA,CAACpiB,EAAKqiB,KAAkB,IAAdjiB,EAAOiiB,EAAPjiB,QACxBJ,EAAM6hB,QAAQS,SAAWliB,EACzBJ,EAAM6hB,QAAQI,UAAW,CAAK,EAElCM,2BAA4BA,CAACviB,EAAKwiB,KAAkB,IAAdpiB,EAAOoiB,EAAPpiB,QAClCJ,EAAMgiB,gBAAgBd,WAAa9gB,EACnCJ,EAAMgiB,gBAAgBC,UAAW,EACjCjiB,EAAMyiB,WAAariB,CAAO,EAE9BsiB,2BAA4BA,CAAC1iB,EAAK2iB,KAAkB,IAAdviB,EAAOuiB,EAAPviB,QAClCJ,EAAMgiB,gBAAgBC,SAAW7hB,EACjCJ,EAAMgiB,gBAAgBd,YAAa,EACnClhB,EAAMyiB,YAAa,EACnBziB,EAAM6hB,QAAQe,MAAM9G,OAAS+G,IAAaxiB,KAAK,EAEnDyiB,iBAAkBA,CAAC9iB,EAAK+iB,KAAkB,IAAd3iB,EAAO2iB,EAAP3iB,QACxB,MAAQ4iB,EAAmC5iB,EAAnC4iB,KAAMlH,EAA6B1b,EAA7B0b,OAAQmH,EAAqB7iB,EAArB6iB,iBACtBjjB,EAAM6hB,QAAQe,MAAQ,CAClBI,OACAlH,SACAmH,mBACH,EAELC,kBAAoBljB,IAChBA,EAAM6hB,QAAQe,MAAQ,CAClBI,KAAM,GACNlH,OAAQ+G,IAAaM,MACxB,EAELC,2BAA6BpjB,IACzBA,EAAMqjB,sBAAwB,CAC1BC,wBAAyB,KACzBlZ,cAAe,KAClB,GAGTmZ,cAAgBllB,IAEZA,EAAQmlB,QAAQC,IAAWC,WAAW,CAAC1jB,EAAK2jB,KAAkB,IAAdvjB,EAAOujB,EAAPvjB,QAC5CJ,EAAM2hB,QAAO7hB,MAAA,GACNE,EAAM2hB,SACNvhB,EAAQuhB,SAAO,IAClBT,YAAY,IAEhBlhB,EAAM4jB,kBAAoBxjB,EAAQyjB,YAClC7jB,EAAMqjB,sBAAqBvjB,IAAA,GACpBE,EAAMqjB,uBACNjjB,EAAQijB,sBACd,IAELhlB,EAAQmlB,QAAQC,IAAWK,SAAU9jB,IACjCA,EAAM2hB,QAAO7hB,IAAA,GACNE,EAAM2hB,SAAO,IAChBT,YAAY,EACZe,SAAU,MACb,IAEL5jB,EAAQmlB,QAAQC,IAAWM,UAAW/jB,IAClCA,EAAM2hB,QAAO7hB,IAAA,GACNE,EAAM2hB,SAAO,IAChBT,YAAY,EACZe,UAAU,GACb,IAIL5jB,EAAQmlB,QAAQQ,IAAkBN,WAAW,CAAC1jB,EAAKikB,KAC/C,MAAQC,EADkDD,EAAP7jB,QAC3C8jB,eACRlkB,EAAM6hB,QAAO/hB,IAAA,GACNE,EAAM6hB,SAAO,IAChBX,YAAY,EACZgD,eAAgBA,GACnB,IAEL7lB,EAAQmlB,QAAQQ,IAAkBF,SAAU9jB,IACxCA,EAAM6hB,QAAO/hB,IAAA,GACNE,EAAM6hB,SAAO,IAChBX,YAAY,EACZe,SAAU,MACb,IAEL5jB,EAAQmlB,QAAQQ,IAAkBD,UAAW/jB,IACzCA,EAAM6hB,QAAO/hB,IAAA,GACNE,EAAM6hB,SAAO,IAChBX,YAAY,EACZe,UAAU,GACb,GACH,IAIHkC,EAaH1C,EAAqB7gB,QAVrBghB,GAFsBuC,EAAtBC,uBACuBD,EAAvBE,wBACkBF,EAAlBvC,oBACAM,EAAoBiC,EAApBjC,qBAEAK,GADgB4B,EAAhB/B,iBAC0B+B,EAA1B5B,4BACAG,EAA0ByB,EAA1BzB,2BACAI,EAAgBqB,EAAhBrB,iBACAI,EAAiBiB,EAAjBjB,kBAGAE,GAFgBe,EAAhBG,iBACcH,EAAdzC,eAC0ByC,EAA1Bf,4BAGW3B,MAA4B,O,sCC/H3C,kLAuBO,MAAM8C,EAAapkB,IAYH,IAXnBqkB,EAAQrkB,EAARqkB,SACAC,EAAOtkB,EAAPskB,QACAC,EAAQvkB,EAARukB,SACAC,EAAQxkB,EAARwkB,SACAC,EAASzkB,EAATykB,UACAC,EAAgB1kB,EAAhB0kB,iBACAC,EAAU3kB,EAAV2kB,WACA9L,EAAU7Y,EAAV6Y,WACA+L,EAAY5kB,EAAZ4kB,aACAC,EAA2B7kB,EAA3B6kB,4BACAC,EAAU9kB,EAAV8kB,WAEA,MAAQ1S,EAAM2S,cAAN3S,EACF4S,EAAiCC,cAGjCC,EAAgBC,EAClBV,EACAC,EACA7L,EAJYwL,EAAW,EAMvBS,GAGEM,EACFhb,cAAA,KAAGL,UAAU,4CAA2CQ,SACnD6H,EAAE8S,EAAcpf,SAGnBuf,EACFjb,cAAA,KAAGL,UAAY,qDAAoDQ,SAC/DH,cAACkb,IAAoB,CAACC,QAASlB,EAAS9Z,SACpCH,cAACob,IAAc,CAACnI,MAAO6H,EAAcO,aAI3CC,EACFlB,GAAYD,EACR7Z,eAAA,KAAGX,UAAU,0CAAyCQ,SAAA,CACjD6H,EAAE,oBAAqB,IACvB4S,EAA+BV,MAGpC5Z,eAAA,KAAGX,UAAU,0CAAyCQ,SAAA,CACjD6H,EAAE,mBAAmB,IAAE4S,EAA+BV,MAG7DqB,EACFnB,GAAYD,EACRna,cAAA,KACIL,UAAY,wBACRya,EAAW,cAAgB,IAC5Bja,SACFga,EACKE,IAAcmB,IAAYC,gBACtBzT,EAAE,iBACFA,EAAE,aACNA,EAAE,gBAGZhI,cAAA,KAAGL,UAAU,sBAAqBQ,SAC9BH,cAAC0b,IAAQ,CACLjB,4BAA6BA,EAC7BD,aAAcA,MAIxBmB,EACFrb,eAAA,KAAGX,UAAU,8BAA6BQ,SAAA,CACrC6H,EAAE,WAAY,IACf1H,eAAA,QAAAH,SAAA,CAAM,IAEFH,cAAC4b,IAAM,CACHC,MAAM,OACNlc,UAAU,iBACVmc,QAAUpf,IACNA,WAAGqf,iBACHxB,GAAY,EACdpa,SACFH,cAAA,KAAAG,SAAI6H,EAAE,gBACD,UAKfgU,EACF1b,eAAA,KAAGX,UAAY,kCAAiCQ,SAAA,CAC3C8Z,EAAS,IAAEjS,EAAE,iBAIhBiU,EACF5B,IAAcmB,IAAYU,gCAE9B,OACI5b,eAAA,WAASX,UAAU,iFAAgFQ,SAAA,CAC/FG,eAAA,OAAKX,UAAU,sFAAqFQ,SAAA,CAChGH,cAAA,OAAKL,UAAU,eAAcQ,SAAE6a,IAC/Bhb,cAAA,OAAAG,SAAM8a,OAEV3a,eAAA,OACIX,UAAY,mEACRsc,EAAe,cAAgB,cAChC9b,SAAA,CACHH,cAAA,OAAKL,UAAU,eAAcQ,SAAEmb,IAC/Btb,cAAA,OAAKL,UAAU,UAASQ,SAAEob,OAE7BU,GACG3b,eAAA,OAAKX,UAAU,oEAAmEQ,SAAA,CAC9EH,cAAA,OAAKL,UAAU,eAAcQ,SAAEwb,IAC/B3b,cAAA,OAAKL,UAAU,UAASQ,SAAE6b,SAG5B,EAILjB,EAAmBA,CAC5BV,EACA8B,EACA1N,EACA2N,EACA1B,IAEIL,IAAcmB,IAAYa,+BACnB,CACH3gB,MAAO,iBACP2f,OAAQX,GAIZA,EAAa,EACN,CACHhf,MAAO,cACP2f,OAAQX,GAIZ0B,EACO,CACH1gB,MAAO,iBACP2f,OAAQc,GAGT,CACHzgB,MAAO,iBACP2f,OAAQ5M,E,sCC1KhB,oEAAO,MAAM6N,EAAc,CACvBC,KAAM,OACNC,WAAY,aACZC,QAAS,UACTC,cAAe,gBACfC,eAAgB,iBAChBC,WAAY,cAGHC,EAAU,CACnBC,KAAM,IACNC,gBAAiB,IACjBC,sBAAuB,IACvBC,kBAAmB,IACnBC,eAAgB,IAChBC,sCAAuC,IACvCC,sBAAuB,IACvBC,uBAAwB,IACxBC,MAAO,I,sCClBX,gBAEe,KACXC,sBAAwBC,IAAkB,CACtClkB,KAAM,4BACNzD,QAAS2nB,IAEbC,gBAAkBC,IAAY,CAC1BpkB,KAAM,oBACNzD,QAAS6nB,IAEbC,iBAAmBC,IAAI,CACnBtkB,KAAM,qBACNzD,QAAS+nB,IAEbC,cAAeA,KAAA,CACXvkB,KAAM,oBAEV0S,cAAeA,KAAA,CACX1S,KAAM,oBAEVyS,yBAA2B+R,IAAqB,CAC5CxkB,KAAM,gCACNzD,QAASioB,IAGbC,uBAAyBC,GAAiB1mB,IACtCA,EAAS,CACLgC,KAAM,2BACNzD,QAASmoB,IAEb1mB,EAAS2mB,IAAatM,4CAA4C,EAEtE2D,YAAc4I,IAAO,CACjB5kB,KAAM,eACNzD,QAASqoB,IAEbC,UAAWA,CAACD,EAASE,KAAc,CAC/B9kB,KAAM,aACN4kB,QAASA,EACTE,UAAWA,IAEfC,UAAWA,KAAA,CACP/kB,KAAM,eAEVhE,MAAOA,KAAA,CACHgE,KAAM,cAEV8V,eAAgBA,KAAA,CACZ9V,KAAM,oBAEVmS,gBAAiBA,KAAA,CACbnS,KAAM,qB,sCCpDd,kCAAO,MAAMglB,EAAerL,IACxB,MAAMsL,EAAUC,GACZA,EAASC,eAAe,KAAM,CAC1BC,OAAQ,MACRC,eAAgB,MAChBC,QAAS,IACTC,MAAO,MAEf,MAAwB,iBAAV5L,EACP,GAAEsL,EAAOO,SAAS7L,SAClB,GAAEsL,EAAOtL,OAAW,C,sCCV/B,8lBAGO,MAAM8L,EACE,YADFA,EAEA,UAFAA,EAGH,OAHGA,EAIK,eAGZrU,EAAcA,CAACsU,EAAUjI,EAAQ3M,KACnC6U,IAAWvU,YAAYsU,EAAUjI,EAAQ3M,EAAM,EAGtC8U,EAAyBA,IAClCxU,EAAYqU,EAAoB,aAAc,gBAErCI,EAA2BA,IACpCzU,EAAYqU,EAAoB,OAAQ,YAE/BK,EAA6BA,IACtC1U,EAAYqU,EAAoB,OAAQ,cAE/BM,EAA+BA,IACxC3U,EAAYqU,EAAoB,OAAQ,gBAE/BO,EAAuBA,IAChC5U,EAAYqU,EAAoB,aAAc,gBAErCQ,EAAwBA,IACjC7U,EAAYqU,EAAoB,aAAc,eAErCS,EAAcA,IACvB9U,EAAYqU,EAAsB,aAAc,YAEvCU,EAAiBA,IAC1B/U,EAAYqU,EAAsB,aAAc,gBAEvCW,EAAuBA,IAChChV,EAAYqU,EAAyB,OAAQ,kBAEpCY,EAAkBA,IAC3BjV,EACIqU,EACA,iBACA,wBAGKa,EAAcA,IACvBlV,EAAYqU,EAAyB,iBAAkB,WAE9Cc,EAAoBA,IAC7BnV,EAAYqU,EAAyB,iBAAkB,iBAE9Ce,EAAgBA,IACzBpV,EAAYqU,EAAyB,iBAAkB,SAE9CgB,EAAiBA,CAC1BllB,EACAmlB,EACAC,EACAC,EACAC,EACAC,KAEA,OAAQJ,GACJ,KAAKK,IAAuBC,eAC5B,KAAKD,IAAuBE,qBAGxBtB,IAAWpW,KAAK,CACZ2X,MAAO,eACPJ,iBAAmB,GAAEA,MAEzBnB,IAAWvU,YACPqU,EACA,qBACAkB,EAAW,SAAW,SACrB,GAAEC,KACH,GAEJjB,IAAWpW,KAAK,CACZ2X,MAAO,iBACP3lB,OAAS,GAAEA,IACX4lB,YAAc,GAAEN,IAChBnE,SAAW,GAAEoE,MAIzBnB,IAAWvU,YACPqU,EACA,OACAiB,EACA,KACA,EACH,EAGQU,EAAgBA,CAAC7lB,EAAQ8lB,KAClC,MAAM5J,EAAS4J,EAAW,qBAAuB,yBAC3CvW,EAAQuW,EACP,eAAc9lB,IACd,iBAAgBA,IACvBokB,IAAWvU,YAAY,YAAaqM,EAAQ3M,EAAM,EAGzCwW,EAAiBA,CAACC,EAAmBnS,EAAY/W,IAC1DsnB,IAAW6B,yBACP/B,EACA,cACC,SAAQ8B,IACTlpB,EACA+W,GAGFqS,EAAkB,uCACXC,EAAoBA,CAC7BC,EACAC,EACAC,EACAC,EACAC,EACAC,KACC,IAAAC,EAAAC,EAAAC,EAAAC,EACD,MAAMC,EAAmBR,EACnB,MACAC,EACA,UACA,MAEwC,IAAAQ,EAAAC,EAAAC,EAAAC,EAA9C,OAAId,EACO,CACHe,UACU,QAANJ,EAAA/pB,cAAM,IAAA+pB,GAAI,QAAJC,EAAND,EAAQK,UAAE,IAAAJ,GAAQ,QAARC,EAAVD,EAAYK,cAAM,IAAAJ,GAAO,QAAPC,EAAlBD,EAAA/iB,KAAA8iB,GAAuB,UAAE,IAAAE,OAAnB,EAANA,EAA2B9qB,IAAI,cAAe8pB,EAClDoB,iBACyC,IAA9BjB,EACD,CAACA,GACD,GACVkB,SAAUT,EACVN,gBACAC,aAKD,CACHU,UAAgB,QAANT,EAAA1pB,cAAM,IAAA0pB,GAAI,QAAJC,EAAND,EAAQU,UAAE,IAAAT,GAAQ,QAARC,EAAVD,EAAYU,cAAM,IAAAT,GAAO,QAAPC,EAAlBD,EAAA1iB,KAAAyiB,GAAuB,UAAE,IAAAE,OAAnB,EAANA,EAA2BzqB,IAAI,cAAe8pB,EACxDoB,YACsB,oBAAXE,OAAyB,CAAC1uB,OAAOC,KAAKyuB,QAAQ,IAAM,GAE/DD,SAAUT,EACVN,gBACH,C,sCCxJL,wCAwBe,KACXzR,UArBc,WACd0S,cAAazZ,KAAK0Z,YAAmB,aACzC,EAoBInN,cAlBkB,SAAUva,GAC5BynB,cAAazZ,KAAK0Z,YAAmB,sBAAwB1nB,GACjE,EAiBI2nB,QAfY,SAAU3nB,GACtBhD,OAAOC,SAAS4e,KAAO+L,YAAe,SAAW5nB,EACrD,EAcImW,yBAZ6B,SAAUnF,GACvChU,OAAO6qB,QAAQC,aACX,CAAC,EACDC,SAASlnB,MACT6mB,YAAmB,kBAAoB1W,GAE/C,E,gMCdA,MAAMgX,EAA8BA,CAChC7V,EACA8V,EACAC,KAEA,MAAMC,EAAoBF,EAAmB9nB,KACxCioB,GAASA,EAAKjW,mBAEnB,OACMA,IAC+C,IAAjDgW,EAAkBE,QAAQlW,GAEnB8V,EAAmBtY,MACrB2Y,GAAMA,EAAEnW,mBAAqBA,IAI/B+V,CAAe,EAGpBK,EAA0BpW,GAC5BqW,YAEI,IAAIC,KAAKC,aAAa,CAACvW,GAAmB,CAAE1T,KAAM,aAAckqB,GAC5DxW,ICdZ,MAAMyW,EAAgBtuB,YAAY,CAC9BC,KAAM,WACNP,aAAc,CAAC,EACfQ,SAAU,CACN0N,WAAYA,CAAC2gB,EAAM9tB,KAAkB,IAAdC,EAAOD,EAAPC,QACnB,ODgDI8L,EChDmB9L,EDiDhBgN,YAA2B,CACtC8gB,UAAWd,EACPlhB,EAASqL,iBACTrL,EAASmhB,oBAAsB,GAC/BnhB,EAASohB,iBAEb9gB,sBAAuBN,EAASM,sBAChC2hB,UAAWjiB,EAASmhB,mBACpBe,+BAAgCliB,EAASkiB,iCATjCliB,KChD2B,EAEnCmiB,mBAAoBA,CAACJ,EAAM1tB,IDWKJ,KAIlC,IAAAmuB,EAAAnuB,EAHFouB,yBAAiB,IAAAD,EAAGE,IAAgBF,EAAAG,EAAAtuB,EACpCqM,6BAAqB,IAAAiiB,EAAG,KAAIA,EAAAC,EAAAvuB,EAC5BiuB,sCAA8B,IAAAM,GAAQA,EAEtC,MAAMpB,EAAkB,CACpB/V,iBAAkBgX,EAClBI,YAAahB,EAAuBY,IAElClB,EAAqBuB,IAAoBrpB,KAAKgS,IAAgB,CAChEA,mBACAoX,YAAahB,EAAuBpW,OAGxC,MAAO,CACH2W,UAAWd,EACPmB,EACAlB,EACAC,GAEJa,UAAWd,EACX7gB,wBACA4hB,iCACH,ECjCcS,CAD2BtuB,EAAPH,SAG/B0uB,aAAcA,CAAC9uB,EAAOshB,KAAW,IAAAyN,EAC7B/uB,EAAMkuB,WACa,QAAfa,EAAA/uB,EAAMmuB,iBAAS,IAAAY,OAAA,EAAfA,EAAiBha,MACZia,GAAaA,EAASzX,mBAAqB+J,EAAOlhB,YAClD,CAAC,CAAC,EAEf6uB,kCAAmCA,CAACjvB,EAAKmiB,KAAkB,IAAd/hB,EAAO+hB,EAAP/hB,QACzCJ,EAAMouB,+BACFhuB,EAAQguB,8BAA8B,KAK/Cc,EAKHlB,EAAcptB,QAJd0M,EAAU4hB,EAAV5hB,WAEAwhB,GADkBI,EAAlBb,mBACYa,EAAZJ,cACAG,EAAiCC,EAAjCD,kCAEWjB,MAAqB,O,sCC/CpC,gRAAO,MAAMmB,EAA8BnvB,GACvCA,EAAMovB,MAAMC,iBAAiBC,qBAEpBC,EAA0BvvB,GAAUA,EAAMovB,MAAMC,iBAEhDG,EAAkBxvB,GAAUA,EAAMovB,MAAMC,iBAAiBI,SAEzDC,EAA6B1vB,GACtCA,EAAMovB,MAAMC,iBAAiBM,oBAEpBC,EAAiBA,CAAC5vB,EAAO8H,KAAU,IAAA+nB,EAAAC,EAAA,OAChB,QADgBD,EAC5C7vB,EAAMovB,MAAMC,wBAAgB,IAAAQ,GAAW,QAAXC,EAA5BD,EAA8BE,iBAAS,IAAAD,OAAX,EAA5BA,EAAyC/a,MACpCib,GAAaA,EAASloB,aAAeA,GACzC,EAEQmoB,EAAyBjwB,GAClCA,EAAMovB,MAAMC,iBAAiBxN,QAEpBqO,EAAyBlwB,GAClCA,EAAMovB,MAAMC,iBAAiBrN,gBAEpBmO,EAA2BnwB,GACpCA,EAAMovB,MAAMC,iBAAiBzL,iB,ukCCNjC,MAAMwM,EAEFC,YAAY/gB,GAA2B,KAD/BghB,aAAO,EAEX9mB,KAAK8mB,QAAUhhB,EACf9F,KAAK8mB,QAAQC,iBAAmB/mB,KAAK+mB,iBAAiBvnB,KAAKQ,MAC3DA,KAAK8mB,QAAQE,aAAehnB,KAAKgnB,aAAaxnB,KAAKQ,MACnDA,KAAK8mB,QAAQG,cAAgBjnB,KAAKinB,cAAcznB,KAAKQ,KACzD,CAEAhI,MACI,OAAOgI,KAAK8mB,OAChB,CAEAI,SAASC,GASL,OAAOnnB,KAAK8mB,QAAQxb,MARpB,SAAqBV,EAAoBC,GACrC,OAAID,EAAEuc,KAAetc,EAAEsc,GACZ,EAGJvc,EAAEuc,GAAatc,EAAEsc,GAAa,GAAK,CAC9C,GAGJ,CAEAJ,mBACI,OAAO/mB,KAAKknB,SAAS,YACzB,CAEAF,eACI,OAAOhnB,KAAKknB,SAAS,QACzB,CAEAD,gBACI,OAAOjnB,KAAKknB,SAAS,UACzB,EA+GWE,IAvGf,MAGIP,cAAwE,IAA5DQ,EAAS3nB,UAAArC,OAAA,QAAAyO,IAAApM,UAAA,GAAAA,UAAA,GAAG,UAAW4nB,EAA8B5nB,UAAArC,OAAA,QAAAyO,IAAApM,UAAA,GAAAA,UAAA,GAAG,CAAC,EAAC,KAFtE2nB,eAAS,OACTE,eAAS,EAELvnB,KAAKqnB,UAAYA,EACjBrnB,KAAKunB,UAAYD,EAAQC,WAAaC,GAC1C,CAEAC,cACI,OAAOznB,KAAKunB,UAAU7rB,QAAQsE,KAAKqnB,YAAc,CAAC,CACtD,CAEAK,MAAMxtB,GAEF,OADA8F,KAAKunB,UAAUI,QAAQ3nB,KAAKqnB,UAAWntB,IAChC,CACX,CAEAO,OAAO+C,GACH,MAAMtD,EAAO8F,KAAKynB,cACdG,EAAaC,UAAUrqB,GAAKsqB,cAEhC9nB,KAAK+nB,MAAMH,EAAY1tB,EAC3B,CAEA6tB,MAAMvqB,EAAatD,GAGf,cAFOA,EAAKsD,GACZwC,KAAK0nB,MAAMxtB,IACJ,CACX,CAEAlC,IAAYwF,GAAa,IAAA7G,EACrB,MAAMuD,EAAO8F,KAAKynB,cACdG,EAAaC,UAAUrqB,GAAKsqB,cAUhC,OAPI5tB,EAAK0tB,IACL1tB,EAAK0tB,GAAYxqB,SACjBlD,EAAK0tB,GAAYxqB,SAAU,IAAI4qB,MAAOC,WAEtCjoB,KAAK+nB,MAAMH,EAAY1tB,GAGwB,QAAnDvD,EAASuD,EAAK0tB,IAAe1tB,EAAK0tB,GAAY3qB,aAAK,IAAAtG,IAAgB,IACvE,CAEAuxB,IAAI1qB,EAAaP,EAAgBG,EAAgB+qB,GAC7C,MAAMjuB,EAAO8F,KAAKynB,cACZG,EAAaC,UAAUrqB,GAAKsqB,cAE5BM,EAAU,CACZhrB,QAAUA,GAAWA,EAAQ6qB,WAAc,KAC3CE,UACKA,GAAaA,EAAUF,YAAc,IAAID,MAAOC,UACrDhrB,MAAOA,GAQX,OALA+C,KAAKunB,UAAUI,QAAQ3nB,KAAKqnB,UAAS/wB,IAAA,GAC9B4D,GAAI,IACP,CAAC0tB,GAAaQ,KAGXA,GAAW,IACtB,CAGAC,gBACI,MAAMnuB,EAAO8F,KAAKynB,cAElB,IAAK,MAAMa,KAAQpuB,EACXA,EAAK2F,eAAeyoB,IAEhBpuB,EAAKouB,GAAMlrB,SACXlD,EAAKouB,GAAMlrB,SAAU,IAAI4qB,MAAOC,WAEhCjoB,KAAK+nB,MAAMO,EAAMpuB,EAIjC,CAEAquB,QACI,MAAMruB,EAAO8F,KAAKynB,cACZe,EAA0B,GAEhC,IAAK,MAAMF,KAAQpuB,EACXA,EAAK2F,eAAeyoB,IACpBE,EAAK5e,KAAK,CACNpM,IAAKirB,UAAUH,GACfrrB,MAAO/C,EAAKouB,GAAMrrB,MAClBkrB,UAAWjuB,EAAKouB,GAAMH,UACtB/qB,QAASlD,EAAKouB,GAAMlrB,UAKhC,OAAO,IAAIwpB,EAAa4B,GAAMxwB,KAClC,CAEA0wB,QACI,OAAO1oB,KAAKunB,UAAUoB,cAAc3oB,KAAKqnB,UAC7C,E,scC/JJ,SAAS/nB,IAAiS,OAApRA,EAAW5K,OAAO6K,OAAS7K,OAAO6K,OAAOC,OAAS,SAAUC,GAAU,IAAK,IAAIzD,EAAI,EAAGA,EAAI0D,UAAUrC,OAAQrB,IAAK,CAAE,IAAI2D,EAASD,UAAU1D,GAAI,IAAK,IAAIwB,KAAOmC,EAAcjL,OAAOkL,UAAUC,eAAeC,KAAKH,EAAQnC,KAAQiC,EAAOjC,GAAOmC,EAAOnC,GAAU,CAAE,OAAOiC,CAAQ,EAAUH,EAASS,MAAMC,KAAMN,UAAY,CAElU/I,UACdsJ,OADc,IAEXC,EAAK9E,EAAAzE,EAAA0E,GAAA,OACS8E,IAAMC,cAAc,MAAOd,EAAS,CACrDgB,QAAS,aACTD,MAAO,8BACNH,GAAqBC,IAAMC,cAAc,WAAY,CACtD8F,GAAI,iBACU/F,IAAMC,cAAc,OAAQ,CAC1CG,EAAG,2BACaJ,IAAMC,cAAc,OAAQ,CAC5CgX,SAAU,UACV7W,EAAG,+MACHC,KAAM,UACN2W,SAAU,YACKhX,IAAMC,cAAc,IAAK,CACxCwoB,SAAU,sBACVpoB,KAAM,WACQL,IAAMC,cAAc,OAAQ,CAC1CG,EAAG,q1BACYJ,IAAMC,cAAc,OAAQ,CAC3CG,EAAG,mmDACD,C,sCCxBJ,wHAOA,MAWMsoB,EAAe3yB,YAAY,CAC7BC,KAAM,UACNP,aAbiBkzB,MACjB,MAAMC,EAAiB,CAAC,EAOxB,OANAr0B,OAAOC,KAAKq0B,KAA2B5uB,SAAS6C,IAC5C,MAAMgsB,EAAM3rB,UAAWmF,WAAWumB,IAA0B/rB,GAAOO,KACnEurB,EAAe9rB,GAASgsB,GAElBD,IAA0B/rB,GAAOisB,OAAO,IAE3CH,CAAc,EAKPD,GACd1yB,SAAU,CACN+yB,UAAW,CACP7gB,QAASA,CAAC9R,EAAKG,KAAkB,IAAdC,EAAOD,EAAPC,QACXJ,EAAMI,EAAQT,QAAUS,EAAQqG,QAChCzG,EAAMI,EAAQT,MAAQS,EAAQqG,MAClC,EAEJmsB,QAAUxyB,IACN,MAAAyyB,EAAwBL,IAA0BpyB,EAAQT,MAAlDkH,EAAMgsB,EAANhsB,OAAQG,EAAG6rB,EAAH7rB,IAChB,IACIF,UAAWC,aAAaC,EAAK5G,EAAQqG,MAAOI,EAChD,CAAE,MAAOI,GACLzC,YAAOyC,EACX,CACA,MAAO,CAAE7G,UAAS,MAMnBiyB,MAAoB,QAE5B,MAAQM,EAAcN,EAAazxB,QAA3B+xB,UAEFG,EAAsB9yB,GAAUA,EAAMovB,MAAM2D,UAAUC,O,sCC7CnE,kCAAO,MAAMC,EAAqBjzB,GAAUA,EAAMkzB,M,qsCCIlD,MAAM9zB,EAAe,CACjBsG,iBAAkB,KAClBytB,gBAAiB,KACjB/gB,4BAA6B,KAC7BghB,6CACIlnB,KACAA,IAASM,uBACT6mB,YAAqBnnB,IAASM,wBAC9BN,IAASlK,iBACTkK,IAASlK,gBAAgB,uBAG3BsxB,EAAsBtzB,GACnBA,EAAM0F,kBAAsD,KAAlC1F,EAAM0F,iBAAiBiO,OAKlD3T,EAAMozB,+CACLpzB,EAAMoS,4BAEA,0DAJX,EAHW,+BAWTmhB,EAAYvzB,GAAKF,IAAA,GAChBE,GAAK,IACRmzB,gBAAiBG,EAAmBtzB,KAGlCwzB,EAAwB9zB,YAAY,CACtCC,KAAM,mBACNP,eACAQ,SAAU,CACNuX,oBAAqBA,CAACnX,EAAOshB,IACzBiS,EAAQzzB,IAAC,CAAC,EAAIE,GAAK,IAAE0F,iBAAkB4b,EAAOlhB,WAClDqzB,sBAAwBzzB,GACpBuzB,EAAQzzB,IAAC,CAAC,EAAIE,GAAK,IAAE0F,iBAAkB,QAC3C0R,+BAAgCA,CAACpX,EAAOshB,IACpCiS,EAAQzzB,IAAC,CAAC,EACHE,GAAK,IACRoS,4BAA6BkP,EAAOlhB,cAK7CszB,EAIHF,EAAsB5yB,QAHtBuW,EAAmBuc,EAAnBvc,oBACAsc,EAAqBC,EAArBD,sBACArc,EAA8Bsc,EAA9Btc,+BAGWoc,MAA6B,O,sCCxD7B,KACXG,eAAgB,iBAChBl2B,WAAY,oBACZkQ,4BAA6B,qCAC7Bc,gBAAiB,yBACjBK,2BAA4B,oCAC5BjB,sBAAuB,+B,+/CCH3B,MAAMtC,EAAcpL,IAAA,IAAGyzB,EAAKzzB,EAALyzB,MAAOC,EAAM1zB,EAAN0zB,OAAQ3pB,EAAS/J,EAAT+J,UAAWM,EAAKrK,EAALqK,MAAUspB,EAAUlvB,EAAAzE,EAAA0E,GAAA,OACjEgG,eAAA,MAAA/K,IAAA,CACI,gBAAc,GACdi0B,KAAK,MACL,kBAAgB,UAChBjqB,QAAQ,aACR8pB,MAAOA,EACPC,OAAQA,EACR3pB,UAAWA,EACXM,MAAOA,GACHspB,GAAU,IAAAppB,SAAA,CACdH,cAAA,SAAOmF,GAAG,eAAchF,SAAC,YACzBH,cAAA,QAAMR,EAAE,skCACN,EAEVwB,EAAYyoB,UAKX,GACDzoB,EAAY0oB,aAAe,CACvBL,MAAO,IACP1pB,UAAW,IAGAP,QAAMuqB,KAAK3oB,E,sCC7B1B,kDAQO,MAAM4oB,EAAc,SACvBC,EACAvnB,EACAwnB,GAGC,IAFDhhB,EAAKnK,UAAArC,OAAA,QAAAyO,IAAApM,UAAA,GAAAA,UAAA,GAAG,EACRqJ,EAACrJ,UAAArC,OAAA,EAAAqC,UAAA,QAAAoM,EAED,MAAM1U,EAAU,CACZ,CAAC0zB,IAAgBC,eAAgB,KAGd,CACHC,iBAAmBrvB,GACfA,GAAyC,IAAjCA,EAAKsvB,eAAejQ,SAChCkQ,aAAc,eACd/f,MAAOpC,EAAE,kCACToiB,WAAYC,IAAkBC,cAC9BjS,MAAO,CACHkS,KAAM,UACNC,QAASxiB,EACL,wCACA,CAAEc,MAAOA,EAAO2hB,UAAW3hB,IAE/BnP,QAASqO,EACL,wCACA,CAAEc,MAAOA,IAEb4hB,kBAAmB1iB,EACf,mDAEJ2iB,iBAAkB3iB,EACd,kDAEJ4iB,aAAa,GAEjBC,OAAQ,WAKxB,CAACd,IAAgBe,iBAAkB,KAGhB,CACHb,iBAAmBrvB,KACVA,KAGDA,EAAKmwB,QAAQpY,QAAQqY,oBAGjBpwB,EAAKqwB,YAKjBd,aAAc,eACd/f,MAAOpC,EAAE,mCACToiB,WAAYC,IAAkBa,eAC9B7S,MAAO,CACHmS,QAASxiB,EACL,yCACA,CAAEc,MAAOA,EAAO2hB,UAAW3hB,IAE/B8hB,aAAa,EACbO,MAAM,EACNT,kBAAmB1iB,EACf,oDAEJ2iB,iBAAkB3iB,EACd,mDAEJojB,WAAY,kCACZC,iBAAkB,OAClBC,UAAU,GAEdT,OAAQ,WAKxB,CAACd,IAAgBwB,oBAAqB,KAClC,OAAQzB,GACJ,IAAK,cACD,MAAO,CACHG,iBAAmBrvB,GAEVA,IACqC,IAAlCA,EAAK4wB,OAAOC,mBACf7wB,EAAKsvB,eAAewB,eACjB9wB,EAAKsvB,eAAewB,cAAcvmB,KAC9B7C,EAGhB6nB,aAAc,eACd/f,MAAOpC,EACH,iDAEJoiB,WAAYC,IAAkBsB,kBAC9BtT,MAAO,CACHmS,QAASxiB,EACL,uDACA,CAAEc,MAAOA,EAAO2hB,UAAW3hB,IAE/BnP,QAASqO,EACL,uDACA,CAAEc,MAAOA,IAEb8hB,aAAa,EACbO,MAAM,EACNT,kBAAmB1iB,EACf,kEAEJ2iB,iBAAkB3iB,EACd,iEAEJuiB,KAAM,UACNa,WAAY,wBACZC,iBAAkB,SAClBC,UAAU,IAGtB,IAAK,iBACD,MAAO,CACHrB,iBAAmBrvB,IAAS,IAAAgxB,EACxB,OACKhxB,IACsC,KAAxB,QAAXgxB,EAAAhxB,EAAK4wB,cAAM,IAAAI,OAAA,EAAXA,EAAaH,oBAChB7wB,EAAKsvB,eAAewB,gBAChB9wB,EAAKsvB,eAAewB,cAAcvmB,KAC/B7C,IAC6B,IAA7B1H,EAAKixB,oBAA+B,EAGpD1B,aAAc,eACd/f,MAAOpC,EAAE,gCACToiB,WAAYC,IAAkByB,kBAC9BzT,MAAO,CACHmS,QAASxiB,EAAE,sCAAuC,CAC9Cc,MAAOA,EACP2hB,UAAW3hB,IAEf8hB,aAAa,EACbO,MAAM,EACNZ,KAAM,UACNG,kBAAmB1iB,EACf,iDAEJ2iB,iBAAkB3iB,EACd,gDAEJrO,QAASqO,EAAE,sCAAuC,CAC9Cc,MAAOA,IAEXsiB,WAAY,wBACZC,iBAAkB,SAClBC,UAAU,IAGtB,QACI,OACR,EAGJ,CAACvB,IAAgBgC,iBAAkB,KAC/B,OAAQjC,GACJ,IAAK,eACL,IAAK,eACD,MAAO,CACHG,iBAAmBrvB,GACfA,GACAA,EAAKoxB,aACLpxB,EAAKoxB,YAAYC,aACoB,IAArCrxB,EAAKoxB,YAAYC,WAAWC,KAChC/B,aAAc,eACd/f,MAAOpC,EAAE,sCACToiB,WAAYC,IAAkB8B,gBAC9B9T,MAAO,CACHmS,QAASxiB,EACL,4CACA,CAAEc,MAAOA,EAAO2hB,UAAW3hB,IAE/BnP,QAAS,GACTixB,aAAa,EACbO,MAAM,EACNT,kBAAmB1iB,EACf,uDAEJ2iB,iBAAkB3iB,EACd,sDAEJuiB,KAAM,UACNa,WAAY,wBACZC,iBAAkB,SAClBC,UAAU,IAGtB,IAAK,cACD,MAAO,CACHrB,iBAAkBA,KACP,EAGXE,aAAc,eACd/f,MAAOpC,EAAE,4CACToiB,WAAYC,IAAkB+B,eAC9B/T,MAAO,CACHmS,QAASxiB,EACL,kDACA,CAAEc,MAAOA,EAAO2hB,UAAW3hB,IAE/BnP,QAASqO,EACL,kDACA,CAAEc,MAAOA,IAEb8hB,aAAa,EACbO,MAAM,EACNT,kBAAmB1iB,EACf,6DAEJ2iB,iBAAkB3iB,EACd,4DAEJuiB,KAAM,UACNa,WAAY,wBACZC,iBAAkB,SAClBC,UAAU,IAGtB,QACI,OACR,EAGJ,CAACvB,IAAgBsC,kBAAmB,KAChC,OAAQvC,GACJ,IAAK,qBACD,MAAO,CACHG,iBAAkBA,KAAM,EACxBE,aAAc,eACd/f,MAAOpC,EAAE,gCACToiB,WAAYC,IAAkByB,kBAC9BzT,MAAO,CACHmS,QAASxiB,EAAE,sCAAuC,CAC9Cc,MAAOA,EACP2hB,UAAW3hB,IAEf8hB,aAAa,EACbO,MAAM,EACNZ,KAAM,UACNG,kBAAmB,KACnBC,iBAAkB,MAClBhxB,QAASqO,EAAE,sCAAuC,CAC9Cc,MAAOA,IAEXsiB,WAAY,wBACZC,iBAAkB,SAClBC,UAAU,IAGtB,IAAK,kBACD,MAAO,CACHrB,iBAAkBA,KAAM,EACxBE,aAAc,eACd/f,MAAOpC,EACH,iDAEJoiB,WAAYC,IAAkBsB,kBAC9BtT,MAAO,CACHmS,QAASxiB,EACL,uDACA,CAAEc,MAAOA,EAAO2hB,UAAW3hB,IAE/BnP,QAASqO,EACL,uDACA,CAAEc,MAAOA,IAEb8hB,aAAa,EACbO,MAAM,EACNT,kBAAmB1iB,EACf,kEAEJ2iB,iBAAkB3iB,EACd,iEAEJuiB,KAAM,UACNa,WAAY,wBACZC,iBAAkB,SAClBC,UAAU,IAGtB,QACI,OACR,EAGJnD,QAASA,KAAA,CAAS,IAGtB,OAAO9xB,EAAQwzB,GAAYxzB,EAAQwzB,KAAcxzB,EAAiB,SACtE,C,oyCC1RA,MAAM2C,EAAcA,CAAC1B,EAAUoF,KAC3BpF,EAASg1B,aAAU,IACnBh1B,EAASmC,aAAM,IACfQ,YAAOyC,EAAE,EAGPsG,EAAc,CAChBupB,wBAAyB,0BACzBC,wBAAyB,0BACzBC,aAAc,eACdC,iBAAkB,mBAClBC,UAAW,8BACXC,YAAa,uBACbC,iBAAkB,mBAClBC,aAAc,eACdC,sBAAuB,2BACvBC,oBAAqB,iCACrBC,wBAAyB,iCACzBC,yCACI,2CACJC,wCACI,0CACJC,2CACI,6CACJC,0CACI,4CACJC,iCAAkC,mCAClCC,gCAAiC,kCACjCC,gCAAiC,kCACjCC,+BAAgC,iCAChCC,YAAa,cACbC,WAAY,aACZC,4CACI,8CACJC,8CACI,gDACJC,4CACI,8CACJC,0CACI,4CACJC,iBAAkB,mBAClBC,wBAAyB,0BACzBC,uBAAwB,yBACxBC,YAAa,cACbC,cAAe,gBACfC,uBAAwB,0BAGtBC,EAAcA,CAChBpyB,EACAqyB,EACAC,EACAC,KAA4B,CAE5Bn1B,KAAM0J,EAAYypB,aAClB52B,QAAS,CACLqG,QACAqyB,OACAC,eACAC,kCAgCFC,EAA0BA,KAAA,CAC5Bp1B,KAAM0J,EAAYgqB,sBAahB2B,EAAeC,IAAO,CACxBt1B,KAAM0J,EAAY8pB,aAClBj3B,QAAS+4B,IAGPC,EAAax6B,GAAQ,CAACiD,EAAUY,KAClC,MAAMzC,EAAQyC,IACR42B,EAAqB,CACvBC,SAAU16B,EACV+M,OAAQwD,IAAGC,UAAUmqB,YAAwBv5B,KAG5CoC,OAAOC,SAASsJ,OAGjB9J,EAASuR,YAAKimB,IAFdx3B,EAAS23B,YAAQH,GAGrB,EAGEI,EAAmCA,CACrCC,EACAX,EACAY,KAAsB,CAEtB91B,KAAM0J,EAAYkqB,yCAClBr3B,QAAS,CACLw5B,IAAKF,EACLX,eACAY,4BAIFE,EAAkCA,CAACH,EAAkBX,KAAiB,CACxEl1B,KAAM0J,EAAYmqB,wCAClBt3B,QAAS,CACLw5B,IAAKF,EACLX,aAAcA,KAIhBe,EAAqCA,CACvCJ,EACAX,EACAY,KAAsB,CAEtB91B,KAAM0J,EAAYoqB,2CAClBv3B,QAAS,CACLw5B,IAAKF,EACLX,eACAY,4BAIFI,EAAoCA,CAACL,EAAkBX,KAAiB,CAC1El1B,KAAM0J,EAAYqqB,0CAClBx3B,QAAS,CACLw5B,IAAKF,EACLX,aAAcA,KAIhBiB,EAAoCA,CAACC,EAAgBlB,KAAiB,CACxEl1B,KAAM0J,EAAY4qB,4CAClB/3B,QAAS,CACLw5B,IAAKK,EACLlB,aAAcA,KAIhBmB,EAAsCA,CAACD,EAAgBlB,KAAiB,CAC1El1B,KAAM0J,EAAY6qB,8CAClBh4B,QAAS,CACLw5B,IAAKK,EACLlB,aAAcA,KA4GhBoB,EAAsBA,KAAA,CACxBt2B,KAAM0J,EAAYmrB,cA8BhB0B,EAA0B/kB,IAC5B,MAAMglB,EACFhlB,EAAOilB,QAAUjlB,EAAOilB,OAAOxB,KAAO,GAC/BzjB,EAAOilB,OAAOxB,KAAO,GAAKzjB,EAAOilB,OAAOC,KACzC,EAIJC,EAAY,CACdH,KAAMA,EAAO,EAAI,EAAIA,EACrBI,KAJAplB,EAAOilB,QAAUjlB,EAAOilB,OAAOxB,KAAO,EAAyB,EAArBzjB,EAAOilB,OAAOC,KAAW,IAOvE,OAAAz6B,IAAA,GACOuV,GAAM,IACTilB,OAAQE,GAAS,EAoaV,KACXL,sBACAD,sCACAF,oCACAz2B,cACAgK,cACAmtB,WApdgBv1B,GAAUtD,IAC1BA,EAASg1B,aAAU,IACnB8D,YAAS,CAACx1B,EAAKC,SACVhC,MAAMqF,IACCA,GAAYA,EAASrD,QACrBvD,EAASq3B,EAAYzwB,EAASrD,SAElCvD,EAASo3B,KACTp3B,EAASg1B,aAAU,GACb,IAETvzB,OAAOU,GAAUT,EAAY1B,EAAUmC,IAAO,EA0cnD42B,qBAziByBA,CAACzB,EAASJ,KAAiB,CACpDl1B,KAAM0J,EAAYupB,wBAClB12B,QAAS,CACLw5B,IAAKT,EACLJ,aAAcA,KAsiBlB8B,qBAliByBA,CAAC1B,EAASJ,KAAiB,CACpDl1B,KAAM0J,EAAYwpB,wBAClB32B,QAAS,CACLw5B,IAAKT,EACLJ,aAAcA,KA+hBlB+B,0BAxT+B3B,GAAat3B,IAC5CA,EAASg1B,aAAU,IACnB9E,YAAMgJ,IAAKjE,wBAAyB,CAChCh4B,KAAMk8B,KAAK5rB,UAAU,CAAEwqB,IAAKT,MAE3B/1B,MAAK,KACFvB,EAASmC,aAAM,IACfnC,EAASq3B,EAAYC,IACrBt3B,EAASg1B,aAAU,GACb,IAETvzB,OAAOU,GAAUT,EAAY1B,EAAUmC,IAAO,EA8SnDi3B,0BA1S+B9B,GAAat3B,IAC5CA,EAASg1B,aAAU,IACnB9E,YAAMgJ,IAAKhE,wBAAyB,CAChCj4B,KAAMk8B,KAAK5rB,UAAU,CAAEwqB,IAAKT,MAE3B/1B,MAAK,KACFvB,EAASmC,aAAM,IACfnC,EAASq3B,EAAYC,IACrBt3B,EAASg1B,aAAU,GACb,IAETvzB,OAAOU,GAAUT,EAAY1B,EAAUmC,IAAO,EAgSnD60B,cACAI,0BACAiC,SA1rBa,SAAC91B,GAA6B,IAArB+1B,EAAQjyB,UAAArC,OAAA,QAAAyO,IAAApM,UAAA,IAAAA,UAAA,GAS9B,OARIiyB,GACAC,IAAUC,WAAW,CACjB9R,SAAU4R,EACV7Z,OAAQ,SACR3M,MAAO,SAIR,CACH9Q,KAAM0J,EAAY2pB,UAClB92B,QAASgF,EAEjB,EA8qBIg0B,YACAkC,UA9aA,SACIxC,GAAI,IACJyC,EAA2BryB,UAAArC,OAAA,QAAAyO,IAAApM,UAAA,IAAAA,UAAA,GAC3B6vB,EAAY7vB,UAAArC,OAAA,EAAAqC,UAAA,QAAAoM,EACZkmB,EAActyB,UAAArC,OAAA,QAAAyO,IAAApM,UAAA,IAAAA,UAAA,GACduyB,IAAiBvyB,UAAArC,OAAA,QAAAyO,IAAApM,UAAA,KAAAA,UAAA,GAAO,OAE5B1G,MAAOX,EAAUY,KACb,IAAKi5B,IAAeC,0BAChB,OAGJ,MAAMC,EAAW9C,GAAQA,EAAK+C,UAE9B,IAAKD,EACD,OAGJ,MAAMjwB,EAASnJ,UACX,MAAMxC,EAAQyC,IAEdZ,EAASg1B,aAAU,IACnBh1B,EAASmC,aAAM,IACfnC,EAASi6B,IAAqBC,sBAC9Bl6B,EAASs4B,KACTt4B,EAASo3B,KAET,IACI,MAAM+C,EAAYC,YAAmBj8B,GAAOg8B,UAEtCE,EAAcz5B,IAAWywB,OAAO7wB,SAASi3B,SAEzC51B,QAAaquB,YAAM6J,EAAU,CAC/B98B,KAAMk8B,KAAK5rB,UAAUgrB,EAAuB4B,MAG1CG,EAAa15B,IAAWywB,OAAO7wB,SAASi3B,SAmB9C,OAlBwB6C,IAAeD,GAGnCr6B,EACIg3B,EACIn1B,EACAo1B,EAAKqC,SACLpC,EACAqD,YAAqBp8B,GAChBg5B,gCAKmB,IAAhCuC,GACAc,cAEJx6B,EAASg1B,aAAU,IACZh1B,EAASmC,aAAM,GAC1B,CAAE,MAAOA,GACLnC,EA3Ua,CACzBgC,KAAM0J,EAAYiqB,2BA2UoB,IAAtBiE,GACArC,EACIv3B,EACAi3B,EAAKl6B,IACLq9B,YAAmBj8B,GAAOg8B,WAGlCz4B,EAAY1B,EAAUmC,EAC1B,IAKmB,IAAnBw3B,EACAc,WAAW3wB,EAAQ,KAEnBA,GACJ,CACH,EAmWD4wB,WA9qBeA,CAACn3B,EAAQ2zB,EAAc1E,KAAsB,CAC5DxwB,KAAM0J,EAAY4pB,YAClB/2B,QAAS,CACLsP,GAAItK,EACJ2zB,eACA1E,uBA0qBJ6E,cACAsD,eAnqBmBA,CAACC,EAAQ1D,EAAc1E,EAAmBxnB,KAAa,CAC1EhJ,KAAM0J,EAAY6pB,iBAClBh3B,QAAS,CACLq8B,SACA1D,eACA1E,oBACAxnB,cA8pBJ6vB,iCApSAA,CAAChD,EAAkBX,EAAcY,IAA4B93B,IACzDA,EAASg1B,aAAU,IACnB9E,YAAMgJ,IAAK4B,iBAAkB,CACzB79B,KAAMk8B,KAAK5rB,UAAU,CAAEwqB,IAAKF,MAE3Bt2B,MAAK,KACFvB,EAASmC,aAAM,IACfnC,EACI43B,EACIC,EACAX,EACAY,IAGR93B,EAASg1B,aAAU,GACb,IAETvzB,OAAOU,GAAUT,EAAY1B,EAAUmC,IAAO,EAoRvD44B,mCA5PAA,CAAClD,EAAkBX,EAAcY,IAA4B93B,IACzDA,EAASg1B,aAAU,IACnB9E,YAAMgJ,IAAK8B,mBAAoB,CAC3B/9B,KAAMk8B,KAAK5rB,UAAU,CAAEwqB,IAAKF,MAE3Bt2B,MAAK,KACFvB,EAASmC,aAAM,IACfnC,EACIi4B,EACIJ,EACAX,EACAY,IAGR93B,EAASg1B,aAAU,GACb,IAETvzB,OAAOU,GAAUT,EAAY1B,EAAUmC,IAAO,EA4OvD84B,YAtWgBA,IAAM,CAACj7B,EAAUY,KACjC,MAAMs6B,EAAaj9B,EAAA,GAAQk9B,YAA0Bv6B,MACrD,IAAKs6B,EAAcE,UACf,OAAOp7B,EAASmC,aAAM,IAE1B,MAAMhE,EAAQyC,IAER04B,EACFiB,YAAqBp8B,GAAO84B,MAC5BsD,YAAqBp8B,GAAO84B,KACxB7F,YAAkBjzB,GAAOqC,SAASi3B,WAEtC8C,YAAqBp8B,GAAO84B,KACxB7F,YAAkBjzB,GAAOqC,SAASi3B,UACpC6B,SACAx3B,EAAQo5B,EAAcG,iBAAiB33B,KACxCC,GAAMu3B,EAAcE,UAAUz3B,KAE7B23B,EAAW,CACbC,YAAaL,EAAcK,YAC3B9C,OAAQyC,EAAczC,OACtB+C,WAAYN,EAAcM,WAC1B15B,MAAOA,GAEX9B,EACIg3B,EACIsE,EACAhC,EACArI,YAAmBrwB,KAAY66B,gBAEtC,EAyUDC,wBAtHAA,CAAC7D,EAAkBX,IAAkBl3B,IACjCA,EAASg1B,aAAU,IACnB9E,YAAMgJ,IAAKyC,YAAa,CACpB1+B,KAAMk8B,KAAK5rB,UAAU,CAAEwqB,IAAKF,MAE3Bt2B,MAAK,KACFvB,EAASmC,aAAM,IACfnC,EAzaoB47B,EAAC/D,EAAkBX,KAAiB,CACpEl1B,KAAM0J,EAAYwqB,gCAClB33B,QAAS,CACLw5B,IAAKF,EACLX,aAAcA,KAsaF0E,CAA4B/D,EAAkBX,IAElDl3B,EAASg1B,aAAU,GACb,IAETvzB,OAAOU,GAAUT,EAAY1B,EAAUmC,IAAO,EA0GvD05B,sBAxFAA,CAAChE,EAAkBX,IAAkBl3B,IACjCA,EAASg1B,aAAU,IACnB9E,YAAMgJ,IAAK4C,YAAa,CACpB7+B,KAAMk8B,KAAK5rB,UAAU,CAAEwqB,IAAKF,MAE3Bt2B,MAAK,KACFvB,EAASmC,aAAM,IACfnC,EAxdqB+7B,EAAClE,EAAkBX,KAAiB,CACrEl1B,KAAM0J,EAAYsqB,iCAClBz3B,QAAS,CACLw5B,IAAKF,EACLX,aAAcA,KAqdF6E,CAA6BlE,EAAkBX,IAEnDl3B,EAASg1B,aAAU,GACb,IAETvzB,OAAOU,GAAUT,EAAY1B,EAAUmC,IAAO,EA4EvD65B,mBA3DuBA,CAAC1E,EAASJ,IAAkBl3B,IACnDA,EAASg1B,aAAU,IACnB9E,YAAMgJ,IAAK+C,WAAY,CACnBh/B,KAAMk8B,KAAK5rB,UAAU,CAAEwqB,IAAKT,MAE3B/1B,MAAK,KACFvB,EAASmC,aAAM,IACfnC,EA9cak8B,EAAC5E,EAASJ,KAAiB,CAChDl1B,KAAM0J,EAAY2qB,WAClB93B,QAAS,CACLw5B,IAAKT,EACLJ,aAAcA,KA0cDgF,CAAiB5E,EAASJ,IACnCl3B,EAASg1B,aAAU,GACb,IAETvzB,OAAOU,GAAUT,EAAY1B,EAAUmC,IAAO,EAiDnDg6B,iBA9CqBA,CAAC7E,EAASJ,IAAkBl3B,IACjDA,EAASg1B,aAAU,IACnB9E,YAAMgJ,IAAKkD,WAAY,CACnBn/B,KAAMk8B,KAAK5rB,UAAU,CAAEwqB,IAAKT,MAE3B/1B,MAAK,KACFvB,EAASmC,aAAM,IACfnC,EApecq8B,EAAC/E,EAASJ,KAAiB,CACjDl1B,KAAM0J,EAAY0qB,YAClB73B,QAAS,CACLw5B,IAAKT,EACLJ,aAAcA,KAgeDmF,CAAkB/E,EAASJ,IACpCl3B,EAASg1B,aAAU,GACb,IAETvzB,OAAOU,GAAUT,EAAY1B,EAAUmC,IAAO,EAoCnDm6B,4BArMAA,CAACvuB,EAAiBmpB,EAAckB,IAAoBp4B,IAChDA,EAASg1B,aAAU,IACnB1zB,IACK8O,KAAK,uCAAwC,CAC1CrC,kBACAwuB,QAAQ,IAEXh7B,MAAK,KACFvB,EAASmC,aAAM,IACfnC,EAxZyBw8B,EAACpE,EAAgBlB,KAAiB,CACvEl1B,KAAM0J,EAAY+qB,0CAClBl4B,QAAS,CACLw5B,IAAKK,EACLlB,aAAcA,KAqZFsF,CACIpE,EACAlB,IAGRl3B,EAASg1B,aAAU,GACb,IAETvzB,OAAOU,GAAUT,EAAY1B,EAAUmC,IAAO,EAoLvDs6B,qBAhKyBA,CAACrE,EAAgBlB,IAAkBl3B,IAC5DA,EAASg1B,aAAU,IACnB9E,YAAMgJ,IAAKwD,aAAc,CACrBz/B,KAAMk8B,KAAK5rB,UAAU,CAAEwqB,IAAKK,MAE3B72B,MAAK,KACFvB,EAASmC,aAAM,IACfnC,EACIm4B,EAAkCC,EAAgBlB,IAEtDl3B,EAASg1B,aAAU,GACb,IAETvzB,OAAOU,GAAUT,EAAY1B,EAAUmC,IAAO,EAoJnDw6B,uBAjJ2BA,CAACvE,EAAgBlB,IAAkBl3B,IAC9DA,EAASg1B,aAAU,IAEnB9E,YAAMgJ,IAAK0D,eAAgB,CACvB3/B,KAAMk8B,KAAK5rB,UAAU,CAAEwqB,IAAKK,MAE3B72B,MAAK,KACFvB,EAASmC,aAAM,IACfnC,EACIq4B,EACID,EACAlB,IAGRl3B,EAASg1B,aAAU,GACb,IAETvzB,OAAOU,GAAUT,EAAY1B,EAAUmC,IAAO,EAiInD06B,8BA5NAA,CAAChF,EAAkBX,EAAckB,IAAoBp4B,IACjDA,EAASg1B,aAAU,IACnB9E,YAAMgJ,IAAK4D,cAAe,CACtB7/B,KAAMk8B,KAAK5rB,UAAU,CAAEwqB,IAAKF,MAE3Bt2B,MAAK,KACFvB,EAASmC,aAAM,IACfnC,EA1X2B+8B,EAAC3E,EAAgBlB,KAAiB,CACzEl1B,KAAM0J,EAAY8qB,4CAClBj4B,QAAS,CACLw5B,IAAKK,EACLlB,aAAcA,KAuXF6F,CACI3E,EACAlB,IAGRl3B,EAASg1B,aAAU,GACb,IAETvzB,OAAOU,GAAUT,EAAY1B,EAAUmC,IAAO,EA6MvD66B,sBAnLAA,CAAC/2B,EAAY8H,EAAiBmpB,IAAkBl3B,IAC5CA,EAASg1B,aAAU,IACnB9E,YAAMgJ,IAAK+D,gBAAiB,CACxBhgC,KAAMk8B,KAAK5rB,UAAU,CAAEtH,WAAYA,MAElC1E,MAAK,KACFvB,EAASmC,aAAM,IACfnC,EA5ZkBk9B,EAACnvB,EAAiBmpB,KAAiB,CACjEl1B,KAAM0J,EAAYgrB,iBAClBn4B,QAAS,CACLwP,kBACAmpB,kBAyZYgG,CAA0BnvB,EAAiBmpB,IAE/Cl3B,EAASg1B,aAAU,GACb,IAETvzB,OAAOU,GAAUT,EAAY1B,EAAUmC,IAAO,EAuKvDg7B,qBAjgByBA,CAACC,EAAelG,KAAiB,CAC1Dl1B,KAAM0J,EAAYirB,wBAClBp4B,QAAS,CACLsP,GAAIuvB,EACJlG,aAAcA,KA8flBmG,oBA1fwBA,CAACD,EAAelG,KAAiB,CACzDl1B,KAAM0J,EAAYkrB,uBAClBr4B,QAAS,CACLsP,GAAIuvB,EACJlG,aAAcA,KAuflBoG,gCA7RAA,CAACzF,EAAkBX,IAAkBl3B,IACjCA,EAASg1B,aAAU,IACnB9E,YAAMgJ,IAAKrE,gBAAiB,CACxB53B,KAAMk8B,KAAK5rB,UAAU,CAAEwqB,IAAKF,MAE3Bt2B,MAAK,KACFvB,EAASmC,aAAM,IACfnC,EACIg4B,EACIH,EACAX,IAGRl3B,EAASg1B,aAAU,GACb,IAETvzB,OAAOU,GAAUT,EAAY1B,EAAUmC,IAAO,EA8QvDo7B,kCArPAA,CAAC1F,EAAkBX,IAAkBl3B,IACjCA,EAASg1B,aAAU,IACnB9E,YAAMgJ,IAAKsE,kBAAmB,CAC1BvgC,KAAMk8B,KAAK5rB,UAAU,CAAEwqB,IAAKF,MAE3Bt2B,MAAK,KACFvB,EAASmC,aAAM,IACfnC,EACIk4B,EACIL,EACAX,IAGRl3B,EAASg1B,aAAU,GACb,IAETvzB,OAAOU,GAAUT,EAAY1B,EAAUmC,IAAO,EAsOvDs7B,uBAnH2BA,CAACrF,EAAgBlB,IAAkBl3B,IAC9DA,EAASg1B,aAAU,IACnB9E,YAAMgJ,IAAKwE,WAAY,CACnBzgC,KAAMk8B,KAAK5rB,UAAU,CAAEwqB,IAAKK,MAE3B72B,MAAK,KACFvB,EAASmC,aAAM,IACfnC,EAjbqB29B,EAACvF,EAAgBlB,KAAiB,CAC/Dl1B,KAAM0J,EAAYyqB,+BAClB53B,QAAS,CACLw5B,IAAKK,EACLlB,aAAcA,KA6aDyG,CAAyBvF,EAAgBlB,IAClDl3B,EAASg1B,aAAU,GACb,IAETvzB,OAAOU,GAAUT,EAAY1B,EAAUmC,IAAO,EAyGnDy7B,qBArFyBA,CAACxF,EAAgBlB,IAAkBl3B,IAC5DA,EAASg1B,aAAU,IACnB9E,YAAMgJ,IAAK2E,WAAY,CACnB5gC,KAAMk8B,KAAK5rB,UAAU,CAAEwqB,IAAKK,MAE3B72B,MAAK,KACFvB,EAASmC,aAAM,IACfnC,EAhesB89B,EAAC1F,EAAgBlB,KAAiB,CAChEl1B,KAAM0J,EAAYuqB,gCAClB13B,QAAS,CACLw5B,IAAKK,EACLlB,aAAcA,KA4dD4G,CAA0B1F,EAAgBlB,IACnDl3B,EAASg1B,aAAU,GACb,IAETvzB,OAAOU,GAAUT,EAAY1B,EAAUmC,IAAO,EA2EnD47B,aAreiBA,CAACzG,EAASJ,KAAiB,CAC5Cl1B,KAAM0J,EAAYorB,cAClBv4B,QAAS,CACL+4B,QAASA,EACTJ,aAAcA,KAkelB8G,oBA7CwBA,CAACjwB,EAAiB4P,EAAkBsgB,KAAa,CACzEj8B,KAAM0J,EAAYqrB,uBAClBhpB,kBACA4P,mBACAsgB,aA0CArG,mCACAK,qCACAD,kCACAE,oCACAK,yB,4SChzBW,MAHQ2F,IAAMC,c,+kCC6BtB,MAAMvc,EAAawc,YACtB,8BACAz9B,MAAArC,EAAsB+/B,KAAa,IAA1BC,EAAShgC,EAATggC,UACL,IAGI,aAFqBC,IAAI3c,WAAW0c,IAEtBz8B,IAClB,CAAE,MAAOM,GAEL,OADAQ,YAAOR,GACAk8B,EAASG,gBAAgBr8B,EACpC,KAMKggB,EAAoBic,YAC7B,qCACAz9B,MAAO29B,EAAWD,KACd,IACI,MAAAI,QAAuBF,IAAIpc,kBAAkBmc,GAC7C,OADYG,EAAJ58B,IAEZ,CAAE,MAAOM,GAEL,OADAQ,YAAOR,GACAk8B,EAASG,gBAAgBr8B,EACpC,KAMFu8B,EACU,aADVA,EAEc,iCAFdA,EAGS,YAHTA,EAIU,aAJVA,EAKiB,mBALjBA,EAMU,aANVA,EAOiB,mBAPjBA,EAQQ,WARRA,EASM,SATNA,EAUI,eAVJA,EAWa,cAXbA,EAYW,uBAZXA,EAaO,UAIPC,EAA6B/5B,GAAUA,EAAMqF,MAAM,iBAEnD20B,EAAgCh+B,IAAa,IAAAi+B,EAC/C,MAAMC,EAAel+B,IACDm+B,EAAcC,YAAsBF,GAAhDG,WACFl0B,EAAkBm0B,YAAsBJ,GACxCK,EAAYR,EAA0B5zB,GACtC,KACAA,EACAG,EAAiBk0B,YAAqBN,GACtCO,EAAWV,EAA0BzzB,GACrC,KACAA,EAEAo0B,EAAe,CACjBC,kBAAmB5rB,YAA4BmrB,GAC/CU,YAAkD,QAAvCX,EAAEvQ,YAAwBwQ,UAAa,IAAAD,OAAA,EAArCA,EAAuClH,QAChD,SACA,KAGR,MAAO,CACH5T,OAAQgb,EACRU,MAAOC,YAAkBZ,GACzBa,eAAc1hC,EAAA,CACV2hC,UAAWT,EACXU,QAASR,GACNC,GAEPQ,sBAAuB,CACnBC,kBAAmBZ,EACnBa,gBAAiBX,EACjBY,gBAAiBX,GAExB,EAGQY,EACTA,CAACC,EAAeC,IAAez/B,MAAOX,EAAUY,KAC5C,IAAIy/B,EAAiB,CAAC,EAGlBF,IAAkBG,IAAgBC,iBAClCJ,IAAkBG,IAAgBE,YAElCH,EAAiB,CACbI,aAAc7B,EAA6Bh+B,KAInDZ,EAAS0gB,aAA2B,IAEpC,IACI,IAAIggB,IAMA,KAAM,CAAEr+B,QAASs+B,IAAgBC,mBANhB,CACjB,MAAM/+B,QAAa6+B,IAAgBG,qBAC/BR,GAEJrgC,EAASqgB,YAAqBxe,GAClC,CAGA,OAAO7B,EAAS8gC,EAAYV,GAChC,CAAE,MAAOj+B,GACL,OAAO+J,QAAQC,OAAOhK,EAC1B,GAGK2+B,EAAeV,GAAez/B,MAAOX,EAAUY,KACxD,MAAMk+B,EAAel+B,IAEb6gB,EACJsf,YAA4BjC,GADxBrd,wBAERuf,EACIC,YAAqBnC,GADjB7e,EAAe+gB,EAAf/gB,gBAAiBC,EAAiB8gB,EAAjB9gB,kBAEjBoe,EAAcU,YAAsBF,GAApCR,UAERt+B,EAASqhB,eACTrhB,EAAS0gB,aAA2B,IAEpC,IACI,MAAMU,EAAmBK,GAA2Byf,IAEpD,IAAKzf,EAAyB,CAC1B,MAAM9a,EAAW,CACb8a,wBAAyBL,EACzBkd,YACA/1B,cAAe0X,EACfC,2BAEEqe,IAAI4C,kBAAkBx6B,EAChC,CAGA,OAAO3G,EACHohC,EAAmBhgB,EAAkBnB,EAAiBmgB,GAE9D,CAAE,MAAOj+B,GACL,OAAO+J,QAAQC,OAAOhK,EAC1B,GAGSk/B,EAAgB1gC,UACzB,MAAMgG,EAAW,CACb8a,2BAGJ,UACU8c,IAAI8C,cAAc16B,EAC5B,CAAE,MAAOxE,GACL,OAAO+J,QAAQC,OAAOhK,EAC1B,GAqBSi/B,EACTA,CAAChgB,EAAkB7Y,EAAe63B,IAClCz/B,MAAOX,EAAUY,KACb,MAAQmgB,EAAUkgB,YAAqBrgC,KAA/BmgB,MAER,IAAIugB,GAAO,EAEX,IACI,MAEQz/B,SAFoB08B,IAAIgD,iBAAiBngB,IAEzCvf,KAER,OAAQA,aAAI,EAAJA,EAAMoY,QACV,KAAKykB,EACL,KAAKA,EACL,KAAKA,EACL,KAAKA,EACD4C,GAAO,EACP,MACJ,KAAK5C,EACD4C,GAAO,EACFvgB,EAAMI,MACPnhB,EACIihB,YAAiB,CACbE,KAAMqgB,IAAWC,aACjBxnB,OAAQ+G,IAAaM,MACrBF,sBAIZ,MACJ,KAAKsd,EAED,OADA4C,GAAO,EACAthC,EAlDvB0hC,EAACtgB,EAAkB7Y,EAAe63B,IAAez/B,UAC7C,MAAMgG,EAAW,CACbya,oBAGJ,IAII,aAHMmd,IAAImD,gBAAgB/6B,GAGnB3G,EACHohC,EAAmBhgB,EAAkB7Y,EAAe63B,GAE5D,CAAE,MAAOj+B,GACL,OAAO+J,QAAQC,OAAOhK,EAC1B,GAqCgBu/B,CACItgB,EACA7Y,EACA63B,IAGZ,KAAK1B,EACD4C,GAAO,EACPthC,EAASqhB,eACTrhB,EAAS0gB,aAA2B,IACpC0f,IACA,MACJ,KAAK1B,EAKD,OAJA4C,GAAO,EACPthC,EAASqhB,eACTrhB,EAASuhB,eACTvhB,EAAS0gB,aAA2B,IAC7BxU,QAAQC,OAAO,IAAI2D,MAAM6wB,IAAgBgB,WACpD,KAAKjD,EACD4C,GAAO,EACPthC,EAASqhB,eACTrhB,EAASuhB,eACTvhB,EAAS0gB,aAA2B,IACpC,MACJ,KAAKge,EACL,KAAKA,EACL,KAAKA,EACL,KAAKA,EAKD,OAJA4C,GAAO,EACPthC,EAASqhB,eACTrhB,EAASuhB,eACTvhB,EAAS0gB,aAA2B,IAC7BxU,QAAQC,OACX,IAAI2D,MAAO,kBAAiBjO,aAAI,EAAJA,EAAMoY,WAE1C,QACIja,EAASqhB,eACTigB,GAAO,EAEnB,CAAE,MAAOn/B,GAEL,OADAm/B,GAAO,EACAp1B,QAAQC,OAAOhK,EAC1B,CAEA,GAAIm/B,EAEA,aAtOGM,EAqOS,KArOC,IAAI11B,SAASgS,GAAYuc,WAAWvc,EAAS0jB,MAsOnD5hC,EACHohC,EAAmBhgB,EAAkB7Y,EAAe63B,IAvOrDwB,KAyOP,C,sCCrSR,4SAEO,MAAMC,EAAQ,CACjBC,KAAM,OACNC,cAAe,gBACfC,mBAAoB,qBACpBC,SAAU,WACVC,SAAU,YAORC,EAAwBpK,IAC1B,IAAIqK,EAAa,GAOjB,OANIrK,GACAA,EAAIh2B,SAAQ,CAAC8L,EAAIw0B,KAEbD,GAAe,GAAEC,EAAM,EAAI,IAAM,SAASx0B,GAAI,IAG/Cu0B,CAAU,EAOfE,EAAc,CAChB,mBAAoB,gBACpB,eAAgB,mDAChB,sBAAuB,aAQdC,EAAuBxK,GAChC7H,YAAMgJ,IAAKsJ,6BAA8B,CACrCvlC,KAAMk8B,KAAK5rB,UAAU,CAAEwqB,IAAKA,MAQvBe,EAAYf,GACrB7H,YAAMgJ,IAAKuJ,iBAAkB,CACzBxlC,KAAO,GAAEklC,EAAqBpK,gBAC9B2K,QAASJ,IAQJK,EAAiB5K,GAC1B7H,YAAMgJ,IAAKwE,WAAY,CACnBzgC,KAAO,GAAEklC,EAAqBpK,gBAC9B2K,QAASJ,IAQJM,EAAc7K,GACvB7H,YAAMgJ,IAAKhE,wBAAyB,CAChCj4B,KAAO,GAAEklC,EAAqBpK,gBAC9B2K,QAASJ,IAQJO,EAAc9K,GACvB7H,YAAMgJ,IAAKjE,wBAAyB,CAChCh4B,KAAO,GAAEklC,EAAqBpK,gBAC9B2K,QAASJ,IAQJQ,EAAgB/K,GACzB7H,YAAMgJ,IAAK6J,qBAAsB,CAC7B9lC,KAAO,GAAEklC,EAAqBpK,gBAC9B2K,QAASJ,IAQJU,EAAYjL,GACrB7H,YAAMgJ,IAAKrE,gBAAiB,CACxB53B,KAAO,GAAEklC,EAAqBpK,gBAC9B2K,QAASJ,G,8GC5GF,EACDjkC,CAAC4kC,EAAc9gC,KAAU,CAC/BH,KAAM,YACNihC,aAAcA,EACd9gC,MAAOA,I,glCCQf,MAEM2U,EAAkBC,GAAY/W,IAChCA,EAAS,CACLgC,KAAM,mBACNzD,QAASwY,IAGb/W,EAAS2mB,IAAazL,2BAEtB,MACMgoB,EAAgBnsB,EACjBrH,MAAM,EAZwB,GAa9BhM,KAAKqV,IAAK,IAAAoqB,EAAA,OAAqB,QAArBA,EAAKpqB,EAAMqqB,kBAAU,IAAAD,OAAA,EAAhBA,EAAkBE,OAAO,IACxC/yB,QAJiCgzB,GAAMA,IAKxCJ,EAAcl+B,OAAS,GACvBhF,EAASujC,YAAwCL,GACrD,EA0CEM,EAAqBC,GAAc,CAACzjC,EAAUY,KAChD,MAAMga,EAAQ,IAAItG,YAAY1T,KAAYmW,OAAO6D,OAEjDA,EAAM8oB,OAAOD,EAAW,GAExB,MAAME,EAAW,CAAA1lC,EAAA,GACR2c,EAAM,IAAE3c,EAAA,GACR2c,EAAM,IAAE3c,EAAA,GACR2c,EAAM,IAAE3c,EAAA,GACR2c,EAAM,IAEXgpB,eAGJ5jC,EAAS,CACLgC,KAAM,kBACN4Y,MAAO+oB,IAGPF,EA9E+B,GA+E/BI,EAAkC7jC,EAAU2jC,GAEhD3jC,EAAS2mB,IAAazL,0BAA0B,EAgE9C4oB,EAAmBC,GAAkB/jC,IACvCA,EAAS,CACLgC,KAAM,0BACNzD,QAASwlC,GACX,EAGAC,EAAgBC,GAAmBjkC,IACrCA,EAAS,CACLgC,KAAM,uBACNiiC,cAAeA,GACjB,EAGAC,EAAgBA,CAACC,EAAoBC,IAAmBpkC,IAC1DA,EAASqkC,EAAsB,SAAU,OACzC,MAAMC,EAAwBv0B,KAAKw0B,IAAIH,EAAeD,GACtDnkC,EAASgkC,EAAaM,GAAuB,EASjD,MAAME,UAAuB10B,OAE7B,MAqCM20B,EAAyBC,GAAwB1kC,IACnDA,EAAS,CACLgC,KAAM,oBACN0iC,sBACF,EAGAC,EAAsBC,GAAiB5kC,IACzC4kC,EAAYC,aACZ7kC,EAASykC,GAAsB,IAC/BzkC,EAASkU,IAAW4D,iBAAiB,EAGnC+rB,EAAoCA,CAAC7jC,EAAU4a,KACjD,MAAMkqB,EAAW,GACjBlqB,EAAMlL,MAAM,EAjOuB,GAiOY3N,SAASgjC,IAChDA,EAAK1B,UAAY0B,EAAKC,gBACtBF,EAASvzB,KAAKwzB,EAAK1B,QACvB,IAEAyB,EAAS9/B,OAAS,EAClBhF,EAASujC,YAAwCuB,IAEjD9kC,EAAS,CACLgC,KAAM,sCAEd,EAaW,KACXijC,+BAXmCA,IAAM,CAACjlC,EAAUY,KACpD,MAAMga,EAAQtG,YAAY1T,KAAYmW,OAAO6D,MAC7CipB,EAAkC7jC,EAAU4a,EAAM,EAUlD9D,iBACAouB,+BAvOAA,CAAC7B,EAASrqB,IAAa,CAAChZ,EAAUY,KAG9B,IAFA,IAAIga,EAAQtG,YAAY1T,KAAYmW,OAAO6D,MACvCuqB,GAAiB,EACZxhC,EAAI,EAAGA,EAAIiX,EAAM5V,OAAQrB,IAC9B,IAAKiX,EAAMjX,GAAG0/B,QAAS,CACnB8B,EAAgBxhC,EAChB,KACJ,CAEAwhC,GAAiB,IACjBnlC,EAAS,CACLgC,KAAM,6BACNyhC,UAAW0B,EACXnsB,SAAUA,EACVqqB,QAASA,IAET8B,EArCuB,GAsCvBtB,EAAkC7jC,EAAU4a,IAGpD5a,EAAS2mB,IAAazL,0BAA0B,EAoNpDkqB,4BAhNAA,CAAC3B,EAAWJ,EAASrqB,IAAa,CAAChZ,EAAUY,KAOzC,GANAZ,EAAS,CACLgC,KAAM,6BACNyhC,UAAWA,EACXzqB,SAAUA,EACVqqB,QAASA,IAETI,EApD2B,EAoDiB,CAC5C,IAAI7oB,EAAQtG,YAAY1T,KAAYmW,OAAO6D,MAC3CipB,EAAkC7jC,EAAU4a,EAChD,CACA5a,EAAS2mB,IAAazL,0BAA0B,EAsMpDsoB,oBACAlyB,kBA5IuB+xB,GAAY,CAACrjC,EAAUY,KAC9C,MAAMga,EAAQtG,YAAY1T,KAAYmW,OAAO6D,MAC7C,IAAI6oB,GAAa,EACjB,IAAK,IAAI9/B,EAAIiX,EAAM5V,OAAQrB,KAAM,GAC7B,GAAIiX,EAAMjX,GAAG0/B,UAAYA,EAAS,CAC9BI,EAAY9/B,EACZ,KACJ,CAEA8/B,GAAa,GACbzjC,EAASwjC,EAAkBC,IAG/BzjC,EAAS2mB,IAAazL,0BAA0B,EAgIhDmqB,oBA5KwBA,CAACC,EAAMC,IAAO,CAACvlC,EAAUY,KACjD,IAAIga,EAAQtG,YAAY1T,KAAYmW,OAAO6D,MAAMlX,KAAKqhC,GAAI9mC,EAAA,GACnD8mC,KAEHA,EAAOnqB,EAAM0qB,GACjB1qB,EAAM8oB,OAAO4B,EAAM,GAGnB,IAFA,IAAIE,EAAM5qB,EAAM5V,OACZ2+B,EAAW,GACNhgC,EAAI,EAAGA,EAAI6hC,EAAK7hC,IACjBA,GAAK4hC,GACL5B,EAASpyB,KAAKwzB,GAElBpB,EAASpyB,KAAKqJ,EAAMjX,IAEpB4hC,GAAM3qB,EAAM5V,QACZ2+B,EAASpyB,KAAKwzB,GAElB/kC,EAAS,CACLgC,KAAM,kBACN4Y,MAAO+oB,KAGN2B,GA1G8B,GA2G3BC,EA3G2B,GA4G9BA,GA5G8B,GA6G3BD,EA7G2B,IA+G/BzB,EAAkC7jC,EAAU2jC,EAChD,EAiJA8B,YA9HiBhC,GAAc,CAACzjC,EAAUY,KAC1C,IACI8kC,EADQpxB,YAAY1T,KAAYmW,OAAO6D,MACf6oB,GAAWiC,iBAAmB,EAElC,OADxBA,GAAmB,MAEfA,EAAkB,GAEtB1lC,EAAS,CACLgC,KAAM,qBACNyhC,UAAWA,EACXiC,gBAAiBA,GACnB,EAoHF5B,kBACAE,eACAE,gBACAyB,cAhGkBA,CAACvB,EAAewB,EAAWC,IAAU7lC,IAAa,IAAA8lC,EACpE,MAAM3B,GAAoC,QAAf2B,EAAAF,EAAUG,aAAK,IAAAD,OAAA,EAAfA,EAAiB9gC,SAAU,EACtDhF,EAASkkC,EAAcC,EAAoBC,IAC3C4B,IAAmBC,oBAAoBL,EAAWxB,EAAeyB,EAAK,EA8FtEK,2BAxFCC,GAAoBxlC,MAAOX,EAAUY,KAClCZ,EAASykC,GAAsB,IAC/B,IAAI,IAAA2B,EAAAC,EACArmC,EAASkU,IAAWC,mBACpB,MAAMmyB,EAAwC,QAA1BF,EAAG9xB,YAAY1T,YAAW,IAAAwlC,GAAO,QAAPC,EAAvBD,EAAyBl2B,aAAK,IAAAm2B,OAAP,EAAvBA,EAAgC9xB,QACjDrE,QAAci2B,EAAgBG,GAC9B/xB,GAAUrE,aAAK,EAALA,EAAOqE,UAAW+xB,EAClC,IAAK/xB,EACD,MAAM,IAAIiwB,OC/LGjwB,KACzB,MAAMxX,EAAMkuB,YAAoB,sCAChC,OAAOze,IAAM4D,KAAKrT,EAAK,CACnBwX,WACF,ED6LYgyB,CAAahyB,EACvB,CAAE,MAAOpS,GACDA,aAAiBqiC,EACjB7hC,YAAO,uCACCR,EAAMmE,UAAWnE,EAAMyE,UAE/BjE,YAAOR,GAEXnC,EAAS8jC,EAAgB,uCACzB9jC,EAASykC,GAAsB,IAC/BzkC,EAASkU,IAAW4D,iBACxB,GAoEJ0uB,qBAjEyBA,CAACjyB,EAASqwB,IAAgBjkC,UAC9C4T,GACD5R,YAAO,6CAEqB3C,EAC5B2mB,IAAajM,oBAAoBnG,KAGjCvU,EAAS2kC,EAAmBC,GAChC,EAyDAD,qBACAF,wBACAzmC,MAtBUA,IAAOgC,IACjBA,EAAS8W,EAAe,KACxB9W,EAAS2mB,IAAazL,0BAA0B,E,gkBE3PpD,MAAM3d,EAAe,CACjBkpC,2BAA2B,EAC3BC,aAAa,EACbzP,KAAM,CAAC,EACP90B,OAAO,EACPkI,SAAU,CACNnK,YAAamK,IAASnK,aAAe,GACrCuZ,QAASpP,IAASnK,aAAe,GACjCkE,MAAOiG,IAASjG,OAAS,GACzBC,YAAagG,IAAShG,aAAe,IAEzCsiC,WAAYt8B,IAASs8B,YAAc,KACnCn8B,YAAaH,IAAWA,IAASG,YAAc,GAC/CO,gBAAiBV,IAAWA,IAASU,gBAAkB,GACvDC,SAAUX,IAAWA,IAASW,SAAW,GACzCE,eAAgBb,IAAWA,IAASa,eAAiB,GACrDP,sBAAuBN,IAAWA,IAASM,sBAAwB,KACnEwsB,8BAA8B,EAC9ByP,YAAY,EACZC,eAAe,EACfC,eAAgB,CACZ3lB,KAAM4lB,IAAYrpC,OAClB0G,MAAO,GACP4iC,IAAK,GACLC,eAAe,EACfC,YAAa,GACb5jC,KAAM,MAEV6jC,oBAAqB,CACjBhmB,MAAM,EACNpT,gBAAiB,MAErBq5B,iBAAkB,CACdjmB,MAAM,EACNpT,gBAAiB,OAInB2B,EAAQ7R,YAAY,CACtBC,KAAM,aACNP,eACAQ,SAAU,CACNspC,2BAA4BA,CAAClpC,EAAKG,KAAkB,IAAdC,EAAOD,EAAPC,QAClCJ,EAAMsoC,0BAA4BloC,CAAO,EAE7Cy2B,UAAWA,CAAC72B,EAAKO,KAAkB,IAAdH,EAAOG,EAAPH,QACjBJ,EAAMuoC,YAAcnoC,CAAO,EAE/B4D,MAAOA,CAAChE,EAAKmiB,KAAkB,IAAd/hB,EAAO+hB,EAAP/hB,QACbJ,EAAMgE,OACU,IAAZ5D,EAAmB+oC,IAAaC,OAAOC,QAAUjpC,CAAO,EAEhEkpC,UAAWA,CAACtpC,EAAKqiB,KAAkB,IAAdjiB,EAAOiiB,EAAPjiB,QACjBJ,EAAMspC,UAAYlpC,CAAO,EAE7BmpC,cAAeA,CAACvpC,EAAKwiB,KAAkB,IAAdpiB,EAAOoiB,EAAPpiB,QACrBJ,EAAMwpC,WAAappC,CAAO,EAE9BqoC,WAAYA,CAACzoC,EAAK2iB,KAAkB,IAAdviB,EAAOuiB,EAAPviB,QAClBJ,EAAMyoC,aACFroC,IAAuB,IAAZA,KAA6BJ,EAAMyoC,UAAU,EAEhEC,cAAeA,CAAC1oC,EAAK+iB,KAAkB,IAAd3iB,EAAO2iB,EAAP3iB,QACrBJ,EAAM0oC,gBACFtoC,IAAuB,IAAZA,KAA6BJ,EAAM0oC,aAAa,EAEnEe,gCAAiCA,CAACzpC,EAAK2jB,KAAkB,IAAdvjB,EAAOujB,EAAPvjB,QACvCJ,EAAMg5B,6BAA+B54B,CAAO,EAEhDspC,mBAAoBA,CAAC1pC,EAAKikB,KAAkB,IAAd7jB,EAAO6jB,EAAP7jB,QAC1BJ,EAAMgpC,oBAAoBhmB,MAAO,EACjChjB,EAAMgpC,oBAAoBp5B,gBAAkBxP,EAAQwP,gBACpD5P,EAAMgpC,oBAAoBW,gBACtBvpC,EAAQupC,iBAAmB,IAAI,EAEvCC,oBAAsB5pC,IAClBA,EAAMgpC,oBAAoBhmB,MAAO,CAAK,EAE1C6mB,gBAAiBA,CAAC7pC,EAAK8pC,KAAkB,IAAd1pC,EAAO0pC,EAAP1pC,QACvBJ,EAAMipC,iBAAiBjmB,MAAO,EAC9BhjB,EAAMipC,iBAAiBr5B,gBAAkBxP,CAAO,EAEpD2pC,iBAAmB/pC,IACfA,EAAMipC,iBAAiBjmB,MAAO,CAAK,EAEvCgnB,8BAA+BA,CAAChqC,EAAKiqC,KAAkB,IAAd7pC,EAAO6pC,EAAP7pC,QACrCJ,EAAM84B,KAAO14B,CAAO,KAKnBg8B,EAAwBp8B,GAAUA,EAAMovB,MAAM2D,UAAUA,UAEtDxhB,MAAa,QAErB,MAAA24B,EAcH34B,EAAM3Q,QAbN0oC,EAASY,EAATZ,UACAzS,EAASqT,EAATrT,UACA7yB,EAAKkmC,EAALlmC,MACAykC,EAAUyB,EAAVzB,WACAC,EAAawB,EAAbxB,cACAa,EAAaW,EAAbX,cACAE,EAA+BS,EAA/BT,gCACAC,EAAkBQ,EAAlBR,mBACAE,EAAmBM,EAAnBN,oBACAC,EAAeK,EAAfL,gBACAE,EAAgBG,EAAhBH,iBACAb,EAA0BgB,EAA1BhB,2BACAc,EAA6BE,EAA7BF,6B,sCCnHJ,8IAOA,MAAMz4B,EAAQ7R,YAAY,CACtBC,KAAM,gBACNP,aAAc,CAAE+qC,qBAAqB,GACrCvqC,SAAU,CACNwqC,gBAAiB,CACbt4B,QAASA,CAAC9R,EAAKG,KAAkB,IAAdC,EAAOD,EAAPC,QAEfJ,EAAMmqC,oBAAsB/pC,EAAQ+pC,mBAAmB,EAE3DvX,QAASA,KAIL,GADI,SADA9rB,UAAWmF,WAAWo+B,KAEZ,MAAO,CAAEjqC,QAAS,CAAE+pC,qBAAqB,IAEvD,MAAMG,GACDjhB,SACGviB,UAAWmF,WACPs+B,OAEH,GAAK,EACd,OAAID,EAAe,GACfxjC,UAAWC,aACPsjC,KACA,EACAG,KAEJ1jC,UAAW2jC,YACPF,KAEG,CAAEnqC,QAAS,CAAE+pC,qBAAqB,MAG7CrjC,UAAWC,aACPwjC,IACAD,EACAE,KAEG,CAAEpqC,QAAS,CAAE+pC,qBAAqB,IAAS,GAG1DO,kBAAmB,CACf54B,QAAU9R,IAENA,EAAMmqC,qBAAsB,CAAI,EAEpCvX,QAASA,KACL9rB,UAAWC,aACPsjC,KACA,EACAG,KAEJ1jC,UAAW2jC,YAAYF,KAChB,CAAC,OAMjBL,EAA+C34B,EAAM3Q,QAA7CwpC,EAAeF,EAAfE,gBAAiBM,EAAiBR,EAAjBQ,kBAEnBC,EAAgBp5B,EAAMO,O,gdC3DnC,MACM84B,EAAsB,IAAIC,IADR,KACyC,GAC3DC,EAAwB,IAAID,IAFV,KAE2C,GAE7DE,EAAiB,CACnB5kB,OAAQ,SACR6kB,MAAO,QACPC,SAAU,YAKRC,EAAyBC,IACpB,CACH1kC,MAC4B,iBAAjB0kC,EACDA,EACAA,EAAa1kC,MACvB2kC,UAAWD,EAAaC,UACxBC,UAAU,EACVC,aAAc,CACVrlC,WACkCqP,IAA9B61B,EAAaG,cACiB,OAA9BH,EAAaG,aACPH,EAAaG,aAAarlC,MAC1B,KACVwa,UACkCnL,IAA9B61B,EAAaG,cACiB,OAA9BH,EAAaG,aACPH,EAAaG,aAAa7qB,KAC1B,QAKhB8qB,EAA4Bh3B,IACvB,CACH7E,GAAI6E,EAAU7E,GACdzJ,MAAOsO,EAAUoa,YACjBzoB,YAAaqO,EAAUrO,YACvBklC,UAAW72B,EAAU62B,UACrBx2B,aAAcL,EAAUK,aACxBkc,QAASvc,EAAUi3B,eAAejmC,IAAI2lC,GACtCO,UAAWV,EAAex2B,EAAU1Q,MACpC6nC,cAAen3B,EAAUm3B,cACzBC,kBAAmBp3B,EAAUo3B,kBAC7BC,kBAAmBr3B,EAAUq3B,kBAC7BC,uBAAwB,EACxBC,sBAAuBv3B,EAAUu3B,sBACjCC,qBAAsBx3B,EAAUw3B,uBAI3BtyB,EAA0B1H,GAAWlQ,IAC9CA,EAAS,CACLgC,KAAM,uBACNzD,QAAS2R,EAAMmM,iBACjB,EASO8tB,EAA0BA,IAAOnqC,IAC1CA,EAAS,CACLgC,KAAM,6BACR,EAGOooC,EAAoBn0B,GAAetV,MAAOX,EAAUY,KAG7D,GAFAZ,GAbwBA,IACxBA,EAAS,CACLgC,KAAM,oBACR,IAYGiU,EAIL,IACI,MAAQP,EAAqB20B,YAAwBzpC,KAA7C8U,iBAIR1V,EAAS,CACLgC,KAAM,0BACNzD,eALmB+C,IAAa3B,IAC/B,mCAAkCsW,YAAqBP,MAItC7T,KAAKyoC,qBAAqB5mC,IACxCgmC,KAGR1pC,EAASuqC,KACTvqC,EAASgV,IAAoBw1B,wBAC7BxqC,EAASqR,IAAa4zB,iCAC1B,CAAE,MAAO9iC,GAEL,MADAnC,GAlCoBA,IACxBA,EAAS,CACLgC,KAAM,oBACR,IAgCQG,CACV,GAGEooC,EAA0CA,IAAOvqC,IACnDA,EAAS,CACLgC,KAAM,+CACR,EAGOyoC,EACTA,CAACC,EAAaC,EAAaC,EAAUC,IAAc,CAAC7qC,EAAUY,KAC1D,MAAAkqC,EACIC,YAAyBnqC,KAAYsS,MAChCX,GAAMA,EAAE1E,KAAO68B,IAFhBZ,EAAiBgB,EAAjBhB,kBAAmBE,EAAsBc,EAAtBd,uBAAwBH,EAAaiB,EAAbjB,cAM/Ce,GACAf,GACAC,IAAsBE,IAK1BhqC,EAAS,CACLgC,KAAM,gCACNzD,QAAS,CACLmsC,cACAC,cACAC,cAGR5qC,EAASgV,IAAoBw1B,wBACzBK,GACAA,IACJ,EAGKG,EAAkBN,GAAiB1qC,IAC5CA,EAAS,CACLgC,KAAM,gCACNzD,QAAS,CACLmsC,cACAE,UAAU,KAGlB5qC,EAASgV,IAAoBw1B,uBAAuB,EAG3CS,EACTA,CAACh1B,EAAYpS,IAAsB7D,IAM/B+oC,EAAoBmC,SALLzrB,KACXzf,EACImrC,EAAkCl1B,EAAYpS,GACjD,GAE8B,EAG9B0/B,EACRL,GAAkB,CAACljC,EAAUY,KAAa,IAAAwlC,EAAAgF,EAAAC,EAAAC,EACvC,MAAMnrC,EAAkBS,IAAWV,YAAYC,gBACzC0c,EAAyC,QAA1BupB,EAAG9xB,YAAY1T,YAAW,IAAAwlC,GAAU,QAAVgF,EAAvBhF,EAAyB1e,gBAAQ,IAAA0jB,OAAV,EAAvBA,EAClBvuB,gBACA0uB,EAA4C,QAA1BF,EAAG/2B,YAAY1T,YAAW,IAAAyqC,GAAY,QAAZC,EAAvBD,EAAyBG,kBAAU,IAAAF,OAAZ,EAAvBA,EACrBC,mBACAE,EACFF,GACAA,EAAmBzyB,MACdpG,GAAyC,UAA3BA,EAAUK,eAGjC,KACK5S,EAAgB,oCAChB+iC,GACwB,IAAzBA,EAAcl+B,QACb6X,GACmB,IAApBA,GACC4uB,GAED,OAKJxC,EAAsBiC,SAHPzrB,KACXzf,EAASilC,EAA+B/B,GAAe,GAEtB,EAGhClsB,EAAkCA,KAAA,CAC3ChV,KAAM,uCAGJijC,EAAkC/B,GAAkBviC,UACtDX,EAASgX,KAET,MAAM00B,EAAe,YACf7uC,EAAQ6uC,EAAexI,EAAcrxB,KAAM,IAAG65B,KAEpD,IAAI,IAAAC,EAAAC,EACA,MAAMhlC,QAAiBtF,IAAa3B,IAC/B,yBAAwB9C,KAK7BmD,EAAS,CACLgC,KAAM,mCACNzD,QAAS,CACL2T,oBAAqB,CACjB,CACIrE,GApMG,EAqMH/P,KAAM,QACNkV,QATY,QAAb24B,EAAA/kC,EAAS/E,YAAI,IAAA8pC,GAAa,QAAbC,EAAbD,EAAeE,mBAAW,IAAAD,OAAb,EAAbA,EAA4BloC,KAAKooC,GAAOA,EAAGC,UAAU,OAcxE,CAAE,MAAO5pC,GACLQ,YAAOR,EACX,GAGSgpC,EACTA,CAACl1B,EAAYpS,IAAqBlD,MAAOX,EAAUY,KAE/C,IADwBA,IAAWV,YAAYC,gBAC1B,6BACjB,OAGJ,IAAK8V,IAAepS,EAChB,OAGJ,MAAMmoC,EACFprC,IAAWV,YAAY0b,gBACa,+BAExC,IAAKqwB,EAAiBD,GAClB,OAEJ,MAAME,EAAgBC,EAAgCH,GAEtD,IACI,MAAMx4B,EAAS,CACXyC,aACApS,mBACAqoC,iBAEEtlC,QAAiBtF,IAAa8O,KAChC,8BACAoD,GAGJxT,EAAS,CACLgC,KAAM,sCACNzD,QAAS,CACL2T,oBACItL,EAAS/E,KAAKwa,gBAAgBC,oBAAoB5Y,IAC9C0oC,GAERC,yBAA0BzlC,EAAS/E,KAAKqqC,gBAGpD,CAAE,MAAO/pC,GAIL,MAHAnC,EAAS,CACLgC,KAAM,qBAEJG,CACV,GAGF8pC,EAAoBK,GAA4B,YAAdA,EAElCH,EAAmCG,IACrC,OAAQA,GACJ,IAAK,OAML,QACI,OAAO,EALX,IAAK,UACD,OAAO,EACX,IAAK,SACD,OAAO,EAGf,EAGEF,EAAsCG,IACjC,CACH1+B,GAAI0+B,EAAoB1+B,GACxB/P,KAAMyuC,EAAoBzuC,KAC1BkV,OAAQu5B,EAAoBv5B,Q,i0GC/O7B,MAAMw5B,EAAgCluC,IAAA,IACzCymC,EAAIzmC,EAAJymC,KACA0H,EAAYnuC,EAAZmuC,aACAlgB,EAA8BjuB,EAA9BiuB,+BACAmgB,EAAmBpuC,EAAnBouC,oBAAmB,MACiD,CACpE3H,OACA4H,WAAY,GACZF,aAAcA,EAAahd,cAC3BlD,iCACAmgB,oBAAqBA,EAAoBE,cACzCC,WAAY,EACf,EAoBYC,EAAiCpuC,IAAA,IAC1CguC,EAAmBhuC,EAAnBguC,oBACAD,EAAY/tC,EAAZ+tC,aACAlgB,EAA8B7tB,EAA9B6tB,+BAA8B,MAC+B,CAC7DmgB,oBAAqBA,EAAoBE,cACzCH,aAAcA,EAAahd,cAC3BlD,iCACH,EAOYwgB,EACTL,IAA2B,CAE3BA,oBAAqBA,EAAoBE,gBAQhCI,EAAgCA,CACzCN,EACAD,KAAoB,CAEpBC,oBAAqBA,EAAoBE,cACzCH,aAAcA,EAAahd,gBAC5B,IAEEwd,EAAoB,SAApBA,GAAoB,OAApBA,EAAoB,gBAApBA,EAAoB,oBAApBA,CAAoB,EAApBA,GAAoB,IASlB,MAAMC,EAA+BC,GACxCA,EACMF,EAAqBG,OACrBH,EAAqBI,SAOlBC,EAA0BA,KAAA,CAAS,GAEnCC,EAA2BA,CACpCd,EACAC,EACAngB,KAAuC,CAEvC4G,UAAW,GACXsZ,aAAcA,EAAahd,cAC3Bid,oBAAqBA,EAAoBE,cACzCrgB,mCAGSihB,EAAcvxC,YAAU,CACjCC,YAAa,eACbC,UAAWsxC,IACXlxC,UAAYC,IAAO,CACfkxC,oBAAqBlxC,EAAQK,MAG3B,CACEA,MAAOA,IAEK,GADQuJ,IAAW,GAAK,0DAGpCunC,aAAc,CACVC,qBAAsBA,IAAM,QAGpCC,oBAAqBrxC,EAAQK,MAG3B,CACEA,MAAOyjB,IAOD,IANFosB,EAAmBpsB,EAAnBosB,oBACAD,EAAYnsB,EAAZmsB,aACAlgB,EAA8BjM,EAA9BiM,+BAA8BuhB,EAAAxtB,EAC9BytB,kCAA0B,IAAAD,EAAG,EAACA,EAAAE,EAAA1tB,EAC9B2tB,gBAAQ,IAAAD,EAAG,GAAEA,EAAAE,EAAA5tB,EACb6tB,2BAAmB,IAAAD,EAAG,GAAEA,EAExB,MAAMrxC,EAAQyQ,IAAGC,UAAU,CACvBm/B,sBACAD,eACAlgB,iCACAwhB,6BACAE,WACAE,wBAGJ,MAAQ,GADQ/nC,IAAW,GAAK,sDAC0BvJ,GAAO,EAErE8wC,aAAc,CACVC,qBAAsBA,IAAM,QAGpCQ,SAAU5xC,EAAQK,MAAiC,CAC/CA,MAAOA,IAEK,GADQuJ,IAAW,GAAK,8CAGpCunC,aAAc,CACVC,qBAAsBA,IAAM,QAGpCS,iBAAkB7xC,EAAQK,MAGxB,CACEA,MAAOA,IAEK,GADQuJ,IAAW,GAAK,uDAGpCunC,aAAc,CACVC,qBAAsBA,IAAM,QAGpCU,cAAe9xC,EAAQK,MAGrB,CACEA,MAAO2jB,IAKD,IAJFisB,EAAYjsB,EAAZisB,aAKA,MAAMnmC,EAAsC,CACxCioC,wBALe/tB,EAAnBksB,oBAMIh3B,iBAAkB+2B,EAClB+B,8BAN0BhuB,EAA9B+L,+BAQIkiB,MAPKjuB,EAAT2S,WASMt2B,EAAQyQ,IAAGC,UAAUjH,GAE3B,MAAQ,GADQF,IAAW,GAAK,qDACyBvJ,GAAO,EAEpE8wC,aAAc,CACVC,qBAAuBhnC,GACnBA,EAAS9E,SAGrB4sC,qBAAsBlyC,EAAQK,MAG5B,CACEA,MAAO8jB,IAA8C,IAA3C+rB,EAAmB/rB,EAAnB+rB,oBAAmBiC,EAAAhuB,EAAEiuB,kBAAU,IAAAD,EAAG,GAAEA,EAC1C,MAAM9xC,EAAQyQ,IAAGC,UAAU,CACvBm/B,sBACAkC,eAGJ,MAAQ,GADQxoC,IAAW,GAAK,6CACiBvJ,GAAO,EAE5D8wC,aAAc,CACVC,qBAAsBA,IAAM,QAGpCiB,mBAAoBryC,EAAQK,MAG1B,CACEA,MAAOikB,IAKD,IAAAguB,EAAAhuB,EAJFmtB,gBAAQ,IAAAa,EAAG,EAACA,EAAAC,EAAAjuB,EACZkuB,yBAAiB,IAAAD,EAAG,EAACA,EAAAE,EAAAnuB,EACrB8tB,kBAAU,IAAAK,EAAG,GAAEA,EACZpnC,EAAK9E,EAAA+d,EAAA9d,GAER,MAAMnG,EAAQyQ,IAAGC,UAAStP,EAAC,CACvBgwC,WACAe,oBACAJ,cACG/mC,IAGP,MAAQ,GADQzB,IAAW,GAAK,oDACwBvJ,GAAO,EAEnE8wC,aAAc,CACVC,qBAAsBA,IAAM,QAGpCsB,oBAAqB1yC,EAAQK,MAG3B,CACEA,MAAOA,IAEK,GADQuJ,IAAW,GAAK,0DAGpCunC,aAAc,CACVC,qBAAsBA,IAAM,MAEhCuB,kBAAoBvoC,GACTA,EAASwoC,UAAY,KAGpCC,iBAAkB7yC,EAAQK,MAA4C,CAClEA,MAAOA,IAEK,GADQuJ,IAAW,GAAK,uCAGpCunC,aAAc,CACVC,qBAAsBA,IAAM,MAEhCuB,kBAAmBA,CAACvoC,EAAU0oC,EAAO5hC,IAC1BA,IAAQu/B,EAAqBI,SAC9BzmC,EClTsCA,KACxD,MAAM2oC,EAAgB3oC,EAAS2oC,cAC1B7rC,KAAK8rC,IACF,MAAMC,EAAuBC,YAAeF,EAAY3hC,IAExD,OAAA5P,IAAA,GACOuxC,GAAW,IACdG,YAAYF,aAAoB,EAApBA,EAAsBE,aAAc,GAAC,IAGxD18B,MAAK,CAACV,EAAGC,IAAMA,EAAEm9B,WAAap9B,EAAEo9B,aAErC,OAAA1xC,IAAA,GAAY2I,GAAQ,IAAE2oC,iBAAa,EDuSjBK,CAA4ChpC,KAG1DipC,mBAAoBrzC,EAAQK,MAG1B,CACEA,MAAOqkB,IAO2B,IAN9B6jB,EAAI7jB,EAAJ6jB,KACA2H,EAAmBxrB,EAAnBwrB,oBACAD,EAAYvrB,EAAZurB,aACAlgB,EAA8BrL,EAA9BqL,+BACAogB,EAAUzrB,EAAVyrB,WACAE,EAAU3rB,EAAV2rB,WAEA,MAAMhwC,EAAQyQ,IAAGC,UAAU,CACvBw3B,OACA8H,aACAH,sBACAD,eACAlgB,iCACAogB,eAGJ,MAAQ,GADQvmC,IAAW,GAAK,6CACiBvJ,GAAO,EAE5D8wC,aAAc,CACVC,qBACIhnC,GACCA,EAAS9E,SAGtBguC,2BAA4BtzC,EAAQK,MAGlC,CACEA,MAAQC,IACG,CACHC,IAAK,8CACLC,OAAQ,OACRC,KAAMH,IAGd6wC,aAAc,CACVC,qBACIhnC,GACCA,EAAS9E,SAItBiuC,kBAAmBvzC,EAAQK,MAGzB,CACEA,MAAQC,IACG,CACHC,IAAK,yCACLC,OAAQ,OACRC,KAAMH,IAGd6wC,aAAc,CACVC,qBAAuBhnC,GACnBA,EAAS9E,SAGrBkuC,sBAAuBxzC,EAAQE,SAG7B,CACEG,MAAQC,IACG,CACHC,IAAK,+CACLC,OAAQ,OACRC,KAAMH,IAGd6wC,aAAc,CAEVC,qBAAsBA,IAAM,MAEhCuB,kBAAmBA,CACfvoC,EACAqpC,EACAviC,KACC,IAAAwiC,EAAAC,EAID,OAHAC,YAAiB1iC,EAAIG,GAAI,CACrB8hC,WAA6B,QAAnBO,EAAEtpC,EAASA,gBAAQ,IAAAspC,GAAQ,QAARC,EAAjBD,EAAmBziC,cAAM,IAAA0iC,OAAR,EAAjBA,EAA2BE,eAEpCzpC,CAAQ,IAGvB0pC,yBAA0B9zC,EAAQK,MAGhC,CACEA,MAAQ2W,IAAW,IAAA+8B,EAMf,MAAQ,+CALMjjC,IAAGC,UAAStP,IAAC,CAAC,EACrBuV,GAAM,IACTm5B,WAA6B,QAAnB4D,EAAE/8B,EAAOm5B,kBAAU,IAAA4D,IAAI,OAGwB,EAEjE5C,aAAc,CACVC,qBACIhnC,GACCA,EAAS9E,SAGtB0uC,cAAeh0C,EAAQK,MAGrB,CACEA,MAAQ2W,GAEI,+CADMlG,IAAGC,UAAUiG,KAG/Bm6B,aAAc,CACVC,qBAAuBhnC,GACnBA,EAAS9E,SAGrB2uC,0BAA2Bj0C,EAAQK,MAGjC,CACEA,MAAOA,IAEK,GADQuJ,IAAW,GAAK,2DAGpCunC,aAAc,CACVC,qBAAuB/rC,GACnBA,EAAKC,aAOrB4uC,EAeAlD,EAfAkD,4BACAC,EAcAnD,EAdAmD,iBACAC,EAaApD,EAbAoD,yBACAC,EAYArD,EAZAqD,mCACAC,EAWAtD,EAXAsD,0BACAC,EAUAvD,EAVAuD,sBACAC,EASAxD,EATAwD,yBACAC,EAQAzD,EARAyD,iCACAC,EAOA1D,EAPA0D,2BAEAC,GAKA3D,EANA4D,4BAMA5D,EALA2D,6BACAE,EAIA7D,EAJA6D,iCACAC,EAGA9D,EAHA8D,sBACAC,EAEA/D,EAFA+D,kCACAh1C,EACAixC,EADAjxC,UAGWmK,EAAoB8mC,EAAYlwC,KAAhCoJ,e,oIE7cf,MAAM8qC,EAAkB5qC,GACpBA,EAASzE,OAAmC,MAA1ByE,EAASzE,MAAM8X,OAU/B9d,EAAYs1C,YAAe,CAC7BC,QAAS,GACTC,eAAiBjP,IACbrmC,OAAOC,KAAKs1C,KAA2B7vC,SAAS8vC,IAC5CnP,EAAQ7S,IAAIgiB,EAAYD,IAA0BC,GAAY,IAE3DnP,GAEXoP,YAAa,YAGJC,EAAsBpxC,MAAOqxC,EAAMzT,EAAKoP,KACjD,IAAIlgC,QAAetR,EAAU61C,EAAMzT,EAAKoP,GAExC,IAtBwB/mC,EAsBD6G,GApBVtL,OACiB,MAA1ByE,EAASzE,MAAM8X,QACkC,qBAAjDrT,EAASzE,MAAMN,KAAKowC,eAAez0C,WAkBLg0C,EAAe/jC,GAAS,QAE1BtR,EACxBgvB,YAAe,eAAgB+mB,eAC/B3T,EACAoP,IAEc9rC,MAEd4L,QAAetR,EAAU61C,EAAMzT,EAAKoP,GAChC6D,EAAe/jC,IACf0kC,YAAS1kC,KAGb0kC,YAAS1kC,GACTlN,OAAOC,SAAS4xC,SAExB,CAvCwBxrC,MAwCxB,OAAO6G,CAAM,C,oCChDjB,yLAQA,MAAMpK,EAAWE,GACb7D,IAAeC,IAAI,aAAe4D,EAAQ,CACtC8uC,iBAAiB,IAGzB,SAASC,EAAiB/uC,EAAQgvC,GAC9B,OAAO7yC,IACF0Q,KAAKmiC,EAAO,wBAA0B,2BAA2B,CAC9DhvC,WAEHhC,KAAKixC,eACLjxC,KAAKC,eACLC,MAAMC,cACf,CAEA,SAAS+wC,IACL,OAAO/yC,IACFC,IAAI,sCACJ4B,KAAKC,eACLC,MAAMC,cACf,CAEA,SAASgxC,EAAiBnvC,EAAQovC,EAAWC,GACzC,MAAMjsC,EAAW2G,IAAGC,UAAU,CAC1BhK,SACAovC,YACAC,iBAEJ,OAAOlzC,IACF0Q,KAAK,uCAAwCzJ,GAC7CpF,KAAKixC,eACLjxC,KAAKC,eACLC,MAAMC,cACf,C,oCCzCA,gGAGO,IAAKmxC,EAAS,SAATA,GAAS,OAATA,EAAS,oBAATA,EAAS,gBAATA,EAAS,kBAATA,CAAS,MAcrB,MAAMC,EACF,+YAESC,EAA8B,CAEvC,CACIllC,GAAIswB,cACJ/5B,MAAO,uBACP4uC,UAAWH,EAAUI,SACrBC,YAAa,CACTj9B,WAAY,KACZk9B,OAAQC,IAAOC,UACfC,iBAAkB,IAClBC,eAAgB,OAIxB,CACI1lC,GAAIswB,cACJ/5B,MAAO,uBACP4uC,UAAWH,EAAUW,OACrBN,YAAa,CACTO,EAAGX,EACHY,WAAY,mBACZP,OAAQC,IAAOC,UACfM,WAAY,QACZC,UAAW,MACXC,QAAS,SAIjB,CACIhmC,GAAIswB,cACJ/5B,MAAO,uBACP4uC,UAAWH,EAAUW,OACrBN,YAAa,CACTO,EAAGX,EACHY,WAAY,mBACZP,OAAQC,IAAOC,UACfS,SAAU,aACVF,UAAW,MACXN,iBAAkB,IAClBC,eAAgB,MAIxB,CACI1lC,GAAIswB,cACJ/5B,MAAO,uBACP4uC,UAAWH,EAAUI,SACrBC,YAAa,CACTj9B,WAAY,KACZk9B,OAAQC,IAAOC,UACfC,iBAAkB,IAClBC,eAAgB,OAIxB,CACI1lC,GAAIswB,cACJ/5B,MAAO,uBACP4uC,UAAWH,EAAUkB,QACrBb,YAAa,CACTQ,WAAY,mBACZP,OAAQC,IAAOY,U,64CChE3B,MAAMC,EAAa,CACfjvC,OAAQ,GACRgtB,OAAQ,GACRD,MAAO,GACP7U,OAAQ,KAGNg3B,EAAY,CACd,EAAG,GACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,GAAI,IACJ,GAAI,IACJ,GAAI,KACJ,GAAI,KACJ,GAAI,IACJ,GAAI,MAGFC,EAAmB,CAAC,KAAM,MAE1BC,EAA0Bv2C,YAAY,CACxCC,KAAM,qBACNP,aAAc,CACV82C,IAAGp2C,EAAA,GAAOg2C,GACVK,0BAA2B,GAC3BC,wBAAyB,GACzBN,aACAO,WAAY,KACZC,kBAAmB,EACnBC,2BAA2B,EAC3BC,kBAAmB,CACf,CACIC,aAAc,kBACdC,QAAS,aAEb,CACID,aAAc,iBACdC,QAAS,aAEb,CACID,aAAc,gBACdC,QAAS,kBAEb,CACID,aAAc,MACdC,QAAS,aAEb,CACID,aAAc,WACdC,QAAS,aAEb,CACID,aAAc,eACdC,QAAS,aAEb,CACID,aAAc,uBACdC,QAAS,WAGjBC,gDAAiD,CAC7CC,GAAI,CAAEA,GAAI,KAEdC,WAAW,GAEfj3C,SAAU,CACNk3C,6BAA8BA,CAAC92C,EAAOshB,KAClC,MAAMy1B,EAAiBf,EAAiBtjC,SACpC4O,EAAOlhB,QAAQ22C,gBAEbz1B,EAAOlhB,QAAQ22C,eACf,KACN/2C,EAAM+2C,eAAiBA,EACvB/2C,EAAMg3C,kBAAoBD,EAC1B/2C,EAAMi3C,oBAAsBF,CAAc,EAE9CG,qBAAsBA,CAACl3C,EAAOshB,KAC1BthB,EAAMg3C,kBAAoB11B,EAAOlhB,QAAQ42C,iBAAiB,EAE9DG,uBAAwBA,CAACn3C,EAAOshB,KAC5BthB,EAAMi3C,oBAAsB31B,EAAOlhB,QAAQ62C,mBAAmB,EAElEG,sBAAwBp3C,IACpBA,EAAMk2C,IAAGp2C,EAAA,GAAQg2C,GACjB,MAAMrvC,EAAQsvC,EAAU,GACxB/1C,EAAMq2C,WAAa5vC,EAAQ,KAAS,EAAI,KAAO,IAC/CzG,EAAMs2C,kBAAoB,CAAC,EAE/Be,aAAcA,CAACr3C,EAAOshB,KAClB,MAAAg2B,EAA8Bh2B,EAAOlhB,QAA7Bm3C,EAAUD,EAAVC,WAAY9wC,EAAK6wC,EAAL7wC,MACpBzG,EAAMk2C,IAAIqB,GAAc9wC,CAAK,EAEjC+wC,gBAAiBA,CAACx3C,EAAOshB,KACrB,MAAM7a,EAAQsvC,EAAUz0B,EAAOlhB,QAAQqG,OACvCzG,EAAMq2C,WAAa5vC,EAAQ,KAAS,EAAI,KAAO,IAC/CzG,EAAMk2C,IAAIn3B,OAAStY,EACnBzG,EAAMs2C,kBAAoBh1B,EAAOlhB,QAAQqG,KAAK,EAElDgxC,cAAeA,CAACz3C,EAAOshB,KACnBthB,EAAMq2C,WAAa/0B,EAAOlhB,QAAQi2C,UAAU,EAEhDqB,8BAAgC13C,IAC5BA,EAAMu2C,2BAA4B,CAAI,EAE1CoB,aAAe33C,IACXA,EAAM62C,WAAY,CAAI,EAE1Be,oBAAqBA,CAAC53C,EAAOshB,KACzB,MAAQu2B,EAA4Cv2B,EAAOlhB,QAAnDy3C,wCAEFlB,EACFkB,EAAwCC,QACpC,CAACC,EAAMC,KACH,MACyB7Q,EAErB6Q,EAFAC,oBACmB7Q,EACnB4Q,EADAE,kBAKJ,OAHAH,EAAK5Q,GAAQ4Q,EAAK5Q,IAAS,CAAC,EAC5B4Q,EAAK5Q,GAAMC,GAAM2Q,EAAK5Q,GAAMC,IAAO,GACnC2Q,EAAK5Q,GAAMC,GAAIh0B,KAAK4kC,GACbD,CAAI,GAEf,CAAC,GAGH3B,EAA0B,IACzB,IAAI+B,IACHN,EAAwCtyC,KACpCpF,GAAoBA,EAAjB+3C,sBAKT/B,EAA4B,IAC3B,IAAIgC,IACHN,EAAwCtyC,KACpChF,GAAsBA,EAAnB03C,wBAKfj4C,EAAMm2C,0BAA4BA,EAClCn2C,EAAMo2C,wBAA0BA,EAChCp2C,EAAM62C,WAAY,EAClB72C,EAAM22C,gDACFA,EACJ32C,EAAMu2C,2BAA4B,CAAK,KAKtC6B,EAAmBA,IAAM,CAACv2C,EAAUY,KAC7C,MAAMzC,EAAQyC,IACdZ,EAASu1C,KACTv1C,EAASw2C,KACTx2C,EACIi1C,EAA6B,CACzBC,eAAgB/2C,EAAMovB,MAAMkpB,mBAAmBvB,iBAEtD,EAGQsB,EAAwBA,IAAM71C,MAAOX,EAAUY,KACxD,MAAA81C,EAA0CC,YAAU/1C,KAA5CoE,EAAM0xC,EAAN1xC,OAAQgtB,EAAM0kB,EAAN1kB,OAAQD,EAAK2kB,EAAL3kB,MAAO7U,EAAMw5B,EAANx5B,OAE/B,IAAIw3B,YAA0B9zC,KAI9B,GAAKg2C,YAAiBh2C,KAAtB,CAQAZ,EAAS61C,KAET,IACI,MAAMjvC,QAAiBiwC,cAClBl3C,IAAIm3C,IAAUC,kCAAiC94C,EAAA,CAC5CuV,OAAQ,CACJwjC,oBAA8B,GAAThyC,EACrBiyC,oBAA8B,GAATjlB,EACrBklB,mBAA4B,GAARnlB,EACpBolB,cAAej6B,IAEhBrd,IAAaC,gBAEnByB,KAAKC,eACLC,MAAMC,eAEX1B,EACI+1C,EAAoB,CAChBC,wCACIpvC,EAAS/E,KAAKm0C,0CAG9B,CAAE,MAAO5wC,GACLpF,EACI+1C,EAAoB,CAChBC,wCAAyC,MAGjDh2C,EAAS81C,IACb,CA9BA,MANI91C,EACI+1C,EAAoB,CAChBC,wCAAyC,KAkCrD,EAGGoB,EAWHhD,EAAwBr1C,QAVxBy2C,EAAY4B,EAAZ5B,aACAI,EAAawB,EAAbxB,cACAC,EAA6BuB,EAA7BvB,8BACAZ,EAA4BmC,EAA5BnC,6BACAc,EAAmBqB,EAAnBrB,oBACAR,EAAqB6B,EAArB7B,sBACAF,EAAoB+B,EAApB/B,qBACAC,EAAsB8B,EAAtB9B,uBACAK,EAAeyB,EAAfzB,gBACAG,EAAYsB,EAAZtB,aAEW1B,MAA+B,O,oCCrP9C,oEAAO,IAAKiD,EAAgB,SAAhBA,GAAgB,OAAhBA,EAAgB,4BAAhBA,EAAgB,0BAAhBA,EAAgB,gBAAhBA,EAAgB,gBAAhBA,EAAgB,cAAhBA,CAAgB,MAQhBnzB,EAAW,SAAXA,GAAW,OAAXA,EAAW,0CAAXA,EAAW,kDAAXA,EAAW,kDAAXA,EAAW,kCAAXA,EAAW,0CAAXA,EAAW,0CAAXA,EAAW,sDAAXA,EAAW,gEAAXA,EAAW,sFAAXA,EAAW,sEAAXA,EAAW,kEAAXA,EAAW,8FAAXA,EAAW,wFAAXA,EAAW,sCAAXA,EAAW,kCAAXA,EAAW,kBAAXA,CAAW,K,yJCGR,MARoBozB,CAACC,EAAMpsB,IACtC3e,IACK4D,KAAK+a,EAAe,qCAAsC,CACvDzV,iBAAkB6hC,IAErB91C,MAAMC,e,wBCGR,MAAM81C,EACTA,CAACD,EAAMpsB,IAAmBxqB,MAAOX,EAAUY,KACvC24B,IAAUC,WAAW,CACjB9R,SAAU,WACVjI,OAAQ,WACR3M,MAAOykC,IAGX,IACQE,YAAiB72C,YACX29B,EAAwBgZ,EAAMpsB,GAExCnrB,EAASitB,YAAasqB,IACtBG,IAAcC,gBAAgBJ,EAClC,CAAE,MAAOp1C,GACLQ,YAAOR,EACX,E,scC3BR,SAAS8E,IAAiS,OAApRA,EAAW5K,OAAO6K,OAAS7K,OAAO6K,OAAOC,OAAS,SAAUC,GAAU,IAAK,IAAIzD,EAAI,EAAGA,EAAI0D,UAAUrC,OAAQrB,IAAK,CAAE,IAAI2D,EAASD,UAAU1D,GAAI,IAAK,IAAIwB,KAAOmC,EAAcjL,OAAOkL,UAAUC,eAAeC,KAAKH,EAAQnC,KAAQiC,EAAOjC,GAAOmC,EAAOnC,GAAU,CAAE,OAAOiC,CAAQ,EAAUH,EAASS,MAAMC,KAAMN,UAAY,CAElU/I,UACdsJ,OADc,IAEXC,EAAK9E,EAAAzE,EAAA0E,GAAA,OACS8E,IAAMC,cAAc,MAAOd,EAAS,CACrDkB,KAAM,OACNH,MAAO,6BACPC,QAAS,aACRJ,GAAqBC,IAAMC,cAAc,IAAK,CAC/CwoB,SAAU,WACIzoB,IAAMC,cAAc,OAAQ,CAC1CG,EAAG,0HACHC,KAAM,YACSL,IAAMC,cAAc,OAAQ,CAC3CG,EAAG,48BACHC,KAAM,UACUL,IAAMC,cAAc,OAAQ,KAAmBD,IAAMC,cAAc,WAAY,CAC/F8F,GAAI,KACU/F,IAAMC,cAAc,OAAQ,CAC1CI,KAAM,OACND,EAAG,uBACA,C,gGCRL,MAAM0vC,EAAmC,CACrCC,gBAAiB,GACjBC,gBAAiB,KACjBC,gBAAgB,EAChBC,WAAY,IAGHC,EAAsC,CAC/CC,OAAQN,EACRO,QAAS,CACL,CAAEn2C,KAAMo2C,KACR,CAAEp2C,KAAMq2C,KACR,CAAEr2C,KAAMs2C,KACR,CAAEt2C,KAAMu2C,KACR,CAAEv2C,KAAMw2C,OAIHC,EAAuC,CAChDP,OAAQN,EACRO,QAAS,CAAC,CAAEn2C,KAAMu2C,KAAe,CAAEv2C,KAAMw2C,O,o6CC5BtC,MAAME,EAAYA,CACrBC,EACA73C,KAEA,MAAAxC,EAA+Dq6C,GAAU,CAAC,EAAlEC,EAAet6C,EAAfs6C,gBAAiBC,EAAgBv6C,EAAhBu6C,iBAAqBC,EAAY/1C,EAAAzE,EAAA0E,GACpDm1C,EAAUr3C,EAAa83C,EAAkBC,EAE/C,OAAKF,GAAWR,EAOhBl6C,IAAA,GACO66C,GAAY,IACfX,YARIr3C,EACOm3C,EAEJQ,CAKA,C,q3DCnBf,MAAMM,EAAgBl7C,YAAY,CAC9BC,KAAM,WACNP,aCJO,CACHy7C,mBAAoB,CAChBh3C,KAAM,GACNi3C,kBAAkB,EAClBC,kBAAkB,EAClBv7C,eAAgB,GAChBw7C,aAAc,GACdC,iBAAkB,GAClBC,mBAAoB,GACpBC,WAAY,EACZC,2BAA2B,GAE/BC,aAAc,CACVC,UAAW,GACXC,WAAY,GACZC,SAAS,EACT5V,aAAc,GACdz4B,WAAW,EACX+T,YAAY,GAEhBu6B,mBAAoB,CAChBC,kBAAmB,GACnBC,iBAAkB,GAClBC,kBAAkB,EAClBC,aAAa,EACbjW,aAAc,GACdkW,sBAAsB,EACtB56B,YAAY,GAEhB66B,KAAM,CACFC,gBAAgB,EAChBC,UAAW,GACXC,gBAAgB,EAChBC,SAAU,KACVC,QAAS,KACTxW,aAAc,GACd1kB,YAAY,GAEhBm7B,aAAc,CACVx4C,KAAM,GACN4e,YAAY,EACZ65B,qBAAsB,KACtB1W,aAAc,KACd2W,oBAAqB,MAEzBC,cAAe,CACXC,aAAc,MAElBC,QAAS,GACTC,WAAY,CAAC,EACbC,gBAAiB,ID7CrBh9C,SAAU,CAENi9C,eAAgBA,CAAC78C,EAAKG,KAAkB,IAAdC,EAAOD,EAAPC,QACtB,MAAA08C,EAQI18C,EAAQ8L,SAAS6wC,iBAPjBC,EAAkBF,EAAlBE,mBACAC,EAAeH,EAAfG,gBACAC,EAA4BJ,EAA5BI,6BACA9B,EAAyB0B,EAAzB1B,0BACAjuC,EAAS2vC,EAAT3vC,UACAgwC,EAAQL,EAARK,SACAC,EAA4BN,EAA5BM,6BAEEpB,EACF57C,EAAQ8L,SAASlK,gBAAgB,mBACrC,OAAAlC,IAAA,GACOE,GAAK,IACR66C,mBAAkB/6C,IAAA,GACXE,EAAM66C,oBAAkB,IAC3BO,0BAA2BA,IAE/BC,aAAYv7C,IAAA,GACLE,EAAMq7C,cAAY,IACrBgC,OAAQL,EAAmB3b,YAC3Bia,UACI0B,EAAmB3b,aACnB2b,EAAmBM,qBACvBj3C,QAAS22C,EAAmB32C,QAC5BrG,MAAOg9C,EAAmBh9C,MAC1BmN,UAAWA,EACX+T,YAAY,IAEhBu6B,mBAAkB37C,IAAA,GACXE,EAAMy7C,oBAAkB,IAC3B8B,wBACIN,EAAgBM,wBACpBC,sBACIP,EAAgBO,sBACpB1B,qBAAsBmB,EAAgBnB,qBACtCoB,6BAA8BA,EAC9Bh8B,YAAY,IAEhB66B,KAAIj8C,IAAA,GACGE,EAAM+7C,MAAI,IACbC,eAAgBA,EAChBC,UAAWkB,EACXj7C,YAAai7C,IAEjBC,gCAA4B,EAIpCK,yBAA0BA,CAACz9C,EAAKO,KAAkB,IAAdH,EAAOG,EAAPH,QAChC,OAAAN,IAAA,GACOE,GAAK,IACRy7C,mBAAkB37C,IAAA,GACXE,EAAMy7C,oBAAkB,IAC3BC,kBAAmBt7C,EACnBy7C,aAAa,EACbjW,aAAc,MACjB,EAGT8X,wBAAyBA,CAAC19C,EAAKmiB,KAAkB,IAAd/hB,EAAO+hB,EAAP/hB,QAC/B,OAAAN,IAAA,GACOE,GAAK,IACRy7C,mBAAkB37C,IAAA,GACXE,EAAMy7C,oBAAkB,IAC3BE,iBAAkBv7C,EAClBy7C,aAAa,EACbjW,aAAc,MACjB,EAGT+X,kBAAoB39C,GAChBF,IAAA,GACOE,GAAK,IACRy7C,mBAAkB37C,IAAA,GACXE,EAAMy7C,oBAAkB,IAC3B8B,wBAAyB,GACzBC,uBAAuB,EACvB9B,kBAAmB,GACnBC,iBAAkB,GAClB/V,aAAc,OAI1BgY,UAAWA,CAAC59C,EAAKqiB,KAAkB,IAAdjiB,EAAOiiB,EAAPjiB,QACjB,OAAAN,IAAA,GACOE,GAAK,IACRy7C,mBAAkB37C,IAAA,GACXE,EAAMy7C,oBAAkB,IAC3B7V,aAAcxlC,KACjB,EAGTw7C,iBAAkBA,CAAC57C,EAAKwiB,KAAkB,IAAdpiB,EAAOoiB,EAAPpiB,QACxB,OAAAN,IAAA,GACOE,GAAK,IACRy7C,mBAAkB37C,IAAA,GACXE,EAAMy7C,oBAAkB,IAC3BG,kBAAkB,EAClB4B,uBAAuB,EACvBD,wBAAyBn9C,EACzBwlC,aAAc,MACjB,EAGTiY,eAAiB79C,GACbF,IAAA,GACOE,GAAK,IACRy7C,mBAAkB37C,IAAA,GACXE,EAAMy7C,oBAAkB,IAC3BI,aAAa,MAIzBiC,qBAAuB99C,GACnBF,IAAA,GACOE,GAAK,IACRy7C,mBAAkB37C,IAAA,GACXE,EAAMy7C,oBAAkB,IAC3BI,aAAa,MAKzBkC,SAAW/9C,GACPF,IAAA,GACOE,GAAK,IACR+7C,KAAIj8C,IAAA,GACGE,EAAM+7C,MAAI,IACbG,gBAAgB,EAChBtW,aAAc,OAI1BoY,WAAah+C,GACTF,IAAA,GACOE,GAAK,IACR+7C,KAAIj8C,IAAA,GACGE,EAAM+7C,MAAI,IACbG,gBAAgB,EAChBC,SAAU,KACVvW,aAAc,OAI1BqY,gBAAiBA,CAACj+C,EAAK2iB,KAAkB,IAAdviB,EAAOuiB,EAAPviB,QACvB,OAAAN,IAAA,GACOE,GAAK,IACR+7C,KAAIj8C,IAAA,GACGE,EAAM+7C,MAAI,IACb76B,WAAY9gB,KACf,EAGT89C,oBAAqBA,CAACl+C,EAAK+iB,KAAkB,IAAd3iB,EAAO2iB,EAAP3iB,QAC3B,OAAAN,IAAA,GACOE,GAAK,IACR+7C,KAAIj8C,IAAA,GACGE,EAAM+7C,MAAI,IACbI,SAAU/7C,EACV8gB,YAAY,KACf,EAGTi9B,sBAAuBA,CAACn+C,EAAK2jB,KAAkB,IAAdvjB,EAAOujB,EAAPvjB,QAC7B,OAAAN,IAAA,GACOE,GAAK,IACR+7C,KAAIj8C,IAAA,GACGE,EAAM+7C,MAAI,IACbK,QAASh8C,KACZ,EAGTg+C,cAAeA,CAACp+C,EAAKikB,KAAkB,IAAd7jB,EAAO6jB,EAAP7jB,QACrB,OAAAN,IAAA,GACOE,GAAK,IACR+7C,KAAIj8C,IAAA,GACGE,EAAM+7C,MAAI,IACbG,gBAAgB,EAChBC,SAAU,OAEdV,mBAAkB37C,IAAA,GACXE,EAAMy7C,oBAAkB,IAC3BG,kBAAkB,EAClB4B,uBAAuB,EACvBD,wBAAyBn9C,KAC5B,EAGTi+C,UAAWA,CAACr+C,EAAK8pC,KAAkB,IAAd1pC,EAAO0pC,EAAP1pC,QACjB,OAAAN,IAAA,GACOE,GAAK,IACR+7C,KAAIj8C,IAAA,GACGE,EAAM+7C,MAAI,IACbnW,aAAcxlC,KACjB,EAITk+C,eAAgBA,CAACt+C,EAAKiqC,KAAkB,IAAd7pC,EAAO6pC,EAAP7pC,QACtB,OAAAN,IAAA,GACOE,GAAK,IACR66C,mBAAkB/6C,IAAA,GACXE,EAAM66C,oBAAkB,IAC3BC,kBAAkB,EAClByD,iBAAiB,EACjBrD,mBAAoB,GACpBE,2BAA2B,GACxBh7C,IACN,EAGTo+C,gBAAiBA,CAACx+C,EAAKy+C,KAAkB,IAAdr+C,EAAOq+C,EAAPr+C,QACvB,OAAAN,IAAA,GACOE,GAAK,IACR66C,mBAAkB/6C,IAAA,GACXE,EAAM66C,oBAAkB,IAC3BC,kBAAkB,EAClByD,iBAAiB,EACjBrD,mBAAoB,IACjB96C,IACN,EAGTs+C,iBAAmB1+C,GACfF,IAAA,GACOE,GAAK,IACR66C,mBAAkB/6C,IAAA,GACXE,EAAM66C,oBAAkB,IAC3Bh3C,KAAM,GACNi3C,kBAAkB,EAClBC,kBAAkB,EAClBwD,iBAAiB,EACjBrD,mBAAoB,OAIhCH,iBAAkBA,CAAC/6C,EAAK2+C,KAAkB,IAAdv+C,EAAOu+C,EAAPv+C,QACxB,OAAAN,IAAA,GACOE,GAAK,IACR66C,mBAAkB/6C,IAAA,GACXE,EAAM66C,oBAAkB,IAC3BE,kBAAkB,EAClBv7C,eAAgBY,EAAQZ,eACxB27C,WAAY,KACf,EAGTyD,eAAgBA,CAAC5+C,EAAK6+C,KAAkB,IAAdz+C,EAAOy+C,EAAPz+C,QACtB,OAAAN,IAAA,GACOE,GAAK,IACR66C,mBAAkB/6C,IAAA,GACXE,EAAM66C,oBAAkB,IAC3BK,mBAAoB96C,EACpB26C,kBAAkB,EAClBwD,iBAAiB,KACpB,EAGTO,qBAAuB9+C,GACnBF,IAAA,GACOE,GAAK,IACR66C,mBAAkB/6C,IAAA,GACXE,EAAM66C,oBAAkB,IAC3BM,WAAYn7C,EAAM66C,mBAAmBM,WAAa,MAI9DoD,gBAAkBv+C,GACdF,IAAA,GACOE,GAAK,IACR66C,mBAAkB/6C,IAAA,GACXE,EAAM66C,oBAAkB,IAC3BC,kBAAkB,EAClBC,kBAAkB,EAClBwD,iBAAiB,MAK7BQ,cAAeA,CAAC/+C,EAAKg/C,KAAkB,IAAd5+C,EAAO4+C,EAAP5+C,QACrB,OAAAN,IAAA,GACOE,GAAK,IACR08C,QAASt8C,EAAQygB,KACjB87B,WAAYv8C,EAAQu8C,WACpBC,gBAAiBx8C,EAAQw8C,iBAAe,EAIhDqC,gBAAiBA,CAACj/C,EAAKk/C,KAAkB,IAAd9+C,EAAO8+C,EAAP9+C,QACvB,OAAAN,IAAA,GACOE,GAAK,IACRq8C,aAAYv8C,IAAA,GACLE,EAAMq8C,cACNj8C,IACN,EAGT++C,aAAcA,CAACn/C,EAAKo/C,KAAkB,IAAdh/C,EAAOg/C,EAAPh/C,QACpB,OAAAN,IAAA,GACOE,GAAK,IACRq8C,aAAYv8C,IAAA,GACLE,EAAMq8C,cAAY,IACrBx4C,KAAM,GACN4e,YAAY,EACZ65B,qBAAsB,KACtB1W,aAAcxlC,aAAO,EAAPA,EAASwlC,gBAC1B,EAITyZ,iBAAkBA,CAACr/C,EAAKs/C,KAAkB,IAAdl/C,EAAOk/C,EAAPl/C,QACxB,OAAAN,IAAA,GACOE,GAAK,IACRw8C,cAAa18C,IAAA,GACNE,EAAMw8C,eACNp8C,IACN,KAMVm/C,EA2BH3E,EAAch6C,QA1Bdi8C,EAAc0C,EAAd1C,eACAY,EAAwB8B,EAAxB9B,yBACAC,EAAuB6B,EAAvB7B,wBACAC,EAAiB4B,EAAjB5B,kBACAC,EAAS2B,EAAT3B,UACAhC,EAAgB2D,EAAhB3D,iBACAiC,EAAc0B,EAAd1B,eACAC,EAAoByB,EAApBzB,qBACAC,EAAQwB,EAARxB,SACAC,EAAUuB,EAAVvB,WACAC,EAAesB,EAAftB,gBACAC,EAAmBqB,EAAnBrB,oBACAC,EAAqBoB,EAArBpB,sBACAC,EAAamB,EAAbnB,cACAC,EAASkB,EAATlB,UACAC,EAAciB,EAAdjB,eACAE,EAAee,EAAff,gBACAE,EAAgBa,EAAhBb,iBACA3D,EAAgBwE,EAAhBxE,iBACA6D,EAAcW,EAAdX,eACAE,EAAoBS,EAApBT,qBAGAG,GAFeM,EAAfhB,gBACagB,EAAbR,cACeQ,EAAfN,iBACAE,EAAYI,EAAZJ,aACAE,EAAgBE,EAAhBF,iBAGWzE,MAAqB,O,ynCEtW7B,IAAK4E,EAAgB,SAAhBA,GAAgB,OAAhBA,EAAgB,0BAAhBA,EAAgB,yCAAhBA,EAAgB,6BAAhBA,EAAgB,oBAAhBA,EAAgB,UAAhBA,EAAgB,cAAhBA,EAAgB,6BAAhBA,EAAgB,kBAAhBA,EAAgB,iCAAhBA,EAAgB,+BAAhBA,EAAgB,8CAAhBA,EAAgB,2BAAhBA,EAAgB,qBAAhBA,EAAgB,8BAAhBA,EAAgB,UAAhBA,CAAgB,MAwB5B,MAAMhJ,EAAqBjkC,GAA+C,CACtE,CACIkO,KAAMlO,EAAE,qCACR1O,KAAM27C,EAAiBC,SACvBC,WAAY,wCAEhB,CACIj/B,KAAMlO,EAAE,4BACR1O,KAAM27C,EAAiBG,SACvBD,WAAY,wCAEhB,CACIj/B,KAAMlO,EAAE,oCACR1O,KAAM27C,EAAiBI,gBACvBF,WAAY,wCAEhB,CACIj/B,KAAMlO,EAAE,mCACR1O,KAAM27C,EAAiBK,eACvBH,WAAY,wCAEhB,CACIj/B,KAAMlO,EAAE,mCACR1O,KAAM27C,EAAiBM,uBACvBJ,WAAY,wCAEhB,CACIj/B,KAAMlO,EAAE,yBACR1O,KAAM27C,EAAiBO,IACvBL,WAAY,mCAEhB,CACIj/B,KAAMlO,EAAE,8BACR1O,KAAM27C,EAAiBQ,SACvBN,WAAY,wCAEhB,CACIj/B,KAAMlO,EAAE,kCACR1O,KAAM27C,EAAiBS,cACvBP,WAAY,qCAEhB,CACIj/B,KAAMlO,EAAE,iCACR1O,KAAM27C,EAAiBU,YACvBR,WAAY,MAEhB,CACIj/B,KAAMlO,EAAE,iCACR1O,KAAM27C,EAAiBW,oBACvBT,WAAY,MAEhB,CACIj/B,KAAMlO,EAAE,8BACR1O,KAAM27C,EAAiBY,UACvBV,WAAY,MAEhB,CACIj/B,KAAMlO,EAAE,8BACR1O,KAAM27C,EAAiBa,eACvBX,WAAY,MAEhB,CACIj/B,KAAMlO,EAAE,uCACR1O,KAAM27C,EAAiBc,cACvBZ,WAAY,OAePa,EAAmBC,IAIH,IAHzB,CACIhB,EAAiBK,eACjBL,EAAiBM,wBACnBryB,QAAQ+yB,GAEC,KACXh/C,IAAM+Q,GAA2BikC,EAAkBjkC,GACnDhN,IAAMgN,GAlBNA,IAEAikC,EAAkBjkC,GAAGulC,QACjB,CAAC2I,EAAKD,IAAQ1gD,IAAA,GACP2gD,GAAG,IACN,CAACD,EAAS38C,MAAO28C,KAErB,CAAC,GAW4BE,CAAqBnuC,G,w8BCvG1D,MAgBMouC,EAAsBjhD,YAAY,CACpCC,KAAM,iBACNP,aAAc,CAAC,EACfQ,SAAU,CACN0N,WAAYA,CAAC2gB,EAAM9tB,I,+VACfL,CAAA,GAD0BK,EAAPC,SAGvBwgD,mBAAoB,CAChB9uC,QAASA,CAAC9R,EAAOshB,KACb,MAAQu/B,EAAoBv/B,EAAOlhB,QAA3BygD,gBACR7gD,EAAM8gD,gBAAkB,CACpBD,gBAAiBpS,EAAYoS,IAEjC7gD,EAAM+gD,2BAA6BF,CAAe,EAEtDjuB,QAAUxyB,IACN,MAAQygD,EAAoBzgD,EAApBygD,gBACFG,EAAa,IAAIxvB,MACnB,IAAIA,MAAOC,UAlCJ,SAyCX,OALA3qB,UAAWC,aACPk6C,IACAJ,EACAG,GAEG,CAAE5gD,UAAS,GAG1B8gD,0BAA4BlhD,IACxBA,EAAM8gD,gBAAkB,CAAED,gBAAiB,KAAM,EAErDM,8BAA+BA,CAC3BnhD,EACAshB,KAEAthB,EAAMohD,2BAA6B9/B,EAAOlhB,QAAQihD,kBAClDrhD,EAAMshD,8BACFhgC,EAAOlhB,QAAQihD,kBAAkB97C,KAC5Bu7C,GAAoBA,EAAgBD,kBAE7C7gD,EAAMuhD,qCAAsC,EAC5CvhD,EAAMwhD,qCAAsC,CAAK,EAErDC,qCAAuCzhD,IACnCA,EAAMwhD,qCAAsC,CAAI,EAEpDE,gCAAiC,CAC7B5vC,QAAU9R,IACNA,EAAM2hD,uBAAwB,CAAI,EAEtC/uB,QAAUxyB,IACN0G,UAAWC,aAAa66C,KAAyB,GAC1C,CAAExhD,gBAMnBquC,EAAc,WAAqB,OAALvlC,UAAArC,OAAA,QAAAyO,IAAApM,UAAA,GAAAA,UAAA,GAAG,IAAuBulC,aAAa,EAEpEoT,EAOHlB,EAAoB//C,QANpB0M,EAAUu0C,EAAVv0C,WACAszC,EAAkBiB,EAAlBjB,mBACAO,EAA6BU,EAA7BV,8BACAM,EAAoCI,EAApCJ,qCACAC,EAA+BG,EAA/BH,gCACAR,EAAyBW,EAAzBX,0BAEWP,MAA2B,O,sCC9F1C,8OAGO,IAAKmB,EAAO,SAAPA,GAAO,OAAPA,EAAO,4BAAPA,EAAO,kCAAPA,EAAO,kBAAPA,EAAO,4BAAPA,EAAO,YAAPA,EAAO,gBAAPA,EAAO,wBAAPA,EAAO,4BAAPA,EAAO,oBAAPA,EAAO,4BAAPA,EAAO,oBAAPA,EAAO,gBAAPA,EAAO,oBAAPA,CAAO,MAqBZ,MAAMC,EAAuC,CAChDC,MAAO,CACHF,EAAQG,aACRH,EAAQI,OACRJ,EAAQK,KACRL,EAAQM,aACRN,EAAQO,QACRP,EAAQ77B,SACR67B,EAAQQ,SAIHC,EAAqC,CAC9CP,MAAO,CACHF,EAAQG,aACRH,EAAQI,OACRJ,EAAQK,KACRL,EAAQM,aACRN,EAAQO,QACRP,EAAQQ,SAIHE,EAAmC,CAC5CR,MAAO,CACHF,EAAQG,aACRH,EAAQK,KACRL,EAAQO,QACRP,EAAQQ,OACRR,EAAQW,aACRX,EAAQY,eAGHC,EAAiC,CAC1CX,MAAO,CACHF,EAAQG,aACRH,EAAQK,KACRL,EAAQM,aACRN,EAAQc,gBACRd,EAAQQ,OACRR,EAAQW,aACRX,EAAQe,SACRf,EAAQY,cAEZI,OAAQ,CACJhB,EAAQK,KACRL,EAAQc,gBACRd,EAAQQ,OACRR,EAAQY,aACRZ,EAAQW,aACRX,EAAQe,SACRf,EAAQG,eAIHc,EAAmC,CAC5Cf,MAAO,CACHF,EAAQG,aACRH,EAAQK,KACRL,EAAQM,aACRN,EAAQO,QACRP,EAAQQ,OACRR,EAAQY,eAIHM,EAAqC,CAC9ChB,MAAO,CACHF,EAAQG,aACRH,EAAQK,KACRL,EAAQM,aACRN,EAAQc,gBACRd,EAAQQ,QAEZQ,OAAQ,CACJhB,EAAQK,KACRL,EAAQc,gBACRd,EAAQQ,OACRR,EAAQG,c,6gDCnGhB,SAASh8B,EAASvc,GACd,MAAAu5C,EAMIv5C,EALAQ,iBAAS,IAAA+4C,EAAG,GAAEA,EACdj+B,EAIAtb,EAJAsb,4BACAD,EAGArb,EAHAqb,aACA+P,EAEAprB,EAFAorB,KACGhB,EAAUlvB,EACb8E,EAAK7E,GAET,OAAKkgB,EAKDla,eAAA,OAAA/K,IAAA,CACI,yBACAoK,UAAY,GACR8a,EAA8B,cAAgB,MAC9C9a,KACA4pB,GAAU,IAAAppB,SAAA,CACboqB,EACA/P,MAXE,IAcf,CAEAkB,EAAS+N,UAGR,GAEc/N,K,gWCJR,MAAMi9B,EAAmBh3C,GAAcrK,IAC1C,MAAQc,EAA0DuJ,EAA1DvJ,WAAYX,EAA8CkK,EAA9ClK,gBAAiBmhD,EAA6Bj3C,EAA7Bi3C,WAAYC,EAAiBl3C,EAAjBk3C,aAC7Cl3C,WAAUm3C,WAIVn3C,EAAS/G,KAAO+G,EAASm3C,UAG7B,MAAMC,EAAoB3gD,EACpBygD,EACAt8C,UAAWmF,WAAW,sBAIxBjK,WAAkB,qBAClBI,OAAOmhD,iBAAiB,aAAa,WACjC1hD,EAAS2hD,cACb,IAEA3hD,EAAS2hD,eAEb3hD,EAAS4hD,YAAyBv3C,IAClCrK,EAAS6hD,OACT7hD,EAASyL,YAAWpB,IACpBrK,EAAS8hD,YAAaz3C,IACtBrK,EAAS+hD,eACT/hD,EAASgiD,YAAmB33C,IAC5BrK,EAASiiD,YAAgB53C,IACzBrK,EAASkiD,YAAW73C,IACpBrK,EC1DuBqK,KAAQ,CAC/BrI,KAAM0J,IAAY9P,WAClB2C,QAAS8L,IDwDA83C,CAAa93C,IACtBrK,EACIoiD,YAAkB,CACdd,aACA98C,QAASrE,aAAe,EAAfA,EAAkB,kBAC3BshD,uBAGRzhD,EAASqiD,IAAuBh4C,IAChCrK,EAASsiD,IAAY72C,WAAWpB,IAChCrK,EAASuiD,YAAcl4C,IACvBrK,EAASwiD,IAAU9hD,uBACnBV,EAASyiD,OACTziD,EAAS4P,eAMLvF,WAAUq4C,iBACV1iD,EACI2iD,YACI,CACIC,SAAUriD,OAAOC,SAASi3B,SAC1Byb,YAAa2P,YACTC,YACIC,YAAkBxiD,OAAOC,SAASsJ,UAG1C2D,OAAQpD,EAASq4C,kBAErBr4C,EAASM,wBAGVN,WAAU/G,KACjBtD,EACIgjD,IAAgC34C,EAAS/G,KAAM+G,EAASW,WAErDX,WAAU44C,WACjBjjD,EAASkjD,YAAsB74C,EAAS44C,aACjC54C,WAAU84C,oBACjBnjD,EAASojD,YAAyB/4C,EAAS84C,oBAC/C,C,g6BEhFG,IAAIziB,EAAkB,KAE7B,MA0DM2iB,EAAiB3kD,IAAmD,IAAhDyhC,EAAazhC,EAAbyhC,cAAemjB,EAA0B5kD,EAA1B4kD,2BACrC,MAAQn2B,EAAao2B,cAAbp2B,SACAzc,EAAM2S,cAAN3S,EACA8yC,EAAuBC,YAAYr1B,KAAnCo1B,mBACAzkB,EAAc0kB,YAAYp1B,KAA1B0Q,UAEF2kB,EAAcC,mBAAQ,KACjB,CACHH,mBAAoBA,EACpBrjB,cAAeA,KAEpB,CAACqjB,EAAoBrjB,IAGxByjB,EACIC,YACItlB,IAAIulB,kBACJJ,EACA,qCAJA7hD,EAAI+hD,EAAJ/hD,KAAMqW,EAAS0rC,EAAT1rC,UAAW6rC,EAAUH,EAAVG,WAAYC,EAAUJ,EAAVI,WAAYC,EAAUL,EAAVK,WAkEjD,OA3DAC,qBAAU,KACSvjD,WACX,GAAIqjD,IAAetjB,EAAiB,CAChC,MAAQyjB,EAAgBtiD,EAAhBsiD,kBACFC,EACFD,EACAh3B,EACAgT,EACApB,EACAukB,EAER,GAEJe,EAAQ,GACT,CACCxiD,EACAmiD,EACA72B,EACAgT,EACApB,EACAukB,IAIJY,qBAAU,KACN,IAAII,EAAkB,KACtB,GAAI5jB,EACA,OAAQP,GACJ,KAAKG,IAAgBikB,OACjBD,EAAkB,SAClB,MACJ,KAAKhkB,IAAgBkkB,SACjBF,EAAkB,WAClB,MACJ,KAAKhkB,IAAgBE,UACjB8jB,EAAkB,YAClB,MACJ,QACIA,EAAkB,KAI1BA,GACA5jB,EAAgB+jB,oBACZH,EACA,SACAvlB,EAER,GACD,CAACoB,EAAepB,IAGnBmlB,qBAAU,IACC,KAEHxjB,EAAkB,IAAI,GAE3B,CAACP,IAGAn3B,eAAA,OAAKX,UAAU,oBAAmBQ,SAAA,CAC7Bk7C,GACG/6C,eAAA,OAAKX,UAAU,iDAAgDQ,SAAA,CAC3DH,cAAA,OAAKL,UAAU,mBAAkBQ,SAC7BH,cAAA,MAAAG,SAAK6H,EAAE,gCAEXhI,cAAC4b,IAAM,CACHC,MAAM,SACNmgC,QAAQ,UACRr8C,UAAU,UACVmc,QAASA,IAAMy/B,IAAap7C,SAC3B6H,EAAE,yBAIdwH,GACGxP,cAAA,OACIC,MAAO,CACHg8C,UAAW,SACb97C,SACFH,cAACk8C,IAAW,MAGpBl8C,cAAA,OACIL,UAAY,sBACR6P,EAAY,WAAa,YAC1BrP,SACHH,cAAA,OAAKmF,GAAG,yBAEV,EAIRu2C,EAAazjD,MACfwjD,EACAh3B,EACAgT,EACApB,EACAukB,KA2BA,IAAIr0B,E,+VAAOhxB,CAAA,CACP4mD,cAAeV,EACfW,UAAW,oBACXC,OAAQ53B,EACR63B,cAAc,EACdC,cAAe,CACXC,OAAO,GAEXC,KAAM,CACFC,MAAO,CACHC,wBAAwB,EACxBC,WAAW,KAZAC,EAAiBplB,EAAepB,IAkBvD,MAAMymB,QAAe,4CAGfA,EAAOC,OAAOx2B,GA7CHy2B,CAACC,EAAKC,KACnB,GAAID,EACA,OAAO,KAGPC,EAAeC,8BACfvC,EAA2B,MAAM,GAGrCsC,EAAeE,GACX,4BACA,SAAUC,GACNzC,EAA2ByC,GAA0B,EACzD,IAGJH,EAAeE,GAAG,8BAA8B,WAC5CxC,EAA2B,MAAM,EACrC,IAGA5iB,EAAkBklB,CAAc,GAwBE,EAGpCL,EAAmBA,CAACplB,EAAepB,KACrC,OAAQoB,GACJ,KAAKG,IAAgBC,gBACjB,MAAO,CACHE,cAAc,GAEtB,KAAKH,IAAgBikB,OACjB,MAAO,CACHY,MAAM,EACNa,UAAU,EACVC,WAAW,EACXC,OAAQ,CACJrgB,KAAM,WACN9hB,OAAQgb,EACRjyB,SAAU,QAGtB,KAAKwzB,IAAgBkkB,SACjB,MAAO,CACHW,MAAM,EACNe,QAAQ,EACRD,WAAW,EACXD,SAAU,CACNl5B,YAAa,UACbq5B,eAAgB,CACZC,MAAO,CACHtzC,MAAO,UACPiR,OAAQgb,EAAUsnB,YAEtBC,6BAA8B,CAAC,oBAI/C,KAAKhmB,IAAgBE,UACjB,MAAO,CACH2kB,MAAM,EACNe,QAAQ,EACRF,UAAU,EACVvlB,cAAc,EACdwlB,UAAW,CACPM,iBAAkB,EAClBC,WAAY,mBACZC,gBAAiB,CACbC,iBAAkB,QAClBC,WAAY5nB,EAAUsnB,WACtB9E,aAAc,OAElBqF,sBAAuB,CACnB,CACI5kD,KAAM,OACNlF,WAAY,CACR+pD,wBAAwB,EACxBC,yBAA0B,CACtB7/B,OAAQ,aAOpC,QACI,MAAO,CAAC,EAChB,EAGW8/B,IApSSzoD,IAIlB,IAHF+jB,EAAc/jB,EAAd+jB,eACA2kC,EAAQ1oD,EAAR0oD,SACA1D,EAA0BhlD,EAA1BglD,2BAEA,MAAMtjD,EAAWinD,cACTv2C,EAAM2S,cAAN3S,EAEAkQ,EAAe6iC,YAAY/1B,KAA3B9M,WAEAuf,EAAkB9d,EAAlB8d,cAQR,OACIn3B,eAAAk+C,WAAA,CAAAr+C,SAAA,CACIG,eAAA,OAAKX,UAAU,kDAAiDQ,SAAA,CAC5DH,cAAA,SACIL,UAAU,wBACVrG,KAAK,QACL6L,GAAIsyB,EACJgnB,QAASH,EACTI,SAdcC,KACrBL,GACDhnD,EAAS+f,YAAmBogB,GAChC,EAYYmnB,SAAU1mC,IAEd5X,eAAA,SACIX,UAAU,mCACVk/C,QAASpnB,EAAct3B,SAAA,CACvBG,eAAA,OAAKX,UAAU,mDAAkDQ,SAAA,CAC7DH,cAAC8+C,IAAiB,CAACj/C,cAAe43B,IAClCz3B,cAACJ,IAAiB,CAACC,cAAe43B,OAEtCn3B,eAAA,OAAKX,UAAU,qBAAoBQ,SAAA,CAC9Bs3B,IAAkBG,IAAgBC,iBAC/B7vB,EAAE,sCACLyvB,IAAkBG,IAAgBkkB,UAC/B9zC,EAAE,gCACLyvB,IAAkBG,IAAgBE,WAC/B9vB,EAAE,0CAIjBs2C,GACGt+C,cAAA,OAAKL,UAAU,UAASQ,SACpBH,cAAC26C,EAAc,CACXljB,cAAeA,EACfmjB,2BAA4BA,QAIzC,C,q1CC5EJ,MAAMmE,EAA0BA,CAAC/2C,EAAGg3C,KACvC,OAAQA,GACJ,KAAKC,EAA0BC,0BAC/B,KAAKC,EAAgBD,0BACrB,KAAKE,EAAgBF,0BACjB,OAAOl3C,EAAE,gDACb,KAAKq3C,EAAcC,SACnB,KAAKC,EAAmBD,SACpB,OAAOt3C,EAAE,iCACb,KAAKo3C,EAAgBE,SACjB,OAAOt3C,EAAE,uCACb,KAAKq3C,EAAcG,gBACnB,KAAKD,EAAmBC,gBACpB,OAAOx3C,EAAE,wCACb,KAAKq3C,EAAcI,KACnB,KAAKF,EAAmBE,KACpB,OAAOz3C,EAAE,8BACb,KAAKq3C,EAAcK,KACnB,KAAKH,EAAmBG,KACpB,OAAO13C,EAAE,8BACb,KAAKi3C,EAA0BU,QAC3B,OAAO33C,EAAE,iCACb,KAAKi3C,EAA0BW,WAC3B,OAAO53C,EAAE,oCACb,KAAKi3C,EAA0BY,YAC3B,OAAO73C,EAAE,oCACb,KAAKm3C,EAAgBW,YACjB,OAAO93C,EAAE,oCACb,KAAKm3C,EAAgBY,SACjB,OAAO/3C,EAAE,iCACb,KAAKm3C,EAAgBa,OACjB,OAAOh4C,EAAE,gCACb,KAAKm3C,EAAgBc,KACjB,OAAOj4C,EAAE,8BACb,KAAKm3C,EAAgBe,SACjB,OAAOl4C,EAAE,iCACb,KAAKq3C,EAAcc,gBACf,OAAOn4C,EAAE,wCACb,KAAKq3C,EAAce,QACf,OAAOp4C,EAAE,iCACb,KAAKo3C,EAAgBiB,gBACjB,OAAOr4C,EAAE,wCACb,KAAKo3C,EAAgBkB,UACjB,OAAOt4C,EAAE,mCACb,KAAKu4C,EAAkBC,QACnB,OAAOx4C,EAAE,iCACb,KAAKu4C,EAAkBE,KACnB,OAAOz4C,EAAE,8BACb,QACI,MAAO,GACf,EAGEi3C,EAA4B,CAC9BC,0BAA2B,kCAC3BS,QAAS,UACTC,WAAY,aACZC,YAAa,eAGXV,EAAkB,CACpBW,YAAa,cACbZ,0BAA2B,mCAC3Ba,SAAU,WACVC,OAAQ,SACRC,KAAM,OACNC,SAAU,YAGRb,EAAgB,CAClBC,SAAU,gBACVE,gBAAiB,kBACjBC,KAAM,YACNU,gBAAiB,kBACjBC,QAAS,UACTV,KAAM,aAGJN,EAAkB,CACpBE,SAAU,kBACVJ,0BAA2B,mCAC3BmB,gBAAiB,kBACjBC,UAAW,aAGTf,EAAqB,CACvBD,SAAU,qBACVE,gBAAiB,kBACjBC,KAAM,iBACNC,KAAM,kBAGJa,EAAoB,CACtBE,KAAM,OACND,QAAS,qBAGPE,EAAyB,CAC3BC,uBAAwB,CACpBlkD,IAAKwiD,EAA0BC,0BAC/B7b,MAAO,OAEXud,QAAS,CACLnkD,IAAKwiD,EAA0BU,QAC/Btc,MAAO,SAEXwd,WAAY,CACRpkD,IAAKwiD,EAA0BW,WAC/Bvc,MAAO,OAEXyd,WAAY,CACRrkD,IAAKwiD,EAA0BY,YAC/Bxc,MAAO,cAIT0d,EAAe,CACjBC,WAAY,CACRvkD,IAAK0iD,EAAgBW,YACrBzc,MAAO,aAEXsd,uBAAwB,CACpBlkD,IAAK0iD,EAAgBD,0BACrB7b,MAAO,OAEXjnB,QAAS,CAAE3f,IAAK0iD,EAAgBY,SAAU1c,MAAO,SACjD4d,OAAQ,CAAExkD,IAAK0iD,EAAgBa,OAAQ3c,MAAO,QAC9C6d,KAAM,CAAEzkD,IAAK0iD,EAAgBc,KAAM5c,MAAO,SAC1C8d,QAAS,CACL1kD,IAAK0iD,EAAgBe,SACrB7c,MAAO,cAIT+d,EAAa,CACfC,QAAS,CAAE5kD,IAAK4iD,EAAcC,SAAUjc,MAAO,OAC/Cie,eAAgB,CAAE7kD,IAAK4iD,EAAcG,gBAAiBnc,MAAO,OAC7DnX,KAAM,CAAEzvB,IAAK4iD,EAAcI,KAAMpc,MAAO,SACxCke,eAAgB,CACZ9kD,IAAK4iD,EAAcc,gBACnB9c,MAAO,SAEXme,QAAS,CAAE/kD,IAAK4iD,EAAce,QAAS/c,MAAO,oBAC9Coe,KAAM,CAAEhlD,IAAK4iD,EAAcK,KAAMrc,MAAO,cAGtCqe,EAAe,CACjBL,QAAS,CACL5kD,IAAK2iD,EAAgBE,SACrBjc,MAAO,aAEXsd,uBAAwB,CACpBlkD,IAAK2iD,EAAgBF,0BACrB7b,MAAO,OAEXse,eAAgB,CACZllD,IAAK2iD,EAAgBiB,gBACrBhd,MAAO,OAEXue,UAAW,CACPnlD,IAAK2iD,EAAgBkB,UACrBjd,MAAO,SAITwe,EAAkB,CACpBR,QAAS,CACL5kD,IAAK8iD,EAAmBD,SACxBjc,MAAO,OAEXie,eAAgB,CACZ7kD,IAAK8iD,EAAmBC,gBACxBnc,MAAO,OAEXnX,KAAM,CAAEzvB,IAAK8iD,EAAmBE,KAAMpc,MAAO,SAC7Coe,KAAM,CAAEhlD,IAAK8iD,EAAmBG,KAAMrc,MAAO,cAG3Cye,EAAiB,CACnBC,KAAM,CACFtlD,IAAK8jD,EAAkBE,KACvBpd,MAAO,aAEX2e,QAAS,CACLvlD,IAAK8jD,EAAkBC,QACvBnd,MAAO,cAIF4e,EAAernD,GAASA,EAAKsvB,eAAejQ,SAAW,EACvDioC,EAAwCtnD,IACjDA,EAAKoxB,cAECi2B,EAAYrnD,KACXA,EAAKixB,sBACiC,IAAvCjxB,EAAKmwB,QAAQo3B,QAAQxzC,cASlByzC,EAAkBxnD,IAC3B,OAAQA,EAAKynD,cACT,IAAK,eACD,OAAOtB,EAAaC,WACxB,IAAK,SACD,MAZkBpmD,IACtBsnD,EAAqCtnD,GAC9BmmD,EAAaJ,uBAEjBsB,EAAYrnD,GAAQmmD,EAAa3kC,QAAU2kC,EAAaE,OAQhDqB,CAAqB1nD,GAChC,IAAK,OACD,OAAOmmD,EAAaG,KACxB,IAAK,SACD,OAAOH,EAAawB,OAC5B,EAGSC,EAAkB5nD,GACvBA,GAAQA,EAAKmwB,QAAQpY,QAAQqY,kBACtB02B,EAAaE,UAEpBhnD,GAAQA,EAAK+mD,gBAAkB/mD,EAAK+mD,eAAec,OAC5Cf,EAAaC,eAEpBO,EAAqCtnD,GAC9B8mD,EAAaf,uBAEjBe,EAAaL,QAGlBqB,EAAaC,IAAW,CAC1Bz2B,KAAMy2B,EAAYz2B,KAAO,OAAS,GAClCs1B,QAASmB,EAAYnB,QACf,OACAmB,EAAYpB,eACZ,UACA,GACNqB,aAAcD,EAAYC,aAAe,OAAS,KAGzCC,EAA2BA,CAACjoD,EAAM0H,KACL,IAAlC1H,EAAK4wB,OAAOC,kBACLi1B,EAAuBI,WAI9BlmD,EAAKsvB,eAAewB,eACpB9wB,EAAKsvB,eAAewB,cAAcvmB,KAAO7C,EAEpC1H,EAAKixB,oBAGH60B,EAAuBE,QAFnBF,EAAuBC,uBAI3BD,EAAuBG,WAIzBiC,EAAgBloD,IACzB,MAAM+nD,EAAc/nD,EAAKoxB,YAAY22B,YAC/BI,EAASL,EAAUC,GAEzB,OAAI/nD,EAAKoxB,YAAYg3B,aAAeC,IAAazD,gBAC7CjqD,IAAA,GACOssD,EAAgBP,gBAAc,IACjCyB,OAAQA,IAIZJ,EAAYnB,SAAWmB,EAAYz2B,MAAQy2B,EAAYC,aACvDrtD,IAAA,GACO6rD,EAAWK,MAAI,IAClBsB,OAAQA,IAIZJ,EAAYnB,SAAYmB,EAAYnB,SAAWmB,EAAYz2B,KAC3D32B,IAAA,GACO6rD,EAAWI,SAAO,IACrBuB,OAAQA,IAIZJ,EAAYpB,gBAAkBoB,EAAYz2B,KAC1C32B,IAAA,GACO6rD,EAAWG,gBAAc,IAC5BwB,OAAQA,IAIZJ,EAAYz2B,KACZ32B,IAAA,GACO6rD,EAAWl1B,MAAI,IAClB62B,OAAQA,IAIhBxtD,IAAA,GACO6rD,EAAWC,SAAO,IACrB0B,OAAQA,GAAM,EAITG,EAAqBtoD,IAC9B,MAAMqxB,EAAarxB,EAAKoxB,YAAYC,WAC9B82B,EAASL,EAAUz2B,GAEzB,OAAIrxB,EAAKoxB,YAAYg3B,aAAeC,IAAazD,gBAC7CjqD,IAAA,GACOssD,EAAgBP,gBAAc,IACjCyB,OAAQA,IAIZ92B,EAAWC,MAAQD,EAAW22B,aAC9BrtD,IAAA,GACOssD,EAAgBJ,MAAI,IACvBsB,OAAQA,IAIZ92B,EAAWC,KACX32B,IAAA,GACOssD,EAAgB31B,MAAI,IACvB62B,OAAQA,IAIhBxtD,IAAA,GACOssD,EAAgBR,SAAO,IAC1B0B,OAAQA,GAAM,EAITI,EAA0BvoD,GAC/BA,GAAQA,EAAK+mD,gBAAkB/mD,EAAK+mD,eAAec,OACnDltD,EAAA,GACOusD,EAAeE,SAI1BzsD,EAAA,GACOusD,EAAeC,K,oCCxV1B,kCAAO,MAAMrwB,EAAsBj8B,GAAUA,EAAMovB,MAAM2D,UAAU46B,O,m4CCMnE,MAAMC,EAAeluD,YAAY,CAC7BC,KAAM,UACNP,aCPO,CACHyuD,+BAA+B,EAC/BC,cAAc,EACdC,MAAO,KACPC,uBAAuB,EACvBC,kBAAmB,GACnBC,0BAA0B,EAC1BC,+BAA+B,GDCnCvuD,SAAU,CACNwuD,qBAAsBA,CAACpuD,EAAKG,KAAkB,IAAdC,EAAOD,EAAPC,QAC5BJ,EAAMiuD,kBAAoB,IACnBjuD,EAAMiuD,qBACN7tD,EAAQuD,OAEf3D,EAAM6tD,+BAAgC,EACtC7tD,EAAMkuD,0BAA2B,EACjCluD,EAAMmuD,+BAAgC,EACtCnuD,EAAMquD,8BAAgCjuD,EAAQq2C,YAAY,EAE9D6X,sBAAuBA,CAACtuD,EAAKO,KAAkB,IAAdH,EAAOG,EAAPH,QAC7BJ,EAAMiuD,kBAAoBjuD,EAAMiuD,kBAAkB97C,QAC7Co8C,GAAWA,EAAOC,UAAYpuD,EAAQouD,SAC1C,EAELC,iCAAmCzuD,IAC/BA,EAAMiuD,kBAAoB,GAC1BjuD,EAAM6tD,+BAAgC,EACtC7tD,EAAMkuD,0BAA2B,EACjCluD,EAAMmuD,+BAAgC,CAAK,EAE/CH,sBAAuB,CACnBl8C,QAASA,CAAC9R,EAAKmiB,KAAkB,IAAd/hB,EAAO+hB,EAAP/hB,QACfJ,EAAMguD,sBAAwB5tD,EAAQsuD,KACtC1uD,EAAMiuD,kBAAoBjuD,EAAMguD,sBAC1BhuD,EAAMiuD,kBACN,EAAE,EAEZr7B,QAAUxyB,IACNg7B,IAAUC,WAAW,CACjB9R,SAAU,UACVjI,OAAQ,cACR3M,MAAOvU,EAAQsuD,KAAQ,UAAStuD,EAAQ4uB,WAAa,SAElD,CAAE5uB,aAGjBuuD,8BAAgC3uD,IAC5BA,EAAMkuD,0BAA2B,EACjCluD,EAAMmuD,+BAAgC,CAAK,EAE/CS,+BAAiC5uD,IAC7BA,EAAMkuD,0BAA2B,EACjCluD,EAAMmuD,+BAAgC,CAAI,EAE9CU,kBAAoB7uD,IAChBA,EAAM8tD,cAAe,CAAI,EAE7BgB,SAAUA,CAAC9uD,EAAKqiB,KAAkB,IAAdjiB,EAAOiiB,EAAPjiB,QAChBJ,EAAM+tD,MAAQ3tD,EAAQ2tD,MACtB/tD,EAAMguD,sBACFhuD,EAAMguD,uBACNhuD,EAAMiuD,kBAAkBtzC,MACpB6H,IAAA,IAAGgsC,EAAOhsC,EAAPgsC,QAAO,OACNpuD,EAAQ2tD,MAAMgB,cAAc58C,QACvB68C,GAAiBR,IAAYQ,EAAaR,UAC7C3nD,MAAM,IAEpB7G,EAAM8tD,cAAe,CAAK,EAE9BmB,mBAAoBA,CAACjvD,EAAK2iB,KAAkB,IAAdviB,EAAOuiB,EAAPviB,QAC1B,MAAQ8uD,EAAwB9uD,EAAxB8uD,WAAYC,EAAY/uD,EAAZ+uD,QACdC,EAAmBpvD,EAAM+tD,MAAMgB,cAAcxpD,KAAKJ,GACpDA,EAAKqpD,UAAYU,EAAUpvD,IAAA,GAEdqF,GAAI,IACPkqD,UAAU,EACVC,gBAAgB,EAChBC,MAAOJ,IAAOrvD,EAAA,GAEbqF,KAEfnF,EAAM+tD,MAAMgB,cAAgBK,CAAgB,KAKjDI,EAUH5B,EAAahtD,QATbwtD,EAAoBoB,EAApBpB,qBACAJ,EAAqBwB,EAArBxB,sBACAa,EAAiBW,EAAjBX,kBACAF,EAA6Ba,EAA7Bb,8BACAC,EAA8BY,EAA9BZ,+BACAE,EAAQU,EAARV,SACAL,EAAgCe,EAAhCf,iCACAQ,EAAkBO,EAAlBP,mBACAX,EAAqBkB,EAArBlB,sBAGWV,MAAoB,O,sqEEhGnC,SAAS6B,EAAazvD,EAAOshB,GACzB,OAAQA,EAAOzd,MACX,IAAK,QACD,OAAA/D,IAAA,GACOE,GAAK,IACR8b,OAAQ,WACR9X,MAAOsd,EAAOtd,QAGtB,IAAK,UACD,OAAAlE,IAAA,GACOE,GAAK,IACR8b,OAAQ,WACRpY,KAAM4d,EAAO5d,OAGrB,IAAK,UACD,OAAA5D,IAAA,GACOE,GAAK,IACR8b,OAAQ,aAGhB,QACI,MAAM,IAAInK,MAAO,0BAAyB2P,EAAOzd,QAG7D,CAUO,SAAS6hD,EAAagK,EAAaC,EAAcC,GACpD,MAIEC,EAAAC,EAJwBC,qBAAWN,EAAc,CAC/C3zC,OAAQ4zC,EAAc,OAAS,WAC/BhsD,KAAM,CAAC,EACPM,MAAO,OACT,GAJKhE,EAAK6vD,EAAA,GAAEhuD,EAAQguD,EAAA,GAMhBG,EAAcC,uBAAYztD,UAC5BX,EAAS,CAAEgC,KAAM,YACjB6rD,EAAYC,GACPvsD,MAAKjD,IAAc,IAAXuD,EAAIvD,EAAJuD,KACL7B,EAAS,CAAEgC,KAAM,UAAWH,QACtB,IAETJ,OAAOU,IACJnC,EAAS,CAAEgC,KAAM,QAASG,UAC1BQ,YACI,IAAImN,MACC,SAAQi+C,GAAWD,YAAuB3rD,KAElD,GACH,GACP,CAAC0rD,EAAaC,EAAcC,IAE/B7J,qBAAU,KACF2J,GACAM,GACJ,GACD,CAACA,EAAaN,IAMjB,OAAA5vD,EAAA,CACIia,UAA4B,SAAjB/Z,EAAM8b,QAAsC,aAAjB9b,EAAM8b,OAC5Co0C,OAAyB,SAAjBlwD,EAAM8b,OACdoF,WAA6B,aAAjBlhB,EAAM8b,OAClB+pC,WAA6B,aAAjB7lD,EAAM8b,OAClB8pC,WAA6B,aAAjB5lD,EAAM8b,OAClBgqC,WAVeA,KACfkK,GAAa,GAUVhwD,EAEX,C,oCClFA,sFAQO,MAAMkX,EAA0B,CACnCC,oBAAsBzR,GAAqB,CAAC7D,EAAUY,KAClDZ,EAASsV,YAAoBzR,IAC7B7D,EAAS2mB,IAAazL,2BACtBlb,EACIirC,YACIqjB,YAAe1tD,KAAYic,gBAC3BhZ,GAEP,EAEL7F,MAAOA,IAAOgC,IACVA,EAAS4xB,eACT5xB,EAAS2mB,IAAazL,0BAA0B,E,oCCrBxD,0EAAMqzC,EAAa,CACfC,MAAM,EACNC,OAAO,EACPC,IAAK,OAGHC,EAAa,CACfC,KAAM,OACNC,MAAO,QACPH,IAAK,OAGII,EAAWlqD,GAAU+pD,EAAW/pD,GAChCmqD,EAAWnqD,GAAU2pD,EAAW3pD,E,47BCFtC,MAAMoqD,EAAmBA,CAACzrD,EAAQmS,IAC9BpU,IACF3B,IACI,gBAAe4D,mCAAwCmS,I,+VAAkBzX,CAAA,CAEtE2B,cAAe,gCACZC,IAAaC,gBAGvByB,KAAKC,eACLC,MAAMC,eAOFutD,EAAatuD,MAAO4C,EAAQ2rD,IAC9BrY,cACFl3C,IAAIwrB,YAAgB,SAAQ5nB,SAAe2rD,IAC3C3tD,KAAKC,eACLD,MAAKjD,IACK,CAAEuD,KADAvD,EAAJuD,KACUoY,OADE3b,EAAN2b,WAGdxY,MACGC,YAAY,CAER,IAAKC,IAAWC,UAChB,IAAKD,IAAWC,aAUnButD,EAAcxuD,MACvB4C,EACAwgB,EACAqrC,EACAF,EACAG,KAEA,IACI,MAKA1jB,SALuBkL,cAAwBzmC,KAC3C+a,YAAgB,mBAAkB5nB,IAAU2rD,GAC5C,CAAEnrC,SAAQsrC,uBACVxvD,IAAaC,gBAGb+B,KACIytD,EAAG3jB,EAAH2jB,IACAhsD,EAAIqoC,EAAJroC,KACAwlB,EAAgB6iB,EAAhB7iB,iBACAF,EAAkB+iB,EAAlB/iB,mBACAD,EAAQgjB,EAARhjB,SACA4mC,EAAiB5jB,EAAjB4jB,kBAKJ1mC,EAQAymC,EARAzmC,MACA2mC,EAOAF,EAPAE,aACAxsC,EAMAssC,EANAtsC,iBACAysC,EAKAH,EALAG,sBACoBC,EAIpBJ,EAJAK,mBACeC,EAGfN,EAHAO,cACAC,EAEAR,EAFAQ,iBACAC,EACAT,EADAS,UAIAptC,EAQArf,EARAqf,SACA1M,EAOA3S,EAPA2S,WACA2M,EAMAtf,EANAsf,QACAkxB,EAKAxwC,EALAwwC,SACA38B,EAIA7T,EAJA6T,WACAod,EAGAjxB,EAHAixB,oBACgBy7B,EAEhB1sD,EAFA2sD,eACAC,EACA5sD,EADA4sD,UAGJ,MAAO,CACHV,eACAM,mBACAxsD,KAAM,CACFqf,WACA1M,aACA2M,UACArf,OAAQD,EAAKC,OACbuwC,WACA38B,aACAod,sBACAy7B,iBACAE,aAEJC,QAAS,CACLxtC,WACAkG,QACAF,WACA3F,mBACAysC,wBACAC,wBACAE,qBACAhnC,qBACA2L,sBACAzL,oBAEJsnC,cAAe,CACXvnC,QACAC,mBACAF,qBACAD,YAEJ0nC,eAAgBN,EAChBR,oBAER,CAAE,MAAOptD,GACDA,EAAME,UAAYV,IAAWW,WAC7B8sD,IAEAzsD,YAAOR,EAEf,GAGSmuD,EAAqBA,CAAC98C,EAAQ07C,IAChCrY,cACFl3C,IACGwrB,YACI,yCACA+jC,GAEJ,CAAE17C,WAELjS,KAAKC,eACLC,MAAMC,eAGF6uD,EAA6B/8C,GAC/B9T,IACF0Q,KACG,iCACAoD,EACA3T,IAAaC,eAEhByB,KAAKC,eACLC,MAAMC,c,gFChKR,MAAMjB,EAAgB+vD,GACxB,cAAaC,mBACVD,GAEMjwD,OAAOC,SAASi3B,SACZl3B,OAAOC,SAASsJ,OAChBvJ,OAAOC,SAASkwD,O,wHCH3B,MAAMjlD,EAAcpB,IAAQ,CAC/BrI,KAAM0J,IAAY9P,WAClB2C,QCLW,CACXoyD,aAAa,KDQJhP,EAAeA,KACjB,CACH3/C,KAAM0J,IAAY7P,gB,qLEE1B,MAoCM+0D,EAA6B3hC,GAAajvB,IAC5CA,EAAS,CACLgC,KAAM,+BACNzD,QAAS0wB,GACX,EAoFOhb,EAA0B1V,GAAYoC,UAC/CX,EAAS,CACLgC,KAAM,2BACNzD,WACF,EAGS,KACXP,MApIUA,KAAA,CACVgE,KAAM,2BAoINqc,cAjIkBA,IAAM1d,UACxBX,EAAS4wD,EAA0B,IAAI,EAiIvCC,iBA3FsBC,GAAkBnwD,UACxCX,EAAS,CACLgC,KAAM,wBACNzD,QAAS,CACLuyD,kBAEN,EAsFFC,iBAnFsBC,IAAa,CACnChvD,KAAM,wBACNzD,QAAS,CACLyyD,mBAiFJC,sBAtH0BA,CAACC,EAAMC,KAAY,CAC7CnvD,KAAM,2BACNzD,QAAS,CACL2yD,OACAC,aAmHJt5C,iCA7ECxH,GAAoB1P,MAAOX,EAAUY,KAClC,IACIZ,EAAS,CACLgC,KAAM,iCAGV,MAAAokC,EAA8B9xB,YAAY1T,KAAlC0W,EAAO8uB,EAAP9uB,QAASsW,EAAQwY,EAARxY,SACXrqB,EAAS6tD,YAAsBxwD,KAC7B2W,EAAcD,EAAdC,UACA3D,EAAgBga,EAAhBha,YAERy9C,OC7EgCC,EACxC19C,EACA2D,EACAhU,KAEA,MAAMiQ,EAAS,CACX+9C,gBAAiB39C,EACjB2D,YACAhU,UAGJ,OAAOjC,IAAa3B,IACf,yDAAwD2N,IAAGC,UACxDiG,KAEJ3T,IAAaC,cAChB,ED6D8BwxD,CACnB19C,EACA2D,EACAhU,GAHI1B,EAAIwvD,EAAJxvD,KAOR7B,EAAS,CACLgC,KAAM,iCACNzD,QAAS,CACLizD,sBAL0B3vD,EAA1B2vD,sBAMAnhD,gBACIA,GACAohD,YAA8B7wD,OAG9C,CAAE,MAAOuB,GACLnC,EAAS,CACLgC,KAAM,8BAEd,GA+CJ0vD,yBAhH6BA,CAACP,EAASzM,IAAa1kD,IACpDA,EAAS,CACLgC,KAAM,8BACNzD,QAAS,CACL4yD,UACAzM,YAEN,EA0GFkM,4BACAe,2BA7CC17C,GAAetV,MAAOX,EAAUY,KAC7B,GACI6W,YAAsB7W,KAAY,6BAClCqV,EAEA,IACI,MAAA27C,OCxF2B37C,IACvC47C,IAA8Bh1D,MACzB,iDAAgDoZ,KDuF/B67C,CAA2B77C,GAD7B87C,EAA+BH,EAA/BG,gCAEAh1C,EACJg1C,EADIh1C,kBAER/c,EAAS,CACLgC,KAAM,+BACNzD,QAAS,CACLwe,oBACAC,wBALJ+0C,EADuB/0C,0BAS/B,CAAE,MAAO7a,GACLnC,EAAS,CACLgC,KAAM,mCAEVW,YACI,+CACIR,EAAME,QAElB,CACJ,EAoBJ2vD,qBArIyBA,CAAChwD,EAAMmvD,IAAanxD,IAC7CA,EAAS,CACLgC,KAAM,yBACNzD,QAAS,CACLyD,OACAmvD,YAEN,EA+HFl9C,yB,oCE3JJ,8UAKO,MAAMg+C,EAA0BC,GAC5BA,EACFxuD,KAAKyuD,GAAaA,EAASpuC,SAC3BkyB,QAAO,CAACmQ,EAAOgM,IACLhM,EAAQgM,GAChB,GAGEC,EAAe/uD,GACjBA,GAAQA,EAAKsvB,gBAAkBtvB,EAAKsvB,eAAejQ,SAAW,EAC/Drf,EAAKsvB,eAAejQ,SACpB,EAGG2vC,EAAqBhvD,IAC9B,MAAMoxB,EAAcpxB,EAAKoxB,YACzB,OAAOA,GACHA,EAAYw9B,WACZx9B,EAAYw9B,UAAUltD,OAAS,EAC7BitD,EAAuBv9B,EAAYw9B,WACnC,IAAI,EAGDK,EAAajvD,GACtBA,EAAK4wB,QAAU5wB,EAAK4wB,OAAOs+B,QAAUlvD,EAAK4wB,OAAOs+B,OAAS,EACpDlvD,EAAK4wB,OAAOs+B,OACZ,KAEGC,EAAenvD,IACC,IAAlBA,EAAKkmC,UAAqBlmC,EAAKovD,UAAYpvD,EAAKovD,SAASC,SAC1DrvD,EAAKovD,SAASC,SACd,KAGGC,EAAsBtvD,MACxBA,EAAKovD,WAAYpvD,EAAKovD,SAASG,WAChCvvD,EAAKovD,SAASG,SAIXC,EAAkBA,CAACxvD,EAAM4zB,KAClC,MAAM67B,EAA0Bj1D,IAC5B,MAAMk1D,EAAQ,CACVC,SAAU,OACVC,aAAc,aACdC,aAAc,aACdC,gBAAiB,cACjBC,YAAa,mBAEjB,OAAKL,EAAMl1D,GAGE,aAATA,GAAuBo5B,IAAiBo8B,IAAgBC,MACjDP,EAAoB,aAExBA,EAAMl1D,GALFA,CAKO,EAOhB01D,EAA6BC,GACvB,GAAEV,EACNU,EAAaC,gBANYD,IACC,aAA9BA,EAAaC,aACP,GACC,KAAI1sC,YAAYysC,EAAaE,gBAIhCC,CAAwBH,KAGhC,MAAO,KACH,MAAMpjD,EAAkB/M,EAAKmwB,QAAQpjB,gBAErC,GAAI/M,EAAKoxB,YAAa,CAElB,MAAMm/B,EAAmBvwD,EAAKoxB,YAAYm/B,iBAC1C,GAAIA,EACA,OAAIA,EAAiBC,WACT,GAAEf,EACN,gBACE/rC,YAAY1jB,EAAKoxB,YAAYm/B,iBAAiB3C,QAGpD2C,EAAiBE,eACVC,IAAQC,gBAAgBC,cAE3B,GAAEnB,EACNc,EAAiB/1D,UACfkpB,YAAY1jB,EAAKoxB,YAAYm/B,iBAAiB3C,QAKpD,GAA+B,IAA3B7gD,EAAgBrL,OAAc,CAC9B,MAAMmvD,EACF7wD,EAAKmwB,QAAQpjB,gBAAgB,GACjC,MAA8C,aAAvC8jD,EAAsBT,aACvBM,IAAQC,gBAAgBG,SACxBptC,YAAYmtC,EAAsBR,aAC5C,CAEA,OAAOtjD,EAAgB3M,KAAI,CAAC+vD,EAAc9vD,IAC/BuzB,IAAiBo8B,IAAgBC,MACpC7qD,cAAA,KAAAG,SAAY2qD,EAA0BC,IAA9B9vD,GAEP,GAAE6vD,EAA0BC,KACzB9vD,EAAI0M,EAAgBrL,OAAS,KAAO,MAKxD,CAwBA,OArB+B,IAA3BqL,EAAgBrL,aAGVyO,IAFNpD,EAAgB6C,MACXmhD,GAAmD,aAAhCA,EAAeX,eAoBrCM,IAAQC,gBAAgBG,SACxBptC,aAhByB,IAA3B3W,EAAgBrL,OACV,CAAE2uD,aAAc,GAChBtjD,EAAgB4lC,QAAO,CAACqe,EAAaC,IAE5BA,EAAaZ,aACVW,EAAYX,cACkB,aAA9BY,EAAab,cACY,aAA7BY,EAAYZ,aAELa,EAEJD,KAKuBX,aAAa,CAC5D,EAGQa,EAAwBt9B,GACjCA,IAAiBo8B,IAAgBmB,M,kICpIrC,MAAMC,EAA4B,UAC9BtuD,IACM,mJACA8F,QAAQgS,QAAQ,CAAEy2C,aAAc,OAHR,G,4BCDlC,MA4Cax4D,EAAYwE,MACrBi0D,EACAr2B,EACAoP,KAEA,MAAMxvC,EAAQogC,EAAI39B,WAClB,MAbAzC,IAEAiI,KACU,OAAVjI,GACiB,iBAAVA,GACP,YAAaA,EAQN02D,CAAc12D,GDzCYwC,OACjCm0D,EACAC,EACAC,KAEA,MACML,SAD2BD,GACOC,aACxC,GATW,QADSM,EAUAN,IATiB,iBAAXM,KAAuB,QAASA,GAUtD,MAAM,IAAInlD,MAAM,sCAXAmlD,MAapB,GAA4B,iBAAjBD,EACP,MAAM,IAAIllD,MACN,wEAGR,MAAMlJ,QAAiB+tD,EAAah1D,IAAIm1D,EAAKC,EAAKC,GAElD,MAAO,CAAEnzD,WADU+E,EAASsuD,OACb,ECyBTC,CACIh3D,EAAMmI,QAAQA,QACdnI,EAAMmI,QAAQM,SACdguD,GAEH7iB,YAAoB6iB,EAAOr2B,EAAKoP,EAE9B,EAGAF,EAAgC9sC,MACzCi0D,EACAr2B,EACAoP,KAEA,MAAMlgC,QAAetR,EAAUy4D,EAAOr2B,EAAKoP,GAE3C,GA/DiCinB,IAChB,iBAAVA,EA8DHQ,CAA4BR,GAAQ,CACpC,MAAM/yD,SAAc4L,GAAQ5L,KAExBA,QA/DoBlB,OAC5Bi0D,EACAr2B,EACAoP,EACA9rC,KAKA,QAd6D4R,KAA5DnQ,OAFDA,EAgBgCqqC,QAd3B,EAAJrqC,EAAmCsqC,sBAehC,MAAM,IAAI99B,MACL,gDAA+C8kD,KAlBxDtxD,MAsBA,MAAMxB,EAAQ6rC,EAAaC,qBAAqB/rC,GAE3CC,GAILy8B,EAAIv+B,SACAqiD,IACIvgD,EAAMwO,QAAQ2K,GAAMA,EAAEo6C,aAAY3xD,KAAKuX,GAAMA,EAAE1X,UAEtD,EAuCa+xD,CAAwBV,EAAOr2B,EAAKoP,EAAc9rC,EAEhE,CACA,OAAO4L,CAAM,C,wdCjFjB,MAOa8nD,EAA4CvW,GACrD3iD,OAAO2W,OAAOwiD,IAAUC,qCAAqCnlD,QACxD2K,GAAMA,IAT8B+jC,IACzC0W,YAAoB1W,GACdwW,IAAUC,oCAAoCE,OAC9CC,YAAgB5W,GAChBwW,IAAUC,oCAAoCI,GAC9CL,IAAUC,oCAAoCK,cAInCC,CAAoC/W,K,ugCCbzD,MAcMgX,EAAgBA,CAAClK,EAASmK,KAC5B,GAAInK,EAAS,CACT,MAAMoK,EAAa,GAWnB,OAVApK,EAAQpoD,KAAK4M,IACT,MAAQ6lD,EAAkB7lD,EAAlB6lD,cDFkBnX,SCIAiX,EDH3B,IACAT,IAAUY,uCACVZ,IAAUa,oCACVb,IAAUc,oCACVd,IAAUe,kCACVf,IAAUgB,+BACVjB,EAAyCvW,KCHiBnuC,SACjDslD,IAGJD,EAAW3kD,KAAKjB,EACpB,IAEG4lD,CACX,GAKEO,EAAkCC,GACpCA,EAAgBhzD,KAAKgzD,GAAoB,CACrCA,EAAgB9xD,MAChB8xD,EAAgBntB,aAYlBotB,EAAY,SAACC,GAAuD,IAAAC,EAAAC,EAAAC,EAAA,IAAzCd,EAA6B5uD,UAAArC,OAAA,QAAAyO,IAAApM,UAAA,GAAAA,UAAA,GAAG,KAC7D,MAAM6uD,EAAa,CACfc,aAAc,GACdhB,cAAe,GACfiB,iBAAkB,GAClB/gD,aAAc0gD,EAAa1gD,cAAgB,GAC3CghD,mBAA4C,QAAzBL,EAAAD,EAAa1gD,oBAAY,IAAA2gD,GAAK,QAALC,EAAzBD,EAA4B,UAAE,IAAAC,OAAL,EAAzBA,EAAgCjpD,KAAM,EACzDspD,iBAAkB,CAAC,EACnBC,YAAa,CAAC,EACdtL,QAAS,CAAC,EACVuL,WAAYT,EAAaS,YAAc,KACvCC,eAAgBV,EAAaW,mBAAqB,CAAC,EACnDC,UAAWZ,EAAaY,WAAa,KACrCC,2BACIb,aAAY,EAAZA,EAAca,6BAA6B,EAC/CC,4BACId,SAA4B,QAAhBG,EAAZH,EAAce,sBAAc,IAAAZ,OAAhB,EAAZA,EAA8BW,8BAA8B,EAChE51D,MAAO,GACP61D,eAAgB,GAChBC,SAAUhB,EAAagB,UAAY,KACnC9c,WAAY8b,EAAa9b,YAAc,KACvCnL,WAAYinB,EAAajnB,YAAc,EACvCkoB,eAAgBjB,EAAaiB,gBAAkB,CAAC,EAChDC,gBAAiBlB,EAAakB,iBAAmB,IA0BrD,OAvBIlB,EAAa9K,UACboK,EAAWiB,iBAAmBP,EAAa9K,QAAQiM,eACnD7B,EAAWpK,QA5EOA,KACtB,GAAIA,EASA,OARmBA,EAAQ7V,QAAO,CAAC+hB,EAAY1nD,IAC3CrS,IAAA,GACO+5D,GAAU,IACb,CAAC1nD,EAAO2nD,WAASh6D,EAAA,GACVqS,MAGZ,CAAC,EAER,EAiEyB4nD,CACjBtB,EAAa9K,QAAQqM,qBAEzBjC,EAAWF,cAAgBA,EACvBY,EAAa9K,QAAQqM,oBACrBlC,GAEJC,EAAWkB,YAAcR,EAAa9K,QAAQsM,iBAC9ClC,EAAWe,iBA7CeA,KAC9B,GAAKA,EAEL,OAAOA,EAAiBvzD,KAAKgzD,GAAez4D,IAAA,GACrCy4D,GAAe,IAClBznC,QAASwnC,EAA+BC,EAAgBznC,UAAY,QACrE,EAuC+BopC,CAC1BzB,EAAa9K,QAAQmL,mBAIzBL,EAAa90D,OACbo0D,EAAWp0D,MAAMyP,QAAQqlD,EAAa90D,OAGtC80D,EAAae,gBACbzB,EAAWyB,eAAepmD,QAAQqlD,EAAae,eAAe71D,OAG3Do0D,CACX,E,w4CChGA,MAAMxmD,EAAQ7R,YAAY,CACtBC,KAAM,WACNP,aAAc,CACV21C,YAAa,CAAC,GAElBn1C,SAAU,CACN0N,WAAYA,CAAC2gB,EAAM9tB,IACfL,EAAA,GAD0BK,EAAPC,SAGvB+5D,qBAAuBn6D,IACnBA,EAAMgE,MAAQ,IAAI,EAEtBwgD,qBAAsBA,CAACxkD,EAAKO,KAAkB,IAAdH,EAAOG,EAAPH,QAC5B,MAAAg6D,EAKIh6D,EAJAkP,cAAM,IAAA8qD,EAAG,CAAC,EAACA,EAAAC,EAIXj6D,EAHAqkD,gBAAQ,IAAA4V,EAAG,KAAIA,EAAAC,EAGfl6D,EAFA20C,mBAAW,IAAAulB,EAAG,KAAIA,EAAAC,EAElBn6D,EADA03D,qCAA6B,IAAAyC,EAAG,KAAIA,EAGxC,OAAAz6D,IAAA,GACOE,GAAK,IACRykD,WACAzgD,MAAO,KACPw2D,WAAW,EACXzlB,eACGyjB,EAAUlpD,EAAQwoD,GAA8B,EAG3D2C,yBAA0BA,CAACz6D,EAAKmiB,KAAkB,IAAd/hB,EAAO+hB,EAAP/hB,SAChCJ,EAAKF,EAAA,GAAQ04D,EAAU,CAAC,KAClBx0D,MAAQ5D,EACdJ,EAAMw6D,WAAY,CAAI,EAE1BE,qBAAsBA,CAAC16D,EAAKqiB,KAAkB,IAAdjiB,EAAOiiB,EAAPjiB,QAC5BJ,EAAM2tD,QAAO7tD,IAAA,GACNE,EAAM2tD,SAAO,IAChB,CAACvtD,EAAQ+R,QAAMrS,IAAA,GACRE,EAAM2tD,QAAQvtD,EAAQ+R,SAAO,IAChC6lD,cAAe53D,EAAQqG,SAE9B,EAELk0D,WAAYA,CAAC36D,EAAKwiB,KAAkB,IAAdpiB,EAAOoiB,EAAPpiB,QAClB,MAAQgF,EAAwBhF,EAAxBgF,OAAWw1D,EAAQh2D,EAAKxE,EAAOyE,GACvC,OAAA/E,IAAA,GACOE,GAAK,IACR2D,MAAO,IACA3D,EAAM2D,MAAM4B,KAAKuX,GAChBA,EAAE1X,SAAWA,EAAMtF,IAAA,GAAQgd,GAAM89C,GAAa99C,KAGtD08C,eAAgB,IACTx5D,EAAMw5D,eAAej0D,KAAKuX,GACzBA,EAAE1X,SAAWA,EAAMtF,IAAA,GAAQgd,GAAM89C,GAAa99C,MAErD,EAGT+9C,iBAAkBA,CAAC76D,EAAK2iB,KAAkB,IAAdviB,EAAOuiB,EAAPviB,QACxB,OAAOJ,EAAMw5D,eAAe7+C,MACvBmC,GAAMA,EAAE1X,SAAWhF,EAAQ+E,KAAKC,SAE/BpF,EAAKF,IAAA,GAEEE,GAAK,IACRw5D,eAAgB,IAAIx5D,EAAMw5D,eAAgBp5D,EAAQ+E,OACrD,EAEX21D,oBAAqBA,CAAC96D,EAAK+iB,KAAkB,IAAd3iB,EAAO2iB,EAAP3iB,QAC3B,OAAOJ,EAAMw5D,eAAe7+C,MACvBmC,GAAMA,EAAE1X,SAAWhF,EAAQ+E,KAAKC,SACpCtF,IAAA,GAEYE,GAAK,IACRw5D,eAAgBx5D,EAAMw5D,eAAernD,QAChC2K,GAAMA,EAAE1X,SAAWhF,EAAQ+E,KAAKC,WAGzCpF,CAAK,EAEf+6D,gBAAiBA,CAAC/6D,EAAK2jB,KAAkB,IAAdvjB,EAAOujB,EAAPvjB,QACvBJ,EAAM+X,aAAe3X,EACrBJ,EAAM+4D,kBAAqB34D,GAAWA,EAAQ,GAAGsP,IAAO,CAAC,EAE7DsrD,qBAAsBA,CAACh7D,EAAKikB,KAAkB,IAAd7jB,EAAO6jB,EAAP7jB,QAC5BJ,EAAM+4D,kBAAoB34D,CAAO,EAErC66D,gBAAiBA,CAACj7D,EAAK8pC,KAAkB,IAAd1pC,EAAO0pC,EAAP1pC,QACvBJ,EAAMk7D,aAAe96D,CAAO,EAEhCP,MAAOA,CAACG,EAAKiqC,KAAWA,EAAP7pC,QACGhB,YAAY,KAKjC8qC,EAaH34B,EAAM3Q,QAZN0M,EAAU48B,EAAV58B,WACA6sD,EAAoBjwB,EAApBiwB,qBACA3V,EAAoBta,EAApBsa,qBACAiW,EAAwBvwB,EAAxBuwB,yBACAC,EAAoBxwB,EAApBwwB,qBACAC,EAAUzwB,EAAVywB,WACAE,EAAgB3wB,EAAhB2wB,iBACAC,EAAmB5wB,EAAnB4wB,oBAEAG,GADe/wB,EAAf6wB,gBACe7wB,EAAf+wB,iBACAD,EAAoB9wB,EAApB8wB,qBAGSlpD,GAFJo4B,EAALrqC,MAEmB0R,EAAMO,Q,ygEC5G7B,MAAMqpD,EAAgBz7D,YAAY,CAC9BC,KAAM,WACNP,aAAcoO,cACd5N,SAAU,CACNw7D,gBAAiBA,CAACp7D,EAAKG,KAAkB,IAAdC,EAAOD,EAAPC,QACvB,MACIi7D,EAOAj7D,EAPAi7D,YACAC,EAMAl7D,EANAk7D,cACAC,EAKAn7D,EALAm7D,aACAC,EAIAp7D,EAJAo7D,aACAC,EAGAr7D,EAHAq7D,qBACAp4C,EAEAjjB,EAFAijB,sBACAq4C,EACAt7D,EADAs7D,gBAEJ17D,EAAMq7D,YAAWv7D,EAAA,GAAQu7D,GACzBr7D,EAAMu7D,aAAYz7D,EAAA,GAAQy7D,GAC1Bv7D,EAAMkhB,YAAa,EACnBlhB,EAAMiiB,UAAW,EACjBjiB,EAAM4P,gBAAkB0rD,EAAc1rD,gBACtC5P,EAAM27D,YAAcL,EAAcK,YAClC37D,EAAMutD,WAAa+N,EAAc/N,WACjCvtD,EAAMqjB,sBAAwBA,EAC9BrjB,EAAMw7D,aAAatpD,gBAAkBspD,EAAatpD,gBAClDlS,EAAMw7D,aAAaI,mBACfJ,EAAaI,mBACjB57D,EAAMw7D,aAAaK,iBAAmBL,EAAaK,iBACnD77D,EAAMw7D,aAAaM,6BACoBxmD,IAAnCkmD,EAAaO,kBACP,CAAErsD,GAAI8rD,EAAaO,wBACnBzmD,EACVtV,EAAMy7D,qBAAuBA,EAC7Bz7D,EAAM07D,gBAAkBA,EACxB17D,EAAMs7D,cAAgBA,EACtBt7D,EAAMg8D,wBAAyB,CAAK,EAExCC,uBAAwBA,CAACj8D,EAAKO,KAAkB,IAAdH,EAAOG,EAAPH,QAC9BJ,EAAMw7D,aAAatpD,gBAAkB9R,CAAO,EAEhD87D,0BAA2BA,CAACl8D,EAAKmiB,KAAkB,IAAd/hB,EAAO+hB,EAAP/hB,QACjCJ,EAAMg8D,uBAAyB57D,EAAQ2Z,SAAS,EAEpDoiD,sBAAuBA,CAACn8D,EAAKqiB,KACzB,MAAQ6B,EAD4B7B,EAAPjiB,QACrB8jB,eACRlkB,EAAM6hB,QAAQqC,eAAiBA,EAC/BlkB,EAAM6hB,QAAQX,YAAa,CAAK,EAEpCk7C,wBAAyBA,CAACp8D,EAAKwiB,KAAkB,IAAdpiB,EAAOoiB,EAAPpiB,QAC/BJ,EAAMw7D,aAAaa,iBAAmBj8D,CAAO,EAEjDk8D,YAAaA,CAACt8D,EAAK2iB,KAAkB,IAAdviB,EAAOuiB,EAAPviB,QACnBJ,EAAMkhB,WAAa9gB,EACnBJ,EAAMiiB,UAAW,CAAK,EAE1BqnB,UAAWA,CAACtpC,EAAK+iB,KAAkB,IAAd3iB,EAAO2iB,EAAP3iB,QACjB,MAAQ4iB,EAAmC5iB,EAAnC4iB,KAAMlH,EAA6B1b,EAA7B0b,OAAQmH,EAAqB7iB,EAArB6iB,iBACtBjjB,EAAM4iB,MAAQ,CACVI,OACAlH,SACAmH,mBACH,EAELigB,cAAgBljC,IACZA,EAAMgiB,gBAAgBC,UAAW,EACjCjiB,EAAMgiB,gBAAgBd,YAAa,CAAK,EAE5C/e,WAAanC,IACTA,EAAM4iB,MAAQ,CACVI,KAAM,GACNlH,OAAQ+G,IAAaM,MACxB,EAELo5C,YAAaA,CAACv8D,EAAK2jB,KAAkB,IAAdvjB,EAAOujB,EAAPvjB,QACnBJ,EAAMiiB,SAAW7hB,EACjBJ,EAAMkhB,YAAa,CAAK,EAE5Bs7C,mBAAoBA,CAACx8D,EAAKikB,KAAkB,IAAd7jB,EAAO6jB,EAAP7jB,QAC1BJ,EAAM6hB,QAAQX,WAAa9gB,EAC3BJ,EAAM6hB,QAAQI,UAAW,CAAK,EAElCw6C,mBAAoBA,CAACz8D,EAAK8pC,KAAkB,IAAd1pC,EAAO0pC,EAAP1pC,QAC1BJ,EAAM6hB,QAAQI,SAAW7hB,EACzBJ,EAAM6hB,QAAQX,YAAa,CAAK,EAEpCw7C,kBAAmBA,CAAC18D,EAAKiqC,KAAkB,IAAd7pC,EAAO6pC,EAAP7pC,QACzBJ,EAAM6hB,QAAQ25B,QAAUp7C,CAAO,EAEnC8hB,qBAAsBA,CAACliB,EAAKy+C,KAAkB,IAAdr+C,EAAOq+C,EAAPr+C,QAC5BJ,EAAM6hB,QAAQE,kBAAoB3hB,CAAO,EAE7CmiB,2BAA4BA,CAACviB,EAAK2+C,KAAkB,IAAdv+C,EAAOu+C,EAAPv+C,QAClCJ,EAAMgiB,gBAAgBd,WAAa9gB,EACnCJ,EAAMgiB,gBAAgBC,UAAW,CAAK,EAE1CS,2BAA4BA,CAAC1iB,EAAK6+C,KAAkB,IAAdz+C,EAAOy+C,EAAPz+C,QAClCJ,EAAMgiB,gBAAgBC,SAAW7hB,EACjCJ,EAAMgiB,gBAAgBd,YAAa,EACnClhB,EAAM4iB,MAAM9G,OAAS+G,IAAaxiB,KAAK,EAE3CuhB,mBAAoBA,CAAC5hB,EAAKg/C,KAAkB,IAAd5+C,EAAO4+C,EAAP5+C,QAC1BJ,EAAM6hB,QAAQC,gBAAkB1hB,EAChCJ,EAAMgiB,gBAAgBC,UAAW,CAAK,EAE1C06C,oBAAqBA,CAAC38D,EAAKk/C,KAAkB,IAAd9+C,EAAO8+C,EAAP9+C,QAC3BJ,EAAM6hB,QAAQ+6C,iBAAmBx8D,CAAO,EAE5Cy8D,mBAAoBA,CAAC78D,EAAKo/C,KAAkB,IAAdh/C,EAAOg/C,EAAPh/C,QAC1BJ,EAAM6hB,QAAQi7C,gBAAkB18D,CAAO,EAE3C28D,oBAAqBA,CAAC/8D,EAAKs/C,KAAkB,IAAdl/C,EAAOk/C,EAAPl/C,QAC3BJ,EAAM01D,iBAAmBt1D,CAAO,EAEpC48D,yBAA0BA,CAACh9D,EAAKi9D,KAAkB,IAAd78D,EAAO68D,EAAP78D,QAChCJ,EAAMqjB,sBAAwBjjB,CAAO,EAEzC88D,wBAAyBA,CAACl9D,EAAKm9D,KAAkB,IAAd/8D,EAAO+8D,EAAP/8D,QAC/BJ,EAAMy7D,qBAAoB37D,IAAA,GACnBE,EAAMy7D,sBACNr7D,EACN,EAELg9D,eAAgBA,CAACp9D,EAAKq9D,KAAkB,IAAdj9D,EAAOi9D,EAAPj9D,QACtBJ,EAAMq7D,YAAWv7D,IAAA,GAAQE,EAAMq7D,aAAgBj7D,EAAS,EAE5Dk9D,sBAAuBA,CAACt9D,EAAKu9D,KAAkB,IAAdn9D,EAAOm9D,EAAPn9D,QAC7BJ,EAAMq7D,YAAYmC,QAAO19D,IAAA,GAClBE,EAAMq7D,YAAYmC,SAClBp9D,EACN,EAELq9D,mBAAoBA,CAACz9D,EAAK09D,KAAkB,IAAdt9D,EAAOs9D,EAAPt9D,QAC1BJ,EAAMw7D,aAAaM,wBAA0B17D,CAAO,EAExDu9D,wBAAyBA,CAAC39D,EAAK49D,KAAkB,IAAdx9D,EAAOw9D,EAAPx9D,QAC/BJ,EAAMw7D,aAAat6C,WAAa9gB,CAAO,EAE3Cy9D,yBAA0BA,CAAC79D,EAAK89D,KAAkB,IAAd19D,EAAO09D,EAAP19D,QAChCJ,EAAMw7D,aAAauC,sBAAwB39D,CAAO,EAEtD49D,iBAAkBA,CAACh+D,EAAKi+D,KAAkB,IAAd79D,EAAO69D,EAAP79D,QACxBJ,EAAM6hB,QAAQq8C,cAAgB99D,CAAO,KAK1C+9D,EA6BHhD,EAAcv6D,QA5Bd0oC,EAAS60B,EAAT70B,UACAnnC,EAAUg8D,EAAVh8D,WACA+gC,EAAai7B,EAAbj7B,cACAk4B,EAAe+C,EAAf/C,gBACAa,EAAsBkC,EAAtBlC,uBACAC,EAAyBiC,EAAzBjC,0BACAC,EAAqBgC,EAArBhC,sBACAC,EAAuB+B,EAAvB/B,wBACAE,EAAW6B,EAAX7B,YACAC,EAAW4B,EAAX5B,YACAh6C,EAA0B47C,EAA1B57C,2BACAG,EAA0By7C,EAA1Bz7C,2BACA85C,EAAkB2B,EAAlB3B,mBACAC,EAAkB0B,EAAlB1B,mBACAC,EAAiByB,EAAjBzB,kBACAx6C,EAAoBi8C,EAApBj8C,qBACAN,EAAkBu8C,EAAlBv8C,mBACA+6C,EAAmBwB,EAAnBxB,oBACAI,EAAmBoB,EAAnBpB,oBACAC,EAAwBmB,EAAxBnB,yBACAE,EAAuBiB,EAAvBjB,wBACAE,EAAce,EAAdf,eACAE,EAAqBa,EAArBb,sBACAG,EAAkBU,EAAlBV,mBACAE,EAAuBQ,EAAvBR,wBACAE,EAAwBM,EAAxBN,yBACAhB,EAAkBsB,EAAlBtB,mBACAmB,EAAgBG,EAAhBH,iBAGW7C,MAAqB,O,oCCtLpC,kCAAO,MAAMhL,EAAkBnwD,GAAUA,EAAMovB,MAAM/S,IAAIkN,Q,+wBCSzD,MAAM60C,EAAkB57D,MACpBuU,EACAe,EACAumD,KAEA,MAAMC,EAAc,CAChBllB,KAAMriC,EACNwnD,mBAAoBzmD,EAAa,CAACA,GAAc,GAChD0mD,wBAAyBH,GAE7B,IACI,MAAM51D,QAAiBlH,IAAe0Q,KAGpC,wBAAyBqsD,E,+VAAWx+D,CAAA,CAClC2B,cAAe,yBACZC,IAAaC,gBAEpB,OAAO8G,EAAS/E,IACpB,CAAE,MAAOM,GACL,GAAIqK,IAAMowD,SAASz6D,GACf,KAAM,UAEV,KAAM,gCACV,GAoDW,MAjDExB,MACbuU,EACAe,EACAumD,KAEA,IACI,MAAM36D,QAAa06D,EACfrnD,EACAe,EACAumD,GAGE/uD,EAAmC,CACrCovD,kBAAmBh7D,EAAKi7D,WAAWnjB,QACnCojB,yBAA0Bl7D,EAAKi7D,WAAWz6D,QAC1CwgB,SAAUhhB,EAAKi7D,WAAWj6C,UAkB9B,OAbIhhB,EAAKm7D,WACLvvD,EAAOyH,aAAerT,EAAKm7D,SAASzlB,KACpC9pC,EAAO0H,eAAiBtT,EAAKm7D,SAASnvD,GACtCJ,EAAOwvD,oBAAsBp7D,EAAKm7D,SAAS34D,YAC3CoJ,EAAOyvD,sBAAwBr7D,EAAKm7D,SAASE,sBAC7CzvD,EAAO0vD,gBAAkBt7D,EAAKm7D,SAASG,gBACvC1vD,EAAO2vD,gBAAkBv7D,EAAKm7D,SAASI,gBACvC3vD,EAAO4vD,eAAiBx7D,EAAKm7D,SAASK,eACtC5vD,EAAO6vD,UAAYz7D,EAAKm7D,SAASM,UACjC7vD,EAAO8vD,qBAAuB17D,EAAKm7D,SAASO,qBAC5C9vD,EAAO+vD,qBAAuB37D,EAAKm7D,SAASQ,qBAC5C/vD,EAAOgwD,sBAAwB57D,EAAKm7D,SAASS,uBAE1ChwD,CACX,CAAE,MAAOiwD,GACL,MAAe,YAAXA,EACO,CACHb,mBAAmB,EACnBE,yBAA0B,yBAI3B,CACHF,mBAAmB,EACnBE,yBAA0B,oCAElC,G,wEClEJ,MAAMY,GAAoB,OAAR9pD,UAAQ,IAARA,SAAQ,EAARA,IAAU+pD,YAAa,GAEnCC,EAAkC,IAAI70B,IADpB,KAExB,IAAI80B,EAWJ,MA2BMC,EAAuBA,CAAC/9D,EAAuBY,KACjD,MAAAo9D,EAA0D1pD,YACtD1T,KACFq9D,gBAFMngE,EAAIkgE,EAAJlgE,KAAyBogE,EAAoBF,EAAvCG,kBAGTrgE,IAGLkC,EAAS,CACLgC,KAAM,2BAEVhC,EAASo+D,eACLF,GACAl+D,EAASgU,IAAgBqK,iBAC7B,EAGEggD,EAAiBr+D,IACnBA,EAAS+9D,GACT/9D,EAAS,CACLgC,KAAM,uCAEVhC,EAASs+D,eACTt+D,EAAS,CACLgC,KAAM,eAEVhC,EAAS,CACLgC,KAAM,yBACR,EAqCAwoC,EACFA,IAAM,CAACxqC,EAAuBY,KAC1B,MAAMsU,EAAeZ,YAAY1T,KAAYsU,aAAaA,aAC1D,IAAKA,GAA+C,IAA/BA,EAAapD,OAAO9M,OACrC,OAEJhF,EAAS,CACLgC,KAAM,0CAEV,MAAMu8D,EAAajqD,YAAY1T,KAAYsU,aAAaqpD,WACxDV,EAAgC3yB,SAAQ,WACpC,MAAMxjB,EAAWpT,YAAY1T,KAAY8mB,SACnC80C,EAvGgB57D,KAC9B,IACK0T,YAAY1T,KAAY4qC,aACxBl3B,YAAY1T,KAAY4qC,WAAWD,mBAEpC,MAAO,GAGX,MAAMizB,EAA4BlqD,YAC9B1T,KACF4qC,WAAWD,mBAAmBr4B,MAAMR,GACT,GACrBA,EAAU7E,IAGmB,IAA7B6E,EAAUuc,QAAQjqB,SAS1B,OAH6Bw5D,aAAc,EAAdA,EAAgBvvC,QACxC3e,QAAQmuD,GAAWA,EAAOj1B,WAC1B9lC,KAAK+6D,GAAWA,EAAO75D,OACD,EA+EU85D,CAAyB99D,GACtD+9D,EAEQzpD,EACAwS,EAAS7K,gBACT2/C,GAEHj7D,MAAMkM,IACH,MACIgwD,EASAhwD,EATAgwD,sBACAF,EAQA9vD,EARA8vD,qBACAC,EAOA/vD,EAPA+vD,qBACAroD,EAMA1H,EANA0H,eACA0N,EAKApV,EALAoV,SACAs6C,EAIA1vD,EAJA0vD,gBACAG,EAGA7vD,EAHA6vD,UAASsB,EAGTnxD,EAFA2vD,uBAAe,IAAAwB,EAAG,KAAIA,EACtB7B,EACAtvD,EADAsvD,yBAIEF,IAAoB0B,GAEpB9wD,EAAOovD,kBACPI,EAAsBsB,EACtB,KACA9wD,EAAOwvD,oBAWbj9D,EAAS,CACLgC,KAAM,iCACNy7D,wBACAF,uBACAC,uBACAtoD,eACAE,wBAf4BynD,EAC1BI,EACAF,EAcF5nD,iBACA0nD,oBACAh6C,WACAy6C,YACAuB,kBAfoB,OAApBzB,EACO,GAAoB,IAAlBA,EACH,OAgBLP,GAKDM,GACAn9D,EAAS,CACLgC,KAAM,qCAIdhC,EAAS,CACLgC,KAAM,oBAGNmT,GACAnV,EAhHpB8+D,EAAC3pD,EAAwBD,IACxBlV,IACG,MAAMi+D,EAAkBN,EAAUzqD,MAC7B+qD,GACGA,EAAgB9oD,iBAAmBA,IAG3C,IAAK8oD,EAED,YADAj+D,EAAS+9D,GAIb/9D,EAAS,CACLgC,KAAM,uBACNi8D,kBACA/oD,iBAEJ,MAAQ6pD,EAA4Cd,EAA5Cc,qBAAsBZ,EAAsBF,EAAtBE,kBAE1BY,GACA/+D,EAASg/D,eAGTb,GACAn+D,EAAS,CACLgC,KAAM,wBAIdhC,EAAS2mB,IAAajQ,oBAAmB,IACzC1W,EAAS2mB,IAAa/P,uBAAsB,GAAO,EAmF/BkoD,CACI3pD,EACAD,KAlBRlV,EAASq+D,EAqBb,GAEZ,GAAE,EAyEK,KACXY,gBAZqBC,GAAwBl/D,IACzC89D,GACAqB,aAAarB,GAEjB99D,EAAS,CACLgC,KAAM,gCACNk9D,UAAWA,IAEfl/D,EAASq+D,EAAc,EAKvBppD,uBApCAA,CACIC,EACAC,EACAC,EACAZ,IAEHxU,IAGGA,EAAS,CACLgC,KAAM,iCACNkT,eACAC,iBACAC,0BACAmpD,WAPeppD,GAAkBX,IASrCxU,EAASq+D,GAITr+D,EAASwqC,IAAuB,EAiBpC40B,sBAxECC,GACD,CAACr/D,EAAuBY,KACpB,MAAMsU,GAAemqD,aAAiB,EAAjBA,EAAmBvtD,SAAU,KAClD9R,EAAS,CACLgC,KAAM,+BACNkT,iBAGA4oD,GACAqB,aAAarB,GAGI,OAAjB5oD,EAMJ4oD,EAA6BrjC,YAAW,KAChCqjC,GACAqB,aAAarB,GAEjB99D,EAASwqC,KAETszB,EAA6BrjC,YAAW,KAChCnmB,YAAY1T,KAAYsU,aAAa8f,WACrCh1B,EAAS,CACLgC,KAAM,0CAEd,GACD,IAAI,GACR,KAlBChC,EAASq+D,EAkBN,EA0CX7zB,uB,oCC7RJ,sGAAO,MAAMl2B,EAAenW,GAAUA,EAAMovB,MAAM/S,IACrC8kD,EAA0BnhE,GACnCmW,EAAYnW,GAAO0F,iBAAiBA,iBAC3ButD,EAAyBjzD,IAAK,IAAAkoC,EAAA,OACf,QAAxBA,EAAA/xB,EAAYnW,GAAO+R,aAAK,IAAAm2B,OAAA,EAAxBA,EAA0B9iC,cAAUkQ,CAAS,C,oCCJjD,0RAEO,MAAM8rD,EAAkBphE,GAAUA,EAAMovB,MAAMiyC,SAExCC,EAA+BthE,GACxCA,EAAMovB,MAAMiyC,SAASE,uBAAyB,KAErCC,EAA4CxhE,GACrDA,EAAMovB,MAAMiyC,SAASI,oCAAsC,KAElDC,EAAqB1hE,GAAUohE,EAAephE,GAAO2hE,YAErDC,EAAqB5hE,GAAUohE,EAAephE,GAAO6hE,YAErDC,EAAgB9hE,IAAK,IAAA+hE,EAAA,OAA6B,QAA7BA,EAAKL,EAAkB1hE,UAAM,IAAA+hE,OAAA,EAAxBA,EAA0B38D,MAAM,EAE1D48D,EAAiBhiE,GAAUohE,EAAephE,GAAOgyD,QAQjDiQ,EAAoCjiE,GAC7CohE,EAAephE,GAAOkiE,2BAEbC,EAA4BniE,GACrC0hE,EAAkB1hE,GAAOyW,kB,+zCCV7B,MA2Ca2rD,EAAqBA,CAC9B3d,EACA1P,EACAstB,EACAC,IAEO9/D,MAAOX,EAAUY,KACpBZ,EAASs4D,eACT,MACmB7+C,EACf7Y,IADAV,YAAeuZ,QAGnB,OAAOinD,YAAiB9d,EAAU1P,EAAa,GAAIz5B,GAC9ClY,MAAKjD,IAAsB,IAAbmP,EAAMnP,EAAZuD,KACL,MAAQ8+D,EAA6ClzD,EAA7CkzD,WAAYC,EAAiCnzD,EAAjCmzD,eAAgBC,EAAiBpzD,EAAjBozD,aAEpC,GAAIF,EAAY,CACZ,MAKMG,EALcC,YAChBxgE,OAAOC,SAASi3B,SACf,GAAEmpC,IACF,GAAEC,KAEsBtgE,OAAOC,SAASsJ,OAE7C,YADAvJ,OAAOC,SAASm3B,QAAQmpC,EAE5B,CAEA,MAAME,EAAgB,CAAEvzD,SAAQm1C,WAAU1P,eACpC+iB,EACFgL,YAAoCrgE,KAOxC,OANAZ,EA/CZ2iD,EAACpkD,EAAS03D,IAAmCj2D,IAAa,IAAAu4D,EACtDv4D,EACIkhE,YAAiCjjE,IAAC,CAAC,EAC5BM,GAAO,IACV03D,oCAGR,MAAMn0D,GAAsB,QAAdy2D,EAAAh6D,EAAQkP,cAAM,IAAA8qD,OAAA,EAAdA,EAAgBz2D,QAAS,GACvC9B,EACIqiD,IACIvgD,EACKwO,QAAQhN,GAASA,EAAK+xD,aACtB3xD,KAAKJ,GAASA,EAAKC,UAE/B,EAkCWo/C,CACIqe,EACA/K,IAGD+K,CAAa,IAEvBv/D,OAAOU,IACJ,OAAQA,EAAME,SACV,KAAKV,IAAWa,UACZ,MACJ,KAAKb,IAAWw/D,iBACZ/uB,aAAO,GACP,MACJ,QACIpyC,EAAS44D,YAAyBz2D,EAAME,UAGhD,OAAQF,EAAME,SACV,KAAKV,IAAWa,UAChB,KAAKb,IAAWc,QAChB,KAAKd,IAAWe,QAChB,KAAKf,IAAWw/D,iBACZ,MACJ,QACIx+D,YAAOR,GAEf,IAEHoW,SAAQ,KACLvY,EAASohE,EAA0BZ,EAAUC,GAAU,GACzD,EAIDW,EACTA,CAACZ,EAAUC,IAAa,CAACzgE,EAAUY,KAC/BZ,GA/GqC,CAACA,EAAUY,KACpD,MAEQygE,EAFSzgE,IAAW0gE,SACpBzJ,eACAwJ,SACRrhE,EACIsiD,IAAYif,YAAWtjE,EAAC,CAAC,EAClBojE,IAEV,IAwGGrhE,GAAS,KACLwhE,EAAe5gE,GACf6/D,GAAU,GACZ,EAGGh1D,EAAaA,IAAOzL,IAC7BA,EAASyhE,YCxIF,CACHzK,aAAc,GACdhB,cAAe,GACfiB,iBAAkB,GAClB/gD,aAAc,GACdghD,kBAAmB,EACnBtU,SAAU,KACVzgD,MAAO,KACPg1D,iBAAkB,CAAC,EACnBC,YAAa,CAAC,EACdtL,QAAS,CAAC,EACV6M,WAAW,EACXtB,WAAY,KACZC,eAAgB,CAAC,EACjBE,UAAW,KACX3rD,uBAAuB,EACvBwtD,cAAc,EACd5B,2BAA2B,EAC3BC,4BAA4B,EAC5B51D,MAAO,GACP61D,eAAgB,GAChBC,SAAU,KACV9c,WAAY,KACZ5H,YAAa,CAAC,EACdvD,WAAY,EACZkoB,eAAgB,CAAC,EACjBC,gBAAiB,KD8GgB,EAGnC0J,EAAkB5gE,IACpB,MACA8gE,EADc9gE,IACmC0gE,SAAzCprD,EAAYwrD,EAAZxrD,aAAcpU,EAAK4/D,EAAL5/D,MAAO6/D,EAASD,EAATC,UAC7BC,IACI1rD,EACApU,EAAM4B,KAAKuX,GAAMA,EAAE1X,SACnBo+D,EACH,C,oCEnJL,0KAAO,MAAM3iC,EAAyB7gC,GAClCA,EAAMovB,MAAMs0C,gBAAgB/hD,QAEnBmhB,EAAwB9iC,GACjCA,EAAMovB,MAAMs0C,gBAAgB7hD,QAEnB+gB,EAA+B5iC,GACxCA,EAAMovB,MAAMs0C,gBAAgBrgD,sBAEnB6M,EAAyBlwB,GAClCA,EAAMovB,MAAMs0C,gBAAgB1hD,gBAEnBmO,EAA2BnwB,GACpCA,EAAMovB,MAAMs0C,gBAAgB9/C,iB,oCCbhC,wIAAO,MAAMyf,EAAa,CACtBsgC,QAAS,UACTrgC,aAAc,gBAGLzgB,EAAe,CACxBM,MAAO,QACPygD,SAAU,WACVvjE,MAAO,SAGE8hC,EAAkB,CAC3B0hC,KAAM,OACNxd,SAAU,WACVhkB,UAAW,YACXiB,aAAc,cACdlB,gBAAiB,kBAGR0hC,EAAwB,CACjCC,UAAW,YACXC,0BAA2B,0BAGhB,UACXriD,QAAS,CAAC,EACV0B,sBAAuB,CACnBC,wBAAyB,KACzBlZ,cAAe,MAEnByX,QAAS,CACLI,UAAU,EACVf,YAAY,EACZgD,eAAgB,KAChBpC,gBAAiB,KACjBC,kBAAmB,KACnBa,MAAO,CACHI,KAAM,GACNlH,OAAQ+G,EAAaM,QAG7BnB,gBAAiB,CACbC,UAAU,EACVf,YAAY,I,mFC2DL,KACX+iD,uBApGkCzhE,SAClCW,IAAa8O,KAAK,sDAoGlBiyD,eAlG0B1hE,SAC1BjB,IAAe0Q,KAAK,+BAAgC,CAAEnK,eAkGtDq8D,mBAhG8BA,CAC9B/Q,EACAgR,EACAx0D,KAEA,MAAMyF,EAAS,CACX+9C,kBACAgR,gBACAx0D,mBAGJ,OAAOzM,IAAa3B,IACf,0EAAyE2N,IAAGC,UACzEiG,KAEP,EAkFDgvD,mBA/E8B7hE,SAC9BW,IAAa8O,KAAK,uCAAwC,CACtDqyD,gBAAiBlkE,IA8ErBmkE,oBA3E+B/hE,SAC/BW,IAAa8O,KAAK,uCAAwC,CACtDrC,gBAAiBA,EACjBwuB,QAAQ,IAyEZomC,qBAtEgChiE,SAChCW,IAAa8O,KAAK,+BAAgC,CAC9CrC,gBAAiBA,EACjBm8C,SAAS,IAoEb0Y,8BAjE0C70D,GAC1CzM,IAAa3B,IACR,8CAA6CoO,KAgElDoU,kBA7D6BxhB,SAC7BW,IAAa3B,IACR,sDAAqD6jD,KA4D1DriB,kBAzD6BxgC,SAC7BW,IAAa8O,KACT,+DACAzJ,GAuDJ46B,iBApD4B5gC,SAC5BW,IAAa3B,IACR,4DAA2DyhB,KAmDhEsgB,gBAhD2B/gC,SAC3BW,IAAa8O,KACT,6DACAzJ,GA8CJ06B,cA3CyB1gC,SACzBW,IAAa8O,KACT,2DACAzJ,GAyCJk8D,oBAtC+BliE,SAC/BW,IAAa3B,IACR,wEAAuEyhB,KAqC5E0iC,kBAlC6BnjD,UAAA,IAC7B6iD,EAAkBllD,EAAlBklD,mBACArjB,EAAa7hC,EAAb6hC,cAAa,OAEb7+B,IAAa3B,IACR,4DAA2D6jD,IAC5D,CACIhwC,OAAQ,CACJjL,cAAe43B,GAEnBkS,iBAAiB,GAExB,EAuBDywB,wBApB6BC,GAC7BrjE,IAAeC,IAAK,6BAA4BojE,UAoBhDC,8BAlBmCjmE,GAAQ2C,IAAeC,IAAI5C,G,oCCpGlE,8IAEakmE,EAA0CA,CACnDC,EACAlkB,KAEA,OAAQkkB,GACJ,IAAK,SACD,OAAOxN,EAAoB1W,GAC/B,IAAK,SACD,OAAOmkB,EAAoBnkB,GAC/B,IAAK,KACD,OAAO4W,EAAgB5W,GAC3B,IAAK,gBACD,OAAO,EACX,QACI,KAAO,2BAA0BkkB,IACzC,EAGSxN,EAAuB1W,GAChCokB,EArBsB,KAqBWpkB,GAExBmkB,EAAuBnkB,GAChCqkB,EAAaC,EAAoBtkB,GAExB4W,EAAmB5W,GAC5BqkB,EAAaE,EAAgBvkB,GAE3BqkB,EAAeA,CAACG,EAAOjsB,MACvBisB,EAAMtwD,MAAMuwD,GAAML,EAAc7rB,EAAMksB,KAEtCL,EAAgBA,CAACM,EAAIC,IAAOD,EAAG92B,gBAAkB+2B,EAAG/2B,cAEpD02B,EAAqB,CACvB,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAGEC,EAAiB,CACnB,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,K,oCCzEJ,oWAOA,MACaK,EAAuB,eACvBC,EAA6B,oBAC7BC,EAA+B,sBAC/BC,EAA8B,qBAC9BC,EAA8B,qBAErCC,EAAqB,CACvBlvD,cAAe,YACf++B,SAAU,YACVowB,WAAY,cACZC,OAAQ,iBACRC,UAAW,MACXzwB,WAAY,cACZ0wB,UAAW,OACXC,eAAgB,aAChBC,UAAW,OACXC,UAAW,QACXrxB,OAAQ,UACRx3B,MAAO,QACP8oD,OAAQ,UAQCrxD,EAAcA,CAACqM,EAAQ3M,KAChC6U,IAAWvU,YA7BkB,SA6BoBqM,EAAQ3M,EAAM,EAiBtD4xD,EAAcA,CAACp0D,EAAQ1L,KAChC,MAAM6a,GAfcta,EAeUmL,KAdnB2zD,EACAA,EAAmB9+D,GAEnBA,EAJSA,MAgBpBiO,EAAa,UAASqM,IAAU7a,EAAM,EAG7B+/D,EAAe7xD,IACxBM,EAAY,SAAUN,EAAM,EAOnB8xD,EAAmBA,CAAChxB,EAAWC,KAExC,MAAMgxB,EAAM,GACM,MAAdjxB,QAA0C,IAAdA,GAC5BixB,EAAItzD,KAAK,gBAEU,IAAZsiC,GACPgxB,EAAItzD,KAAK,WAEM,IAAfszD,EAAI7/D,QACJ6/D,EAAItzD,KAAK,OAEb6B,EAAa,eAAeyxD,EAAIhzD,KAAK,SAAS,EAQrC2vD,EAAiBA,CAACtrD,EAAcohB,EAASqqC,KAClD,QAA4B,IAAjBzrD,GAAwD,IAAxBA,EAAalR,OACpD,OAGJ,MAAM8/D,EAAsB5uD,EACvB5F,QAAQmzD,GAAMA,EAAE51D,GAAK,IACrBnK,KAAK+/D,GAAMA,EAAE3lE,OACbinE,UAELp9C,IAAWq9C,cAAc,eAAgB,CACrCt9C,SAAUo9C,EAAoBjzD,KAAK,SAGvC8V,IAAWpW,KAAK,CACZ,uBAAwBuzD,EAAoBp1D,MAAM,EAAG,GAAGmC,KAAK,OAC7DoE,WAAYC,EAAalR,OAAS,EAAIkR,EAAa,GAAGrI,GAAK,OAG3DypB,GAAWA,EAAQtyB,QAAU,GAC7B2iB,IAAWq9C,cAAc,YAAa,CAClC1tC,QAASA,EAAQ5nB,MAAM,EAAG,GAC1Bu1D,SAAU/uD,EAAa,GAAGpY,OAIlC6pB,IAAWpW,KAAK,CACZ2zD,cAAevD,GACjB,C,oCClHS,KACXp6B,OAAQ,CACJC,QACI,sFAERysB,gBAAiB,CACbkR,qBAAsB,uBACtBjR,cAAe,YACfE,SAAU,c,sJCRX,MCAMgR,EAAsB,CAAC,eAAgB,qBAEvCC,EAAyB,CAClC,0BACA,yBACA,0BACA,iCCiBSC,EAAsBC,IAA2B,CAC1DC,kBAf8B/lD,GAC9B2lD,EAAoBv0D,SAAS4O,EAAOzd,MAAQyd,EAAS,KAerDgmD,iBAb6BtnE,GAC7BknE,EAAuBpvB,QAAO,CAACyvB,EAAaC,KACxC,MAAMC,EAAWD,EAAUv0D,MAAM,KACjC,GAAIy0D,IAAI1nE,EAAOynE,GAAW,CFfEE,EAACC,EAAQC,EAAcphE,KACvDohE,EAAa/vB,QAAO,CAACgwB,EAAK9gE,EAAK+gE,EAAOC,KAC9BD,EAAQ,EAAIC,EAAMnhE,OAClBihE,EAAI9gE,GAAO8gE,EAAI9gE,IAAQ,CAAC,EAExB8gE,EAAI9gE,GAAOP,EAERqhE,EAAI9gE,KACZ4gE,EAAO,EESFD,CAAqBJ,EAAaE,EADpBjmE,IAAIxB,EAAOynE,GAE7B,CAEA,OAAOF,CAAW,GACnB,CAAC,I,oCCrBR,gBAgCe,KACX1tD,iBA/BqBA,KACrBtY,IAAe0Q,KAAK,oCAAoC,EA+BxDg2D,oBA5BwBA,CAACC,EAAUC,KACnC5mE,IAAe0Q,KAAK,uCAAwC,CACxDm2D,qBAAsBF,EACtBC,eAAgBA,GAClB,EAyBFE,aAtBiBA,CAACC,EAAcF,KAChC7mE,IAAe0Q,KAAK,+BAAgC,CAChDq2D,aAAcA,EACdF,qBAAsBA,GACxB,EAmBFG,cAhBmB5oE,IACnB4B,IAAe0Q,KAAK,gCAAiC,CACjDtS,KAAMA,GACR,EAcF6oE,qBAX0Bl2D,IAC1B/Q,IAAe0Q,KAAK,6CAA8C,CAC9DK,OAAQA,GACV,E,oCC7BN,gGAEO,MAAMm2D,EAAU3qE,YAAU,CAC7BC,YAAa,UACbC,UAAWs1C,YAAe,CACtBC,QAAS,sCAEbn1C,UAAYC,IAAO,CAGfqqE,iBAAkBrqE,EAAQK,MAAM,CAC5BA,MAAOyB,GACF,eADeA,EAAV2X,4CAMP6wD,EAA6BF,EAA7BE,wB,+pCCfR,MAAMC,EAA8BA,CACvCC,EACAC,EACAnW,KAEA,MAAMrjD,EAASw5D,EAAwBvjE,KAAKsjD,IACxC,MAAMqN,EAAiB2S,EAClBE,SAASj4C,GAAYA,EAAQk4C,WAC7Bj0D,MAAMijC,GACE6Q,EAAS5pC,WAAc4pC,EAAS9pC,OAKjCi5B,EAAQ94B,aAAe2pC,EAAShlD,MAChCm0C,EAAQj5B,SAAW8pC,EAAS9pC,QAC5Bi5B,EAAQtoC,KAAOm5C,EAAS5pC,UANjB+4B,EAAQ94B,aAAe2pC,EAAShlD,OAUnD,OAAKqyD,IAEIrN,EAASogB,gCACZ/S,EAAe+S,6BAA4BnpE,IAAA,GAEpCo2D,GAAc,IACjBnD,KAAMlK,EAASkK,OAEnBmD,EARsB,IAQR,IAGlBgT,EAAiBJ,EAAwB/zD,MAC1CmhD,GAA2C,WAAxBA,EAAeryD,OAYvC,GATIqlE,GACA55D,EAAO8D,KAAItT,IAAC,CAAC,EACNopE,GAAc,IACjBjqD,UAAWiqD,EAAerlE,KAC1Bqb,WAAYgqD,EAAerlE,KAC3B2Z,MAAO0rD,EAAenW,QAI1BJ,EAAe,CACf,MAAMwW,EACgB,IAAlB75D,EAAOzI,OACD,CACIhD,KAAM,eACNqb,WAAY,eACZvf,KAAM,oBACNypE,mBAAoB,qBAExB,CACIvlE,KAAM,WACNqb,WAAY,WACZvf,KAAM,aACNypE,mBAAoB,cAElC95D,EAAO8D,KAAK+1D,EAChB,CAEA,OAAO75D,EAAO6C,QAAQ2K,GAAY,OAANA,GAAW,EAG9Bw2C,EAAiCtzD,GAC1CmW,YAAYnW,GAAOyvB,SAASq5C,uB,iyCC/DhC,MACMO,EADiC,oBAAXjnE,OACYA,OAAS,CAAC,EAE5C6R,EAAsC,QAA5Bq1D,EAAGD,EAAiBhnE,gBAAQ,IAAAinE,GAAU,QAAVC,EAAzBD,EAA2BhwC,gBAAQ,IAAAiwC,OAAV,EAAzBA,EAAqCC,SAAS,OAE3DC,EADc,IAAIzhE,gBAAgBqhE,SAA0B,QAAVK,EAAhBL,EAAkBhnE,gBAAQ,IAAAqnE,OAAV,EAAhBA,EAA4B/9D,QAC5BnK,IAAI,aACtCmoE,EAAmB11D,GAAcw1D,EAQjCrqE,EAAYU,EAAA,CACd8pE,WAAW,EACXxwD,UAAWuwD,EAAmBE,OAAOJ,GAAuB,KAC5DvjE,YAAa,KACb4jE,QAAS,KACTnqE,KAAM,KACNoqE,mBAAoBJ,EAAmB,IAAM,GAZpB,CACzB3J,mBAAmB,EACnBgK,8BAA8B,EAC9BC,+BAAgC,OAa9BC,EAAexqE,YAAY,CAC7BC,KAAM,UACNP,eACAQ,SAAU,CACNuqE,aAAcA,CAACnqE,EAAKG,KAAkB,IAAdC,EAAOD,EAAPC,QACpBJ,EAAMoZ,UAAYhZ,EAAQgZ,UACtBhZ,EAAQgZ,UACRpZ,EAAM+pE,mBAAqB,IAE3B/pE,EAAM+pE,mBAAqB,CAC/B,EAEJK,eAAgBA,CACZpqE,EAAKO,KAEJ,IAAA8pE,EAAA9pE,EADCH,QAAWT,EAAI0qE,EAAJ1qE,KAAMuG,EAAWmkE,EAAXnkE,YAAa4jE,EAAOO,EAAPP,QAEhC,OAAAhqE,IAAA,GAAYE,GAAK,IAAEL,OAAMuG,cAAa4jE,WAAO,EAEjDQ,oBAAqBA,CAACtqE,EAAKmiB,KAAkB,IAAd/hB,EAAO+hB,EAAP/hB,QAC3BJ,EAAM4pE,UAAYxpE,EAAQwpE,SAAS,EAEvCW,oBAAqBA,CAACvqE,EAAKqiB,KAAkB,IAAdjiB,EAAOiiB,EAAPjiB,QAC3BJ,EAAMoZ,UAAYhZ,EAAQgZ,UAC1BpZ,EAAM+pE,mBAAqB3pE,EAAQ2pE,mBACnC/pE,EAAM4pE,UAAYxpE,EAAQwpE,SAAS,EAEvCY,aAAcA,IACV1qE,EAAA,GAAYV,GAEhBqrE,uBAAwBA,CAACzqE,EAAKwiB,KAAkB,IAAdpiB,EAAOoiB,EAAPpiB,QAC9B,OAAAN,IAAA,GAAYE,GAAUI,EAAO,KAKlCsqE,EAOHR,EAAatpE,QANb4pE,EAAYE,EAAZF,aACAF,EAAmBI,EAAnBJ,oBACAC,EAAmBG,EAAnBH,oBACAJ,EAAYO,EAAZP,aACAC,EAAcM,EAAdN,eACAK,EAAsBC,EAAtBD,uBAGWP,MAAoB,O,ohBCzE5B,MAAM1xB,EAAax4C,GAAUA,EAAMovB,MAAMkpB,mBAAmBpC,IAEtDy0B,EAAqBpzB,GAAgBv3C,GAC9CA,EAAMovB,MAAMkpB,mBAAmBpC,IAAIqB,GAE1BkB,EAAoBz4C,GAC7BA,EAAMovB,MAAMkpB,mBAAmBpC,IAAIriB,OAAS,GAC5C7zB,EAAMovB,MAAMkpB,mBAAmBpC,IAAIrvC,OAAS,GAC5C7G,EAAMovB,MAAMkpB,mBAAmBpC,IAAItiB,MAAQ,GAC3C5zB,EAAMovB,MAAMkpB,mBAAmBpC,IAAIn3B,OAAS,EAEnC6rD,EAAoB5qE,GAC7BA,EAAMovB,MAAMkpB,mBAAmBjC,WAEtBw0B,EAA2B7qE,GACpCA,EAAMovB,MAAMkpB,mBAAmBhC,kBAEtBw0B,EAA0B9qE,GACnCA,EAAMovB,MAAMkpB,mBAAmBpC,IAAIn3B,OAAS,KAAS,EAC/C/e,EAAMovB,MAAMkpB,mBAAmBpC,IAAIn3B,OAAS,IAC5C/e,EAAMovB,MAAMkpB,mBAAmBpC,IAAIn3B,OAEhCgsD,EAAsB/qE,GAC9B,GAAE8qE,EAAuB9qE,MAAU4qE,EAAiB5qE,KAE5Cu2C,EAA6Bv2C,GACtCA,EAAMovB,MAAMkpB,mBAAmB/B,0BActBy0B,EAAoChrE,IAC7C,MAAMw2C,EAAoBx2C,EAAMovB,MAAMkpB,mBAAmB9B,kBACnDy0B,EAAmBC,EAAuBlrE,GAE1CmrE,EAAoB,GAkB1B,OAhBA30B,EAAkB5yC,SAAS48C,IACvBtiD,OAAOC,KAAK8sE,GAAkBrnE,SAASoD,IAE/BikE,EAAiBjkE,IACjBikE,EAAiBjkE,GAAKH,OAAS,GAC/BokE,EAAiBjkE,GAAK2T,MACjBmC,GACGA,EAAE0C,mBAAqBghC,EAAS/J,eAC/B00B,EAAkBz4D,SAASoK,EAAE0C,qBAGtC2rD,EAAkB/3D,KAAKotC,EAAS/J,aACpC,GACF,IAGCD,EAAkBrkC,QAAO5R,IAAA,IAAGk2C,EAAYl2C,EAAZk2C,aAAY,OAC3C00B,EAAkBp2D,MAAMq2D,GAAMA,IAAM30B,GAAa,GACpD,EAGQy0B,EAA0BlrE,IACnC,MAAA6vB,EAGI7vB,EAAMovB,MAAMkpB,mBAChB,OAHmDzoB,EAA/C8mB,gDACmB9mB,EAAnBonB,sBAIA,CAAC,CAAC,EAIGo0B,EAAmCrrE,KAExCA,EAAMovB,MAAMkpB,mBAAmBpC,IAAIrvC,SAC/B7G,EAAMovB,MAAMkpB,mBAAmBxC,WAAWjvC,QAC9C7G,EAAMovB,MAAMkpB,mBAAmBpC,IAAItiB,QAC/B5zB,EAAMovB,MAAMkpB,mBAAmBxC,WAAWliB,OAC9C5zB,EAAMovB,MAAMkpB,mBAAmBpC,IAAIriB,SAC/B7zB,EAAMovB,MAAMkpB,mBAAmBxC,WAAWjiB,QAC9C7zB,EAAMovB,MAAMkpB,mBAAmBpC,IAAIn3B,SAC/B/e,EAAMovB,MAAMkpB,mBAAmBxC,WAAW/2B,QAGzCusD,EAA2BtrE,IAAK,CACzCi3C,oBAAqBj3C,EAAMovB,MAAMkpB,mBAAmBrB,oBACpDD,kBAAmBh3C,EAAMovB,MAAMkpB,mBAAmBtB,oBAGzCu0B,EAA+BvrE,IAAK,CAC7Cm2C,0BACIn2C,EAAMovB,MAAMkpB,mBAAmBnC,0BACnCC,wBACIp2C,EAAMovB,MAAMkpB,mBAAmBlC,0BAG1Bo1B,EAAmBxrE,GAC5BA,EAAMovB,MAAMkpB,mBAAmBzB,S,oCCvGnC,oEAAO,MAAMrU,EAAkB,CAC3BipC,eAAgB,iBAChBjoC,SAAU,WACVkoC,iBAAkB,mBAClBriC,QAAS,UACTsiC,oBAAqB,sBACrBC,sBAAuB,wBACvBC,2BAA4B,6BAC5BppC,kBAAmB,mCAGjBqpC,EAAyB,CAC3B,CAACtpC,EAAgBkpC,kBACb,0CACJ,CAAClpC,EAAgBgB,UAAW,kCAC5B,CAAChB,EAAgB6G,SAAU,yBAC3B,CAAC7G,EAAgBmpC,qBACb,6CACJ,CAACnpC,EAAgBopC,uBAAwB,iCACzC,CAACppC,EAAgBqpC,4BACb,2CACJ,CAACrpC,EAAgBC,mBACb,2CAEJ,MAAW,yBACX,SAAc,kCACd,kBAAuB,4CACvB,iCACI,8DAKKspC,EAA2BloE,GAEhCioE,EAAuBjoE,IACvBioE,EAAuBtpC,EAAgB6G,Q,0JChC/C,MAAM2iC,EAAYtsE,YAAY,CAC1BC,KAAM,OACNP,aCLO,CACH8hB,YAAY,EACZ+qD,kBAAmB,GACnB35D,OAAQ,CAAC,GDGb1S,SAAU,CACN08D,YAAaA,CAACt8D,EAAKG,KAAkB,IAAdC,EAAOD,EAAPC,QACnBJ,EAAMkhB,WAAa9gB,CAAO,EAE9B8rE,YAAaA,CAAClsE,EAAKO,KAAkB,IAAdH,EAAOG,EAAPH,QACnBJ,EAAMkhB,YAAa,EACnBlhB,EAAMisE,kBAAoB7rE,EAAQ6rE,kBAClCjsE,EAAMsS,OAAS,CAAC,CAAC,EAErBpS,SAAUA,CAACF,EAAKmiB,KAAkB,IAAd/hB,EAAO+hB,EAAP/hB,QAChBJ,EAAMsS,OAAOlS,EAAQsP,IAAMtP,EAAQ8D,OAAO,KAK/CioE,EAA+CH,EAAUprE,QAAjD07D,EAAW6P,EAAX7P,YAAa4P,EAAWC,EAAXD,YAAahsE,EAAQisE,EAARjsE,SAE1B8rE,MAAiB,O,0DELjB9/D,MAfEA,KACb,GAAK9J,OAAO8J,SAUR,OAAO9J,OAAO8J,SAVI,CAClB,MAAMkgE,EAAaj/C,SAASk/C,eAAe,aAC3C,GAAID,EAAY,CACZ,MAAM1oE,EAAO0oE,EAAWE,aAAa,kBAErC,OADetxC,KAAKuxC,MAAM7oE,EAE9B,CACI,OAAO,IAEf,CAEA,E,+hCCPJ,MAWM8oE,EAAe/jE,IACjB,MAAMgkE,EAAKC,IACLC,EACFlkE,GAAYA,EAAS87B,QACf97B,EAAS87B,QAAQ/iC,IAAI,qBACrB,GAIV,OAHImrE,GAAeA,IAAgBF,EAAGnxD,SAClC24B,aAAO,GAGPxrC,EAASqT,QAAU,KACnBrT,EAASqT,OAAS,KACE,iBAAbrT,EAEAsF,QAAQgS,QAAQtX,IAxBR,OADgBmkE,EA2BGnkE,EAASqT,SA1BN,MAAf8wD,IACtBxqE,OAAO+qB,SAAS9qB,SAAWD,OAAO+qB,SAAS9qB,SAASi3B,UAiCzCvrB,QAAQC,OAAOvF,IAnCKmkE,KAqCnC,EAOEC,EAAajW,GAAQA,EAAIG,OAwBhBv1D,IAhBHA,CAACo6B,EAAUvmB,IACnB0c,MAAM6J,EAAQ97B,IAAA,GACPuV,GAAM,IACTxW,OAAQwW,EAAOxW,QAAU,OACzBiuE,SAAUz3D,EAAOy3D,UAAY,OAC7BvoC,SACuB,IAAnBlvB,EAAOkvB,QACD,GACAlvB,EAAOkvB,SAAW,CACd,eAAgB,mCAE9BoP,YAAa,aAEZvwC,KAAKopE,GACLppE,KAAKypE,E,oCC3Ed,kCAAO,IAAKE,EAAkB,SAAlBA,GAAkB,OAAlBA,EAAkB,YAAlBA,EAAkB,sBAAlBA,EAAkB,wBAAlBA,EAAkB,0BAAlBA,CAAkB,K,6oBCMvB,MAAMC,EACTC,IAEA,MAAMC,EAAuBD,EAAU1nE,KAAKyB,GACxCmmE,EAAanmE,EAAI9C,WAGfkpE,EAAY,CAACC,EAA6BC,GAQhD,OAPwBJ,EAAqBp4D,MAAK,CAACV,EAAGC,IACpC+4D,EAAU3/C,QAAQrZ,GAClBg5D,EAAU3/C,QAAQpZ,KAKb,EAAE,EAOhBk5D,EAAqBA,IAAcD,EAE1CH,EAAgB9tE,IAClB,MAAM2E,EAAQwpE,EAASnuE,GACvB,OAAK2E,GAAcspE,CAEP,EAIVG,EAAkB,kBAClBC,EAAW,WACXC,EAAgB,gBAChBC,EAAe,eAGfC,EAAoB,CACtBC,QAAS,UACTC,OAAQ,SACRC,QAAS,UACTC,KAAM,OACNC,YAAa,cACbC,MAAO,QACPC,MAAO,QACPC,OAAQ,SACRC,MAAO,QACPC,OAAQ,SACRC,OAAQ,SACRC,QAAS,UACTC,KAAM,OACNC,KAAM,OACNC,MAAO,SAGLC,EAAsB,CACxBf,QAAS,UACTgB,QAAS,UACTC,YAAa,cACbC,QAAS,UACTC,eAAgB,iBAChBC,aAAc,eACdC,WAAY,cAGV9B,EACF,6CACE+B,EAA4B,2CAC5BC,EAA2B,0CAC3B/B,EAAe,8BAEfE,EAAqB,CACvB,CAAE,GAAEC,KAAmBI,EAAkBI,QAAQY,EAAoBC,WACjEzB,EACJ,CAAE,GAAEI,KAAmBI,EAAkBI,QAAQY,EAAoBE,eACjE1B,EACJ,CAAE,GAAEI,KAAmBI,EAAkBK,eAAeW,EAAoBC,WACxEzB,EACJ,CAAE,GAAEI,KAAmBI,EAAkBK,eAAeW,EAAoBK,gBACxE,yCACJ,CAAE,GAAEzB,KAAmBI,EAAkBK,eAAeW,EAAoBE,eACxE1B,EACJ,CAAE,GAAEI,KAAmBI,EAAkBM,SAASU,EAAoBC,WAClE,yCACJ,CAAE,GAAErB,KAAmBI,EAAkBM,SAASU,EAAoBE,eAClE,yCACJ,CAAE,GAAEtB,KAAmBI,EAAkBc,QAAQE,EAAoBC,WACjEzB,EACJ,CAAE,GAAEI,KAAmBI,EAAkBc,QAAQE,EAAoBE,eACjE1B,EACJ,CAAE,GAAEI,KAAmBI,EAAkBO,SAASS,EAAoBC,WAClE,yCACJ,CAAE,GAAErB,KAAmBI,EAAkBO,SAASS,EAAoBE,eAClE,yCACJ,CAAE,GAAEtB,KAAmBI,EAAkBE,UAAUc,EAAoBC,WACnEzB,EACJ,CAAE,GAAEI,KAAmBI,EAAkBE,UAAUc,EAAoBE,eACnE1B,EACJ,CAAE,GAAEI,KAAmBI,EAAkBC,WAAWe,EAAoBC,WACpEzB,EACJ,CAAE,GAAEI,KAAmBI,EAAkBG,WAAWa,EAAoBC,WACpEzB,EACJ,CAAE,GAAEI,KAAmBI,EAAkBG,WAAWa,EAAoBG,WACpE,2CACJ,CAAE,GAAEvB,KAAmBI,EAAkBG,WAAWa,EAAoBK,gBACpE,2CACJ,CAAE,GAAEzB,KAAmBI,EAAkBG,WAAWa,EAAoBE,eACpE,2CAEJ,CAAE,GAAErB,KAAYG,EAAkBe,SAASC,EAAoBC,WAC3DxB,EACJ,CAAE,GAAEI,KAAYG,EAAkBI,QAAQY,EAAoBC,WAC1DxB,EACJ,CAAE,GAAEI,KAAYG,EAAkBU,UAAUM,EAAoBC,WAC5DxB,EACJ,CAAE,GAAEI,KAAYG,EAAkBQ,UAAUQ,EAAoBC,WAC5DxB,EACJ,CAAE,GAAEI,KAAYG,EAAkBE,UAAUc,EAAoBC,WAC5DxB,EACJ,CAAE,GAAEI,KAAYG,EAAkBC,WAAWe,EAAoBf,WAC7DR,EACJ,CAAE,GAAEI,KAAYG,EAAkBC,WAAWe,EAAoBI,kBAC7D,qCACJ,CAAE,GAAEvB,KAAYG,EAAkBW,UAAUK,EAAoBC,WAC5DxB,EACJ,CAAE,GAAEI,KAAYG,EAAkBS,SAASO,EAAoBC,WAC3DxB,EACJ,CAAE,GAAEI,KAAYG,EAAkBG,WAAWa,EAAoBG,WAC7D,iCACJ,CAAE,GAAEtB,KAAYG,EAAkBG,WAAWa,EAAoBE,eAC7DzB,EAEJ,CAAE,GAAEK,KAAiBE,EAAkBI,QAAQY,EAAoBC,WAC/DM,EACJ,CAAE,GAAEzB,KAAiBE,EAAkBI,QAAQY,EAAoBE,eAC/DK,EACJ,CAAE,GAAEzB,KAAiBE,EAAkBK,eAAeW,EAAoBC,WACtEM,EACJ,CAAE,GAAEzB,KAAiBE,EAAkBK,eAAeW,EAAoBE,eACtEK,EACJ,CAAE,GAAEzB,KAAiBE,EAAkBM,SAASU,EAAoBC,WAChE,uCACJ,CAAE,GAAEnB,KAAiBE,EAAkBM,SAASU,EAAoBE,eAChE,uCACJ,CAAE,GAAEpB,KAAiBE,EAAkBc,QAAQE,EAAoBC,WAC/DM,EACJ,CAAE,GAAEzB,KAAiBE,EAAkBc,QAAQE,EAAoBE,eAC/DK,EACJ,CAAE,GAAEzB,KAAiBE,EAAkBO,SAASS,EAAoBC,WAChE,uCACJ,CAAE,GAAEnB,KAAiBE,EAAkBO,SAASS,EAAoBE,eAChE,uCACJ,CAAE,GAAEpB,KAAiBE,EAAkBE,UAAUc,EAAoBC,WACjEM,EACJ,CAAE,GAAEzB,KAAiBE,EAAkBE,UAAUc,EAAoBE,eACjEK,EACJ,CAAE,GAAEzB,KAAiBE,EAAkBC,WAAWe,EAAoBC,WAClEM,EACJ,CAAE,GAAEzB,KAAiBE,EAAkBG,WAAWa,EAAoBC,WAClEM,EACJ,CAAE,GAAEzB,KAAiBE,EAAkBG,WAAWa,EAAoBG,WAClEI,EACJ,CAAE,GAAEzB,KAAiBE,EAAkBG,WAAWa,EAAoBK,gBAClE,yCACJ,CAAE,GAAEvB,KAAiBE,EAAkBG,WAAWa,EAAoBE,eAClE,yCAEJ,CAAE,GAAEnB,KAAgBC,EAAkBC,WAAWe,EAAoBE,eACjEM,EACJ,CAAE,GAAEzB,KAAgBC,EAAkBE,UAAUc,EAAoBE,eAChEM,EACJ,CAAE,GAAEzB,KAAgBC,EAAkBG,WAAWa,EAAoBE,eACjEM,EACJ,CAAE,GAAEzB,KAAgBC,EAAkBI,QAAQY,EAAoBE,eAC9DM,EACJ,CAAE,GAAEzB,KAAgBC,EAAkBK,eAAeW,EAAoBE,eACrEM,EAEJ,CAAE,WAAaxB,EAAkBa,QAAQG,EAAoBM,cACzD,+CAEJ,CAAE,WAAatB,EAAkBC,WAAWe,EAAoBf,WAC5DR,G,mlCCtJD,MAAMpJ,EAAiBjkC,YAC1B,mCACAz9B,MAAArC,EAAuB+/B,KAAa,IAA3Bp4B,EAAU3H,EAAV2H,WACL,IACI,MAAMwH,QAAe8wB,IAAI8jC,eAAep8D,GACxCwnE,EAA+BhgE,aAAM,EAANA,EAAQ5L,KACvC,MAAO,CACHoE,aACAu9C,mBAHsBiqB,EAAlBjqB,mBAKZ,CAAE,MAAOrhD,GAEL,OADAQ,YAAOR,GACAk8B,EAASG,gBAAgBr8B,EACpC,KAIKigE,EAAyBhkC,YAClC,2CACAz9B,iBAAyC,IAAlC+kD,EAAQr+C,UAAArC,OAAA,QAAAyO,IAAApM,UAAA,GAAAA,UAAA,GAAG,OAAUg3B,EAAQh3B,UAAArC,OAAA,EAAAqC,UAAA,QAAAoM,EAChC,IACI,MAAMhG,QAAe8wB,IAAI6jC,yBAGzB,OAFA1c,IAEOj4C,EAAO5L,IAClB,CAAE,MAAOM,GAIL,OAHAQ,YAAOR,GACPujD,IAEOrnB,EAASG,gBAAgBr8B,EACpC,CACJ,IAGSmgE,EAAqBlkC,YAC9B,uCACAz9B,MAAAjC,EAUI2/B,KACC,IATGzqB,EAAWlV,EAAXkV,YACA85D,EAAShvE,EAATgvE,UACAC,EAAYjvE,EAAZivE,aACAC,EAAelvE,EAAfkvE,gBACAC,EAAUnvE,EAAVmvE,WACAC,EAAepvE,EAAfovE,gBACA//D,EAAerP,EAAfqP,gBAIJ,IAOI,MAAO,CACHlM,YAPiB08B,IAAI+jC,mBACrB1uD,EACA85D,EACA3/D,IAIalM,KACb8rE,aAAcA,EACdC,gBAAiBA,EACjBC,WAAYA,EACZC,gBAAiBA,EAEzB,CAAE,MAAO3rE,GAEL,OADAQ,YAAOR,GACAk8B,EAASG,gBAAgBr8B,EACpC,KAIK4rE,EAAiB3vC,YAC1B,mCACAz9B,MAAOqtE,EAAiB3vC,KAGpB,IAAI4vC,EAFJ5vC,EAASr+B,SAAS0gB,aAA2B,IAG7C,IACI,MAAQ7e,SAAe08B,IAAIikC,mBAAmBwL,IAAtCnsE,KACA4O,EAAW5O,EAAKowC,eAAhBxhC,OACR,IAAKA,EACD,OAAI5O,EAAK2hD,qBAAuB0qB,IACrBrsE,EAGJw8B,EAASr+B,SACZoiE,GAAuB,IACnB/jC,EAASr+B,SAAS0gB,aAA2B,OAKzDutD,EACI9C,EAAiC16D,EACzC,CAAE,MAAOtO,GACLQ,YAAOR,GACP8rE,EAA4BvC,GAChC,CAGA,OADArtC,EAASr+B,SAAS0gB,aAA2B,IACtC2d,EAASG,gBAAgB,CAC5B2vC,oBAAqBF,GACvB,IAIGG,EAAyBA,CAACvgE,EAAItP,IAAY,CAACyB,EAAUY,KAC9D,MAAMutB,EAAWJ,YAAentB,IAAYiN,GAEpCwP,EAA8B9e,EAA9B8e,WAAgBD,EAAc7e,EAAlBsP,GACZE,EAA0CogB,EAA1CpgB,gBAAiB9H,EAAyBkoB,EAAzBloB,WAAYooE,EAAalgD,EAAbkgD,SAE/BC,EAAkBC,EACpBtoE,EACAoX,EACAD,EACArP,EACAsgE,GAGJruE,EAAS+tE,EAAeO,GAAiB,EAGhCE,EAAwBA,CAAC3gE,EAAItP,IAAY,CAACyB,EAAUY,KAC7D,MAAMutB,EAAWJ,YAAentB,IAAYiN,GAEpCE,EACJogB,EADIpgB,gBAAiB4P,EACrBwQ,EADqBxQ,iBAAkB1X,EACvCkoB,EADuCloB,WAAYkwC,EACnDhoB,EADmDgoB,QAASk4B,EAC5DlgD,EAD4DkgD,SAG1D1S,EAAU,CACZ79D,KAAMS,EAAQT,MAAQuwE,EAASvwE,KAC/B2wE,KAAMlwE,EAAQkwE,MAAQJ,EAASI,KAC/BC,QAASnwE,EAAQmwE,SAAWL,EAASK,QACrCC,OAAQpwE,EAAQqwE,YAAcP,EAASM,QAGrCL,EAAkBC,EACpBtoE,EACA0X,EACAw4B,EAAQtoC,GACRE,EACA4tD,GAEJ37D,EAAS+tE,EAAeO,GAAiB,EAGhCO,EAAiBzwC,YAC1B,mCACAz9B,MAAOpC,EAAS8/B,KACZ,MAAAywC,EAGIjhD,YAA0BwQ,EAASz9B,YAF3BizD,EAAgBib,EAAxBxrE,KAAQuwD,iBACRkb,EAAmBD,EAAnBC,oBAGIpT,EAAYp9D,EAAZo9D,QACF2S,EAAkBC,EACpB,KACAhwE,EAAQ8e,YAAcw2C,EAAiBx2C,WACvC9e,EAAQ6e,WAAay2C,EAAiBz2C,UACtC7e,EAAQwP,gBACR,CACIjQ,MAAM69D,aAAO,EAAPA,EAAS79D,OAAQixE,EAAoBC,SAC3CP,MAAM9S,aAAO,EAAPA,EAAS8S,OAAQM,EAAoBE,KAC3CP,SAAS/S,aAAO,EAAPA,EAAS+S,UAAWK,EAAoBL,QACjDC,QAAQhT,aAAO,EAAPA,EAASgT,SAAUI,EAAoBH,aAIvD,IACI,MAAQ/sE,SAAe08B,IAAIikC,mBAAmB8L,IAAtCzsE,KACA4O,EAAW5O,EAAKowC,eAAhBxhC,OAER,IAAKA,EACD,OAAO5O,EAKX,ID/LyBM,EC+LAsO,EAAO,ID9LlCpO,UACL,GAAEwpE,KAAYG,EAAkBY,WAAWI,EAAoBK,eC8LpD,OAAOhvC,EAASG,gBAAgB,CAC5B0wC,uBAAuB,IAI/B,MAAMjB,EACF9C,EAAiC16D,GAErC,OAAO4tB,EAASG,gBAAgB,CAC5B2vC,oBAAqBF,GAE7B,CAAE,MAAO9rE,GAEL,OADAQ,YAAOR,GACAk8B,EAASG,gBAAgB,CAC5B2vC,oBAAqBzC,KAE7B,CDhN6BvpE,KCgN7B,IAIKgtE,EAAe/wC,YACxB,iCACAz9B,MAAOoN,EAAiBswB,KACpB,IACI,aAAaE,IAAImkC,oBAAoB30D,EACzC,CAAE,MAAO5L,GAEL,OADAQ,YAAOR,GACAk8B,EAASG,gBAAgBr8B,EACpC,KAIKitE,EAAgBhxC,YACzB,kCACAz9B,MAAOoN,EAAiBswB,KACpB,IACI,aAAaE,IAAIokC,qBAAqB50D,EAC1C,CAAE,MAAO5L,GAEL,OADAQ,YAAOR,GACAk8B,EAASG,gBAAgBr8B,EACpC,KAIKktE,EAAyBjxC,YAClC,2CACAz9B,MAAOoN,EAAiBswB,KACpB,IACI,MAAQx8B,SAAe08B,IAAIqkC,8BACvB70D,IADIlM,KAGAowC,EAAmBpwC,EAAnBowC,eACR,OAAIA,WAAgBz0C,UACT6gC,EAASG,gBAAgB,CAC5BhhC,UAAWy0C,aAAc,EAAdA,EAAgBz0C,YAI5BqE,CACX,CAAE,MAAOM,GAEL,OADAQ,YAAOR,GACAk8B,EAASG,gBAAgBr8B,EACpC,KAIK2gE,EAA0B1kC,YACnC,4CACAz9B,MAAOoiE,EAAoB1kC,KACvB,IACI,MAAQx8B,SAAe08B,IAAIukC,wBACvBC,IADIlhE,KAIR,IAAKA,EAAKytE,eAAgB,OAAOztE,EAOjC,UALgC0tE,EAC5B1tE,EAAKytE,eACLvM,GAOA,OAHApgE,YACK,kEAAiEogE,KAE/D1kC,EAASG,gBAAgB,CAAEgxC,eAAe,IAMrD,aAHuBjxC,IAAIukC,wBACvBC,IAEYlhE,IACpB,CAAE,MAAOM,GAEL,OADAQ,YAAOR,GACAk8B,EAASG,gBAAgBr8B,EACpC,KAIFotE,EAAiC5uE,SACnC,IAAIuL,SAAQ,CAACgS,EAAS/R,KAClB,IAAIsjE,EAAa,EACjB,MAAMC,EAASC,aAAYhvE,UACvB,GAAmB,KAAf8uE,EAEA,OADAG,cAAcF,GACPxxD,GAAQ,GAGnB,IACI,MAAA2xD,QAAuBtxC,IAAIykC,8BACvBsM,GAGJ,GAJYO,EAAJhuE,KAICiuE,kBAEL,OADAF,cAAcF,GACPxxD,GAAQ,EAEvB,CAAE,MAAO/b,GAIL,OAHAytE,cAAcF,GACd/sE,YAAOR,GAEAgK,EAAOhK,EAClB,CAEAstE,GAAY,GACb,IAAK,IAGVlB,EAAuBA,CACzBtoE,EACA0X,EACAD,EACA3P,EACAsgE,KAAQ,CAERpoE,aACA0X,mBACA2hB,aAAc,CACVxhC,KAAMuwE,EAASvwE,KACf2wE,KAAMJ,EAASI,KACfC,QAASL,EAASK,QAClBE,WAAYP,EAASM,QAEzBjxD,oBACA3P,oBAKSoU,EAAoBic,YAC7B,sCACAz9B,MAAO6iD,EAAoBnlB,KACvB,IACI,MAAAI,QAAuBF,IAAIpc,kBAAkBqhC,GAC7C,OADY/kB,EAAJ58B,IAEZ,CAAE,MAAOM,GAEL,OADAQ,YAAOR,GACAk8B,EAASG,gBAAgBr8B,EACpC,KAMFu8B,EACU,aADVA,EAEc,iCAFdA,EAGS,YAHTA,EAIU,aAJVA,EAKiB,mBALjBA,EAMU,aANVA,EAOiB,mBAPjBA,EAQQ,WARRA,EASM,SATNA,GAUI,eAVJA,GAWa,cAXbA,GAYW,uBAZXA,GAaO,UAIPC,GAA6B/5B,GAAUA,EAAMqF,MAAM,iBAEnD20B,GAAgCh+B,IAAa,IAAAi+B,EAC/C,MAAMC,EAAel+B,IACbm+B,EAAc1Q,YAAsByQ,GAApCC,UACFh0B,EAAkBm0B,YAAsBJ,GACxCK,EAAYR,GAA0B5zB,GACtC,KACAA,EACAG,EAAiBk0B,YAAqBN,GACtCO,EAAWV,GAA0BzzB,GACrC,KACAA,EAEAo0B,EAAe,CACjBE,YAAkD,QAAvCX,EAAEvQ,YAAwBwQ,UAAa,IAAAD,OAAA,EAArCA,EAAuClH,QAChD,SACA,IAEJ4H,kBAAmB5rB,YAA4BmrB,IAEnD,MAAO,CACH/a,OAAQgb,EACRU,MAAOC,YAAkBZ,GACzBa,eAAc1hC,EAAA,CACV2hC,UAAWT,EACXU,QAASR,GACNC,GAEPQ,sBAAuB,CACnBC,kBAAmBZ,EACnBa,gBAAiBX,EACjBY,gBAAiBX,GAExB,EAGQY,GACTA,CAACC,EAAeC,IAAez/B,MAAOX,EAAUY,KAC5C,IAAIy/B,EAAiB,CAAC,EAGlBF,IAAkBG,IAAgBC,iBAClCJ,IAAkBG,IAAgBE,YAElCH,EAAiB,CACbI,aAAc7B,GAA6Bh+B,KAInDZ,EAAS0gB,aAA2B,IAEpC,IACI,IAAIggB,IAMA,KAAM,CAAEr+B,QAASs+B,IAAgBC,mBANhB,CACjB,MAAM/+B,QAAa6+B,IAAgBG,qBAC/BR,GAEJrgC,EAASqgB,YAAqBxe,GAClC,CAGA,OAAO7B,EAAS8gC,GAAYV,GAChC,CAAE,MAAOj+B,GACL,OAAO+J,QAAQC,OAAOhK,EAC1B,GAGK2+B,GAAeV,GAAez/B,MAAOX,EAAUY,KACxD,MAAMk+B,EAAel+B,IAEb4gB,EAA0BkM,YAAuBoR,GAAjDtd,sBACFxB,EAAUoO,YAAsB0Q,GAC9B0kB,EAA2DxjC,EAA3DwjC,mBAAoBvjC,EAAuCD,EAAvCC,gBAAiBC,EAAsBF,EAAtBE,kBAE7ClgB,EAASqhB,eACTrhB,EAAS0gB,aAA2B,IAEpC,IACI,MAAQqvD,EAA6BvuD,EAA7BuuD,yBACF3uD,EAAmB2uD,GAA4B7uC,IAAMhD,UAE3D,IAAK6xC,EAA0B,CAC3B,MAAMppE,EAAW,CACbopE,yBAA0B3uD,EAC1BoiC,qBACAj7C,cAAe0X,EACfC,2BAEEqe,IAAI4C,kBAAkBx6B,EAChC,CAGA,OAAO3G,EACHohC,GAAmBhgB,EAAkBnB,EAAiBmgB,GAE9D,CAAE,MAAOj+B,GACL,OAAO+J,QAAQC,OAAOhK,EAC1B,GAGSk/B,GAAgB1gC,UACzB,MAAMgG,EAAW,CACbopE,4BAGJ,UACUxxC,IAAI8C,cAAc16B,EAC5B,CAAE,MAAOxE,GACL,OAAO+J,QAAQC,OAAOhK,EAC1B,GAqBSi/B,GACTA,CAAChgB,EAAkB7Y,EAAe63B,IAClCz/B,MAAOX,EAAUY,KACb,MAAQmgB,EAAUqN,YAAsBxtB,KAAhCmgB,MAER,IAAIugB,GAAO,EAEX,IACI,MAEQz/B,SAFoB08B,IAAIgD,iBAAiBngB,IAEzCvf,KAER,OAAQA,aAAI,EAAJA,EAAMoY,QACV,KAAKykB,EACL,KAAKA,EACL,KAAKA,GACL,KAAKA,EACD4C,GAAO,EACP,MACJ,KAAK5C,EACD4C,GAAO,EACFvgB,EAAMI,MACPnhB,EACIihB,YAAiB,CACbE,KAAMqgB,IAAWC,aACjBxnB,OAAQ+G,IAAaM,MACrBF,sBAIZ,MACJ,KAAKsd,GAED,OADA4C,GAAO,EACAthC,EAlDvB0hC,EAACtgB,EAAkB7Y,EAAe63B,IAAez/B,UAC7C,MAAMgG,EAAW,CACbya,oBAGJ,IAII,aAHMmd,IAAImD,gBAAgB/6B,GAGnB3G,EACHohC,GAAmBhgB,EAAkB7Y,EAAe63B,GAE5D,CAAE,MAAOj+B,GACL,OAAO+J,QAAQC,OAAOhK,EAC1B,GAqCgBu/B,CACItgB,EACA7Y,EACA63B,IAGZ,KAAK1B,GACD4C,GAAO,EACPthC,EAASqhB,eACTrhB,EAAS0gB,aAA2B,IACpC0f,IACA,MACJ,KAAK1B,EAKD,OAJA4C,GAAO,EACPthC,EAASqhB,eACTrhB,EAASuhB,eACTvhB,EAAS0gB,aAA2B,IAC7BxU,QAAQC,OAAO,IAAI2D,MAAM6wB,IAAgBgB,WACpD,KAAKjD,EACD4C,GAAO,EACPthC,EAASqhB,eACTrhB,EAASuhB,eACTvhB,EAAS0gB,aAA2B,IACpC,MACJ,KAAKge,EACL,KAAKA,EACL,KAAKA,GACL,KAAKA,EAKD,OAJA4C,GAAO,EACPthC,EAASqhB,eACTrhB,EAASuhB,eACTvhB,EAAS0gB,aAA2B,IAC7BxU,QAAQC,OACX,IAAI2D,MAAO,kBAAiBjO,aAAI,EAAJA,EAAMoY,WAE1C,QACIja,EAASqhB,eACTigB,GAAO,EAEnB,CAAE,MAAOn/B,GAEL,OADAm/B,GAAO,EACAp1B,QAAQC,OAAOhK,EAC1B,CAEA,GAAIm/B,EAEA,aArOGM,EAoOS,KApOC,IAAI11B,SAASgS,GAAYuc,WAAWvc,EAAS0jB,MAqOnD5hC,EACHohC,GAAmBhgB,EAAkB7Y,EAAe63B,IAtOrDwB,KAwOP,C,oCClmBR,4BAyBe,KACX1oB,aAvBiBA,IAAM,CAAClZ,EAAUY,KAClC,MAAMovE,EAAc,GACd7xE,EAAQmW,YAAY1T,KAEtBzC,EAAMwd,MAAMtE,cACZ24D,EAAYz+D,KAAK0+D,IAAiB54D,cAGlClZ,EAAMud,cAAc7E,oBACpBm5D,EAAYz+D,KAAK0+D,IAAiBC,WAGlC/xE,EAAMud,cAAc/E,iBACpBq5D,EAAYz+D,KAAK0+D,IAAiBE,QAGtCnwE,EAAS,CACLgC,KAAM,4BACNzD,QAASyxE,GACX,E,oIC4KN,IAAII,EACJ,IACmB,IAAA9lD,EAAf,IAAKlkB,IAEDgqE,EAAqB,QAAT9lD,EAAG/pB,cAAM,IAAA+pB,OAAA,EAANA,EAAQ8lD,YAE/B,CAAE,MAAOhrE,GACLgrE,EAAe,IACnB,CAGA,MAAMC,EA/BN,SAAqBC,GACjB,IAAKA,EACD,OAAO,EAEX,MAAMC,EAAW,eAEjB,IAGI,GADAD,EAAQhhD,QAAQihD,EAHD,WAIXD,EAAQjtE,QAAQktE,GAGhB,MAAM,IAAIzgE,MAFVwgE,EAAQE,WAAWD,EAI3B,CAAE,MAAOnrE,GACL,OAAO,CACX,CACA,OAAO,CACX,CAauBqrE,CAAYL,GAC7BA,EACA,IA1EC,MACH5hD,cACI7mB,KAAK2oE,QAAU,IAAII,GACvB,CAEI1rE,aACA,OAAO2C,KAAK2oE,QAAQ53C,IACxB,CAEAvzB,IAAI+gE,GACA,MAAM5pE,EAAOsc,MAAM0sB,KAAK39B,KAAK2oE,QAAQh0E,QACrC,OAAI4pE,KAAS5pE,EACFA,EAAK4pE,GAEL,IAEf,CAEA7iE,QAAQ8B,GACJ,OAAOwC,KAAK2oE,QAAQ3wE,IAAIwF,EAC5B,CAEAmqB,QAAQnqB,EAAKP,GACT+C,KAAK2oE,QAAQzgD,IAAI1qB,EAAKP,EAC1B,CAEA4rE,WAAWrrE,GACPwC,KAAK2oE,QAAQK,OAAOxrE,EACxB,CAEAyrE,QACIjpE,KAAK2oE,QAAQM,OACjB,GA2CEC,EAAeC,IAER3hD,EAAa,IAxMnB,MAKHX,YAAY8hD,EAASS,GACjBppE,KAAK2oE,QAAUA,EACf3oE,KAAKopE,UAAYA,CACrB,CAEI/rE,aACA,OAAO2C,KAAK2oE,QAAQtrE,MACxB,CAMAG,IAAI+gE,GACA,OAAOv+D,KAAK2oE,QAAQnrE,IAAI+gE,EAC5B,CAMA7iE,QAAQ8B,GACJ,MAAMP,EAAQ+C,KAAK2oE,QAAQjtE,QAAQ8B,GACnC,GAAIP,EACA,IACI,OAAOu0B,KAAKuxC,MAAM9lE,EACtB,CAAE,MAAOzC,GACLQ,YAAOR,EAAO,CACV4X,SAAU,CACNu2D,QAAS,CACL7wD,OAAQ,UACRta,MACAP,WAIhB,CAEJ,OAAO,IACX,CAEAosE,eAAe7rE,GAEX,OAAiB,OADHwC,KAAK2oE,QAAQjtE,QAAQ8B,EAEvC,CAEA8rE,wBACI,OAAOJ,EAAaK,qBACxB,CAEAC,iBAAiBC,GACb,MAAMtvE,EAAQ,CAAC,EAEf,IAAK,IAAI6B,EAAI,EAAGA,EAAIgE,KAAK2oE,QAAQtrE,OAAQrB,IAAK,CAC1C,MAAMwB,EAAMwC,KAAKxC,IAAIxB,GACjBwB,EAAIksE,WAAWD,KACftvE,EAAMqD,GAAOwC,KAAKtE,QAAQ8B,GAElC,CACA,OAAOrD,CACX,CAOAwtB,QAAQnqB,EAAKP,GACT,IAAI+C,KAAKopE,WAAcppE,KAAKopE,UAAU5rE,GAGtC,IACIwC,KAAK2oE,QAAQhhD,QAAQnqB,EAAKg0B,KAAK5rB,UAAU3I,GAC7C,CAAE,MAAOzC,GACLQ,YAAOR,EAAO,CACV4X,SAAU,CACNu2D,QAAS,CACL7wD,OAAQ,UACRta,MACAmsE,kBAAmBn4C,KAAK5rB,UAAU3I,GAAOI,OACzCJ,WAIhB,CACJ,CAMA4rE,WAAWrrE,GACP,OAAOwC,KAAK2oE,QAAQE,WAAWrrE,EACnC,CAEAyrE,QACI,OAAOjpE,KAAK2oE,QAAQM,OACxB,CAMAtgD,cAAc8gD,GAGV,IAAK,IAAIztE,EAAIgE,KAAK2oE,QAAQtrE,OAAS,EAAGrB,GAAK,IAAKA,EAAG,CAC/C,MAAMwB,EAAMwC,KAAKxC,IAAIxB,GACjBwB,EAAIksE,WAAWD,IACfzpE,KAAK6oE,WAAWrrE,EAExB,CACJ,GAmFkCkrE,GAAiBlrE,GAC9C9I,OAAO2W,OAAOu+D,KAAc1gE,SAAS1L,KAIrC0rE,EAAaK,wBACdM,QAAQC,KAAK,0CAA0C,IAChD,IALP9uE,YAAQ,gBAAewC,iCAChB,I,oCCrNf,sGAAO,MAAMusE,EAAuBvzE,GAAUA,EAAMovB,MAAM/S,IAAIgxB,WAEjDT,EAA4B5sC,GACrCuzE,EAAoBvzE,GAAOotC,mBAElB/uB,EAAqCre,GAC9CuzE,EAAoBvzE,GAAOwzE,sCAElBh1D,EAAyCxe,GAClDuzE,EAAoBvzE,GAAOyzE,+B,mnDCJ/B,MASMC,EAAkB1zE,IAAK,CACzB84B,KAAM,EACNyB,KAAMv6B,EAAMg8B,UAAU1B,OAAOC,OAG3BhpB,EAAQ7R,YAAY,CACtBC,KAAM,UACNP,aAhBiB,CACjB48B,UAAW,CACPt9B,MAAO,CAAC,EACR47B,OAAQ,CAAC,GAEbq5C,UAAW,KACXC,aAAc,MAWdh0E,SAAU,CACNi0E,eAAgBA,CAAC7zE,EAAKG,KAAkB,IAAdC,EAAOD,EAAPC,QACtBJ,EAAMg8B,UAAU1B,OAAOxB,KAAO,EAC9B94B,EAAMg8B,UAAU1B,OAAOC,KAAOn6B,EAAQm6B,IAAI,EAE9Cu5C,iBAAkBA,CAAC9zE,EAAKO,KAAkB,IAAdH,EAAOG,EAAPH,QACxBJ,EAAMg8B,UAAUlnB,KAAO,CACnBi/D,QAAS3zE,EAAQ0U,KACjBk/D,MAAO5zE,EAAQgrC,WAEnBprC,EAAMg8B,UAAU1B,OAASo5C,EAAe1zE,EAAM,EAElDi0E,gBAAkBj0E,IACdA,EAAMg8B,UAAUlnB,KAAO,CACnBi/D,QAAS/zE,EAAMg8B,UAAUlnB,KAAKi/D,QAC9BC,MACmC,eAA/Bh0E,EAAMg8B,UAAUlnB,KAAKk/D,MACf,YACA,cAEdh0E,EAAMg8B,UAAU1B,OAASo5C,EAAe1zE,EAAM,EAElDk0E,iBAAkBA,CAACl0E,EAAKmiB,KAAkB,IAAd/hB,EAAO+hB,EAAP/hB,QACxBJ,EAAMg8B,UAAU2Z,SAAWv1C,EAAQu1C,SACnC31C,EAAMg8B,UAAU1B,OAASo5C,EAAe1zE,EAAM,EAElDm0E,YAAaA,CAACn0E,EAAKqiB,KAAkB,IAAdjiB,EAAOiiB,EAAPjiB,QACnBJ,EAAMg8B,UAAUo4C,UAAUjtC,KAAO/mC,EAAQ+mC,KACzCnnC,EAAMg8B,UAAU1B,OAASo5C,EAAe1zE,EAAM,EAElD06D,qBAAsBA,CAAC16D,EAAKwiB,KAAkB,IAAdpiB,EAAOoiB,EAAPpiB,QAC5BJ,EAAMg8B,UAAUq4C,cAAcj0E,EAAQ+R,QAAU/R,EAAQqG,KAAK,EAEjE6tE,UAAWA,CAACt0E,EAAK2iB,KAAkB,IAAdviB,EAAOuiB,EAAPviB,QACjBJ,EAAMg8B,UAAUo4C,UAAUhtC,GAAKhnC,EAAQgnC,GACvCpnC,EAAMg8B,UAAU1B,OAASo5C,EAAe1zE,EAAM,EAElDu0E,cAAeA,CAACv0E,EAAK+iB,KAAkB,IAAd3iB,EAAO2iB,EAAP3iB,QACjBo0E,GAA4B,EACP,SAArBp0E,EAAQyoD,WACR2rB,GACKx0E,EAAM2zE,UAAUa,2BAEzBC,EAA4Bz0E,EAAOI,EAAQyoD,UAC3C7oD,EAAM00E,SAAQ50E,EAAA,GACPE,EAAM00E,UAEb10E,EAAMg8B,UAAU3H,kBAAoBj0B,EAAQyoD,SAC5C7oD,EAAMg8B,UAAU1B,OAASo5C,EAAe1zE,GACxCA,EAAM2zE,UAAUa,0BACZA,CAAyB,EAEjCG,WAAYA,CAAC30E,EAAK2jB,KAAkB,IAAdvjB,EAAOujB,EAAPvjB,QAClBJ,EAAMg8B,UAAU1B,OAAOxB,KAAO14B,EAAQ04B,IAAI,EAE9C87C,iBAAmB50E,IACfA,EAAMg8B,UAAUo4C,UAAUhtC,GACtBpnC,EAAM00E,SAAS14C,UAAUo4C,UAAUhtC,EAAE,EAE7CytC,mBAAqB70E,IACjBA,EAAMg8B,UAAUo4C,UAAUjtC,KACtBnnC,EAAM00E,SAAS14C,UAAUo4C,UAAUjtC,IAAI,EAE/C2tC,aAAe90E,IACXA,EAAMg8B,UAASl8B,EAAA,GAAQE,EAAM00E,SAAS14C,WACtCh8B,EAAM2zE,UAAS7zE,IAAA,GACRE,EAAM2zE,WACN3zE,EAAM00E,SAASf,UACrB,EAELoB,kBAAmBA,CAAC/0E,EAAKikB,KAAkB,IAAd7jB,EAAO6jB,EAAP7jB,QACzBJ,EAAMg8B,UAAUt9B,MAAMs2E,YAAc50E,EAAQ40E,YAC5Ch1E,EAAMg8B,UAAUlnB,KAAO,CACnBi/D,QAAS,YACTC,MAAO,aAEXh0E,EAAMg8B,UAAU1B,OAASo5C,EAAe1zE,EAAM,EAElDi1E,6BAA8BA,CAACj1E,EAAK8pC,KAAkB,IAAd1pC,EAAO0pC,EAAP1pC,QACpCJ,EAAMg8B,UAAU5F,oBAAsBh2B,EAAQg2B,oBAC9Cp2B,EAAMg8B,UAAU1B,OAASo5C,EAAe1zE,EAAM,EAElDk1E,6BAA8BA,CAACl1E,EAAKiqC,KAAkB,IAAd7pC,EAAO6pC,EAAP7pC,QAC/BA,EAAQ+0E,WAAWn5C,YAGxB99B,OAAOC,KAAKiC,EAAQ+0E,YAAYvxE,SAC3BoD,GAAShH,EAAMgH,GAAO5G,EAAQ+0E,WAAWnuE,KAE9ChH,EAAM00E,SAAQ50E,EAAA,GACPM,EAAQg1E,gBACd,EAELC,qBAAsBA,CAACr1E,EAAKy+C,KAAkB,IAAdr+C,EAAOq+C,EAAPr+C,QAC5BJ,EAAMg8B,UAAY57B,EAAQutD,OAAO,KAK9Bp8C,MAAa,QAErB,MAAA24B,EAiBH34B,EAAM3Q,QAhBNizE,EAAc3pC,EAAd2pC,eACAK,EAAgBhqC,EAAhBgqC,iBACAJ,EAAgB5pC,EAAhB4pC,iBACAG,EAAe/pC,EAAf+pC,gBACAE,EAAWjqC,EAAXiqC,YACAG,EAASpqC,EAAToqC,UACAK,EAAUzqC,EAAVyqC,WACAI,EAAiB7qC,EAAjB6qC,kBACAE,EAA4B/qC,EAA5B+qC,6BACAI,EAAoBnrC,EAApBmrC,qBACAH,EAA4BhrC,EAA5BgrC,6BACAX,EAAarqC,EAAbqqC,cACA7Z,EAAoBxwB,EAApBwwB,qBACAoa,EAAY5qC,EAAZ4qC,aACAF,EAAgB1qC,EAAhB0qC,iBACAC,EAAkB3qC,EAAlB2qC,mBASEJ,EAA8BA,CAACz0E,EAAO6oD,KACxC,GAAiB,SAAbA,EAgBJ,OAZI7oD,EAAMg8B,UAAUq4C,eAChBn2E,OAAOC,KAAK6B,EAAMg8B,UAAUq4C,eAAezwE,SAASoD,IAChDhH,EAAMg8B,UAAUq4C,cAAcrtE,GAAO2pD,YAAQ,MAAM,IAIvD3wD,EAAMg8B,UAAUs5C,cAChBp3E,OAAOC,KAAK6B,EAAMg8B,UAAUs5C,cAAc1xE,SAASoD,IAC/ChH,EAAMg8B,UAAUs5C,aAAatuE,GAAO2pD,YAAQ,MAAM,IAIlD9H,GACJ,IAAK,mBACD7oD,EAAMg8B,UAAUq4C,cAAc59C,KAAOk6B,aAAQ,GAC7C3wD,EAAMg8B,UAAUq4C,cAActoB,QAAU4E,aAAQ,GAChD3wD,EAAMg8B,UAAUq4C,cAAclnB,aAAewD,aAAQ,GACrD3wD,EAAMg8B,UAAUq4C,cAAckB,OAAS5kB,aAAQ,GAC/C,MACJ,IAAK,kBACD3wD,EAAMg8B,UAAUs5C,aAAanoB,aAAewD,aAAQ,GACpD3wD,EAAMg8B,UAAUs5C,aAAa7+C,KAAOk6B,aAAQ,GAC5C3wD,EAAMg8B,UAAUs5C,aAAaC,OAAS5kB,aAAQ,GAC9C,MACJ,IAAK,gBACD3wD,EAAMg8B,UAAUq4C,cAAc59C,KAAOk6B,aAAQ,GAC7C3wD,EAAMg8B,UAAUq4C,cAActoB,QAAU4E,aAAQ,GAChD3wD,EAAMg8B,UAAUq4C,cAAckB,OAAS5kB,aAAQ,GAC/C,MACJ,IAAK,eACD3wD,EAAMg8B,UAAUs5C,aAAa7+C,KAAOk6B,aAAQ,GAC5C3wD,EAAMg8B,UAAUs5C,aAAaC,OAAS5kB,aAAQ,GAC9C,MACJ,IAAK,UACD3wD,EAAMg8B,UAAUq4C,cAAc59C,KAAOk6B,aAAQ,GAC7C3wD,EAAMg8B,UAAUq4C,cAActoB,QAAU4E,aAAQ,GAChD3wD,EAAMg8B,UAAUq4C,cAAckB,OAAS5kB,aAAQ,GAC/C,MACJ,IAAK,UACL,IAAK,YACD3wD,EAAMg8B,UAAUq4C,cAAckB,OAAS5kB,aAAQ,GAC/C,MACJ,IAAK,eACD3wD,EAAMg8B,UAAUq4C,cAAckB,OAAS5kB,aAAQ,GAC/C,MACJ,IAAK,cAqBL,IAAK,kBACD3wD,EAAMg8B,UAAUs5C,aAAaC,OAAS5kB,aAAQ,GAC9C,MApBJ,IAAK,iBAGL,IAAK,eAYL,IAAK,qBACD3wD,EAAMg8B,UAAUs5C,aAAaC,OAAS5kB,aAAQ,GAC9C,MAXJ,IAAK,UACD3wD,EAAMg8B,UAAUrV,QAAUgqC,YAAQ,OAClC,MACJ,IAAK,UACD3wD,EAAMg8B,UAAUrV,QAAUgqC,aAAQ,GAClC,MACJ,IAAK,SACD3wD,EAAMg8B,UAAUrV,QAAUgqC,aAAQ,GAU1C,C,uwCCxNG,IAAK/yD,EAAI,SAAJA,GAAI,OAAJA,EAAI,wBAAJA,CAAI,MAIT,MAAM43E,EAAY13E,YAAU,CAC/BC,YAAa,YACbC,cACAC,SAAUC,OAAOC,KAAKP,GACtBQ,UAAYC,IAAO,CACfo3E,aAAcp3E,EAAQE,SAAuC,CACzDC,gBAAiB,CAACZ,EAAK8d,YACvBhd,MAAQC,IACG,CACHC,IAAK,6BACLC,OAAQ,SACRC,KAAMH,MAIlB+2E,WAAYr3E,EAAQK,MAAsC,CACtDM,aAAc,CAACpB,EAAK8d,YACpBhd,MAAOA,IAAM,6BACbsyC,kBAAoBvoC,IAAuC,IAAAktE,EACvD,OAAA71E,IAAA,GACO2I,GAAQ,IACX9E,MAAqB,QAAhBgyE,EAAEltE,EAAS9E,aAAK,IAAAgyE,OAAA,EAAdA,EAAgBxjE,QAAQhN,IAAI,IAAAywE,EAAA,OAC/Bv7D,YACIlV,EAAKiR,QACLjR,EAAK8Q,YACL9Q,EAAKO,iBACLP,EAAKmT,gBACL,CACI,CACIuC,SAAqB,QAAb+6D,EAAEzwE,EAAKyT,cAAM,IAAAg9D,OAAA,EAAXA,EAAa7gE,MAClB6F,GAAUA,EAAMC,aAIhC,KACJ,QAONg7D,EAAsDL,EAAtDK,wBAAyBC,EAA6BN,EAA7BM,mBAAoB32E,EAASq2E,EAATr2E,I,sCCtD5D,oEA4MO,IAsrEK42E,EAAwB,SAAxBA,GAAwB,OAAxBA,EAAwB,UAAxBA,EAAwB,YAAxBA,EAAwB,gBAAxBA,CAAwB,MAMxBC,EAA2B,SAA3BA,GAA2B,OAA3BA,EAA2B,UAA3BA,EAA2B,kBAA3BA,EAA2B,wBAA3BA,CAA2B,K,2qCCr4EvC,MACMhzE,EAAa,CACfuE,iBAAkB,kBAClBtE,gBAAiB,kBAmGrB,MAAMH,EAAQ,IA/Fd,MACIutB,YAAYa,EAAO+kD,GACfzsE,KAAK0nB,MAAQA,EACb1nB,KAAKysE,UAAYA,CACrB,CAQAlzE,KAAKiE,GACD,MAAMkvE,EAAS1sE,KAAK0nB,MAAMhsB,QAAQsE,KAAKysE,UAAYjvE,GACnD,GAAIkvE,EAAQ,CACR,GAAIA,EAAOtvE,QAAU4qB,KAAK2kD,MACtB,OAAOD,EAAOxyE,KAEd8F,KAAK0nB,MAAMmhD,WAAW7oE,KAAKysE,UAAYjvE,EAE/C,CACA,OAAO,IACX,CAUAlD,MAAMkD,EAAKtD,GAAyB,IAAnB0yE,EAAGltE,UAAArC,OAAA,QAAAyO,IAAApM,UAAA,GAAAA,UAAA,GAlCJ,IAuCZ,OAJAM,KAAK0nB,MAAMC,QAAQ3nB,KAAKysE,UAAYjvE,EAAK,CACrCJ,QAAS4qB,KAAK2kD,MAAQC,EACtB1yE,SAEG8F,IACX,CAQAvF,OAAO+C,GAEH,OADAwC,KAAK0nB,MAAMmhD,WAAW7oE,KAAKysE,UAAYjvE,GAChCwC,IACX,CAOA6sE,YAEI,OADA7sE,KAAK0nB,MAAMiB,cAAc3oB,KAAKysE,WACvBzsE,IACX,CAQA8sE,OAAOtvE,GACH,MAAMkvE,EAAS1sE,KAAK0nB,MAAMhsB,QAAQsE,KAAKysE,UAAYjvE,GAMnD,OALIkvE,GACIA,EAAOtvE,SAAW4qB,KAAK2kD,OACvB3sE,KAAK0nB,MAAMmhD,WAAW7oE,KAAKysE,UAAYjvE,GAGxC,IACX,CAOAuvE,YACI,MAAMC,EAAShtE,KAAK0nB,MAAM8hD,iBAAiBxpE,KAAKysE,WAC1CE,EAAM3kD,KAAK2kD,MACjB,IAAK,MAALh2E,KAA4BjC,OAAOu4E,QAAQD,GAAS,KAAAj2E,EAAAuvD,EAAA3vD,EAAA,SAAxC6G,EAAGzG,EAAA,GAAQA,EAAA,GACRqG,SAAWuvE,GAClB3sE,KAAK0nB,MAAMmhD,WAAWrrE,EAE9B,CACA,OAAOwC,IACX,GAI2BwnB,IAtGV,S,oCCHrB,wIAAO,MAAMqS,EAAa,CACtBsgC,QAAS,UACTrgC,aAAc,gBAGLzgB,EAAe,CACxBM,MAAO,QACPygD,SAAU,WACVvjE,MAAO,SAGE8hC,EAAkB,CAC3B0hC,KAAM,OACNzd,OAAQ,SACRC,SAAU,WACVhkB,UAAW,YACXiB,aAAc,cACdlB,gBAAiB,iBACjBs0C,QAAS,WAGA5S,EAAwB,CACjCC,UAAW,YACXC,0BAA2B,0BAGhB,UACXj0C,UAAW,GACX7O,YAAY,EACZe,UAAU,EACVje,MAAO,KACP2yE,YAAY,EACZl0D,YAAY,EACZm0D,YAAY,EACZvzD,sBAAuB,CACnBuuD,yBAA0B,KAC1BxnE,cAAe,MAEnByX,QAAS,CACLI,UAAU,EACVf,YAAY,EACZgD,eAAgB,KAChBpC,gBAAiB,KACjBC,kBAAmB,KACnBa,MAAO,CACHI,KAAM,GACNlH,OAAQ+G,EAAaM,QAG7BnB,gBAAiB,CACbC,UAAU,EACVf,YAAY,EACZ0f,UAAW,KACXi2C,eAAe,GAEnBlnD,oBAAqB,CACjB3rB,MAAO,KACPmB,KAAM,KACNyrE,oBAAqB,KACrB1vD,YAAY,GAEhB41D,cAAe,CACX9zD,MAAM,EACNw9B,SAAU,KACV/9B,YAAY,EACZs0D,gBAAgB,EAChBC,iBAAiB,EACjB/0D,UAAU,GAEdwN,SAAU,CACNvd,gBAAiB,GACjB+kE,oBAAoB,EACpBC,kBAAkB,GAEtB5nD,qBAAsB,CAClB5rB,KAAM,KACNwd,YAAY,EACZmwD,eAAe,EACfpvD,UAAU,I,siEC/ClB,MAAMk1D,EAA0B,CAC5BC,KAAM,KACN/lB,aAAc,KACdM,iBAAkB,KAClB3tD,MAAO,MAGEqzE,EAA8B,CACvCC,QAAS,UACTtwD,QAAS,UACTuwD,aAAc,eACdC,+BAAgC,kCAGvBp4E,EAAe,CACxBq4E,oBAAqB,KACrBzlB,QAAS,KACT6P,YAAa,GACb6V,WAAW,EACX/V,YAAa,CAAC,EACdgW,cAAe,GACfC,UAAW,GACXC,YAAa,KACbC,sBAAuB,KACvBlzD,UAAW,KACXmzD,cAAe,KACf7lB,eAAgB,KAChB8lB,iBAAkBb,EAClB/lB,kBAAmB,KACnBmQ,sBAAuB,KACvBW,2BAA4BmV,EAA4BC,QACxD7V,mCAAoC,MAGlCwW,EAAgBv4E,YAAY,CAC9BC,KAAM,WACNP,eACAQ,SAAU,CACNs4E,sBAAwBl4E,IACpBA,EAAMg4E,iBAAmBb,CAAuB,EAEpDgB,kBAAmBA,IACR/4E,EAEXg5E,uBAAwBA,CAACp4E,EAAKG,KAAkB,IAAdC,EAAOD,EAAPC,QAC9BJ,EAAMy3E,oBAAsBr3E,CAAO,EAEvCi4E,gBAAiBA,CAACr4E,EAAKO,KAAkB,IAAdH,EAAOG,EAAPH,QACvBJ,EAAM2hE,YAAY2W,aAAel4E,CAAO,EAE5Cm4E,wBAAyBA,CAACv4E,EAAKmiB,KAAkB,IAAd/hB,EAAO+hB,EAAP/hB,QAC/BJ,EAAM2hE,YAAY6W,UAAUC,qBAAuBr4E,CAAO,EAE9Ds4E,eAAgBA,CAAC14E,EAAKqiB,KAA+B,IAAlBs/C,EAAWt/C,EAApBjiB,QACtBJ,EAAM2hE,YAAcgX,EAAehX,EAAY,EAEnDiX,gBAAiBA,CAAC54E,EAAKwiB,KAAgC,IAAnBq2D,EAAYr2D,EAArBpiB,QACvBJ,EAAM64E,aAAeA,GAAgB,IAAI,EAE7CC,eAAgBA,CAAC94E,EAAK2iB,KAA+B,IAAlBk/C,EAAWl/C,EAApBviB,QACtBJ,EAAM6hE,YAAcA,EAAYt8D,KAC5B,CAAAwd,EAAqBglD,KAAK,IAAvBr4D,EAAEqT,EAAFrT,GAAc,MAAe,CAC5BA,GAAIq4D,EACJnpE,IAFOmkB,EAAJ9B,KAGHthB,KAHaojB,EAAJtC,KAIT3I,WAAYpI,EACf,GACJ,EAELqpE,aAAcA,CAAC/4E,EAAK2jB,KAA6B,IAAhB+zD,EAAS/zD,EAAlBvjB,QACpBJ,EAAM03E,UAAYA,CAAS,EAE/BsB,oBAAqBA,CACjBh5E,EAAKikB,KAEJ,IAAAg1D,EAAAh1D,EADC7jB,QAAWixD,EAAY4nB,EAAZ5nB,aAAcM,EAAgBsnB,EAAhBtnB,iBAAkBunB,EAAQD,EAARC,SAE7Cl5E,EAAMg4E,iBAAiB3mB,aAAeA,EACtCrxD,EAAMg4E,iBAAiBrmB,iBAAmBA,EAC1C3xD,EAAMg4E,iBAAiBh0E,MAAQk1E,CAAQ,EAE3CC,WAAYA,CAACn5E,EAAK8pC,KAAiD,IAAAsvC,EAAAC,EAAAC,EAAAC,EAAA,IAAAC,EAAA1vC,EAA7C1pC,QAAW4xD,EAAOwnB,EAAPxnB,QAAS5sD,EAAMo0E,EAANp0E,OAAQyH,EAAQ2sE,EAAR3sE,SAEJ,IAAA4sE,EAA1C,IAAqB,QAAjBL,EAAAp5E,EAAM2hE,mBAAW,IAAAyX,OAAA,EAAjBA,EAAmBh0E,UAAWA,EAS9B,YARAZ,YAAO,IAAImN,MAAO,uCAAuC,CACrDiK,SAAU,CACNjY,MAAO,CACH+1E,cAAgC,QAAnBD,EAAEz5E,EAAM2hE,mBAAW,IAAA8X,OAAA,EAAjBA,EAAmBr0E,OAClCu0E,cAAev0E,MAY/B,MAAMw0E,GAAkB55E,EAAMgyD,QACxB6nB,EACF7nB,EAAQ8nB,kBAAoBC,IAAkBC,IAKlD,KAHIJ,GACAC,GACA75E,EAAMgyD,QAAQtnC,OAASsnC,EAAQtnC,OACjB,OAElB,MAAMuvD,EAAYC,EACdloB,EACAnlD,EACA7M,EAAMgyD,SAGJmoB,GAAgC,QAAbd,EAAAr5E,EAAMgyD,eAAO,IAAAqnB,OAAA,EAAbA,EAAe70D,WAAY,EAC9C41D,EAAmBpoB,EAAQxtC,UAAY,EACvC61D,EAAa,CACf3vD,MAAOsnC,EAAQtnC,OAAS,EACxB7F,iBAAkBmtC,EAAQntC,kBAAoB,EAC9CysC,sBAAuBU,EAAQV,uBAAyB,KACxDC,sBAAuBS,EAAQT,uBAAyB,KACxDE,mBAAoBO,EAAQP,mBAC5BqoB,gBAA8B,QAAbR,EAAAt5E,EAAMgyD,eAAO,IAAAsnB,GAAbA,EAAeQ,gBAC1B95E,EAAMgyD,QAAQ8nB,gBACd9nB,EAAQ8nB,iBAAmB,KAGjCt1D,SACI41D,EAAmBD,EACbC,EACAD,EAGV/jD,qBACiB,QAAbmjD,EAAAv5E,EAAMgyD,eAAO,IAAAunB,OAAA,EAAbA,EAAenjD,sBACf47B,EAAQ57B,sBACR,GAGRkkD,YAA4BD,GAE5Br6E,EAAMgyD,QAAOlyD,IAAA,GAAQu6E,GAAeJ,EAAW,EAEnDM,kBAAmBA,CAACv6E,EAAKiqC,KAAkB,IAAd7pC,EAAO6pC,EAAP7pC,QACzBJ,EAAMkyD,eAAiB9xD,CAAO,EAElCo6E,aAAcA,CAACx6E,EAAKy+C,KAAkB,IAAdr+C,EAAOq+C,EAAPr+C,QACpBJ,EAAM4kB,UAAYxkB,CAAO,EAE7Bq6E,iBAAkBA,CAACz6E,EAAK2+C,KAAiC,IAApBo5B,EAAap5B,EAAtBv+C,QACxBJ,EAAM+3E,cAAgBA,CAAa,EAEvC2C,qBAAsBA,CAAC16E,EAAK6+C,KAAkB,IAAdz+C,EAAOy+C,EAAPz+C,QAC5BJ,EAAMoxD,kBAAoBhxD,CAAO,EAErCu6E,yBAA0BA,CAAC36E,EAAKg/C,KAAkB,IAAd5+C,EAAO4+C,EAAP5+C,QAChCJ,EAAMuhE,sBAAwBnhE,EAC9BJ,EAAMkiE,2BACFmV,EAA4BC,OAAO,EAE3CsD,sCAAuCA,CAAC56E,EAAKk/C,KAAkB,IAAd9+C,EAAO8+C,EAAP9+C,QAC7CJ,EAAMyhE,mCAAqCrhE,CAAO,EAEtDy6E,+BAAiC76E,IAC7BA,EAAMuhE,sBAAwB,KAC9BvhE,EAAMkiE,2BACFmV,EAA4BG,8BAA8B,EAElEsD,2BAA6B96E,IACzBA,EAAMuhE,sBAAwB,KAC9BvhE,EAAMkiE,2BACFmV,EAA4BC,OAAO,EAE3CyD,kCAAoC/6E,IAChCA,EAAMuhE,sBAAwB,KAC9BvhE,EAAMkiE,2BACFmV,EAA4BrwD,OAAO,EAE3Cg0D,mCAAqCh7E,IACjCA,EAAMkiE,2BACFmV,EAA4BE,YAAY,EAEhD0D,eAAgBA,CAACj7E,EAAKo/C,KAAkB,IAAdh/C,EAAOg/C,EAAPh/C,QACtBJ,EAAM63E,YAAcz3E,CAAO,EAE/B86E,iBAAkBA,CAACl7E,EAAKs/C,KAAkB,IAAdl/C,EAAOk/C,EAAPl/C,QACxBJ,EAAM23E,cAAgBv3E,CAAO,EAEjC+6E,aAAcA,CAACn7E,EAAKi9D,KAAkB,IAAd78D,EAAO68D,EAAP78D,QACpBJ,EAAM43E,UAAYx3E,CAAO,EAE7Bg7E,yBAA0BA,CAACp7E,EAAKm9D,KAAkB,IAAd/8D,EAAO+8D,EAAP/8D,QAChCJ,EAAM83E,sBAAwB13E,CAAO,KAKlC63E,MAAqB,QAE7B,MAAMU,EAAkBhX,GAAW7hE,IAAA,GACnC6hE,GAAW,IACdvvD,4BACIuvD,EAAYvvD,4BAA4Bkf,cAC5C1Y,OAAQ+oD,EAAY/oD,OAAOrT,KAAK81E,IAAG,CAC/BC,UAAWD,EAAIC,UACfC,eAAgBF,EAAIC,UACpBE,OAAQH,EAAIG,QAAUH,EAAII,MAC1BC,OAAQL,EAAIK,OACZC,SAAUN,EAAIM,SACdC,UAAWP,EAAIO,UACfC,SAAUR,EAAIQ,SACdC,MAAOT,EAAIS,OAAS,WAIfC,EACTA,CAACC,EAAWnvE,IAAa,CAAChL,EAAUY,KAChC,MAAMw5E,EAAiBna,YAAar/D,KACpCZ,EAASo2E,EAAcr3E,QAAQ83E,eAAesD,EAAUra,cACxD9/D,EAASq6E,EAAeF,IACxBn6E,EAASo2E,EAAcr3E,QAAQg4E,gBAAgBoD,EAAUnD,eAEzDh3E,EACIqiD,IACI83B,EAAUra,YAAYv8D,OACtB42E,EAAUra,YAAYzK,aAG9Br1D,EAASo2E,EAAcr3E,QAAQk4E,eAAekD,EAAUna,cACxDhgE,EACIo2E,EAAcr3E,QAAQu4E,WAAW,CAC7BnnB,QAASgqB,EAAUhqB,QACnB5sD,OAAQ42E,EAAUra,YAAYv8D,OAC9ByH,cAIJmvE,EAAUhqB,QAAQmqB,aAElBt6E,EACIo2E,EAAcr3E,QAAQ25E,kBAClByB,EAAUhqB,QAAQmqB,eAGnBH,EAAUhqB,QAAQE,gBAEzBrwD,EACIo2E,EAAcr3E,QAAQ25E,kBAClByB,EAAUhqB,QAAQE,iBAK9B,MAIM6lB,EAHFiE,EAAUra,YAAYj9C,WACrBs3D,EAAUI,2BAGTljC,IAAiBmjC,MACjBL,EAAUra,YAAY2a,WACtBpjC,IAAiBqR,OACjBrR,IAAiBmR,YAWvB,GATAxoD,EAASo2E,EAAcr3E,QAAQ65E,iBAAiB1C,IAChDl2E,EACI06E,EACI7a,YAAkBj/D,KAClBu/D,YAAcv/D,KACds1E,IAIJiE,EAAUtiB,eAAgB,CAC1B,MAAQwJ,EAAa8Y,EAAUtiB,eAAvBwJ,SACRrhE,EAASsiD,IAAYif,YAAYF,GACrC,CAEArhE,EACIo2E,EAAcr3E,QAAQ85E,qBAClBsB,EAAU5qB,oBAIA6qB,GAAkBna,YAAar/D,MAE7C+5E,EAAc/5E,EAClB,EAGFy5E,EAAkBF,GAAc,CAACn6E,EAAUY,KAC7C,MAAMzC,EAAQyC,IACRg6E,EAAiB3Z,YAAoC9iE,GACrD08E,EAA4BC,YAA4B38E,GACxD48E,EACFC,YAA+BJ,IAC/BK,YAA0BJ,EAA2B,MACnDrsC,EACF0sC,YAAqC/8E,GACnCoS,EACF4pE,EAAUra,YAAYvvD,4BACpB4qE,EACF3sC,GACAqsC,IAA8BtqE,IAC7BwqE,EAEL/6E,EACIo2E,EAAcr3E,QAAQg6E,sCAClBoC,EACMN,EACAtqE,IAGV4pE,EAAUiB,aACVp7E,EACIo2E,EAAcr3E,QAAQ+5E,yBAAyB,CAC3C10E,MAAO+1E,EAAUiB,aAAah3E,MAC9BC,YAAa81E,EAAUiB,aAAa/2E,YACpCg3E,uBACIlB,EAAUiB,aAAaC,uBAC3B3lE,iBAAkBykE,EAAUiB,aAAa1lE,iBACzCk/B,aAAc,mBACd0mC,cAAenB,EAAUiB,aAAaE,iBAI9Ct7E,EAASo2E,EAAcr3E,QAAQk6E,6BACnC,EAGS0B,EAAiB/5E,IAC1B,MAAM26E,EAAqB1b,YAAkBj/D,KACvC46E,EAAiBrb,YAAcv/D,KAE/B66E,EADc1b,YAAkBn/D,KACE8C,KAAK8O,GAAMA,EAAE1U,OAAM+T,KAAK,OAY1D6pE,EAAgB,GAAEH,EAAmBznC,YAVnB6nC,MACpB,MAAMC,EACFL,EAAmB14D,UAAY24D,EAAeK,cAC5CC,GACDP,EAAmB14D,UAAY24D,EAAeK,cACnD,OAAID,EAAe,MACfE,EAAkB,UACfP,EAAmB14D,SAAW,QAAU,QAAQ,EAGJ84D,KACvD53E,IAAIihE,cAAc,WAAY,CAC1B/tC,KAAM,CACFlU,UAAW24D,EACX,kBAAmBD,EACnB,kBAAmBC,GAEvB5nC,SAAUynC,EAAmBznC,SAC7BvwC,OAAQg4E,EAAmBh4E,OAC3Bw4E,eAAgBR,EAAmBnkE,YAAc,EACjD4kE,aAAcP,EACd9nC,WAAY4nC,EAAmB14D,SAAW,WAAa,SACvDo5D,YAAalgE,IAAMw/D,EAAmB34D,SAASqE,OAAO,aACxD,EAGAyzD,EAAkBA,CAAC5a,EAAa3P,EAAS+lB,IAAmBl2E,IAC9D,MAAM+iB,EAAYm5D,YACdhG,IAAkB7+B,IAAiBmjC,MACnCtE,IAAkB7+B,IAAiBmR,YACnCsX,EAAYhsB,SACZqc,EAAQxtC,SACRwtC,EAAQ57B,oBACR47B,EAAQP,mBACRO,EAAQ8nB,gBACR9nB,EAAQV,sBACRqQ,EAAYqc,aAEhBn8E,EAASo2E,EAAcr3E,QAAQ45E,aAAa51D,GAAW,EAuB9Cq5D,EACTA,CAAC74E,EAAQ84E,EAA0BC,EAAYC,IAC/C57E,MAAOX,EAAUY,KACb07E,GAAcA,IACd,MAAAE,EAAyB57E,IAAWG,OAA5BiK,gBAAQ,IAAAwxE,EAAG,EAACA,EACdttB,EAAwB4rB,YAA4Bl6E,KACtDy7E,GACAr8E,EAASo2E,EAAcr3E,QAAQu3E,qBAEnC,IACI,MAAM6D,SAAmBlrB,YAAW1rD,EAAQ2rD,IACvCrtD,KACL7B,EAASk6E,EAAgBC,EAAWnvE,IACpCuxE,GAAaA,IAxBcE,EAACC,EAAgBvC,KAEhDuC,IADmBvC,EAAUra,YAAYv8D,QAGzCynB,cAAa2M,QAAQ,CACjBF,SAAU0iD,EAAUtiB,eAAewJ,SAASsb,cAC5C7yE,OAAQvJ,OAAOC,SAASsJ,QAEhC,EAiBQ2yE,CAAwBl5E,EAAQ42E,EACpC,CAAE,MAAOh4E,GAEU,OADAA,EAAMyE,UAAYzE,EAAMyE,SAASqT,QAG5C1Z,OAAOC,SAAS4xC,SAEhBzvC,YAAOR,EAEf,GAGFk2E,EAAsB,SAACloB,EAASnlD,GAAqC,IAA3B4xE,EAAev1E,UAAArC,OAAA,QAAAyO,IAAApM,UAAA,GAAAA,UAAA,GAAG,KAC9D,MAAMw1E,IAAkBD,YAAiBf,eACnCA,IACA7wE,GAAYA,IAAamlD,EAAQV,sBAIvC,MAAO,CAEHqtB,qBALwBF,YAAiBE,oBAEnBD,KAAmBhB,EAIzCA,gBAER,EAEakB,EACT,SAACx5E,GAAM,IAAEy5E,EAAQ31E,UAAArC,OAAA,QAAAyO,IAAApM,UAAA,IAAAA,UAAA,GAAQ,MACzB,CAACrH,EAAUY,KACP,MACMq8E,EACFr8E,IAAWkB,MAAMo7E,gBAAgBrsE,SAAStN,GACxC45E,GAAsBF,GAAsBD,EAE5Cld,EAAcl/D,IAAW2sB,MAAMiyC,SAASM,YACxCsd,EAAwBtd,EAAYud,cAC1C,IAAIC,EAAwBF,EAgB5B,OAfIpV,OAAOuV,UAAUD,KACbL,IAAuBE,EACvBG,KACQL,GAAsBE,GAC9BG,KAGRt9E,EACIo2E,EAAcr3E,QAAQ83E,eAAc54E,IAAC,CAAC,EAC/B6hE,GAAW,IACdzK,WAAY8nB,EACZE,cAAeC,MAIhBt9E,EACHqiD,IACI9+C,EACA45E,GA1B2D,IA6BjE57E,MAAM47E,IACJ,QAA2B1pE,IAAvB0pE,EACAK,IAAwBj6E,EAAQ45E,OAC7B,CAEH,MAAMrd,EAAcl/D,IAAW2sB,MAAMiyC,SAASM,YAC9C9/D,EACIo2E,EAAcr3E,QAAQ83E,eAAc54E,IAAC,CAAC,EAC/B6hE,GAAW,IACdzK,WAAY4nB,EACZI,cAAeD,KAG3B,CACA,OAAOD,CAAkB,GAC3B,CACL,EAEQM,EACTA,CAACl6E,EAAQyH,EAAU+Y,EAAQqrC,IAAgBzuD,MAAOX,EAAUY,KACxDZ,EAASo2E,EAAcr3E,QAAQm4E,cAAa,IAC5C,MAAMwG,EAAmBC,YAAuBp6E,EAAvBo6E,CAA+B/8E,KAClDsuD,EAAwB4rB,YAA4Bl6E,KAClDyuD,EAAwBzuD,IAAWV,YAAnCmvD,oBACR,IACI,MAAM5hD,QAAe0hD,YACjB5rD,EACAwgB,EACAqrC,EACAF,EACAG,GAGJ,IAAK5hD,EAWD,OAVAzN,EACIo2E,EAAcr3E,QAAQo4E,oBAAoB,CACtC3nB,cAAc,EACdM,iBAAkB,CACdvY,KAAMxuB,IAAuB60D,YAIzC59E,EAASo2E,EAAcr3E,QAAQw3E,uBAAuBxyD,SACtD/jB,EAASo2E,EAAcr3E,QAAQm4E,cAAa,IAIhD,MACI9mB,EAOA3iD,EAPA2iD,cACAD,EAMA1iD,EANA0iD,QACAX,EAKA/hD,EALA+hD,aACMquB,EAINpwE,EAJAnK,KACAwsD,EAGAriD,EAHAqiD,iBACAO,EAEA5iD,EAFA4iD,eACAd,EACA9hD,EADA8hD,kBAGAC,GACAxvD,EACIo2E,EAAcr3E,QAAQu4E,WAAW,CAC7BnnB,UACA5sD,SACAyH,cAGRhL,EACIo2E,EAAcr3E,QAAQ25E,kBAAkBroB,IAE5CrwD,EACIo2E,EAAcr3E,QAAQw3E,uBAClBpmB,EAAQP,sBAKhB5vD,EACIo2E,EAAcr3E,QAAQw3E,uBAClBpmB,EAAQP,qBAKpB4tB,IACIj6E,EACAusD,EAAiBvY,KACjB6Y,EAAcznC,SACdynC,EAAcxnC,mBACdwnC,EAAcvnC,MACdunC,EAActnC,kBAGlB,MAAMyyD,EAAqB36E,IAAW2sB,MAAMiyC,SAASM,YACrD9/D,EACIo2E,EAAcr3E,QAAQ83E,eAAc54E,IAAC,CAAC,EAC/Bs9E,GACAsC,KAIX79E,EACIo2E,EAAcr3E,QAAQo4E,oBAAoB,CACtC3nB,eACAM,mBACAunB,SAAU,QAIlBr3E,EACIo2E,EAAcr3E,QAAQ85E,qBAAqBtpB,GAEnD,CAAE,MAAOptD,GACLQ,YAAOR,GACPnC,EACIo2E,EAAcr3E,QAAQo4E,oBAAoB,CACtC3nB,cAAc,EACdM,iBAAkB,KAClB3tD,UAGZ,CACAnC,EAASo2E,EAAcr3E,QAAQm4E,cAAa,IAGvCwG,GACD19E,EAAS+8E,EAAex5E,GAAQ,GACpC,EAGKu6E,EAA2BA,IAAO99E,GACpCA,EACHo2E,EAAcr3E,QAAQo4E,oBAAoB,CACtC3nB,cAAc,EACdM,iBAAkB,CACdvY,KAAMxuB,IAAuBg1D,+BAMtCC,EAgBH5H,EAAcr3E,QAfdm6E,EAAiC8E,EAAjC9E,kCACAC,EAAkC6E,EAAlC7E,mCACA9C,EAAqB2H,EAArB3H,sBAEAiB,GAD0B0G,EAA1B/E,2BACU+E,EAAV1G,YACAd,EAAewH,EAAfxH,gBACAE,EAAuBsH,EAAvBtH,wBACAkC,EAAgBoF,EAAhBpF,iBACAE,EAAwBkF,EAAxBlF,yBACAE,EAA8BgF,EAA9BhF,+BACAI,EAAc4E,EAAd5E,eACAC,EAAgB2E,EAAhB3E,iBACAC,EAAY0E,EAAZ1E,aACAC,GAAwByE,EAAxBzE,yBACAR,GAAqCiF,EAArCjF,qC,oCC7oBJ,gGAGO,MAAMprE,EAAa,CACtBC,KAAM,OACNK,MAAO,QACPgwE,kBAAmB,oBACnBC,iBAAkB,oBAGT/wE,EAASlR,YAAU,CAC5BC,YAAa,SACbE,SAAU,CACNuR,EAAWC,KACXD,EAAWM,MACXN,EAAWswE,kBACXtwE,EAAWuwE,kBAEf/hF,UAAW41C,IAEXx1C,UAAWA,KAAA,CAAS,I,s0CChBxB,MAAM4hF,EAAmCC,GACrC1+E,IACKC,IAAI,2BAA6By+E,GACjC78E,MAAMqF,KAAeA,EAAS/E,KAAKw8E,eAEtCC,EAAiCC,GACnC7+E,IACK0Q,KAAK,sCAAuCmuE,GAC5Ch9E,MAAMqF,GAAaA,EAAS/E,OAE/B28E,EAA+B79E,SACjCjB,IACK0Q,KAAK,0CAA4CquE,GACjDl9E,MAAMqF,GAAaA,EAAS/E,OAc/B68E,EAAyBA,CAACC,EAAIC,EAAI/yD,EAAGoD,KACvC,MAAM4vD,E,+VAAmB5gF,CAAA,CACrB6gF,cAAc,EACdC,UAAU,GACP9vD,GAEC6vD,EAAiCD,EAAjCC,aAAiB5rC,EAAWnwC,EAAK87E,EAAmB77E,GAC5D,OACK87E,EAAe,WAAa,aAC7B,IACA/uE,KAAKw0B,IAAIo6C,EAAIC,GACb,KACA7uE,KAAKivE,IAAIL,EAAIC,GACb,KACA/yD,EACAve,IAAGC,UAAU2lC,EAAa,CAAE+rC,gBAAgB,GAAO,EAarDC,EAAuBA,CAACP,EAAIC,EAAI/yD,EAAGoD,IACrC,aACC0vD,GAAMC,GAAM/yD,EAAI6yD,EAAuBC,EAAIC,EAAI/yD,EAAGoD,GAAW,G,oICtDlE,SAASkwD,EAAY3jC,GACjB,IAAI73C,EAAI6jB,SAASg0B,GACjB,OAAI4jC,SAASz7E,GACFA,EAEJ,IACX,CAEA,SAAS07E,EAAkBzuD,GACvB,OAAOA,OACX,CAEA,MAAM0uD,EAAiBnoE,GAAgBnX,IACnCA,EAAS,CACLgC,KAAM,kBACNzD,QAAS4gF,EAAYhoE,IACvB,EAGAooE,EAAiBnoE,GAAgBpX,IACnCA,EAAS,CACLgC,KAAM,kBACNzD,QAAS4gF,EAAY/nE,IACvB,EAGAooE,EAAmBnoE,GAAkBrX,IACvCA,EAAS,CACLgC,KAAM,oBACNzD,QAAS4gF,EAAY9nE,KAEzBrX,EAASiZ,IAAYC,eAAe,EAGlCumE,EAAsBC,GAAqB1/E,IAC7CA,EAAS,CACLgC,KAAM,wBACNzD,QAAS4gF,EAAYO,IACvB,EAGAC,EAA6BC,GAAa5/E,IAC5CA,EAAS,CACLgC,KAAM,+BACNzD,QAASqhF,IAERA,GACD5/E,EAASw/E,EAAgB,MAC7B,EAGEK,EAAgCD,GAAa5/E,IAC/CA,EAAS,CACLgC,KAAM,kCACNzD,QAASqhF,IAERA,GACD5/E,EAASoe,cACb,EAUE0hE,EAAwBC,GAAsB,CAAC//E,EAAUY,KAC3DZ,EAAS,CACLgC,KAAM,2BACN+9E,oBACAvrE,aAAcF,YAAY1T,KAAY4Z,IAAIgM,wBAE1Cu5D,GACA//E,EAASs/E,EAAc,OACvBt/E,EAASy/E,EAAmB,OAC5Bz/E,EAASw/E,EAAgB,OACzBx/E,EAASqW,YAAiB,QAE1BrW,EAASu/E,EAAc,MAC3B,EAGES,EAAUxoE,GAASxX,IACrBA,EAAS,CACLgC,KAAM,UACNzD,QAASiZ,GACX,EAsFS,KACX8nE,gBACAC,gBACAC,kBACAC,qBACAE,4BACAE,+BACAI,eAxHoBC,GAAiBlgF,IACrCA,EAAS,CACLgC,KAAM,mBACNzD,QAAS2hF,GACX,EAqHFJ,uBACA5oE,aA3FAA,CAACC,EAAYC,EAAYC,EAAcE,EAAWC,EAAKhD,IACtDxU,IACG,MACM4nE,EADc,IAAIzhE,gBAAgB3F,SAASsJ,QACTnK,IAAI,aACtCwgF,GAAiBd,EAAkBloE,GACnCipE,GAAiBf,EAAkBjoE,GACnCipE,GAAmBhB,EAAkBhoE,GACrCipE,GACDjB,EAAkB9nE,KAClB8nE,EAAkBzX,GACjB2Y,EAAYJ,IAAkBC,EAC9BI,EAAeL,GAAiBC,EAChCK,GAAaN,GAAiBC,EAEpCpgF,EAASggF,EAAOxoE,IAGZ+oE,GACAvgF,EAASs/E,EAAcnoE,IACvBnX,EAASw/E,EAAgBnoE,IACzBrX,EAASy/E,EAAmB,OAC5Bz/E,EAASu/E,EAAc,OACvBv/E,EAAS2/E,EAA0BU,IACnCrgF,EAAS6/E,EAA6BS,IACtCtgF,EAAS8/E,GAAqB,KACvBU,GACPxgF,EAASs/E,EAAcnoE,IACvBnX,EAASw/E,EAAgBnoE,IACzBrX,EAASy/E,EAAmBroE,IAC5BpX,EAASu/E,EAAc,OACvBv/E,EAAS2/E,EAA0BU,IACnCrgF,EAAS6/E,EAA6BS,IACtCtgF,EAAS8/E,GAAqB,KACvBW,GACPzgF,EAASs/E,EAAc,OACvBt/E,EAASw/E,EAAgB,OACzBx/E,EAASy/E,EAAmB,OAC5Bz/E,EAASu/E,EAAcnoE,IACvBpX,EAAS2/E,GAA0B,IACnC3/E,EAAS6/E,GAA6B,IACtC7/E,EAAS8/E,GAAqB,MAE9B9/E,EAASs/E,EAAc,OACvBt/E,EAASw/E,EAAgB,OACzBx/E,EAASy/E,EAAmB,OAC5Bz/E,EAASu/E,EAAc,OACvBv/E,EAAS2/E,GAA0B,IACnC3/E,EAAS6/E,EAA6BS,IACtCtgF,EAAS8/E,GAAqB,KAGlC9/E,EAAS,CACLgC,KAAM,kDACNzD,QAASiW,GAAgB6rE,GAC3B,EAsCNK,4BA7BiCzqE,GAAe,CAACjW,EAAUY,KAC3D,MAAM+/E,EAAoBnhF,IAAsBqR,SAASoF,GACnD2qE,EAAmBjrE,YACrB,yCADqBA,CAEvB/U,KACI4lB,EAAwBlS,YAAY1T,KAAY4Z,IACjDgM,sBAIDo6D,IAAqBp6D,IACrBxmB,EAAS8/E,EAAqBa,IAC9B3gF,EAAS,CACLgC,KAAM,0BACNzD,QAASoiF,IAEjB,EAcAX,SACAhiF,MArCUA,IAAOgC,IACjBA,EAAS,CACLgC,KAAM,wBACR,E,2oCC7JN,MAAM6+E,EAAkBA,CAACr8E,EAASs8E,EAA8Bx/B,IACvD98C,GAAYs8E,GAIbx/B,EAAWpuC,MACNpG,GAAaA,EAASyqC,OAASupC,KAJ7B,KASTC,EAAqBljF,YAAY,CACnCC,KAAM,gBACNP,aAAc,CAAC,EACfQ,SAAU,CACN0N,WAAYA,CAAC2gB,EAAM9tB,KAAkB,IAAdC,EAAOD,EAAPC,QACnB,MAAAyiF,EAAwDziF,EAAhD+iD,kBAAU,IAAA0/B,EAAG,GAAEA,EAAEx8E,EAA+BjG,EAA/BiG,QAASi9C,EAAsBljD,EAAtBkjD,kBAElC,MAAO,CACHj9C,UACA88C,aACAG,kBAAmBo/B,EACfr8E,EACAi9C,EACAH,GAEP,EAEL2/B,qBAAsBA,CAAC9iF,EAAKO,KAAkB,IAAdH,EAAOG,EAAPH,QAC5B,MAAQiG,EAAwBrG,EAAxBqG,QAAS88C,EAAenjD,EAAfmjD,WAEjB,OAAArjD,IAAA,GACOE,GAAK,IACRsjD,kBAAmBo/B,EACfr8E,EACAjG,EAAQgjD,aACRD,IACH,KAMV4/B,EAA6CH,EAAmBhiF,QAAxD0M,EAAUy1E,EAAVz1E,WAAYw1E,EAAoBC,EAApBD,qBACZF,MAA0B,O,scC9CzC,SAAS95E,IAAiS,OAApRA,EAAW5K,OAAO6K,OAAS7K,OAAO6K,OAAOC,OAAS,SAAUC,GAAU,IAAK,IAAIzD,EAAI,EAAGA,EAAI0D,UAAUrC,OAAQrB,IAAK,CAAE,IAAI2D,EAASD,UAAU1D,GAAI,IAAK,IAAIwB,KAAOmC,EAAcjL,OAAOkL,UAAUC,eAAeC,KAAKH,EAAQnC,KAAQiC,EAAOjC,GAAOmC,EAAOnC,GAAU,CAAE,OAAOiC,CAAQ,EAAUH,EAASS,MAAMC,KAAMN,UAAY,CAElU/I,UACdsJ,OADc,IAEXC,EAAK9E,EAAAzE,EAAA0E,GAAA,OACS8E,IAAMC,cAAc,MAAOd,EAAS,CACrDe,MAAO,6BACPC,QAAS,aACRJ,GAAqBC,IAAMC,cAAc,OAAQ,CAClDG,EAAG,wEACYJ,IAAMC,cAAc,OAAQ,CAC3CG,EAAG,0CACF,C,0GCXY,EAAmF,iCAAnF,EAA8H,iB,2iCCEtI,MAAM0b,EAAuBtlB,IAA2B,IAAxBulB,EAAOvlB,EAAPulB,QAAShb,EAAQvK,EAARuK,SAC5C,MAAmDs4E,EAAAlzB,EAArBnmD,YAAe,GAAM,GAA5Cs5E,EAAOD,EAAA,GAAEE,EAAUF,EAAA,GACpBG,EAAcx5E,UAAa,GAUjC,OARAA,aAAgB,KACRw5E,EAAYC,QACZD,EAAYC,SAAU,EAG1BF,GAAW,EAAK,GACjB,CAACx9D,IAGAnb,cAAA,QACIL,UAAY,kBAAiBT,KACzBw5E,EAAUx5E,EAAiB,KAE/B45E,eAAgBA,IAAMH,GAAW,GAAOx4E,SACvCA,GACE,C,oCCtBA,KACXipB,eAAgB,mBAChBl2B,WAAY,sB,otBCAhB,MAAM+8C,G,UACDvyC,GAAY7F,OAAOkhF,oB,+VAAmBxjF,CAAA,GAC5BsC,OAAOkhF,qBACZ,CAAC,EAEX9oC,EAAO+oC,aAAe,IACtB/oC,EAAOgpC,qBAAuB,OAEfhpC,K,oCCVf,wZAAO,MAAMipC,EAAS,SACTrpC,EAAc,aACdspC,EAAgB,cAChBC,EAAqB,oBACrBtpC,EAAkB,iBAClBupC,EAAiB,iBACjB3pC,EAAY,WACZE,EAAoB,mBACpB0pC,EAAiB,gBACjB3pC,EAAiB,gBACjB4pC,EAAc,aACdC,EAAuB,qB,oCCXpC,wHAWO,MAAMC,EAA6B,WAAyB,IAAxBnhF,EAAcqG,UAAArC,OAAA,QAAAyO,IAAApM,UAAA,GAAAA,UAAA,GAAG,CAAC,EACzD,OACKrG,EAAeohF,eAAiB,EAAI,IACpCphF,EAAeqhF,aAAe,EAAI,IAClCrhF,EAAeshF,8BAAgC,EAAI,IACnDthF,EAAeuhF,qCAAuC,EAAI,IAC1DvhF,EAAek9E,iBAAmB,EAAI,IACtCl9E,EAAewhF,gCAAkC,EAAI,IACrDxhF,EAAeyhF,wCAA0C,EAAI,EAEtE,EAEaC,EAAqBA,KAC9B,MAAMC,EAAsBC,wBAAc,CACtCC,SAAUC,IAAiBC,GAAGx+C,MAGlC,OADmBkf,aAAatlD,GAAUA,EAAM8E,GAAGsC,eAC7By9E,IAAYC,YAAcN,CAAmB,C,oCC5BvE,kCAAO,MAAMj3E,EAAc,CACvBw3E,yCACI,2CACJC,uBAAwB,yBACxBC,oBAAqB,sBACrBC,2BAA4B,6BAC5BC,qBAAsB,uBACtBC,+BAAgC,iCAChCC,sBAAuB,wBACvBC,gCAAiC,kCACjCC,wCACI,0CACJC,uCACI,yC,mYCbD,MAAMh4E,EAAkBrN,IAMzB,IALFqM,EAAqBrM,EAArBqM,sBACAi5E,EAA0BtlF,EAA1BslF,2BACAC,EAA8BvlF,EAA9BulF,+BACA3kC,EAA0B5gD,EAA1B4gD,2BACA4kC,EAAuBxlF,EAAvBwlF,wBAEA,MAAMhkC,EACF8jC,GAA8BC,EAMlC,MAAO,CACHtkC,2BAA4B,GAC5BE,8BAA+B,GAC/BE,qCAAqC,EACrCD,qCAAqC,EACrCT,gBAAiB,CACbD,gBAXyBr0C,GAE3Bi5E,KACE1kC,GACFA,GASM4kC,EAAwBl3C,eAEhCkT,wBACAZ,2BACK0kC,GAA8B1kC,GAA+B,KACrE,E,wCCIE,MAAM6kC,EAAwB/kC,GAAqBh/C,IACtDA,EAAS++C,YAAmB,CAAEC,oBAAmB,EAGxCjyC,EACRvB,GAAiBxL,IAEc,OAAxBwL,EAAYw4E,SACZ/+E,UAAWg/E,UAAU7kC,OAErBn6C,UAAW2jC,YAAYwW,KACvBp/C,EAASq/C,eACb,EAGK6kC,EACTA,IAAMvjF,MAAOX,EAAUY,KACnB,GACIujF,YAA0CvjF,MAC1CwjF,YAA0CxjF,KAE1C,OAGJZ,EAAS4/C,eACT,MAAQJ,SCjDZhzC,IACK7M,IAAIm3C,IAAUutC,8BACd9iF,KAAKC,eACLD,MAAKjD,IAAe,CACjBkhD,kBADSlhD,EAAJuD,KACmByiF,mBACnB5gF,KAAK6gF,IAAO,CACTvlC,gBAAiBulC,EAAQvlC,gBAAgBvvB,cACzC+0D,eAAgBD,EAAQC,mBAE3Bl0E,OAAOm0E,SAEfhjF,MAAMC,gBDsCC89C,kBACRx/C,EAASs/C,YAA8B,CAAEE,sBAAqB,EAGzDklC,EACTpmF,IAAA,IAAG0gD,EAAe1gD,EAAf0gD,gBAAiBuC,EAAYjjD,EAAZijD,aAAcp2B,EAAc7sB,EAAd6sB,eAAc,MAChD,CAACnrB,EAAUY,KACP,MAAM8U,EAAmBivE,YACrB3lC,EACArpC,YAAuB,0BAAvBA,CAAkD/U,MAGtD24B,IAAUC,WAAW,CACjB9R,SAAU,iBACVjI,OAAQ,4BACR3M,MAAQ,6BAA4BksC,MAGxCh/C,EAASkkF,KACTlkF,EAAS+jF,EAAqB/kC,IAC9Bh/C,EAAS4kF,YAA0BrjC,IACnCvhD,EAASw3C,YAAqB9hC,EAAkByV,GAAgB,CACnE,EAEC05D,EAA8B1mF,GAChC2mF,YAA2BhK,YAA4B38E,IAE9C4mF,EAA0B16E,GAAa,CAACrK,EAAUY,KAC3D,MAAM+J,EAAwBN,EAASM,sBACjCpN,EAAeoO,EAAgB,CACjChB,wBACAi5E,2BAA4B9S,IAAaI,sBACzC2S,+BAAgC5+E,UAAWg/E,UACvClkC,KAEJb,2BAA4Bj6C,UAAWmF,WAAWg1C,KAClD0kC,wBAAyBe,EAA2BjkF,OAExDZ,EAASyL,YAAWlO,GAAc,C,0FE9F/B,MAAMwuB,EAAcnN,GAAU,GAAEA,EAAK,GAAGguB,gBAAgBhuB,EAAKlP,MAAM,I,6xCCInE,MAAMnS,EAAe,CACxBynF,OAAQ,CACJljF,MAAO,GACPmY,OAAQ,eAEZm1B,SAAU,CACNttC,MAAO,GACPmY,OAAQ,eAEZgrE,eAAgB,IAYdC,EAAuBrnF,YAAY,CACrCC,KAAM,kBACNP,eACAQ,SAAU,CACN0N,WAAYA,CAAC2gB,EAAM9tB,KAAWA,EAAPC,QACnB,MAdYoN,MACpB,MAAMs5E,EAAiBE,eAAmC,GAE1D,OAAAlnF,IAAA,GACOV,GAAY,IACf0nF,kBAAc,EASHt5E,EAAwB,EAEnCy5E,yBAA0BA,CAACjnF,EAAKO,KAAkB,IAAdH,EAAOG,EAAPH,QAChCJ,EAAM8mF,eAAiB1mF,CAAO,EAElC8mF,wBAAyBA,CAAClnF,EAAKmiB,KAAkB,IAAd/hB,EAAO+hB,EAAP/hB,QAC/BJ,EAAMixC,SAAW7wC,CAAO,EAE5B+mF,8BAA+BA,CAACnnF,EAAKqiB,KAAkB,IAAdjiB,EAAOiiB,EAAPjiB,QACrCJ,EAAMixC,SAASn1B,OAAS1b,CAAO,EAEnCgnF,kBAAmBA,CAACpnF,EAAKwiB,KAAkB,IAAdpiB,EAAOoiB,EAAPpiB,QACzB,MAAMinF,EAAoBrnF,EAAM8mF,eAAeQ,WAC1C37E,GAAWA,EAAO8U,OAASrgB,EAAQqgB,OAGpC4mE,GAAqB,GACrBrnF,EAAM8mF,eAAeO,GAAmBh0E,MAAQjT,EAAQiT,MACxDrT,EAAM8mF,eAAeO,GAAmBtyC,YACpC30C,EAAQ20C,YAGZ/0C,EAAM8mF,eAAeS,QACjBvnF,EAAM8mF,eAAevhD,OAAO8hD,EAAmB,GAAG,KAGtDrnF,EAAM8mF,eAAeS,QAAQnnF,EACjC,EAEJonF,mBAAoBA,CAACxnF,EAAK2iB,KAAkB,IAAdviB,EAAOuiB,EAAPviB,QAC1BJ,EAAM8mF,eAAiB9mF,EAAM8mF,eAAe30E,QACvCxG,GAAWA,EAAO8U,OAASrgB,GAC/B,KAKNqnF,EAOHV,EAAqBnmF,QANrB0M,EAAUm6E,EAAVn6E,WAEA45E,GADwBO,EAAxBR,yBACuBQ,EAAvBP,yBACAC,EAA6BM,EAA7BN,8BACAC,EAAiBK,EAAjBL,kBACAI,EAAkBC,EAAlBD,mBAGS11E,EAAUi1E,EAAqBj1E,O,kJCnB7B,KACX+F,iBAzBqBA,CAACC,EAAYC,IAAiB,CAAClW,EAAUY,KAC9D,IAAI8O,EAAQ4E,YAAY1T,KACxBZ,EAAS,CACLgC,KAAM,qBACNiU,WAAYA,EACZC,aAAcA,IAElBlW,EAASgV,IAAoBw1B,wBAC7BxqC,EA1BCiW,IAAetV,MAAOX,EAAUY,KAC7B,IAAKqV,EACD,OAGJ,MAAQP,EAAqB20B,YAAwBzpC,KAA7C8U,iBACA7T,SAAeP,IAAa3B,IAC/B,iCAAgCsW,YAAqBP,MADlD7T,KAGR7B,EAASkU,IAAWuS,uBAAuB5kB,GAAM,EAiB5CgkF,CAA2B5vE,IACpCjW,EAASoqC,YAAiBn0B,IAC1BjW,EACImrC,YACIl1B,EACAvG,EAAM7L,iBAAiBA,mBAG/B7D,EAASgU,IAAgB29C,2BAA2B17C,KAChDC,aAAY,EAAZA,EAAclR,QAAS,GACvBhF,EACIiX,IAAaypE,4BAA4BxqE,EAAa,GAAGD,YAEjE,EAKAjY,MAhCUA,IAAOgC,IACjBA,EAAS,CACLgC,KAAM,kBACR,E,oCC9BN,kCAEO,MAAM8jF,EAAgCC,IACzC,MAAMC,EAAc,CAChBC,GAAI,cACJC,GAAI,cACJC,GAAI,cACJC,GAAI,cACJC,GAAI,cACJC,GAAI,eACNP,EAAat2D,eACf,IAAKu2D,EACD,KAAO,YAAWD,mCACtB,OAAOC,CAAW,C,ocCbtB,SAAS/+E,IAAiS,OAApRA,EAAW5K,OAAO6K,OAAS7K,OAAO6K,OAAOC,OAAS,SAAUC,GAAU,IAAK,IAAIzD,EAAI,EAAGA,EAAI0D,UAAUrC,OAAQrB,IAAK,CAAE,IAAI2D,EAASD,UAAU1D,GAAI,IAAK,IAAIwB,KAAOmC,EAAcjL,OAAOkL,UAAUC,eAAeC,KAAKH,EAAQnC,KAAQiC,EAAOjC,GAAOmC,EAAOnC,GAAU,CAAE,OAAOiC,CAAQ,EAAUH,EAASS,MAAMC,KAAMN,UAAY,CAElU/I,UACdsJ,OADc,IAEXC,EAAK9E,EAAAzE,EAAA0E,GAAA,OACS8E,IAAMC,cAAc,MAAOd,EAAS,CACrDgB,QAAS,cACTD,MAAO,8BACNH,GAAqBC,IAAMC,cAAc,OAAQ,KAAmBD,IAAMC,cAAc,iBAAkB,CAC3Gw+E,GAAI,SACJC,GAAI,SACJC,GAAI,SACJC,GAAI,QACJ74E,GAAI,iBACU/F,IAAMC,cAAc,OAAQ,CAC1C4+E,UAAW,UACXC,OAAQ,OACO9+E,IAAMC,cAAc,OAAQ,CAC3C4+E,UAAW,UACXC,OAAQ,UACQ9+E,IAAMC,cAAc,iBAAkB,CACtDw+E,GAAI,SACJC,GAAI,KACJC,GAAI,QACJC,GAAI,SACJ74E,GAAI,iBACU/F,IAAMC,cAAc,OAAQ,CAC1C4+E,UAAW,UACXC,OAAQ,OACO9+E,IAAMC,cAAc,OAAQ,CAC3C4+E,UAAW,UACXC,OAAQ,WACO9+E,IAAMC,cAAc,OAAQ,CAC3C4+E,UAAW,UACXC,OAAQ,WACO9+E,IAAMC,cAAc,OAAQ,CAC3C4+E,UAAW,UACXC,OAAQ,UACQ9+E,IAAMC,cAAc,iBAAkB,CACtDw+E,GAAI,SACJC,GAAI,SACJC,GAAI,QACJC,GAAI,SACJ74E,GAAI,iBACU/F,IAAMC,cAAc,OAAQ,CAC1C4+E,UAAW,UACXC,OAAQ,OACO9+E,IAAMC,cAAc,OAAQ,CAC3C4+E,UAAW,UACXC,OAAQ,WACO9+E,IAAMC,cAAc,OAAQ,CAC3C4+E,UAAW,UACXC,OAAQ,WACO9+E,IAAMC,cAAc,OAAQ,CAC3C4+E,UAAW,UACXC,OAAQ,UACQ9+E,IAAMC,cAAc,iBAAkB,CACtDw+E,GAAI,SACJC,GAAI,OACJC,GAAI,SACJC,GAAI,QACJ74E,GAAI,iBACU/F,IAAMC,cAAc,OAAQ,CAC1C4+E,UAAW,UACXC,OAAQ,OACO9+E,IAAMC,cAAc,OAAQ,CAC3C4+E,UAAW,UACXC,OAAQ,WACO9+E,IAAMC,cAAc,OAAQ,CAC3C4+E,UAAW,UACXC,OAAQ,WACO9+E,IAAMC,cAAc,OAAQ,CAC3C4+E,UAAW,UACXC,OAAQ,WACS9+E,IAAMC,cAAc,IAAK,CAC1CI,KAAM,OACN2W,SAAU,WACIhX,IAAMC,cAAc,OAAQ,CAC1CG,EAAG,4kJACHC,KAAM,UACN2W,SAAU,YACKhX,IAAMC,cAAc,OAAQ,CAC3CG,EAAG,yIACHC,KAAM,sBACN0+E,UAAW,wBACI/+E,IAAMC,cAAc,OAAQ,CAC3CG,EAAG,4JACHC,KAAM,sBACN0+E,UAAW,wBACI/+E,IAAMC,cAAc,OAAQ,CAC3CG,EAAG,iJACHC,KAAM,wBACSL,IAAMC,cAAc,OAAQ,CAC3CG,EAAG,yJACHC,KAAM,yBACJ,C,oCC/FJ,0EAAMopE,EAAe,CACjBuV,oBAAqB,qBACrBC,YAAa,cACbC,iBAAkB,sBAClB3uC,eAAgB,iBAChB4uC,cAAe,gBACfC,kBAAmB,oBACnBC,sBAAuB,qBACvBC,yBAA0B,wBAC1BC,8BAA+B,4BAC/BC,+BAAgC,4BAChCC,iCAAkC,mCAClCC,qCACI,uCACJC,yDACI,qDACJC,8BAA+B,mCAC/BC,yBAA0B,wBAG1BC,uBAAwB,wBACxBC,sBAAuB,uBAEvBC,cAAe,eAEfC,aAAc,wBACdC,oCAAqC,4BAGnCC,EAAiB,CACnBC,yBAA0B,gBAC1BC,sCAAuC,gBACvCC,oCAAqC,gB,sCChCzC,wHAQA,GARA,UAQIhiF,EAEA,MAAM,IAAI0J,MACN,2GAKR,IAAIu4E,EACAC,EACA/qF,EAAe,CAAC,EAEMgrF,MACtB,IACKl+E,IAAS6wC,mBACT7wC,IAAS6wC,iBAAiBstC,oBAE3B,OAAO,KAGXH,EACIh+E,IAAS6wC,iBAAiBstC,oBAC9BF,EAAqBD,EAA6Bn1E,MAC7Cu1E,GAhBkB,OAgBZA,EAAE7jF,QAGbrH,EAAe,CACX8qF,6BAA8BA,EAC9BK,oBAAqBJ,EAAmB1jF,MACxC+jF,wBAAyBL,EAAmB1pE,KAC5CgqE,6CAA6C,EAC7CC,0CACIx+E,KACAA,IAASlK,iBACTkK,IAASlK,gBACL,8CAER2oF,oBAAqBj1E,IAASmM,QAAQ8oE,oBACzC,EAGLP,GACA,MAAMQ,EAAmBlrF,YAAY,CACjCC,KAAM,eACNP,aAAcA,EACdQ,SAAU,CACN4W,sBAAuBA,CAACxW,EAAOshB,KAC3B,MAGAnhB,EAHe+pF,EAA6Bn1E,MACvCu1E,GAAMA,EAAE7jF,QAAU6a,EAAOlhB,QAAQqW,sBAEJ0zE,EAA1B1jF,EAAKtG,EAALsG,MAAOga,EAAItgB,EAAJsgB,KAIf,OAHAzgB,EAAMuqF,oBAAsB9jF,EAC5BzG,EAAMwqF,wBAA0B/pE,EAEzBzgB,CAAK,EAEhB0W,gCAAiCA,CAAC1W,EAAOshB,KACrCthB,EAAMkqF,6BACF5oE,EAAOlhB,QAAQyqF,iBACnB7qF,EAAMyqF,6CAA8C,EAC7CzqF,MAKN0W,EAAkCA,IAAM,CAAC7U,EAAUY,KAC5D,MAAMqoF,EAAa30E,YAAY1T,KAAYsP,MACrCg5E,EAAc50E,YAAY1T,KAAYuoF,YACtCC,EAAUF,EAAYb,6BACtBgB,EAAiBH,EAAYR,oBAW7Bp4E,EADuC,uBAA3B24E,EAAW70E,aATb,CACZk1E,OAASpmB,GACL,CAAC,SAAU,SAAU,KAAM,iBAAiBt3C,QAAQs3C,EAAOt+D,QAC1D,EACL2kF,OAASrmB,GACL,CAAC,SAAU,iBAAiBt3C,QAAQs3C,EAAOt+D,QAAU,EACzDixD,GAAKqN,GAAW,CAAC,KAAM,iBAAiBt3C,QAAQs3C,EAAOt+D,QAAU,EACjE4kF,cAAgBtmB,GAAW,CAAC,iBAAiBt3C,QAAQs3C,EAAOt+D,QAAU,GAGrCykF,IAAe,MAAY,GAC1DL,EAAmBI,EAAQ94E,OAAOA,GACxCtQ,EACI+oF,EAAiBhqF,QAAQ8V,gCAAgC,CACrDm0E,qBAEP,EAGUr0E,EAA0Bo0E,EAAiBhqF,QAA3C4V,sBAEAo0E,MAAwB,O,+/CC9FvC,MAAMU,EAAoBz3C,IACtB,GAAoB,iBAATA,EACP,MAAO,CAAEj1C,IAAKi1C,GAGlB,MAAQ/0C,EAAoB+0C,EAApB/0C,KAAS07C,EAAM51C,EAAKivC,EAAIhvC,GAEhC,OAAA/E,IAAA,GACO06C,GAAM,IACT92C,KAAM5E,UAAQ07C,EAAO92C,MAAI,EA+C1B,SAAS6nF,EAAmBprF,GAMjC,IALE22D,EAAM32D,EAAN22D,OAMA,OAAOt0D,MAAOqxC,EAAMzT,KAChB,IACI,MAAMorD,EAAgBF,EAAiBz3C,GAOvC,MAAO,CAAEnwC,YALYozD,EAAO3uD,QAAOrI,IAAC,CAAC,EAC9B0rF,GAAa,IAChBC,OAAQrrD,EAAIqrD,WAGM/nF,KAC1B,CAAE,MAAOM,GAC0B,IAAA0nF,EAAAC,EAA/B,OAAIC,IAAMC,aAAa7nF,GACZ,CACHA,MAAO,CACH8X,OAAsB,QAAhB4vE,EAAE1nF,EAAMyE,gBAAQ,IAAAijF,OAAA,EAAdA,EAAgB5vE,OACxBpY,MAAoB,QAAdioF,EAAA3nF,EAAMyE,gBAAQ,IAAAkjF,OAAA,EAAdA,EAAgBjoF,OAAQM,EAAME,UAKzC,CACHF,QAER,EAER,C,oCC7FA,kCAAO,MAAMq4B,EAAwBA,KACjC,MAAMyvD,EAAmB3+D,SAAS4+D,iBAAiB,yBAC/CD,EAAiBjlF,OAAS,GAC1BzE,OAAO4pF,SAAS,EAAGF,EAAiB,GAAGG,WAAa,EACxD,C,gLCJG,MAAMC,EAA6BvoF,GAAWiM,GAC1C1R,OAAOC,KAAKwF,GAAOwO,QACrBnL,GAAQrD,EAAMqD,GAAKuvB,YAAY3mB,kBAAoBA,IAI/Cu8E,EAA2BxoF,GAAWs7B,GACxC/gC,OAAOC,KAAKwF,GAAOwO,QACrBnL,GAAQrD,EAAMqD,GAAKuvB,YAAY0I,gBAAkBA,IAI7CmtD,EAAoBzoF,GAAWyB,GACjClH,OAAOC,KAAKwF,GAAOwO,QAAQnL,GAAQrD,EAAMqD,GAAK5B,SAAWA,I,uhCCFpE,GAAI6C,IAEA,MAAM,IAAI0J,MACN,2GAIR,MAUM06E,EAAuBA,CAAClnF,EAAM4zB,EAAcY,KAC9C,QAAqBrkB,IAAjByjB,EACA,IACI,KAAM,qDAAuD5zB,CACjE,CAAE,MAAO8B,GACLzC,YAAOyC,EACX,CAhBqBimD,MAqBzB,OAHA/nD,EAAKoxB,YAAY22B,YAAYltD,OAlBJktD,EAmBrB/nD,EAAKoxB,YAAY22B,aAlBLnB,SAAWmB,EAAYC,aAC5B,OAEPD,EAAYnB,QACL,UAEJmB,EAAYz2B,KAAO,OAAS,UAc5B61D,IAAuBC,YAC1BpnF,EACA4zB,EACAY,EACH,EAGC6yD,EAA+BA,CAACrnF,EAAM4zB,KACxC,QAAqBzjB,IAAjByjB,EACA,IACI,KACI,6DACA5zB,CAER,CAAE,MAAO8B,GACLzC,YAAOyC,EACX,CAEJ,OAAOqlF,IAAuBG,cAActnF,EAAM4zB,EAAa,EAG7D2zD,EACFA,CAACC,EAAM5zD,EAAcY,IAA4Bh2B,GAAWxF,GACjDA,EAAKoH,KAAKyB,IACb,MAAM7B,EAAOxB,EAAMqD,GACnB,IAAK7B,EACD,IACI,KAAO,0CAAyC6B,QAAUg0B,KAAK5rB,UAC3DzL,IAER,CAAE,MAAOsD,GACLzC,YAAOyC,EACX,CAIJ,OADA9B,EAAKoxB,YAAY22B,YAAYz2B,KAAOk2D,EAC7BN,EACHlnF,EACA4zB,EACAY,EACH,IAIPizD,EAAkBA,CAACD,EAAM5zD,IAAkBp1B,GAAWqD,IACxD,MAAM7B,EAAOxB,EAAMqD,GACnB,IAAK7B,EACD,IACI,KAAO,6CAA4C6B,QAAUg0B,KAAK5rB,UAC9DzL,IAER,CAAE,MAAOsD,GACLzC,YAAOyC,EACX,CAIJ,OADA9B,EAAKoxB,YAAY22B,YAAYnB,QAAU4gC,EAChCN,EAAqBlnF,EAAM4zB,EAAa,EAG7C8zD,EAA4BA,CAACF,EAAM5zD,IAAkBp1B,GAAWqD,IAClE,MAAM7B,EAAOxB,EAAMqD,GACnB,IAAK7B,EAAM,CACP,IACI,KAAO,uDAAsD6B,QAAUg0B,KAAK5rB,UACxEzL,IAER,CAAE,MAAO6jD,GACLhjD,YAAOgjD,EACX,CACA,MAAO,EACX,CAGA,OADAriD,EAAKoxB,YAAY22B,YAAYqoB,OAASoX,EAC/BN,EAAqBlnF,EAAM4zB,EAAa,EAG7C+zD,EACFA,CAACH,EAAM5zD,IAAiB,CAACp1B,EAAOkJ,IAAc7F,IAAQ,IAAA+lF,EAClD,MAAM5nF,EAAOxB,EAAMqD,GACnB,IAAK7B,EAAM,CACP,IACI,KAAO,sDAAqD6B,QAAUg0B,KAAK5rB,UACvEzL,IAER,CAAE,MAAO6jD,GACLhjD,YAAOgjD,EACX,CACA,MAAO,EACX,CAKA,OAHwB,QAApBulC,EAAC5nF,EAAK6nF,sBAAc,IAAAD,GAAnBA,EAAqBr6E,SAAS7F,KAC/B1H,EAAK8nF,gBAAiB,GAEnBT,EAA6BrnF,EAAM4zB,EAAuB,EAGnEm0D,EAAcA,CAACP,EAAM5zD,IAAkBp1B,GAAWqD,IACpD,MAAM7B,EAAOxB,EAAMqD,GACnB,IAAK7B,EAAM,CACP,IACI,KAAO,yCAAwC6B,QAAUg0B,KAAK5rB,UAC1DzL,IAER,CAAE,MAAO6jD,GACLhjD,YAAOgjD,EACX,CACA,MAAO,EACX,CAGA,OADAriD,EAAKoxB,YAAY22B,YAAYC,aAAew/B,EACrCN,EAAqBlnF,EAAM4zB,EAAa,EAG7Co0D,EAAyBA,CAACR,EAAM5zD,IAAkBp1B,GAAWqD,IAC/D,MAAM7B,EAAOxB,EAAMqD,GACnB,IAAK7B,EAAM,CACP,IACI,KAAO,oDAAmD6B,QAAUg0B,KAAK5rB,UACrEzL,IAER,CAAE,MAAO6jD,GACLhjD,YAAOgjD,EACX,CACA,MAAO,EACX,CAGA,OADAriD,EAAKoxB,YAAY22B,YAAYpB,eAAiB6gC,EACvCN,EAAqBlnF,EAAM4zB,EAAa,EAqCtCq0D,EAA4BA,CAACptF,EAAOshB,KAC7C,MAAM+rE,EAAUvtF,EAAA,GAAQE,EAAMi9B,WACxBqwD,EAAqBZ,GACvB,EACAprE,EAAOlhB,QAAQ24B,aACfzX,EAAOlhB,QAAQu5B,uBAHQ+yD,CAIzBW,GACIE,EACFrB,EAA0BmB,GAW9B,OAVsB/rE,EAAOlhB,QAAQw5B,IAChCr0B,IAAIgoF,GACJhoF,IAAI+nF,GAEK1pF,SAAS4pF,IACnBA,EAAa5pF,SAAS87E,IAClB2N,EAAW3N,EAAY14E,KAAO04E,CAAW,GAC3C,IAGC2N,CAAU,EAGRI,EAA8BA,CAACztF,EAAOshB,KAC/C,MAAM+rE,EAAUvtF,EAAA,GAAQE,EAAMi9B,WACxBqwD,EAAqBZ,GACvB,EACAprE,EAAOlhB,QAAQ24B,aACfzX,EAAOlhB,QAAQu5B,uBAHQ+yD,CAIzBW,GACIE,EACFrB,EAA0BmB,GAW9B,OAVsB/rE,EAAOlhB,QAAQw5B,IAChCr0B,IAAIgoF,GACJhoF,IAAI+nF,GAEK1pF,SAAS4pF,IACnBA,EAAa5pF,SAAS87E,IAClB2N,EAAW3N,EAAY14E,KAAO04E,CAAW,GAC3C,IAGC2N,CAAU,EAGRK,EAAuBA,CAAC1tF,EAAOshB,KACxC,MAAM+rE,EAAUvtF,EAAA,GAAQE,EAAMi9B,WACxBqwD,EAAqBV,GACvB,EACAtrE,EAAOlhB,QAAQ24B,aAFQ6zD,CAGzBS,GACIM,EAAiCxB,EAAwBkB,GAS/D,OARqB/rE,EAAOlhB,QAAQw5B,IAC/Br0B,IAAIooF,GACJpoF,IAAI+nF,GAEI1pF,SAAS87E,IAClB2N,EAAW3N,EAAY14E,KAAO04E,CAAW,IAGtC2N,CAAU,EAGRO,EAAyBA,CAAC5tF,EAAOshB,KAC1C,MAAM+rE,EAAUvtF,EAAA,GAAQE,EAAMi9B,WACxBqwD,EAAqBV,GACvB,EACAtrE,EAAOlhB,QAAQ24B,aAFQ6zD,CAGzBS,GACIM,EAAiCxB,EAAwBkB,GAS/D,OARqB/rE,EAAOlhB,QAAQw5B,IAC/Br0B,IAAIooF,GACJpoF,IAAI+nF,GAEI1pF,SAAS87E,IAClB2N,EAAW3N,EAAY14E,KAAO04E,CAAW,IAGtC2N,CAAU,EAGRQ,EAAyCA,CAAC7tF,EAAOshB,KAC1D,MAAMksE,EAAY1tF,EAAA,GAAQE,EAAMi9B,WAE1BqwD,EAAqBT,GACvB,EACAvrE,EAAOlhB,QAAQ24B,aAFQ8zD,CAGzBW,GACID,EACFrB,EAA0BsB,GAI9B,OAHAlsE,EAAOlhB,QAAQw5B,IACVmvC,QAAQwkB,GACRhoF,IAAI+nF,GACFE,CAAY,EAGVM,EAAwCA,CAAC9tF,EAAOshB,KACzD,MAAMksE,EAAY1tF,EAAA,GAAQE,EAAMi9B,WAE1BqwD,EAAqBT,GACvB,EACAvrE,EAAOlhB,QAAQ24B,aAFQ8zD,CAGzBW,GACID,EACFrB,EAA0BsB,GAI9B,OAHAlsE,EAAOlhB,QAAQw5B,IACVmvC,QAAQwkB,GACRhoF,IAAI+nF,GACFE,CAAY,EAGVO,EAA0BA,CAAC/tF,EAAOshB,KAC3C,MAAMksE,EAAY1tF,EAAA,GAAQE,EAAMi9B,WAC1BqwD,EAAqBR,EACvB,EACAxrE,EAAOlhB,QAAQ24B,aAFQ+zD,CAGzBU,EAAcxtF,EAAMguF,iBAChBC,EAA0B7B,EAAiBoB,GAEjD,OADAlsE,EAAOlhB,QAAQw5B,IAAIr0B,IAAI0oF,GAAyB1oF,IAAI+nF,GAC7CE,CAAY,EAGVU,EAAyBA,CAACluF,EAAOshB,KAC1C,MAAMksE,EAAY1tF,EAAA,GAAQE,EAAMi9B,WAC1BqwD,EAAqBR,EACvB,EACAxrE,EAAOlhB,QAAQ24B,aAFQ+zD,CAGzBU,GACIS,EAA0B7B,EAAiBoB,GAEjD,OADAlsE,EAAOlhB,QAAQw5B,IAAIr0B,IAAI0oF,GAAyB1oF,IAAI+nF,GAC7CE,CAAY,EAGVxuD,EAAuBA,CAACh/B,EAAOshB,KACxC,MAAM+rE,EAAUvtF,EAAA,GAAQE,EAAMi9B,WACxBqwD,EAAqBJ,GACvB,EACA5rE,EAAOlhB,QAAQ24B,aAFQm0D,CAGzBG,GACIM,EAAiCxB,EAAwBkB,GAS/D,MARqB,CAAC/rE,EAAOlhB,QAAQsP,IAChCnK,IAAIooF,GACJpoF,IAAI+nF,GAEI1pF,SAAS87E,IAClB2N,EAAW3N,EAAY14E,KAAO04E,CAAW,IAGtC2N,CAAU,EAGRc,EAAuBA,CAACnuF,EAAOshB,KACxC,MAAM+rE,EAAUvtF,EAAA,GAAQE,EAAMi9B,WACxBqwD,EAAqBH,GACvB,EACA7rE,EAAOlhB,QAAQ24B,aAFQo0D,CAGzBE,GAEIM,EAAiCxB,EAAwBkB,GAS/D,OARqB/rE,EAAOlhB,QAAQw5B,IAC/Br0B,IAAIooF,GACJpoF,IAAI+nF,GAEI1pF,SAAS87E,IAClB2N,EAAW3N,EAAY14E,KAAO04E,CAAW,IAGtC2N,CAAU,EAGRe,EAAyBA,CAACpuF,EAAOshB,KAC1C,MAAM+rE,EAAUvtF,EAAA,GAAQE,EAAMi9B,WACxBqwD,EAAqBH,GACvB,EACA7rE,EAAOlhB,QAAQ24B,aAFQo0D,CAGzBE,GACIM,EAAiCxB,EAAwBkB,GAS/D,OARqB/rE,EAAOlhB,QAAQw5B,IAC/Br0B,IAAIooF,GACJpoF,IAAI+nF,GAEI1pF,SAAS87E,IAClB2N,EAAW3N,EAAY14E,KAAO04E,CAAW,IAGtC2N,CAAU,EAGRnpB,EAAiBA,CAAClkE,EAAOshB,KAClC,MAAM+rE,EAAUvtF,EAAA,GAAQE,EAAMi9B,WACxBqwD,GA/NuBv0D,EAgOzBzX,EAAOlhB,QAAQ24B,aAhO4Bp1B,GAAWqD,IAC1D,MAAM7B,EAAOxB,EAAMqD,GACnB,IAAK7B,EAAM,CACP,IACI,KAAO,qDAAoD6B,QAAUg0B,KAAK5rB,UACtEzL,IAER,CAAE,MAAO6jD,GACLhjD,YAAOgjD,EACX,CACA,MAAO,EACX,CAGA,OADAriD,EAAKoxB,YAAY83D,mBAAoB,EAC9BhC,EAAqBlnF,EAAM4zB,EAAa,GAmN7Cs0D,GAjO2Bt0D,MAkO7B,MAAMw0D,EACFrB,EAA0BmB,GAU9B,MARqB,CAAC/rE,EAAOlhB,QAAQwP,iBAChCrK,IAAIgoF,GACJhoF,IAAI+nF,GAEI1pF,SAAS87E,IAClB2N,EAAW3N,EAAY14E,KAAO04E,CAAW,IAGtC2N,CAAU,EAGRiB,EAAsBA,CAACtuF,EAAOshB,KACvC,MAAM+rE,EAAUvtF,EAAA,GAAQE,EAAMi9B,WACxBqwD,GAjOyBX,GAkO3B,EAlOiC5zD,EAmOjCzX,EAAOlhB,QAAQ24B,aAnOoCp1B,GAAWqD,IAClE,MAAM7B,EAAOxB,EAAMqD,GACnB,IAAK7B,EAAM,CACP,IACI,KAAO,sDAAqD6B,QAAUg0B,KAAK5rB,UACvEzL,IAER,CAAE,MAAO6jD,GACLhjD,YAAOgjD,EACX,CACA,MAAO,EACX,CAGA,OADAriD,EAAKmwB,QAAQpY,QAAQqY,kBAAoBo3D,EAClCH,EAA6BrnF,EAAM4zB,EAAa,GAsNrDs0D,GApO4BkB,IAAC5B,EAAM5zD,EAqOrC,MAAMk1D,EAA0B7B,EAAiBiB,GAOjD,OANqB/rE,EAAOlhB,QAAQ+4B,QAC/B5zB,IAAI0oF,GACJ1oF,IAAI+nF,GACI1pF,SAAS87E,IAClB2N,EAAW3N,EAAY14E,KAAO04E,CAAW,IAEtC2N,CAAU,EAGRmB,EAAwBA,CAACxuF,EAAOshB,KACzC,MAAM+rE,EAAUvtF,EAAA,GAAQE,EAAMi9B,WACxBqwD,EAAqBJ,GACvB,EACA5rE,EAAOlhB,QAAQ24B,aAFQm0D,CAGzBG,GACIM,EAAiCxB,EAAwBkB,GAU/D,OATqB/rE,EAAOlhB,QAAQquF,aAC/BlpF,KAAKmpF,GAAgBA,EAAYzvD,gBACjC15B,IAAIooF,GACJpoF,IAAI+nF,GAEI1pF,SAAS87E,IAClB2N,EAAW3N,EAAY14E,KAAO04E,CAAW,IAGtC2N,CAAU,E,ugCChbrB,GAAIplF,IAEA,MAAM,IAAI0J,MACN,2GAIR,MAAM06E,EAAuBA,CAAClnF,EAAM4zB,KAChC,QAAqBzjB,IAAjByjB,EACA,IACI,KAAM,qDAAuD5zB,CACjE,CAAE,MAAO8B,GACLzC,YAAOyC,EACX,CAEJ,OAAOqlF,IAAuBqC,iBAAiBxpF,EAAM4zB,EAAa,EAGhE2zD,EACFA,CAACC,EAAM5zD,EAAcY,IAA4Bh2B,GAAWxF,GACjDA,EAAKoH,KAAKyB,IACb,MAAM7B,EAAOxB,EAAMqD,GACnB,IAAK7B,EACD,IACI,KAAO,0CAAyC6B,QAAUg0B,KAAK5rB,UAC3DzL,IAER,CAAE,MAAOsD,GACLzC,YAAOyC,EACX,CAIJ,OADA9B,EAAKoxB,YAAYC,WAAWC,KAAOk2D,EAC5BN,EACHlnF,EACA4zB,EAEH,IAIP8zD,EAA4BA,CAACF,EAAM5zD,IAAkBp1B,GAAWqD,IAClE,MAAM7B,EAAOxB,EAAMqD,GACnB,IAAK7B,EAAM,CACP,IACI,KAAO,uDAAsD6B,QAAUg0B,KAAK5rB,UACxEzL,IAER,CAAE,MAAO6jD,GACLhjD,YAAOgjD,EACX,CACA,MAAO,EACX,CAGA,OADAriD,EAAKoxB,YAAYC,WAAW++C,OAASoX,EAC9BN,EAAqBlnF,EAAM4zB,EAAa,EAG7Cm0D,EAAcA,CAACP,EAAM5zD,IAAkBp1B,GAAWqD,IACpD,MAAM7B,EAAOxB,EAAMqD,GACnB,IAAK7B,EAAM,CACP,IACI,KAAO,yCAAwC6B,QAAUg0B,KAAK5rB,UAC1DzL,IAER,CAAE,MAAO6jD,GACLhjD,YAAOgjD,EACX,CACA,MAAO,EACX,CAGA,OADAriD,EAAKoxB,YAAYC,WAAW22B,aAAew/B,EACpCN,EAAqBlnF,EAAM4zB,EAAa,EAGtC61D,EAA2BA,CAAC5uF,EAAOshB,KAC5C,MAAM+rE,EAAUvtF,EAAA,GAAQE,EAAMi9B,WACxBqwD,EAAqBZ,GACvB,EACAprE,EAAOlhB,QAAQ24B,aAFQ2zD,CAGzBW,GACIE,EACFrB,EAA0BmB,GAW9B,OAVsB/rE,EAAOlhB,QAAQw5B,IAChCr0B,IAAIgoF,GACJhoF,IAAI+nF,GAEK1pF,SAAS4pF,IACnBA,EAAa5pF,SAAS87E,IAClB2N,EAAW3N,EAAY14E,KAAO04E,CAAW,GAC3C,IAGC2N,CAAU,EAGRnuD,EAAsBA,CAACl/B,EAAOshB,KACvC,MAAM+rE,EAAUvtF,EAAA,GAAQE,EAAMi9B,WACxBqwD,EAAqBJ,GACvB,EACA5rE,EAAOlhB,QAAQ24B,aAFQm0D,CAGzBG,GACIM,EAAiCxB,EAAwBkB,GAS/D,MARqB,CAAC/rE,EAAOlhB,QAAQsP,IAChCnK,IAAIooF,GACJpoF,IAAI+nF,GAEI1pF,SAAS87E,IAClB2N,EAAW3N,EAAY14E,KAAO04E,CAAW,IAGtC2N,CAAU,EAGRwB,EAA6BA,CAAC7uF,EAAOshB,KAC9C,MAAM+rE,EAAUvtF,EAAA,GAAQE,EAAMi9B,WACxBqwD,EAAqBZ,GACvB,EACAprE,EAAOlhB,QAAQ24B,aAFQ2zD,CAGzBW,GACIE,EACFrB,EAA0BmB,GAW9B,OAVsB/rE,EAAOlhB,QAAQw5B,IAChCr0B,IAAIgoF,GACJhoF,IAAI+nF,GAEK1pF,SAAS4pF,IACnBA,EAAa5pF,SAAS87E,IAClB2N,EAAW3N,EAAY14E,KAAO04E,CAAW,GAC3C,IAGC2N,CAAU,EAGRyB,EAAwCA,CAAC9uF,EAAOshB,KACzD,MAAMksE,EAAY1tF,EAAA,GAAQE,EAAMi9B,WAE1BqwD,EAAqBT,GACvB,EACAvrE,EAAOlhB,QAAQ24B,aAFQ8zD,CAGzBW,GACIG,EACFxB,EAAwBqB,GAI5B,OAHAlsE,EAAOlhB,QAAQw5B,IACVr0B,IAAIooF,GACJpoF,IAAI+nF,GACFE,CAAY,EAGVuB,EAAuCA,CAAC/uF,EAAOshB,KACxD,MAAMksE,EAAY1tF,EAAA,GAAQE,EAAMi9B,WAE1BqwD,EAAqBT,GACvB,EACAvrE,EAAOlhB,QAAQ24B,aAFQ8zD,CAGzBW,GACIG,EACFxB,EAAwBqB,GAI5B,OAHAlsE,EAAOlhB,QAAQw5B,IACVr0B,IAAIooF,GACJpoF,IAAI+nF,GACFE,CAAY,EAGVwB,EAAuBA,CAAChvF,EAAOshB,KACxC,MAAM+rE,EAAUvtF,EAAA,GAAQE,EAAMi9B,WACxBqwD,EAAqBJ,GACvB,EACA5rE,EAAOlhB,QAAQ24B,aAFQm0D,CAGzBG,GACIM,EAAiCxB,EAAwBkB,GAU/D,OATqB/rE,EAAOlhB,QAAQquF,aAC/BlpF,KAAKmpF,GAAgBA,EAAYzvD,gBACjC15B,IAAIooF,GACJpoF,IAAI+nF,GAEI1pF,SAAS87E,IAClB2N,EAAW3N,EAAY14E,KAAO04E,CAAW,IAGtC2N,CAAU,E,ugCC3JrB,GAAIplF,IAEA,MAAM,IAAI0J,MACN,2GAIO,KAAC3R,EAAOshB,KACnBthB,EAAQA,GAAS,CAAC,EAElB,MAuOMivF,EAAkBA,IAAAnvF,IAAC,CAAD,EACjBE,GAAK,IACRi9B,UAAW6xD,EAAsC9uF,EAAOshB,KAEtD4tE,EAAiBA,IAAApvF,IAAC,CAAD,EAChBE,GAAK,IACRi9B,UAAW8xD,EAAqC/uF,EAAOshB,KAiBrD1hB,EAAW,CACb,CAACuvF,IAAe5hF,YAAYupB,yBAA0Bm4D,EACtD,CAACE,IAAe5hF,YAAYwpB,yBAA0Bm4D,EACtD,CAACC,IAAe5hF,YAAYypB,cAjQZ6B,IAChB/4B,IAAA,GACOE,GACAssF,IAAuB8C,gBACtB9tE,EAAOlhB,QAAQqG,MACf6a,EAAOlhB,QAAQ24B,aACfzX,EAAOlhB,QAAQqG,MAAMunF,gBACrB1sE,EAAOlhB,QAAQ44B,6BACf1X,EAAOlhB,QAAQ04B,OA0PvB,CAACq2D,IAAe5hF,YAAYiqB,yBAjPH63D,IAAAvvF,IAAC,CAAD,EACtBE,GAAK,IACRi9B,UAAW,CAAC,EACZC,iBAAkB,GAClBG,WAAY,CACRxoB,OAAQ,IAEZylB,OAAMx6B,IAAA,GACCE,EAAMs6B,QAAM,IACfkX,WAAY,MA0OhB,CAAC29C,IAAe5hF,YAAY2pB,WAlOfgE,IAAAp7B,IAAC,CAAD,EACVE,GAAK,IACRsvF,cACIhuE,EAAOlhB,UAAYJ,EAAMsvF,eAAwBhuE,EAAOlhB,UAgO5D,CAAC+uF,IAAe5hF,YAAY4pB,aAzNboF,KACf,IAAIgzD,GAAc,EAClB,GACKvvF,EAAMwvF,oBAC6B,IAApCxvF,EAAMwvF,mBAAmB3oF,OAOtB,CACH,IAAI4oF,EAAc,IAAIzvF,EAAMwvF,oBAU5B,OATIxvF,EAAMwvF,mBAAmB/hE,QAAQnM,EAAOlhB,QAAQsP,KAAO,GACvD6/E,GAAc,EACdE,EAAcA,EAAYt9E,QACrBzC,GAAOA,IAAO4R,EAAOlhB,QAAQsP,MAGlC+/E,EAAYr8E,KAAKkO,EAAOlhB,QAAQsP,IAGpC5P,IAAA,GACOE,GAAK,IACRwvF,mBAAoBC,EACpBF,YAAaA,GAErB,CArBI,OAAAzvF,IAAA,GACOE,GAAK,IACRwvF,mBAAoB,CAACluE,EAAOlhB,QAAQsP,IACpC6/E,YAAaA,GAkBrB,EA+LA,CAACJ,IAAe5hF,YAAY6pB,kBAxLToF,KAWnB,IAA8B,IAA1Blb,EAAOlhB,QAAQq8B,SAAoBz8B,EAAMuvF,YAAa,CACtD,MAAMG,EAAmBxxF,OAAOC,KAAK6B,EAAMi9B,WACtC9qB,QAAQ/M,IAAWuqF,OAZLxqF,EAYmBnF,EAAMi9B,UAAU73B,GAXtC+uB,YACZ7S,EAAOlhB,QAAQ24B,aACfzX,EAAOlhB,QAAQyM,SACfyU,EAAOlhB,QAAQi0B,kBACf,GACA,SAEWG,iBAAiBrvB,GARbA,KAY2C,IACzDI,KAAKmK,GACK2Z,SAAS3Z,EAAI,MAE5B,OAAA5P,IAAA,GACOE,GAAK,IACRwvF,mBAAoBE,EACpBH,aAAa,GAErB,CAEA,OAAAzvF,IAAA,GACOE,GAAK,IACRwvF,mBAAoB,GACpBD,aAAa,GAAK,EA8JtB,CAACJ,IAAe5hF,YAAY+pB,uBA1JLs4D,IAAA9vF,IAAC,CAAD,EACpBE,GAAK,IACR6vF,kBACuB,IAAnBvuE,EAAOlhB,UAA6BJ,EAAM6vF,mBAwJ9C,CAACV,IAAe5hF,YAAYgqB,qBArJNu4D,IAAAhwF,IAAC,CAAD,EACnBE,GAAK,IACRwvF,mBAAoB,GACpBD,aAAa,IAmJb,CAACJ,IAAe5hF,YAAY8pB,cAhJZ6B,KAChB,MAAM62D,EAAsB/vF,EAAMk9B,iBAAiB/qB,QAAQzC,IACvD4R,EAAOlhB,QAAQua,MACVq1E,GAAYA,EAAQ9nC,aAAex4C,EAAGw4C,eAKzC+nC,EAAW,CAAC,EAIlB,OAHAF,EAAoBxqF,KACfJ,GAAU8qF,EAAS9qF,GAAQnF,EAAMi9B,UAAU93B,KAEhDrF,IAAA,GACOE,GAAK,IACRi9B,UAAWgzD,EACX/yD,iBAAkB6yD,GAAmB,EAkIzC,CAACZ,IAAe5hF,YAAYkqB,0CA/FDy4D,IAAApwF,IAAC,CAAD,EACxBE,GAAK,IACRi9B,UAAWmwD,EAA0BptF,EAAOshB,KA+F5C,CAAC6tE,IAAe5hF,YAAYmqB,yCA7CFy4D,IAAArwF,IAAC,CAAD,EACvBE,GAAK,IACRi9B,UAAW2xD,EAAyB5uF,EAAOshB,KA6C3C,CAAC6tE,IAAe5hF,YAAYoqB,4CA/FCy4D,IAAAtwF,IAAC,CAAD,EAC1BE,GAAK,IACRi9B,UAAWwwD,EAA4BztF,EAAOshB,KA+F9C,CAAC6tE,IAAe5hF,YAAYqqB,2CA7CAy4D,IAAAvwF,IAAC,CAAD,EACzBE,GAAK,IACRi9B,UAAW4xD,EAA2B7uF,EAAOshB,KA6C7C,CAAC6tE,IAAe5hF,YACX4qB,6CAhGuBm4D,IAAAxwF,IAAC,CAAD,EACzBE,GAAK,IACRi9B,UAAWywD,EAAqB1tF,EAAOshB,KAgGvC,CAAC6tE,IAAe5hF,YACX6qB,+CA/FyBm4D,IAAAzwF,IAAC,CAAD,EAC3BE,GAAK,IACRi9B,UAAW2wD,EAAuB5tF,EAAOshB,KA+FzC,CAAC6tE,IAAe5hF,YAAYsqB,kCA7FP24D,IAAA1wF,IAAC,CAAD,EAClBE,GAAK,IACRi9B,UAAW4wD,EAAuC7tF,EAAOshB,KA6FzD,CAAC6tE,IAAe5hF,YAAYuqB,iCACxBm3D,EACJ,CAACE,IAAe5hF,YAAYwqB,iCA7FR04D,IAAA3wF,IAAC,CAAD,EACjBE,GAAK,IACRi9B,UAAW6wD,EAAsC9tF,EAAOshB,KA6FxD,CAAC6tE,IAAe5hF,YAAYyqB,gCACxBk3D,EACJ,CAACC,IAAe5hF,YAAY0qB,aA7Fby4D,IAAA5wF,IAAC,CAAD,EACZE,GAAK,IACRi9B,UAAW8wD,EAAwB/tF,EAAOshB,KA4F1C,CAAC6tE,IAAe5hF,YAAY2qB,YA1Fdy4D,IAAA7wF,IAAC,CAAD,EACXE,GAAK,IACRi9B,UAAWixD,EAAuBluF,EAAOshB,KAyFzC,CAAC6tE,IAAe5hF,YAAYirB,yBAvFIo4D,IAAA9wF,IAAC,CAAD,EAC7BE,GAAK,IACRi9B,UAAW+B,EAAqBh/B,EAAOshB,KAuFvC,CAAC6tE,IAAe5hF,YAAYkrB,wBArFGo4D,IAAA/wF,IAAC,CAAD,EAC5BE,GAAK,IACRi9B,UAAWiC,EAAoBl/B,EAAOshB,KAqFtC,CAAC6tE,IAAe5hF,YAAY+qB,2CAnFCw4D,IAAAhxF,IAAC,CAAD,EAC1BE,GAAK,IACRi9B,UAAWkxD,EAAqBnuF,EAAOshB,KAmFvC,CAAC6tE,IAAe5hF,YACX8qB,6CAlF0B04D,IAAAjxF,IAAC,CAAD,EAC5BE,GAAK,IACRi9B,UAAWmxD,EAAuBpuF,EAAOshB,KAkFzC,CAAC6tE,IAAe5hF,YAAYgrB,kBAhFNy4D,IAAAlxF,IAAC,CAAD,EACnBE,GAAK,IACRi9B,UAAWinC,EAAelkE,EAAOshB,KA+EjC,CAAC6tE,IAAe5hF,YAAYmrB,aA3Ibu4D,IAAAnxF,IAAC,CAAD,EACZE,GAAK,IACRi9B,UAAW,GACXC,iBAAkB,GAClB5C,OAAMx6B,IAAA,GACCE,EAAMs6B,QAAM,IACfkX,WAAY,MAsIhB,CAAC29C,IAAe5hF,YAAYorB,eA9DXiH,IAAA9/B,IAAC,CAAD,EACdE,GAAK,IACRi9B,UAAWqxD,EAAoBtuF,EAAOshB,KA6DtC,CAAC4vE,IAAyB3L,yCA3DO4L,IAAArxF,IAAC,CAAD,EAC9BE,GAAK,IACRi9B,UAAWuxD,EAAsBxuF,EAAOshB,KA2DxC,CAAC4vE,IAAyB1L,wCAzDM4L,IAAAtxF,IAAC,CAAD,EAC7BE,GAAK,IACRi9B,UAAW+xD,EAAqBhvF,EAAOshB,KAyDvC,CAAC6tE,IAAe5hF,YAAYqrB,wBAtKJiH,KACxB,MAAMl8B,EAAK7D,EAAA,GAAQE,EAAMi9B,WACnBo0D,EAA6BnF,EAA0BvoF,EAA1BuoF,CAC/B5qE,EAAO1R,iBAELisD,EAAmB,CACrBr8C,iBAAkB8B,EAAO9B,iBACzBhC,MAAO8D,EAAOwe,UAKlB,OAHAuxD,EAA2B9rF,KAAKyB,IAC5BrD,EAAMqD,GAAKuvB,YAAYslC,iBAAmBA,CAAgB,IAE9D/7D,IAAA,GACOE,GAAK,IACRi9B,UAAWt5B,GAAK,GA2JxB,OAAQ/D,EAAS0hB,EAAOzd,MAAgBjE,EAAS0hB,EAAOzd,QAzDtC7D,CA0DrB,EAEM,MAAMg9B,EAA6Bh9B,GACtCA,EAAMovB,MAAM2D,UAAUo8D,c,qmDCjW1B,MAAMmC,EAAkBnxF,IAKlB,IAJF+J,EAAS/J,EAAT+J,UACAQ,EAAQvK,EAARuK,SACA6mF,EAAgBpxF,EAAhBoxF,iBACGz9D,EAAUlvB,EAAAzE,EAAA0E,GAEb,MAAM2sF,EAAYC,iBAAO,MAQzB,OAPA1rC,qBAAU,KACN,MAAM2rC,EAAUp1D,YAAW,KAAM,IAAAq1D,EAC7BH,SAAkB,QAATG,EAATH,EAAWpO,eAAO,IAAAuO,GAAlBA,EAAoBC,UAAUx9C,IAAIm9C,EAAiB,GACpD,GACH,MAAO,IAAMvwB,aAAa0wB,EAAQ,GACnC,CAACH,IAGAhnF,cAAA,MAAAzK,IAAA,CAAKoK,UAAWA,EAAW2nF,IAAKL,GAAe19D,GAAU,IAAAppB,SACpDA,IACC,EAKDonF,EAAeA,IACxBvnF,cAAC+mF,EAAe,CACZpnF,UAAU,iBACVqnF,iBAAiB,yBAAwB7mF,SACzCH,cAACwnF,IAAW,CACR7nF,UAAU,iBACVM,MAAO,CAAEopB,MAAO,OAAQC,OAAQ,YAM/Bm+D,EAAeA,IACxBznF,cAAC0nF,IAAa,CAAAvnF,SACVH,cAACwnF,IAAW,CACR7nF,UAAU,iBACVM,MAAO,CAAEopB,MAAO,OAAQC,OAAQ,YAO/B4yB,EAAclmD,IAAA,IAAA2xF,EAAA3xF,EAAG2J,iBAAS,IAAAgoF,EAAG,GAAEA,EAAKp+D,EAAUlvB,EAAArE,EAAA4xF,GAAA,OACvD5nF,cAAC+mF,EAAexxF,IAAA,CACZoK,UAAY,iBAAgBA,IAC5BqnF,iBAAiB,yBACbz9D,GAAU,IAAAppB,SACdH,cAACwnF,IAAW,CAAC7nF,UAAU,+BACT,EAGhBkoF,EAASjwE,GAAYA,EAATkwE,UACK9nF,cAACynF,EAAY,IAAMznF,cAACunF,EAAY,IAGvDM,EAAOp+D,UAEN,GAEDo+D,EAAOn+D,aAAe,CAClBo+D,WAAW,GAGAD,K,2lCCpEf,IACIE,I,UADarqF,GAAY7F,OAAOoJ,mBAAsB,CAAC,GAC9B8mF,cAE7B,MAIMpR,EAAqBzuD,GAAQA,QAE7B8/D,EAAWxgF,IACb,IAAIygF,GAAmBtR,EAAkBnvE,EAAMiH,YAC3CipE,GAAiBf,EAAkBnvE,EAAMkH,YAC7C,OAAIu5E,IAAoBvQ,EACb,UAGPuQ,GAAmBvQ,EACZ,cAGNuQ,GAAmBvQ,EACb,UAGJ,SAAS,EAgML,KACXK,UAvLevwE,GAAUA,GAA4B,YAAnBwgF,EAAQxgF,GAwL1CswE,aAtLkBtwE,GAAUA,GAA4B,eAAnBwgF,EAAQxgF,GAuL7C0gF,wBArL6B3tD,GAC7BwtD,EAAcI,YAAY5tD,GAqL1B9qB,UAnLcxX,UACd,IAAK4T,EACD,KAAM,kBAIV,aADuB7U,IAAeC,IAAK,uBAAsB4U,MACjD1S,KAAKqO,KAAK,EA8K1BiO,iBA3KqBA,IAAAlgB,IAAC,CAAD,EAClBwyF,EAAcK,SAAO,IACxBl8E,wBAAoBnB,IA0KpB6K,yBAvK6BA,IAAArgB,IAAC,CAAD,EAC1BwyF,EAAcI,aAAW,IAC5Bj8E,wBAAoBnB,IAsKpBs9E,sBAnK0BpwF,UAC1B,IACI,MAAMiG,QAAiBlH,IAAe0Q,KAClC,oCACA,CACIoO,eAIFwyE,EAlEmB9gF,IAC7BjS,IAAA,GAAYiS,GAAK,IAAE3M,OAAQ,IAiEI0tF,CADbrqF,EAAS/E,KAAKqO,OAE5B,OAAAjS,IAAA,GAAY+yF,GAAkB,IAAE58E,YAAa,YACjD,CAAE,MACE,KAAM,4CACV,GAuJAmF,UApJc5Y,UACd,GAA0B,aAAtBuP,EAAMkE,YAEN,KAAM,6BAGV,MAAM88E,EAvDmBhhF,IACzBjS,IAAA,GACOiS,GAAK,IACRihF,SAAQlzF,IAAA,GAAOiS,EAAMihF,UAAQ,IAAEC,cAAe,eAoD7BC,CAAoBnhF,GAEnCtJ,QAAiBlH,IAAe0Q,KAClC,uBACA8gF,GAGJ,GAAItqF,EAAS/E,KAAKrE,YAAcoJ,EAAS/E,KAAK0S,QAC1C,MAAM3N,EAAS/E,KAGnB,OAAO+E,EAAS/E,IAAI,EAoIpB2X,oBA/FyB83E,IAAa,IAAAC,EAClCrhF,EAAQ,CAAC,EAkFb,OAjFAA,EAAMqE,QAAU+8E,EAASphF,MAAMqE,QAC/BrE,EAAMkE,YAAck9E,EAASphF,MAAMkE,YACnClE,EAAMshF,SAAWF,EAASphF,MAAMlF,SAChCkF,EAAM3M,OAAS+tF,EAASphF,MAAM3M,OAC9B2M,EAAMmL,QAAUi2E,EAASphF,MAAMmL,QAC/BnL,EAAMuhF,kBAAoBH,EAASphF,MAAMuhF,kBACzCvhF,EAAMwhF,qBAAuBJ,EAASphF,MAAMwhF,qBAC5CxhF,EAAMyhF,YAAcL,EAASphF,MAAMyhF,YACnCzhF,EAAM0hF,iBAAmBN,EAASphF,MAAM0hF,iBACxC1hF,EAAM2hF,cAAgBP,EAASphF,MAAM2hF,cACrC3hF,EAAM4hF,oBAAsBR,EAASphF,MAAM4hF,oBAC3C5hF,EAAMqL,UAAY+1E,EAASphF,MAAMqL,UACjCrL,EAAMmrE,uBAAyBiW,EAASphF,MAAMmrE,uBAC9CnrE,EAAMihF,SAAWG,EAASphF,MAAMihF,SAC5BG,EAASphF,MAAMsO,aACftO,EAAMsO,WAAa8yE,EAASphF,MAAMsO,YAElC8yE,EAASphF,MAAM6hF,eACf7hF,EAAM6hF,aAAeT,EAASphF,MAAM6hF,cAGxC7hF,EAAMrM,iBAAmBytF,EAASztF,iBAAiBA,iBACnDqM,EAAMuG,gBAAkB66E,EAAS76E,gBAAgBA,gBACjDvG,EAAMK,4BACF+gF,EAASztF,iBAAiB0M,4BAC9BL,EAAMpD,SAAWwkF,EAASphF,MAAMpD,SAChCoD,EAAM4F,cAAgBw7E,EAASphF,MAAM4F,cACrC5F,EAAM+F,WAAaq7E,EAAS5pE,SAAS7K,gBAErC3M,EAAMgG,aAAeo7E,EAAS5pE,SAASsqE,kBACvC9hF,EAAM6G,OAlEau6E,IACJA,EAASv6E,OAAO6D,MAC1BlX,KAAKqhC,GACkB,MAAhBA,EAAK1B,QACE,KAEP0B,EAAKC,eACE,CACH5B,WAAY,KACZ6uD,aAAc,CACV5uD,QAAS0B,EAAK1B,QACdqC,gBAAiBX,EAAKW,gBACtBwsD,SAAUntD,EAAKmtD,SACfC,aAAcptD,EAAKotD,aACnBC,mBAAoBrtD,EAAKqtD,oBAE7Bp5E,SAAU+rB,EAAK/rB,UAGZ,CACHoqB,WAAY,CACRC,QAAS0B,EAAK1B,QACdqC,gBAAiBX,EAAKW,gBACtB0sD,mBAAoBrtD,EAAKqtD,oBAE7BH,aAAc,KACdj5E,SAAU+rB,EAAK/rB,YAI1B1I,OAAOuK,SAoCGw3E,CAAcf,GAC7BphF,EAAMiH,WAAam6E,EAAS31E,MAAMxE,WAClCjH,EAAMmH,aAAei6E,EAAS31E,MAAMtE,aACpCnH,EAAMkH,WAAak6E,EAAS31E,MAAMokE,kBAC5BuR,EAAS31E,MAAMvE,WACfk6E,EAAS31E,MAAM+jE,gBACrBxvE,EAAMsH,IAAM85E,EAAS31E,MAAMnE,IAE3BtH,EAAMkG,aAAek7E,EAASz1E,aAAazF,aAC3ClG,EAAMoG,cAAgBg7E,EAASz1E,aAAavF,cAC5CpG,EAAMG,gBAAkBihF,EAAS1jE,SAASq5C,wBAC1C/2D,EAAM0D,YAAc09E,EAAS1jE,SAASha,YAEtC1D,EAAM6E,cAAgBu8E,EAASv8E,cAAcA,cAC7C7E,EAAM0E,mBAAqB08E,EAASnI,YAAYT,oBAEhDx4E,EAAMgF,aAAeo8E,EAASp8E,aAAaA,aAC3ChF,EAAMiF,eAAiBm8E,EAASp8E,aAAaC,eAE7CjF,EAAMyG,gBAAkB26E,EAAS51E,cAAc/E,gBAC/CzG,EAAM2G,mBAAqBy6E,EAAS51E,cAAc7E,mBAElD3G,EAAMqH,UAAY+5E,EAASrzB,gBAAgB1mD,UAEvCsiB,IAAey4D,+BACC,QAD4Bf,EAC5CD,EAASh6E,eAAO,IAAAi6E,GAAhBA,EAAkBh6E,YAElBrH,EAAMoH,QAAUg6E,EAASh6E,SAE7BpH,EAAM6uD,qBAAuBuyB,EAASrzB,gBAAgBc,qBACtD7uD,EAAMuJ,QAAU63E,EAASphF,MAAMuJ,QAE/BvJ,EAAMmM,gBAAkB,CACpBC,oBAAqBg1E,EAAS9lD,WAAWD,mBAAmB7nC,KACvDgP,IACG,MAAMM,EAASN,EAAUuc,QAAQgnB,QAAO,CAACgwB,EAAKxH,KACtCA,EAAOj1B,UACPy8B,EAAI10D,KAAKktD,EAAO75D,OAEbqhE,IACR,IACH,MAAO,CACHp4D,GAAI6E,EAAU7E,GACdkF,aAAcL,EAAUK,aACxBw/E,eAAe,EACfv/E,SACH,KAKN9C,CAAK,E,oCCvND,SAAS84B,EAAgBwpD,EAAcC,GAClD,IAAIC,EAAiB,EACjBC,EAAY,KAChBhrF,KAAKujC,QAAU,SAAU0nD,GACjBD,IACAxzB,aAAawzB,GACbA,EAAY,MAEhB,IAAIE,EAAUljE,KAAK2kD,OAEdme,GADSI,EAAUH,EACMF,GAC1BI,IACAF,EAAiBG,GAEjBF,EAAYl4D,YAAW,KACnBm4D,GAAe,GAChBJ,EAEX,CACJ,CArBA,iC,oCCAA,kNAWA,MAAMM,EAAS,CACX,CAAC7yC,IAAQG,cAAe,OACxB,CAACH,IAAQc,iBAAkB,WAC3B,CAACd,IAAQO,SAAU,UACnB,CAACP,IAAQM,cAAe,QACxB,CAACN,IAAQK,MAAO,OAChB,CAACL,IAAQQ,QAAS,WAClB,CAACR,IAAQ8yC,YAAa,QACtB,CAAC9yC,IAAQW,cAAe,WACxB,CAACX,IAAQe,UAAW,SACpB,CAACf,IAAQY,cAAe,MACxB,CAACZ,IAAQI,QAAS,SAClB,CAACJ,IAAQ77B,UAAW,YAGlB4uE,EAAqB,CACvB,CAAC/yC,IAAQG,cAAe,wCACxB,CAACH,IAAQc,iBAAkB,mCAC3B,CAACd,IAAQO,SAAU,mCACnB,CAACP,IAAQM,cAAe,wCACxB,CAACN,IAAQK,MAAO,uCAChB,CAACL,IAAQQ,QAAS,kCAClB,CAACR,IAAQ8yC,YAAa,sCACtB,CAAC9yC,IAAQW,cAAe,wCACxB,CAACX,IAAQe,UAAW,qCACpB,CAACf,IAAQY,cAAe,wCACxB,CAACZ,IAAQI,QAAS,iCAClB,CAACJ,IAAQ77B,UAAW,oCAGlB6uE,EAAmBC,GAAWF,EAAmBE,GACjDC,EAAaA,CAACrgF,EAAOkhB,EAAUo/D,KAAc,CAC/CC,KAAMvgF,EACNkhB,SAAUA,EACVo/D,cAGSE,EAAyBA,CAAC5iF,EAAG0iF,KACtC,OAAQA,GACJ,KAAKnzC,IAAQG,aACT,OAAO1vC,EAAE,qBACb,KAAKuvC,IAAQc,gBACT,OAAOrwC,EAAE,+BACb,KAAKuvC,IAAQO,QACT,OAAO9vC,EAAE,uBACb,KAAKuvC,IAAQM,aACT,OAAO7vC,EAAE,wBACb,KAAKuvC,IAAQK,KACT,MAAQ,IAAG5vC,EAAE,sBACjB,KAAKuvC,IAAQQ,OACT,OAAO/vC,EAAE,wBACb,KAAKuvC,IAAQ8yC,WACT,OAAOriF,EAAE,6BACb,KAAKuvC,IAAQW,aACT,OAAOlwC,EAAE,4BACb,KAAKuvC,IAAQe,SACT,OAAOtwC,EAAE,sBACb,KAAKuvC,IAAQY,aACT,OAAOnwC,EAAE,4BACb,KAAKuvC,IAAQI,OACT,OAAO3vC,EAAE,sBACb,KAAKuvC,IAAQ77B,SACT,OAAO1T,EAAE,wBACb,QACI,MAAO,GACf,EAGS6iF,EAAcA,CAAC7iF,EAAG8iF,IACpBA,EACDA,EAAkB9vF,KAAK0vF,GACnBD,EACIG,EAAuB5iF,EAAG0iF,GAC1BJ,EAAmBI,MAG3B,GAGGK,EAAiBA,CAAC/iF,EAAG4oB,KAC9B,MAAMo6D,EAAgBhjF,EAAE,6BAExB,OAAQ4oB,GACJ,KAAKq6D,IAAWC,iBAKhB,KAAKD,IAAWE,aAKhB,KAAKF,IAAWG,aACZ,OAAOX,EACHO,EACA,uCAER,KAAKC,IAAWI,eACZ,OAAOZ,EACH,WACA,uCAER,QACI,OAAO,KACf,EAOSa,EAAaA,CAACR,EAAmBt8D,IAAkB5zB,IAC5D,MAQM2wF,IACA3wF,GACFA,EAAKoxB,aACLpxB,EAAKoxB,aACLpxB,EAAKoxB,YAAYw/D,gBACfv4E,EAAQrY,EAAKoxB,YACblN,SAASlkB,EAAKoxB,YAAY/Y,OAC1B6L,SAASlkB,EAAK6wF,cAOdC,EAAY9wF,EAAKC,OACjBuwC,EAAWxwC,EAAKmwB,QAAQqgB,SACxBugD,KACF/wF,GAAQA,EAAKsvB,gBAAkBtvB,EAAKsvB,eAAewB,eAGjDkgE,KACW,YAAbxgD,GACCugD,GAAiC,eAAbvgD,GACpBugD,GACG/wF,EAAKoxB,aACyB,YAA9BpxB,EAAKmwB,QAAQ8gE,cAGf5xE,EAAW0vC,YAAY/uD,GACvBkxF,EAAqBP,EACrB3wF,EAAKoxB,YAAYw/D,gBAAgBO,UACjC,KACAC,EAAapxF,EAAKmwB,QAAQ7Q,QAAQ6xE,UAMlCE,EAAsBrxF,EAAKmwB,QAAQi/B,SACnCpvD,EAAKmwB,QAAQi/B,SAASC,SACtB,KAEAiiC,EAAiB,CACnB,CAAC30C,IAAQG,cAjCTwK,YAAqCtnD,GAC/B0vF,EAAmB/yC,IAAQG,cAAgB,oBAC3C4yC,EAAmB/yC,IAAQG,cAgCjC,CAACH,IAAQc,iBACLkyC,EAAgBhzC,IAAQc,kBACvBkzC,GAAsB3wF,EAAKoxB,YAAYw/D,gBAAgBrhC,SAClD,eACA,IACV,CAAC5S,IAAQO,SACLyyC,EAAgBhzC,IAAQO,UACvBl9C,EAAKmwB,QAAQ7Q,QAAQiwC,SAAW,eAAiB,IACtD,CAAC5S,IAAQM,cAAe0yC,EAAgBhzC,IAAQM,cAChD,CAACN,IAAQK,MAAO2yC,EAAgBhzC,IAAQK,MACxC,CAACL,IAAQQ,QAASwyC,EAAgBhzC,IAAQQ,QAC1C,CAACR,IAAQ8yC,YAAaE,EAAgBhzC,IAAQ8yC,YAC9C,CAAC9yC,IAAQW,cAAeqyC,EAAgBhzC,IAAQW,cAChD,CAACX,IAAQe,UAAWiyC,EAAgBhzC,IAAQe,UAC5C,CAACf,IAAQY,cAAeoyC,EAAgBhzC,IAAQY,cAChD,CAACZ,IAAQ40C,UAAW5B,EAAgBhzC,IAAQ40C,UAAY,eACxD,CAAC50C,IAAQ77B,UAAW6uE,EAAgBhzC,IAAQ77B,UAC5C,CAAC67B,IAAQI,QAAS4yC,EAAgBhzC,IAAQI,SAGxCy0C,EAAc,CAChB,CAAC70C,IAAQG,cAAewK,YAAqCtnD,GACvD,8BACAqY,EACN,CAACskC,IAAQc,iBAAkBkzC,EACrB3wF,EAAKoxB,YAAYw/D,gBAAgBa,KACjC,KACN,CAAC90C,IAAQO,SACLl9C,GACAA,EAAKmwB,SACLnwB,EAAKmwB,QAAQ7Q,SACbtf,EAAKmwB,QAAQ7Q,QAAQiwC,SACfvvD,EAAKmwB,QAAQi/B,SAASC,SACtBrvD,EAAKmwB,QAAQ7Q,QAAQmyE,KAC/B,CAAC90C,IAAQM,cAAe,GACxB,CAACN,IAAQK,MAAO39B,EAChB,CAACs9B,IAAQQ,QAAS,GAClB,CAACR,IAAQ8yC,YAAa,GACtB,CAAC9yC,IAAQW,cAAe,GACxB,CAACX,IAAQe,UAAW,GACpB,CAACf,IAAQY,cAAe,GACxB,CAACZ,IAAQ40C,UAAW,GACpB,CAAC50C,IAAQ77B,UAAWuwE,GAGlBK,EACFV,GAAkB3xE,EACZ,CACIsyE,UAAW/pB,IAAmBgqB,KAC9B3xF,OAAQ6wF,EACRzxE,SAAUA,GAEd,IACJwyE,EACF7xF,EAAKmwB,QAAQo3B,QAAQ1zC,WAAa,EAC5B7T,EAAKmwB,QAAQo3B,QAAQ1zC,WACrB,IACJi+E,EACF9xF,EAAKmwB,QAAQo3B,QAAQxzC,aAAe,EAC9B/T,EAAKmwB,QAAQo3B,QAAQxzC,aACrB,EACJg+E,EACF/xF,EAAKmwB,QAAQo3B,QAAQyqC,SAAW,EAAIhyF,EAAKmwB,QAAQo3B,QAAQyqC,SAAW,EAClEC,EAAkBjyF,EAAKmwB,QAAQ+hE,aAC/BlyF,EAAKmwB,QAAQ+hE,aACb,IACAC,EAA8B95E,IAAK,CACrCs5E,UAAW/pB,IAAmBwqB,YAC9B/5E,UAEE82C,EAAc,CAChBwiC,UAAW/pB,IAAmByqB,UAC9BjjC,SAAUpvD,EAAKmwB,QAAQi/B,UAErBiB,EAAeb,YAAgBxvD,EAAM4zB,EAAtB47B,GAEf8iC,EAAc,CAChB,CAAC31C,IAAQG,cAxFW,CACpB60C,UAAW/pB,IAAmB2qB,WAC9BnhE,YAAapxB,EAAKoxB,YAClB/Y,MAAOA,GAsFP,CAACskC,IAAQc,iBAAkByzC,EAC3B,CAACv0C,IAAQO,SAAUk0C,EACnB,CAACz0C,IAAQM,cAAeoT,EACxB,CAAC1T,IAAQK,MAAO00C,EAChB,CAAC/0C,IAAQQ,QAAS2zC,EAClB,CAACn0C,IAAQ8yC,YAAaoC,EACtB,CAACl1C,IAAQW,cAAe60C,EAA2BL,GACnD,CAACn1C,IAAQe,UAAWy0C,EAA2BJ,GAC/C,CAACp1C,IAAQY,cAAe00C,EACxB,CAACt1C,IAAQI,QAASo1C,EAA2BljC,YAAUjvD,IACvD,CAAC28C,IAAQ77B,UAAWquC,GAGxB,OAAO+gC,EAAkB9vF,KAAK0vF,GA/IZ0C,EAAChjF,EAAOlO,EAAOovB,EAAU5vB,EAAOgvF,KAAc,CAC5DC,KAAMvgF,EACNijF,WAAYnxF,EACZovB,SAAUA,EACVgiE,SAAU5xF,EACVgvF,cA2IA0C,CACkB,iBAAd1C,OAA+B3/E,EAAYq/E,EAAOM,GAClDwC,EAAYxC,GACZwB,EAAexB,GACf0B,EAAY1B,GACZA,IAEP,C,22ECtQL,MAQM6C,EAAsBA,CACxB7/E,EACA2oD,EACAzoD,KAEA,IAAI4/E,EAAqB,KACzB,MAAMtzE,EAdS8xE,EAACt+E,EAAsBE,KACtC,MAAMsM,EAAU7G,MAAQo6E,QAAQ,QAAQ5jD,IAAIn8B,EAAc,OAC1D,IAAKE,EAAe,OAAOsM,EAE3B,MAA6DwzE,EAAAnoC,EAApC33C,EAAclF,MAAM,KAAK1N,IAAIskE,QAAO,GAAtDquB,EAAKD,EAAA,GAAEE,EAAOF,EAAA,GACrB,OAAOxzE,EAAQ2zE,KAAKF,GAAOG,OAAOF,EAAQ,EAS1B5B,CAAWt+E,EAAcE,GAEzC,GAAIyoD,EAAsB,CACtB,MAAM03B,EAAkB16E,MAAQw2B,IAAI,EAAG,UAEnC3vB,EAAQ8zE,SAASD,KACjBP,EAAqB,6CAE7B,MAAO,GAAI5/E,EAAe,CACtB,MAAMmgF,EAAkB16E,MAAQw2B,IAAI,EAAG,OAEnC3vB,EAAQ8zE,SAASD,EAAiB,YAClCP,EAAqB,oCAE7B,CAEA,OAAOA,EAAqB,CAAE5/E,cAAe4/E,GAAuB,CAAC,CAAC,EAGpE34F,EAAkC,CACpCo5F,oBAAoB,EACpBvgF,aAAsB,OAARvC,UAAQ,IAARA,KAAuB,QAAf+iF,EAAR/iF,IAAU48E,qBAAa,IAAAmG,GAAS,QAATC,EAAvBD,EAAyB9F,eAAO,IAAA+F,OAAxB,EAARA,EAAkCzgF,aAChDE,mBAAe7C,EACfsrD,sBAAsB,EACtB+3B,iBAAkB,CAAC,GAsBjBC,EAAoBl5F,YAAY,CAClCC,KAAM,eACNP,eACAQ,SAAU,CACNoY,gBAAiBA,CAAChY,EAAOshB,KACrB,MAAMrJ,EAAeqJ,EAAOlhB,QAEtBu4F,EAAmBb,EACrB7/E,EACAjY,EAAM4gE,qBACN5gE,EAAMmY,eAEV,OAAArY,IAAA,GACOE,GAAK,IACRiY,eACA0gF,oBAAgB,EAGxBzgF,iBAAkBA,CAAClY,EAAOshB,KACtB,MAAMnJ,EAAgBmJ,EAAOlhB,QAEvBu4F,EAAmBxgF,EACnB2/E,EACI93F,EAAMiY,aACNjY,EAAM4gE,qBACNzoD,GAEJ,CAAC,EAEP,OAAArY,IAAA,GACOE,GAAK,IACRmY,gBACAwgF,oBAAgB,EAGxBE,wBAA0B74F,IACtB,MAAMiY,EACFgC,IAAaw4E,wBAAwB,gBACnCt6E,EACF8B,IAAaw4E,wBAAwB,iBACnCt1D,EA3D0B27D,EACxC94F,EACAiY,EACA2oD,EACAzoD,KAEA,MAAMwgF,EAAmBb,EACrB7/E,EACA2oD,EACAzoD,GAEJ,OAAArY,IAAA,GACOE,GAAK,IACRiY,eACAE,gBACAwgF,oBAAgB,EA4CKG,CACb94F,EACAiY,EACAjY,EAAM4gE,qBACNzoD,GAGJ,OAAOglB,CAAQ,EAGnB47D,mBAAqB/4F,GACjBF,IAAA,GACOE,GAAK,IACRmY,cAAe/Y,EAAa+Y,gBAGpC8nD,uBAAyBjgE,IACrB,MAAMiY,EACFjY,EAAMiY,cAAgB,EAAIjY,EAAMiY,aAAe,EAEnD,OAAAnY,IAAA,GACOE,GAAK,IACR4gE,sBAAsB,EACtB3oD,gBAAY,EAGpB4oD,sBAAwB7gE,GACpBF,IAAA,GACOE,GAAK,IACR4gE,sBAAsB,IAG9BT,cAAgBngE,GACZF,IAAA,GACOE,GAAK,IACRw4F,oBAAoB,KAIhCj1E,cAAcllB,GAEVA,EAAQmlB,QAAQ,yBAA0BxjB,IACtC,MAAM24F,EAAmBb,EACrB93F,EAAMiY,aACNjY,EAAM4gE,qBACN5gE,EAAMmY,eAEV,OAAArY,IAAA,GAAYE,GAAK,IAAE24F,oBAAgB,IAGvCt6F,EAAQmlB,QAAQ,mBAAoBxjB,GAChCF,IAAA,GACOE,GAAK,IACRw4F,oBAAoB,KAGhC,IAGWI,MAAyB,QAEjC,MAAAI,EAQHJ,EAAkBh4F,QAPlBoX,EAAeghF,EAAfhhF,gBACAE,EAAgB8gF,EAAhB9gF,iBACA2gF,EAAuBG,EAAvBH,wBAEA54B,GADkB+4B,EAAlBD,mBACsBC,EAAtB/4B,wBACAY,EAAqBm4B,EAArBn4B,sBACAV,EAAa64B,EAAb74B,a,4FCnLW,KACXrpC,wBAAkD,QAA3BmiE,EAAE/sF,IAAS6wC,wBAAgB,IAAAk8C,OAAA,EAAzBA,EAA2BniE,wBACpDC,wBAAkD,QAA3BmiE,EAAEhtF,IAAS6wC,wBAAgB,IAAAm8C,OAAA,EAAzBA,EAA2BniE,wBACpDsN,6BAC6B,QADD80D,EACxBjtF,IAAS6wC,wBAAgB,IAAAo8C,OAAA,EAAzBA,EAA2B90D,6BAC/B+0D,UAAoC,QAA3BC,EAAEntF,IAAS6wC,wBAAgB,IAAAs8C,OAAA,EAAzBA,EAA2BD,UACtCz8D,iBAA2C,QAA3B28D,EAAEptF,IAAS6wC,wBAAgB,IAAAu8C,OAAA,EAAzBA,EAA2B38D,iBAC7CE,mBAA6C,QAA3B08D,EAAErtF,IAAS6wC,wBAAgB,IAAAw8C,OAAA,EAAzBA,EAA2B18D,mBAC/C0B,aAAuC,QAA3Bi7D,EAAEttF,IAAS6wC,wBAAgB,IAAAy8C,OAAA,EAAzBA,EAA2Bj7D,aACzCE,eAAyC,QAA3Bg7D,EAAEvtF,IAAS6wC,wBAAgB,IAAA08C,OAAA,EAAzBA,EAA2Bh7D,eAC3CK,gBAA0C,QAA3B46D,EAAExtF,IAAS6wC,wBAAgB,IAAA28C,OAAA,EAAzBA,EAA2B56D,gBAC5CnB,YAAsC,QAA3Bg8D,EAAEztF,IAAS6wC,wBAAgB,IAAA48C,OAAA,EAAzBA,EAA2Bh8D,YACxCH,YAAsC,QAA3Bo8D,EAAE1tF,IAAS6wC,wBAAgB,IAAA68C,OAAA,EAAzBA,EAA2Bp8D,YACxCS,WAAqC,QAA3B47D,EAAE3tF,IAAS6wC,wBAAgB,IAAA88C,OAAA,EAAzBA,EAA2B57D,WACvCH,WAAqC,QAA3Bg8D,EAAE5tF,IAAS6wC,wBAAgB,IAAA+8C,OAAA,EAAzBA,EAA2Bh8D,WACvCa,cAAwC,QAA3Bo7D,EAAE7tF,IAAS6wC,wBAAgB,IAAAg9C,OAAA,EAAzBA,EAA2Bp7D,cAC1C2F,iBAA2C,QAA3B01D,EAAE9tF,IAAS6wC,wBAAgB,IAAAi9C,OAAA,EAAzBA,EAA2B11D,iBAC7CM,qBAA+C,QAA3Bq1D,EAAE/tF,IAAS6wC,wBAAgB,IAAAk9C,OAAA,EAAzBA,EAA2Br1D,qBACjDlO,gBAA0C,QAA3BwjE,EAAEhuF,IAAS6wC,wBAAgB,IAAAm9C,OAAA,EAAzBA,EAA2BxjE,gBAC5C2I,kBAA4C,QAA3B86D,EAAEjuF,IAAS6wC,wBAAgB,IAAAo9C,OAAA,EAAzBA,EAA2B96D,kBAC9CK,WAAqC,QAA3B06D,EAAEluF,IAAS6wC,wBAAgB,IAAAq9C,OAAA,EAAzBA,EAA2B16D,WACvCH,WAAqC,QAA3B86D,EAAEnuF,IAAS6wC,wBAAgB,IAAAs9C,OAAA,EAAzBA,EAA2B96D,WACvC+6D,gCACI,kE,oCCzBO,KACXjiC,4BAA6B,CACzB,WACA,UACA,YACA,UACA,UACA,WACA,YACA,SACA,YACA,aACA,QACA,eACA,YACA,UACA,WACA,eACA,iBACA,cACA,iBACA,SACA,gBAEJJ,oCAAqC,CAAC,MAAO,QAC7CE,iCAAkC,CAAC,QAAS,UAC5CC,+BAAgC,CAAC,UAAW,cAC5CF,iCAAkC,CAAC,UAAW,WAC9CZ,oCAAqC,CACjCE,OAAQ,0BACRE,GAAI,mBACJC,cAAe,gBACf4iC,OAAQ,wBAEZC,OAAQ,CACJC,aAAc,cACdC,eAAgB,iB,oCCpCxB,oVAAO,MAAMC,EAA4B,yBAE5BC,EAAQ,CACjBC,MAAO,QACPC,OAAQ,UAECC,EAAqB,GACrBC,EAAqB,EACrBC,EAAmB,EACnBC,EAAmB,EAEzB,IAAKC,EAAY,SAAZA,GAAY,OAAZA,EAAY,8BAAZA,EAAY,mCAAZA,EAAY,6BAAZA,EAAY,wCAAZA,EAAY,2BAAZA,CAAY,MAQjB,MAAMC,EAAsB,CAACD,EAAaE,cAEpCC,EAAqB,CAC9BH,EAAaI,YACbJ,EAAaK,cACbL,EAAaM,cACbN,EAAaO,eASJC,EAAuD,CAChE,CAACR,EAAaI,aAAc,CACxB57F,KAAMw7F,EAAaI,YACnBK,SAAU,wCACVC,gBAAiB,CACb,6CACA,6CACA,+CACA,8CACA,gDAGR,CAACV,EAAaK,eAAgB,CAC1B77F,KAAMw7F,EAAaK,cACnBI,SAAU,4CACVC,gBAAiB,CACb,iDACA,iDACA,mDACA,kDACA,oDAGR,CAACV,EAAaM,eAAgB,CAC1B97F,KAAMw7F,EAAaM,cACnBG,SAAU,sCACVC,gBAAiB,CACb,2CACA,2CACA,6CACA,4CACA,8CAGR,CAACV,EAAaO,eAAgB,CAC1B/7F,KAAMw7F,EAAaO,cACnBE,SAAU,iDACVC,gBAAiB,CACb,sDACA,sDACA,wDACA,uDACA,yDAGR,CAACV,EAAaE,cAAe,CACzB17F,KAAMw7F,EAAaE,aACnBO,SAAU,qCACVC,gBAAiB,CACb,0CACA,0CACA,4CACA,2CACA,6C,oCCvFZ,wEAGO,MAAMxyC,EAAoBlpD,IAAuB,IAApBiK,EAAajK,EAAbiK,cAChC,MAAQmI,EAAM2S,cAAN3S,EAkCR,OAAOhI,cAAA,QAAAG,SAhCSoxF,MACZ,GAAsD,KAAlD1xF,aAAa,EAAbA,EAAeqjB,QAAQ,wBACvB,OAAOlb,EAAE,sCAEb,OAAQnI,GACJ,IAAK,aACL,IAAK,OACL,IAAK,iBACL,IAAK,OACD,OAAOmI,EAAE,qCACb,IAAK,UACD,OAAOA,EAAE,8BACb,IAAK,SACD,OAAOA,EAAE,6BACb,IAAK,eACL,IAAK,cACD,OAAOA,EAAE,4BACb,IAAK,WACD,OAAOA,EAAE,+BACb,IAAK,YACD,OAAOA,EAAE,gCACb,IAAK,SACD,OAAOA,EAAE,6BACb,IAAK,uBACD,OAAOA,EAAE,iCACb,IAAK,UACD,OAAOA,EAAE,8BACb,QACI,OAAO,KACf,EAGUupF,IAAiB,C,sCCtCnC,kIAGA,MAAMC,EAAwB,IAAInrE,IAAewiD,IAAa0V,eAajD9B,EAAgCA,KAAsB,IAAAgV,EAAAC,EAC/D,MAAMnV,EAIe,QAJDkV,GAAGC,EAAAF,EAClBhqE,SAGAxB,wBAAgB,IAAAyrE,OAAA,EAJEA,EAAA1yF,KAAA2yF,GAMjBC,EAA0BpV,aAAc,EAAdA,EAAgBvhF,KAAK42F,IAAW,IAAAC,EAAAC,EAC5D,MAAO,CACH57E,KAAM07E,EAAOn1F,IACbqM,MAC4B,iBAAjB8oF,EAAO11F,MACR01F,EAAO11F,MACK,QADA21F,EACZD,EAAO11F,aAAK,IAAA21F,OAAA,EAAZA,EAAc/oF,MACxB0hC,YAC4B,iBAAjBonD,EAAO11F,MACI,QADc41F,EAC1BF,EAAO11F,aAAK,IAAA41F,OAAA,EAAZA,EAActnD,YACd,CAAEO,EAAG6mD,EAAOn1F,KACzB,IAGL,OAAOk1F,UAA2B,EAAE,EAG3BI,EAA8BA,CACvCC,EACAxnD,EACA1hC,KAEA0oF,EAAsBrqE,IAAI6qE,EAAY,CAClClpF,QACA0hC,eACF,EAGOynD,EAAkCD,KACtCA,GAAcA,EAAW11F,OAAS,GAGvCk1F,EAAsB93F,OAAOs4F,EAAW,C,quCC3CrC,MAAM/iF,EACRijF,GAAsB56F,IACnBA,EAAS0oE,YAAoBkyB,IAC7B56F,EAAS0X,EAAuBkjF,EAAiBrjF,WAAW,EAGvD6G,EAA8BA,IAAM1G,EAAuB,MAE3DA,EAA0BH,GAAevX,IAClDA,EAASgU,IAAgBqK,iBACzBre,EAAS2oE,eACT3oE,EAASsoE,YAAa,CAAE/wD,eACxBvX,EAAS66F,EAAiBtjF,IAC1BvX,EAAS86F,EAAyBvjF,GAAW,EAG3CsjF,EAAoBtjF,GAAc5W,UACpC,GAAK4W,EAGL,IACI,MAAM3Q,QAAiBm0F,EAAWxjF,GAClCvX,EAASuoE,YAAe3hE,EAAS/E,MACrC,CAAE,MAAOM,GAAO,IAAA0nF,EACoB,OAA5B1nF,SAAe,QAAV0nF,EAAL1nF,EAAOyE,gBAAQ,IAAAijF,OAAV,EAALA,EAAiB5vE,SACjBtX,YAAOR,EAEf,GAGE24F,EAA4BvjF,GAAc5W,MAAOX,EAAUY,KAC7D,GAAK2W,EAGL,IACI,MAAM3Q,QAAiBo0F,EAAuBzjF,GAG1C3W,IAAWV,YAAYC,gBACnB,oCAIJH,EAAS4oE,YAAuBhiE,EAAS/E,OACrC+E,EAAS/E,KAAKumE,gCACdpoE,EAAS,CACLgC,KAAM,iCACNzD,QAAS,CACLq2C,aACIhuC,EAAS/E,KAAKumE,mCAK9BxhE,EAAS/E,KAAKs8D,mBACdn+D,EAAS,CACLgC,KAAM,uBAGlB,CAAE,MAAOG,GAAO,IAAA2nF,EACoB,OAA5B3nF,SAAe,QAAV2nF,EAAL3nF,EAAOyE,gBAAQ,IAAAkjF,OAAV,EAALA,EAAiB7vE,SACjBtX,YAAOR,EAEf,GAGE64F,EAA0BzjF,GAC5B0jF,IAAmBt7F,IAAK,oCAAmC4X,IAAWtZ,IAAA,GAC/D4B,IAAaq7F,kBAAgB,IAChCt7F,cAAe,4BAGjBm7F,EAAcxjF,GAChB0jF,IAAmBt7F,IAAK,kCAAiC4X,IAAWtZ,IAAA,GAC7D4B,IAAaq7F,kBAAgB,IAChCt7F,cAAe,e,oNC/EhB,MAAMrC,EAAe,CACxBwmB,OAAQ,EACRi8C,YAAa,GACb/pD,WAAY,EACZklF,cAAe,GACfC,WAAY,GACZC,cAAe,EACfh3F,YAAa,KACbwe,UAAU,EACV9L,OAAQ,GACRxT,OAAQ,EACR+3F,QAAS,KACTj5E,eAAgB,GAChBk5E,aAAc,KACdC,QAAS,GACTC,cAAe,KACfprF,gBAAiB,GACjBirE,cAAe,GACftrB,eAAgB,EAChB5rD,MAAO,KACPs3F,UAAW12E,IAAYG,QACvB26C,YAAa,MAGXpwD,EAAQ7R,YAAY,CACtBC,KAAM,aACNP,eACAQ,SAAU,CACNu4E,kBAAmBA,IACR/4E,EAEXo+F,cAAeA,CAACx9F,EAAKG,KAA8C,IAAAs9F,EAAAt9F,EAA1CC,QAAW+E,EAAIs4F,EAAJt4F,KAAMg4F,EAAOM,EAAPN,QAASE,EAAOI,EAAPJ,QAC/C,MAAM17B,EAAcx8D,EAAKw8D,YACnB3P,EAAU7sD,EAAK6sD,QACfptC,EAAYm5D,YACdpc,EAAYj9C,SACZi9C,EAAY2a,WACZ3a,EAAYhsB,SACZqc,EAAQxtC,SACRwtC,EAAQ57B,oBACR47B,EAAQP,mBACRO,EAAQ8nB,gBACR9nB,EAAQV,uBAENjsC,EAAgBC,YAClBV,EACA+8C,EAAY1oD,WACZ+4C,EAAQntC,iBACR88C,EAAY3oD,WACZg5C,EAAQxtC,SAAW,GAEvBxkB,EAAM4lB,OAASP,EAAcO,OAC7B5lB,EAAMyW,mBAAqBkrD,EAAYlrD,mBACvCzW,EAAM6hE,YAAc18D,EAAK08D,YACzB7hE,EAAM8X,WAAa6pD,EAAY7pD,WAC/B9X,EAAMg9F,cAAgB73F,EAAK08D,YAAYt8D,KAClCm4F,GAAeA,EAAWj9E,OAE/BzgB,EAAMkG,YAAcy7D,EAAYz7D,YAChClG,EAAMykB,QAAUk9C,EAAYl9C,QAC5BzkB,EAAM0kB,SAAWi9C,EAAYj9C,SAC7B1kB,EAAM4Y,OAAS+oD,EAAY/oD,OAC3B5Y,EAAMoF,OAASu8D,EAAYv8D,OAC3BpF,EAAMm9F,QAAUA,EAChBn9F,EAAMkkB,eAAiBy9C,EAAYz9C,eACnClkB,EAAMq9F,QAAUA,EAChBr9F,EAAMkS,gBAAkByvD,EAAYzvD,gBACpClS,EAAMm9E,cAAgBxb,EAAYwb,cAClCn9E,EAAM6xD,eAAiB8P,EAAY9P,eACnC7xD,EAAMiG,MAAQ07D,EAAY17D,MAC1BjG,EAAMu9F,UAAY57B,EAAYj9C,SACxBmC,IAAYE,WACZF,IAAYC,KAClB9mB,EAAM2hE,YAAcA,EACpB2Y,YAA4Bt6E,EAAM,EAEtC29F,aAAcA,CAAC39F,EAAKO,KAAkB,IAAdH,EAAOG,EAAPH,QACpBJ,EAAMu9F,UAAYn9F,CAAO,EAE7Bw9F,cAAeA,CAAC59F,EAAKmiB,KAA6C,IAAhC86E,EAAU96E,EAAnB/hB,QAAqB88F,EAAa/6E,EAAb+6E,cAC1Cl9F,EAAMi9F,WAAaA,EACnBj9F,EAAMk9F,cAAgBA,CAAa,KAKxChzD,EACH34B,EAAM3Q,QADwB48F,GAAFtzD,EAAjBiuC,kBAAgCjuC,EAAbszD,eAAeG,EAAYzzD,EAAZyzD,aAEpC7rF,GAF+Do4B,EAAb0zD,cAExCrsF,EAAMO,Q,8DCzCd,KACX2R,WAtDuB0c,GACvBh9B,IAAa3B,IAAI,6BAA8B,CAC3C6T,OAAQ,CACJ8qB,aAEJ+T,iBAAiB,IAkDrBlwB,kBA/C6BxhB,SAC7BW,IAAa3B,IACR,oDAAmD2+B,KA8CxD6C,kBA3C6BxgC,SAC7BW,IAAa8O,KACT,6DACAzJ,GAyCJ46B,iBAtC4B5gC,SAC5BW,IAAa3B,IACR,0DAAyDyhB,KAqC9DsgB,gBAlC2B/gC,SAC3BW,IAAa8O,KACT,2DACAzJ,GAgCJ06B,cA7ByB1gC,SACzBW,IAAa8O,KACT,yDACAzJ,GA2BJk8D,oBAxB+BliE,SAC/BW,IAAa3B,IACR,sEAAqEyhB,KAuB1E0iC,kBApB6BnjD,UAAA,IAAS29B,EAAShgC,EAATggC,UAAW6B,EAAa7hC,EAAb6hC,cAAa,OAC9D7+B,IAAa3B,IACR,0DAAyD2+B,IAC1D,CACI9qB,OAAQ,CACJjL,cAAe43B,GAEnBkS,iBAAiB,GAExB,E,+sCCiDE,MAAM2pD,EAAmBA,KAAA,CAC5BC,UAAW,CACPC,QAAS,EACTC,cAAe,GAEnBC,OAAQ,IA8FCrX,EACR16E,GAAiCrK,IAC9B,MAAMq8F,EACFp7F,IAAMC,KAAKC,IAAWuE,mBACrB,CACGw2F,QAAS,EACTC,cAAe,GAGjBh+F,EApGiBG,KAUP,IATpB+G,EAAU/G,EAAV+G,WAAUi3F,EAAAh+F,EACVi+F,0BAAkB,IAAAD,EAAG,EAACA,EAAAE,EAAAl+F,EACtBm+F,iCAAyB,IAAAD,EAAG,EAACA,EAC7BE,EAAgBp+F,EAAhBo+F,iBACAC,EAAcr+F,EAAdq+F,eACAp3F,EAAUjH,EAAViH,WACAvE,EAAc1C,EAAd0C,eACA47F,EAAqBt+F,EAArBs+F,sBACAC,EAAmBv+F,EAAnBu+F,oBAEA,MAAMC,EAASd,IAMf,OAJAc,EAAOb,UAAUC,QAAUK,EAE3BO,EAAOb,UAAUE,cAAgBM,EAE1BlxF,YAA2B,CAC9BwxF,qBAAsB,CAAE57E,KAAM4lB,IAAYrpC,QAC1Co/F,SACAz3F,WAAYA,EACZ23F,aAAc,CACV77E,KAAM4lB,IAAYrpC,OAClB4F,KAAM,CAAC,GAEXwjC,eAAgB,CACZ3lB,KAAM4lB,IAAYrpC,OAClB0G,MAAO,GACP4iC,IAAK,GACLC,eAAe,EACfC,YAAa,GACb5jC,KAAM,MAEV25F,OAAQ,CACJC,aAAc,MAElBC,uBAAwB,CACpBh8E,KAAM4lB,IAAYrpC,OAClBwG,UAAW,KACXC,QAAS,KACTC,MAAO,KACPC,YAAa,KACbC,UAAW,IAEf84F,YAAa,CAAEj8E,KAAM4lB,IAAYrpC,OAAQ2C,aAAa,GACtD6C,UAAW,CACPie,KAAM4lB,IAAYrpC,OAClBoE,MAAO,GACPwB,KAAM,KACNH,SAAS,GAEboC,aACAm3F,mBACAC,iBACA37F,eAAc/C,EAAA,CACVo/F,oBAAoB,EACpBjb,gBAAgB,EAChBkb,eAAe,EACfjb,cAAc,EACdC,+BAA+B,EAC/Bib,8BAA8B,EAC9B9a,yCAAyC,GACtCzhF,GAEPw8F,WAAY,CACRr8E,KAAM4lB,IAAYrpC,OAClBu8E,MAAO,IAEXwjB,kBAAmB,CACft8E,KAAM4lB,IAAYrpC,OAClBu8E,MAAO,IAEXyjB,WAAY,CACRC,QAAQ,EACRC,SAAU,MAEdC,kBAAmB,CACfF,QAAQ,GAEZf,wBACAkB,gBAAiB,CACbH,SAAUd,IAEhB,EAiBgBlxF,CAAgB,CAC1BtG,WACIJ,UAAWmF,WAAWtF,IAA6B,YAAEK,MACrDL,IAA6B,YAAE+rB,QACnC0rE,mBAAoBF,EAAgBH,QACpCO,0BAA2BJ,EAAgBF,cAC3CO,iBACiC,iBAAtBryF,EAASivB,UAChBjvB,EAASivB,SAASzoB,SAAS,aAC/B8rF,iBAAkBtyF,EAAS0zF,UAC3Bx4F,WACIN,UAAWmF,WAAWtF,IAA6B,YAAEK,MACrDL,IAA6B,YAAE+rB,QACnC7vB,eAAgBC,IAAMC,KAAKC,IAAWC,kBAAoB,CAAC,EAC3Dw7F,sBAAuBvyF,EAASuyF,sBAChCC,oBACuC,OAAnCxyF,EAASM,wBACRN,EAASiB,YACTjB,EAAS2zF,SAElBh+F,EAASyL,YAAWtN,GAAO,C,4YClO5B,MAAMwN,EAAmBtB,IAAa,IAAA4zF,EAAAC,EACzC,MAAMhhB,EAAkB,IAAI5mC,IAAIjsC,EAAS6yE,iBAAmB,IAQ5D,MAAO,CACHihB,cAHgB,QALDF,EAE0B,QAF1BC,EACfj5F,UACKmF,WAAWg0F,YAAyB,IAAAF,OAAA,EADzCA,EAEM9sF,MAAM,KACPd,OAAOuK,SACPnX,IAAIskE,eAAO,IAAAi2B,IAAI,GAIpB/gB,gBAAiBtkE,MAAM0sB,KAAK43C,GAC/B,E,gBCFL,MAEamhB,EAAqB96F,GAAW5C,MAAOX,EAAUC,KAC1DD,EAAS,CACLgC,KAAM0J,IAAY4yF,oBAClB//F,QAASgF,IAGb,MACa46F,EACTl+F,IADA6B,MAASq8F,cAGbl5F,UAAWC,aACPk5F,IACAD,EAActsF,KAAK,KACnB,IAAI8d,MAAK,IAAIA,MAAOC,UAfS,QAgBhC,EAUQ2uE,EAAkBA,CAACh7F,EAAQi7F,IAAW,CAACx+F,EAAUY,KACpCA,IAAWkB,MAAMo7E,gBAAgBrsE,SAAStN,KAC1Ci7F,GAClBx+F,EAAS,CACLgC,KAAM0J,IAAY+yF,SAClBlgG,QAAS,CAAEgF,SAAQi7F,WAE3B,EAGSE,EAAsBpnE,IAAO,CACtCt1B,KAAM0J,IAAYizF,mBAClBpgG,QAAS,CAAE+4B,aAGFsnE,EAA2BtnE,IAAO,CAC3Ct1B,KAAM0J,IAAYmzF,sBAClBtgG,QAAS,CAAE+4B,aAWFwnE,EACT,SACIv7F,EACAqB,GAAK,IACLm6F,EAAkD13F,UAAArC,OAAA,QAAAyO,IAAApM,UAAA,IAAAA,UAAA,GAAQ,OAE9D1G,MAAOX,EAAUC,KACb,MAAA++F,EAII/+F,IAAUg/F,EAAAD,EAHVj+F,OAAUD,EAAUm+F,EAAVn+F,WAAYkK,EAAQi0F,EAARj0F,SACbkyE,EAAe8hB,EAAxBl9F,MAASo7E,gBACTjmD,EAAI+nE,EAAJ/nE,KAEJ,IAAIymD,EAEAA,OADUjqE,IAAV7O,EACmBs4E,EAAgBrsE,SAAStN,IAExBqB,EAGxB,MAAMvE,EAAcE,OAAOC,SAAS6lD,WAC9B64C,EAAmBA,IACrBl/F,EAASwiD,IAAUziD,OAAO,CAAEM,iBAChC,GAAKS,EAsBL,OAjBAd,EAASu+F,EAAgBh7F,GAASm6E,IAE7BA,IACDyhB,IAAQn6B,cAAc,kBAAmB,CACrCh6D,SAAUA,EACVzH,OAAQA,IAEZvD,EAAS6oC,gBAERk2D,GACDxlE,IAAUC,WAAW,CACjB9R,SAAU,YACVjI,OAAQi+D,EAAmB,SAAW,MACtC5qE,MAAOmkB,EAAKj1B,OAIbswC,YAAiB/uC,GAASm6E,GAC5Bn8E,MAAK,KACFvB,EACIwiD,IAAUv+C,iCACNm7F,IAAYC,kBACZ,6CACA,2BACA,iCACA,CAAC,wBAGD3hB,KAEXj8E,OAAOU,IAGJ,GADAnC,EAASu+F,EAAgBh7F,EAAQm6E,IACzBv7E,EAAME,UACLV,IAAWW,WACZ48F,IAKR,OAAQ/8F,EAAME,SACV,KAAKV,IAAWa,UAChB,KAAKb,IAAWc,QAChB,KAAKd,IAAWe,QAChB,KAAKf,IAAWw/D,iBACZ,MACJ,QACIx+D,YAAOR,GAEf,IArDJ+8F,GAsDE,CACT,EAEQzzF,EAAcpB,IAAQ,CAC/BrI,KAAM0J,IAAY9P,WAClB2C,QAASoN,EAAgBtB,I,oCCrJ7B,4GAAMi1F,EAAkB,IAAIhpD,IAAI,CAC5B,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,OAGSmuC,EAAyBF,IACjC+a,EAAgBz5B,IAAI0e,EAAQvlC,gBAAgBvvB,eAEpC8vE,EAA4BvgD,IACpCsgD,EAAgBz5B,IAAI7mB,EAAgBvvB,eAE5B+vE,EAAyB9uF,GAC3BrU,OAAOC,KAAKmjG,GACdnvF,OAAOivF,GACP77F,KAAK6zC,IAAI,CACNA,OACAz5C,KAAM4S,EAAEgvF,EAA2BnoD,QAEtCtkC,MAAK,CAACV,EAAGC,IAAOD,EAAEzU,KAAO0U,EAAE1U,KAAO,GAAK,IAKnC4hG,EAA8BC,IACvC,MAAM3Z,EAAcyZ,EAAUE,EAAYlwE,eAC1C,IAAKu2D,EACD,KAAO,eAAc2Z,mCACzB,OAAO3Z,CAAW,EAGTyZ,EAAY,CACrBG,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJ/2D,GAAI,aACJg3D,GAAI,aACJC,GAAI,aACJC,GAAI,aACJ7c,GAAI,aACJ8c,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJ5d,GAAI,aACJ6d,GAAI,aACJv5E,GAAI,aACJw5E,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJ53F,GAAI,aACJ63F,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJ/iB,GAAI,aACJgjB,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJ53F,GAAI,aACJ63F,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJpuF,GAAI,aACJquF,GAAI,aACJ5lB,GAAI,aACJ6lB,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJlnE,GAAI,aACJmnE,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,aACJC,GAAI,a,oCC1SD,IAAKC,EAAU,SAAVA,GAAU,OAAVA,EAAU,gBAAVA,EAAU,cAAVA,EAAU,sBAAVA,EAAU,cAAVA,EAAU,0BAAVA,CAAU,MAQPA,K,w6CCYR,MAAMC,EAAmB/vG,IAEH,IADzBgwG,EAAgBhwG,EAAhBgwG,iBAEA,MAAMC,EAAoB9qD,YAAY9vC,KACtC66F,EACIC,IADIC,EAAsBF,EAAtBE,uBAAwBC,EAAuBH,EAAvBG,wBAQ/BC,EAAA3gD,EAHG4gD,mBACAP,EAAiB94F,qCACbm5F,GACP,GALGn5F,EAAmCo5F,EAAA,GACnCE,EAAsCF,EAAA,GAUrCG,EAAA9gD,EAHD4gD,mBACIP,EAAiBx6F,6BACb46F,GACP,GAJE56F,EAA2Bi7F,EAAA,GAAEC,EAA8BD,EAAA,GAMlE,GAAI/zB,YAA+BuzB,GAC/B,OAAO,KAgBX,OACI7lG,cAACumG,EAAwB,CACrBz5F,oCACIA,EAEJ1B,4BAA6BA,EAC7Bo7F,oCAnBqCx5F,IACzCpU,IAAa6tG,IAAI,gDAAiD,CAC9Dz5F,qBAEJo5F,EAAuCp5F,EAAiB,EAkBpD05F,4BAf6BpwD,IACjC19C,IAAa6tG,IAAI,wCAAyC,CACtDnwD,oBAEJgwD,EAA+BhwD,EAAgB,GAY7C,EAIGvpC,EAAgDA,CACzD45F,EACA1kG,EACA2kG,KAEA,MAAMC,EAAsB5qB,YACxBh6E,EACA2kG,GAGJ,OAAOD,IAA2BE,EAC5BA,EACA,IAAI,EAGDx7F,EACTy7F,GAEO,CAAC,KAAM,MAAM3+F,SAAS2+F,GACvBA,EACA,KAGGf,EAA0CA,KAInD,MAAM9O,EAAcl8C,YAAY9vC,KACxBwZ,EAAao2B,cAAbp2B,SACFmiF,EAA0BG,YAC5B,2BAGJ,MAAO,CACHf,uBACI36F,EAAsC4rF,GAC1CgP,wBAAyBl5F,EACrB0X,EACAwyE,EACA2P,GAEP,EAUQL,EAA2BvwG,IAMH,IALjC8W,EAAmC9W,EAAnC8W,oCACA1B,EAA2BpV,EAA3BoV,4BACAo7F,EAAmCxwG,EAAnCwwG,oCACAE,EAA2B1wG,EAA3B0wG,4BAA2BM,EAAAhxG,EAC3BixG,sBAAc,IAAAD,GAAQA,EAEtB,MAAQh/F,EAAM2S,cAAN3S,EACF69F,EAAoB9qD,YAAY9vC,KAChC27F,EAA0BG,YAC5B,2BAGEG,EAAuB,IACtB,IAAIt5D,IAAI,CACPquC,YACI4pB,EACAe,GAEJ,KACA,QAEN5rG,KAAK6zC,GAASs4D,EAAkBt4D,EAAM7mC,KAElCo/F,EAAwB,CAC1BC,EAAiB,KAAMr/F,GACvBq/F,EAAiB,KAAMr/F,IAGrBs/F,EAAiBC,IACnB,SACAN,EAAiB,WAAa,YAE5BO,EAAoBD,IACtB,SACAN,EAAiB,WAAa,YAG5BQ,EAAmB,CAAC,KAAM,MAAMt/F,SAAS09F,GACzC6B,EAAkBH,IAAW,MAAOE,GAAoB,QAE9D,OACInnG,eAAA,OAAKX,UAAU,OAAMQ,SAAA,CACjBG,eAAA,OAAKX,UAAW+nG,EAAgBvnG,SAAA,CAC5BG,eAAA,OAAKX,UAAW2nG,EAAennG,SAAA,CAC3BH,cAAA,SACI6+C,QAAQ,sCACRl/C,UAAU,8BAA6BQ,SACtC6H,EAAE,8CAEPhI,cAAA,OAAKL,UAAU,uCAAsCQ,SAChD6H,EAAE,sDAGXhI,cAAA,OAAKL,UAAW6nG,EAAkBrnG,SAC9BH,cAAA,UACImF,GAAG,sCACHxF,UAAU,+CACVzD,MAAO4Q,EACP4xC,SAAWhiD,GACP8pG,EAAoC9pG,EAAEgC,OAAOxC,OAChDiE,SACA+mG,EAAqBlsG,KAAI4c,IAAA,IAAG1b,EAAK0b,EAAL1b,MAAOga,EAAI0B,EAAJ1B,KAAI,OACpClW,cAAA,UAAoB9D,MAAOA,EAAMiE,SAC5B+V,GADQha,EAEJ,WAKxBurG,GAAoBr8F,GACjB9K,eAAA,OAAKX,UAAU,MAAKQ,SAAA,CAChBG,eAAA,OAAKX,UAAW2nG,EAAennG,SAAA,CAC3BH,cAAA,SACI6+C,QAAQ,8BACRl/C,UAAU,8BAA6BQ,SACtC6H,EAAE,sCAEPhI,cAAA,OAAKL,UAAU,uCAAsCQ,SAChD6H,EAAE,8CAGXhI,cAAA,OAAKL,UAAW6nG,EAAkBrnG,SAC9BH,cAAA,UACImF,GAAG,8BACHxF,UAAU,+CACVzD,MAAOkP,EACPszC,SAAWhiD,GACPgqG,EAA4BhqG,EAAEgC,OAAOxC,OACxCiE,SACAinG,EAAsBpsG,KAAI8c,IAAA,IAAG5b,EAAK4b,EAAL5b,MAAOga,EAAI4B,EAAJ5B,KAAI,OACrClW,cAAA,UAAoB9D,MAAOA,EAAMiE,SAC5B+V,GADQha,EAEJ,aAM3B,EAMRirG,EAAoBA,CAACt4D,EAAc7mC,KAAY,CACjD9L,MAAO2yC,EACP34B,KAAMlO,EAAEo1E,YAA6BvuC,MAGnCw4D,EAAmBA,CAACx4D,EAAc7mC,KAAY,CAChD9L,MAAO2yC,EACP34B,KAAMlO,EAAEgvF,YAA2BnoD,K,oCC1OvC,kCAAO,MAAM3T,EAAsBA,KAAA,CAC/BoB,gBAAgB,EAChB3B,QAAS,KACTqC,gBAAiB,KACjB1sB,SAAU,KACVq3F,YAAY,EACZC,aAAa,G,oCCNjB,8UAiBA,MAAMC,EAAmB1yG,YAAY,CACjCC,KAAM,cACNP,aAAc,CAAC,EACfQ,SAAU,CACNka,aAAcA,CAAC9Z,EAAKG,KAAkB,IAAdC,EAAOD,EAAPC,QACpBJ,EAAM+Z,UAAY3Z,CAAO,EAE7Bs4E,eAAgBA,CAAC14E,EAAKO,KAAkB,IAAdH,EAAOG,EAAPH,QACtBJ,EAAM2hE,YAAcgX,YAAev4E,EAAQ,EAE/CiyG,WAAYA,CAACryG,EAAKmiB,KAAkB,IAAd/hB,EAAO+hB,EAAP/hB,QAClBJ,EAAMg4C,QAAU53C,CAAO,EAE3B66E,eAAgBA,CAACj7E,EAAKqiB,KAAkB,IAAdjiB,EAAOiiB,EAAPjiB,QACtBJ,EAAM63E,YAAcz3E,CAAO,EAE/Bw6E,sCAAuCA,CAAC56E,EAAKwiB,KAAkB,IAAdpiB,EAAOoiB,EAAPpiB,QAC7CJ,EAAMyhE,mCAAqCrhE,CAAO,EAEtDy6E,+BAAiC76E,IAC7BA,EAAMuhE,sBAAwB,KAC9BvhE,EAAMkiE,2BACFmV,IAA4BG,8BAA8B,EAElEmD,yBAA0BA,CAAC36E,EAAK2iB,KAAkB,IAAdviB,EAAOuiB,EAAPviB,QAChCJ,EAAMuhE,sBAAwBnhE,EAC9BJ,EAAMkiE,2BACFmV,IAA4BC,OAAO,EAE3CwD,2BAA6B96E,IACzBA,EAAMuhE,sBAAwB,KAC9BvhE,EAAMkiE,2BACFmV,IAA4BC,OAAO,EAE3CyD,kCAAoC/6E,IAChCA,EAAMuhE,sBAAwB,KAC9BvhE,EAAMkiE,2BACFmV,IAA4BrwD,OAAO,EAE3Cg0D,mCAAqCh7E,IACjCA,EAAMkiE,2BACFmV,IAA4BE,YAAY,KAKzC66B,MAAwB,QAEhC,MAAAE,EAWHF,EAAiBxxG,QAVjBkZ,EAAYw4F,EAAZx4F,aACA4+D,EAAc45B,EAAd55B,eACA25B,EAAUC,EAAVD,WACAp3B,EAAcq3B,EAAdr3B,eACAL,EAAqC03B,EAArC13B,sCACAC,EAA8By3B,EAA9Bz3B,+BACAF,EAAwB23B,EAAxB33B,yBAEAI,GAD0Bu3B,EAA1Bx3B,2BACiCw3B,EAAjCv3B,mCACAC,EAAkCs3B,EAAlCt3B,kC,oCC3EJ,uOASO,MAAM/8E,EAAW,CAAEs0G,YAAa,eAO1BC,EAAwBC,IAC1B,CAAEA,WAGAC,EAAU50G,YAAU,CAC7BC,YAAa,UACbC,cACAC,SAAUC,OAAO2W,OAAO5W,GACxBG,UAAYC,IAAO,CACfs0G,eAAgBt0G,EAAQK,MAA2C,CAC/DM,aAAc,CAACf,EAASs0G,aACxB7zG,MAAOyB,IAAgB,IAAbsyG,EAAMtyG,EAANsyG,OAEN,MAAQ,GADQxqG,IAAW,GAAK,+BACGkH,IAAGC,UAAU,CAAEqjG,YAAW,QAM9DG,EAA4CF,EAA5CE,uBAAmCzzG,GAASuzG,EAApBt0G,UAAoBs0G,EAATvzG,K,oCCnClD,0EAIO,MAAMimB,EAAoCA,KAC7C,MAAMxH,EAAQi1F,cAQd,OANuC5iD,uBAClC8lC,GACG+c,YAAmC/c,EAAiBn4E,IACxD,CAACA,GAGgC,C,oCCbzC,kCAAO,MAAM43E,EAAa,CACtBud,SAAU,YACVtd,iBAAkB,uBAClBud,eAAgB,qBAChBC,uBAAwB,0BACxBC,oBAAqB,uBACrBxd,aAAc,wBACdyd,WAAY,uBACZC,WAAY,sBACZzd,aAAc,wBACdC,eAAgB,sBAChByd,cAAe,0BACfC,SAAU,qBACVC,gBAAiB,4BACjBC,cAAe,0BACfC,sBAAuB,kCACvBC,eAAgB,2BAChBC,iBAAkB,6BAClBC,gBAAiB,4BACjBC,QAAS,oBACTC,SAAU,qBACVC,SAAU,qBACVC,SAAU,W,yoCCpBd,MAgDaz6E,EAA2Bv5B,IACpC,MAAMi0G,EAAeh4E,YAAmBj8B,GAElCk0G,IACAl0G,GAASi0G,GAAgBA,EAAaj4E,UAEtCo5C,EAtDgB++B,EAACF,EAAcC,KAC9B,CACH,wBACIA,GAAuBD,EAAaj4E,UAAU1B,OACxC25E,EAAaj4E,UAAU1B,OAAOxB,KAC9B,GACV,wBACIo7E,GAAuBD,EAAaj4E,UAAU1B,OACxC25E,EAAaj4E,UAAU1B,OAAOC,KAC9B,GACV,6BAA8B25E,EACxBD,EAAaj4E,UAAU3H,kBACvB,GACN,uCACI6/E,GAAuBD,EAAaj4E,UAAUq4C,cACxC4/B,EAAaj4E,UAAUq4C,cAAclnB,aACrC,GACV,+BACI+mD,GAAuBD,EAAaj4E,UAAUq4C,cACxC4/B,EAAaj4E,UAAUq4C,cAAc59C,KACrC,GACV,kCACIy9E,GAAuBD,EAAaj4E,UAAUq4C,cACxC4/B,EAAaj4E,UAAUq4C,cAActoB,QACrC,GACV,iCACImoD,GAAuBD,EAAaj4E,UAAUq4C,cACxC4/B,EAAaj4E,UAAUq4C,cAAckB,OACrC,GACV,sCACI2+B,GAAuBD,EAAaj4E,UAAUs5C,aACxC2+B,EAAaj4E,UAAUs5C,aAAanoB,aACpC,GACV,8BACI+mD,GAAuBD,EAAaj4E,UAAUs5C,aACxC2+B,EAAaj4E,UAAUs5C,aAAa7+C,KACpC,GACV,gCACIy9E,GAAuBD,EAAaj4E,UAAUs5C,aACxC2+B,EAAaj4E,UAAUs5C,aAAaC,OACpC,KAcS4+B,CAAkBF,EAAcC,GAEvD,OAAAp0G,IAAA,GACOs1E,GAAc,IACjB,oBAAqB8+B,EACfD,EAAaj4E,UAAUo4E,SACvB,GACN,4BACIF,GAAuBD,EAAaj4E,UAAUo4C,UACxC6/B,EAAaj4E,UAAUo4C,UAAUigC,MACjC,GACV,2BACIH,GAAuBD,EAAaj4E,UAAUo4C,UACxC6/B,EAAaj4E,UAAUo4C,UAAUjtC,KACjC,GACV,yBACI+sE,GAAuBD,EAAaj4E,UAAUo4C,UACxC6/B,EAAaj4E,UAAUo4C,UAAUhtC,GACjC,GACV,mBAAoB8sE,EACdD,EAAaj4E,UAAUrV,QACvB,GACN,yBAA0ButF,EACpBD,EAAaj4E,UAAUplB,cACvB,GACN,oBAAqBs9F,EACfD,EAAaj4E,UAAU2Z,SACvB,GACN,wBAAyBu+D,EACnBD,EAAaj4E,UAAUs4E,aACvB,GACN,wBAAyBJ,EACnBD,EAAaj4E,UAAUo6D,aACvB,GACN,6BACI8d,GAAuBD,EAAaj4E,UAAUt9B,MACxCu1G,EAAaj4E,UAAUt9B,MAAM61G,WAC7B,GACV,wBACIL,GAAuBD,EAAaj4E,UAAUt9B,MACxCu1G,EAAaj4E,UAAUt9B,MAAM81G,MAC7B,GACV,8BACIN,GAAuBD,EAAaj4E,UAAUt9B,MACxCu1G,EAAaj4E,UAAUt9B,MAAMs2E,YAC7B,GACV,+BAAgCk/B,EAC1BD,EAAaj4E,UAAU5F,oBACvB,GACN,sBAAuB89E,EACjBD,EAAaj4E,UAAUy4E,WACvB,GACN,yCACIP,GAAuBD,EAAaj4E,UAAUq4C,cACxC4/B,EAAaj4E,UAAUq4C,cAAcvoB,eACrC,GACV,uBACIooD,GAAuBD,EAAaj4E,UAAUlnB,KACxCm/F,EAAaj4E,UAAUlnB,KAAKk/D,MAC5B,GACV,yBACIkgC,GAAuBD,EAAaj4E,UAAUlnB,KACxCm/F,EAAaj4E,UAAUlnB,KAAKi/D,QAC5B,GACV,kBAAmBmgC,EACbD,EAAaj4E,UAAU04E,OACvB,GACN,6BAA8BR,EACxBD,EAAaj4E,UAAU3H,kBACvB,IAAE,EASHsgF,EAA0BA,CAAClyG,EAAUmyG,KAC9C,MAAMC,EAAQt7E,EAAwB92B,KAItC,OAAOvE,OAAOC,KAAK02G,GAAOl6F,MAAMxV,MACvB0vG,EAAM1vG,KAAUyvG,EAAczvG,OAJpBA,MACb0vG,EAAM1vG,IACR0vG,EAAM1vG,GAAM+iD,aAAe0sD,EAAczvG,GAAM+iD,WAKxC4sD,CAAU3vG,IACnB,C,44CC9HN,MAAM4vG,EAAuBA,CACzBpxG,EACAiM,EACAolG,IAEOrxG,EAAM4B,KAAK0vG,IAAK,IAAAC,EAAA,OAAAp1G,IAAA,GAChBm1G,GAAK,IACRtxG,MAAkB,QAAbuxG,EAAED,EAAMtxG,aAAK,IAAAuxG,OAAA,EAAXA,EAAa3vG,KAAKJ,GACdyK,IAAoBzK,EAAKyK,gBAAe9P,IAAA,GAElCqF,GACA6vG,GAEP7vG,KACR,IAIGgwG,EAAoCA,CAC7CC,EACAC,IAEON,EAAqBM,UAAU,GAAID,EAAMxlG,gBAAiB,CAC7D0lG,kBAAmBF,EAAMrpD,UAIpBwpD,EAAgCA,CACzCH,EACAC,IAEON,EAAqBM,UAAU,GAAID,EAAMxlG,gBAAiB,CAC7D4lG,uBAAwBJ,EAAMK,gBAIzBC,EAAsCA,CAC/CN,EACAC,IAEON,EAAqBM,UAAU,GAAID,EAAMxlG,gBAAiB,CAC7D+lG,eAAgBP,EAAM7/B,SAErBhwE,KAAK0vG,IAAK,IAAAW,EAAA,OAAA91G,IAAA,GACJm1G,GAAK,IACRtxG,MAAkB,QAAbiyG,EAAEX,EAAMtxG,aAAK,IAAAiyG,OAAA,EAAXA,EAAazjG,QACfhN,GAASA,EAAKwwG,iBAAmBP,EAAM7/B,UAC3C,IAEJpjE,QAAQ8iG,IAAK,IAAAY,EAAAC,EAAA,OAAwB,QAAxBD,EAAgB,QAAhBC,EAAKb,EAAMtxG,aAAK,IAAAmyG,OAAA,EAAXA,EAAajvG,cAAM,IAAAgvG,IAAS,IC7C1CE,EAAmB,CAAEC,cAAe,iBAC3CC,EAAoD,IAAI99D,IAEjD+9D,EAAcp4G,YAAU,CACjCC,YAAa,cACbC,cACAC,SAAUC,OAAO2W,OAAOkhG,GACxB33G,UAAYC,IAAO,CACf4yE,cAAe5yE,EAAQE,SAGrB,CACEG,MAAQ0B,IACG,CACHxB,IAAK,0CACLC,OAAQ,OACRC,KAAMsB,IAGdoC,qBAAqB4yG,EAAKj1G,GAAgC,IAA5B0B,EAAQ1B,EAAR0B,SAAUwG,EAAclI,EAAdkI,eACpC,MAAM8tG,EAAe,GACrB,IAAK,MAAMC,KAAYH,EAA2B,CAC9C,MAAM3tG,EAAczG,EAChBq0G,EAAY/2G,KAAKoJ,gBACb,mBACA6tG,GACCrkG,IACG,MAAMy7E,EACF2nB,EACIC,EACArjG,EAAMpO,OAGdzF,OAAO6K,OAAOgJ,EAAO,CACjBpO,MAAO6pF,GACT,KAKd2oB,EAAa/iG,KAAK9K,EACtB,CAEA,UACUD,CACV,CAAE,MACE,IAAK,MAAM+sG,KAASe,EAChBf,EAAMzsG,MAEd,CACJ,IAEJ0tG,mBAAoBh4G,EAAQE,SAG1B,CACEG,MAAQ0B,IACG,CACHxB,IAAK,sDACLC,OAAQ,OACRC,KAAMsB,IAGdoC,qBAAqB4yG,EAAK70G,GAAgC,IAA5BsB,EAAQtB,EAARsB,SAAUwG,EAAc9H,EAAd8H,eACpC,MAAM8tG,EAAe,GACrB,IAAK,MAAMC,KAAYH,EAA2B,CAC9C,MAAM3tG,EAAczG,EAChBq0G,EAAY/2G,KAAKoJ,gBACb,mBACA6tG,GACCrkG,IACG,MAAMy7E,EACF+nB,EACIH,EACArjG,EAAMpO,OAGdzF,OAAO6K,OAAOgJ,EAAO,CACjBpO,MAAO6pF,GACT,KAKd2oB,EAAa/iG,KAAK9K,EACtB,CAEA,UACUD,CACV,CAAE,MACE,IAAK,MAAM+sG,KAASe,EAChBf,EAAMzsG,MAEd,CACJ,IAEJ2tG,kBAAmBj4G,EAAQE,SAGzB,CACEG,MAAQ0B,IACG,CACHxB,IAAK,4CACLC,OAAQ,OACRC,KAAMsB,IAGd4wC,kBAAoB4lB,IAA6C,IAAA2/C,EAC7D,GAAI3/C,SAAmB,QAAhB2/C,EAAH3/C,EAAK9iB,sBAAc,IAAAyiE,GAAnBA,EAAqBl3G,UACrB,MAAM,IAAIsS,MAAM,iBAGpB,OAAOilD,CAAG,EAEdp0D,qBAAqB4yG,EAAKjzF,GAAgC,IAA5BtgB,EAAQsgB,EAARtgB,SAAUwG,EAAc8Z,EAAd9Z,eAUpC,MAAM8tG,EAAe,GACrB,IAAK,MAAMC,KAAYH,EAA2B,CAU9C,MAAM3tG,EAAczG,EAChBq0G,EAAY/2G,KAAKoJ,gBACb,mBACA6tG,GACCrkG,IACG,MAAMykG,EACFd,EACIN,EACArjG,EAAMpO,OAGdzF,OAAO6K,OAAOgJ,EAAO,CACjBpO,MAAO6yG,GACT,KASdL,EAAa/iG,KAAK9K,EACtB,CAEA,UACUD,CACV,CAAE,MACE,IAAK,MAAM+sG,KAASe,EAChBf,EAAMzsG,MAEd,CACJ,EACAnK,gBAAiBA,CAACi4G,EAAMjvD,EAAKmP,KACzB,MAAM+/C,EAAY,IAAIT,GAUtB,GAJ2BS,EAAU/7F,MAChC3T,IAAG,IAAA2vG,EAAAC,EAAA,OAAc,QAAdD,EAAK3vG,aAAG,EAAHA,EAAKqzB,YAAI,IAAAs8E,IAAI,IAAe,QAAdC,EAAK5vG,aAAG,EAAHA,EAAKyzB,YAAI,IAAAm8E,KAAK,EAAE,IAI5C,MAAO,CACH,CACI/yG,KAAMkyG,EAAiBC,gBAyBnC,OAPyBU,EACpBvkG,QAAQnL,GAAQA,EAAI6vG,iBAAmBlgD,EAAI4e,SAC3ChwE,KAAKyB,IAAG,CACLnD,KAAMkyG,EAAiBC,cACvBtmG,GAAIsrB,KAAK5rB,UAAUpI,MAGJ,IAG/B8vG,iBAAkBz4G,EAAQK,MAGxB,CACEA,MAAQA,IACJu3G,EAA0B7hE,IAAI11C,GAG9B,MAAQ,0CADYyQ,IAAGC,UAAU1Q,IAC6B,EAGlEM,aAAcA,CAACy3G,EAAMjvD,EAAKmP,IAAQ,CAC9B,CACI9yD,KAAMkyG,EAAiBC,cACvBtmG,GAAIsrB,KAAK5rB,UAAUunD,WAO1BogD,EAAgCA,IAAOl1G,IAChD,MACMm1G,EADY,IAAIf,GAEjB9jG,QAAQnL,GAAQA,EAAIiwG,gBAAkBjhC,IAA4BzlB,MAClEhrD,KAAKyB,IAAG,CACLnD,KAAMkyG,EAAiBC,cACvBtmG,GAAIsrB,KAAK5rB,UAAUpI,OAG3BnF,EAASq0G,EAAY/2G,KAAKsc,eAAeu7F,GAAkB,EAGlDE,EAA6BA,IAAOr1G,IAC7C,MACMm1G,EADY,IAAIf,GAEjB9jG,QAAQnL,GAAQA,EAAIumD,aAAewoB,IAAyBxlB,MAC5DhrD,KAAKyB,IAAG,CACLnD,KAAMkyG,EAAiBC,cACvBtmG,GAAIsrB,KAAK5rB,UAAUpI,OAG3BnF,EAASq0G,EAAY/2G,KAAKsc,eAAeu7F,GAAkB,EAI3DG,EAIAjB,EAJAiB,yBACAC,EAGAlB,EAHAkB,8BACAC,EAEAnB,EAFAmB,6BACAC,EACApB,EADAoB,wB,mhBCxQG,MAAM/0C,EAAmB//D,eAC5BiiD,EACApvC,GAGC,IAFDkiG,EAAOruG,UAAArC,OAAA,QAAAyO,IAAApM,UAAA,GAAAA,UAAA,GAAG,GACVoS,EAAOpS,UAAArC,OAAA,EAAAqC,UAAA,QAAAoM,EAEP,IAAKD,EAMD,YALImiG,GAAWA,iCAQnB,MAAAvpG,EAAgCC,YAAmB,qBAA3CC,EAAMF,EAANE,OAAQC,EAAWH,EAAXG,YACZD,GAAQA,IACwBkH,EAA5BoiG,KAAR,MAAiBC,EAAc9yG,EAAKyQ,EAAMxQ,GAC1C,OAAOtD,IACFC,IAAK,GAAEijD,SAAiB,CACrBr2C,cACAmpG,UACAliG,OAAQqiG,EACRC,iBAAkB,SAAUtiG,GACxB,OAAOlG,IAAGC,UAAUiG,EAAQ,CAAEuiG,YAAa,UAC/C,IAEHx0G,KAAKkY,EAAUu8F,YAAqBv8F,GAAY7S,GAAaA,GAC7DrF,KAAKC,eACLC,MAAMC,cACf,C,2DC/Ce,KACX48F,oBAAqB,4BACrB2X,oBAAqB,4BACrBr6G,WAAY,mBACZ6iG,SAAU,iBACVE,mBAAoB,2BACpBE,sBAAuB,8BACvBqX,SAAU,iB,w0DCWd,MAAMC,EAAwBt4G,YAAY,CACtCC,KAAM,mBACNP,aAAcoO,cACd5N,SAAU,CACNwkB,uBAAwBA,CAACpkB,EAAKG,KAAkB,IAAdC,EAAOD,EAAPC,QAC9BJ,EAAM82E,cAAc53D,WAAa9e,EACjCJ,EAAM82E,cAAc9zD,MAAO,CAAI,EAEnCqB,wBAA0BrkB,IACtBA,EAAM82E,cAAc53D,WAAa,KACjClf,EAAM82E,cAAc9zD,MAAO,EAC3BhjB,EAAM82E,cAAcC,gBAAiB,EACrC/2E,EAAM82E,cAAcE,iBAAkB,EACtCh3E,EAAM82E,cAAc70D,UAAW,EAC/BjiB,EAAM82E,cAAcr0D,YAAa,CAAK,EAE1Cb,mBAAoBA,CAAC5hB,EAAKO,KAAkB,IAAdH,EAAOG,EAAPH,QAC1BJ,EAAM6hB,QAAQC,gBAAkB1hB,EAChCJ,EAAM6hB,QAAQE,kBAAoB,KAClC/hB,EAAMgiB,gBAAgBC,UAAW,CAAK,EAE1CC,qBAAsBA,CAACliB,EAAKmiB,KAAkB,IAAd/hB,EAAO+hB,EAAP/hB,QAC5BJ,EAAM6hB,QAAQE,kBAAoB3hB,CAAO,EAE7CmiB,2BAA4BA,CAACviB,EAAKqiB,KAAkB,IAAdjiB,EAAOiiB,EAAPjiB,QAClCJ,EAAMgiB,gBAAgBd,WAAa9gB,EACnCJ,EAAMgiB,gBAAgBC,UAAW,EACjCjiB,EAAMyiB,WAAariB,CAAO,EAE9BsiB,2BAA4BA,CAAC1iB,EAAKwiB,KAAkB,IAAdpiB,EAAOoiB,EAAPpiB,QAClCJ,EAAMgiB,gBAAgBC,SAAW7hB,EACjCJ,EAAMgiB,gBAAgBd,YAAa,EACnClhB,EAAMyiB,YAAa,EACnBziB,EAAM6hB,QAAQe,MAAM9G,OAAS+G,IAAaxiB,KAAK,EAEnDyiB,iBAAkBA,CAAC9iB,EAAK2iB,KAAkB,IAAdviB,EAAOuiB,EAAPviB,QACxB,MAAQ4iB,EAAmC5iB,EAAnC4iB,KAAMlH,EAA6B1b,EAA7B0b,OAAQmH,EAAqB7iB,EAArB6iB,iBACtBjjB,EAAM6hB,QAAQe,MAAQ,CAClBI,OACAlH,SACAmH,mBACH,EAELC,kBAAoBljB,IAChBA,EAAM6hB,QAAQe,MAAQ,CAClBI,KAAM,GACNlH,OAAQ+G,IAAaM,MACxB,EAELmB,iBAAkBA,CAACtkB,EAAK+iB,KAAkB,IAAd3iB,EAAO2iB,EAAP3iB,QACxBJ,EAAMgiB,gBAAgB60D,cAAgBz2E,CAAO,EAEjDgjB,2BAA6BpjB,IACzBA,EAAMqjB,sBAAwB,CAC1BuuD,yBAA0B,KAC1BxnE,cAAe,KAClB,GAGTmZ,cAAgBllB,IAEZA,EAAQmlB,QACJygD,IAAuBvgD,WACvB,CAAC1jB,EAAK2jB,KAAkB,IAAdvjB,EAAOujB,EAAPvjB,QACNJ,EAAM+vB,UAAY3vB,EAAQ2vB,UAC1B/vB,EAAM6hB,QAAO/hB,IAAA,GACNE,EAAM6hB,SAAO,IAChBwjC,mBAAoBjlD,EAAQilD,qBAEhCrlD,EAAM4jB,kBAAoBxjB,EAAQyjB,YAClC7jB,EAAMqjB,sBAAqBvjB,IAAA,GACpBE,EAAMqjB,uBACNjjB,EAAQijB,uBAGfrjB,EAAMkhB,YAAa,EACnBlhB,EAAMi4G,eAAgB,EAEtB,MAAMC,EAAoB93G,EAAQ2vB,UAAU+nB,QACxC,CAAC5jB,EAAM/uB,IAAS+uB,EAAO/uB,EAAKgzG,eAC5B,GAGJn4G,EAAMgiB,gBAAgB4e,UAAYs3E,CAAiB,IAG3D75G,EAAQmlB,QAAQygD,IAAuBngD,SAAU9jB,IAC7CA,EAAMkhB,YAAa,EACnBlhB,EAAMi4G,eAAgB,CAAK,IAE/B55G,EAAQmlB,QAAQygD,IAAuBlgD,UAAW/jB,IAC9CA,EAAMkhB,YAAa,EACnBlhB,EAAMi4G,eAAgB,CAAI,IAI9B55G,EAAQmlB,QAAQ0gD,IAAexgD,WAAW,CAAC1jB,EAAKikB,KAAkB,IAAd7jB,EAAO6jB,EAAP7jB,QAChD,MAAQilD,EAAmCjlD,EAAnCilD,mBAAoBv9C,EAAe1H,EAAf0H,WAE5B9H,EAAM6hB,QAAO/hB,IAAA,GACNE,EAAM6hB,SAAO,IAChBwjC,mBAAoBA,IAExBrlD,EAAM+vB,UAAY/vB,EAAM+vB,UAAU5d,QAC7B6d,GAAaA,EAASloB,aAAeA,IAE1C9H,EAAMo4G,gBAAiB,EACvBp4G,EAAM22E,YAAa,EAEnB,MAAMuhC,EAAoBl4G,EAAM+vB,UAAU+nB,QACtC,CAAC5jB,EAAM/uB,IAAS+uB,EAAO/uB,EAAKgzG,eAC5B,GAGJn4G,EAAMgiB,gBAAgB4e,UAAYs3E,CAAiB,IAEvD75G,EAAQmlB,QAAQ0gD,IAAepgD,SAAU9jB,IACrCA,EAAMo4G,gBAAiB,EACvBp4G,EAAM22E,YAAa,CAAI,IAE3Bt4E,EAAQmlB,QAAQ0gD,IAAengD,UAAW/jB,IACtCA,EAAMo4G,gBAAiB,EACvBp4G,EAAM22E,YAAa,CAAK,IAI5Bt4E,EAAQmlB,QACJosD,IAAelsD,WACf,CAAC1jB,EAAK8pC,KAAwB,IAApBgI,EAAIhI,EAAJgI,KAAM1xC,EAAO0pC,EAAP1pC,QACZ,MAAQmP,EAAQuiC,EAARviC,IACR8oG,EAA+C9oG,EAAI4xB,aAA5Bm3E,GAALD,EAAV5nC,WAAkC7rE,EAAAyzG,EAAAxzG,IAC1C7E,EAAM+vB,UAAY/vB,EAAM+vB,UAAUxqB,KAAKyqB,GACnCA,EAASloB,aAAeyH,EAAIzH,WAAUhI,IAAA,GAEzBkwB,GAAQ,IACXkgD,SAAQpwE,MAAA,GACDkwB,EAASkgD,UACTooC,GAAmB,IACtB9nC,OAAQjhE,EAAI4xB,aAAasvC,aAE7BT,oBAAqB,KACrBuoC,oBAAoB,IAExBvoF,IAGVhwB,EAAMw4G,0BAA4Bp4G,EAAQilD,mBAC1CrlD,EAAMgE,MAAQ,KACdhE,EAAMyiB,YAAa,CAAK,IAGhCpkB,EAAQmlB,QAAQosD,IAAe9rD,SAAS,CAAC9jB,EAAKiqC,KAC1C,MAAQ16B,EAD0C06B,EAAJ6H,KACtCviC,IACRvP,EAAM+vB,UAAY/vB,EAAM+vB,UAAUxqB,KAAKyqB,GACnCA,EAASloB,aAAeyH,EAAIzH,WAAUhI,IAAA,GAEzBkwB,GAAQ,IACXuoF,oBAAoB,EACpBvoC,oBAAqB,OAEzBhgD,IAGVhwB,EAAMyiB,YAAa,CAAI,IAE3BpkB,EAAQmlB,QAAQosD,IAAe7rD,UAAU,CAAC/jB,EAAKy+C,KAAwB,IAApB3M,EAAI2M,EAAJ3M,KAAM1xC,EAAOq+C,EAAPr+C,QACrD,MAAQmP,EAAQuiC,EAARviC,IACRvP,EAAM+vB,UAAY/vB,EAAM+vB,UAAUxqB,KAAKyqB,GACnCA,EAASloB,aAAeyH,EAAIzH,WAAUhI,IAAA,GAEzBkwB,GAAQ,IACXuoF,oBAAoB,EACpBvoC,oBAAqB5vE,EAAQ4vE,sBAEjChgD,IAGVhwB,EAAMgE,MAAQ,CACVy0G,eAAgBr4G,EAAQ4vE,qBAE5BhwE,EAAMyiB,YAAa,CAAK,IAI5BpkB,EAAQmlB,QACJktD,IAAehtD,WACf,CAAC1jB,EAAK2+C,KAAwB,IAApB7M,EAAI6M,EAAJ7M,KAAM1xC,EAAOu+C,EAAPv+C,QACZ,MAAQmP,EAAQuiC,EAARviC,IAEApK,EAASnF,EAAM2vB,oBAAfxqB,KACRnF,EAAM2vB,oBAAmB7vB,IAAA,GAClBE,EAAM2vB,qBAAmB,IAC5BxqB,KAAIrF,IAAA,GACGE,EAAM2vB,oBAAoBxqB,MAAI,IACjCuwD,iBAAkB,CACdx2C,WACI3P,EAAI2P,aACJ/Z,aAAI,EAAJA,EAAMuwD,iBAAiBx2C,YAC3BD,UACI1P,EAAI0P,YACJ9Z,aAAI,EAAJA,EAAMuwD,iBAAiBz2C,gBAKvCjf,EAAMw4G,0BAA4Bp4G,EAAQilD,mBAC1CrlD,EAAMgE,MAAQ,KACdhE,EAAM42E,YAAa,CAAK,IAIhCv4E,EAAQmlB,QAAQktD,IAAe5sD,SAAU9jB,IACrCA,EAAM42E,YAAa,CAAI,IAG3Bv4E,EAAQmlB,QAAQktD,IAAe3sD,UAAU,CAAC/jB,EAAK6+C,KAAwB,IAApB/M,EAAI+M,EAAJ/M,KAAM1xC,EAAOy+C,EAAPz+C,QACrD,MAAQmP,EAAQuiC,EAARviC,IAEApK,EAASnF,EAAM2vB,oBAAfxqB,KACRnF,EAAM2vB,oBAAmB7vB,IAAA,GAClBE,EAAM2vB,qBAAmB,IAC5BxqB,KAAIrF,IAAA,GACGE,EAAM2vB,oBAAoBxqB,MAAI,IACjCuwD,iBAAkB,CACdx2C,WACI3P,EAAI2P,aAAc/Z,aAAI,EAAJA,EAAMuwD,iBAAiBx2C,YAC7CD,UACI1P,EAAI0P,YAAa9Z,aAAI,EAAJA,EAAMuwD,iBAAiBz2C,gBAKxDjf,EAAMgE,MAAQ,CACVy0G,eAAgBr4G,aAAO,EAAPA,EAAS4vE,oBACzBe,sBAAuB3wE,aAAO,EAAPA,EAAS2wE,uBAEpC/wE,EAAM42E,YAAa,CAAK,IAI5Bv4E,EAAQmlB,QACJ0tD,IAAuBxtD,WACvB,CAAC1jB,EAAKg/C,KAAkB,IAAd5+C,EAAO4+C,EAAP5+C,QACNJ,EAAM2vB,oBAAsB,CACxBxqB,KAAM/E,EAAQ+E,KACdyrE,oBAAqBxwE,EAAQwwE,oBAC7B8nC,oBAAqBt4G,EAAQs4G,oBAC7Bx3F,YAAY,EACZld,MAAO,KACV,IAGT3F,EAAQmlB,QAAQ0tD,IAAuBptD,SAAU9jB,IAC7CA,EAAM2vB,oBAAsB,CACxBzO,YAAY,EACZld,MAAO,KACV,IAEL3F,EAAQmlB,QACJ0tD,IAAuBntD,UACvB,CAAC/jB,EAAKk/C,KAAkB,IAAd9+C,EAAO8+C,EAAP9+C,QACNJ,EAAM2vB,oBAAsB,CACxBzO,YAAY,EACZld,MAAO,CACH3E,UAAWe,aAAO,EAAPA,EAASf,WAE3B,IAKThB,EAAQmlB,QAAQ2gD,IAAmBzgD,WAAW,CAAC1jB,EAAKo/C,KAAkB,IAAdh/C,EAAOg/C,EAAPh/C,QACpD,MACIsD,EAKAtD,EALAsD,KACA8rE,EAIApvE,EAJAovE,aACAC,EAGArvE,EAHAqvE,gBACAC,EAEAtvE,EAFAsvE,WACAC,EACAvvE,EADAuvE,gBAGEgpC,EAAoBj1G,EAAK2vD,sBAAsB9tD,KAChDqzG,IACG,MA+BMC,EA/ByBD,EAAY5vC,SAASzjE,KAC/CyyC,IACG,IAAI8gE,GAAS,EACb,OAAQ9gE,EAAQ94B,YACZ,IAAK,eACD45F,GAAUtpC,EACV,MACJ,IAAK,iBACDspC,GAAUrpC,EACV,MACJ,IAAK,kBACDqpC,GAAUnpC,EACV,MACJ,IAAK,MACDmpC,GAAUppC,EACV,MACJ,QACIopC,GAAS,EAIjB,OAAAh5G,IAAA,GACOk4C,GAAO,IACV/4B,UAAW+4B,EAAQtoC,GACnBqjD,KAAM/a,EAAQx6B,MACdu7F,KAAMh2E,IAAMhD,UACZ+4E,OAAQA,GAAM,IAMC3mG,QAClBqN,GAEO,iBADJA,EAAiBN,YACKswD,IAElC,OAAA1vE,IAAA,GACO84G,GAAW,IACd5vC,SAAU6vC,GAA8B,IAIpD74G,EAAMyvB,SAASvd,gBAAkBymG,EAEjC34G,EAAMyvB,SAASwnD,oBAAqB,EACpCj3E,EAAMyvB,SAASynD,kBAAmB,CAAK,IAE3C74E,EAAQmlB,QAAQ2gD,IAAmBrgD,SAAU9jB,IACzCA,EAAMyvB,SAASwnD,oBAAqB,EACpCj3E,EAAMyvB,SAASynD,kBAAmB,CAAK,IAE3C74E,EAAQmlB,QAAQ2gD,IAAmBpgD,UAAW/jB,IAC1CA,EAAMyvB,SAASwnD,oBAAqB,EACpCj3E,EAAMyvB,SAASynD,kBAAmB,CAAI,IAI1C74E,EAAQmlB,QAAQwtD,IAAattD,WAAY1jB,IACrCA,EAAM82E,cAAcC,gBAAiB,EACrC/2E,EAAM82E,cAAc70D,UAAW,EAC/BjiB,EAAM82E,cAAcr0D,YAAa,CAAK,IAE1CpkB,EAAQmlB,QAAQwtD,IAAaltD,SAAU9jB,IACnCA,EAAM82E,cAAcC,gBAAiB,EACrC/2E,EAAM82E,cAAc70D,UAAW,EAC/BjiB,EAAM82E,cAAcr0D,YAAa,CAAI,IAEzCpkB,EAAQmlB,QAAQwtD,IAAajtD,UAAW/jB,IACpCA,EAAM82E,cAAcC,gBAAiB,EACrC/2E,EAAM82E,cAAc70D,UAAW,EAC/BjiB,EAAM82E,cAAcr0D,YAAa,CAAK,IAI1CpkB,EAAQmlB,QAAQytD,IAAcvtD,WAAY1jB,IACtCA,EAAM82E,cAAcE,iBAAkB,EACtCh3E,EAAM82E,cAAc70D,UAAW,EAC/BjiB,EAAM82E,cAAcr0D,YAAa,CAAK,IAE1CpkB,EAAQmlB,QAAQytD,IAAcntD,SAAU9jB,IACpCA,EAAM82E,cAAcE,iBAAkB,EACtCh3E,EAAM82E,cAAc70D,UAAW,EAC/BjiB,EAAM82E,cAAcr0D,YAAa,CAAI,IAEzCpkB,EAAQmlB,QAAQytD,IAAcltD,UAAW/jB,IACrCA,EAAM82E,cAAcE,iBAAkB,EACtCh3E,EAAM82E,cAAc70D,UAAW,EAC/BjiB,EAAM82E,cAAcr0D,YAAa,CAAK,IAI1CpkB,EAAQmlB,QAAQQ,IAAkBN,WAAW,CAAC1jB,EAAKs/C,KAC/C,MAAQp7B,EADkDo7B,EAAPl/C,QAC3C8jB,eACRlkB,EAAM6hB,QAAO/hB,IAAA,GACNE,EAAM6hB,SAAO,IAChBqC,eAAgBA,GACnB,IAEL7lB,EAAQmlB,QAAQQ,IAAkBF,SAAU9jB,IACxCA,EAAM6hB,QAAO/hB,IAAA,GACNE,EAAM6hB,SAAO,IAChBX,YAAY,EACZe,SAAU,MACb,IAEL5jB,EAAQmlB,QAAQQ,IAAkBD,UAAW/jB,IACzCA,EAAM6hB,QAAO/hB,IAAA,GACNE,EAAM6hB,SAAO,IAChBX,YAAY,EACZe,UAAU,GACb,IAGL5jB,EAAQmlB,QACJmhD,IAAwBjhD,WACxB,CAAC1jB,EAAKi9D,KAAkB,IAAd78D,EAAO68D,EAAP78D,QACNJ,EAAMsvB,qBAAqB5rB,KAAOtD,EAClCJ,EAAMsvB,qBAAqBpO,YAAa,EACxClhB,EAAMsvB,qBAAqBrN,UAAW,CAAK,IAGnD5jB,EAAQmlB,QAAQmhD,IAAwB7gD,SAAU9jB,IAC9CA,EAAMsvB,qBAAqBpO,YAAa,EACxClhB,EAAMsvB,qBAAqBrN,UAAW,CAAK,IAE/C5jB,EAAQmlB,QACJmhD,IAAwB5gD,UACxB,CAAC/jB,EAAKm9D,KAAkB,IAAd/8D,EAAO+8D,EAAP/8D,QACNJ,EAAMsvB,qBAAqBpO,YAAa,EAEpC9gB,EAAQixE,cACRrxE,EAAMsvB,qBAAqB+hD,cACvBjxE,EAAQixE,cAEZrxE,EAAMsvB,qBAAqBrN,UAAW,CAC1C,GAEP,IAIF+2F,EAWHhB,EAAsBp3G,QAVtBwjB,EAAsB40F,EAAtB50F,uBACAC,EAAuB20F,EAAvB30F,wBACAzC,EAAkBo3F,EAAlBp3F,mBACAM,EAAoB82F,EAApB92F,qBACAK,EAA0By2F,EAA1Bz2F,2BACAG,EAA0Bs2F,EAA1Bt2F,2BACAI,EAAgBk2F,EAAhBl2F,iBACAI,EAAiB81F,EAAjB91F,kBACAoB,EAAgB00F,EAAhB10F,iBACAlB,EAA0B41F,EAA1B51F,2BAGW40F,MAA6B,O,wLCrcrC,MAAMiB,EAAqBj5G,GAAUmW,YAAYnW,GAAOyvB,SAElDhQ,EAA2Bzf,GACpCi5G,EAAkBj5G,GAAO4e,kBAEhBc,EAAiC1f,GAC1Ci5G,EAAkBj5G,GAAO6e,wBAEhBq6F,EAAoCh6F,GAAgBlf,GAC7Di5G,EAAkBj5G,GACb6oE,iBAAiBE,SAASowC,GAAUA,EAAMnwC,WAC1CzjE,KAAK6lE,GAAMA,EAAElsD,aACbxM,SAASwM,E,oCCdlB,kCAAO,IAAKsuC,EAAY,SAAZA,GAAY,OAAZA,EAAY,0BAAZA,EAAY,gBAAZA,EAAY,8CAAZA,EAAY,gDAAZA,EAAY,iCAAZA,EAAY,YAAZA,EAAY,kBAAZA,CAAY,K,oCCAxB,gBAKe,KACXztB,QAJmBA,IAAMC,c,oCCF7B,sCAoCera,IAvBQxlB,IAKI,IAJvB+J,EAAS/J,EAAT+J,UACAsT,EAAKrd,EAALqd,MACA47F,EAAUj5G,EAAVi5G,WACAC,EAAOl5G,EAAPk5G,QAEA,MAAMC,EAA0BC,cAC1BC,EACFC,cAEJ,KAAKj8F,GAAW47F,GAAwB,IAAV57F,GAC1B,OAAO,KAGX,MAAMk8F,EAAiBL,EACjBG,EAAkCh8F,GAClC87F,EAAwB97F,GAE9B,OAAOk8F,EACHnvG,cAAA,QAAML,UAAWA,EAAUQ,SAAEgvG,IAC7B,IAAI,C,+7BCfL,IAAIn3E,EAAkB,KAE7B,MAyEM2iB,EAAiB3kD,IAAmD,IAAhDyhC,EAAazhC,EAAbyhC,cAAemjB,EAA0B5kD,EAA1B4kD,2BACrC,MAAQn2B,EAAao2B,cAAbp2B,SACAzc,EAAM2S,cAAN3S,EACRonG,EAA6Cr0D,YACzCzkB,KADIV,EAASw5E,EAATx5E,UAAuBS,EAAS+4E,EAArB74E,WAIbykB,EAAcC,mBAAQ,KACjB,CACHrlB,UAAWA,EACX6B,cAAeA,KAEpB,CAAC7B,EAAW6B,IAGfyjB,EACIC,YACItlB,IAAIulB,kBACJJ,EACA,oCAJA7hD,EAAI+hD,EAAJ/hD,KAAMqW,EAAS0rC,EAAT1rC,UAAW6rC,EAAUH,EAAVG,WAAYC,EAAUJ,EAAVI,WAAYC,EAAUL,EAAVK,WA+DjD,OAxDAC,qBAAU,KACSvjD,WACX,GAAIqjD,IAAetjB,EAAiB,CAChC,MAAQyjB,EAAgBtiD,EAAhBsiD,kBACFC,EACFD,EACAh3B,EACAgT,EACApB,EACAukB,EAER,GAEJe,EAAQ,GACT,CACCxiD,EACAmiD,EACA72B,EACAgT,EACApB,EACAukB,IAIJY,qBAAU,KACN,IAAII,EAAkB,KACtB,GAAI5jB,EACA,OAAQP,GACJ,KAAKG,IAAgBkkB,SACjBF,EAAkB,WAClB,MACJ,KAAKhkB,IAAgBE,UACjB8jB,EAAkB,YAClB,MACJ,QACIA,EAAkB,KAI1BA,GACA5jB,EAAgB+jB,oBACZH,EACA,SACAvlB,EAER,GACD,CAACoB,EAAepB,IAGnBmlB,qBAAU,IACC,KAEHxjB,EAAkB,IAAI,GAE3B,CAACP,IAGAn3B,eAAA,OAAKX,UAAU,oBAAmBQ,SAAA,CAC7Bk7C,GACG/6C,eAAA,OAAKX,UAAU,iDAAgDQ,SAAA,CAC3DH,cAAA,OAAKL,UAAU,mBAAkBQ,SAC7BH,cAAA,MAAAG,SAAK6H,EAAE,gCAEXhI,cAAC4b,IAAM,CACHC,MAAM,SACNmgC,QAAQ,UACRr8C,UAAU,UACVmc,QAASA,IAAMy/B,IAAap7C,SAC3B6H,EAAE,yBAIdwH,GACGxP,cAAA,OACIC,MAAO,CACHg8C,UAAW,SACb97C,SACFH,cAACk8C,IAAW,MAGpBl8C,cAAA,OACIL,UAAY,sBACR6P,EAAY,WAAa,YAC1BrP,SACHH,cAAA,OAAKmF,GAAG,yBAEV,EAIRu2C,EAAazjD,MACfwjD,EACAh3B,EACAgT,EACApB,EACAukB,KA2BA,IAAIr0B,E,+VAAOhxB,CAAA,CACP4mD,cAAeV,EACfW,UAAW,oBACXC,OAAQ53B,EACR63B,cAAc,EACdC,cAAe,CACXC,OAAO,GAEXC,KAAM,CACFC,MAAO,CACHC,wBAAwB,EACxBC,WAAW,KAZAC,EAAiBplB,EAAepB,IAkBvD,MAAMymB,QAAe,4CAGfA,EAAOC,OAAOx2B,GA7CHy2B,CAACC,EAAKC,KACnB,GAAID,EACA,OAAO,KAGPC,EAAeC,8BACfvC,EAA2B,MAAM,GAGrCsC,EAAeE,GACX,4BACA,SAAUC,GACNzC,EAA2ByC,GAA0B,EACzD,IAGJH,EAAeE,GAAG,8BAA8B,WAC5CxC,EAA2B,MAAM,EACrC,IAGA5iB,EAAkBklB,CAAc,GAwBE,EAGpCL,EAAmBA,CAACplB,EAAepB,KACrC,OAAQoB,GACJ,KAAKG,IAAgBC,gBACjB,MAAO,CACHE,cAAc,GAEtB,KAAKH,IAAgBkkB,SACjB,MAAO,CACHW,MAAM,EACNe,QAAQ,EACRD,WAAW,EACXD,SAAU,CACNl5B,YAAa,UACbq5B,eAAgB,CACZC,MAAO,CACHtzC,MAAO,UACPiR,OAAQgb,EAAUsnB,YAEtBC,6BAA8B,CAAC,oBAI/C,KAAKhmB,IAAgBE,UACjB,MAAO,CACH2kB,MAAM,EACNe,QAAQ,EACRF,UAAU,EACVvlB,cAAc,EACdwlB,UAAW,CACPM,iBAAkB,EAClBC,WAAY,mBACZC,gBAAiB,CACbC,iBAAkB,QAClBC,WAAY5nB,EAAUsnB,WACtB9E,aAAc,OAElBqF,sBAAuB,CACnB,CACI5kD,KAAM,OACNlF,WAAY,CACR+pD,wBAAwB,EACxBC,yBAA0B,CACtB7/B,OAAQ,aAOpC,QACI,MAAO,CAAC,EAChB,EAGW8/B,IAtSSzoD,IAIlB,IAHF+jB,EAAc/jB,EAAd+jB,eACA2kC,EAAQ1oD,EAAR0oD,SACA1D,EAA0BhlD,EAA1BglD,2BAEA,MAAMtjD,EAAWinD,cACTv2C,EAAM2S,cAAN3S,EACFqnG,EAAiCt0D,aAClCtlD,GAAUA,EAAM+B,YAAY63G,iCAG3BC,EAA2B1qG,IAAGo9D,MAAMnqE,OAAOC,SAASsJ,OAAQ,CAC9DmuG,mBAAmB,IACpB,kBAEH/zD,qBAAU,KACD8zD,GAELh4G,EAAS+f,YAAmBi4F,GAA0B,GACvD,CAACA,EAA0Bh4G,IAE9B,MAAQmgC,EAAkB9d,EAAlB8d,cAaR,OACIn3B,eAAAk+C,WAAA,CAAAr+C,SAAA,CACIG,eAAA,OAAKX,UAAU,kDAAiDQ,SAAA,CAC5DH,cAAA,SACIL,UAAU,wBACVrG,KAAK,QACL6L,GAAIsyB,EACJgnB,QAASH,EACTI,SAnBcC,KAC1B,MAAMtqD,EAAM,IAAIm7G,IAAI33G,OAAOC,SAAS4e,MACpC,IAAK4nC,EAAU,CACX,GAAI+wD,EAEA,OADAh7G,EAAIo7G,aAAatoF,IAAI,iBAAkBsQ,GAC/B5/B,OAAOC,SAAWzD,EAAIspD,WAElCrmD,EAAS+f,YAAmBogB,GAChC,KAaQn3B,eAAA,SACIX,UAAU,mCACVk/C,QAASpnB,EAAct3B,SAAA,CACvBG,eAAA,OAAKX,UAAU,mDAAkDQ,SAAA,CAC7DH,cAAC8+C,IAAiB,CAACj/C,cAAe43B,IAClCz3B,cAACJ,IAAiB,CAACC,cAAe43B,OAEtCn3B,eAAA,OAAKX,UAAU,qBAAoBQ,SAAA,CAC9Bs3B,IAAkBG,IAAgBC,iBAC/B7vB,EAAE,sCACLyvB,IAAkBG,IAAgBkkB,UAC/B9zC,EAAE,gCACLyvB,IAAkBG,IAAgBE,WAC/B9vB,EAAE,0CAIjBs2C,GACGt+C,cAAA,OAAKL,UAAU,UAASQ,SACpBH,cAAC26C,EAAc,CACXljB,cAAeA,EACfmjB,2BAA4BA,QAIzC,C,wMClFJ,MAAMshC,EACT,SAACrjC,GAAY,IAAE62D,IAAS/wG,UAAArC,OAAA,QAAAyO,IAAApM,UAAA,KAAAA,UAAA,GAAO,OAC/B1G,MAAOX,EAAUY,KACTw3G,GACA7+E,IAAUC,WAAW,CACjB9R,SAAU,WACVjI,OAAQ,WACR3M,MAAOyuC,IAIX9J,YAAiB72C,YACXlB,IAAe0Q,KAAK,mCAAoC,CAC1DmxC,iBAIR82D,EAA8B92D,GAC9BvhD,EAASihF,YAAqB,CAAE1/B,iBAAgB,CACnD,EAEQ10C,EACR00C,GAAiB,CAACvhD,EAAUY,KACzB,GACIqE,UAAWmF,WAAW,uBACtBqtC,YAAiB72C,KAEjB,OAGJ,MAAQ8U,EAAqB20B,YAAwBzpC,KAA7C8U,iBAEFhS,EAAM,CACRuiF,GAAI,MACJC,GAAI,MACJC,GAAI,OAGJ9pF,OAAOC,KAAKoH,GAAKmN,SAAS6E,GAC1B1V,EAAS4kF,EAA0BlhF,EAAIgS,IAAmB,IAE1D1V,EAAS4kF,EAA0BrjC,GAAc,GACrD,EAIF82D,EAAiC92D,IACnCt8C,UAAWC,aACP,qBACAq8C,EACA,IAAI5xB,MAAK,IAAIA,MAAOC,UALD,SAMtB,C,oCC1DL,kDAEA,MAAM0oF,EAAanzG,GAEXkF,KAAYA,IAASlK,iBAAmBkK,IAASlK,gBAAgBgF,GAI5DsL,EAAS,CAClB8nG,kBACI,8FASO,KACXz+E,0BAA2Bw+E,EAAU,2BACrCE,mBAAoBF,EAAU,aAC9BhmB,8BAA+BgmB,EAAU,yBACzCG,2BAA4BH,EAAU,sBACtCI,0BAA2BJ,EAAU,qBACrCK,mCAAoCL,EAAU,+B,oDCzBlCjuG,G,UAAAA,IACL,CACHuuG,YAAa,GACbj8B,cAAe,GACfk8B,gBAAiBxuG,EAAShG,aAAe,GACzCy0G,WAAY,GACZn3C,UAAWt3D,EAASjG,OAAS,GAC7BpC,KAAMqI,EAASivB,UAAY,QCSpB,KACX7tB,WAbgBpB,IAAQ,CACxBrI,KAAM0J,IAAY9P,WAClB2C,QAASoN,EAAgBtB,KAYzBk3D,YATiBtxB,IACV,CACHjuC,KAAM0J,IAAYqtG,cAClBx6G,QAAS0xC,I,oICJF,QAAK,WAChB,IAAI+oE,EAAwB,CAAC,QAAS,OAAQ,OAAQ,QAClDC,EAAc,SAsElBt4G,eAAeu4G,EAAuBC,EAAMC,EAAWC,GACnD,MAAMC,GAAY,IAAI3pF,MAAOC,UAC7B,IAAIjpB,EAAW,IAAI4yG,SACnB5yG,EAAS6yG,OAAO,YAAaL,GAE7B,MAAMp8G,EAAM47C,IAAOygE,EAAY,aAC/B,IACI,MAAMxyG,QAAiB4F,IAAM4D,KAAKrT,EAAK4J,GACvC,GAAIC,EAAS/E,KAAKrE,UAEd,YA4BU,qCA7BMoJ,EAAS/E,KAAKrE,WA8BlCi8G,EACI,2CA5BJC,EACI9yG,EAAS/E,KAAKwhC,QACdz8B,EAAS/E,KAAKmX,SACdqgG,GAEJ,MAAMM,GAAU,IAAIhqF,MAAOC,UAC3B7X,IAAOyuD,aACH,2BACAmzC,EAAUL,EAElB,CAAE,MAAOn3G,GACDA,EAAMyE,SACNgzG,EAAwBT,GACjBh3G,EAAMmE,SAEbszG,EAAwBT,GACxBx2G,YAAO,8CAGPi3G,EAAwBT,GACxBx2G,YAAO,gCAAkCR,EAAME,SAEvD,CACJ,CA2EA,SAASw3G,EAAaV,GAClB,YAAa1lG,IAAT0lG,EACO,sCAZgBjnB,EAcAinB,EAAKr7G,KAbzBk7G,EAAsBlgG,MAAMghG,IAC/BnyC,OANUoyC,EAMD7nB,EAAStlD,cANHotE,EAMkBF,EAAQltE,eALe,IAArDmtE,EAAInuF,QAAQouF,EAAQD,EAAI/0G,OAASg1G,EAAOh1G,QADnD,IAAkB+0G,EAAKC,CAOnB,MAcsBb,EAAKzgF,KAVTugF,IAWP,yCAHA,2CAff,IAA+B/mB,CAqB/B,CAEA,SAASwnB,EAAoBr2E,EAASrqB,EAAUqgG,GAC5CY,IAAiBp2F,QACb,gBACAwf,EACArqB,EACAqgG,EAER,CAEA,SAASO,EAAwBT,GAC7Bc,IAAiBp2F,QAAQ,oBAAqBs1F,EAClD,CAEA,SAASM,EAA4BS,GACjCD,IAAiBp2F,QAAQ,wBAAyBq2F,EACtD,CA9MAvyG,KAAKwyG,qBAAuB,WACxB,YAAkC,IAApB55G,OAAOg5G,QACzB,EAEA5xG,KAAKyyG,YAAc,SAAUr0E,EAAOs0E,EAAkBjB,GAClD,IAAK,IAAIz1G,EAAI,EAAGA,EAAIoiC,EAAM/gC,QAAUrB,EAAI02G,EAAkB12G,IAAK,CAE3D,IAAImsD,EAAmB+pD,EADV9zE,EAAMpiC,IAEnB,GAAImsD,EAEA,YADA2pD,EAA4B3pD,EAGpC,CACA,IAAK,IAAInsD,EAAI,EAAGA,EAAIoiC,EAAM/gC,QAAUrB,EAAI02G,EAAkB12G,IAAK,CAE3Du1G,EADanzE,EAAMpiC,GACUy1G,EACjC,CACJ,EAEAzxG,KAAKs+B,oBAAsB,SACvBL,EACAy0E,EACAjB,GAEA,QAA+B,IAApB74G,OAAOg5G,UAyFtB,SAA2B3zE,EAAWwzE,GAClC,IAAIkB,EAAc,WAAY,IAAI3qF,MAAOC,UACrC2qF,EAASjvF,SAASvjB,cAAc,UAChCyyG,EAAOlvF,SAASvjB,cAAc,QAC9B6sD,EAAQtpC,SAASvjB,cAAc,SACnCyyG,EAAKC,aAAa,OAAQ,eAC1BD,EAAKC,aAAa,KAAM,eACxBD,EAAKC,aAAa,QAAS,gBAC3BD,EAAKC,aAAa,SAAU,QAC5BD,EAAKC,aAAa,SAAU9hE,IAAOygE,EAAY,cAC/CoB,EAAKC,aAAa,UAAW,uBAC7BD,EAAKC,aAAa,SAAUH,GAC5B1lD,EAAM6lD,aAAa,OAAQ,UAC3B7lD,EAAM6lD,aAAa,OAAQ,UAC3B7lD,EAAM6lD,aAAa,QAAS,QAC5BF,EAAOE,aAAa,OAAQH,GAC5BC,EAAOE,aAAa,QAAS,gBAC7BF,EAAOE,aAAa,KAAMH,GAE1BE,EAAKE,YAAY9lD,GAEjB,IAAI+lD,EAAkB/0E,EAAUg1E,WAChCJ,EAAKE,YAAY90E,GAEjBta,SAASruB,KAAKy9G,YAAYH,GAC1BjvF,SAASruB,KAAKy9G,YAAYF,GAC1BA,EAAKK,SAELF,EAAgBD,YAAY90E,GAC5Bta,SAASruB,KAAK69G,YAAYN,GAG1B,IAAIO,EAAUn1E,EAAUhhC,MAExB21G,EAAOS,OAAS,SAAU51G,GACtB,IACI,IAAI61G,EAAeC,EACf91G,EAAEgC,OAAO+zG,gBAAgBl+G,KAAKm+G,WAChCx8F,OACEhY,EAAWs0G,EAAElwC,UAAUiwC,GAC3BvB,EAAoB9yG,EAASy8B,QAASz8B,EAASoS,SACnD,CAAE,MAAO2sC,GACLi0D,EAAwBmB,GACxBp4G,YAAO,iCACPijC,EAAUhhC,MAAQ,EACtB,CAEA0mB,SAASruB,KAAK69G,YAAYP,EAC9B,CACJ,CAzIQc,CAAkBz1E,EAAWwzE,GAC7BxzE,EAAUhhC,MAAQ,OACf,CACH,IACI,IAAIjB,EAAI,EACRA,EAAIiiC,EAAUG,MAAM/gC,QAAUrB,EAAI02G,EAClC12G,IACF,CACE,IACImsD,EAAmB+pD,EADZj0E,EAAUG,MAAMpiC,IAE3B,GAAImsD,EAGA,OAFAlqB,EAAUhhC,MAAQ,QAClB60G,EAA4B3pD,EAGpC,CACA,IACI,IAAInsD,EAAI,EACRA,EAAIiiC,EAAUG,MAAM/gC,QAAUrB,EAAI02G,EAClC12G,IACF,CAEEu1G,EADatzE,EAAUG,MAAMpiC,GACAy1G,EACjC,CACAxzE,EAAUhhC,MAAQ,EACtB,CACJ,EAEA+C,KAAK2zG,uBAAyB36G,eAC1B46G,EACAnC,EACA31E,GAEA,GAAI83E,EAAUv5G,MAAQu5G,EAAUv5G,KAAKqvE,WAAW,UAAW,CACvD,IAAIvhB,EAAmB+pD,EAAa0B,GACpC,OAAIzrD,OACA2pD,EAA4B3pD,GAGzBopD,EAAuBqC,EAAWnC,EAAW31E,EACxD,CACJ,CA6IJ,C,uQCnNA,MAIa+3E,EAAuBj4G,GAAW5C,MAAOX,EAAUY,KAC5D,MAAMqiD,EAAariD,IAAW2sB,MAAM01B,WAEpC,GADiBA,EAAW1/C,SAAWA,EAEnCvD,EACI87F,YACI74C,EAAWpgC,SAAWmC,IAAYE,WAAaF,IAAYC,YAKvE,IACIjlB,EAAS87F,YAAa92E,IAAYG,UAClC,MAAAs2F,OCvB2Bl4G,IACxB7D,IAAeC,IAAK,eAAc4D,UDsBdm4G,CAAmBn4G,GAAlC1B,EAAI45G,EAAJ55G,KAER7B,EAASkjD,EAAsBrhD,GACnC,CAAE,MAAOM,GACDA,EAAME,UAAYV,IAAWW,WApBrC/B,OAAOC,SAAY,SAAQC,YAAak7G,iBAuBhCh5G,YAAOR,EAEf,GAGS+gD,EAAyB04D,GAAqB57G,IACvDA,EAAS27F,YAAcigB,GAAiB,EAG/BC,EACTA,CAACt4G,EAAQm6D,EAAQr7D,EAAS4T,IAAetV,UACrCX,EAAS87F,YAAa92E,IAAYM,aAClC,SCtCkBw2F,EAACv4G,EAAQm6D,EAAQr7D,EAAS4T,KAChD,MAAM1X,EAAU,CAAEm/D,SAAQr7D,UAAS4T,cACnC,OAAOvW,IAAe0Q,KAAM,eAAc7M,IAAUhF,EAAQ,EDqC9Cu9G,CAAWv4G,EAAQm6D,EAAQr7D,EAAS4T,GAC1CjW,EAAS87F,YAAa92E,IAAYK,gBACtC,CAAE,MAAOljB,GACLQ,YAAOR,GACPnC,EAAS87F,YAAa92E,IAAYI,eACtC,E,oCElDR,kIAGA,MAAM22F,EAAiB,IAAIhtF,IAAewiD,IAAal5B,gBAE1C3I,EAAkB7hC,GAAOkuG,EAAep8G,IAAIkO,GAE5CuiC,EAAmBA,CAACviC,EAAIhM,IAASk6G,EAAelsF,IAAIhiB,EAAIhM,GAExDm6G,EAAqBnuG,GAAOkuG,EAAe35G,OAAOyL,E,oCCT/D,gBAEe,KACXouG,mBAAqBxlG,GAAqBzW,IACtCA,EAAS,CACLgC,KAAM,uBACNzD,QAASkY,IAEbzW,EAAS2mB,IAAazL,0BAA0B,EAEpD1E,4BAA8BC,GAAqBzW,IAC/CA,EAAS,CACLgC,KAAM,kCACNzD,QAASkY,IAEbzW,EAAS2mB,IAAazL,0BAA0B,EAEpDld,MAAOA,IAAOgC,IACVA,EAAS,CACLgC,KAAM,2BAEVhC,EAAS2mB,IAAazL,0BAA0B,E,oCCrBxD,wIAAO,MAAMsmB,EAAa,CACtBsgC,QAAS,UACTo6C,gBAAiB,kBACjBz6E,aAAc,gBAGLzgB,EAAe,CACxBM,MAAO,QACPygD,SAAU,WACVvjE,MAAO,SAGE8hC,EAAkB,CAC3B0hC,KAAM,OACNm6C,QAAS,UACT53D,OAAQ,SACRC,SAAU,WACVhkB,UAAW,YACX07E,gBAAiB,eACjBz6E,aAAc,cACdlB,gBAAiB,iBACjB67E,uBAAwB,uBACxBC,qBAAsB,sBACtBC,OAAQ,UAGCr6C,EAAwB,CACjCC,UAAW,YACXC,0BAA2B,yBAC3Bo6C,0CACI,uCACJC,0DACI,sDAGO,SACJ,CACHhjD,YAAa,KACbr5C,gBAAiB,CACbC,UAAU,EACVf,YAAY,GAEhBe,UAAU,EACVf,YAAY,EACZW,QAAS,CACLI,UAAU,EACVf,YAAY,EACZgD,eAAgB,KAChBpC,gBAAiB,KACjBg7C,iBAAiB,EACjBF,iBAAkB,KAClB76C,kBAAmB,KACnBy5B,SAAS,GAEb+f,aAAc,KACd34C,MAAO,CACHI,KAAM,GACNlH,OAAQ+G,EAAaM,OAEzBE,sBAAuB,KACvBm4C,aAAc,CACVtpD,gBAAiB,KACjB0pD,mBAAoB,KACpBC,iBAAkB,KAClBQ,iBAAkB,KAClBP,wBAAyB,KACzB56C,YAAY,GAEhBu6C,qBAAsB,KACtBH,cAAe,CAAC,EAChBU,wBAAwB,G,8wCC3DgB,IAE3Cp+D,EAAI,SAAJA,GAAI,OAAJA,EAAI,0CAAJA,CAAI,EAAJA,GAAI,IAIT,IAAIw4G,EAAsC,CAAC,EACpC,MAAMkI,EAAmBxgH,YAAU,CACtCC,YAAa,mBACbC,cACAC,SAAUC,OAAOC,KAAKP,GACtBQ,UAAYC,IAAO,CACf6yC,iBAAkB7yC,EAAQK,MAGxB,CACEA,MAAQ2W,IAEJ+gG,EAAW/gG,EAEX,MAAQ,GADQpN,IAAW,GAAK,6CACiBkH,IAAGC,UAAStP,IAAC,CAAC,EACxDuV,GAAM,IACT2/B,OAAQ,mBACR,EAERh2C,aAAc,CAACpB,EAAK2gH,uBAGxBC,oBAAqBngH,EAAQE,SAG3B,CACEG,MAAQ2W,IAEG,CACHzW,IAAM,GAFMqJ,IAAW,GAAK,6CAG5BpJ,OAAQ,SACRC,KAAMuW,IAGd7S,qBAAqB6S,EAAMlV,GAAgC,IAA5B0B,EAAQ1B,EAAR0B,SAAUwG,EAAclI,EAAdkI,eACrC,MAAMC,EAAczG,EAChBy8G,EAAiBn/G,KAAKoJ,gBAClB,mBACA6tG,GACCrkG,IAAU,IAAA0sG,EAEP1sG,EAAMq/B,cAAmC,QAAtBqtE,EAAG1sG,EAAMq/B,qBAAa,IAAAqtE,OAAA,EAAnBA,EAAqBtsG,QACtChN,IAAI,IAAAu5G,EAAA,QAAMrpG,SAAW,QAALqpG,EAANrpG,EAAQukB,WAAG,IAAA8kF,GAAXA,EAAahsG,SAASvN,EAAKuK,IAAG,GAC5C,KAIb,UACUrH,CACV,CAAE,MACEC,EAAYK,MAChB,CACJ,EACAnK,gBAAiB,CAACZ,EAAK2gH,uBAG3BI,wBAAyBtgH,EAAQE,SAG/B,CACEG,MAAQ2W,IAEG,CACHzW,IAAM,GAFMqJ,IAAW,GAAK,sDAG5BpJ,OAAQ,OACRC,KAAIgB,EAAA,GAAOuV,KAGnB7S,qBAAqB6S,EAAM9U,GAAgC,IAA5BsB,EAAQtB,EAARsB,SAAUwG,EAAc9H,EAAd8H,eACrC,MAAMC,EAAczG,EAChBy8G,EAAiBn/G,KAAKoJ,gBAClB,mBACA6tG,GACCrkG,IAAU,IAAA6sG,EACY,QAAnBA,EAAA7sG,EAAMq/B,qBAAa,IAAAwtE,GAAnBA,EAAqBh7G,SAASuB,IAAS,IAAA05G,EAC/B15G,EAAKuK,MAA4B,QAA1BmvG,EAAKxpG,EAAOypG,sBAAc,IAAAD,OAAA,EAArBA,EAAuBnvG,KACnCxR,OAAO6K,OAAO5D,EAAM,CAChB45G,6BACI1pG,EAAOypG,eAAeE,UAElC,GACF,KAId,UACU32G,CACV,CAAE,MACEC,EAAYK,MAChB,CACJ,QAMRkqC,EAGAyrE,EAHAzrE,yBACAosE,EAEAX,EAFAW,+BACAC,EACAZ,EADAY,kC,oCCnHJ,8DAIA,MAAMjyF,EAAUhlB,IAAW,KAAOk3G,cAErBtyF,EAAaA,KACtB,GAAI5kB,IACA,MAAM,IAAI0J,MAAM,gCAEpB,OAAOsb,CAAO,C,2QCFX,IAAKgoB,EAAM,SAANA,GAAM,OAANA,EAAM,sBAANA,EAAM,kBAANA,CAAM,MAyBX,MAAMmqE,EAAoBthH,YAAU,CACvCC,YAAa,oBACbC,UAAWutF,YAAoB,CAAEz0B,OAAQv1D,MACzCnD,UAAYC,IAAO,CACfsN,OAAQtN,EAAQK,MAAqD,CACjEA,MAAQ2W,GAAY,gBAAelG,IAAGC,UAAUiG,OAEpDgqG,WAAYhhH,EAAQE,SAGlB,CACEG,MAAQC,IAIG,CACHC,IAAK,wBACLC,OAAQ,OACRC,KANYwgH,YAAe3gH,EAAY,CACvCmiF,gBAAgB,IAMhBv8C,QAAS,CACL,eAAgB,uCAI5B/hC,uBACI+8G,IACIA,IACA,oBAER,QAKGC,EAA0CJ,EAA1CI,eAAgBC,EAA0BL,EAA1BK,qB,ocCnE/B,SAAS32G,IAAiS,OAApRA,EAAW5K,OAAO6K,OAAS7K,OAAO6K,OAAOC,OAAS,SAAUC,GAAU,IAAK,IAAIzD,EAAI,EAAGA,EAAI0D,UAAUrC,OAAQrB,IAAK,CAAE,IAAI2D,EAASD,UAAU1D,GAAI,IAAK,IAAIwB,KAAOmC,EAAcjL,OAAOkL,UAAUC,eAAeC,KAAKH,EAAQnC,KAAQiC,EAAOjC,GAAOmC,EAAOnC,GAAU,CAAE,OAAOiC,CAAQ,EAAUH,EAASS,MAAMC,KAAMN,UAAY,CAElU/I,UACdsJ,OADc,IAEXC,EAAK9E,EAAAzE,EAAA0E,GAAA,OACS8E,IAAMC,cAAc,MAAOd,EAAS,CACrDe,MAAO,6BACPC,QAAS,cACRJ,GAAqBC,IAAMC,cAAc,OAAQ,CAClDI,KAAM,UACND,EAAG,64BACYJ,IAAMC,cAAc,OAAQ,CAC3CI,KAAM,UACND,EAAG,20BACYJ,IAAMC,cAAc,OAAQ,CAC3CI,KAAM,UACND,EAAG,4aACYJ,IAAMC,cAAc,OAAQ,CAC3CI,KAAM,UACND,EAAG,+QACYJ,IAAMC,cAAc,OAAQ,CAC3CI,KAAM,UACND,EAAG,0NACYJ,IAAMC,cAAc,OAAQ,CAC3CI,KAAM,UACND,EAAG,qOACF,C,iRCLH,MAAM21G,EAASv6G,GAASA,EAAK6B,IACvB24G,EAAUx6G,GAAS,CAACA,EAAKC,QAEzBw6G,EAAcz6G,GAEXA,EAAKoxB,YAAYm/B,kBACdvwD,EAAKoxB,YAAYm/B,iBAAiBC,YACrCxwD,EAAKoxB,YAAYslC,kBACd12D,EAAKoxB,YAAYslC,iBAAiBlG,WAIxCkqD,EAAmC16G,GAEjCA,EAAKoxB,YAAYm/B,kBACjBnV,YAAgBp7C,EAAKoxB,YAAYm/B,iBAAiB7xD,MAepDi8G,EAAiB36G,IAAI,CACvB46G,YAAaA,KAAA,CACTrwG,GAAIgwG,EAAMv6G,GACVtB,KAAM6/B,IAAMC,KACZhvB,MAAO,gBACPqrG,mBAAqBztG,GAAMA,EAAE,oCAC7B3T,IAAM,yBAAwBuG,EAAKC,SACnCY,QAAS,cACTi6G,UAAWA,KAAM,EACjBC,gBAAiBA,KAAM,MAIzBC,EAAqCh7G,IAAS,IAAAi7G,EAAAC,EAChD,MAAMC,EAAY1iG,MAAQ2iG,SAAS,GAAI,OACvC,OAAO3iG,IAAsB,QAAjBwiG,EAACj7G,EAAKoxB,mBAAW,IAAA6pF,GAAiB,QAAjBC,EAAhBD,EAAkBrqB,uBAAe,IAAAsqB,OAAjB,EAAhBA,EAAmCl4F,MAAMq4F,QAAQF,EAAU,EAG/DG,EAAcA,CACvBt7G,EACA4zB,EACAlsB,EACAmsB,KAEA,MACMp4B,EAAU,CACZ,KAAM,CACF8O,GAAIgwG,EAAMv6G,GACVtB,KAAM6/B,IAAMI,SACZnvB,MAAO,kBACPqrG,mBAAqBztG,GACjBpN,EAAKu7G,sBAAwBv7G,EAAKw7G,iBAC5Bx7G,EAAKoxB,YAAYslC,iBACbtpD,EACI,uDAEJA,EAAE,gDACNA,EAAE,wCACZ1Q,SAAWA,IAAa,IAAA++G,EAAAC,EACpBh/G,EACI6nC,YAAmB,CACf95B,gBAAiBzK,SAAiB,QAAby7G,EAAJz7G,EAAMoxB,mBAAW,IAAAqqF,OAAb,EAAJA,EAAmBhxG,gBACpC+5B,gBACIxkC,SAAiB,QAAb07G,EAAJ17G,EAAMoxB,mBAAW,IAAAsqF,OAAb,EAAJA,EAAmB5L,MAAMz3C,QAAQ3c,kBAE5C,EAEL76C,QAAS,0BACTi6G,UAAWA,IACP5pD,YAAqBt9B,KACpB5zB,EAAKw7G,mBACLx7G,EAAKoxB,YAAY22B,YAAYz2B,KAClCypF,gBAAiBA,KAAM,IAE3B,KAAM,CACFxwG,GAAIgwG,EAAMv6G,GACVtB,KAAM6/B,IAAMC,KACZhvB,MAAO,mBACPqrG,mBAAqBztG,GACjBA,EAAE,yCACN3T,IAAM,uCAAsCuG,EAAKoxB,YAAY3mB,kBAC7D5J,QAAS,YACTi6G,UAAWA,MACL96G,EAAKoxB,YAAY3mB,kBAAoBzK,EAAKw7G,iBAChDT,gBAAiBA,KAAM,IAE3B,KAAM,CACFxwG,GAAIgwG,EAAMv6G,GACVtB,KAAM6/B,IAAMI,SACZnvB,MAAO,kBACPqrG,mBAAqBztG,GAAMA,EAAE,qCAC7B1Q,SAAWA,IACP,MAAMknC,EAAc5jC,EAAK27G,OAAOpxG,GAC1Bm5B,EAAM03C,YACRx3C,EACA5jC,EAAKoxB,YAAY0+E,MAAMvlG,GACvBvK,EAAKC,OACL,CACI27G,cAAeh4E,EACf43C,cAAc,EACdC,UAAU,EACVz3E,OAAQ,kBAIhBtH,EACIm/G,YAAmB,CACf/6G,MAHM,kBAIN4iC,MACAE,cACA5jC,SAEP,EAELa,QAAS,eACTi6G,UAAWA,KAEF96G,EAAKw7G,kBACNjlF,IAAe2+E,oBACfrhF,GACA7zB,EAAKoxB,YAAY3mB,iBACjBzK,EAAKoxB,YAAY0+E,MAGzBiL,gBAAiBA,KAAM,IAE3B,KAAM,CACFxwG,GAAIgwG,EAAMv6G,GACVtB,KAAM6/B,IAAMI,SACZnvB,MAAO,qBACPqrG,mBAAqBztG,GAAMA,EAAE,mCAC7B1Q,SAAWA,GACPA,EACIo/G,IAAqBvkF,iCACjB,CAACv3B,EAAKoxB,YAAY3mB,iBAClBmpB,EACAC,IAGZhzB,QAAS,aACTi6G,UAAWA,IACA,CACHzyD,IAAa0zD,OACb1zD,IAAa2zD,yBACfzuG,SAASvN,EAAKoxB,YAAYg3B,YAEhC2yD,gBAAiBA,KAAM,IAE3B,KAAM,CACFxwG,GAAIgwG,EAAMv6G,GACVtB,KAAM6/B,IAAMC,KACZhvB,MAAO,eACPqrG,mBAAqBztG,GAAMA,EAAE,iCAC7B3T,IAAM,gCAA+BuG,EAAKoxB,YAAY3mB,yCAItD5J,QAAS,eACTi6G,UAAWA,OArJiC96G,KAAS,IAAAi8G,EAAAC,EAAAC,EAC7D,OACIn8G,EAAKmwB,QAAQpjB,gBAAgBC,QACxBovG,GAAMA,EAAEhsD,eAAiB/V,IAAiBK,iBAC7Ch5C,OAAS,GAC2C,QAAtC,QAAhBu6G,EAAAj8G,EAAKoxB,mBAAW,IAAA6qF,GAAO,QAAPC,EAAhBD,EAAkBnM,aAAK,IAAAoM,GAAS,QAATC,EAAvBD,EAAyB7jD,eAAO,IAAA8jD,OAAhB,EAAhBA,EAAkCzgE,gBAAwB,EAkJ7C2gE,CAA+Cr8G,IAChDA,EAAKw7G,kBACLx7G,EAAKoxB,YAAY22B,YAAYpB,gBAC7B3mD,EAAKoxB,YAAY22B,YAAYnB,SAC7B5mD,EAAKoxB,YAAY83D,mBACjBlpF,EAAKqwB,YAMb0qF,gBAAiBA,MAER/6G,EAAKoxB,YAAY83D,mBACjBuxB,EAAWz6G,IACX06G,EAAgC16G,IAChCA,EAAKqwB,cAIlB,KAAM,CACF9lB,GAAIgwG,EAAMv6G,GACVtB,KAAM6/B,IAAMC,KACZhvB,MAAO,aACPqrG,mBAAqBztG,GAAMA,EAAE,qCAC7B3T,IAAM,gCAA+BuG,EAAKoxB,YAAY3mB,yCAItD5J,QAAS,eACTi6G,UAAWA,MAEH96G,EAAKw7G,kBACLx7G,EAAKoxB,YAAY22B,YAAYpB,gBAC7B3mD,EAAKoxB,YAAY22B,YAAYnB,SAC7B5mD,EAAKoxB,YAAY83D,mBACjBlpF,EAAKqwB,YAMb0qF,gBAAiBA,MAER/6G,EAAKoxB,YAAY83D,mBACjBuxB,EAAWz6G,IACX06G,EAAgC16G,IAChCA,EAAKqwB,cAIlB,KAAM,CACF9lB,GAAIgwG,EAAMv6G,GACVtB,KAAM6/B,IAAMC,KACZhvB,MAAO,eACPqrG,mBAAqBztG,GAAMA,EAAE,oCAC7B3T,IAAKuG,EAAKoxB,YAAYkrF,mBAAsB,wBAC5Cz7G,QAAS,cACTi6G,UAAWA,IAAM96G,EAAKoxB,YAAY83D,kBAClC6xB,gBAAiBA,IAAM/6G,EAAKoxB,YAAY83D,oBAE5C,KAAM,CACF3+E,GAAIgwG,EAAMv6G,GACVtB,KAAM6/B,IAAMI,SACZnvB,MAAO,sBACPqrG,mBAAqBztG,GAAMA,EAAE,uCAC7B1Q,SAAWA,IACPA,EACIo/G,IAAqBpiF,sBACjB15B,EAAKoxB,YAAYmrF,iBACjBv8G,EAAKoxB,YAAY3mB,gBACjBmpB,GAEP,EAEL/yB,QAAS,iBACTi6G,UAAWA,IACP96G,EAAKoxB,YAAY83D,oBAAsBlpF,EAAKw7G,iBAChDT,gBAAiBA,KAAM,IAE3B,KAAM,CACFxwG,GAAIgwG,EAAMv6G,GACVtB,KAAM6/B,IAAMI,SACZnvB,MAAO,sBACPqrG,mBAAqBztG,GACjBA,EAAE,+CACN1Q,SAAWA,IACPA,EACIo/G,IAAqBviF,8BACjB,CAACv5B,EAAKoxB,YAAY3mB,iBAClBmpB,EACA,CAAC5zB,EAAKoxB,YAAY0I,gBAEzB,EAELj5B,QAAS,yBACTi6G,UAAWA,KAEF96G,EAAKoxB,YAAYorF,eACjBx8G,EAAKw7G,kBACNx7G,EAAKoxB,YAAY22B,YAAYpB,iBAC5B3mD,EAAKoxB,YAAY22B,YAAYnB,QAGtCm0D,gBAAiBA,KAAM,IAE3B,KAAM,CACFxwG,GAAIgwG,EAAMv6G,GACVtB,KAAM6/B,IAAMI,SACZnvB,MAAO,oBACPqrG,mBAAqBztG,GACjBA,EAAE,6CACN1Q,SAAWA,IACPA,EACIo/G,IAAqB9iF,4BACjBh5B,EAAKoxB,YAAY3mB,gBACjBmpB,EACA,CAAC5zB,EAAKoxB,YAAY0I,gBAEzB,EAELj5B,QAAS,uBACTi6G,UAAWA,MAEF96G,EAAKoxB,YAAYorF,cACjBx8G,EAAKw7G,kBACLx7G,EAAKoxB,YAAY22B,YAAYpB,gBAC7B3mD,EAAKoxB,YAAY22B,YAAYnB,SAGtCm0D,gBAAiBA,KAAM,IAE3B,KAAM,CACFxwG,GAAIgwG,EAAMv6G,GACVtB,KAAM6/B,IAAMC,KACZhvB,MAAO,cACPqrG,mBAAqBztG,GAAMA,EAAE,sCAC7B3T,IAAM,uCAAsCuG,EAAKoxB,YAAY3mB,2BAC7D5J,QAAS,gBACTi6G,UAAWA,KACN96G,EAAKw7G,oBAAsBx7G,EAAKoxB,YAAYorF,aACjDzB,gBAAiBA,KAAM,IAE3B,KAAM,CACFxwG,GAAIgwG,EAAMv6G,GACVtB,KAAM6/B,IAAME,cACZjvB,MAAO,mBACPqrG,mBAAqBztG,GACjBA,EAAE,wCACN3T,IAAM,wBAAuBuG,EAAKoxB,YAAYqrF,yBAC9C57G,QAAS,kBACTi6G,UAAWA,IACP96G,EAAKoxB,YAAYsrF,iBAChB18G,EAAKw7G,kBACNx7G,EAAKoxB,YAAYsrF,eAAeC,mBACpC5B,gBAAiBA,KAAM,IAE3B,KAAM,CACFxwG,GAAIgwG,EAAMv6G,GACVtB,KAAM6/B,IAAME,cACZjvB,MAAO,uBACPqrG,mBAAqBztG,GAAMA,EAAE,sCAC7B3T,IAAM,sBAAqBuG,EAAKoxB,YAAYzuB,aAC5C9B,QAAS,gBACTi6G,UAAWA,IACP96G,EAAKoxB,YAAYsrF,iBAChB18G,EAAKw7G,kBACNx7G,EAAKoxB,YAAYsrF,eAAeE,iBACpC7B,gBAAiBA,KAAM,IAE3B,SAAA8B,EAAAC,EAAA,MAAO,CACHvyG,GAAIgwG,EAAMv6G,GACVtB,KAAqC,QAA/Bm+G,EAAA78G,EAAKoxB,YAAYsrF,sBAAc,IAAAG,GAA/BA,EAAiCE,gBACjCx+E,IAAMC,KACND,IAAMG,mBACZlvB,MAAO,kBACPqrG,mBAAqBztG,GACjBA,EAAE,0CACN3T,IAAoC,QAA/BqjH,EAAA98G,EAAKoxB,YAAYsrF,sBAAc,IAAAI,GAA/BA,EAAiCC,gBAC/B,0BAAyB/8G,EAAKoxB,YAAYzuB,aAC3C,sDACN9B,QAAS,oBACTi6G,UAAWA,IACPvkF,IAAe4+E,4BACfn1G,EAAKoxB,YAAYsrF,gBACjB18G,EAAKoxB,YAAYsrF,eAAeE,mBAC/B58G,EAAKw7G,kBACNx7G,EAAKoxB,YAAYsrF,eAAeriG,mBAC5BggC,IAAiBI,gBACzBsgE,gBAAiBA,KAAM,EAC1B,EACD,KAAM,CACFxwG,GAAIgwG,EAAMv6G,GACVtB,KAAM6/B,IAAMI,SACZnvB,MAAOirG,EAAWz6G,GACZ,uBACA,wBACN66G,mBAAqBztG,GACjBqtG,EAAWz6G,GACLoN,EAAE,0CACFA,EAAE,qCACZ1Q,SAAWA,IACPA,EACIo/G,IAAqBziF,uBACjB,CAACr5B,EAAKoxB,YAAY0I,eAClBlG,GAEP,EAEL/yB,QAAS,kBACTi6G,UAAWA,IACP96G,EAAKoxB,YAAY22B,YAAYnB,UAAY5mD,EAAKw7G,iBAClDT,gBAAiBA,KAAM,IAE3B,KAAM,CACFxwG,GAAIgwG,EAAMv6G,GACVtB,KAAM6/B,IAAMI,SACZnvB,MAAOirG,EAAWz6G,GACZ,qBACA,sBACN66G,mBAAqBztG,GACjBqtG,EAAWz6G,GACLoN,EAAE,wCACFA,EAAE,mCACZ1Q,SAAWA,IACPA,EACIo/G,IAAqB3iF,qBACjB,CAACn5B,EAAKoxB,YAAY0I,eAClBlG,GAEP,EAEL/yB,QAAS,gBACTi6G,UAAWA,KACN96G,EAAKoxB,YAAY22B,YAAYnB,UAAY5mD,EAAKw7G,iBACnDwB,0BAA2BA,IACvBC,EAAmCj9G,IACnCk9G,EAAsCl9G,GAC1C+6G,gBAAiBA,KAAO/6G,EAAKoxB,YAAY83D,oBAE7C,KAAM,CACF3+E,GAAIgwG,EAAMv6G,GACVtB,KAAM6/B,IAAMI,SACZnvB,MAAO,eACPqrG,mBAAqBztG,GAAMA,EAAE,sCAC7B1Q,SAAWA,IACPA,EACIynC,YAAU,CACN7gB,QAASkyE,IACTj3F,KAAM,CACFu7B,cAAe95B,EAAKoxB,YAAY0I,iBAG3C,EAELj5B,QAAS,uBACTi6G,UAAWA,KACN96G,EAAKoxB,YAAY22B,YAAYC,eAC7BhoD,EAAKw7G,kBACNx7G,EAAKoxB,YAAYg3B,aAAeC,IAAazD,gBACjDm2D,gBAAiBA,KAAO/6G,EAAKw7G,mBAEjC,KAAM,CACFjxG,GAAIgwG,EAAMv6G,GACVtB,KAAM6/B,IAAMI,SACZnvB,MAAO,aACPqrG,mBAAqBztG,GAAMA,EAAE,+BAC7B1Q,SAAWA,GACPA,EAASgoC,YAAgB1kC,EAAKoxB,YAAY3mB,kBAC9C5J,QAAS,SACTi6G,UAAWA,KACN96G,EAAKw7G,mBACLx7G,EAAKoxB,YAAY+rF,iCACdn9G,EAAKoxB,YAAYgsF,iBACzBrC,gBAAiBA,KAAM,IAE3B,KAAM,CACFxwG,GAAIgwG,EAAMv6G,GACVtB,KAAM6/B,IAAMC,KACZhvB,MAAO,mBACPqrG,mBAAqBztG,GAAMA,EAAE,sCAC7B3T,IAAM,qBAAoBuG,EAAKoxB,YAAY0+E,MAAMvlG,KACjD1J,QAAS,eACTi6G,UAAWA,KAAO96G,EAAKw7G,iBACvBT,gBAAiBA,KAAM,IAE3B,KAAM,CACFxwG,GAAIgwG,EAAMv6G,GACVtB,KAAM6/B,IAAMC,KACZhvB,MAAO,iBACPqrG,mBAAqBztG,GACjBA,EAAE,wCACN3T,IAAM,YAAWuG,EAAKC,yBACtBY,QAAS,kBACTi6G,UAAWA,MAEuB,YAA1B96G,EAAKmwB,QAAQqgB,UACa,eAA1BxwC,EAAKmwB,QAAQqgB,UACbxwC,EAAKw7G,kBAEbT,gBAAiBA,KAAM,IAE3B,KAAM,CACFxwG,GAAIgwG,EAAMv6G,GACVtB,KAAM6/B,IAAMI,SACZnvB,MAAO,uBACPqrG,mBAAqBztG,GAAMA,EAAE,qCAC7B1Q,SAAWA,GACPA,EACIo/G,IAAqBrkF,mCACjB,CAACz3B,EAAKoxB,YAAY3mB,iBAClBmpB,EACAC,IAGZhzB,QAAS,eACTi6G,UAAWA,IAEH96G,EAAKoxB,YAAYg3B,aACbC,IAAag1D,2BAChBr9G,EAAKw7G,iBAGdT,gBAAiBA,KAAM,IAE3B,KAAM,CAEFxwG,GAAIgwG,EAAMv6G,GACVtB,KAAM6/B,IAAMC,KACZhvB,MAAO,4BACPqrG,mBAAqBztG,GACjBA,EAAE,yCACN3T,IAAKy3D,YAAqBt9B,GACnB,oBAAmB5zB,EAAKoxB,YAAY3mB,kBACpC,mBAAkBzK,EAAKoxB,YAAY0I,gBAC1Cj5B,QAAS,mBACTi6G,UAAWA,KACN96G,EAAKw7G,kBACiC,YAAvCx7G,EAAKoxB,YAAY22B,YAAYltD,QAC5BmF,EAAKoxB,YAAY22B,YAAYu1D,eAC7B/mF,IAAe6+E,2BAChB4F,EAAkCh7G,IAClCA,EAAKoxB,YAAYg3B,aAAeC,IAAazD,gBACjDm2D,gBAAiBA,KAAM,IAE3B,KAAM,CAEFxwG,GAAIgwG,EAAMv6G,GACVtB,KAAM6/B,IAAMC,KACZhvB,MAAO,wBACPqrG,mBAAqBztG,GACjBA,EAAE,+CACN3T,IAAM,mBAAkBuG,EAAKoxB,YAAY3mB,kBACzC5J,QAAS,yBACTi6G,UAAWA,KACN96G,EAAKw7G,kBACNjlF,IAAe6+E,2BACwB,YAAvCp1G,EAAKoxB,YAAY22B,YAAYltD,QAC5BmF,EAAKoxB,YAAY22B,YAAYw1D,iBAC7Bv9G,EAAKoxB,YAAY22B,YAAYy1D,gBAC9BxC,EAAkCh7G,IAClCA,EAAKoxB,YAAYg3B,aAAeC,IAAazD,gBACjDm2D,gBAAiBA,KAAM,IA9dhBJ,EAAc36G,GAgelB46G,YACP,KAAM,CACFrwG,GAAIgwG,EAAMv6G,GACVtB,KAAM6/B,IAAMI,SACZnvB,MAAO,eACPqrG,mBAAqBztG,GAAMA,EAAE,qCAC7B1Q,SAAWA,GACPA,EAASgoC,YAAgB1kC,EAAKoxB,YAAY3mB,kBAC9C5J,QAAS,WACTi6G,UAAWA,KACN96G,EAAKw7G,mBACLx7G,EAAKoxB,YAAYqsF,kCACdz9G,EAAKoxB,YAAYssF,mBACzB3C,gBAAiBA,KAAM,IAE3B,KAAM,CACFxwG,GAAIgwG,EAAMv6G,GACVtB,KAAM6/B,IAAMI,SACZnvB,MAAO,aACPqrG,mBAAqBztG,GAAMA,EAAE,+BAC7B1Q,SAAWA,IACPA,EACIw0D,YAAqBt9B,GACf+C,IAAqBgnF,mCACjB39G,EAAKoxB,YAAY3mB,iBACjB,EACAmpB,GAEJkoF,IAAqB1jF,wBACjB,CAACp4B,EAAKoxB,YAAY3mB,iBAClBmpB,GAEb,EAEL/yB,QAAS,aACTi6G,UAAWA,KAAA,IAAA8C,EAAA,OACP1sD,YAAqBt9B,IACd5zB,EAAKw7G,mBACU,QADMoC,EACtB59G,EAAKoxB,mBAAW,IAAAwsF,OAAA,EAAhBA,EAAkB71D,YAAYqoB,QAC9BpwE,EAAKoxB,aAAepxB,EAAKoxB,YAAY22B,YAAYqoB,MAAM,EACjE2qC,gBAAiBA,KAAM,KAIzB8C,EAAOA,KAAA,CACTtzG,GAAIgwG,EAAMv6G,GACVtB,KAAM6/B,IAAMI,SACZnvB,MAAO,OACPqrG,mBAAqBztG,GAAMA,EAAE,6BAC7B1Q,SAAWA,IACPA,EACIw0D,YAAqBt9B,GACf+C,IAAqBgnF,mCACjB39G,EAAKoxB,YAAY3mB,iBACjB,EACAmpB,GAEJkoF,IAAqBvjF,sBACjB,CAACv4B,EAAKoxB,YAAY3mB,iBAClBmpB,GAEb,EAEL/yB,QAAS,WACTi6G,UAAWA,KAAA,IAAAgD,EAAA,OACP5sD,YAAqBt9B,KACd5zB,EAAKw7G,kBACW,QAAjBsC,EAAC99G,EAAKoxB,mBAAW,IAAA0sF,GAAhBA,EAAkB/1D,YAAYqoB,QAC/BpwE,EAAKoxB,cAAgBpxB,EAAKoxB,YAAY22B,YAAYqoB,MAAM,EAClE2qC,gBAAiBA,KAAM,IAU3B,OAPI/6G,EAAKoxB,aAAsD,SAAvCpxB,EAAKoxB,YAAY22B,YAAYltD,MAEjDY,EAAQ2mF,QAAQy7B,GAEhBpiH,EAAQwS,KAAK4vG,GAGVpiH,CAAO,EAqLZwhH,EAAsCj9G,IAAI,IAAA+9G,EAAA,OAC5C/9G,EAAKoxB,YAAY22B,YAAYz2B,MAC7B8pB,YAAiD,QAAlC2iE,EAAC/9G,EAAKoxB,YAAYm/B,wBAAgB,IAAAwtD,OAAA,EAAjCA,EAAmC3tD,aAAa,EAE9D8sD,EAAyCl9G,IAAS,IAAAg+G,EACpD,OACIh+G,EAAKoxB,YAAY22B,YAAYz2B,OACD,QADK0sF,EACjCh+G,EAAKmwB,QAAQpjB,uBAAe,IAAAixG,OAAA,EAA5BA,EAA8Bt8G,SAC9B1B,EAAKmwB,QAAQpjB,gBAAgBkxG,OACxBtmG,GACGyjC,YAAgBzjC,EAAEy4C,eAClBz4C,EAAEy4C,eAAiB/V,IAAiBY,WAC3C,E,gBChzBF,MAAM1c,EACH,OADGA,EAGC,WAGRg8E,EAASv6G,GAASA,EAAK6B,IACvB24G,EAAUx6G,GAAS,CAACA,EAAKC,QASzBsjB,EAAa+vF,GACR4K,YAAmB,CACtB1uF,WAAY,cACZ/R,MAAO,CACHiT,SAAU,QACVf,KAAM,QACNwuF,gBAAgB,EAChBC,qBAAuBhxG,GAAMA,EAAEkmG,MAOrCqH,EAAiB36G,IACH,CACZq+G,gBAAiBA,KAAA,CACb9zG,GAAIgwG,EAAMv6G,GACVtB,KAAM6/B,EACN/uB,MAAO,qBACPqrG,mBAAqBztG,GACjBA,EAAE,wCACN3T,IAAM,kBAAiBuG,EAAK27G,OAAOpxG,MAAMvK,EAAK27G,OAAO2C,eACrDz9G,QAAS,mBACTi6G,UAAWA,KAAO96G,EAAKw7G,iBACvBT,gBAAiBA,KAAM,M,4BCvC5B,MAAMwD,EAAoBA,CAC7Bv+G,EACA4zB,EACAlsB,EACAmsB,EACAmC,KAEA,MAAMwoF,EAAmB,GACzB,IAAIC,EAAgB,KAChBC,EAA0B,KAE9B,MA8BMC,EAAkBC,IACpBA,EAAiBngH,SAASogH,IA/BT1iG,KACjB,IACI,IAAKA,EAAO2+F,UACR,KAAM,6BAA+B3+F,EAAO3M,MAEhD,IAAK2M,EAAO2+F,YACR,OAEkB,OAAlB2D,GAA0BtiG,EAAO4+F,kBAEjC0D,EAAgBtiG,EAEY,OAA5BuiG,GACAviG,EAAO6gG,2BACP7gG,EAAO6gG,6BAGP0B,EAA0BviG,EAI1BqiG,EAAiBvwG,KAAKkO,IAEtBqiG,EAAiBvwG,KAAKkO,EAE9B,CAAE,MAAOtd,GACLQ,YAAOR,EACX,GAMIigH,CADeD,IACI,IAEhB,CACHJ,gBACAD,mBACAE,4BAIR,IAAIK,EAAiB,GACrB,OAAQ/oF,GACJ,KAAKq6D,IAAWC,iBACZyuB,EAAiBJ,EDXKK,EAACh/G,EAAM4zB,EAAclsB,KACnD,MACMjM,EAAU,CACZ,KACI,MAAM+8E,EACFx4E,EAAKsvB,gBACLtvB,EAAKsvB,eAAewB,eACpB9wB,EAAKsvB,eAAewB,cAAcvmB,KAAO7C,EACvCu3G,EA9CS,WAAe,IAAdj/G,EAAI+D,UAAArC,OAAA,QAAAyO,IAAApM,UAAA,GAAAA,UAAA,GAAG,CAAC,EAEhC,OAAO/D,EAAKg4F,SAA+B,MAApBh4F,EAAKg4F,QAAQ,GAC7B,IAAGh4F,EAAKg4F,UACTh4F,EAAKg4F,OACf,CAyCiCknB,CAAmBl/G,GACxC,MAAO,CACHuK,GAAIgwG,EAAMv6G,GACVtB,KAAM6/B,EACN/uB,MAAOgpE,EAAY,aAAe,WAClCqiC,mBAAqBztG,GAEXA,EADNorE,EACQ,mCACA,iCACZ/+E,IAAKwlH,EACLp+G,QAAS23E,EAAY,cAAgB,WACrC2mC,YAAa,UACbrE,UAAWA,KAAM,EACjBC,gBAAiBA,KAAM,EAC1B,EArBMJ,EAAc36G,GAuBlBq+G,gBACP,KAAM,CACF9zG,GAAIgwG,EAAMv6G,GACVtB,KAAM6/B,EACN/uB,MAAO,OACPqrG,mBAAqBztG,GAAMA,EAAE,6BAC7B1Q,SAAWA,IACPA,EACIo/G,IAAqBnmF,0BACjB6kF,EAAOx6G,GACP4zB,GAEP,EAEL/yB,QAAS,sBACTi6G,UAAWA,KACN96G,EAAK4wB,OAAOC,mBACR7wB,EAAKsvB,eAAewB,eACjB9wB,EAAKsvB,eAAewB,cAAcvmB,KAAO7C,KAC1B,IAAvB1H,EAAK4wB,OAAOw/C,OAChB2qC,gBAAiBA,KAAM,IAE3B,KAAM,CACFxwG,GAAIgwG,EAAMv6G,GACVtB,KAAM6/B,EACN/uB,MAAO,OACPqrG,mBAAqBztG,GAAMA,EAAE,6BAC7B1Q,SAAWA,IACPA,EACIo/G,IAAqBhmF,0BACjB0kF,EAAOx6G,GACP4zB,GAEP,EAEL/yB,QAAS,sBACTi6G,UAAWA,KAA6B,IAAvB96G,EAAK4wB,OAAOw/C,OAC7B2qC,gBAAiBA,KAAM,KAG/B,OAAOt/G,CAAO,ECpDFujH,CAAmBh/G,EAAM4zB,EAAclsB,IAE3C,MACJ,KAAK2oF,IAAWI,eACZsuB,EAAiBJ,EDmDAS,EAACp/G,EAAM4zB,EAAclsB,IAE9B,CACZ,KAAM,CACF6C,GAAIgwG,EAAMv6G,GACVtB,KACIsB,EAAKoxB,YAAYg3B,aAAeC,IAAag3D,QACvC9gF,EACAA,EACV/uB,MAAO,SACPqrG,mBAAqBztG,GAAMA,EAAE,4BAC7B1Q,SAAWA,IACPA,EAAS6mB,EAAU,gCAAgC,EAEvD9pB,IAAM,oDAAmDuG,EAAKoxB,YAAY3mB,kBAC1E5J,QAAS,MACTs+G,YAAa,UACbrE,UAAWA,KACN96G,EAAKoxB,YAAYC,WAAWC,OAAStxB,EAAKw7G,iBAC/CT,gBAAiBA,KAAM,IAE3B,KAAM,CACFxwG,GAAIgwG,EAAMv6G,GACVtB,KAAM6/B,EACN/uB,MAAO,qBACPqrG,mBAAqBztG,GAAMA,EAAE,mCAC7B1Q,SAAWA,IACP,GAAIsD,EAAKoxB,YAAYg3B,aAAeC,IAAag3D,QAC7C,OAAO3iH,EAAS6mB,EAAU,iCAE9B+7F,YAAiB,2CACjB5iH,EACIo/G,IAAqB9hF,gCACjB,CAACh6B,EAAKoxB,YAAY3mB,iBAClBmpB,GAEP,EAEL/yB,QAAS,aACTi6G,UAAWA,IACP96G,EAAKoxB,YAAYg3B,aAAeC,IAAa0zD,SAC5C/7G,EAAKw7G,iBACVT,gBAAiBA,KAAM,IAE3B,KAAM,CACFxwG,GAAIgwG,EAAMv6G,GACVtB,KAAM6/B,EACN/uB,MAAO,uBACPqrG,mBAAqBztG,GAAMA,EAAE,qCAC7B1Q,SAAWA,GACPA,EACIo/G,IAAqB7hF,kCACjB,CAACj6B,EAAKoxB,YAAY3mB,iBAClBmpB,IAGZ/yB,QAAS,eACTi6G,UAAWA,IACP96G,EAAKoxB,YAAYg3B,aACbC,IAAa2zD,0BAChBh8G,EAAKw7G,iBACVT,gBAAiBA,KAAM,IAE3B,KAAM,CACFxwG,GAAIgwG,EAAMv6G,GACVtB,KAAM6/B,EACN/uB,MAAO,eACPqrG,mBAAqBztG,GAAMA,EAAE,sCAC7B1Q,SAAWA,IACPA,EACIynC,YAAU,CACN7gB,QAASkyE,IACTj3F,KAAM,CACFu7B,cAAe95B,EAAKoxB,YAAY0I,iBAG3C,EAELj5B,QAAS,wBACTi6G,UAAWA,KACN96G,EAAKoxB,YAAYC,WAAW22B,eAC5BhoD,EAAKw7G,kBACNx7G,EAAKoxB,YAAYg3B,aAAeC,IAAazD,gBACjDm2D,gBAAiBA,KAAO/6G,EAAKw7G,mBAEjC,KAAM,CACFjxG,GAAIgwG,EAAMv6G,GACVtB,KAAM6/B,EACN/uB,MAAO,mBACPqrG,mBAAqBztG,GACjBA,EAAE,yCACN3T,IAAM,aAAYuG,EAAKoxB,YAAY3mB,kBACnC5J,QAAS,mBACTi6G,UAAWA,KAAO96G,EAAKw7G,iBACvBT,gBAAiBA,KAAM,IAE3B,KAAM,CACFxwG,GAAIgwG,EAAMv6G,GACVtB,KAAM6/B,EACN/uB,MAAO,mBACPqrG,mBAAqBztG,GAAMA,EAAE,sCAC7B1Q,SAAWA,IACP,MAAMgnC,EAAM03C,YACRp7E,EAAK27G,OAAOpxG,GACZ7C,EACA1H,EAAKC,OACL,CACI27G,cAAe57G,EAAK27G,OAAOpxG,GAC3BixE,cAAc,EACdC,UAAU,EACVz3E,OAAQ,mBAIV4/B,EAAc5jC,EAAK27G,OAAOpxG,GAChC7N,EACIm/G,YAAmB,CACf/6G,MAJM,mBAKN4iC,MACAE,cACA5jC,SAEP,EAELa,QAAS,gBACTi6G,UAAWA,IACPvkF,IAAe2+E,qBAAuBl1G,EAAKw7G,iBAC/CT,gBAAiBA,KAAM,IAE3B,KAAM,CACFxwG,GAAIgwG,EAAMv6G,GACVtB,KAAM6/B,EACN/uB,MAAO,cACPqrG,mBAAqBztG,GAAMA,EAAE,sCAC7B3T,IAAM,aAAYuG,EAAKoxB,YAAY3mB,2BACnC5J,QAAS,qBACTi6G,UAAWA,KACN96G,EAAKw7G,oBAAsBx7G,EAAKoxB,YAAYorF,aACjDzB,gBAAiBA,KAAM,IAzIhBJ,EAAc36G,GA2IlBq+G,gBACP,KAAM,CAEF9zG,GAAIgwG,EAAMv6G,GACVtB,KAAM6/B,EACN/uB,MAAO,uBACPqrG,mBAAqBztG,GACjBA,EAAE,8CACN3T,IAAM,oBAAmBuG,EAAKoxB,YAAY3mB,kBAC1C5J,QAAS,wBACTi6G,UAAWA,KACN96G,EAAKoxB,YAAYmuF,qBACjBv/G,EAAKoxB,YAAYC,WAAWmuF,KAC7B,CACIn3D,IAAa2zD,wBACb3zD,IAAag1D,yBACbh1D,IAAaxD,MACft3C,SAASvN,EAAKoxB,YAAYg3B,YAChC2yD,gBAAiBA,KAAO/6G,EAAKw7G,mBAEjC,KAAM,CACFjxG,GAAIgwG,EAAMv6G,GACVtB,KAAM6/B,EACN/uB,MAAO,uBACPqrG,mBAAqBztG,GAAMA,EAAE,sCAC7B3T,IAAM,wBAAuBuG,EAAKoxB,YAAY0I,gBAC9Cj5B,QAAS,gBACTi6G,UAAWA,IACP96G,EAAKoxB,YAAYmuF,qBAChBv/G,EAAKoxB,YAAYquF,SAClB,CACIp3D,IAAa2zD,wBACb3zD,IAAag1D,yBACbh1D,IAAaxD,MACft3C,SAASvN,EAAKoxB,YAAYg3B,YAChC2yD,gBAAiBA,KAAO/6G,EAAKw7G,mBAEjC,KAAM,CACFjxG,GAAIgwG,EAAMv6G,GACVtB,KAAM6/B,EACN/uB,MAAO,aACPqrG,mBAAqBztG,GAAMA,EAAE,+BAC7B1Q,SAAWA,IACPA,EACIw0D,YAAqBt9B,GACf+C,IAAqB+oF,kCACjB1/G,EAAKoxB,YAAY3mB,gBACjB,CAACzK,EAAKoxB,YAAY0I,gBAClB,EACAlG,GAEJkoF,IAAqB3hF,uBACjB,CAACn6B,EAAKoxB,YAAY0I,eAClBlG,GAEb,EAEL/yB,QAAS,aACTi6G,UAAWA,KAAA,IAAAmB,EAAA,OACP/qD,YAAqBt9B,IACd5zB,EAAKw7G,mBACU,QADMS,EACtBj8G,EAAKoxB,mBAAW,IAAA6qF,OAAA,EAAhBA,EAAkB5qF,WAAW++C,QAC7BpwE,EAAKoxB,YAAYC,WAAW++C,MAAM,EAC5C2qC,gBAAiBA,KAAM,IAE3B,KAAM,CACFxwG,GAAIgwG,EAAMv6G,GACVtB,KAAM6/B,EACN/uB,MAAO,OACPqrG,mBAAqBztG,GAAMA,EAAE,6BAC7B1Q,SAAWA,IACPA,EACIw0D,YAAqBt9B,GACf+C,IAAqB+oF,kCACjB1/G,EAAKoxB,YAAY3mB,gBACjB,CAACzK,EAAKoxB,YAAY0I,gBAClB,EACAlG,GAEJkoF,IAAqBxhF,qBACjB,CAACt6B,EAAKoxB,YAAY0I,eAClBlG,GAEb,EAEL/yB,QAAS,WACTi6G,UAAWA,KAAA,IAAAG,EAAA,OACP/pD,YAAqBt9B,KACd5zB,EAAKw7G,kBACW,QAAjBP,EAACj7G,EAAKoxB,mBAAW,IAAA6pF,GAAhBA,EAAkB5pF,WAAW++C,SAC7BpwE,EAAKoxB,YAAYC,WAAW++C,MAAM,EAC7C2qC,gBAAiBA,KAAM,KCzRnBqE,CAAcp/G,EAAM4zB,EAAclsB,IAEtC,MACJ,KAAK2oF,IAAWwd,eACZkR,EAAiBJ,ED2RFgB,EAAC3/G,EAAM4zB,IAEd,CADD+mF,EAAc36G,GAElBq+G,gBACP,KAAM,CACF9zG,GAAIgwG,EAAMv6G,GACVtB,KAAM6/B,EACN/uB,MAAO,OACPqrG,mBAAqBztG,GAAMA,EAAE,6BAC7B1Q,SAAWA,IACPA,EACIo/G,IAAqBnmF,0BACjB6kF,EAAOx6G,GACP4zB,GAEP,EAEL/yB,QAAS,oBACTi6G,UAAWA,KAAM,EACjBC,gBAAiBA,KAAM,KC9SS4E,CAAY3/G,EAAM4zB,IAClD,MACJ,KAAKy8D,IAAW4d,WACZ8Q,EAAiBJ,EACbrD,EACIt7G,EACA4zB,EACAlsB,EACAmsB,IAGR,MACJ,KAAKw8D,IAAWG,aACZuuB,EAAiBJ,EFwpBAiB,EAAC5/G,EAAM4zB,EAAclsB,IAC9B,CACZ,KAAM,CACF6C,GAAIgwG,EAAMv6G,GACVtB,KAAM6/B,IAAMC,KACZhvB,MAAOxP,EAAKmwB,QAAQpY,QAAQqY,kBACtB,gBACA,gBACNyqF,mBAAqBztG,GACjBpN,EAAKmwB,QAAQpY,QAAQqY,kBACfhjB,EAAE,oCACFA,EAAE,gCACZ3T,IAAKuG,EAAKmwB,QAAQpY,QAAQqY,kBACnB,yBAAwBpwB,EAAKC,SAC7B,oBAAmBD,EAAKC,SAC/BY,QAAS,UACTi6G,UAAWA,KAAM,EACjBC,gBAAiBA,KAAM,IAE3B,KAAM,CACFxwG,GAAIgwG,EAAMv6G,GACVtB,KAAM6/B,IAAMI,SACZnvB,MAAO,OACPqrG,mBAAqBztG,GAAMA,EAAE,6BAC7B1Q,SAAWA,IACPA,EACIo/G,IAAqBjjF,iBACjB2hF,EAAOx6G,GACP4zB,GAEP,EAEL/yB,QAAS,aACTi6G,UAAWA,KAAA,IAAAlzB,EAAA,QACN5nF,EAAKoxB,aAAmC,QAApBw2D,EAAC5nF,EAAK6nF,sBAAc,IAAAD,GAAnBA,EAAqBr6E,SAAS7F,GAAS,EACjEqzG,gBAAiBA,KAAM,IAE3B,KAAM,CACFxwG,GAAIgwG,EAAMv6G,GACVtB,KAAM6/B,IAAMI,SACZnvB,MAAO,OACPqrG,mBAAqBztG,GAAMA,EAAE,6BAC7B1Q,SAAWA,IACPA,EACIo/G,IAAqBpjF,mBACjB8hF,EAAOx6G,GACP4zB,GAEP,EAEL/yB,QAAS,eACTi6G,UAAWA,KAAA,IAAA+E,EAAA,OACN7/G,EAAKoxB,cAAkC,QAAvByuF,EAAI7/G,EAAK6nF,sBAAc,IAAAg4B,OAAA,EAAnBA,EAAqBtyG,SAAS7F,GAAS,EAChEqzG,gBAAiBA,KAAM,KE5sBnB6E,CAAc5/G,EAAM4zB,EAAclsB,IAEtC,MACJ,KAAK2oF,IAAWE,aACZwuB,EAAiBJ,EF4hBO3+G,KAChC,MAAM8/G,EAAuC,aAA1B9/G,EAAKmwB,QAAQqgB,SAC1BuvE,EAASpF,EAAc36G,GAEvBggH,EAAkB,CACpBC,YAAa,kBACbC,iBAAkB,0BAClBC,cAAe,uBACfC,0BAA2B,mCAC3BC,cAAe,iBA2GnB,MAxGgB,CACZ,KAAM,CACF91G,GAAIgwG,EAAMv6G,GACVtB,KAAMohH,EAAavhF,IAAMK,SAAWL,IAAMC,KAC1C8hF,QAASR,EACH,4CACA,KACNtwG,MAAO,QACPqrG,mBAAqBztG,GAAMA,EAAE,+BAC7B3T,IAAM,iBAAgBuG,EAAKC,SAC3BY,QAASi/G,EACH,eACiC,IAAjC9/G,EAAKsvB,eAAejQ,SACpB,WACA,UACNy7F,UAAWA,KAAM,EACjBC,gBAAiBA,KAAM,IAE3B,KAAM,CACFxwG,GAAIgwG,EAAMv6G,GACVtB,KAAM6/B,IAAMI,SACZnvB,MAAO,OACPqrG,mBAAqBztG,GAAMA,EAAE,8BAC7BvM,QAAS,yBACTi6G,UAAWA,KAAM,EACjBC,gBAAiBA,KAAM,EACvBr+G,SAAUA,CAACA,EAAU6jH,EAAQ30D,KACzB,MAAM40D,EAAgB34F,YAClB,IAAI+sF,IAAI50G,EAAKg4F,QAAS/6F,OAAOC,SAASujH,QAAQ3kG,KAC9C8vC,GAEJlvD,EACIgkH,YAAe,CACXF,gBACAR,kBACAW,WAAY3gH,EAAKmwB,QAAQ5vB,iBACzBqgH,cAAe5gH,EAAKmwB,QAAQ1c,OAAOotG,KAAKpvB,OAE/C,IAGTsuB,EAAOnF,YACP,KAAM,CACFrwG,GAAIgwG,EAAMv6G,GACVtB,KAAM6/B,IAAMI,SACZnvB,MAAO,yBACPqrG,mBAAqBztG,GACjBA,EAAE,6CACN1Q,SAAWA,IACP,MAAMknC,EAAc5jC,EAAK27G,OAAOpxG,GAC1Bm5B,EAAM03C,YACRx3C,EACA5jC,EAAKsvB,eAAewB,eAChB9wB,EAAKsvB,eAAewB,cAAcvmB,GACtCvK,EAAKC,OACL,CACI27G,cAAeh4E,EACf43C,cAAc,EACdC,UAAU,EACVz3E,OAAQ,2BAIhBtH,EACIm/G,YAAmB,CACf/6G,MAHM,yBAIN4iC,MACAE,cACA5jC,OACA8gH,wBAAwB,IAE/B,EAELjgH,QAAS,uBACTi6G,UAAWA,IAEHvkF,IAAe2+E,oBACfl1G,EAAKsvB,eAAejQ,SAAW,EAGvC07F,gBAAiBA,KAAM,IAE3B,KAAM,CACFxwG,GAAIgwG,EAAMv6G,GACVtB,KAAM6/B,IAAMI,SACZnvB,MAAO,gBACPqrG,mBAAqBztG,GAAMA,EAAE,mCAC7B1Q,SAAWA,IACPA,EAASo/G,IAAqBvmF,WAAWv1B,GAAM,EAEnDa,QAAS,UACTi6G,UAAWA,IAAuC,IAAjC96G,EAAKsvB,eAAejQ,SACrC07F,gBAAiBA,KAAM,IAE3B,KAAM,CACFxwG,GAAIgwG,EAAMv6G,GACVtB,KAAM6/B,IAAMC,KACZhvB,MAAO,cACPqrG,mBAAqBztG,GAAMA,EAAE,wBAC7B3T,IAAM,qBAAoBuG,EAAKC,SAC/B66G,UAAWA,KAAM,EACjBkC,0BAA2BA,KAAM,IAG3B,EEhpB0B+D,CAAoB/gH,IACpD,MACJ,QACI,KACI,iCAAmCg2B,EAAW,kBAG1D,OAAO+oF,CAAc,E,miCC/EzB,MA2BMh/G,EAAUA,CACZC,EACAghH,EACAC,EACAhyF,EACA2E,EACAlsB,EACAmsB,EACAmC,IAAQr7B,IAAA,GAELqF,GAAI,IACP6B,IAAK7B,EAAKoxB,YAAcpxB,EAAKoxB,YAAY0I,cAAgB95B,EAAKC,OAC9DqvB,eAAc30B,IAAA,GACPqF,EAAKsvB,gBAAc,IACtB9N,QAASxhB,EAAKsvB,eAAejQ,SAAW,IAE5C7P,MAAOwxG,EAAUhhH,EAAM0H,GACvBjM,QAAS8iH,EACLv+G,EACA4zB,EACAlsB,EACAmsB,EACAmC,GAEJ2mB,QAASskE,EAAWjhH,EAAMivB,GAC1B+jF,cAAekO,EAAyBlhH,GACxC8wB,cACI9wB,EAAKsvB,eAAewB,eAAiB9wB,EAAKkmC,SACpClmC,EAAKsvB,eAAewB,cACpB,KACVg/E,MACI9vG,EAAKoxB,aAAepxB,EAAKoxB,YAAY0+E,MAC/B9vG,EAAKoxB,YAAY0+E,MACjB,KACV9X,QACqC,MAAjCh4F,EAAKg4F,QAAQmpB,UAAU,EAAG,GAAanhH,EAAKg4F,QAAW,IAAGh4F,EAAKg4F,YAGjEkpB,EAA4BlhH,IAC9B,MAAM+M,GAAmB/M,EAAKmwB,QAAQpjB,iBAAmB,IACpDC,QACImuD,GAC2B,aAAxBA,EAAO/K,cACiB,iBAAxB+K,EAAO/K,eAEdhwD,KAAIpF,GAAeA,EAAZq1D,eAEZ,OAAOtjD,EAAgBrL,OAAS,EAC1BqL,EAAgB4lC,QAAO,CAACC,EAAMqrC,IAC1BrrC,EAAOqrC,EAAUrrC,EAAOqrC,IAE5B,CAAC,EAMLmjC,EAAiB,CACnB,CAAC/wB,IAAWC,kBAAmB,CAC3B9gF,MAAOy4C,IACPtL,QAASC,IACT5mB,SAAUq6D,IAAWC,kBAEzB,CAACD,IAAWI,gBAAiB,CACzBjhF,MAAO84C,IACP3L,QAASkB,IACT7nB,SAAUq6D,IAAWI,gBAEzB,CAACJ,IAAWwd,gBAAiB,CACzBr+F,MAAO+4C,IACP5L,QAASS,IACTpnB,SAAUq6D,IAAWwd,gBAEzB,CAACxd,IAAWE,cAAe,CACvB/gF,MAAOg4C,IACP7K,QAASU,IACTrnB,SAAUq6D,IAAWE,cAEzB,CAACF,IAAW4d,YAAa,CACrBz+F,MAAO04C,IACPvL,QAASa,IACTxnB,SAAUq6D,IAAW4d,YAEzB,CAAC5d,IAAWG,cAAe,CACvBhhF,MAAOo4C,IACPjL,QAASiB,IACT5nB,SAAUq6D,IAAWG,eA0GhB6wB,EAA6BA,CAAC7iH,EAAOiM,KAC9C,MAAQqtB,EAAct5B,EAAds5B,UACF93B,EAAOjH,OAAOC,KAAK8+B,GAAWloB,MAAM/N,GACzBi2B,EAAUj2B,GACXuvB,YAAY3mB,kBAAoBA,IAGhD,OAAOzK,EAAO83B,EAAU93B,GAAQ,IAAI,EAGzB,KACXonF,YAjHgB,SAACpnF,EAAM4zB,GAAY,IAAEY,EAAsBzwB,UAAArC,OAAA,QAAAyO,IAAApM,UAAA,IAAAA,UAAA,GAAQ,OACnEhE,EACIC,EACAkoD,IACAwoC,YAAWlzC,IAAkB5pB,GAAeA,GAC5CwtF,EAAe/wB,IAAW4d,YAAYtxD,QAAQ/oB,GAC9CA,EACA,GACAY,EACA67D,IAAW4d,WACd,EAwGD3mB,cAvGkBA,CAACtnF,EAAM4zB,IACzB7zB,EACIC,EACA4nD,IACA8oC,YAAW9yC,IAAoBhqB,GAAeA,GAC9CwtF,EAAe/wB,IAAWG,cAAc7zC,QAAQ/oB,GAChDA,EACA,IACA,EACAy8D,IAAWG,cA+FfvG,gBAzEoBA,CACpB3mF,EACAswB,EACAlsB,EACAmsB,EACAmC,KAEA,IAAKorF,EAAeprF,GAChB,IACI,MAAMorF,EAAeprF,EACzB,CAAE,MAAOl0B,GACLzC,YAAOyC,EACX,CAEJ,MAAMgpF,EApKkBxnF,KAAQ,CAChC6xB,OAAQ7xB,EAAS6xB,OACjB4C,iBAAkB,GAClBD,UAAW,CAAC,EACZI,WAAY50B,EAAS40B,WACrBD,YAAa30B,EAAS20B,YACtB4wD,gBAAiBvlF,EAASulF,gBAC1By4B,YAAah+G,EAASg+G,aAAe,KA6JpBC,CAAmBj+G,GACpC,MA9K0BA,KACzBA,GAAD,MACAA,GAEoB,iBAAbA,EA0KHk+G,CAAqBl+G,IAIzBvK,OAAOC,KAAKsK,EAAS9E,OAAOC,SAASoD,IACjC,MAAM7B,EAAOsD,EAAS9E,MAAMqD,GAC5B,IAAI0I,EAAK,EACT,OAAQyrB,GACJ,KAAKq6D,IAAWC,iBAChB,KAAKD,IAAWwd,eAChB,KAAKxd,IAAWG,aAChB,KAAKH,IAAWE,aACZhmF,EAAKvK,EAAKC,OAAO8iD,WACjB,MACJ,KAAKstC,IAAWI,eAChB,KAAKJ,IAAW4d,WACZ1jG,EAAKvK,EAAKoxB,YAAY0I,cAAcipB,WACpC,MACJ,QACI,IACI,KAAO,wCAAuC/sB,aAClD,CAAE,MAAOl0B,GACLzC,YAAOyC,EACX,EAERgpF,EAAS/yD,iBAAiB9pB,KAAK1D,GAE/BugF,EAAShzD,UAAUvtB,GAAMxK,EACrBC,EACAohH,EAAeprF,GAAUxmB,MACzBkhF,YACI0wB,EAAeprF,GAAU2mB,QAAQ/oB,GACjCA,GAEJwtF,EAAeprF,GAAU2mB,QAAQ/oB,GACjCA,EACAlsB,EACAmsB,EACAutF,EAAeprF,GAAUA,SAC5B,IAtCM80D,CAyCI,EAiBftB,iBA9FqBA,CAACxpF,EAAM4zB,IAC5B7zB,EACIC,EACAsoD,IACAooC,YAAW7yC,IAAsBjqB,GAAeA,GAChDwtF,EAAe/wB,IAAWI,gBAAgB9zC,QAAQ/oB,GAClDA,EACA,IACA,EACAy8D,IAAWI,gBAsFf4wB,6B,oCCjQJ,sGAAO,MAAMI,EAAqB5mH,GAAqBA,EAAMovB,MAAMy3F,YAEtD5kD,EAAoCjiE,GAC7C4mH,EAAkB5mH,GAAOkiE,2BAEhBZ,EAA+BthE,GACxC4mH,EAAkB5mH,GAAOuhE,uBAAyB,KAEzCC,EAA4CxhE,GACrD4mH,EAAkB5mH,GAAOyhE,oCAAsC,I,wHCVpD,GAAC,MAAQ,eAAe,kBAAkB,yBAAyB,eAAiB,yBAAyB,gBAAgB,uBAAuB,aAAe,uBAAuB,QAAU,iBAAiB,eAAe,sBAAsB,YAAc,sBAAsB,eAAe,sBAAsB,YAAc,sBAAsB,eAAe,sBAAsB,YAAc,sBAAsB,YAAY,mBAAmB,SAAW,mBAAmB,iBAAiB,wBAAwB,cAAgB,wBAAwB,cAAc,qBAAqB,WAAa,qBAAqB,oBAAoB,2BAA2B,iBAAmB,2BAA2B,aAAa,oBAAoB,UAAY,oBAAoB,SAAW,kBAAkB,aAAa,oBAAoB,UAAY,oBAAoB,iBAAiB,wBAAwB,cAAgB,wBAAwB,iBAAiB,wBAAwB,cAAgB,wBAAwB,UAAU,iBAAiB,OAAS,iBAAiB,UAAU,iBAAiB,OAAS,iBAAiB,UAAU,iBAAiB,OAAS,iBAAiB,OAAS,gBAAgB,SAAW,kBAAkB,QAAU,iBAAiB,MAAQ,eAAe,eAAe,sBAAsB,YAAc,sBAAsB,KAAO,cAAc,MAAQ,eAAe,MAAQ,eAAe,YAAc,sB,inDCqFj9C,MAAMqlD,EAAUC,aAYVC,EAAa7mH,IAUb,IATI8mH,EAAa9mH,EAAnB20B,KACAyF,EAAIp6B,EAAJo6B,KACA2sF,EAAK/mH,EAAL+mH,MACAh9G,EAAS/J,EAAT+J,UAOA,IAAK+8G,EAAe,OAAO,KAC3B,IAAKE,yBAAeF,GAAgB,OAAO,KAE3C,MAAMG,EAxB4Bp3B,KAClC,MAAMtmF,EAAQy9G,yBAAen3B,GAAWA,aAAO,EAAPA,EAAStmF,WAAQ4L,EACzD,MAAwB,iBAAV5L,GACVA,GACA,cAAeA,GACfA,EAAMQ,UACHR,aAAK,EAALA,EAAOQ,UACR,EAAE,EAiBYm9G,CAA6BJ,GAEjD,OACI18G,cAAAw+C,WAAA,CAAAr+C,SACK48G,uBAAaL,EAAannH,IAAA,GACpBmnH,aAAa,EAAbA,EAAev9G,OAAK,IAEvBQ,UAAWk9G,GAELtV,IACI,OACA,CACI,UAAoB,OAATv3E,EACX,UAAoB,OAATA,EACX,UAAoB,OAATA,GAA0B,OAATA,EAC5B,UAAW2sF,GAAkB,OAAT3sF,GAExBrwB,OAGf,EAIEic,EAAS2gG,GAKlB,CAAAvmH,EAyBIgnH,KACC,IAAAC,EAAAjnH,EAxBG6lB,aAAK,IAAAohG,EAAG,UAASA,EAAAC,EAAAlnH,EACjBgmD,eAAO,IAAAkhE,EAAG,SAAQA,EAAAC,EAAAnnH,EAClBg6B,YAAI,IAAAmtF,EAAG,KAAIA,EACXh9G,EAAQnK,EAARmK,SACAy+C,EAAQ5oD,EAAR4oD,SACAzzB,EAAIn1B,EAAJm1B,KACAwxF,EAAK3mH,EAAL2mH,MACAh9G,EAAS3J,EAAT2J,UACAy9G,EAAWpnH,EAAXonH,YACAC,EAAKrnH,EAALqnH,MACAvhG,EAAO9lB,EAAP8lB,QACMwhG,EAAQtnH,EAAdu0B,KACUgzF,EAAYvnH,EAAtBwnH,SACWC,EAAaznH,EAAxB0nH,UACYC,EAAc3nH,EAA1B4nH,WACAlnG,EAAI1gB,EAAJ0gB,KACAjc,EAAOzE,EAAPyE,QACAyxD,EAAKl2D,EAALk2D,MAAK2xD,EAAA7nH,EACL8nH,aAAK,IAAAD,EAAG,SAAQA,EAChBE,EAAM/nH,EAAN+nH,OACAC,EAAShoH,EAATgoH,UACGz0F,EAAUlvB,EAAArE,EAAAsE,GAIjB,MAAMsjH,EAAUroH,EAAA,CAAK0oH,SAAU,QAAWN,GAEpCO,EAAyC,WAAzBN,aAAU,EAAVA,EAAYK,UAC5BE,EAAwC,UAAzBP,aAAU,EAAVA,EAAYK,UAC3BT,EAAWD,UAAiBY,EAAeb,EAAW,KACtDI,EAAYD,UAAkBS,EAAgBZ,EAAW,KACzDc,EAAcJ,UAAqC,WAAxBJ,aAAU,EAAVA,EAAY5hE,SAEvCqiE,EAAe90F,EAAW,iBAE1B+0F,EAAgB/W,IAClBgX,EAAIC,OACJD,EAAI1iG,MACJ0iG,EAAK,SAAQ1iG,KACb,CACI,CAAC0iG,EAAIE,QAAqB,WAAZziE,EACd,CAACuiE,EAAIG,SAAsB,YAAZ1iE,EACf,CAACuiE,EAAII,OAAoB,UAAZ3iE,EACb,CAACuiE,EAAIK,UAAuB,aAAZ5iE,EAChB,CAACuiE,EAAInB,aAAcA,EACnB,CAACmB,EAAK,QAAOvuF,QAAYA,GAAiB,OAATA,EACjC,CAACuuF,EAAIpzF,MAAOA,EACZ,CAACozF,EAAI5B,OAAQA,EACb,CAAC4B,EAAIlB,OAAQA,EACb,CAACkB,EAAI9jH,SAAUA,EACf,4BAA6BsjH,EAC7B,CAACQ,EAAIM,OAA+B,UAAvBjB,EAAW5hE,QACxB,YAAyB,SAAV8hE,EACf,aAA0B,UAAVA,EAEhB,OAAQT,GAASe,GAErBz+G,GAGEm/G,EAAap5D,uBAEXllC,KAKqB,IAAjB69F,GAA0C,SAAjBA,IAEN,mBAAZviG,GAA2BrhB,GAClCqhB,EAAQ0E,GACZ,GAEJ,CAAC1E,EAASrhB,EAAS4jH,IAGvB,GAAInyD,EACA,OAAOlsD,cAAA,QAAAzK,EAAA,CAAOoK,UAAW2+G,GAAmB/0F,IAGhD,MAAMw1F,EAAiBtkH,EACnB6F,eAAA,QAAMX,UAAW4+G,EAAIS,YAAY7+G,SAAA,CAC7BH,cAACwnF,IAAW,CACR7nF,UAAW4nG,IAAW,iBAAkB,CACpC,UAAoB,OAATv3E,EACX,UAAoB,OAATA,EACX,UAAoB,OAATA,MAGnBhwB,cAAA,QACIL,UAAU,kBACV6pB,KAAK,QACL,YAAU,YAAWrpB,SAAC,eAI9B,KAgBE8+G,EAAcb,GAAyB,SAAVN,EAC7BoB,EAAed,GAAyB,UAAVN,EAC9BruE,EACA+tE,GAAcE,EACZp9G,eAAA,QACIX,UAAW4nG,IAAW,4BAA6B,CAC/C,yBAAoC,WAAVuW,EAC1B,sBAAiC,UAAVA,IACxB39G,SAAA,CACHH,cAAA,QAEIC,MAAK1K,EAAA,GACG6oH,GAAyB,SAAVN,EACb,CAAEqB,KAAM,GACR,CAAC,GAEXx/G,UAAW4nG,IAAW,SAAU,CAC5B,qBAAsBiW,EACtB,SAAUr9G,KAAcq9G,IAAayB,IACtC9+G,SACHH,cAACy8G,EAAU,CAAClyF,KAAMizF,EAAUxtF,KAAMA,EAAM2sF,MAAOA,MAElDx8G,EACA4+G,EACD/+G,cAAA,QAEIC,MAAK1K,EAAA,GACG6oH,GAAyB,UAAVN,EACb,CAAEqB,KAAM,GACR,CAAC,GAEXx/G,UAAW4nG,IAAW,6BAA8B,CAChD,qBAAsBmW,EACtB,SAAUv9G,KAAcu9G,IAAcwB,IACvC/+G,SACHH,cAACy8G,EAAU,CACPlyF,KAAMmzF,EACN1tF,KAAMA,EACN2sF,MAAOA,SAKnBr8G,eAAAk+C,WAAA,CAAAr+C,SAAA,CACKA,EACA4+G,KAMb,OAAOroG,IAASkoC,EACZ5+C,cAACo/G,IAAK7pH,IAAA,CACFmhB,KAAMA,EACN/W,UAAW2+G,EACXxiG,QAASgjG,EACTx3B,IAAK01B,GACDzzF,GAAU,IAAAppB,SACbsvC,KAGLzvC,cAAA,SAAAzK,IAAA,CACIoK,UAAW2+G,EACXxiG,QAASgjG,EACTlgE,SAAUA,GACNr1B,GAAU,IACd+9D,IAAK01B,EAAa78G,SACjBsvC,IAER,IAIT7zB,EAAOwI,YAAc,Q,oCCxUrB,4GAAM/D,EAAyB,CAC3Bg/F,kBAAmB,kBACnBC,wBAAyB,uBACzBC,cAAe,eACfC,sBAAuB,qBACvBC,oBAAqB,oBACrBC,cAAe,cACfC,kBAAmB,kBACnBtqC,2BAA4B,yBAC5BuqC,qBAAsB,qBACtBC,gCAAiC,4BACjCt/F,qBAAsB,qBACtBu/F,yBAA0B,wBAC1BC,eAAgB,eAChBz/F,eAAgB,gBAChB0/F,gBAAiB,gBACjBC,wBAAyB,uBACzBC,4BAA6B,2BAC7BC,6BAA8B,4BAC9BC,6BAA8B,6BAC9BC,kBAAmB,kBACnBC,sBAAuB,qBACvBC,iBAAkB,iBAClBrrC,QAAS,WAQPsrC,GAJFngG,EAAuBC,eACvBD,EAAuB+/F,6BAGY,CACnC//F,EAAuBk/F,cACvBl/F,EAAuBo/F,oBACvBp/F,EAAuBm/F,sBACvBn/F,EAAuBE,qBACvBF,EAAuB60D,UAGrBurC,EAAyB,CAC3BV,eAAgB,eAChBE,wBAAyB,uBACzBC,4BAA6B,2BAC7BC,6BAA8B,4BAC9BE,kBAAmB,kBACnBV,kBAAmB,kBACnBe,eAAgB,eAChBC,gBAAiB,gBACjBC,qCAAsC,kCACtCC,yBAA0B,wB,kxCCrC9B,MAAMC,EAAiBC,IAAE1jD,OAAO,CAC5BjoE,KAAM2rH,IAAEC,SACRzzG,WAAYwzG,IAAEjuE,SACdmuE,OAAQF,IAAEG,YAGRC,EAA2BJ,IAAE1jD,OAAO,CACtC+jD,iBAAkBL,IAAEjuE,SACpB19C,KAAM2rH,IAAEC,SACRzzG,WAAYwzG,IAAEjuE,SACdmuE,OAAQF,IAAEG,YAGRG,EAAiCN,IAAE1jD,OAAO,CAC5Cq1B,WAAYquB,IAAEtjD,MAAMqjD,GAEpBQ,YAAaP,IAAEtjD,MAAM0jD,GAA0BI,aAYtCC,EAAiBjuH,YAAU,CACpCC,YAAa,iBACbC,UAAWutF,YAAoB,CAAEz0B,OAAQv1D,MACzCnD,UAAYC,IAAO,CACf2tH,cAAe3tH,EAAQK,MAGrB,CACEA,MAAOyB,IAID,IAAA8rH,EAAA9rH,EAHF2X,kBAAU,IAAAm0G,GAAI,EAACA,EACfvmH,EAAgBvF,EAAhBuF,iBAAgBwmH,EAAA/rH,EAChBgsH,oBAAY,IAAAD,EAAG,EAACA,EAEhB,OAAIp0G,EAAa,GAAKq0G,EAAe,EAC1B,CACHvtH,IAAM,+BACNC,OAAQ,OACR6E,KAAM,CACFoU,WAAYA,EACZs0G,cAAeD,EAAe,EAC9BlmH,MAAOP,IAKZ,CACH9G,IAAK,uCACLC,OAAQ,OACR6E,KAAM,CACFuC,MAAOP,GAEd,EAGLsrC,kBAAmBA,CAACvoC,EAAmB0oC,EAAO5hC,KAAQ,IAAAhP,EAClD,MAAMmD,EAAOkoH,EAA+Br/C,MAAM9jE,GAE5CojH,GAAcnoH,aAAI,EAAJA,EAAMmoH,cAAe,GAEzC,OAAA/rH,IAAA,GACO4D,GAAI,IAEPmoH,YAAaA,EAAYt6G,MAAM,EAAG,GAClC0rF,WAAyD,QAA/C18F,EAAE,IAAImD,EAAKu5F,cAAe4uB,EAAYt6G,MAAM,WAAG,IAAAhR,OAAA,EAA7CA,EACNgR,QACDuD,MAAK,CAACV,EAAGC,KAAC,IAAAg4G,EAAA,OACP,IAAIx+F,KAAKy+F,SACK,QADGD,EACb98G,EAAIq3C,cAAM,IAAAylE,IAAI79F,KAChB+9F,QAAQn4G,EAAEzU,KAAM0U,EAAE1U,KAAK,KAC5B,IAIjB6sH,eAAgBnuH,EAAQK,MAGtB,CACEA,MAAQyJ,GACH,wCAAuCgH,IAAGC,UAAUjH,WAOtDskH,EACXV,EADWU,uBAAwBC,EACnCX,EADmCW,sBAAuBC,EAC1DZ,EAD0DY,W,ynCCzG9D,MAEaryC,EAA+B75B,IACxC,IAAK,MAALtgD,KAA2BjC,OAAOu4E,QAAQh2B,GAAM,KAAAlgD,EAAAuvD,EAAA3vD,EAAA,SAApC6G,EAAGzG,EAAA,GACX,QAAc+U,IADI/U,EAAA,GACO,CACrB,MAAM2D,EAAW,GAAE8C,iBALX,MASRqsE,QAAQrvE,MAAME,EAClB,CACJ,E,ulCCXJ,MAAM9E,EAAe,CACjBwtH,oBAAqB,GACrBC,wBAAwB,GAGf/6C,EAAmB,CAC5B54D,aAAc,eACd64D,UAAW,YACXC,OAAQ,UAGG,eAAkC,IAAjChyE,EAAKkJ,UAAArC,OAAA,QAAAyO,IAAApM,UAAA,GAAAA,UAAA,GAAG9J,EAAckiB,EAAMpY,UAAArC,OAAA,EAAAqC,UAAA,QAAAoM,EACxC,GACS,8BADDgM,EAAOzd,KACuB,CAC9B,MAAMgpH,EACFvrG,EAAOlhB,SAAWkhB,EAAOlhB,QAAQyG,OAAS,EAC9C,OAAA/G,IAAA,GACOE,GAAK,IACR4sH,oBAAqBtrG,EAAOlhB,QAC5BysH,0BAER,CAGJ,OAAO7sH,CACV,C,gFCzBM,MAAMw/E,EAA0Bp6E,GAAYpF,IAAK,IAAA8sH,EAAA,OACzC,QADyCA,EACpD9sH,EAAM2D,aAAK,IAAAmpH,OAAA,EAAXA,EAAa/tC,gBAAgBrsE,SAAStN,EAAO,C,+sCCGjD,MAAMuwD,EAAcJ,GACQ,aAAjBA,GAAgD,iBAAjBA,EAa7Bw3D,EAAsBA,CAACrpH,EAAM0wB,EAAUxW,IACzCla,EAAKspH,eACPznH,KAAK+1D,GACFA,EAActpC,KAAKzsB,KAAK0nH,IAAG,IAAAC,EAAAC,EAAAC,EAAAC,EAbVngE,EAaU,OAAAptD,IAAA,GACpBmtH,GAAG,IACNl3F,OAAQ,CAAC,EACT4qF,iBAAkBrlD,EAActpC,KAAKnrB,OAAS,EAC9C65G,uBACMplD,EAAcgyD,4BACpB93F,WAAY8lC,EAAct7D,MAAMw1B,WAChCxuB,IAAKimH,EAAI33F,QAAQlwB,OACjBA,OAAQ6nH,EAAI33F,QAAQlwB,OACpB+3F,QAAS8vB,EAAI33F,QAAQ6nE,QACrB7nE,QAAOx1B,IAAA,GACAmtH,EAAI33F,SAAO,IACdpY,QAAS,CAAC,EACVuH,QAAS,CACL6xE,UAAWwc,YACPma,EAAI33F,QAAQ7Q,QACZ7G,MAIZ6W,eAAgB,CACZjQ,SAAUyoG,EAAIM,OAAO/oG,UAEzBs8F,OAAMhhH,IAAA,GACCw7D,EAAcC,cAAY,IAC7B7rD,GAAI4rD,EAAcC,aAAa1uD,WAEnC0pB,YAAWz2B,YAAA,GACJmtH,EAAI12F,aACH+kC,EAAc7rC,SAASimC,iBACrB,CACIA,iBAAgB51D,IAAA,GACTw7D,EAAc7rC,SAASimC,kBAAgB,IAC1CC,WAAYA,EACR2F,EAAc7rC,SAASimC,iBAClBH,iBAIjB,MACF+F,EAAc7rC,SAASosC,iBACrB,CACIA,iBAAgB/7D,IAAA,GACTw7D,EAAc7rC,SAASosC,kBAAgB,IAC1ClG,WAAYA,EACR2F,EAAc7rC,SAASosC,iBAClBtG,iBAIjB,MAC6B,QAA/B23D,EAAA5xD,EAAc7rC,SAASA,gBAAQ,IAAAy9F,GAA/BA,EAAiCtuH,IAC/B,CACI+iH,aAA6C,QAAjCwL,EAAE7xD,EAAc7rC,SAASA,gBAAQ,IAAA09F,OAAA,EAA/BA,EAAiCvuH,KAEnD,MAAI,IACVijH,eAAc/hH,EAAA,GACPw7D,EAAc7rC,SAASA,UAE9BmyF,uBACmC,QADbwL,EAClB9xD,EAAc7rC,SAASA,gBAAQ,IAAA29F,OAAA,EAA/BA,EAAiC/nE,mBACrCv9C,WAA2C,QAAjCulH,EAAE/xD,EAAc7rC,SAASA,gBAAQ,IAAA49F,OAAA,EAA/BA,EAAiCvlH,WAC7CumF,kBAAmB/yB,EAAct7D,MAAMquF,kBACvCk0B,gBAAiBjnD,EAAct7D,MAAMuiH,gBACrCM,kBAAmBvnD,EAAct7D,MAAM6iH,kBACvCt1D,WAAY+N,EAAct7D,MAAMutD,WAChC39C,gBAAiB0rD,EAAc1rD,gBAC/B80G,mBACIppD,EAAcz5C,QAAQ6iG,oBACtBtwF,IAAaE,IAAgBgC,gBAC3B,CACIE,WAAU12B,MAAA,GACHmtH,EAAI12F,YAAY22B,aAChB+/D,EAAI12F,YAAYC,YAAU,IAC7BC,KAAM,CACF+2B,IAAaxD,KACbwD,IAAa2zD,wBACb3zD,IAAag1D,yBACbh1D,IAAazD,iBACfr3C,SAAS4oD,EAAct7D,MAAMutD,YAC/BzB,eACIwP,EAAct7D,MAAMwtH,iBACxBzhE,QAASuP,EAAct7D,MAAMytH,UAC7Bl4C,OAAQja,EAAct7D,MAAM0tH,iBAC5B/I,IAAKsI,EAAI12F,YAAYC,WAAWm3F,kBAGxC,CACIzgE,YAAWptD,IAAA,CACP2iH,aACInnD,EAAct7D,MAAM2iH,eACxBiL,aACItyD,EAAct7D,MAAM6tH,eACxB7tH,OA1GLktD,EA0G+BptD,IAAC,CAAC,EACrBmtH,EAAI12F,YAAY22B,aAAW,IAC9BnB,QAASuP,EAAct7D,MAAMytH,UAC7Bh3F,KAAM,CACF+2B,IAAaxD,KACbwD,IAAag1D,yBACbh1D,IAAazD,iBACfr3C,SAAS4oD,EAAct7D,MAAMutD,cAhH7DL,EAAYnB,SAAWmB,EAAYC,aAC5B,OAEPD,EAAYnB,QACL,UAEJmB,EAAYz2B,KAAO,OAAS,YA4GFw2F,EAAI12F,YAAY22B,aAAW,IAC9Bz2B,KAAM,CACF+2B,IAAaxD,KACbwD,IAAag1D,yBACbh1D,IAAazD,iBACfr3C,SAAS4oD,EAAct7D,MAAMutD,YAC/BzB,eACIwP,EAAct7D,MAAMwtH,iBACxBzhE,QAASuP,EAAct7D,MAAMytH,UAC7Bl4C,OAAQja,EAAct7D,MAAM8tH,sBAEnC,IACP/3B,gBAAiB,CACbO,UAAWwc,YACPma,EAAI12F,YAAYw/D,gBAChBn4E,IAGRq3F,MAAKn1G,IAAA,GACEw7D,EAAcD,aAAW,IAC5B3rD,GAAI4rD,EAAcD,YAAYxuD,cAErC,MAGRk8D,SAASkkD,GAAQA,IAGbc,EAA+BA,CAACrqH,EAAMo1B,IACxCp1B,EAAKspH,eAAeznH,KAAK+1D,GAC5Bx7D,IAAA,GACOw7D,GAAa,IAChB7rC,SAAQ3vB,MAAA,GACDw7D,EAAc7rC,UACb6rC,EAAc7rC,SAASimC,iBACrB,CACIA,iBAAgB51D,IAAA,GACTw7D,EAAc7rC,SAASimC,kBAAgB,IAC1CC,WAAYA,EACR2F,EAAc7rC,SAASimC,iBAClBH,iBAIjB,MACF+F,EAAc7rC,SAASosC,iBACrB,CACIA,iBAAgB/7D,IAAA,GACTw7D,EAAc7rC,SAASosC,kBAAgB,IAC1ClG,WAAYA,EACR2F,EAAc7rC,SAASosC,iBAClBtG,iBAIjB,MAEVt7B,eAAgBqhC,EAActpC,KAAKzsB,KAAK0nH,GAC7BA,EAAI12F,YAAY0I,gBAE3B+uF,sBAAuB1yD,EAActpC,KAChCzsB,KAAK0nH,IAMqB,IAJnBA,EAAI12F,YACAuC,EAAK1E,WAAaE,IAAgBgC,gBAC5B,aACA,eACR62B,aAEK8/D,EAAI12F,YAAY0I,cAEpB,OAEV9sB,OAAOuK,a,+iCCjLxB,MAAMqf,EAAqBA,KAAA,CACvBl4B,KAAM0J,IAAY43E,uBAyZP,KACXnmD,qBAtEyBA,CAACpvB,EAAiB6+E,EAAc11D,KAClD,CACHl1B,KAAM0J,IAAYg4E,wCAClBnlF,QAAS,CACLquF,eACA7+E,kBACAmpB,kBAiERmG,oBA5DwBA,CAACtvB,EAAiB6+E,EAAc11D,KACjD,CACHl1B,KAAM0J,IAAYi4E,uCAClBplF,QAAS,CACLwP,kBACA6+E,eACA11D,kBAuDRo1D,qBAvHAA,CAACv+E,EAAiBmpB,IAAiBv2B,UAC/BX,EAASg1B,aAAU,IACnB1zB,IACK8O,KAAK,uCAAwC,CAC1CrC,kBACAwuB,QAAQ,IAEXh7B,MAAK,KACFvB,EAASmC,aAAM,IACfnC,EAAS,CACLgC,KAAM0J,IAAY+3E,gCAClBllF,QAAS,CACLwP,kBACAmpB,eACAk1F,UAAU,KAGlBpsH,EAASg1B,aAAU,GACb,IAETvzB,OAAOU,GACJkqH,IAAsB3qH,YAAY1B,EAAUmC,IAC/C,EAkGTmqH,qBA9FAA,CAACv+G,EAAiBmpB,IAAiBv2B,UAC/BX,EAASg1B,aAAU,IACnB,UACU9E,YAAMgJ,IAAK4D,cAAe,CAC5B7/B,KAAMk8B,KAAK5rB,UAAU,CAAEwqB,IAAK,CAAChqB,OAEjC/N,EAASmC,aAAM,IACfnC,EAAS,CACLgC,KAAM0J,IAAY+3E,gCAClBllF,QAAS,CACLwP,kBACAmpB,eACAk1F,UAAU,KAGlBpsH,EAASg1B,aAAU,GACvB,CAAE,MAAO7yB,GACLkqH,IAAsB3qH,YAAY1B,EAAUmC,EAChD,GA6EJkgE,eA9IAA,CAACp8D,EAAY8H,EAAiBmpB,IAAiBv2B,UAC3CX,EAASg1B,aAAU,IACnB,IAYI,aAXM9E,YAAMgJ,IAAK+D,gBAAiB,CAC9BhgC,KAAMk8B,KAAK5rB,UAAU,CAAEtH,WAAYA,MAEvCjG,EAASmC,aAAM,IACfnC,EAAS,CACLgC,KAAM0J,IAAY63E,+BAClBhlF,QAAS,CACLwP,kBACAmpB,kBAGDl3B,EAASg1B,aAAU,GAC9B,CAAE,MAAO7yB,GACL,OAAOkqH,IAAsB3qH,YAAY1B,EAAUmC,EACvD,GA8HJoqH,6BAlQAA,CAACx+G,EAAiBy+G,IAClB7rH,UACIX,EAASg1B,aAAU,IACnB,IAkBI,OAjBAh1B,EAASmC,aAAM,UAET+tB,YAAMgJ,IAAKu/D,gCAAiC,CAC9Cx7F,KAAMk8B,KAAK5rB,UAAU,CACjBQ,kBACA0+G,aAAcD,MAItBxsH,EAAS,CACLgC,KAAM0J,IAAYw3E,yCAClB3kF,QAAS,CACLwP,kBACAy+G,4CAIDxsH,EAASg1B,aAAU,GAC9B,CAAE,MAAO7yB,GACL,OAAOkqH,IAAsB3qH,YAAY1B,EAAUmC,EACvD,GA2OJuqH,2BA3SAA,CAAC3+G,EAAiBmpB,EAAckB,EAAgBwzF,IAChDjrH,UACIX,EAASg1B,aAAU,IACnB,IA8BI,OA7BAh1B,EAASmC,aAAM,IACXypH,SACM17F,YAAMgJ,IAAKwD,aAAc,CAC3Bz/B,KAAMk8B,KAAK5rB,UAAU,CAAEwqB,IAAKK,MAEhCp4B,EACIqsH,IAAsBl0F,kCAClBC,EACAlB,YAIFhH,YAAMgJ,IAAK0D,eAAgB,CAC7B3/B,KAAMk8B,KAAK5rB,UAAU,CAAEwqB,IAAKK,MAEhCp4B,EACIqsH,IAAsBh0F,oCAClBD,EACAlB,KAIZl3B,EAAS,CACLgC,KAAM0J,IAAYy3E,uBAClB5kF,QAAS,CACLqtH,YACA79G,qBAGD/N,EAASg1B,aAAU,GAC9B,CAAE,MAAO7yB,GACL,OAAOkqH,IAAsB3qH,YAAY1B,EAAUmC,EACvD,GAwQJwqH,gCA9LAA,CAAC5+G,EAAiBmpB,EAAcC,EAA8By1F,IAC9DjsH,UACIX,EAASg1B,aAAU,IACnB,IAmCI,OAlCAh1B,EAASmC,aAAM,IACXyqH,SACM18F,YAAMgJ,IAAK4B,iBAAkB,CAC/B79B,KAAMk8B,KAAK5rB,UAAU,CAAEwqB,IAAK,CAAChqB,OAEjC/N,EACIqsH,IAAsBz0F,iCAClB,CAAC7pB,GACDmpB,EACAC,IAGRyrF,YAAiB,mDAEX1yF,YAAMgJ,IAAK8B,mBAAoB,CACjC/9B,KAAMk8B,KAAK5rB,UAAU,CAAEwqB,IAAK,CAAChqB,OAEjC/N,EACIqsH,IAAsBp0F,mCAClB,CAAClqB,GACDmpB,EACAC,KAIZn3B,EAAS,CACLgC,KAAM0J,IAAY23E,2BAClB9kF,QAAS,CACLwP,kBACA29C,WAAYkhE,EACNjhE,IAAag1D,yBACbh1D,IAAa0zD,UAGpBr/G,EAASg1B,aAAU,GAC9B,CAAE,MAAO7yB,GACL,OAAOkqH,IAAsB3qH,YAAY1B,EAAUmC,EACvD,GAsJJ0qH,+BAzOAA,CAAC9+G,EAAiBmpB,EAAc41F,IAChCnsH,UACIX,EAASg1B,aAAU,IACnB,IAgCI,OA/BAh1B,EAASmC,aAAM,IACX2qH,SACM58F,YAAMgJ,IAAKrE,gBAAiB,CAC9B53B,KAAMk8B,KAAK5rB,UAAU,CAAEwqB,IAAK,CAAChqB,OAEjC/N,EACIqsH,IAAsBr0F,gCAClB,CAACjqB,GACDmpB,YAIFhH,YAAMgJ,IAAKsE,kBAAmB,CAChCvgC,KAAMk8B,KAAK5rB,UAAU,CAAEwqB,IAAK,CAAChqB,OAEjC/N,EACIqsH,IAAsBn0F,kCAClB,CAACnqB,GACDmpB,KAIZl3B,EAAS,CACLgC,KAAM0J,IAAY23E,2BAClB9kF,QAAS,CACLwP,kBACA29C,WAAYohE,EACNnhE,IAAa2zD,wBACb3zD,IAAa0zD,UAGpBr/G,EAASg1B,aAAU,GAC9B,CAAE,MAAO7yB,GACL,OAAOkqH,IAAsB3qH,YAAY1B,EAAUmC,EACvD,GAoMJ+3B,qBACA6yF,kBAhaAzuH,IAAA,IACI24B,EAAI34B,EAAJ24B,KAAI+1F,EAAA1uH,EACJo7B,mCAA2B,IAAAszF,GAAQA,EACnC91F,EAAY54B,EAAZ44B,aAAY+1F,EAAA3uH,EACZq7B,sBAAc,IAAAszF,GAAQA,EAAAC,EAAA5uH,EACtBs7B,yBAAiB,IAAAszF,GAAOA,EACxBnxG,EAAKzd,EAALyd,MAAK,OAETpb,MAAOX,EAAUY,KACb,MAAMm5B,EAAW9C,EAAKk2F,oBAEtB,IAAKpzF,EACD,OAGJ,MAAM57B,EAAQyC,IAERurF,EAAkBhuF,EAAM4C,OAAOiK,SAErChL,EAASg1B,aAAU,IACnBh1B,EAASmC,aAAM,IACfnC,EAASk6B,KACTl6B,EAASqsH,IAAsB/zF,uBAE/B,MAAMxuB,EAASnJ,UACX,IACI,MAAMysH,EAAqBhzF,YAAmBj8B,GAAOg8B,UAC/CA,EAASl8B,IAAA,GACRmvH,GAAkB,IACrBC,WAAYD,EAAmB30F,OAAOxB,KACtCq2F,SAAUF,EAAmB30F,OAAOC,OAGlC2B,EAAcz5B,IAAWywB,OAAO7wB,SAASi3B,SAEzC51B,QAAaquB,YAAM6J,EAAU,CAC/B98B,KAAMk8B,KAAK5rB,UACP8+G,IAAsB9zF,uBAAuB4B,MAI/CG,EAAa15B,IAAWywB,OAAO7wB,SAASi3B,SAgD9C,OA/CwB6C,IAAeD,IAGnCr6B,EAAS,CACLgC,KAAMqqH,IAAsB3gH,YAAYypB,aACxC52B,QAAS,CACLqG,MAAO,CACHunF,kBACArqF,MAAOopH,EACHrpH,EACAo1B,EAAK1E,SACLxW,IAGRkb,KAAMA,EAAKqC,SACXpC,eACAC,6BACIoD,YAAqBp8B,GAChBg5B,gCAGjBn3B,EAAS,CACLgC,KAAM0J,IAAY03E,oBAClB7kF,QAAS,CACLk6B,OAAQ,CACJ6M,KACInL,EAAU1B,OAAOC,MAChByB,EAAU1B,OAAOxB,KAAO,GAC7BA,KAAMkD,EAAU1B,OAAOxB,KACvByB,KAAMyB,EAAU1B,OAAOC,KACvB60F,WAAY1rH,EAAK2rH,mBACjB79E,WAAY9tC,EAAK4rH,6BAErBtC,eAAgBe,EACZrqH,EACAo1B,GAEJuE,WAAY35B,EAAK25B,gBAKO,IAAhC9B,GACAc,cAGJx6B,EAASmC,aAAM,IACRnC,EAASg1B,aAAU,GAC9B,CAAE,MAAO7yB,GASL,OARAnC,EAASg1B,aAAU,KACO,IAAtB4E,GACAyyF,IAAsB90F,UAClBv3B,EACAi3B,EAAKl6B,IACLq9B,YAAmBj8B,GAAOg8B,WAG3BkyF,IAAsB3qH,YAAY1B,EAAUmC,EACvD,IAKmB,IAAnBw3B,EACAc,WAAW3wB,EAAQ,KAEnBA,GACJ,CACH,EAmTDm3G,mCA1DAA,CAAClzG,EAAiB2/G,EAAUx2F,IAAiBv2B,UACzC,IACIX,EAASg1B,aAAU,IAcnB,OARAh1B,GAJe0tH,EACTrB,IAAsBxwF,sBACtBwwF,IAAsB3wF,yBAEZ,CAAC3tB,GAAkBmpB,IACnCl3B,EAAS,CACLgC,KAAM0J,IAAY83E,sBAClBjlF,QAAS,CACLwP,kBACAmpB,kBAGDl3B,EAASg1B,aAAU,GAC9B,CAAE,MAAO7yB,GACL,OAAOkqH,IAAsB3qH,YAAY1B,EAAUmC,EACvD,GAwCJ6gH,kCApCAA,CAACj1G,EAAiBqqB,EAAgBs1F,EAAUx2F,IAC5Cv2B,UACI,IACIX,EAASg1B,aAAU,IAcnB,OARAh1B,GAJe0tH,EACTrB,IAAsBzuF,qBACtByuF,IAAsB5uF,wBAEZrF,EAAgBlB,IAChCl3B,EAAS,CACLgC,KAAM0J,IAAY83E,sBAClBjlF,QAAS,CACLwP,kBACAmpB,kBAGDl3B,EAASg1B,aAAU,GAC9B,CAAE,MAAO7yB,GACL,OAAOkqH,IAAsB3qH,YAAY1B,EAAUmC,EACvD,G,0JCraR,MAAMwrH,EAAc9vH,YAAY,CAC5BC,KAAM,SACNP,aCNO,CACHwD,OAAQ,KACR6sH,WAAY,CAAC,EACbvuG,YAAY,GDIhBthB,SAAU,CACN8vH,eAAgBA,CAAC1vH,EAAKG,KAAkB,IAAdC,EAAOD,EAAPC,QACtB,MAAQwC,EAAuBxC,EAAvBwC,OAAQ6sH,EAAervH,EAAfqvH,WAChBzvH,EAAM4C,OAASA,EACf5C,EAAMyvH,WAAaA,EACnBzvH,EAAMkhB,YAAa,CAAK,EAE5ByuG,aAAe3vH,IACXA,EAAMyvH,WAAWG,kBAAoB,IAAI,EAE7CtzD,YAAaA,CAACt8D,EAAKO,KAAkB,IAAdH,EAAOG,EAAPH,QACnBJ,EAAMkhB,WAAa9gB,CAAO,KAK/ByvH,EACHL,EAAY5uH,QADD8uH,EAAcG,EAAdH,eAAgBC,EAAYE,EAAZF,aAAcrzD,EAAWuzD,EAAXvzD,YAG9BkzD,MAAmB,O,oCE3BlC,sFAKA,MAyHazxC,EAAeA,CACxBr5D,EACA43D,EACA3mC,EACAnxB,EACA4R,EACAq7B,EACAqoB,EACAg2C,EACA9xC,IAEIt5D,EApIkBqrG,EACtBp6E,EACAnxB,EACA4R,EACAq7B,EACAqoB,EACAg2C,EACA9xC,KAEA,GAAIA,EACA,OAAOj4D,IAAYC,gBAGvB,MAAMo8D,EAAYzsC,IAAaq6E,IAAWC,QACpC5tC,EAAe1sC,IAAaq6E,IAAWE,YACvC5tC,EAAY3sC,IAAaq6E,IAAWG,SACpClL,EAAatvE,IAAaq6E,IAAWI,UAG3C,OAAI/tC,GAAgBvI,IAAoBC,IAAkBC,IAC/Cj0D,IAAYU,gCAGnB47D,GACAvI,IAAoBC,IAAkBs2C,wBAE/BtqG,IAAYuqG,8CAEnBx2C,IAAoBC,IAAkBk2C,QAC/BlqG,IAAYa,+BAGnB07D,GACAxI,IAAoBC,IAAkBw2C,0BAKtCjuC,GACAxI,IAAoBC,IAAkBs2C,wBAJ/BtqG,IAAYyqG,2CASnBpuC,GACAtI,IAAoBC,IAAkBs2C,wBAE/BtqG,IAAY0qG,2CAMlB32C,GACDuI,GACa,IAAb79D,GACA4R,GACA05F,EAEO/pG,IAAYU,iCAGlB27D,GAAaC,IAA8B,IAAb79D,EACxBuB,IAAY2qG,0BAEnBlsG,EAAW,IAAM4R,EACVrQ,IAAY4qG,kCAEnBnsG,EAAW,GAAK4R,EACTrQ,IAAYa,+BAEnB07D,GAAa2iC,EACNl/F,IAAY6qG,mBAEvBpsH,YACK,uCAAsCw2B,KAAK5rB,UAAU,CAClDumC,WACAnxB,WACA4R,sBACAq7B,0BAGD1rC,IAAY8qG,QAAO,EAmDfd,CACHp6E,EACAnxB,EACA4R,EACAq7B,EACAqoB,EACAg2C,EACA9xC,GAIH1B,EA3DoB3mC,IACrBA,IAAaq6E,IAAWC,QACjBlqG,IAAY+qG,gBAEnBn7E,IAAaq6E,IAAWE,YACjBnqG,IAAYgrG,oBAEnBp7E,IAAaq6E,IAAWG,UAAYx6E,IAAaq6E,IAAWI,UACrDrqG,IAAYirG,qBAEvBxsH,YACK,yCAAwCw2B,KAAK5rB,UAAU,CACpDumC,gBAGD5vB,IAAY8qG,SAgDZI,CAAoBt7E,GA7CCA,IACxBA,IAAaq6E,IAAWC,QACjBlqG,IAAYmrG,oBAEnBv7E,IAAaq6E,IAAWE,YACjBnqG,IAAYorG,wBAEnBx7E,IAAaq6E,IAAWG,UAAYx6E,IAAaq6E,IAAWI,UACrDrqG,IAAYqrG,yBAEvB5sH,YACK,6CAA4Cw2B,KAAK5rB,UAAU,CACxDumC,gBAGD5vB,IAAY8qG,SA2BRQ,CAAuB17E,E,oCCtJtC,uEAIe,MAAMs8C,UAAsBq/B,YAMvCjhG,cACIkhG,QACA/nH,KAAKgoH,GAAKrkG,SAASvjB,cAAc,OACjCJ,KAAKioH,kBAAoBtkG,SAASk/C,eAAe,iBACrD,CAEAqlD,oBACQloH,KAAKioH,oBACLjoH,KAAKioH,kBAAkBlV,YAAY/yG,KAAKgoH,IACxCl1F,YAAW,KACP9yB,KAAKgoH,GAAG5/B,UAAUx9C,IAAI,yBAAyB,GAChD,GAEX,CAEAu9E,uBACQnoH,KAAKioH,mBACLjoH,KAAKioH,kBAAkB9U,YAAYnzG,KAAKgoH,GAEhD,CAEAI,SACI,MAAAC,EAAmDroH,KAAKE,MAAhDgB,EAAQmnH,EAARnnH,SAAQonH,EAAAD,EAAE3nH,iBAAS,IAAA4nH,EAAG,iBAAgBA,EAE9C,OADAtoH,KAAKgoH,GAAGtnH,UAAYA,EACb6nH,IAASC,aAAatnH,EAAUlB,KAAKgoH,GAChD,EA/BiBv/B,EACVj+D,UAGN,E,oCCRL,oEAAO,MAAMitE,EAAc,CACvBvuE,QAAS,UACTwuE,kBAAmB,oBACnB+wB,QAAS,WAGAC,EAAqB,CAC9BhxB,kBAAmB,CACf,gCACA,kCAEJixB,oBAAqB,CAAC,uBACtBC,iBAAkB,CAAC,oBACnBC,uBAAwB,CAAC,2BACzBC,sBAAuB,CAAC,yBACxBC,mBAAoB,CAAC,sBACrBC,uBAAwB,CAAC,kC,sCChBd,KACX/0H,WAAY,kBACZg1H,cAAe,qBACfC,iCAAkC,wCAClC9X,cAAe,qB,oCCJnB,4GAKO,MAAM+X,EAAgB70H,YAAU,CACnCC,YAAa,gBACbC,cACAI,UAAYC,IAAO,CACfu0H,cAAev0H,EAAQK,MAAqC,CACxDA,MAAQ0G,GAEI,GADQ6C,IAAW,GAAK,qCACS7C,UAM1CytH,EAA0BF,EAA1BE,qB,8SCJR,IAAKC,EAAM,SAANA,GAAM,OAANA,EAAM,4BAANA,EAAM,oBAANA,EAAM,0BAANA,CAAM,M,gBCPH,aAAsC,IAArC5mH,EAA2BhD,UAAArC,OAAA,QAAAyO,IAAApM,UAAA,GAAAA,UAAA,GAAG,CAAC,EAC3C,MACIvG,EAYAuJ,EAZAvJ,WACAowH,EAWA7mH,EAXA6mH,kBAAiBC,EAWjB9mH,EAVA+mH,kBAAU,IAAAD,EAAG,CAAErvH,MAAO,GAAImY,OAAQg3G,EAAOI,aAAaF,EAAAG,EAUtDjnH,EATAknH,sBAAc,IAAAD,EAAG,CAAExvH,MAAO,GAAImY,OAAQg3G,EAAOI,aAAaC,EAAAE,EAS1DnnH,EARAonH,gBAAQ,IAAAD,EAAG,CAAE1vH,MAAO,GAAImY,OAAQg3G,EAAOI,aAAaG,EAAAE,EAQpDrnH,EAPAsnH,wBAAgB,IAAAD,EAAG,CACfE,QAAS,GACTC,kBAAmB,GACnB/vH,MAAO,GACP6tC,WAAY,EACZ11B,OAAQg3G,EAAOI,aAClBK,EAGL,IAAI/4E,EACJ,GAAIu4E,WAAmBv4E,OACnB,IACIA,EAASxf,KAAKuxC,MAAMwmD,EAAkBv4E,OAC1C,CAAE,MAAOx2C,GACLQ,YAAOR,EACX,CAGJ,OAAOoJ,YAA2B,CAC9B0O,OAAQ0+B,EAASs4E,EAAOa,SAAWb,EAAOI,YAC1C14E,OAAQD,YAAUC,EAAQ73C,GAC1BswH,aACAG,iBACAE,WACAE,mBACA5+E,iBAEP,E,ugCCpCD,MAAMg/E,EAAiBl0H,YAAY,CAC/BC,KAAM,YACNP,aAAcA,IACdQ,SAAU,CACN0N,WAAYA,CAAC2gB,EAAM9tB,KAAkB,IAAdC,EAAOD,EAAPC,QACnB,OAAOhB,EAAagB,EAAQ,EAEhCyzH,yBAA0BA,CAAC7zH,EAAKO,KAAkB,IAAdH,EAAOG,EAAPH,QAChCJ,EAAMw6C,OAASp6C,EAAQo6C,OACvBx6C,EAAM8b,OAAS1b,EAAQ0b,MAAM,EAEjCg4G,+BAAgCA,CAAC9zH,EAAKmiB,KAAkB,IAAd/hB,EAAO+hB,EAAP/hB,QACtCJ,EAAM8b,OAAS1b,EAAQ0b,MAAM,EAEjCi4G,kBAAmBA,CAAC/zH,EAAKqiB,KAAkB,IAAdjiB,EAAOiiB,EAAPjiB,QACzBJ,EAAMszH,SAAWlzH,CAAO,EAE5B4zH,wBAAyBA,CAACh0H,EAAKwiB,KAAkB,IAAdpiB,EAAOoiB,EAAPpiB,QAC/BJ,EAAMszH,SAASx3G,OAAS1b,EAAQ0b,MAAM,EAE1Cm4G,0BAA2BA,CAACj0H,EAAK2iB,KAAkB,IAAdviB,EAAOuiB,EAAPviB,QACjCJ,EAAMwzH,iBAAgB1zH,IAAA,GACfE,EAAMwzH,kBACNpzH,EACN,EAEL8zH,gCAAiCA,CAACl0H,EAAK+iB,KAAkB,IAAd3iB,EAAO2iB,EAAP3iB,QACvCJ,EAAMwzH,iBAAiB13G,OAAS1b,EAAQ0b,MAAM,EAElDq4G,iBAAkBA,CAACn0H,EAAK2jB,KAAkB,IAAdvjB,EAAOujB,EAAPvjB,QACxB,MAAMg0H,EAAiBp0H,EAAM40C,YAAY0yC,WACpC5oF,GAAUA,EAAMgR,KAAOtP,EAAQsP,KAEhC1P,EAAM40C,YAAYw/E,KAClBp0H,EAAM40C,YAAYw/E,GAAgBC,MAAO,EAC7C,KAKLC,EASHV,EAAehzH,QARf0M,EAAUgnH,EAAVhnH,WACAumH,EAAwBS,EAAxBT,yBACAC,EAA8BQ,EAA9BR,+BACAC,EAAiBO,EAAjBP,kBACAC,EAAuBM,EAAvBN,wBAGAG,GAFyBG,EAAzBL,0BAC+BK,EAA/BJ,gCACgBI,EAAhBH,kBAGWP,MAAsB,O,6zECjDrC,MAEMW,EAAU70H,YAAY,CACxBC,KAAM,KACNP,aAAc,CACV8H,WAAYstH,IAAYC,MAE5B70H,SAAU,CACN0N,WAAYA,CAAC2gB,EAAM9tB,IACfL,EAAA,GAD0BK,EAAPC,SAKvBs0H,mBAAoBA,CAAC10H,EAAKO,KAAkB,IAAdH,EAAOG,EAAPH,QAC1BJ,EAAMu+F,iBAAmBn+F,CAAO,EAEpCuF,cAAeA,CAAC3F,EAAKmiB,KAAkB,IAAd/hB,EAAO+hB,EAAP/hB,QACrB,MAAAu0H,EAGIv0H,EAFAuD,aAAK,IAAAgxH,EAAG30H,EAAM+E,UAAUpB,MAAKgxH,EAAAC,EAE7Bx0H,EADA+E,YAAI,IAAAyvH,EAAG50H,EAAM+E,UAAUI,KAAIyvH,EAG/B50H,EAAM+E,UAASjF,IAAA,GACRE,EAAM+E,WAAS,IAClBie,KAAM4lB,IAAYisF,KAClBlxH,MAAOA,EACPwB,KAAMA,GACT,EAELU,eAAiB7F,IACbA,EAAM+E,UAAUie,KAAO4lB,IAAYrpC,MAAM,EAE7C0F,iBAAkBA,CAACjF,EAAKqiB,KAAkB,IAAdjiB,EAAOiiB,EAAPjiB,QACxBJ,EAAM+E,UAAUC,QAAU5E,CAAO,EAErC00H,eAAgBA,CAAC90H,EAAKwiB,KAAkB,IAAdpiB,EAAOoiB,EAAPpiB,QACtB,MAAQ20H,EACJ30H,EADI20H,SAAU9uH,EACd7F,EADc6F,MAAOo8D,EACrBjiE,EADqBiiE,SAAU2yD,EAC/B50H,EAD+B40H,WAAYC,EAC3C70H,EAD2C60H,WAE/Cj1H,EAAMq/F,WAAUv/F,IAAA,GACTE,EAAMq/F,YAAU,IACnBr8E,KAAM4lB,IAAYisF,KAClBE,WACA9uH,QACAo8D,WACA2yD,aACAC,cACH,EAELC,gBAAkBl1H,IACdA,EAAMq/F,WAAWr8E,KAAO4lB,IAAYrpC,MAAM,EAE9C41H,sBAAuBA,CAACn1H,EAAK2iB,KAAkB,IAAdviB,EAAOuiB,EAAPviB,QAC7B,MAAQg1H,EAA6Bh1H,EAA7Bg1H,QAASnvH,EAAoB7F,EAApB6F,MAAOo8D,EAAajiE,EAAbiiE,SACxBriE,EAAMs/F,kBAAiBx/F,IAAA,GAChBE,EAAMs/F,mBAAiB,IAC1Bt8E,KAAM4lB,IAAYisF,KAClBO,QAASA,EACTnvH,MAAOA,EACPo8D,SAAUA,GACb,EAELgzD,uBAAyBr1H,IACrBA,EAAMs/F,kBAAkBt8E,KAAO4lB,IAAYrpC,MAAM,EAMrDyhH,mBAAoBA,CAAChhH,EAAK+iB,KAAkB,IAAd3iB,EAAO2iB,EAAP3iB,QAC1B,MAAAk1H,EAMIl1H,EALA6F,aAAK,IAAAqvH,EAAGt1H,EAAM2oC,eAAe1iC,MAAKqvH,EAAAC,EAKlCn1H,EAJAyoC,WAAG,IAAA0sF,EAAGv1H,EAAM2oC,eAAeE,IAAG0sF,EAAAC,EAI9Bp1H,EAHA0oC,qBAAa,IAAA0sF,EAAGx1H,EAAM2oC,eAAeG,cAAa0sF,EAAAC,EAGlDr1H,EAFA2oC,mBAAW,IAAA0sF,EAAGz1H,EAAM2oC,eAAeI,YAAW0sF,EAAAC,EAE9Ct1H,EADA+E,YAAI,IAAAuwH,EAAG11H,EAAM2oC,eAAexjC,KAAIuwH,EAEpC11H,EAAM2oC,eAAc7oC,IAAA,GACbE,EAAM2oC,gBAAc,IACvB3lB,KAAM4lB,IAAYisF,KAClB5uH,MAAOA,EACP4iC,IAAKA,EACLC,cAAeA,EACfC,YAAaA,EACb5jC,KAAMA,EACN8gH,uBAAwB7lH,EAAQ6lH,wBACnC,EAEL0P,oBAAsB31H,IAClBA,EAAM2oC,eAAe3lB,KAAO4lB,IAAYrpC,MAAM,EAElDgH,2BAA4BA,CAACvG,EAAK2jB,KAAkB,IAAdvjB,EAAOujB,EAAPvjB,QAClC,MAAQ2F,EACJ3F,EADI2F,UAAWC,EACf5F,EADe4F,QAASC,EACxB7F,EADwB6F,MAAOC,EAC/B9F,EAD+B8F,YAAaC,EAC5C/F,EAD4C+F,UAEhDnG,EAAMg/F,uBAAsBl/F,IAAA,GACrBE,EAAMg/F,wBAAsB,IAC/Bh8E,KAAM4lB,IAAYisF,KAClB9uH,YACAC,UACAC,QACAC,cACAC,aACH,EAELyvH,4BAA8B51H,IAC1BA,EAAMg/F,uBAAuBh8E,KAAO4lB,IAAYrpC,MAAM,EAE1D+pC,UAAWA,CAACtpC,EAAKikB,KAAkB,IAAd7jB,EAAO6jB,EAAP7jB,QACjB,MAAQqoB,EAAkBroB,EAAlBqoB,QAAS/kB,EAAStD,EAATsD,KACjB1D,EAAM8+F,OAAS,CACXC,aAAct2E,EACdotG,iBAAkBnyH,EACrB,EAELvB,WAAanC,IACTA,EAAM8+F,OAAS,CACXC,aAAc,KACd82B,iBAAkB,KACrB,EAEL3uH,WAAYA,CAAClH,EAAK8pC,KAAkB,IAAd1pC,EAAO0pC,EAAP1pC,QAClBJ,EAAMkH,WAAa9G,CAAO,EAE9BgH,WAAYA,CAACpH,EAAKiqC,KAAkB,IAAd7pC,EAAO6pC,EAAP7pC,QAClBJ,EAAMoH,WAAahH,CAAO,EAE9B2D,kBAAmBA,CAAC/D,EAAKy+C,KAAkB,IAAdr+C,EAAOq+C,EAAPr+C,QACzBJ,EAAM6C,eAAiBzC,EACvBJ,EAAM2+F,OAAOV,OAASja,YAA2B5jF,EAAQ,EAE7D01H,qBAAsBA,CAAC91H,EAAK2+C,KAAkB,IAAdv+C,EAAOu+C,EAAPv+C,QAC5BJ,EAAM6C,eAAc/C,IAAA,GACbE,EAAM6C,gBACNzC,GAEPJ,EAAM2+F,OAAOV,OAASja,YAA2B5jF,EAAQ,EAE7DqH,6BAA8BA,CAACzH,EAAK6+C,KAAkB,IAAdz+C,EAAOy+C,EAAPz+C,QACpC0C,IAAMgB,MACFd,IAAWuE,iBACXnH,EA3I0B,KA8I9BJ,EAAM2+F,OAAOb,UAAY19F,CAAO,EAEpC6B,gBAAiBA,CAACjC,EAAKg/C,KAAkB,IAAd5+C,EAAO4+C,EAAP5+C,QACvBJ,EAAMi/F,YAAc,CAChBj8E,KAAM4lB,IAAYisF,KAClB3yH,YAAa9B,IAAW,EAC3B,EAEL21H,iBAAmB/1H,IACfA,EAAMi/F,YAAYj8E,KAAO4lB,IAAYrpC,MAAM,EAE/Cy2H,yBAA2Bh2H,IACvBA,EAAM4+F,qBAAqB57E,KAAO4lB,IAAYisF,IAAI,EAEtDoB,0BAA4Bj2H,IACxBA,EAAM4+F,qBAAqB57E,KAAO4lB,IAAYrpC,MAAM,EAExD22H,eAAiBl2H,IACbA,EAAMw+F,gBAAiB,CAAI,EAE/B23B,gBAAkBn2H,IACdA,EAAMw+F,gBAAiB,CAAK,EAEhCp6F,OAASpE,IACLA,EAAM2+F,OAASd,aAAkB,EAErCu4B,iBAAkBA,CAACp2H,EAAKk/C,KAAkB,IAAd9+C,EAAO8+C,EAAP9+C,QACxBJ,EAAM6+F,aAAe,CACjB77E,KAAM4lB,IAAYisF,KAClB1vH,KAAM/E,EACT,EAELi2H,kBAAoBr2H,IAChBA,EAAM6+F,aAAe,CACjB77E,KAAM4lB,IAAYrpC,OAClB4F,KAAM,CAAC,EACV,EAEL0gH,eAAgBA,CAAC7lH,EAAKo/C,KAAkB,IAAdh/C,EAAOg/C,EAAPh/C,QACtBJ,EAAMu/F,WAAa,CACfC,QAAQ,EACRC,SAAUr/F,EACb,EAELk2H,gBAAkBt2H,IACdA,EAAMu/F,WAAa,CACfC,QAAQ,EACRC,SAAU,KACb,EAEL82B,gBAAiBA,CAACv2H,EAAKs/C,KAAkB,IAAdl/C,EAAOk/C,EAAPl/C,QACvBJ,EAAMw2H,YAAc,CAChBh3B,QAAQ,EACRC,SAAUr/F,EACb,EAELq2H,iBAAmBz2H,IACfA,EAAMw2H,YAAc,CAChBh3B,QAAQ,EACRC,SAAU,KACb,EAELi3B,sBAAwB12H,IACpBA,EAAM0/F,kBAAkBF,QAAS,CAAI,EAEzCm3B,uBAAyB32H,IACrBA,EAAM0/F,kBAAkBF,QAAS,CAAK,EAE1Co3B,4BAA6BA,CAAC52H,EAAKi9D,KAAkB,IAAd78D,EAAO68D,EAAP78D,QACnCJ,EAAMy+F,sBAAwBr+F,CAAO,EAEzCy2H,qBAAsBA,CAAC72H,EAAKm9D,KAAyB,IAAA25D,EAAA35D,EAArB/8D,eAAO,IAAA02H,GAAOA,EAC1C92H,EAAM62H,qBAAuBz2H,CAAO,EAExC22H,oBAAsB/2H,IAClBA,EAAM2/F,gBAAgBH,QAAS,CAAI,EAEvCw3B,qBAAuBh3H,IACnBA,EAAM2/F,gBAAgBH,QAAS,CAAK,KAKzCy3B,EAwCH1C,EAAQ3zH,QAvCR0M,EAAU2pH,EAAV3pH,WACAonH,EAAkBuC,EAAlBvC,mBACA/uH,EAAasxH,EAAbtxH,cACAE,EAAcoxH,EAAdpxH,eACAZ,EAAgBgyH,EAAhBhyH,iBAGAkwH,GAFc8B,EAAdnC,eACemC,EAAf/B,gBACqB+B,EAArB9B,uBACAE,EAAsB4B,EAAtB5B,uBACArU,EAAkBiW,EAAlBjW,mBACA2U,EAAmBsB,EAAnBtB,oBACApvH,EAA0B0wH,EAA1B1wH,2BACAqvH,EAA2BqB,EAA3BrB,4BACA1uH,EAAU+vH,EAAV/vH,WACAnD,EAAiBkzH,EAAjBlzH,kBAEA0D,GADoBwvH,EAApBnB,qBAC4BmB,EAA5BxvH,8BACAxF,EAAeg1H,EAAfh1H,gBACA8zH,EAAgBkB,EAAhBlB,iBACAC,EAAwBiB,EAAxBjB,yBACAC,EAAyBgB,EAAzBhB,0BACAC,EAAce,EAAdf,eACAC,EAAec,EAAfd,gBACAC,EAAgBa,EAAhBb,iBACAC,EAAiBY,EAAjBZ,kBACAjvH,EAAU6vH,EAAV7vH,WACAhD,EAAM6yH,EAAN7yH,OACAklC,EAAS2tF,EAAT3tF,UACAnnC,EAAU80H,EAAV90H,WACA0jH,EAAcoR,EAAdpR,eACAyQ,EAAeW,EAAfX,gBACAC,EAAeU,EAAfV,gBACAE,EAAgBQ,EAAhBR,iBACAC,EAAqBO,EAArBP,sBACAC,EAAsBM,EAAtBN,uBACAC,EAA2BK,EAA3BL,4BACAC,EAAoBI,EAApBJ,qBAEAG,GADmBC,EAAnBF,oBACoBE,EAApBD,sBAGSllH,EAAUyiH,EAAQziH,O,y3CC1QxB,MAAMolH,EAAcA,IAChB,IAAInpH,SAASgS,GAEX3d,OAAO+0H,GAKR/0H,OAAOg1H,QACAr3G,EAAQ3d,OAAOg1H,cAG1BD,GAAG/zH,MAAKZ,UACQ,OAAR60H,GAAiBA,EAAIC,cAErBD,EAAM,MAEVj1H,OAAOg1H,QAAUC,EACVt3G,EAAQ3d,OAAOg1H,YACvB9zH,OAAM,KAELlB,OAAOg1H,QAAU,KACVr3G,EAAQ,SAlBRA,EAAQ,Q,siECoC3B,MAAMw3G,EAAyB73H,YAAY,CACvCC,KAAM,oBACNP,aAAc,CACViH,SAAS,EACTmxH,UAAU,EACVC,eAAe,EACfC,SAAS,EACTvxH,UAAW,CACP+6F,mBAAmB,EACnBixB,qBAAqB,EACrBC,kBAAkB,EAClBC,wBAAwB,EACxBC,uBAAuB,EACvBC,oBAAoB,EACpBC,wBAAwB,GAE5BlsH,YAAa,CACT,CAAC26F,IAAYC,oBAAoB,EACjC,CAACD,IAAYvuE,UAAU,EACvB,CAACuuE,IAAYgxB,UAAU,IAG/BryH,SAAU,CACN+3H,YAAY33H,GACRA,EAAMw3H,UAAW,CACrB,EACAI,iBAAiB53H,EAAOY,GACpBZ,EAAMy3H,cAAgB72H,EAAQR,QACzBJ,EAAMy3H,gBACPz3H,EAAM03H,SAAU,EAExB,EACAG,gBAAgB73H,EAAOshB,GACnBthB,EAAM03H,QAAUp2G,EAAOlhB,OAC3B,EACA03H,kBAAkB93H,EAAOshB,GACrB,MAAMnb,EAAYmb,EAAOlhB,QACzBJ,EAAMmG,UAASrG,IAAA,GAAQE,EAAMmG,WAAcA,EAC/C,EACA4xH,kBAAkB/3H,EAAOshB,GACrB,MAAMvb,EAAYub,EAAOlhB,QACzBJ,EAAMsG,YAAYP,IAAa,EAC/BirB,IAAWG,QACPiiD,IAAa4V,sBACbhpF,EAAMsG,YAEd,EACA0xH,kBAAkBh4H,EAAOshB,GACrB,MAAMhb,EAAcgb,EAAOlhB,QAC3BJ,EAAMsG,YAAcA,EACpB0qB,IAAWG,QACPiiD,IAAa4V,sBACbhpF,EAAMsG,YAEd,EACA2xH,WAAWj4H,EAAOshB,GACd,MAAMjb,EAAUib,EAAOlhB,QACvBJ,EAAMqG,QAAUA,CACpB,KAIFzF,EAAU22H,EAAuB32H,QACxBm3H,EAAsBn3H,EAAtBm3H,kBACAR,MAA8B,QAKtC,MAAMW,EAAOA,IAAM11H,MAAOX,EAAUY,KACvC,IAAI40H,EAAM,KACV,IACIA,QAAYH,GAChB,CAAE,MAAOlzH,GACL,CAQJ,GANAnC,EACIjB,EAAQg3H,iBACI,OAARP,GAAgBA,EAAIc,aAAed,EAAIC,cAInC,OAARD,GAAgC,OAAhBA,EAAIe,QAAkB,CACtCv2H,EAASjB,EAAQi3H,gBAAgBR,EAAIe,QAAQV,UAGxCL,EAAIe,QAAQC,KAAK3wD,IAAI,wBAChB2vD,EAAIe,QAAQC,KAAK3mG,IAAI,CACvB,gCACA,iCACA,kBAGR,MAAMvrB,OD1G8B3D,WACxC,IACI,MAAM60H,QAAYH,IAClB,GAAoB,OAAhBG,EAAIe,QACJ,OAAO,KAIX,MAAMjyH,EAAY,CAAC,EACnB,IAAK,MAALhG,KAAiCjC,OAAOu4E,QAAQy7C,KAAqB,KAAA3xH,EAAAuvD,EAAA3vD,EAAA,SAAzDg5G,EAAK54G,EAAA,GAAE+3H,EAAS/3H,EAAA,GACxB,IAAK,MAAMg4H,KAAOD,EAEd,GADAnyH,EAAUgzG,IAAuC,IAA9Bke,EAAIe,QAAQC,KAAK3wD,IAAI6wD,IACf,IAArBpyH,EAAUgzG,GACV,KAGZ,CACA,OAAOhzG,CACX,CAAE,MAAOnC,GACLQ,YAAOR,EACX,GCsF4Bw0H,GACxB32H,EAASjB,EAAQk3H,kBAAkB3xH,GACvC,CACAtE,EAASjB,EAAQq3H,WAAmB,OAARZ,GDtFF50H,KAC1B,MAAAg2H,EAGIh2H,IAFAG,EAAM61H,EAAN71H,OACeZ,EAAey2H,EAA9B12H,YAAeC,gBAInB,SACK2wE,IAAaI,wBACbnwE,EAAOD,aACsC,IAA9CX,EAAgB,0BAIT,ECwEiC02H,CAAcj2H,KAG1D,MAAM6D,EAAc0qB,IAAW9rB,QAAQkuE,IAAa4V,uBAChC,OAAhB1iF,GACAzE,EAASjB,EAAQo3H,kBAAkB1xH,IAEvCzE,EAASjB,EAAQ+2H,cAAc,EAGtBgB,EAAQA,IAAMn2H,MAAOX,EAAUY,KACxC,IACIZ,EAASjB,EAAQi3H,iBAAgB,IACjC,MAAMhrH,EAAWpK,IAAWG,OAAOiK,SAC7BwqH,QAAYH,IACZkB,QAAgBf,EAAIuB,WAE1B,aADMR,EAAQS,UAAUnnG,IAAI7kB,EAASq7C,YAC9BkwE,CACX,CAAE,MAAOp0H,GAEL,OADAnC,EAASjB,EAAQi3H,iBAAgB,IAC1B,IACX,GAGSiB,EAASA,IAAMt2H,UACxB,IACIX,EAASjB,EAAQi3H,iBAAgB,IACjC,MAAMR,QAAYH,IACN,OAARG,GAAgC,OAAhBA,EAAIe,eACdf,EAAIe,QAAQU,QAE1B,CAAE,MAAO90H,GAEL,OADAnC,EAASjB,EAAQi3H,iBAAgB,IAC1B,IACX,GAGEkB,EAAuCv2H,MACzC41H,EACAjyH,EACA6yH,EACAn3H,EACAY,KAGA,MAAMw2H,EAAcn5H,EAAA,GAAQ2C,IAAW2D,kBAAkBD,WACzD,IAAK,MAAMoM,KAAKpM,EACZ8yH,EAAe1mH,GAAKymH,EAKxB,IAAIE,EAAc,CAAC,iBACnB,IAAK,MAAL/4H,KAA+BjC,OAAOu4E,QAAQwiD,GAAiB,KAAA14H,EAAAuvD,EAAA3vD,EAAA,SAAnDg5G,EAAK54G,EAAA,GAASA,EAAA,KAElB24H,EAAc,IAAIA,KAAgBhH,IAAmB/Y,IAE7D,CAEAt3G,EAASjB,EAAQk3H,kBAAkBmB,UAC7Bb,EAAQC,KAAK3mG,IAAIwnG,EAAY,EAG1BC,EAAgBC,GAAmB52H,MAAOX,EAAUY,KAC7D,IAEI,MAAM40H,QAAYH,IAClB,GAAY,OAARG,EACA,OAGJ,IAAIe,EAAUf,EAAIe,QAClB,GAAgB,OAAZA,IACAA,QAAgBv2H,EAAS82H,KACT,OAAZP,GAGA,YAFAv2H,EAASjB,EAAQg3H,kBAAiB,IAM1CmB,EACIX,EACAgB,GACA,EACAv3H,EACAY,EAER,CAAE,MAAOuB,GACLQ,YAAOR,EACX,GAGSq1H,EACRC,GAAsB92H,MAAOX,EAAUY,KACpC,IAEI,MAAM40H,QAAYH,IAClB,GAAY,OAARG,GAAgC,OAAhBA,EAAIe,QACpB,OAEJW,EACI1B,EAAIe,QACJkB,GACA,EACAz3H,EACAY,EAER,CAAE,MAAOuB,GACLQ,YAAOR,EACX,E,ilCCrOR,GAAIiE,IAEA,MAAM,IAAI0J,MACN,2GAKR,MAuDa4nH,EAAe,SAAU98F,EAAkBwsB,GACpD,IAAItoB,EACJ,SAAS64F,IACL,MAAMC,EAAYh9F,EAAOvL,EAAMzuB,YAC/B,GAAIg3H,IAAc94F,EAAc,CAC5B,MAAM+4F,EAAgB/4F,EAEtBA,EAAe84F,EACfxwE,EAASywE,EAAe/4F,EAC5B,CACJ,CAEA,MAAMg5F,EAAczoG,EAAM0oG,UAAUJ,GAEpC,OADAA,IACOG,CACX,EAEMzoG,EAxDmB2oG,KACrB,MAAMC,EAAaC,YAAe,CAC9BjoH,QAASkoH,kBAAYH,GACrBI,WAAaC,IACT,MAAMC,EAAc,CAChB9qF,IAAY4qF,WACZxxD,IAAQwxD,WACR/jB,IAAY+jB,WACZ7a,IAAkB6a,WAClBlO,IAAekO,WACflrH,IAAYkrH,WACZtH,IAAcsH,WACdvnB,IAAQunB,WACRzkD,IAAUykD,WACVp8H,IAAao8H,WACbryH,IAAqBqyH,WACrB3b,IAAiB2b,WACjBvnB,IAAQunB,YAKZ,OAHIJ,GACAM,EAAY/mH,KAAKgnH,YAAiBP,IAE/BK,IAAuBzmH,OAAO0mH,EAAY,EAGrDE,UACK7iB,GAAWA,gCACZp1G,OAAOC,SAASsJ,OAAO+G,SAAS,gBACpC4nH,UAAW,CAACnzD,OAIhB,MAhDiDozD,EAGjDC,EACAtpG,KAEKspG,EAAOC,KAGZD,EAAOC,IAAIC,OAAO,kBAAkB,KAEhC,MAAMC,EAAkBC,EAAQ,QAChC1pG,EAAM2pG,eAAeF,EAAgB,GACvC,EAkCFJ,CAA6CC,EAAQV,GAC9CA,CAAU,EAwBPgB,CAAgBjuG,eAE9Bq2B,YAAgBh3C,IAAhBg3C,CAA0BhyB,EAAMrvB,UAEjBqvB,MAWR,MAAM6pG,EAA2BrxH,GACpCa,cAACywH,I,+VAAQl7H,CAAA,CAACoxB,MAAOA,GAAWxnB,G,wECzHhC,sGAAO,IAAKk/B,EAAW,SAAXA,GAAW,OAAXA,EAAW,YAAXA,EAAW,gBAAXA,CAAW,MAKX4rF,EAAW,SAAXA,GAAW,OAAXA,EAAW,mBAAXA,EAAW,mBAAXA,EAAW,iCAAXA,EAAW,+BAAXA,CAAW,MAOX3vC,EAAW,SAAXA,GAAW,OAAXA,EAAW,6BAAXA,EAAW,6BAAXA,CAAW,K,0lCCVR,iBAKV,IAJD7kF,EAAKkJ,UAAArC,OAAA,QAAAyO,IAAApM,UAAA,GAAAA,UAAA,GAAG,CACJspD,aAAa,GAEjBlxC,EAAMpY,UAAArC,OAAA,EAAAqC,UAAA,QAAAoM,EAEN,OAAQgM,EAAOzd,MACX,KAAK0J,IAAY9P,WACb,OAAAqC,EAAA,GACOwhB,EAAOlhB,SAElB,KAAKmN,IAAY7P,eACb,OAAAoC,IAAA,GACOE,GAAK,IACRwyD,aAAa,IAGrB,QACI,OAAOxyD,EAElB,E,mkCCpBc,iBAAwB,IAAvBA,EAAKkJ,UAAArC,OAAA,QAAAyO,IAAApM,UAAA,GAAAA,UAAA,GAAG,CAAC,EAAGoY,EAAMpY,UAAArC,OAAA,EAAAqC,UAAA,QAAAoM,EAC9B,OAAQgM,EAAOzd,MACX,KAAK0J,IAAY9P,WACb,OAAAqC,EAAA,GACOwhB,EAAOlhB,SAElB,KAAKmN,IAAYomB,eACb,OAAA7zB,IAAA,GACOE,GAAK,IACR0yB,QAASpR,EAAOlhB,UAExB,QACI,OAAOJ,EAElB,E,mhCCbD,MAEaZ,EAAe,CACxB4gG,cAAe,GACfjhB,gBAAiB,IAGN,iBAKV,IAJD/+E,EAAKkJ,UAAArC,OAAA,QAAAyO,IAAApM,UAAA,GAAAA,UAAA,GAAApJ,EAAA,GACEV,GAEPkiB,EAAMpY,UAAArC,OAAA,EAAAqC,UAAA,QAAAoM,EAEN,MA4EM1V,EAAW,CACb,CAAC2N,IAAY4yF,qBA7ESD,KACtB,MAAiB96F,EAAWkc,EAApBlhB,QACR66H,EAA+Bj7H,EAAvBggG,cAGR,IAAIk7B,QAHiB,IAAAD,EAAG,GAAEA,GAGe9oH,QAAQ2K,GAAMA,IAAM1X,IAQ7D,OANA81H,EAAqB3zC,QAAQniF,GAE7B81H,EAAuBA,EAAqB3pH,MACxC,EAvBuB,IA0B3BzR,IAAA,GACOE,GAAK,IACRggG,cAAek7B,GAAoB,EA+DvC,CAAC3tH,IAAYuqG,qBA3DSqjB,KACtB,MAAQ/6H,EAAYkhB,EAAZlhB,QACR,OAAAN,IAAA,GACOE,GAAK,IACRggG,cAAe5/F,EAAQmR,MAAM,EApCN,KAoCoC,EAwD/D,CAAChE,IAAY9P,YAXE6P,IACfxN,EAAA,GACOwhB,EAAOlhB,SAUd,CAACmN,IAAY+yF,UArDAK,KACb,MAAArpD,EAEIh2B,EADAlhB,QAAWgF,EAAMkyC,EAANlyC,OAAQi7F,EAAM/oD,EAAN+oD,OAGjBthB,EAAkB,IAAI5mC,IAAIn4C,EAAM++E,iBAAmB,IAMzD,OALIshB,EACAthB,EAAgB3qC,IAAIhvC,GAEpB25E,EAAgBvM,OAAOptE,GAE3BtF,IAAA,GACOE,GAAK,IACR++E,gBAAiBtkE,MAAM0sB,KAAK43C,IAAgB,EAyChD,CAACxxE,IAAYizF,oBArCQ46B,KACrB,MACejiG,EACX7X,EADAlhB,QAAW+4B,QAET4lD,EAAkB,IAAI5mC,IAAIn4C,EAAM++E,iBAAmB,IAEzD,OADA5lD,WAASv1B,SAASwB,GAAW25E,EAAgB3qC,IAAIhvC,KACjDtF,IAAA,GACOE,GAAK,IACR++E,gBAAiBtkE,MAAM0sB,KAAK43C,IAAgB,EA8BhD,CAACxxE,IAAYmzF,uBA1BW26B,KACxB,MACeliG,EACX7X,EADAlhB,QAAW+4B,QAET4lD,EAAkB,IAAI5mC,IAAIn4C,EAAM++E,iBAAmB,IAEzD,OADA5lD,WAASv1B,SAASwB,GAAW25E,EAAgBvM,OAAOptE,KACpDtF,IAAA,GACOE,GAAK,IACR++E,gBAAiBtkE,MAAM0sB,KAAK43C,IAAgB,GAqBpD,OAAQz9D,GAAWA,EAAOzd,MAASjE,EAAS0hB,EAAOzd,MAE7CjE,EAAS0hB,EAAOzd,QAbJ7D,CAcrB,E,+hCCtGc,iBAA2C,IAA1CA,EAAKkJ,UAAArC,OAAA,QAAAyO,IAAApM,UAAA,GAAAA,UAAA,GAAG,CAAEvG,YAAY,GAAS2e,EAAMpY,UAAArC,OAAA,EAAAqC,UAAA,QAAAoM,EACjD,OAAQgM,EAAOzd,MACX,KAAK0J,IAAY9P,WACb,OAAAqC,EAAA,GACOwhB,EAAOlhB,SAElB,KAAKmN,IAAYomB,eACb,OAAA7zB,IAAA,GACOE,GAAK,IACR0yB,QAASpR,EAAOlhB,UAExB,KAAKmN,IAAYI,4BAA6B,CAC1C,MAAQvN,EAAYkhB,EAAZlhB,QACR,OAAAN,IAAA,GACOE,GAAK,IACR0N,sBAAuBtN,EAAQsN,uBAEvC,CACA,KAAKH,IAAYkB,gBAAiB,CAC9B,MAAQrO,EAAYkhB,EAAZlhB,QACR,OAAAN,IAAA,GACOE,GAAK,IACRqN,YAAajN,GAErB,CACA,KAAKmN,IAAYuB,2BACb,OAAAhP,IAAA,GACOE,GAAK,IACRqN,YAAa,KACbK,uBAAuB,IAG/B,KAAKH,IAAYM,sBACb,OAAA/N,IAAA,GACOE,GAAK,IACR8M,gBAAiB,CACb+zE,IAAKv/D,EAAOlhB,QACZk7H,IAAKh6G,EAAOlhB,QACZgmC,IAAK9kB,EAAOlhB,WAIxB,QACI,OAAOJ,EAElB,E,+hCC7Cc,iBAAwB,IAAvBA,EAAKkJ,UAAArC,OAAA,QAAAyO,IAAApM,UAAA,GAAAA,UAAA,GAAG,CAAC,EAAGoY,EAAMpY,UAAArC,OAAA,EAAAqC,UAAA,QAAAoM,EAC9B,IAAKgM,IAAWA,EAAOzd,KAAM,OAAO7D,EACpC,MAAQI,EAAYkhB,EAAZlhB,QACR,OAAQkhB,EAAOzd,MACX,KAAK0J,IAAY9P,WACb,OAAAqC,EAAA,GACOM,GAEX,KAAKmN,IAAYklH,cACb,OAAA3yH,IAAA,GACOE,GAAK,IACR6D,KAAMzD,IAEd,KAAKmN,IAAYqtG,cAKb,OAJc96G,IAAA,GACPE,GACAI,GAIX,QACI,OAAOJ,EAElB,E,woCCvBD,MAAMZ,EAAe,CACjB2a,WAAW,G,ugCCMf,MAAM3a,GARmB,CACjBsf,gBAAiB,EACjBm1E,kBAAmB,GACnB1gE,gBAAiB,MAOzB,SAASI,GAASvzB,GACd,OAAKA,EAAM0e,iBAA6C,IAA1B1e,EAAM0e,gBAMhC5e,IAAA,GAAYE,GAAK,IAAEmzB,gBAAiB,OALpCrzB,IAAA,GACOE,GAAK,IACRmzB,gBAAiB,mCAK7B,C,6gCCpBA,MAAM/zB,GAAe,CACjB2oB,oBAAoB,EACpBE,aAAc,MACdnK,cAAe,KACfy9G,kBAAkB,EAClBlzG,uBAAuB,EACvBmzG,gBAAgB,EAChBC,eAAe,EACfC,+BAAgC,KAChCC,yBAAyB,EACzBC,cAAe,KACftyF,UAAW,KACXuyF,cAAe,KACfC,iBAAiB,EACjBC,mBAAmB,EACnBC,cAAc,EACdC,aAAa,G,6gCChBjB,MAAM78H,GAAe,CACjBsG,iBAAkB,KAClB4S,gBAAiB,KACjBR,WAAY,KACZc,OAAQ,KACRI,WAAY,KACZE,aAAc,KACdD,WAAY,KACZhB,aAAc,KACdE,cAAe,KACfjG,gBAAiB,KACjB0E,cAAe,KACfoH,cAAe,KACfk+G,OAAO,EACPC,OAAO,EACPC,OAAO,EACPC,OAAO,GAGI,I,0BClBf,MAAM/pH,GACU,sCAOT,SAASihB,GAAS4J,GACrB,OAAKA,EAASw1B,eAAkBx1B,EAAS01B,eAQzC11B,EAASm/F,sBAAwB,KACjCn/F,EAASw7D,iBAAmB,CAAC,EAEtBx7D,IAVHA,EAASm/F,sBAAwBhqH,GACjC6qB,EAASw7D,iBAAmB,CACxB4jC,OAAQjqH,IAEL6qB,EAOf,C,8hCCfA,MAEM/9B,GAAem0B,GAAS,CAC1BolE,iBAAkB,CAAC,EACnB2jC,sBAAuB,KACvBzzD,iBAAkB,GAClBhqD,wBAAyB,GACzBD,kBAAmB,KACnBkqD,wBAAyB,GACzB9M,wBAAwB,EACxBwgE,sBAAsB,EACtB7pE,eAAe,EACfE,eAAe,EACfp9C,YAAa,OAUXgnH,GAA2BvqH,GAC7BA,EAAgByI,MACXu7C,GAC2B,aAAxBA,EAAeryD,MACS,iBAAxBqyD,EAAeryD,OAGZ64H,oBAAct9H,GAAc,CACvCu9H,uBAAyB38H,IACrBA,EAAM8oE,wBAA0B,GAChC9oE,EAAM6yD,eAAgB,EACft/B,GAASvzB,IAEpB48H,+BAAgCA,CAAC58H,EAAOshB,KACpC,MAAAg2B,EAAmDh2B,EAAOlhB,QAAlDizD,EAAqB/b,EAArB+b,sBAAuBnhD,EAAeolC,EAAfplC,gBAE/BlS,EAAM6yD,cAAgB4pE,GAAwBvqH,GAC9ClS,EAAM2yD,cAxBoBzgD,IAC9BA,EAAgByI,MACXu7C,GAC2B,aAAxBA,EAAeryD,MACS,iBAAxBqyD,EAAeryD,OAoBGg5H,CAAyB3qH,GAG/C,MAAMymG,EAAoBtlD,EAAsB9tD,KAAKqzG,IACjD,MAAMkkB,EAAyBlkB,EAAY5vC,SAASzjE,KAC/CyyC,GAAOl4C,MAAA,GACDk4C,GAAO,IACV+a,KAAM/a,EAAQx6B,MACdyB,UAAW+4B,EAAQtoC,GACnB7L,KAAMm0C,EAAQ94B,WACd65F,KAlDE/4E,mBAqDV,OAAAlgC,MAAA,GAAY84G,GAAW,IAAE5vC,SAAU8zD,GAAsB,IAW7D,OARA98H,EAAM6oE,iBAAmB8vC,EACzB34G,EAAM8oE,wBAA0BF,aAC5B+vC,EACAzmG,EACAlS,EAAM2yD,eAEV3yD,EAAMg8D,wBAAyB,EAC/Bh8D,EAAMw8H,sBAAuB,EACtBjpG,GAASvzB,EAAM,EAG1B+8H,6BAA8BA,CAAC/8H,EAAOshB,KAClC,MAAQlhB,EAAYkhB,EAAZlhB,QAEF48H,EAAkBp0D,aACpB5oE,EAAM6oE,iBACNzoE,EACAJ,EAAM2yD,eAWV,OARI8pE,GAAwBO,GACxBh9H,EAAM6yD,eAAgB,EAEtB7yD,EAAM6yD,eAAgB,EAG1B7yD,EAAM8oE,wBAA0Bk0D,EAEzBzpG,GAASvzB,EAAM,EAE1Bi9H,sBAAuBA,CAACj9H,EAAOshB,KAC3BthB,EAAM2yD,cAAgBrxC,EAAOlhB,QAAQuyD,cACrC3yD,EAAM8oE,wBAA0BF,aAC5B5oE,EAAM6oE,iBACN7oE,EAAM8oE,wBACN9oE,EAAM2yD,eAGHp/B,GAASvzB,IAEpBk9H,2BAA6Bl9H,IACzBA,EAAMg8D,wBAAyB,EAC/Bh8D,EAAMw8H,sBAAuB,EAEtBjpG,GAASvzB,IAEpBm9H,yBAA0BA,CAACn9H,EAAOshB,KAC9BthB,EAAMyV,YAAc6L,EAAOlhB,QAAQqV,WAAW,EAElD2nH,+BAAiCp9H,IAC7BA,EAAM4e,kBAAoBxf,GAAawf,kBACvC5e,EAAM6e,wBAA0Bzf,GAAayf,uBAAuB,EAExEw+G,6BAA8BA,CAACr9H,EAAOshB,KAClC,MAAAg8G,EAAuDh8G,EAAOlhB,QAAtDwe,EAAiB0+G,EAAjB1+G,kBAAmBC,EAAuBy+G,EAAvBz+G,wBAI3B,OAFA7e,EAAM4e,kBAAoBA,EAC1B5e,EAAM6e,wBAA0BA,EACzB0U,GAASvzB,EAAM,I,UC/Gf08H,oBANM,CACjBa,kBAAkB,EAClBC,iCAAiC,EACjCC,iBAAkB,IAGqB,CACvCC,wBAAyBA,CAAC19H,EAAOshB,KAC7BthB,EAAMu9H,iBAAmBj8G,EAAOlhB,OAAO,EAE3Cu9H,wCAAyCA,CAAC39H,EAAOshB,KAC7CthB,EAAMw9H,gCAAkCl8G,EAAOlhB,OAAO,EAE1Dw9H,wBAA0B59H,IACtBA,EAAMy9H,iBAAmB,EAAE,EAE/BI,sBAAuBA,CAAC79H,EAAOshB,KAC3BthB,EAAMy9H,iBAAmB,IAClB,IAAItlF,IAAI,IAAIn4C,EAAMy9H,oBAAqBn8G,EAAOlhB,UACpD,EAEL09H,yBAA0BA,CAAC99H,EAAOshB,KAC9BthB,EAAMy9H,iBAAmBz9H,EAAMy9H,iBAAiBtrH,QAC3C2f,IAAUxQ,EAAOlhB,QAAQsS,SAASof,IACtC,I,0hCC5BT,IAAI1yB,GAAe,CACfwX,cAAe,KACfuc,gBAAiB,KACjB4qG,eAAgB,MAGpB,SAASxqG,GAAS4J,GACd,OAAAr9B,MAAA,GACOq9B,GAAQ,IACXhK,gBAC8B,MAA1BgK,EAASvmB,eACwB,IAAjCumB,EAASvmB,cAAcjD,QACI,cAA3BwpB,EAASvmB,cACH,mCACAumB,EAAS4gG,gBAE3B,C,6gCChBA,MAAMC,GAA4B,CAC9BjnH,aAAc,GACdC,eAAgB,KAChBC,wBAAyB,KACzBkoD,UAAW,KACXuB,kBAAmB,MAGjBthE,GAAYU,MAAA,GACXk+H,IAAyB,IAC5BC,qBAAqB,EACrBC,oBAAoB,EACpBC,eAAe,EACf3pC,UAAW,KACXxvF,SAAS,EACT6xB,WAAW,EACX6nC,mBAAmB,EACnB0/D,kBAAkB,EAClBjrG,gBAAiB,KACjBkrG,0BAA2B,KAC3Bj+D,YAAY,EACZhB,qBAAsB,KACtBC,qBAAsB,KACtBC,sBAAuB,KACvB56C,UAAU,IAGd,SAAS45G,GAAY7rG,GACjB,OAAOA,GAAY,IACvB,CAEA,SAAS8rG,GAA0BvnH,GAG/B,OAAuB,IAAnBA,EACO,KAEJsnH,GAAYtnH,EACvB,CAEA,SAASuc,GAASvzB,GACd,OAAIA,EAAMi+H,oBACNn+H,MAAA,GACOE,GAAK,IACRmzB,gBAAiBnzB,EAAM0+D,kBACjB,KACA,8BAId5+D,MAAA,GAAYE,GAAK,IAAEmzB,gBAAiB,MACxC,CAEe,I,ojCCrDf,IAAI/zB,GAAe,CACfoZ,iBAAiB,EACjBE,oBAAoB,G,0hCCCxB,MAAMtZ,GAAe,CACjBqd,MAAO,CAAC,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,GACzB0W,gBAAiB,KACjBqrG,YAAa,KACbj4F,oBAAoB,EACpBk4F,WAAY,GAGT,SAASlrG,GAAS4J,GACrB,IAAIhK,EAAkB,KAatB,OAZIgK,EAAS1gB,MAAM9B,MAAMisB,GAASA,EAAKurE,cACnCh/E,EAAkB,kCACXgK,EAAS1gB,MAAM2mG,OAAOx8E,IAAUA,EAAK/rB,WAC5CsY,EAAkB,wBAElBgK,EAAS1gB,MACJtK,QAAQy0B,GAASA,EAAK/rB,WACtBuoG,OAAOx8E,IAAqC,IAA5BA,EAAKqtD,uBAG1B9gE,EAAkB,8CAEtBrzB,MAAA,GACOq9B,GAAQ,IACXhK,mBAER,CAEA,SAASurG,GAAkBjiH,GACvB,IAAIkiH,GAAa,EACjB,IAAK,IAAIn5H,EAAI,EAAGA,EAAIiX,EAAM5V,OAAQrB,IAC1BiX,EAAMjX,GAAGqV,UAAY8jH,EACrBliH,EAAMjX,GAAG0sG,YAAa,GAEtBz1F,EAAMjX,GAAG0sG,YAAa,EACtBysB,GAAa,EAGzB,CAEA,SAASC,GAAiBzhG,GACtBA,EAASqhG,YAAc,IAC3B,CAEA,SAASK,GAAkB1hG,GAUvB,OATcA,EAAS1gB,MACIlX,KAAKqhC,GACxBA,EAAKurE,YACLryG,MAAA,GAAY8mC,GAAI,IAAEurE,aAAa,IAExBvrE,GAKnB,CAcA,SAASk4F,GAAc3hG,GACnB,MAAM4hG,EAAU5hG,EAAS1gB,MAAMtK,QAAQy0B,KAAWA,EAAK/rB,WACvDsiB,EAASshG,WAAaM,EAAQl4H,MAClC,C,UAEe,I,giCC3Ef,SAASm4H,GAAa3hF,GAClB,IAAIu+D,EAAM,IAAIj+F,OAAO0/B,GACrB,QAAKwsB,OAAOoX,SAAS53D,SAASuyF,QAEnBA,EAAInuF,QAAQ,MAAQ,MAEpBmuF,EAAInuF,QAAQ,MAAQ,GAInC,CAEA,SAASwxG,GAAM5hF,GACX,OAAOA,EAAS,GAAM,CAC1B,CA+HA,SAAS9pB,GAAS4J,GACd,MAAMw7D,EAAmB,CAAC,EAE1BA,EAAiB1/E,WA9BrB,SAA2BoJ,GAAoC,IAAjCu/D,EAAiBv/D,EAAjBu/D,kBAAmB3oE,EAAUoJ,EAAVpJ,WAC7C,IAAK2oE,EACD,OAAO,KAGX,GAAI3oE,IAAegmH,GAAMhmH,GACrB,MAAO,6CAMX,IAAK+lH,GAAa/lH,GACd,MAAO,mCAEX,IAAKimH,MAAMjmH,GAAa,CACpB,GAAIoQ,SAASpQ,GAPF,IAQP,MAAO,uCAGX,GAAIoQ,SAASpQ,GAVF,EAWP,MAAO,sCAEf,CACA,OAAO,IACX,CAKkCkmH,CAAmBhiG,GACjDw7D,EAAiB3/E,WAjIrB,SAA2B7Y,GAAoC,IAAjCyhF,EAAiBzhF,EAAjByhF,kBAAmB5oE,EAAU7Y,EAAV6Y,WAC7C,OAAI4oE,EACO,KAGP5oE,IAAeimH,GAAMjmH,GACd,6CAMNgmH,GAAahmH,GAIdA,EAPW,IAQJ,iCAGPA,EAVW,EAWJ,qCAGJ,KAXI,oCAYf,CAwGkComH,CAAmBjiG,GACjDw7D,EAAiBpX,gBA3DrB,SAAgCp/D,GAK7B,IAJCy/D,EAAiBz/D,EAAjBy/D,kBACA5oE,EAAUmJ,EAAVnJ,WACAE,EAAYiJ,EAAZjJ,aACAqoE,EAAep/D,EAAfo/D,gBAEA,OAAIK,EACO,KAGPL,IAAoB09C,GAAM19C,GACnB,6CAGPA,GAAmBA,GAAmBvoE,EAE/B,sDAIPE,GAAgBqoE,GAAmBroE,GAAgBqoE,EAE5C,yDAEJ,IACX,CAkCuC89C,CAAwBliG,GAC3Dw7D,EAAiBz/E,aAxGrB,SAA6B3Y,GAM1B,IALCqhF,EAAiBrhF,EAAjBqhF,kBACA09C,EAAgB/+H,EAAhB++H,iBACAtmH,EAAUzY,EAAVyY,WACAE,EAAY3Y,EAAZ2Y,aACAqoE,EAAehhF,EAAfghF,gBAEA,OAAIK,EACO,KAGP09C,IAAqBpmH,EACd,gCAGPA,IAAiB+lH,GAAM/lH,GAChB,6CAKPA,IAAiB8lH,GAAa9lH,GACvB,2CAIPA,GAAgBA,GAAgBF,EAEzB,0DAIPE,GAAgBqoE,GAAmBroE,GAAgBqoE,EAE5C,uDAGProE,EAlBW,IAmBJ,uCAGJ,IACX,CA8DoCqmH,CAAqBpiG,GAErD,IAAK,MAAMqiG,KAAY7mC,EACdA,EAAiB6mC,WAAkB7mC,EAAiB6mC,GAG7D,OAAA1/H,MAAA,GAAYq9B,GAAQ,IAAEw7D,oBAC1B,CAEA,MAAM5jD,GAAc,IAAI/sC,gBACF,oBAAX5F,OAA+B,QAAT+pB,GAAG/pB,cAAM,IAAA+pB,IAAU,QAAVszG,GAANtzG,GAAQ9pB,gBAAQ,IAAAo9H,QAAV,EAANA,GAAkB9zH,OAAS,IAEzDvM,GAAe,CACjB4Z,WAAY,KACZuoE,gBAAiB,KACjBtoE,WAAY,KACZC,aAAc,KACdomH,kBAAkB,EAClBI,oBAAqBhjH,QAAQq4B,GAAYvzC,IAAI,cAC7CugF,aAAa,EACbH,kBAAmB,KACnB+W,iBAAkB,CAAC,EACnBgnC,eAAgBnlF,KAAOolF,oBACvBC,sCAAsC,EACtCxmH,IAAK,KACLymH,iBAAkB,I,6gCC9KtB,MAAM1gI,GAAe,CACjB2gI,kBAAmB,M,6gCCCvB,SAASxsG,GAASysG,GACd,GAAIA,GAAgBA,EAAan5H,OAHN,IAIvB,MAAO,qCAGX,IAAIo5H,EAAM9yG,SAASvjB,cAAc,OAIjC,OAFAq2H,EAAIhjB,UAAY+iB,GAAgB,GAE5BC,EAAIC,YAC8B,KAA3BD,EAAIC,YAAYvsH,OACjB,KACA,qCACCssH,EAAIE,WACqB,KAAzBF,EAAIE,UAAUxsH,OACf,KAGH,oCACX,CAIA,SAASysH,GAAaC,GAClB,OAAQA,GAAI,EAChB,CAEA,IAAIjhI,GAAe,CACfkZ,gBAAiB,KACjB6a,gBAAiB,KACjBmtG,+BAA+B,EAC/BC,iBAAkB,G,6gCCjCtB,IAAInhI,GAAe,CACfohI,QAAS,CAAC,G,6gCCDd,MAAMphI,GAAe,CACjBga,UAAW,KACX4mD,mBAAmB,EACnBrgE,KAAM,KACNuG,YAAa,KACbu6H,0BAA0B,GAG9B,SAASC,GAAiB3pH,GACtB,MAAMqiC,EAAOriC,EAAa03B,cAC1B,MACY,SAAR2K,GACQ,SAARA,GACQ,QAARA,GACQ,UAARA,GACQ,WAARA,CAER,CCjBO,MAAMunF,GAA8BA,CACvCC,EACAxzF,KAEA,MAAMyzF,EAAwB,GAqB9B,OApBAD,EAA4Bh9H,SAASoR,IACjC,MAAM8rH,EAAoB1zF,EAAmBr4B,MACxCX,GAAMA,EAAE1E,KAAOsF,EAAGtF,KAEvB,GAAIoxH,EAAmB,CACnB,MAAMC,EAAqB,CAAErxH,GAAIsF,EAAGtF,GAAImF,OAAQ,IAChDG,EAAGH,OAAOjR,SAASo9H,IACf,MAAMC,EAAyBH,EAAkBhwG,QAAQnW,MACpD4mG,GAAMA,EAAE96G,QAAUu6H,IAEjBE,EACFH,EAAmBlsH,OAAOhO,QAC1Bi6H,EAAkBn1F,kBAClBs1F,IAA2BC,GAC3BH,EAAmBlsH,OAAOzB,KAAK4tH,EACnC,IAEJH,EAAsBztH,KAAK2tH,EAC/B,KAEGF,CAAqB,E,6gCCpBhC,MAAMzhI,GAAe,CAEjBguC,mBAAoB,GAiBpB+zF,gBAAiB,CAAC,EAUlBC,8BAA+B,GAC/B5tD,sCAAuC,GACvC6tD,0CAA2C,GAE3C5tD,gCAAiC,GACjCklB,iBAAkB,CAAC,GA4BjB2oC,GAAuCnkG,IAEzCA,EAASikG,8BDzCsCG,EAC/CC,EACAC,EACAr0F,KAEA,MAAMyzF,EAAwB,GAiD9B,OAhDAzzF,EAAmBxpC,SAASk9H,IACxB,MAAMY,EAA4BF,EAA2BzsH,MACxD4sH,GAAQA,EAAIjyH,IAAMoxH,EAAkBpxH,KAEnCkyH,EAA8BH,EAA6B1sH,MAC5D8sH,GAAQA,EAAInyH,IAAMoxH,EAAkBpxH,KAEnCoyH,EAA2B,GAC7BJ,GACAA,EAA0B7sH,OAAOjR,SAASo9H,IACtC,MAAMC,EAAyBH,EAAkBhwG,QAAQnW,MACpD4mG,GAAMA,EAAE96G,QAAUu6H,IAEjBE,EACFY,EAAyBj7H,QACzBi6H,EAAkBn1F,kBAClBs1F,IAA2BC,GAC3BY,EAAyB1uH,KAAK4tH,EAClC,IAGJY,GACAA,EAA4B/sH,OAAOjR,SAASo9H,IACxC,MAAMC,EAAyBH,EAAkBhwG,QAAQnW,MACpD4mG,GAAMA,EAAE96G,QAAUu6H,IAEjBe,EAAqBD,EAAyBnnH,MAC/C4mG,GAAMA,IAAMyf,IAEXE,EACFY,EAAyBj7H,QACzBi6H,EAAkBn1F,mBAElBs1F,GACCC,GACAa,GAEDD,EAAyB1uH,KAAK4tH,EAClC,IAGJc,EAAyBj7H,OAAS,GAClCg6H,EAAsBztH,KAAK,CACvB1D,GAAIoxH,EAAkBpxH,GACtBmF,OAAQitH,GAEhB,IAEGjB,CAAqB,ECZxBU,CACIpkG,EAASq2C,sCACTr2C,EAASkkG,0CACTlkG,EAASiQ,mBACZ,EAGH40F,GAAmD7kG,IAErDA,EAASkkG,0CACLV,GACIxjG,EAASs2C,gCACTt2C,EAASiQ,oBAEjBk0F,GAAoCnkG,EAAS,EAmC3CiP,GAA2CpsC,IAC7C,MAAMotC,EAAqBptC,EAAMotC,mBAAmB7nC,KAAK6O,IAAM,IAAA6tH,EAAAC,EAC3D,MAAMC,GACuC,QAAzCF,EAAAjiI,EAAMmhI,gBAAgBhjH,2BAAmB,IAAA8jH,GAExC,QAFwCC,EAAzCD,EAA2CltH,MACtCqtH,GAAQhuH,EAAE1E,KAAO0yH,EAAI1yH,YACzB,IAAAwyH,OAFwC,EAAzCA,EAEGrtH,SAAU,GACXic,EAAU1c,EAAE0c,QAAQvrB,KAAKg8G,IAC3B,MAAMl2E,EAAW82F,EAAqBzvH,SAAS6uG,EAAE96G,OACjD,OAAO86G,EAAEl2E,WAAaA,EAAWk2E,EAACzhH,MAAA,GAAQyhH,GAAC,IAAEl2E,YAAU,IAErDQ,EAAyB/a,EAAQ3e,QAAQovG,GAAMA,EAAEl2E,WAAUxkC,OACjE,OAAA/G,MAAA,GAAYsU,GAAC,IAAE0c,UAAS+a,0BAAsB,IAElD,OAAA/rC,MAAA,GAAYE,GAAK,IAAEotC,sBAAkB,EA8EnCxtC,GAAW,CACbyiI,iBAzDqBriI,GACrBF,MAAA,GACOV,IAAY,IAEfq0E,gCAAiCzzE,EAAMyzE,gCACvC4tD,0CACIrhI,EAAMqhI,4CAoDdiB,0BAhD6BtiI,GACtBosC,GAAuCtsC,MAAC,CAAC,EACzCE,GAAK,IACRmhI,gBAAiB,CAAC,KA8CtBoB,mCA1CoCviI,IACpC,MAAMm9B,EAAQr9B,MAAA,GACPE,GAAK,IACRyzE,gCACIr0E,GAAaq0E,kCAGrB,OADAuuD,GAAgD7kG,GACzCA,CAAQ,EAoCfqlG,wBArE0BC,CAACziI,EAAOshB,KAClC,MAAM6b,EAAQr9B,MAAA,GACPE,GAAK,IACRotC,mBAAoB,IAAI9rB,EAAOlhB,WAGnC,OADA4hI,GAAgD7kG,GACzCA,CAAQ,EAgEfulG,qBAhFuBC,CAAC3iI,EAAOshB,IACjBxhB,MAAA,GACPE,GAAK,IACRmhI,gBAAerhI,GAAA,GACRwhB,EAAOlhB,WA6ElBwiI,8BAjI+BC,CAAC7iI,EAAOshB,KACvC,MAAQlhB,EAAYkhB,EAAZlhB,QACFmU,EAAYvU,EAAMotC,mBAAmBr4B,MACtCX,GAAMA,EAAE1E,KAAOtP,EAAQmsC,cAE5B,IAAIzb,EAAUvc,EAAUuc,QAEnBvc,EAAUm3B,gBACTtrC,EAAQosC,aAAgBpsC,EAAQqsC,YAElC3b,EAAUA,EAAQvrB,KAAKg8G,GAClBA,EAAEl2E,SAAYvrC,MAAA,GAAQyhH,GAAC,IAAEl2E,UAAU,IAAtBk2E,KAGlBnhH,EAAQosC,cACR1b,EAAUA,EAAQvrB,KAAKg8G,GACnBA,EAAE96G,QAAUrG,EAAQosC,YACd+0E,EAACzhH,MAAA,GACIyhH,GAAC,IAAEl2E,SAAUjrC,EAAQqsC,cAGxC,MAAMZ,EAAyB/a,EAAQ3e,QAAQovG,GAAMA,EAAEl2E,WAAUxkC,OACjE,OAAA/G,MAAA,GACOE,GAAK,IACRotC,mBAAoBptC,EAAMotC,mBAAmB7nC,KAAK6O,GAC9CA,EAAE1E,KAAOtP,EAAQmsC,YACXn4B,EAACtU,MAAA,GACIyU,GAAS,IAAEuc,UAAS+a,8BAClC,EAsGLi3F,4CACI12F,GACJ22F,oCAjLqCC,CAAChjI,EAAOshB,KAC7C,MAAQlhB,EAAYkhB,EAAZlhB,QACF+8B,EAAQr9B,MAAA,GACPE,GAAK,IACRijI,4BAA6B7iI,EAAQ2T,oBACrCy/D,sCAAuCmtD,GACnCvgI,EAAQ2T,oBACR/T,EAAMotC,oBAEVc,yBAA0B9tC,EAAQ8tC,2BAGtC,OADAozF,GAAoCnkG,GAC7BA,CAAQ,EAsKf+lG,iCAnK+BC,CAACnjI,EAAOshB,KACvC,MAAQlhB,EAAYkhB,EAAZlhB,QACF+8B,EAAQr9B,MAAA,GACPE,GAAK,IACRyzE,gCAAiCrzE,EAAQ2T,sBAG7C,OADAiuH,GAAgD7kG,GACzCA,CAAQ,GA+JJ,I,uiCC3Nf,MAAMimG,GAAsBnnH,GACxBA,EAAY,iDAAmD,KA+B7D7c,GAtBoBikI,MACtB,IAAK3tH,OAAaA,KAAS4tH,UAAY5tH,KAAS6tH,UAE5C,MAAO,CAAC,EAEZ,MAAMC,EACFhpF,KAAOipF,2BAA6B/tH,KAAS6tH,UAAUG,gBACrD1xH,IAAyB0D,KAAS4tH,QAAQtxH,qBAC1C2xH,EACFjuH,KAAS4tH,QAAQK,kCACfC,EACFJ,IAAsB9tH,KAAS4tH,QAAQtxH,qBAE3C,MAAO,CACHA,uBACA6xH,mBAAoB7xH,EACpBwxH,oBACAG,oCACAxwG,gBAAiBiwG,GAAmBQ,GACvC,EAGgBP,GAEN3G,oBAAct9H,GAAc,CACvC0kI,uBAAwBA,CAAC9jI,EAAOshB,IAhClBthB,IACdF,MAAA,GACOE,GAAK,IACRmzB,gBAAiBiwG,IAAoBpjI,EAAMgS,wBA8B3CuhB,CAAQzzB,MAAC,CAAC,EACHE,GAAK,IACRgS,qBAAsBsP,EAAOlhB,a,6gCCxCzC,IAAIhB,GAAe,CACfuiE,YAAa,KACb3P,QAAS,KACTj4C,WAAW,EACXgqH,cAAc,EACdhsD,cAAe,KACfL,WAAW,EACX9yD,UAAW,KACXozD,iBAAkB,CACdZ,KAAM,KACN/lB,aAAc,KACdM,iBAAkB,KAClB3tD,MAAO,MAEXkuD,eAAgB,KAChBulB,oBAAqB,KACrBrmB,kBAAmB,M,aCSR4yE,eAAgB,CAC3B32F,WHmMW,WAAkC,IAAjCrtC,EAAKkJ,UAAArC,OAAA,QAAAyO,IAAApM,UAAA,GAAAA,UAAA,GAAG9J,GAAckiB,EAAMpY,UAAArC,OAAA,EAAAqC,UAAA,QAAAoM,EACxC,MAAMxD,EAAUlS,GAAS0hB,EAAOzd,MAChC,OAAIiO,EA5CU9R,KACd,MAAM24F,EAAmB,CAAC,EAyB1B,OAxBA34F,EAAMotC,mBAAmBxpC,SAAS2Q,IACM,IAAhCA,EAAUq3B,mBAGmB,IAA7Br3B,EAAUuc,QAAQjqB,QAYA,IANP0N,EAAUuc,QAAQgnB,QAAO,CAACgwB,EAAKxH,KACtCA,EAAOj1B,UACPy8B,EAAI10D,KAAKktD,EAAO75D,OAEbqhE,IACR,IACQjhE,SAEP8xF,EACIpkF,EAAUK,cACT,iDAAgDL,EAAUK,eACnE,IAGJ9U,MAAA,GAAYE,GAAK,IAAE24F,oBAAgB,EAmBxBplE,CAASzhB,EAAQ9R,EAAOshB,IAE5BthB,CACV,EGxMGikI,OAAQC,IACRl5C,iBACAj0E,aZsBW,WAAkC,IAAjC/W,EAAKkJ,UAAArC,OAAA,QAAAyO,IAAApM,UAAA,GAAAA,UAAA,GAAG9J,GAAckiB,EAAMpY,UAAArC,OAAA,EAAAqC,UAAA,QAAAoM,EACxC,OAAQgM,EAAOzd,MACX,IAAK,iCACD,OAAO0vB,GAAQzzB,SAAC,CAAC,EACVE,GACAg+H,IAAyB,IAC5BjnH,aAAcuK,EAAOvK,aACrBC,eAAgBunH,GACZj9G,EAAOtK,gBAEXC,wBAAyBqnH,GACrBh9G,EAAOrK,yBAEXynD,oBACMp9C,EAAOtK,iBAAmBsK,EAAOvK,aACvCknH,sBAAuB38G,EAAOvK,aAC9BqpD,WAAY9+C,EAAO8+C,WACnB17C,SAAUpD,EAAOoD,YAIzB,IAAK,+BACD,OAAO6O,GAAQzzB,SAAC,CAAC,EACVE,GACAg+H,IAAyB,IAC5BjnH,aAAcuK,EAAOvK,aACrBC,eAAgB,KAChBC,wBAAyB,KACzBynD,mBAAoBp9C,EAAOvK,aAC3BqoD,qBAAsB,KACtBC,qBAAsB,KACtBC,sBAAuB,QAI/B,IAAK,iCACD,GAAIt/D,EAAM+W,eAAiBuK,EAAOvK,aAC9B,OAAOwc,GAAQzzB,SAAC,CAAC,EACVE,GACAg+H,IAAyB,IAC5BjnH,aAAcuK,EAAOvK,aACrBC,eAAgBunH,GACZj9G,EAAOtK,gBAEXC,wBAAyBqnH,GACrBh9G,EAAOrK,yBAEXynD,kBAAmBp9C,EAAOo9C,kBAC1BS,UAAW79C,EAAO69C,UAClBC,qBAAsB99C,EAAO89C,qBAC7BC,qBAAsB/9C,EAAO+9C,qBAC7BC,sBAAuBh+C,EAAOg+C,sBAC9B56C,SAAUpD,EAAOoD,SACjBmS,WAAW,EACXunG,kBAAkB,EAClB19D,kBAAmBp/C,EAAOo/C,qBAGlC,MAEJ,IAAK,aACD,OAAOntC,GAAQzzB,MAAC,CAAC,EACVE,GAAK,IACRm/D,UAAW//D,GAAa+/D,UACxBuB,kBAAmBthE,GAAashE,qBAIxC,IAAK,wBACD,OAAOntC,GAAQzzB,MAAC,CAAC,EACVE,GAAK,IACRo/D,qBAAsBhgE,GAAaggE,qBACnCC,qBAAsB/9C,EAAO+9C,qBAC7BC,sBAAuBh+C,EAAOg+C,yBAItC,IAAK,gCACD,OAAIh+C,EAAOy/C,UACAxtC,GAAQzzB,MAAC,CAAC,EACVE,GAAK,IACRi+H,qBAAqB,EACrBpnG,WAAW,EACXunG,kBAAkB,KAGf7qG,GAAQzzB,MAAC,CAAC,EACVE,GAAK,IACRi+H,qBAAqB,EACrBlnH,aAAc3X,GAAa2X,aAC3BC,eAAgB5X,GAAa4X,eAC7BC,wBAAyB,KACzB4f,WAAW,EACXunG,kBAAkB,EAClB15G,UAAU,KAKtB,IAAK,wCACD,OAAO6O,GAAQzzB,MAAC,CAAC,EAAIE,GAAK,IAAE62B,WAAW,KAG3C,IAAK,yCACD,OAAOtD,GAAQzzB,MAAC,CAAC,EAAIE,GAAK,IAAEo+H,kBAAkB,KAGtD,OAAO7qG,GAASvzB,EACnB,EYjIGupB,SnBVW,WAAkC,IAAjCvpB,EAAKkJ,UAAArC,OAAA,QAAAyO,IAAApM,UAAA,GAAAA,UAAA,GAAG9J,GAAckiB,EAAMpY,UAAArC,OAAA,EAAAqC,UAAA,QAAAoM,EACxC,OAAQgM,EAAOzd,MACX,IAAK,iBACD,OAAO0vB,GAxBM,CACjB7U,gBAAiB,EACjBm1E,kBAAmB,GACnB1gE,gBAAiB,OAuBjB,IAAK,qBAMD,OAAOI,GALOzzB,IAAA,GACPE,GAAK,IACR0e,gBAAiB4C,EAAOxJ,WACxB+7E,kBAAmBvyE,EAAOvJ,gBAIlC,QACI,OAAO/X,EAElB,EmBLGmZ,aACA2mD,gBLfW,WAAkC,IAAjC9/D,EAAKkJ,UAAArC,OAAA,QAAAyO,IAAApM,UAAA,GAAAA,UAAA,GAAG9J,GAAckiB,EAAMpY,UAAArC,OAAA,EAAAqC,UAAA,QAAAoM,EACxC,OAAQgM,EAAOzd,MACX,IAAK,yBACD,OAAA/D,GAAA,GAAYV,IAChB,IAAK,uBACD,OAAAU,MAAA,GACOE,GAAK,IACRoZ,UAAWkI,EAAOw+C,gBAAgB1mD,UAClC4mD,kBAAmB1+C,EAAOw+C,gBAAgBE,kBAC1CrgE,KAAM2hB,EAAOw+C,gBAAgBngE,KAC7BuG,YAAaob,EAAOw+C,gBAAgB55D,YACpCu6H,yBAA0BC,GAAiBp/G,EAAOvK,cAClD6pD,qBACIt/C,EAAOw+C,gBAAgBc,uBAGnC,QACI,OAAO5gE,EAElB,EKHG+R,MpB7BW,WAAkC,IAAjC/R,EAAKkJ,UAAArC,OAAA,QAAAyO,IAAApM,UAAA,GAAAA,UAAA,GAAG9J,EAAckiB,EAAMpY,UAAArC,OAAA,EAAAqC,UAAA,QAAAoM,EACxC,IAAI6uH,EAAW,KACf,OAAQ7iH,EAAOzd,MACX,IAAK,uBAAwB,CACzB,MAAMugI,EACF9iH,EAAOvP,MAAMqL,WACbkE,EAAOvP,MAAMqL,UAAUqQ,QAAQ,gBAAkB,EACrD02G,EAAQrkI,MAAA,GACDV,GACAkiB,EAAOlhB,SAAO,IACjBgW,QAASkL,EAAOvP,MAAMqE,QACtBH,YAAaqL,EAAOvP,MAAMkE,YAC1BpJ,SAAUyU,EAAOvP,MAAMlF,SACvBzH,OAAQkc,EAAOvP,MAAM3M,OACrB8X,QAASoE,EAAOvP,MAAMmL,QACtBo2E,kBAAmBhyE,EAAOvP,MAAMuhF,kBAChCC,qBAAsBjyE,EAAOvP,MAAMwhF,qBACnCC,YAAalyE,EAAOvP,MAAMyhF,YAC1BC,iBAAkBnyE,EAAOvP,MAAM0hF,iBAC/BC,cAAepyE,EAAOvP,MAAM2hF,cAC5BC,oBAAqBryE,EAAOvP,MAAM4hF,oBAClCv2E,UAAWkE,EAAOvP,MAAMqL,UACxBgnH,oBAAqBA,EACrBlnD,uBAAwB57D,EAAOvP,MAAMmrE,uBACrC8V,SAAU1xE,EAAOvP,MAAMihF,SACvB3yE,WAAYiB,EAAOvP,MAAMsO,WACzBuzE,aAActyE,EAAOvP,MAAM6hF,aAC3Bt4E,QAASgG,EAAOvP,MAAMuJ,QACtBrH,YAAaqN,EAAOvP,MAAMqE,UAE9B,KACJ,CACA,IAAK,eACD+tH,EAAQrkI,IAAA,GAAQE,GAAK,IAAEoW,QAASkL,EAAOlhB,UACvC,MACJ,IAAK,cACD+jI,EAAQrkI,IAAA,GAAQE,GAAK,IAAEkd,QAASoE,EAAOlhB,UACvC,MACJ,IAAK,kBACD+jI,EAAQrkI,IAAA,GAAQE,GAAK,IAAEkd,SAAS,IAChC,MACJ,IAAK,gBACDinH,EAAQrkI,IAAA,GAAQE,GAAK,IAAEod,UAAWkE,EAAOlhB,UACzC,MACJ,IAAK,6BACD,IAAIikI,EAA4BrkI,EAAMk9E,uBAChC,IAAIl9E,EAAMk9E,wBACV,GACNmnD,EAA0BjxH,KAAK,CAAElP,QAASod,EAAOlhB,UACjD+jI,EAAQrkI,IAAA,GACDE,GAAK,IACRk9E,uBAAwBmnD,IAE5B,MACJ,IAAK,mBACDF,EAAQrkI,IAAA,GAAQE,GAAK,IAAEiW,YAAaqL,EAAOlhB,UAC3C,MACJ,IAAK,oBACD+jI,EAAQrkI,IAAA,GAAQE,GAAK,IAAEsb,QAASgG,EAAOlhB,UACvC,MACJ,IAAK,cACD+jI,EAAQrkI,EAAA,GAAQV,GAChB,MACJ,IAAK,uBACD+kI,EAAQrkI,IAAA,GAAQE,GAAK,IAAE+Z,UAAWuH,EAAOlhB,UACzC,MACJ,IAAK,+BACD+jI,EAAQrkI,IAAA,GACDE,GAAK,IACRoS,4BACIkP,EAAOlhB,QAAQgS,8BAEvB,MACJ,IAAK,eACD+xH,EAAQrkI,IAAA,GACDE,GAAK,IACR2O,SAAU2S,EAAOlhB,QAAQuO,WAE7B,MACJ,IAAK,qBACDw1H,EAAQrkI,IAAA,GACDE,GAAK,IACR2X,cAAe2J,EAAOlhB,QAAQuX,gBAElC,MACJ,QACI,OAAO3X,EAKf,OAHIg7B,KAAK5rB,UAAUpP,IAAUg7B,KAAK5rB,UAAU+0H,KACxCA,EAAS1wC,iBAAmB71E,MAAQ0mH,eAEjCH,CACV,EoB9DGI,KRhCW,WAAkC,IAAjCvkI,EAAKkJ,UAAArC,OAAA,QAAAyO,IAAApM,UAAA,GAAAA,UAAA,GAAG9J,GAAckiB,EAAMpY,UAAArC,OAAA,EAAAqC,UAAA,QAAAoM,EACxC,MACS,4BADDgM,EAAOzd,KAEP/D,MAAA,GAAYE,GAAK,IAAE+/H,kBAAmBz+G,EAAOlhB,UAEtCJ,CAElB,EQ0BGsS,OjBlBW,WAAkC,IAAjCtS,EAAKkJ,UAAArC,OAAA,QAAAyO,IAAApM,UAAA,GAAAA,UAAA,GAAG9J,GAAckiB,EAAMpY,UAAArC,OAAA,EAAAqC,UAAA,QAAAoM,EA6BxC,GACS,cADDgM,EAAOzd,KAQP,OAAO7D,EALPA,EAAKF,GAAA,GAAQE,GAEbA,EAAMshB,EAAOwjB,cAAgBxjB,EAAOtd,MAM5C,MAAMwgI,EAvCc,SAAUxkI,GAC1B,SACMA,EAAM0F,kBACN1F,EAAM8X,YACN9X,EAAM4Y,QACN5Y,EAAMsY,iBACNtY,EAAM4W,cAEhB,CA+BW6tH,CAAYzkI,GACjB0kI,EA9Bc,SAAU1kI,GAC1B,SACMA,EAAMgZ,YACNhZ,EAAMkZ,cACNlZ,EAAMiZ,YACNjZ,EAAMiY,cACNjY,EAAMmY,cAEhB,CAsBWwsH,CAAY3kI,GACjB4kI,EArBc,SAAU5kI,GAC1B,QAASA,EAAMkS,eACnB,CAmBW2yH,CAAY7kI,GACjB8kI,EAlBc,SAAU9kI,GAC1B,QAASA,EAAMge,aACnB,CAgBW+mH,CAAY/kI,GAUvB,OARAA,EAAKF,MAAA,GACEE,GAAK,IACRk8H,MAAOsI,QAAMlvH,EACb6mH,MAAOuI,QAAMpvH,EACb8mH,MAAOwI,QAAMtvH,EACb+mH,MAAOyI,QAAMxvH,IAGVtV,CACV,EiBnCGud,cXjCW,WAAkC,IAAjCvd,EAAKkJ,UAAArC,OAAA,QAAAyO,IAAApM,UAAA,GAAAA,UAAA,GAAG9J,GAAckiB,EAAMpY,UAAArC,OAAA,EAAAqC,UAAA,QAAAoM,EACxC,OAAQgM,EAAOzd,MACX,IAAK,uBACD,OAAA/D,MAAA,GAAYE,GAAK,IAAEwY,gBAAiB8I,EAAOlhB,UAC/C,IAAK,0BACD,OAAAN,MAAA,GAAYE,GAAK,IAAE0Y,mBAAoB4I,EAAOlhB,UAClD,QACI,OAAOJ,EAElB,EWyBGglI,UACApsH,OVqCW,WAAkC,IAAjC5Y,EAAKkJ,UAAArC,OAAA,QAAAyO,IAAApM,UAAA,GAAAA,UAAA,GAAG9J,GAAckiB,EAAMpY,UAAArC,OAAA,EAAAqC,UAAA,QAAAoM,EACxC,OAAQgM,EAAOzd,MACX,IAAK,mBAAoB,CACrB,MAAM4Y,EAAQ,IAAI,IAAIhC,MAAM,IAAIlV,KAAI,IAAMkgC,iBAE1C,IAAI7sB,EAAS0I,EAAOlhB,QACpB,IAAK,IAAIoF,EAAI,EAAGA,EAAIoT,EAAO/R,QAAUrB,EAAIiX,EAAM5V,OAAQrB,IAC/CoT,EAAOpT,GAAGy/B,YACVxoB,EAAMjX,GAAGqhC,gBAAiB,EAC1BpqB,EAAMjX,GAAG0/B,QAAUtsB,EAAOpT,GAAGy/B,WAAWC,QACxCzoB,EAAMjX,GAAG+hC,gBACL3uB,EAAOpT,GAAGy/B,WAAWsC,gBACzB9qB,EAAMjX,GAAGyuF,mBACLr7E,EAAOpT,GAAGy/B,WAAWgvD,oBAClBr7E,EAAOpT,GAAGsuF,cACjBr3E,EAAMjX,GAAGqhC,gBAAiB,EAC1BpqB,EAAMjX,GAAGuuF,SAAWn7E,EAAOpT,GAAGsuF,aAAaC,SAC3Ct3E,EAAMjX,GAAGwuF,aAAep7E,EAAOpT,GAAGsuF,aAAaE,aAC/Cv3E,EAAMjX,GAAG0/B,QAAUtsB,EAAOpT,GAAGsuF,aAAa5uD,QAC1CzoB,EAAMjX,GAAG+hC,gBACL3uB,EAAOpT,GAAGsuF,aAAavsD,gBAC3B9qB,EAAMjX,GAAGyuF,mBACLr7E,EAAOpT,GAAGsuF,aAAaG,qBAE3Bx3E,EAAMjX,GAAGqhC,gBAAiB,EAC1BpqB,EAAMjX,GAAG0/B,QAAUtsB,EAAOpT,GAAG0/B,QAC7BzoB,EAAMjX,GAAG+hC,gBAAkB3uB,EAAOpT,GAAG+hC,iBAEzC9qB,EAAMjX,GAAGqV,SAAWjC,EAAOpT,GAAGqV,SAGlC6jH,GAAkBjiH,GAClB,MAAM0gB,EAAQr9B,MAAA,GAAQE,GAAK,IAAEyc,UAG7B,OAFAqiH,GAAc3hG,GACdyhG,GAAiBzhG,GACV5J,GAAS4J,EACpB,CACA,IAAK,6BAA8B,KAAA8nG,EAC/B,MAAMxoH,EAAQzc,EAAMyc,MAAMlX,KAAKqhC,GAAI9mC,GAAA,GAAW8mC,KACxCA,EAAOnqB,EAAM6E,EAAOgkB,WAC1BsB,EAAK/rB,SAAWyG,EAAOzG,SACvB+rB,EAAK1B,QAAU5jB,EAAO4jB,QACtB0B,EAAKC,gBAAiB,EACtBD,EAAKurE,aAAc,EACnBvrE,EAAKW,gBAAkB,KACvBX,EAAKqtD,mBAA4C,QAA1BgxC,EAAGr+F,EAAKqtD,0BAAkB,IAAAgxC,KACjDvG,GAAkBjiH,GAClB,MAAM0gB,EAAQr9B,MAAA,GAAQE,GAAK,IAAEyc,UAG7B,OAFAqiH,GAAc3hG,GACdyhG,GAAiBzhG,GACV5J,GAAS4J,EACpB,CACA,IAAK,kBAAmB,CACpB,MAAM1gB,EAAQ6E,EAAO7E,MAAMlX,KAAKqhC,GAAI9mC,GAAA,GAAW8mC,KAC/C83F,GAAkBjiH,GAClB,MAAM0gB,EAAQr9B,MAAA,GAAQE,GAAK,IAAEyc,UAG7B,OAFAqiH,GAAc3hG,GACdyhG,GAAiBzhG,GACV5J,GAAS4J,EACpB,CACA,IAAK,qBAAsB,CACvB,MAAM1gB,EAAQzc,EAAMyc,MAAMlX,KAAKqhC,GAAI9mC,GAAA,GAAW8mC,KAC9CnqB,EAAM6E,EAAOgkB,WAAWiC,gBAAkBjmB,EAAOimB,gBACjD,MAAMpK,EAAQr9B,MAAA,GAAQE,GAAK,IAAEyc,UAE7B,OADAmiH,GAAiBzhG,GACV5J,GAAS4J,EACpB,CACA,IAAK,0BASD,OAAO5J,GAROzzB,MAAA,GACPE,GAAK,IACRw+H,YAAal9G,EAAOlhB,QACpBq+H,WAAYz+H,EAAMyc,MAAMtK,QAAQy0B,KAAWA,EAAK/rB,WAC3ChU,OACL4V,MAAOoiH,GAAkB7+H,MAKjC,IAAK,uBAAwB,CACzB,MAAMyc,EAAQzc,EAAMyc,MAAMlX,KAAKqhC,GAAI9mC,GAAA,GAAW8mC,KACxCzJ,EAAQr9B,MAAA,GAAQE,GAAK,IAAEyc,MAAOA,EAAO+hH,YAAa,OAExD,OAnGZ,SAA+BrhG,EAAU+nG,GACrC,MAAMzoH,EAAQ0gB,EAAS1gB,MACvB,IAAK,IAAIjX,EAAI,EAAGA,EAAIiX,EAAM5V,OAAQrB,IAC9B,IAAKiX,EAAMjX,GAAG0/B,UACVzoB,EAAMjX,GAAG2sG,aAAc,IACjB+yB,GAAmB,GACrB,MAIhB,CAwFYC,CAAsBhoG,EAAU7b,EAAOwkB,eAChCvS,GAAS4J,EACpB,CACA,IAAK,oBAAqB,CACtB,MAAMA,EAAQr9B,MAAA,GACPE,GAAK,IACRumC,mBAAoBjlB,EAAOilB,qBAK/B,OAHIjlB,EAAOilB,oBACPq4F,GAAiBzhG,GAEdA,CACX,CACA,IAAK,kBAED,OADcr9B,MAAA,GAAQE,GAAK,IAAEw+H,YAAa,OAG9C,QACI,OAAOx+H,EAElB,EUzIG4W,cbvBW,WAAkC,IAAjC5W,EAAKkJ,UAAArC,OAAA,QAAAyO,IAAApM,UAAA,GAAAA,UAAA,GAAG9J,GAAckiB,EAAMpY,UAAArC,OAAA,EAAAqC,UAAA,QAAAoM,EACxC,OAAQgM,EAAOzd,MACX,IAAK,qBACD,OAAO0vB,GAAQzzB,MAAC,CAAC,EAAIE,GAAK,IAAE4W,cAAe0K,EAAOlhB,WACtD,IAAK,uBACD,OAAOmzB,GAAQzzB,GAAC,CAAC,EAAIV,KACzB,IAAK,qCACD,OAAOm0B,GAAQzzB,MAAC,CAAC,EAAIE,GAAK,IAAE+9H,eAAgBz8G,EAAOlhB,WACvD,QACI,OAAOJ,EAElB,EaaG0d,kBACAsR,SCzCYhvB,GACZA,GAEM,CACIuuB,kBAAmBwlB,gBDsC7Bz7B,gBPRW,WAAkC,IAAjCtY,EAAKkJ,UAAArC,OAAA,QAAAyO,IAAApM,UAAA,GAAAA,UAAA,GAAG9J,GAAckiB,EAAMpY,UAAArC,OAAA,EAAAqC,UAAA,QAAAoM,EACxC,OAAQgM,EAAOzd,MACX,IAAK,kCACD,OAAA/D,MAAA,GACOE,GAAK,IACRsgI,+BAA+B,EAC/BhoH,gBAAiB8nH,GAAa9+G,EAAOlhB,SACrC+yB,gBAAiBI,GAASjS,EAAOlhB,SACjCmgI,iBAAkBvgI,EAAMugI,iBAAmB,IAEnD,IAAK,uBACD,OAAAzgI,MAAA,GACOE,GAAK,IACRsgI,+BAA+B,EAC/BhoH,gBAAiB8nH,GAAa9+G,EAAOlhB,SACrC+yB,gBAAiBI,GAASjS,EAAOlhB,WAEzC,IAAK,yBAA0B,CAC3B,MAAMglI,EAAe,KACrB,OAAAtlI,MAAA,GACOE,GAAK,IACRsgI,+BAA+B,EAC/BhoH,gBAAiB8sH,EACjBjyG,gBAAiBI,GAAS6xG,IAElC,CACA,QACI,OAAOplI,EAElB,EOpBGge,iBACAqnH,QDzBW,WAAkC,IAAjCrlI,EAAKkJ,UAAArC,OAAA,QAAAyO,IAAApM,UAAA,GAAAA,UAAA,GAAG9J,GAAckiB,EAAMpY,UAAArC,OAAA,EAAAqC,UAAA,QAAAoM,EACxC,OAAQgM,EAAOzd,MACX,IAAK,2BACD,OAAA/D,MAAA,GACOE,GAAK,IACR2hE,YAAagX,YAAer3D,EAAOlhB,SACnC2jI,cAAc,IAGtB,IAAK,uBAAwB,CACzB,MAAAzsF,EAA8Bh2B,EAAOlhB,QAA7B4xD,EAAO1a,EAAP0a,QAASnlD,EAAQyqC,EAARzqC,SAEjB,OAAA/M,MAAA,GACOE,GAAK,IACRgyD,QAAS,CACLtnC,MAAOsnC,EAAQtnC,OAAS,EACxB7F,iBAAkBmtC,EAAQntC,kBAAoB,EAC9CysC,sBACIU,EAAQV,uBAAyB,KACrCC,sBACIS,EAAQT,uBAAyB,KACrCE,mBAAoBO,EAAQP,mBAC5BqoB,gBAAiB9nB,EAAQ8nB,iBAAmB,KAC5Ct1D,SAAUwtC,EAAQxtC,SAClB4R,oBAAqB47B,EAAQ57B,sBAAuB,EACpDsnD,gBACM7wE,GACFA,IAAamlD,EAAQV,sBACzBqtB,mBAAmB,IAG/B,CACA,IAAK,yBACD,OAAA7+E,MAAA,GAAYE,GAAK,IAAE4kB,UAAWtD,EAAOlhB,UACzC,IAAK,kCACD,OAAAN,MAAA,GAAYE,GAAK,IAAEoxD,kBAAmB9vC,EAAOlhB,UACjD,IAAK,yBACD,OAAAN,MAAA,GAAYE,GAAK,IAAE+Z,UAAWuH,EAAOlhB,UACzC,IAAK,oBACD,OAAAN,MAAA,GAAYE,GAAK,IAAE+jI,aAAcziH,EAAOlhB,UAC5C,QACI,OAAOJ,EAElB,ECjBGwd,MTkIW,WAAkC,IAAjCxd,EAAKkJ,UAAArC,OAAA,QAAAyO,IAAApM,UAAA,GAAAA,UAAA,GAAG9J,GAAckiB,EAAMpY,UAAArC,OAAA,EAAAqC,UAAA,QAAAoM,EACxC,OAAQgM,EAAOzd,MACX,IAAK,kBACD,OAAO0vB,GAAQzzB,MAAC,CAAC,EAAIE,GAAK,IAAEgZ,WAAYsI,EAAOlhB,WACnD,IAAK,wBACD,OAAOmzB,GAAQzzB,MAAC,CAAC,EAAIE,GAAK,IAAEuhF,gBAAiBjgE,EAAOlhB,WACxD,IAAK,kBACD,OAAOmzB,GAAQzzB,MAAC,CAAC,EAAIE,GAAK,IAAEiZ,WAAYqI,EAAOlhB,WACnD,IAAK,oBACD,OAAOmzB,GAAQzzB,MAAC,CAAC,EAAIE,GAAK,IAAEkZ,aAAcoI,EAAOlhB,WACrD,IAAK,+BACD,OAAOmzB,GAAQzzB,MAAC,CAAC,EAAIE,GAAK,IAAEs/H,iBAAkBh+G,EAAOlhB,WACzD,IAAK,kCACD,OAAOmzB,GAAQzzB,MAAC,CAAC,EAAIE,GAAK,IAAE0/H,oBAAqBp+G,EAAOlhB,WAC5D,IAAK,mBACD,OAAOmzB,GAAQzzB,MAAC,CAAC,EAAIE,GAAK,IAAE+hF,YAAazgE,EAAOlhB,WACpD,IAAK,2BACD,OAAOmzB,GAAQzzB,MAAC,CAAC,EACVE,GAAK,IACR4hF,kBAAmBtgE,EAAOsgE,qBAElC,IAAK,UACD,OAAOruD,GAAQzzB,MAAC,CAAC,EAAIE,GAAK,IAAEqZ,IAAKiI,EAAOlhB,WAC5C,IAAK,uBACD,OAAOmzB,GAAQzzB,MAAC,CAAC,EACVE,GAAK,IACRgZ,WAAY,KACZuoE,gBAAiB,KACjBtoE,WAAY,KACZI,IAAK,QAEb,IAAK,0BACD,OAAOka,GAAQzzB,MAAC,CAAC,EACVE,GAAK,IACRslI,2BAA4BhkH,EAAOlhB,WAE3C,IAAK,kDACD,OAAOmzB,GAAQzzB,MAAC,CAAC,EACVE,GAAK,IACR6/H,qCAAsCv+G,EAAOlhB,WAErD,QACI,OAAOJ,EAElB,ES7KGulI,ON5CW,WAAkC,IAAjCvlI,EAAKkJ,UAAArC,OAAA,QAAAyO,IAAApM,UAAA,GAAAA,UAAA,GAAG9J,GAAckiB,EAAMpY,UAAArC,OAAA,EAAAqC,UAAA,QAAAoM,EACxC,GACS,iBADDgM,EAAOzd,KACU,CACjB,MAAM28H,EAAO1gI,GAAA,GAAQE,EAAMwgI,SAE3B,OADAA,EAAQl/G,EAAOta,KAAOsa,EAAO7a,MAC7B3G,MAAA,GAAYV,IAAY,IAAEohI,WAC9B,CAEI,OAAOxgI,CAElB,EMmCGyvB,YACA/pB,sBACA2W,IlBjCW,WAAkC,IAAjCrc,EAAKkJ,UAAArC,OAAA,QAAAyO,IAAApM,UAAA,GAAAA,UAAA,GAAG9J,GAAckiB,EAAMpY,UAAArC,OAAA,EAAAqC,UAAA,QAAAoM,EACxC,OAAQgM,EAAOzd,MACX,IAAK,YACD,OAAA/D,GAAA,GAAYV,IAChB,IAAK,4BACD,OAAAU,MAAA,GAAYE,GAAK,IAAE+nB,mBAAoBzG,EAAOlhB,UAClD,IAAK,oBACD,OAAAN,MAAA,GAAYE,GAAK,IAAEioB,aAAc3G,EAAOlhB,UAC5C,IAAK,qBACD,OAAAN,MAAA,GAAYE,GAAK,IAAE8d,cAAewD,EAAOlhB,UAC7C,IAAK,kBACD,OAAAN,MAAA,GAAYE,GAAK,IAAEu7H,kBAAkB,IACzC,IAAK,kBACD,OAAAz7H,MAAA,GAAYE,GAAK,IAAEu7H,kBAAkB,IACzC,IAAK,gCACD,OAAAz7H,MAAA,GAAYE,GAAK,IAAEqoB,sBAAuB/G,EAAOlhB,UACrD,IAAK,iCACD,OAAAN,MAAA,GACOE,GAAK,IACR27H,wBAAyBr6G,EAAOlhB,QAChCw7H,cAAe,KACfH,eAAe,EACfC,+BAAgC,KAChCF,gBAAgB,EAChBgK,gBAAgB,IAExB,IAAK,6BACD,OAAA1lI,MAAA,GACOE,GAAK,IACR27H,wBAAyBr6G,EAAOlhB,QAChCw7H,cAAe,KACfH,eAAe,EACfC,+BAAgC,KAChCF,gBAAgB,EAChBgK,gBAAgB,IAExB,IAAK,qBACD,OAAA1lI,MAAA,GACOE,GAAK,IACR47H,cAAet6G,EAAOlhB,QACtBu7H,wBAAyB,KACzBF,eAAe,EACfC,+BAAgC,KAChCF,gBAAgB,EAChBgK,gBAAgB,IAExB,IAAK,qBACD,OAAA1lI,MAAA,GACOE,GAAK,IACR47H,cAAe,KACfD,wBAAyB,KACzBF,eAAe,EACfC,+BAAgCp6G,EAAO1N,kBACvC4nH,gBAAgB,EAChBgK,gBAAgB,IAExB,IAAK,sBACD,OAAA1lI,MAAA,GACOE,GAAK,IACR47H,cAAe,KACfD,wBAAyB,KACzBF,eAAe,EACfC,+BAAgC,KAChCF,gBAAgB,EAChBgK,gBAAgB,IAExB,IAAK,2BACD,OAAA1lI,MAAA,GAAYE,GAAK,IAAEoc,oBAAqBkF,EAAOlhB,UACnD,IAAK,eACD,IAAIqlI,EACAzlI,EAAMspC,YAAchoB,EAAOlhB,QAAU,KAAOkhB,EAAOlhB,QACvD,OAAAN,MAAA,GAAYE,GAAK,IAAEspC,UAAWm8F,IAClC,IAAK,aACD,OAAA3lI,MAAA,GACOE,GAAK,IACRspC,UAAWhoB,EAAOmH,QAClBozG,cAAev6G,EAAOqH,YAE9B,IAAK,aACD,OAAA7oB,MAAA,GAAYE,GAAK,IAAEspC,UAAW,OAClC,IAAK,kBACD,OAAAxpC,MAAA,GAAYE,GAAK,IAAE87H,iBAAiB,IACxC,IAAK,mBACD,OAAAh8H,MAAA,GAAYE,GAAK,IAAE87H,iBAAiB,IACxC,IAAK,2BACD,OAAAh8H,MAAA,GAAYE,GAAK,IAAE+7H,kBAAmBz6G,EAAOlhB,UACjD,IAAK,oBACD,OAAAN,MAAA,GAAYE,GAAK,IAAEg8H,aAAc16G,EAAOlhB,UAC5C,IAAK,mBACD,OAAAN,MAAA,GAAYE,GAAK,IAAEi8H,YAAa36G,EAAOlhB,UAC3C,QACI,OAAOJ,EAElB,EkB3DGogB,c,ygDEhDJ,MAAMhhB,GAAe,CACjB4tH,eAAgB,IAGd0Y,GAAgCA,CAAC1lI,EAAOshB,IAC1CxhB,MAAA,GACOE,GAAK,IACRgtH,eAAgBhtH,EAAMgtH,eAAeznH,KAAK+1D,GACtCA,EAAc1rD,kBAAoB0R,EAAOlhB,QAAQwP,gBAAe9P,MAAA,GAEnDw7D,GAAa,IAChBt7D,MAAKF,MAAA,GACEw7D,EAAct7D,OAAK,IACtButD,WAAYjsC,EAAOlhB,QAAQmtD,eAGnC+N,MA6HZqqE,GAA2BA,CAACrkH,EAAQg6C,IACRA,EAAc0yD,sBACvCzoH,KAAKqgI,GAC0BtkH,EAAOlhB,QAAQquF,aAAat8E,QACnDu8E,GACUA,EAAYzvD,gBAAkB2mG,IAE3C/+H,OAES,KAEJ++H,IAEVzzH,OAAOuK,SAgCD,ICrLAsnH,eAAgB,CAC3BhxG,aACA26B,aACA56B,eACAo8D,oBACA02C,cACAC,YACAxqE,cD8KW,WAAkC,IAAjCt7D,EAAKkJ,UAAArC,OAAA,QAAAyO,IAAApM,UAAA,GAAAA,UAAA,GAAG9J,GAAckiB,EAAMpY,UAAArC,OAAA,EAAAqC,UAAA,QAAAoM,EACxC,OAAQgM,EAAOzd,MACX,KAAKo9G,KAAqB1zG,YACrBkqB,yCACD,OAAOiuG,GAA8B1lI,EAAO,CACxCI,QAAS,CACLwP,gBAAiB0R,EAAOlhB,QAAQw5B,IAAI,GACpC2zB,WAAYC,KAAag1D,4BAGrC,KAAKvB,KAAqB1zG,YACrBoqB,2CACD,OAAO+tG,GAA8B1lI,EAAO,CACxCI,QAAS,CACLwP,gBAAiB0R,EAAOlhB,QAAQw5B,IAAI,GACpC2zB,WAAYC,KAAa0zD,UAGrC,KAAKD,KAAqB1zG,YACrBmqB,wCACD,OAAOguG,GAA8B1lI,EAAO,CACxCI,QAAS,CACLwP,gBAAiB0R,EAAOlhB,QAAQw5B,IAAI,GACpC2zB,WAAYC,KAAa2zD,2BAGrC,KAAKF,KAAqB1zG,YACrBqqB,0CACD,OAAO8tG,GAA8B1lI,EAAO,CACxCI,QAAS,CACLwP,gBAAiB0R,EAAOlhB,QAAQw5B,IAAI,GACpC2zB,WAAYC,KAAa0zD,UAGrC,KAAKhwB,KAAyB/L,qBAC1B,OAAO/lF,GACX,KAAK8xF,KAAyB5L,gCAC1B,MAnH6BygD,EAAC/lI,EAAOshB,IAC7CxhB,MAAA,GACOE,GAAK,IACRgtH,eAAgBhtH,EAAMgtH,eAAeznH,KAAK+1D,GACtCA,EAAc1rD,kBAAoB0R,EAAOlhB,QAAQwP,gBAAe9P,MAAA,GAEnDw7D,GAAa,IAChBt7D,MAAKF,MAAA,GACEw7D,EAAct7D,OAAK,IACtBwtH,iBAAkBlsG,EAAOlhB,QAAQ6tH,aAGzC3yD,MAuGCyqE,CAAiC/lI,EAAOshB,GACnD,KAAK4vE,KAAyBnM,yCAC1B,MA3LuCihD,EAAChmI,EAAOshB,IACvDxhB,MAAA,GACOE,GAAK,IACRgtH,eAAgBhtH,EAAMgtH,eAAeznH,KAAK+1D,GACtCA,EAAc1rD,kBAAoB0R,EAAOlhB,QAAQwP,gBAAe9P,MAAA,GAEnDw7D,GAAa,IAChBgyD,4BAA2BxtH,MAAA,GACpBw7D,EAAcgyD,6BAA2B,IAC5C2Y,wCAAyCz0G,KAAK2kD,MAC9Ck4C,uCACI/sG,EAAOlhB,QACFiuH,2CAGjB/yD,MA4KC0qE,CAA2ChmI,EAAOshB,GAC7D,KAAK4vE,KAAyBlM,uBAC1B,MA9MuBupC,EAACvuH,EAAOshB,IACvCxhB,MAAA,GACOE,GAAK,IACRgtH,eAAgBhtH,EAAMgtH,eAAeznH,KAAK+1D,GACtCA,EAAc1rD,kBAAoB0R,EAAOlhB,QAAQwP,gBAAe9P,MAAA,GAEnDw7D,GAAa,IAChBt7D,MAAKF,MAAA,GACEw7D,EAAct7D,OAAK,IACtBytH,UAAWnsG,EAAOlhB,QAAQqtH,cAGlCnyD,MAkMCizD,CAA2BvuH,EAAOshB,GAC7C,KAAK4vE,KAAyBhM,2BAC1B,OAAOwgD,GAA8B1lI,EAAOshB,GAChD,KAAK2/F,KAAqB1zG,YAAYqrB,uBAClC,MA7K6BstG,EAAClmI,EAAOshB,IAC7CxhB,MAAA,GACOE,GAAK,IACRgtH,eAAgBhtH,EAAMgtH,eAAeznH,KAAK+1D,GACtCA,EAAc1rD,kBAAoB0R,EAAO1R,gBAAe9P,SAAA,GAE3Cw7D,GACCA,EAAcgyD,4BACZ,CACIA,4BAA2BxtH,MAAA,GACpBw7D,EAAcgyD,6BAA2B,IAC5C6Y,mCACI30G,KAAK2kD,SAGjB,MAAI,IACViwD,eAAgB9kH,EAAOwe,SACvBumG,YACIh9G,SAAS/H,EAAOwe,UAChBzW,SAASiyC,EAAcgrE,iBAC3B72G,SAAQ3vB,MAAA,GACDw7D,EAAc7rC,UAAQ,IACzBosC,iBAAkB,CACdrG,aAAcl0C,EAAOwe,SACrBy1B,aAAcj0C,EAAO9B,sBAIjC87C,MAiJC4qE,CAAiClmI,EAAOshB,GACnD,KAAK4vE,KAAyBjM,oBAC1B,MA5GiBshD,EAACvmI,EAAOshB,IACjCxhB,MAAA,GACOE,GAAK,IACRs6B,OAAMx6B,GAAA,GACCwhB,EAAOlhB,QAAQk6B,QAEtB+C,WAAY/b,EAAOlhB,QAAQi9B,WAC3B2vF,eAAgB1rG,EAAOlhB,QAAQ4sH,eAAeznH,KAAK+1D,IACJA,EAAnCtpC,KACRlyB,GAAA,GADsC8E,GAAK02D,EAAaz2D,UAoGjD0hI,CAAqBvmI,EAAOshB,GACvC,KAAK4vE,KAAyB9L,+BAC1B,MAhJwBohD,EAACxmI,EAAOshB,IACxCxhB,MAAA,GACOE,GAAK,IACRgtH,eAAgBhtH,EAAMgtH,eAAeznH,KAAK+1D,GACtCA,EAAc1rD,kBAAoB0R,EAAOlhB,QAAQwP,gBAAe9P,MAAA,GAEnDw7D,GAAa,IAChBt7D,MAAKF,MAAA,GACEw7D,EAAct7D,OAAK,IACtBquF,mBAAmB,MAG3B/yB,MAoICkrE,CAA4BxmI,EAAOshB,GAC9C,KAAK4vE,KAAyB1L,uCAC9B,KAAK0L,KAAyB3L,wCAC1B,MAhFwBkhD,EAACzmI,EAAOshB,IACxCxhB,MAAA,GACOE,GAAK,IACRgtH,eAAgBhtH,EAAMgtH,eAAeznH,KAAK+1D,GACtCA,EAAc1rD,kBAAoB0R,EAAOlhB,QAAQwP,gBAAe9P,MAAA,GAEnDw7D,GAAa,IAChB0yD,sBAAuB2X,GACnBrkH,EACAg6C,KAGRA,MAoECmrE,CAA4BzmI,EAAOshB,GAC9C,KAAK4vE,KAAyB7L,sBAC1B,MAhEsBqhD,EAAC1mI,EAAOshB,IACtCxhB,MAAA,GACOE,GAAK,IACRgtH,eAAgBhtH,EAAMgtH,eAAe76G,QAChCmpD,GACGA,EAAc1rD,kBAAoB0R,EAAOlhB,QAAQwP,oBA2D9C82H,CAA0B1mI,EAAOshB,GAC5C,QACI,OAAOthB,EAElB,I,8EEzOD,MAAMJ,GAAW,CACb+mI,aACA5zG,aACA6zG,YACAC,UACA/hF,eACAxM,wBACAwuF,cACAzlE,aACAwlD,iBACAx3F,sBACAq0C,sBAEsB,aAAtBx3D,KAASivB,WACTv7B,GAASyc,IAAMA,IAGJ2nH,mBAAgBpkI,I,aC5BxB,MAKD2R,GAAQ7R,aAAY,CACtBC,KAAM,SACNP,aAPwB,CACxB2nI,8BAA8B,EAC9BC,0BAA0B,GAM1BpnI,SAAU,CACNqnI,gCAAiCA,CAACjnI,EAAKG,KAAkB,IAAdC,EAAOD,EAAPC,QACvCJ,EAAM+mI,6BAA+B3mI,CAAO,EAEhD8mI,yBAA0BA,CAAClnI,EAAKO,KAAkB,IAAdH,EAAOG,EAAPH,QAChCJ,EAAMgnI,yBAA2B5mI,CAAO,KAK7C8pC,GACH34B,GAAM3Q,QAEGkR,IAHiCo4B,GAA/B+8F,gCAAyD/8F,GAAxBg9F,yBAGzB31H,GAAMO,S,6KCbtB,MAMDP,GAAQ7R,aAAY,CACtBC,KAAM,UACNP,aARsC,CACtC4zB,QAAS,KACT3wB,SAAU,KACV8kI,UAAW,MAMXvnI,SAAU,CACNwnI,WAAYA,CAACpnI,EAAKG,KAAkB,IAAdC,EAAOD,EAAPC,QAClBJ,EAAMgzB,QAAU5yB,CAAO,EAE3BinI,YAAaA,CAACrnI,EAAKO,KAAkB,IAAdH,EAAOG,EAAPH,QACnBJ,EAAMqC,SAAWjC,CAAO,EAE5BknI,aAAcA,CAACtnI,EAAKmiB,KAAkB,IAAd/hB,EAAO+hB,EAAP/hB,QACpBJ,EAAMmnI,UAAY/mI,CAAO,EAE7BmnI,sBAAuBA,CAACvnI,EAAKqiB,KAAkB,IAAdjiB,EAAOiiB,EAAPjiB,QAC7BJ,EAAMmI,QAAU/H,EAAQ+H,QACxBnI,EAAMyI,SAAWrI,EAAQqI,QAAQ,KAKtCyhC,GACH34B,GAAM3Q,QACGkR,IAFYo4B,GAAVk9F,WAAuBl9F,GAAXm9F,YAAyBn9F,GAAZo9F,aAAmCp9F,GAArBq9F,sBAE/Bh2H,GAAMO,S,iBCkCdkoH,UArCM/sG,GACjB+2G,YAAgB,CACZwD,MACAvD,WACAhnC,eACA95B,aACAphE,gBACAmK,WACAvI,QACAqrB,aACApsB,SACA6kI,kBACA3uG,OACA4uG,oBACAthI,sBACAyL,YACA1J,WACAs0E,mBACA33E,OACAsqB,SACAub,mBACAzX,OAAQy0G,aAAc16G,GACtBnR,UACA,CAACuzB,KAAYtxC,aAAcsxC,KAAYv9B,QACvC,CAAC22D,KAAQ1qE,aAAc0qE,KAAQ32D,QAC/B,CAACokG,KAAYn4G,aAAcm4G,KAAYpkG,QACvC,CAACstG,KAAkBrhH,aAAcqhH,KAAkBttG,QACnD,CAACi6G,KAAehuH,aAAcguH,KAAej6G,QAC7C,CAAC/C,KAAYhR,aAAcgR,KAAY+C,QACvC,CAAC6gH,KAAc50H,aAAc40H,KAAc7gH,QAC3C,CAAC4gG,KAAQ30G,aAAc20G,KAAQ5gG,QAC/B,CAAC0jE,KAAUz3E,aAAcy3E,KAAU1jE,QACnC,CAACjU,KAAaE,aAAcF,KAAaiU,QACzC,CAAClK,KAAqB7J,aAAc6J,KAAqBkK,QACzD,CAACwsG,KAAiBvgH,aAAcugH,KAAiBxsG,S,oCCvEzD,0EAIO,MAAM+gG,EAAWA,KACpB,MAAMn2B,EAA4Bp3B,aAC7BtlD,GAAUA,EAAMgvB,SAASd,UAAU3W,mBAElCqwH,EAAyB33E,uBAC3B,kBAAa43E,YAAenrD,EAAfmrD,IAA0C3+H,UAAQ,GAC/D,CAACwzE,IAEL,OAAOkrD,CAAsB,C,wCCZ5BE,EAAS,SAATA,GAAS,OAATA,EAAS,kBAATA,EAAS,yBAATA,EAAS,mBAATA,EAAS,qBAATA,CAAS,EAATA,GAAS,IAOCA,K,wVCqBR,MAAMC,EACRC,GAAYxlI,MAAOX,EAAUY,KAC1B,MAAMsuD,EAAwB4rB,YAA4Bl6E,KAC1DZ,EAASiY,aAAa,IACtB,IACI,MAAMkrC,OCzBuBxiD,OAAOkN,EAAIqhD,IACzCrY,cACFl3C,IAAIwrB,YAAgB,iBAAgBtd,SAAWqhD,IAC/C3tD,KAAKC,eACLD,MAAMqF,GAAaA,EAAS/E,OAC5BJ,MACGC,YAAY,CAER,IAAKC,IAAWC,UAChB,IAAKD,IAAWC,aDgBawkI,CAC7BD,EACAj3E,GAEJlvD,EAASojD,EAAyBD,IAClCnjD,EAASiY,aAAa,GAC1B,CAAE,MAAO9V,GAEU,OADAA,EAAMyE,UAAYzE,EAAMyE,SAASqT,QAG5C1Z,OAAOC,SAAS4xC,SAEhBzvC,YAAOR,EAEf,GAGKihD,EAA4BD,GAAwBnjD,IAC7D,MAAQm2C,EAAkBgN,EAAlBhN,QAAS7yC,EAAS6/C,EAAT7/C,KACjBtD,EAASwwG,YAAWr6D,IACpBn2C,EAAS62E,YAAevzE,EAAKw8D,cAC7B9/D,EAASq6E,EAAe/2E,GAAM,EAG5B+2E,EAAkBF,GAAc,CAACn6E,EAAUY,KAC7C,MAAMzC,EAAQyC,IACRg6E,EAAiB3Z,YAAoC9iE,GACrD08E,EAA4BC,YAA4B38E,GACxD48E,EACFC,YAA+BJ,IAC/BK,YAA0BJ,EAA2B,MACnDrsC,EACF0sC,YAAqC/8E,GACnCoS,EACF4pE,EAAUra,YAAYvvD,4BACpB4qE,EACF3sC,GACAqsC,IAA8BtqE,IAC7BwqE,EACL/6E,EACI+4E,YACIoC,EACMN,EACAtqE,GAEb,EAGQ81H,EACTA,CAAC9iI,EAAQmS,EAAkBnF,IAC3B5P,MAAOX,EAAUY,KAAa,IAAA0lI,EAC1B,MAAMC,EAAuC5wH,YACzC,yCADyCA,CAE3C/U,KAEF,GAAK8U,GAAqB6wH,GAKtB7wH,EAAiB+Z,gBACjBlf,EAA4Bkf,eAM5B2wC,YAAiCx/D,OAC7B40E,IAA4BrwD,UACO,QAAvCmhH,EAAA7mE,YAA4B7+D,YAAW,IAAA0lI,OAAA,EAAvCA,EAAyC5wH,oBACrCA,EAJR,CASA1V,EAASk5E,eAET,IACI,MAAMzrE,QAAeuhD,YAAiBzrD,EAAQmS,GAC9C,GAAIjI,EAAO5L,KAAKu5E,aAAapvB,8BAEzB,YADAhsD,EAASg5E,eAIbh5E,EACI84E,YAAyB,CACrB10E,MAAOqJ,EAAO5L,KAAKu5E,aAAah3E,MAChCC,YAAaoJ,EAAO5L,KAAKu5E,aAAa/2E,YACtCg3E,uBACI5tE,EAAO5L,KAAKu5E,aAAaC,uBAC7B3lE,iBAAkBjI,EAAO5L,KAAKu5E,aAAa1lE,iBAC3Ck/B,aAAc,mBACd0mC,cAAe7tE,EAAO5L,KAAKu5E,aAAaE,gBAGpD,CAAE,MAAOl2E,GACLpF,EAASm5E,cACb,CAxBA,CAwBA,EAGKqtD,EACTloI,IAAA,IAAGmoI,EAAcnoI,EAAdmoI,eAAgBC,EAAIpoI,EAAJooI,KAAI,OACvB/lI,MAAOX,EAAUY,KACb,IACI,MAAMsuD,EAAwB4rB,YAC1Bl6E,KAEE4S,EAAS,CACXizH,iBACAC,OACAC,6BAA8Bz3E,GAMlC03E,SAJqBt2E,YACjB98C,EACA07C,IAEmCrtD,KAAK4L,OAApC3L,EAAK8kI,EAAL9kI,MAAOuuC,EAAYu2F,EAAZv2F,aACfrwC,EAASo5E,YAAe,CAAEt3E,QAAOuuC,iBACrC,CAAE,MAAOjrC,GACLpF,EAASo5E,YAAe,MAC5B,EACH,C","file":"script/chunks/chunk.5.d0815d1a1f.js","sourcesContent":["enum TransactionTypes {\n AUCTION = 'Auction',\n CART = 'Cart',\n BIN = 'Bin',\n PURCHASE_OFFER_ON_ACTIVE = 'PurchaseOfferOnActive',\n PURCHASE_OFFER_ON_ENDED = 'PurchaseOfferOnEnded'\n}\n\nexport default TransactionTypes;\n","export default {\n INITIALIZE: 'ADS/INITIALIZE',\n SET_TCF_LOADED: 'ADS/SET_TCF_LOADED'\n};\n","import observable from '@riotjs/observable';\nexport default observable(new (function () {})());\n","import { createApi } from '@reduxjs/toolkit/query/react';\nimport { baseQuery } from 'tradera/state/services/utils/webapi-base-query';\nimport type {\n DeleteTemplatesApiRequest,\n GetTemplatesApiResponse\n} from 'tradera/state/services/types/webapi-selling-generated';\n\nexport enum Tags {\n TEMPLATES_LIST = 'TEMPLATES_LIST'\n}\n\nexport const templatesApi = createApi({\n reducerPath: 'templatesApi',\n baseQuery,\n tagTypes: Object.keys(Tags),\n endpoints: (builder) => ({\n deleteTemplate: builder.mutation({\n invalidatesTags: [Tags.TEMPLATES_LIST],\n query: (parameters) => {\n return {\n url: '/api/webapi/selling/templates',\n method: 'DELETE',\n body: parameters\n };\n }\n }),\n loadTemplates: builder.query({\n providesTags: [Tags.TEMPLATES_LIST],\n query: () => '/api/webapi/selling/templates'\n })\n })\n});\n\nexport const { useDeleteTemplateMutation, useLoadTemplatesQuery, util } =\n templatesApi;\n","import { createSlice } from '@reduxjs/toolkit';\nimport type { ErrorMessageCodes } from './error-message-codes';\nimport type { ModalState } from './modal-state';\nimport modalState from './modal-state';\n\nexport type BankIdSlice = {\n errorCode: ErrorMessageCodes | null;\n modalState: ModalState;\n autoStartToken: string | null;\n};\n\nconst initialState: BankIdSlice = {\n errorCode: null,\n modalState: modalState.CLOSED,\n autoStartToken: null\n};\n\nexport const bankIdSlice = createSlice({\n name: 'BankId',\n initialState,\n reducers: {\n reset: () => {\n return { ...initialState };\n },\n completed: (state) => {\n return { ...state, modalState: modalState.COMPLETED };\n },\n setError: (state, { payload }) => {\n return {\n ...state,\n errorCode: payload,\n modalState: modalState.ERROR\n };\n },\n inProgress: (state, { payload }) => {\n return {\n ...state,\n autoStartToken: payload.autoStartToken\n };\n },\n startAuth: (state) => {\n return {\n ...state,\n ...initialState, // Reset any previous BankID verification\n modalState: modalState.IN_PROGRESS\n };\n },\n close: (state) => {\n return {\n ...state,\n modalState: modalState.CLOSED\n };\n }\n }\n});\n\nexport const { reset, completed, setError, inProgress, startAuth, close } =\n bankIdSlice.actions;\n\nexport default bankIdSlice.reducer;\n","export const DRAFT_REASON = {\n NEW_ITEM: 'NewItem',\n CHANGE_ITEM: 'ChangeItem',\n CHANGE_ITEM_WITH_BIDS: 'ChangeItemWithBids',\n COPY_OTHER_MEMBERS_ITEM: 'CopyOtherMembersItem',\n COPY_OWN_ITEM: 'CopyOwnItem',\n SELL_SIMILAR_ITEM: 'SellSimilarItem',\n RESTART_ITEM: 'RestartItem'\n};\n\n// Clothes, Accessories, Shoes\nconst CSA_CATEGORY_IDS = [16, 1612, 1623];\n\n// Tech\nconst TECH_CATEGORY_IDS = [26, 12, 14, 30, 17];\n\nexport const PURE_BIN_CATEGORY_IDS = [\n ...CSA_CATEGORY_IDS,\n ...TECH_CATEGORY_IDS\n];\n","import {\n API_ERRORS,\n axiosConfigs,\n finalizeResponse,\n handleError\n} from 'tradera/utils/api';\nimport { touchWebClient, webApiClient } from 'tradera/utils/http';\n\nfunction getSystemMessages() {\n return webApiClient\n .get('/member/system-messages')\n .then(finalizeResponse())\n .catch(\n handleError({\n // Ignore 400 & 401 errors that slip through token refresh\n 400: API_ERRORS.IGNORE_ME,\n 401: API_ERRORS.IGNORE_ME\n })\n );\n}\n\nfunction getMessagingNotifications() {\n return touchWebClient.get('/api/messaging/stats', {\n cancelTokenId: 'fetchMessagingNotifications',\n ...axiosConfigs.authenticated\n });\n}\n\nexport { getSystemMessages, getMessagingNotifications };\n","import { logger } from 'packages/logger';\nimport * as gtm from 'tradera/apps/tradera/components/discover/helpers/search-gtm';\nimport { getReturnUrl } from 'tradera/utils/login';\nimport { DEFAULT_COOKIES } from 'tradera/constants/cookies';\nimport { API_ERRORS } from 'tradera/utils/api';\nimport { cache, CACHE_KEYS } from 'tradera/utils/cache';\nimport cookieUtil from 'tradera/utils/cookie';\nimport {\n closeQuickView,\n loadingQuickView,\n openQuickView,\n openProfileMenu,\n closeModal,\n openNotificationOptinModal,\n itemLayout,\n siteLayout,\n updateMessagingNotifications,\n logOut,\n setSystemMessages\n} from './reducer';\nimport { getSystemMessages, getMessagingNotifications } from './api';\nimport { getItem } from '../items/api';\n\nconst openQuickViewAction = (payload) => (dispatch, getState) => {\n const { openedFrom, ...restOfPayload } = payload;\n\n if (getState().ui.quickView.loading) {\n return;\n }\n dispatch(loadingQuickView(true));\n\n return getItem(restOfPayload.item.itemId)\n .then(({ data }) => {\n if (data) {\n // eslint-disable-next-line better-mutation/no-mutation\n restOfPayload.item = {\n ...restOfPayload.item,\n ...data,\n imageFormats: data.imageFormats?.map((i) => ({\n ...i,\n alt: i.alt || data.shortDescription\n }))\n };\n }\n dispatch(openQuickView(restOfPayload));\n\n gtm.trackAction('Quick View', `Open: from ${openedFrom}`);\n dispatch(loadingQuickView(false));\n return data;\n })\n .catch((error) => {\n dispatch(closeQuickView());\n dispatch(loadingQuickView(false));\n logger(error);\n });\n};\n\n/**\n * signIn\n * @param {object} payload\n * @param {string} payload.redirectUrl - where to send the user after login completes\n */\nconst signIn = (payload) => (dispatch, getStore) => {\n const {\n environment: { featureSwitches }\n } = getStore();\n\n if (!featureSwitches['login-anywhere']) {\n window.location = `/login${getReturnUrl(payload?.redirectUrl)}`;\n } else {\n dispatch(openProfileMenu(payload?.redirectUrl));\n dispatch(closeModal());\n }\n};\n\n/**\n * Open a notification optin modal\n *\n * @param {boolean} type - type of notifications to show modal for\n * @returns {function(*, *): boolean}\n */\nconst openNotificationOptinModalAction =\n (modalType, gaLabel, title, description, tagGroups) =>\n async (dispatch, getState) => {\n const { pushNotifications } = getState();\n if (!pushNotifications.enabled) {\n return;\n }\n if (pushNotifications.shownModals[modalType] === true) {\n return;\n }\n dispatch(\n openNotificationOptinModal({\n modalType,\n gaLabel,\n title,\n description,\n tagGroups\n })\n );\n };\n\nconst updateItemLayout = (value) => (dispatch) => {\n const defaultCookie = DEFAULT_COOKIES['ITEM_LAYOUT'];\n const expires = defaultCookie.length;\n try {\n cookieUtil.createCookie(defaultCookie.key, value, expires);\n } catch (e) {\n logger(e);\n }\n dispatch(itemLayout(value));\n};\n\nconst updateSiteLayout = (value) => (dispatch) => {\n const defaultCookie = DEFAULT_COOKIES['SITE_LAYOUT'];\n const expires = defaultCookie.length;\n try {\n cookieUtil.createCookie(defaultCookie.key, value, expires);\n } catch (e) {\n logger(e);\n }\n dispatch(siteLayout(value));\n};\n\nconst fetchSystemMessages = () => async (dispatch, getState) => {\n const {\n environment: { featureSwitches },\n member: { isLoggedIn }\n } = getState();\n if (featureSwitches && featureSwitches['mytradera-alerts'] && isLoggedIn) {\n try {\n let systemMessages = cache.read(CACHE_KEYS.SYSTEM_MESSAGES);\n if (!systemMessages) {\n const fetchedMessages = await getSystemMessages();\n systemMessages = {};\n if (fetchedMessages && 'items' in fetchedMessages.data) {\n fetchedMessages.data.items.forEach(({ type }) => {\n // eslint-disable-next-line better-mutation/no-mutation\n systemMessages[type] = true;\n });\n cache.write(CACHE_KEYS.SYSTEM_MESSAGES, systemMessages);\n }\n }\n dispatch(setSystemMessages(systemMessages));\n } catch (error) {\n // Invalidate cache to fetch fresh again next action\n cache.remove(CACHE_KEYS.SYSTEM_MESSAGES);\n switch (error.message) {\n case API_ERRORS.LOGGED_OUT:\n await dispatch(logOut());\n window.location = '/login/logout';\n break;\n case API_ERRORS.IGNORE_ME:\n case API_ERRORS.CANCELLED:\n case API_ERRORS.NETWORK:\n case API_ERRORS.TIMEOUT:\n break;\n default:\n logger(error);\n break;\n }\n }\n }\n};\n\nconst fetchMessagingNotifications = () => async (dispatch) => {\n try {\n let messagingNotifications = cache.read(CACHE_KEYS.MESSAGING_BADGES);\n if (!messagingNotifications) {\n const { data } = await getMessagingNotifications();\n messagingNotifications = data;\n }\n dispatch(updateMessagingNotifications(messagingNotifications));\n } catch (error) {\n // Fail silently\n }\n};\n\nconst reloadSystemMessages = () => (dispatch) => {\n cache.remove(CACHE_KEYS.SYSTEM_MESSAGES);\n dispatch(fetchSystemMessages());\n};\n\nconst logOutAction = () => async (dispatch) => {\n cache.remove(CACHE_KEYS.MESSAGING_BADGES);\n cache.remove(CACHE_KEYS.SYSTEM_MESSAGES);\n dispatch(logOut());\n};\n\nexport default {\n openQuickViewAction,\n signIn,\n openNotificationOptinModalAction,\n updateItemLayout,\n updateSiteLayout,\n fetchSystemMessages,\n fetchMessagingNotifications,\n reloadSystemMessages,\n logOutAction\n};\n\nexport { signIn };\n","import type {\n GetShippingComplaintDataApiResponse,\n SaveShippingComplaintDataApiRequest,\n SaveShippingComplaintDataApiResponse\n} from './types/mytradera-api-generated';\nimport { isServer } from 'tradera/utils/nextjs';\nimport { createApi } from '@reduxjs/toolkit/query/react';\nimport { baseQuery } from './utils/webapi-base-query';\n\nexport const shippingComplaintApi = createApi({\n reducerPath: 'shippingComplaintApi',\n baseQuery,\n endpoints: (builder) => ({\n getShippingComplaintData: builder.query<\n GetShippingComplaintDataApiResponse,\n string\n >({\n query: (shipmentId) => {\n const urlParameters = new URLSearchParams({\n shipmentId\n });\n\n const baseUrl = isServer ? '' : '/api/webapi';\n return `${baseUrl}/mytradera/shipping/get-shipping-complaint-data?${urlParameters}`;\n }\n }),\n saveShippingComplaintData: builder.mutation<\n SaveShippingComplaintDataApiResponse,\n SaveShippingComplaintDataApiRequest\n >({\n query: (request) => ({\n url: '/api/webapi/mytradera/shipping/save-shipping-complaint-data',\n method: 'POST',\n body: request\n }),\n onQueryStarted: async (request, { dispatch, queryFulfilled }) => {\n const patchResult = dispatch(\n shippingComplaintApi.util.updateQueryData(\n 'getShippingComplaintData',\n request.shipmentId,\n (cache) => {\n // eslint-disable-next-line better-mutation/no-mutation\n cache.formData = request.formData;\n }\n )\n );\n try {\n const response = await queryFulfilled;\n dispatch(\n shippingComplaintApi.util.updateQueryData(\n 'getShippingComplaintData',\n request.shipmentId,\n (cache) => {\n if (!cache.formData) return;\n // eslint-disable-next-line better-mutation/no-mutation\n cache.submittedDate =\n response.data.submittedDate;\n }\n )\n );\n } catch {\n patchResult.undo();\n }\n }\n })\n })\n});\n\nexport const {\n useGetShippingComplaintDataQuery,\n useSaveShippingComplaintDataMutation,\n endpoints\n} = shippingComplaintApi;\n","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 146.78 120.64\"\n}, props), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M50.39 105.24v-6a3.55 3.55 0 00-3.75-3.79 3.7 3.7 0 00-3.36 1.7 3.51 3.51 0 00-3.16-1.7 3.16 3.16 0 00-2.8 1.42v-1.18h-2.08v9.55h2.1v-5.29a2.23 2.23 0 012.34-2.54c1.38 0 2.08.9 2.08 2.52v5.31h2.1v-5.29a2.25 2.25 0 012.34-2.54c1.42 0 2.1.9 2.1 2.52v5.31zm11.7-4.77V95.7h-2.1v1.16a3.62 3.62 0 00-3-1.4 5 5 0 000 10 3.62 3.62 0 003-1.4v1.16h2.08zm-7.73 0a2.89 2.89 0 112.9 3.06 2.86 2.86 0 01-2.92-3.06zm52.17-5a5.38 5.38 0 012 .38 5 5 0 011.63 1.06 4.84 4.84 0 011.08 1.59 5.3 5.3 0 010 4 4.83 4.83 0 01-1.08 1.59 5 5 0 01-1.63 1.06 5.66 5.66 0 01-4.1 0 4.94 4.94 0 01-1.62-1.06 4.88 4.88 0 01-1.07-1.59 5.31 5.31 0 010-4 4.88 4.88 0 011.07-1.59 4.94 4.94 0 011.62-1.06 5.38 5.38 0 012.08-.41zm0 2a3.1 3.1 0 00-1.19.22 2.81 2.81 0 00-.95.63 2.93 2.93 0 00-.63 1 3.47 3.47 0 000 2.48 2.92 2.92 0 00.63 1 2.8 2.8 0 00.95.63 3.25 3.25 0 002.37 0 2.86 2.86 0 001-.63 2.9 2.9 0 00.63-1 3.47 3.47 0 000-2.48 2.9 2.9 0 00-.63-1 2.86 2.86 0 00-1-.63 3.1 3.1 0 00-1.2-.28zm-33.14 3c0-3-1.86-5-4.53-5a5 5 0 00.14 10 5.8 5.8 0 003.91-1.34l-1-1.54a4.55 4.55 0 01-2.78 1 2.65 2.65 0 01-2.86-2.34h7.09c.03-.25.03-.5.03-.78zm-7.11-.84a2.46 2.46 0 012.51-2.31 2.37 2.37 0 012.42 2.32zm15.86-1.5a6.15 6.15 0 00-3-.82c-1.14 0-1.82.42-1.82 1.12s.72.82 1.62.94l1 .14c2.08.3 3.34 1.18 3.34 2.86s-1.6 3.12-4.35 3.12a6.89 6.89 0 01-4.13-1.24l1-1.62a5.09 5.09 0 003.18 1c1.42 0 2.18-.42 2.18-1.16 0-.54-.54-.84-1.68-1l-1-.14c-2.14-.3-3.3-1.26-3.3-2.82 0-1.9 1.56-3.06 4-3.06a7.14 7.14 0 013.89 1zm10-.54h-3.39v4.31c0 1 .34 1.6 1.38 1.6a3.84 3.84 0 001.84-.54l.6 1.78a4.88 4.88 0 01-2.6.74c-2.46 0-3.32-1.32-3.32-3.54v-4.35h-1.94v-1.9h1.94v-2.9h2.1v2.9h3.39zm7.19-2.14a4.44 4.44 0 011.48.26l-.64 2a3.38 3.38 0 00-1.3-.24c-1.36 0-2 .88-2 2.46v5.35h-2.08v-9.55h2.06v1.16a2.82 2.82 0 012.52-1.4zm14.38 8.4a1 1 0 01.38.07 1 1 0 01.31.2 1 1 0 01.21.3.93.93 0 010 .74 1 1 0 01-.21.3 1 1 0 01-.31.2.94.94 0 01-.38.08 1 1 0 01-.9-.58.94.94 0 010-.74 1 1 0 01.21-.3 1 1 0 01.31-.2 1 1 0 01.33-.07zm0 1.69a.71.71 0 00.29-.06.75.75 0 00.23-.16.74.74 0 00-.23-1.2.72.72 0 00-.29-.06.75.75 0 00-.29.06.73.73 0 00-.24.16.74.74 0 000 1 .74.74 0 00.53.22zm.06-1.19a.4.4 0 01.26.08.25.25 0 01.09.21.24.24 0 01-.07.18.35.35 0 01-.21.09l.29.33h-.23l-.27-.33h-.09v.33h-.19v-.92zm-.22.17v.24h.22a.21.21 0 00.12 0 .1.1 0 000-.09.1.1 0 000-.09.21.21 0 00-.12 0z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#7673c0\",\n d: \"M57.64 22.83h31.5v56.61h-31.5z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#eb001b\",\n d: \"M59.64 51.14a35.94 35.94 0 0113.75-28.31 36 36 0 100 56.61 35.94 35.94 0 01-13.75-28.3z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#00a1df\",\n d: \"M128.2 73.44v-1.12h.47v-.24h-1.19v.24h.47v1.16zm2.31 0v-1.4h-.36l-.42 1-.42-1h-.37v1.4h.26v-1.05l.39.91h.27l.39-.91v1.06zM131.63 51.14a36 36 0 01-58.24 28.3 36 36 0 000-56.61 36 36 0 0158.25 28.3z\"\n})));","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 146.8 120.41\"\n}, props), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"none\",\n d: \"M0 0h146.8v120.41H0z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#231f20\",\n d: \"M36.35 105.26v-6a3.56 3.56 0 00-3.76-3.8 3.7 3.7 0 00-3.36 1.7 3.51 3.51 0 00-3.16-1.7 3.16 3.16 0 00-2.8 1.42V95.7h-2.08v9.56h2.1V100a2.24 2.24 0 012.34-2.54c1.38 0 2.08.9 2.08 2.52v5.32h2.1V100a2.25 2.25 0 012.34-2.54c1.42 0 2.1.9 2.1 2.52v5.32zm31.07-9.56H64v-2.9h-2.1v2.9H60v1.9h1.94v4.4c0 2.22.86 3.54 3.32 3.54a4.88 4.88 0 002.6-.74l-.6-1.78a3.84 3.84 0 01-1.84.54c-1 0-1.38-.64-1.38-1.6V97.6h3.4zm17.74-.24a2.82 2.82 0 00-2.52 1.4V95.7h-2.06v9.56h2.08V99.9c0-1.58.68-2.46 2-2.46a3.39 3.39 0 011.3.24l.64-2a4.45 4.45 0 00-1.48-.26zm-26.82 1a7.15 7.15 0 00-3.9-1c-2.42 0-4 1.16-4 3.06 0 1.56 1.16 2.52 3.3 2.82l1 .14c1.14.16 1.68.46 1.68 1 0 .74-.76 1.16-2.18 1.16a5.09 5.09 0 01-3.18-1l-1 1.62a6.9 6.9 0 004.14 1.24c2.76 0 4.36-1.3 4.36-3.12s-1.26-2.56-3.34-2.86l-1-.14c-.9-.12-1.62-.3-1.62-.94s.68-1.12 1.82-1.12a6.16 6.16 0 013 .82zm55.71-1a2.82 2.82 0 00-2.52 1.4V95.7h-2.06v9.56h2.08V99.9c0-1.58.68-2.46 2-2.46a3.39 3.39 0 011.3.24l.64-2a4.45 4.45 0 00-1.48-.26zm-26.8 5a4.83 4.83 0 005.1 5 5 5 0 003.44-1.14l-1-1.68a4.2 4.2 0 01-2.5.86 3.07 3.07 0 010-6.12 4.2 4.2 0 012.5.86l1-1.68a5 5 0 00-3.44-1.14 4.83 4.83 0 00-5.1 5zm19.48 0V95.7h-2.08v1.16a3.63 3.63 0 00-3-1.4 5 5 0 000 10 3.63 3.63 0 003-1.4v1.16h2.08zm-7.74 0a2.89 2.89 0 112.9 3.06 2.87 2.87 0 01-2.9-3.06zm-25.1-5a5 5 0 00.14 10 5.81 5.81 0 003.97-1.3l-1-1.54a4.55 4.55 0 01-2.78 1 2.65 2.65 0 01-2.86-2.34h7.1v-.8c0-3-1.86-5-4.54-5zm0 1.86a2.37 2.37 0 012.42 2.32h-5a2.46 2.46 0 012.54-2.32zm52.11 3.16v-8.62h-2v5a3.63 3.63 0 00-3-1.4 5 5 0 000 10 3.63 3.63 0 003-1.4v1.16h2zm3.47 3.39a1 1 0 01.38.07 1 1 0 01.31.2 1 1 0 01.21.3.93.93 0 010 .74 1 1 0 01-.21.3 1 1 0 01-.31.2.94.94 0 01-.38.08 1 1 0 01-.9-.58.94.94 0 010-.74 1 1 0 01.21-.3 1 1 0 01.31-.2 1 1 0 01.41-.07zm0 1.69a.71.71 0 00.29-.06.75.75 0 00.23-.16.74.74 0 000-1 .74.74 0 00-.23-.16.72.72 0 00-.29-.06.75.75 0 00-.29.06.73.73 0 00-.24.16.74.74 0 000 1 .74.74 0 00.24.16.74.74 0 00.32.06zm.06-1.19a.4.4 0 01.26.08.25.25 0 01.09.21.24.24 0 01-.07.18.35.35 0 01-.21.09l.29.33h-.23l-.27-.33h-.09v.33h-.19v-.88zm-.22.17v.24h.22a.21.21 0 00.12 0 .1.1 0 000-.09.1.1 0 000-.09.21.21 0 00-.12 0zm-11-4.06a2.89 2.89 0 112.9 3.06 2.87 2.87 0 01-2.9-3.06zm-70.23 0V95.7H46v1.16a3.63 3.63 0 00-3-1.4 5 5 0 000 10 3.63 3.63 0 003-1.4v1.16h2.08zm-7.74 0a2.89 2.89 0 112.9 3.06 2.87 2.87 0 01-2.92-3.06z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#ff5f00\",\n d: \"M57.65 22.85h31.5v56.61h-31.5z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n className: styles[\"cls-4\"] || \"cls-4\",\n fill: \"#eb001b\",\n d: \"M59.65 51.16A35.94 35.94 0 0173.4 22.85a36 36 0 100 56.61 35.94 35.94 0 01-13.75-28.3z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#f79e1b\",\n d: \"M131.65 51.16a36 36 0 01-58.25 28.3 36 36 0 000-56.61 36 36 0 0158.25 28.3zM128.21 73.46V72.3h.47v-.24h-1.19v.24h.51v1.16zm2.31 0v-1.4h-.36l-.42 1-.42-1H129v1.4h.26v-1.05l.39.91h.27l.39-.91v1.06z\"\n})));","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 509 159\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M193.26 2.82L126.72 156.7H83.24L50.37 33.85c-2.12-7.44-3.71-10.26-9.8-13.59-9.82-5.13-26.25-10-40.57-13.08l1.06-4.36h69.99c8.75 0 16.96 5.64 18.82 15.64l17.5 89L150.05 2.81h43.21zm170.46 103.6c0-40.51-58.06-42.82-57.79-61.03.26-5.38 5.57-11.28 17.5-12.82 5.83-.77 22-1.28 40.56 6.92l7.16-32.57A109.92 109.92 0 00332.7 0c-40.56 0-69.2 21.03-69.46 50.78-.27 22.3 20.41 34.62 36.05 41.8 15.9 7.7 21.21 12.56 21.21 19.23 0 10.26-12.72 14.88-24.65 15.13-20.68.26-32.61-5.38-42.16-9.74l-7.42 33.6c9.55 4.35 27.3 7.94 45.6 8.2 43.21 0 71.58-20.52 71.84-52.57zM471.1 156.7H509L475.86 2.82H440.6c-7.69 0-14.58 4.36-17.5 11.28l-61.76 142.6h43.2l8.76-23.09h52.75l5.04 23.08zm-46.13-54.62l21.74-57.7 12.46 57.7h-34.2zM252.11 2.82l-34.2 153.87h-41.09l34.2-153.87h41.1z\",\n fill: \"#1434CB\"\n})));","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 752 400\"\n}, props), /*#__PURE__*/React.createElement(\"title\", null, \"Google Pay\"), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M552 0H200C90 0 0 90 0 200s90 200 200 200h352c110 0 200-90 200-200S662 0 552 0z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#3c4043\",\n d: \"M552 16a181 181 0 01130 54 184 184 0 0139 201 185 185 0 01-169 113H200a181 181 0 01-130-54 184 184 0 01-39-201A185 185 0 01200 16h352m0-16H200C90 0 0 90 0 200s90 200 200 200h352c110 0 200-90 200-200S662 0 552 0zM359 214v61h-20V125h51c13 0 24 5 33 13 9 9 14 19 14 32 0 12-5 23-14 31-9 9-20 13-33 13h-31zm0-70v52h32c7 0 14-3 19-8a25 25 0 000-36c-5-6-12-8-19-8h-32zm128 25c14 0 26 4 34 12 8 7 12 18 12 31v63h-18v-14h-1c-8 11-18 17-32 17-11 0-20-3-28-10s-11-15-11-25c0-11 4-19 12-25s18-10 32-10c11 0 20 3 28 7v-5c0-6-3-12-8-17-5-4-12-7-19-7-10 0-19 5-25 14l-17-11c9-13 23-20 41-20zm-25 74c0 5 2 10 7 13 4 3 9 5 15 5 8 0 15-3 21-9 7-6 10-13 10-21-6-5-15-7-25-7-8 0-15 2-20 5-5 4-8 9-8 14zm176-71l-64 148h-20l24-52-43-96h21l31 74 30-74z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#4285f4\",\n d: \"M282 202l-1-18h-81v33h47c-2 11-8 20-18 27v21h28c16-15 25-37 25-63z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#34a853\",\n d: \"M229 244c-7 5-17 8-29 8-22 0-41-15-48-36h-28v23c14 27 43 47 76 47 23 0 43-8 57-21z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fabb05\",\n d: \"M149 200c0-6 1-11 3-16v-22h-28a85 85 0 000 77l28-23c-2-5-3-10-3-16z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#e94235\",\n d: \"M200 148c13 0 24 5 33 13l24-24a86 86 0 00-134 25l29 22c7-21 26-36 48-36z\"\n})));","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 165.5 106\"\n}, props), /*#__PURE__*/React.createElement(\"title\", null, \"Apple Pay\"), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M150.7 0H13.1a71 71 0 00-4.5.3A10.5 10.5 0 003 3.1 10 10 0 00.3 8.6 20.6 20.6 0 000 13v79.7a70.3 70.3 0 00.3 4.6 10.5 10.5 0 002.8 5.5 9.9 9.9 0 005.5 2.8 21 21 0 004.5.3h139.3a79.7 79.7 0 004.5-.3 10.5 10.5 0 005.5-2.8 10 10 0 002.8-5.5 20.6 20.6 0 00.3-4.6V13a63 63 0 00-.3-4.5 10.4 10.4 0 00-2.8-5.5A10 10 0 00157 .3a20.8 20.8 0 00-4.5-.3h-1.7z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#FFF\",\n d: \"M150.7 3.5h1.7a67.4 67.4 0 014 .3 6.4 6.4 0 015.4 5.4 17.6 17.6 0 01.2 4v79.6a59.7 59.7 0 01-.3 4 6.9 6.9 0 01-1.8 3.6 6.4 6.4 0 01-3.6 1.8 18 18 0 01-4 .2H13.2a75 75 0 01-3.9-.2 7 7 0 01-3.6-1.8 6.4 6.4 0 01-1.8-3.6 17.5 17.5 0 01-.3-4V13.1a66.6 66.6 0 01.3-3.9 7 7 0 011.8-3.6 6.4 6.4 0 013.6-1.8 17.6 17.6 0 014-.3h137.5\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M45.2 35.6a9.2 9.2 0 002.1-6.5 9.2 9.2 0 00-8.2 9.4c2.3.2 4.6-1.1 6-2.9m2.2 3.4c-3.4-.2-6.3 1.9-7.9 1.9-1.6 0-4-1.8-6.8-1.8a10 10 0 00-8.4 5.2c-3.7 6.2-1 15.5 2.5 20.6 1.8 2.6 3.8 5.3 6.6 5.2 2.5 0 3.5-1.6 6.7-1.6 3.1 0 4 1.6 6.7 1.6 2.9 0 4.6-2.5 6.3-5 2-3 2.8-5.7 2.9-5.9 0 0-5.5-2-5.5-8.3 0-5.2 4.2-7.7 4.4-7.8a9.7 9.7 0 00-7.5-4.1m29.4-7c7.4 0 12.5 5 12.5 12.4S84 56.9 76.5 56.9h-8v13h-6v-38h14.2zm-8.3 20h6.8c5 0 8-2.8 8-7.6s-3-7.5-8-7.5h-6.8v15zm22.3 10c0-4.9 3.7-7.8 10.3-8.2l7.6-.4v-2.2c0-3-2.1-4.9-5.6-4.9-3.3 0-5.3 1.6-5.8 4h-5.4c.4-5 4.6-8.6 11.4-8.6 6.7 0 11 3.6 11 9v19.1h-5.4v-4.5h-.2c-1.6 3-5 5-8.7 5-5.4 0-9.2-3.4-9.2-8.3zm17.9-2.5v-2.2l-6.8.4c-3.4.3-5.3 1.8-5.3 4.1 0 2.4 2 4 5 4 4 0 7-2.7 7-6.3zM119.3 80v-4.6l1.9.1c2.6 0 4-1.1 4.9-4l.5-1.6-10-27.7h6.2l7 22.5 7-22.5h6l-10.3 29c-2.4 6.8-5.1 9-10.8 9l-2.4-.2z\"\n})));","// extracted by mini-css-extract-plugin\nexport default {\"logo-with-border\":\"logo-with-border--v5VJF\",\"logoWithBorder\":\"logo-with-border--v5VJF\",\"narrow\":\"narrow--JTNbc\",\"logo-without-border\":\"logo-without-border--Zp1B4\",\"logoWithoutBorder\":\"logo-without-border--Zp1B4\"};","import React from 'react';\nimport MaestroLogo from '@tradera/blueprint/theme/logos/maestro_vertical.svg?jsx';\nimport MasterCardLogo from '@tradera/blueprint/theme/logos/mastercard_vertical.svg?jsx';\nimport PaynovaLogo from '@tradera/blueprint/theme/logos/paynova.svg?jsx';\nimport PaypalLogo from '@tradera/blueprint/theme/logos/paypal.svg?jsx';\nimport SwishLogo from '@tradera/blueprint/theme/logos/swish_horizontal.svg?jsx';\nimport VisaLogo from '@tradera/blueprint/theme/logos/visa.svg?jsx';\nimport GooglePayLogo from '@tradera/blueprint/theme/logos/google-pay.svg?jsx';\nimport ApplePayLogo from '@tradera/blueprint/theme/logos/apple-pay.svg?jsx';\nimport KlarnaLogo from '@tradera/blueprint/theme/logos/klarna.svg?jsx';\nimport TraderaLogo from 'tradera/legacy/static/components/tradera/logo';\n\nimport style from './payment-method-logo.module.scss';\n\nconst PaymentMethodLogo = ({ paymentMethod, displayText }) => {\n const visaLogo = (\n \n \n \n );\n const mastercardLogo = (\n \n \n \n \n );\n switch (paymentMethod) {\n case 'Visa':\n return visaLogo;\n case 'Mastercard':\n return mastercardLogo;\n case 'VisaMasterCard':\n return (\n
\n
{visaLogo}
\n {mastercardLogo}\n
\n );\n case 'Paynova':\n return (\n \n \n \n );\n case 'PayPal':\n return (\n \n \n \n );\n case 'SwishApp2App':\n case 'SwishHandel':\n return (\n \n \n \n );\n case 'ApplePay':\n return (\n \n );\n case 'GooglePay':\n return (\n \n );\n case 'Klarna':\n return (\n \n );\n case 'Invoice':\n return (\n \n );\n default:\n return null;\n }\n};\n\nexport default PaymentMethodLogo;\n","import { isServer } from 'tradera/utils/nextjs';\n\nexport default !isServer && window.sellingGlobalData;\n","import axios from 'axios';\nimport {\n utilizeCancelToken,\n finalizeResponse,\n handleError\n} from 'tradera/utils/api';\nimport cookieUtil from 'tradera/utils/cookie';\nimport { FORCE_GEO_DEV } from 'tradera/constants/cookies';\nimport { isServer } from 'tradera/utils/nextjs';\n\nexport const fetchGeolocation = (geoPublicBaseUrl) => {\n if (isServer) {\n return Promise.reject(\n 'Cannot fetch geo information from server as that would give the wrong result.'\n );\n }\n\n const { cancel, cancelToken } = utilizeCancelToken('fetchGeolocation');\n\n if (cancel) cancel();\n\n const search = (window && window.location && window.location.search) || '';\n return axios\n .get(getGeoPublicApiLocationUrl(geoPublicBaseUrl, search), {\n cancelToken\n })\n .then(finalizeResponse())\n .catch(handleError());\n};\n\nexport const getGeoPublicApiLocationUrl = (geoPublicBaseUrl, search) => {\n const originalUrl = `${geoPublicBaseUrl}/api/country`;\n const forceGeoDevMatch = search.match(/force-geo-(.*?)-dev/);\n\n if (forceGeoDevMatch) {\n cookieUtil.createCookie(FORCE_GEO_DEV, forceGeoDevMatch[1]);\n return `${originalUrl}/${forceGeoDevMatch[1]}`;\n }\n\n const forceGeoDevCookie = cookieUtil.readCookie(FORCE_GEO_DEV);\n if (forceGeoDevCookie) {\n return `${originalUrl}/${forceGeoDevCookie}`;\n }\n\n return originalUrl;\n};\n","import { nullifyUndefinedProperties } from 'tradera/utils/object';\n\nexport default (initData) => {\n const {\n cleanedMemberAlias,\n facebookId,\n isLoggedIn,\n memberAlias,\n memberDetailedSellerRatingAverage,\n memberCountry,\n memberCountryCodeIso2,\n memberEmail,\n memberEmailMd5,\n memberEmailSha256,\n memberFirstName,\n memberId,\n memberHeroImage,\n memberLastName,\n memberBirthdate,\n memberTown,\n hasTraderaPay,\n isCompany\n } = initData;\n return nullifyUndefinedProperties({\n cleanedMemberAlias,\n facebookId,\n geolocation: null,\n isLoggedIn,\n memberAlias,\n memberDetailedSellerRatingAverage,\n memberCountry,\n memberCountryCodeIso2,\n memberEmail,\n memberEmailMd5,\n memberEmailSha256,\n memberFirstName,\n memberId,\n memberHeroImage,\n memberLastName,\n memberBirthdate,\n memberTown,\n hasTraderaPay,\n isCompany\n });\n};\n","import actionTypes from './action-types';\nimport { fetchGeolocation } from './api';\nimport { setCurrencyIfNotChosen } from 'tradera/state/multi-currency/actions';\nimport { removeShippingCountryCookieIfSwedish } from 'tradera/state/shipping-region/actions';\nimport { API_ERRORS } from 'tradera/utils/api';\nimport { logger } from 'packages/logger';\nimport getInitialState from './initial-state';\n\nexport const initialize = (initData) => ({\n type: actionTypes.INITIALIZE,\n payload: getInitialState(initData)\n});\n\nexport const initializeServerMember = (member) => ({\n type: actionTypes.INITIALIZE,\n payload: member\n});\n\nexport const defaultAction = (data) => ({\n type: actionTypes.DEFAULT_ACTION,\n payload: data\n});\n\nconst setIsFetchingGeolocation = (isFetchingGeolocation) => ({\n type: actionTypes.SET_IS_FETCHING_GEOLOCATION,\n payload: {\n isFetchingGeolocation\n }\n});\n\nconst setGeolocation = (payload) => ({\n type: actionTypes.SET_GEOLOCATION,\n payload\n});\n\nconst failedLoadingGeolocation = () => ({\n type: actionTypes.FAILED_LOADING_GEOLOCATION\n});\n\nexport const setMemberHeroImage = (payload) => ({\n type: actionTypes.SET_MEMBER_HERO_IMAGE,\n payload\n});\n\nexport const getGeolocation = () => (dispatch, getState) => {\n dispatch(setIsFetchingGeolocation(true));\n const { PUBLIC_GEO_PUBLIC_API_BASE_URL } = getState().environment.variables;\n return fetchGeolocation(PUBLIC_GEO_PUBLIC_API_BASE_URL)\n .then((response) => {\n const { data } = response;\n dispatch(setGeolocation(data));\n dispatch(setCurrencyIfNotChosen(data.currency));\n dispatch(setIsFetchingGeolocation(false));\n dispatch(removeShippingCountryCookieIfSwedish(data));\n return data;\n })\n .catch((error) => {\n switch (error.message) {\n case API_ERRORS.ABORTED:\n case API_ERRORS.CANCELLED:\n case API_ERRORS.NETWORK:\n break;\n default:\n logger(error);\n break;\n }\n dispatch(failedLoadingGeolocation());\n });\n};\n","import qs from 'qs';\nimport type {\n MakePurchaseOfferApiRequest,\n MakePurchaseOfferApiResponse,\n MarkAsPaidByBuyerApiRequest,\n MarkAsPaidByBuyerApiResponse,\n DeclinePurchaseOfferApiRequest,\n DeclinePurchaseOfferApiResponse,\n GetOffersBySellerAndBuyerAndItemApiResponse,\n OffersbysellerandbuyeranditemRequest,\n AcceptPurchaseOfferApiResponse,\n AcceptPurchaseOfferApiRequest,\n GetCommissionFeeForItemApiResponse,\n CommissionfeeforitemRequest,\n MarkItemAsUnavailableForPurchaseOfferApiRequest,\n MarkItemAsUnavailableForPurchaseOfferApiResponse,\n GetDiscountApiResponse,\n DiscountApiRequest,\n GetDiscountViewModelApiResponse,\n DiscountApiResponse,\n MakeCounterOfferApiRequest,\n MakeCounterOfferApiResponse,\n AcceptCounterOfferApiResponse,\n AcceptCounterOfferApiRequest,\n DeclineCounterOfferApiResponse,\n DeclineCounterOfferApiRequest\n} from './types/webapi-shopping-generated';\nimport { webApi, webApiTags } from './webapi-api';\n\nexport const shoppingApi = webApi.injectEndpoints({\n endpoints: (builder) => ({\n getCommissionFeeForItem: builder.query<\n GetCommissionFeeForItemApiResponse,\n CommissionfeeforitemRequest\n >({\n query: (parameters) =>\n `/api/webapi/shopping/commissionfeeforitem?${qs.stringify(\n parameters\n )}`\n }),\n purchaseOffer: builder.mutation<\n MakePurchaseOfferApiResponse,\n MakePurchaseOfferApiRequest\n >({\n query: (parameters) => {\n return {\n url: '/api/webapi/shopping/offer/makepurchaseoffer',\n method: 'POST',\n body: parameters\n };\n },\n // This doesn't work right now, but would work if Next.js would use RTKQ to fetch data on initial page load\n invalidatesTags: (result, error, arg) => [\n { type: webApiTags.Item, id: arg.itemId }\n ]\n }),\n markAsPaid: builder.mutation<\n MarkAsPaidByBuyerApiResponse,\n MarkAsPaidByBuyerApiRequest\n >({\n query: ({ purchaseOrderId }) => ({\n url: `/api/webapi/shopping/payment/markaspaid`,\n method: 'POST',\n body: { purchaseOrderId }\n })\n }),\n declinePurchaseOffer: builder.mutation<\n DeclinePurchaseOfferApiResponse,\n DeclinePurchaseOfferApiRequest\n >({\n query: (parameters) => {\n return {\n url: `/api/webapi/shopping/offer/declinepurchaseoffer`,\n method: 'POST',\n body: parameters\n };\n },\n invalidatesTags: (result, error, arg) =>\n !error ? [{ type: webApiTags.Offer, id: arg.itemId }] : []\n }),\n markAsUnavailable: builder.mutation<\n MarkItemAsUnavailableForPurchaseOfferApiResponse,\n MarkItemAsUnavailableForPurchaseOfferApiRequest\n >({\n query: ({ itemId }) => {\n return {\n url: `/api/webapi/shopping/offer/markitemasunavailableforpurchaseoffer`,\n method: 'POST',\n body: { itemId }\n };\n },\n invalidatesTags: (result, error, arg) =>\n !error ? [{ type: webApiTags.Offer, id: arg.itemId }] : []\n }),\n acceptPurchaseOffer: builder.mutation<\n AcceptPurchaseOfferApiResponse,\n AcceptPurchaseOfferApiRequest\n >({\n query: (parameters) => {\n return {\n url: `/api/webapi/shopping/offer/acceptpurchaseoffer`,\n method: 'POST',\n body: parameters\n };\n },\n invalidatesTags: (result, error, arg) =>\n !error ? [{ type: webApiTags.Offer, id: arg.itemId }] : []\n }),\n makeCounterOffer: builder.mutation<\n MakeCounterOfferApiResponse,\n MakeCounterOfferApiRequest\n >({\n query: (parameters) => {\n return {\n url: `/api/webapi/shopping/offer/makecounteroffer`,\n method: 'POST',\n body: parameters\n };\n },\n invalidatesTags: (result, error, arg) =>\n !error ? [{ type: webApiTags.Offer, id: arg.itemId }] : []\n }),\n declineCounterOffer: builder.mutation<\n DeclineCounterOfferApiResponse,\n DeclineCounterOfferApiRequest\n >({\n query: (parameters) => {\n return {\n url: `/api/webapi/shopping/offer/declinecounteroffer`,\n method: 'POST',\n body: parameters\n };\n },\n invalidatesTags: (result, error, arg) =>\n !error ? [{ type: webApiTags.Offer, id: arg.itemId }] : []\n }),\n acceptCounterOffer: builder.mutation<\n AcceptCounterOfferApiResponse,\n AcceptCounterOfferApiRequest & { itemId: number }\n >({\n query: (parameters) => {\n return {\n url: `/api/webapi/shopping/offer/acceptcounteroffer`,\n method: 'POST',\n body: parameters\n };\n },\n invalidatesTags: (result, error, arg) =>\n !error ? [{ type: webApiTags.Offer, id: arg.itemId }] : []\n }),\n getOffersBySellerAndBuyerAndItem: builder.query<\n GetOffersBySellerAndBuyerAndItemApiResponse,\n OffersbysellerandbuyeranditemRequest\n >({\n query: (parameters) => {\n return {\n url: `/api/webapi/shopping/offer/offersbysellerandbuyeranditem?${qs.stringify(\n parameters\n )}`,\n method: 'GET'\n };\n },\n providesTags: (result) =>\n result?.purchaseOffers\n ? [\n ...result.purchaseOffers.map((purchaseOffer) => ({\n type: webApiTags.Offer,\n id: purchaseOffer.itemId\n })),\n webApiTags.Offer\n ]\n : [webApiTags.Offer]\n }),\n getDiscount: builder.query({\n query: (purchaseOrderId) =>\n `/api/webapi/shopping/payment/discountviewmodel?purchaseOrderId=${purchaseOrderId}`\n }),\n getDiscountStatus: builder.query({\n query: (discountId) =>\n `/api/webapi/shopping/payment/discount?discountId=${discountId}`\n }),\n setDiscount: builder.mutation({\n query: (payload) => ({\n url: '/api/webapi/shopping/payment/discount',\n method: 'POST',\n body: payload\n })\n })\n })\n});\n\nexport const {\n usePurchaseOfferMutation,\n useMarkAsPaidMutation,\n useDeclinePurchaseOfferMutation,\n useAcceptPurchaseOfferMutation,\n useGetOffersBySellerAndBuyerAndItemQuery,\n useGetCommissionFeeForItemQuery,\n useMarkAsUnavailableMutation,\n useGetDiscountQuery,\n useGetDiscountStatusQuery,\n useSetDiscountMutation,\n useMakeCounterOfferMutation,\n useDeclineCounterOfferMutation,\n useAcceptCounterOfferMutation\n} = shoppingApi;\n","/* eslint-disable better-mutation/no-mutation */\n\nimport { createSlice } from '@reduxjs/toolkit';\nimport { isNextJs, isServer } from 'tradera/utils/nextjs';\n\nconst slice = createSlice({\n name: 'random',\n initialState: {\n randomNumber: 0\n },\n reducers: {\n setRandomNumber: (state) => {\n if (isNextJs && !isServer) {\n throw new Error(\n 'setRandomNumber should only be called on the server'\n );\n }\n state.randomNumber = Math.random();\n }\n }\n});\n\nexport const { setRandomNumber } = slice.actions;\nexport const reducer = slice.reducer;\n","import { touchWebClient } from 'tradera/utils/http';\n\nconst publish = async (draft, hasTraderaPayConsent) => {\n let data;\n try {\n const response = await touchWebClient.post('/selling/api/items', {\n draft: {\n ...draft,\n shippingOptions: draft.shippingOptions.filter(\n (item) => !!item.type\n ),\n descriptionLanguageCodeIso2:\n draft.descriptionLanguageCodeIso2 || 'sv',\n currency: draft.currency || 'SEK'\n },\n hasTraderaPayConsent: hasTraderaPayConsent\n });\n\n data = response.data;\n } catch ({ response }) {\n data = response.data;\n }\n\n if (data.errorCode) throw data;\n\n return data;\n};\n\nexport default {\n publish\n};\n","import imageActions from '../image-actions';\n\nconst handleInvalidImages = (errors, dispatch, translator) => {\n const displayTexts = [];\n let invalidImageCount = 0;\n errors.forEach((error) => {\n const invalidImageIds = error.message.split(',');\n invalidImageIds.forEach((id) => {\n dispatch(imageActions.removeImageWithId(id));\n // eslint-disable-next-line better-mutation/no-mutation\n invalidImageCount++;\n });\n });\n if (invalidImageCount > 0) {\n displayTexts.push(\n translator('syi_publish_error_invalid_image', {\n count: invalidImageCount\n })\n );\n }\n return displayTexts;\n};\n\nconst translateErrorCode = (error, t) => {\n switch (error.errorCode) {\n case 'AlreadyPublished':\n return t('syi_publish_error_alreadypublished');\n case 'BuyItNowPriceNotLargerThanOpeningPrice':\n return t(\n 'syi_publish_error_buyitnowpricenotlargerthanopeningprice'\n );\n case 'BuyItNowPriceNotLargerThanReservePrice':\n return t(\n 'syi_publish_error_buyitnowpricenotlargerthanreserveprice'\n );\n case 'BuyItNowPriceTooLarge':\n return t('syi_publish_error_buyitnowpricetoolarge');\n case 'BuyItNowPriceUnset':\n return t('syi_publish_error_buyitnowpriceunset');\n case 'CampaignCodeInvalid':\n return t('syi_publish_error_campaigncodeinvalid');\n case 'CategoryContainsTooManyItems':\n return t('syi_publish_error_categorycontainstoomanyitems');\n case 'CategoryDoesNotSupportBin':\n return t('syi_publish_error_categorydoesnotsupportbin');\n case 'CategoryDoesNotSupportUsedItems':\n return t('syi_publish_error_categorydoesnotsupportuseditems');\n case 'CategoryIdUnknown':\n return t('syi_publish_error_categoryidunknown');\n case 'CustomEndDateTooLate':\n return t('syi_publish_error_customenddatetoolate');\n case 'CustomEndDateTooSoon':\n return t('syi_publish_error_customenddatetoosoon');\n case 'DisplayHighlightedCannotBeRemoved':\n return t('syi_publish_error_displayhighlightedcannotberemoved');\n case 'DisplayPromotedCannotBeRemoved':\n return t('syi_publish_error_displaypromotedcannotberemoved');\n case 'DurationGreaterThanUpperLimitWithUnsetCustomEndDate':\n return t(\n 'syi_publish_error_durationgreaterthanupperlimitwithunsetcustomenddate'\n );\n case 'DurationNotAllowed':\n return t('syi_publish_error_durationnotallowed');\n case 'ImagesTooFew':\n return t('syi_publish_error_imagestoofew');\n case 'ImagesTooMany':\n return t('syi_publish_error_imagestoomany');\n case 'NoImageUploadedByUser':\n return t('syi_publish_error_noimageuploadedbyuser');\n case 'ItemHasBidsAndCannotBeChanged':\n return t('syi_publish_error_itemhasbidsandcannotbechanged');\n case 'LongDescriptionCannotBeEmpty':\n return t('syi_publish_error_longdescriptioncannotbeempty');\n case 'LongDescriptionTooLong':\n return t('syi_publish_error_longdescriptiontoolong');\n case 'MemberIsActiveInternationalBuyer':\n return t('syi_publish_error_memberisactiveinternationalbuyer');\n case 'MemberIsSuspended':\n return t('syi_publish_error_memberissuspended');\n case 'MemberNotAllowedToListImmeditateEndingItems':\n return t(\n 'syi_publish_error_membernotallowedtolistimmeditateendingitems'\n );\n case 'OpeningPriceBelowOne':\n return t('syi_publish_error_openingpricebelowone');\n case 'OpeningPriceTooLarge':\n return t('syi_publish_error_openingpricetoolarge');\n case 'OwnReferenceTooLong':\n return t('syi_publish_error_ownreferencetoolong');\n case 'PriceBelowOne':\n return t('syi_publish_error_pricebelowone');\n case 'PriceBelowZero':\n return t('syi_publish_error_pricebelowzero');\n case 'ReservePriceNotLargerThanOpeningPrice':\n return t('syi_publish_error_reservepricenotlargerthanopeningprice');\n case 'ReservePriceTooLarge':\n return t('syi_publish_error_reservepricetoolarge');\n case 'ShippingCostBelowZero':\n return t('syi_publish_error_shippingcostbelowzero');\n case 'ShippingOptionsCannotBeEmpty':\n return t('syi_publish_error_shippingoptionscannotbeempty');\n case 'ShippingOptionsCountTooLarge':\n return t('syi_publish_error_shippingoptionscounttoolarge');\n case 'ShippingOptionsMoreThanOneWithTakeawayOnly':\n return t(\n 'syi_publish_error_shippingoptionsmorethanonewithtakeawayonly'\n );\n case 'ShortDescriptionCannotBeEmpty':\n return t('syi_publish_error_shortdescriptioncannotbeempty');\n case 'ShortDescriptionTooLong':\n return t('syi_publish_error_shortdescriptiontoolong');\n case 'UnknownError':\n return t('syi_publish_error_unknownerror');\n }\n\n return error.message;\n};\n\nexport const handleServerValidationError = (errors, dispatch, t) => {\n const invalidImageErrorCodes = ['DeletedImage', 'MissingImage'];\n const imageErrorFilter = (error) =>\n invalidImageErrorCodes.includes(error.errorCode);\n const nonImageErrorFilter = (error) =>\n !invalidImageErrorCodes.includes(error.errorCode);\n\n const imageErrors = errors.filter(imageErrorFilter);\n const nonImageErrors = errors.filter(nonImageErrorFilter);\n\n const imageErrorDisplayTexts = handleInvalidImages(\n imageErrors,\n dispatch,\n t\n );\n const nonImageErrorDisplayTexts = nonImageErrors.map((error) =>\n translateErrorCode(error, t)\n );\n\n const errorDisplayTexts = imageErrorDisplayTexts.concat(\n nonImageErrorDisplayTexts\n );\n const errorDisplayText = errorDisplayTexts.join(' ').trim();\n dispatch({\n type: 'SET_PUBLISH_FAILED',\n reasonDisplayText: errorDisplayText ? errorDisplayText : null\n });\n};\n","import { GtmService as gtm } from 'tradera/services/google-tagmanager-service';\n\nimport { logger } from 'packages/logger';\n\nexport const trackAttributeSuggestions = (\n draftSelectedAttributes,\n suggestedAttributes,\n suggestionEngine,\n isNewDraft,\n publishedId\n) => {\n const comparer = (a, b) => a.localeCompare(b);\n try {\n draftSelectedAttributes.forEach((attribute) => {\n const label = [\n suggestionEngine,\n attribute.id,\n attribute.backingField,\n attribute.values?.sort(comparer).join(','),\n suggestedAttributes\n .find((sa) => sa.id === attribute.id)\n ?.values?.sort(comparer)\n .join(','),\n 0,\n !!isNewDraft,\n publishedId\n ];\n gtm.trackAction(\n 'MachineLearning',\n 'SyiAttributeSuggestion',\n label.join(';')\n );\n });\n } catch (error) {\n logger(error);\n }\n};\n\nexport const trackShippingRecommendations = (\n draftCategoryId,\n draftShippingOptions,\n recommendedWeight,\n shippingRecommendations,\n publishedId\n) => {\n if (shippingRecommendations) {\n try {\n const selectedShippingWeight = draftShippingOptions[0].weight;\n const firstSelectedShippingOption = `${draftShippingOptions[0].productId};${draftShippingOptions[0].providerId}`;\n const secondSelectedShippingOption =\n draftShippingOptions.length == 2\n ? `${draftShippingOptions[1].productId};${draftShippingOptions[1].providerId}`\n : ';';\n const recommendedShippingOptionForRecommendedWeight =\n shippingRecommendations.find((sr) => {\n return sr.weight === recommendedWeight;\n });\n const recommendedShippingOptionForSelectedWeight =\n shippingRecommendations.find((sr) => {\n return sr.weight === selectedShippingWeight;\n });\n\n // Expected label\n // categoryId;recommendedWeight;recommendedProductIdForRecommendedWeight;recommendedProviderForRecommendedWeight;recommendedProductIdForSelectedWeight;recommendedProviderForSelectedWeight;selectedWeight;selectedProductIdFirst;selectedProviderIdFirst;selectedProductIdSecond;selectedProviderIdSecond;completionTimeInSeconds\n const label = [\n draftCategoryId,\n recommendedWeight,\n recommendedShippingOptionForRecommendedWeight\n ? recommendedShippingOptionForRecommendedWeight.shippingProductId\n : '',\n recommendedShippingOptionForRecommendedWeight\n ? recommendedShippingOptionForRecommendedWeight.shippingProvider\n : '',\n recommendedShippingOptionForSelectedWeight\n ? recommendedShippingOptionForSelectedWeight.shippingProductId\n : '',\n recommendedShippingOptionForSelectedWeight\n ? recommendedShippingOptionForSelectedWeight.shippingProvider\n : '',\n selectedShippingWeight,\n firstSelectedShippingOption,\n secondSelectedShippingOption,\n 0,\n publishedId\n ];\n gtm.trackAction(\n 'MachineLearning',\n 'SyiShippingRecommendations',\n label.join(';')\n );\n } catch (error) {\n logger(error);\n }\n }\n};\n","/* eslint-disable promise/always-return */\nimport 'jquery';\nimport publishService from 'tradera/apps/syi/services/publish-service';\nimport navigationService from 'tradera/apps/syi/services/navigation-service';\nimport draftService from 'tradera/apps/syi/services/draft-service';\nimport categoryActions from './category-actions';\nimport syiActions from './syi-actions';\nimport imageActions from './image-actions';\nimport priceActions from './price-actions';\nimport { shortDescriptionActions } from './short-description-actions';\nimport { setDescriptionLanguageCodeIso2 } from 'tradera/apps/syi/state/reducers/short-description';\nimport longDescriptionActions from './long-description-actions';\nimport shippingActions from './shipping-actions';\nimport campaignCodeActions from './campaign-code-actions';\nimport {\n resetCharityAndShippingInfo,\n setCharityAndFetchInfo,\n setCharityFromDraftAndFetchInfo\n} from 'tradera/apps/syi/state/actions/charity-actions';\nimport feesActions from './fees-actions';\nimport {\n resetImageAttributesSuggestions,\n setAttributesFromDraft\n} from './attributes-actions';\nimport scribe from 'tradera/apps/syi/services/scribe';\nimport {\n setAllowedBuyerRegion,\n setAvailableAllowedBuyerRegions\n} from '../reducers/buyer-region';\nimport { handleServerValidationError } from './helpers/server-validation-error-helper';\nimport { getSyiSlice } from 'tradera/apps/syi/state/selectors/syi';\nimport {\n selectCategorySuggestedAttributes,\n selectImageToColorSuggestedAttributes\n} from 'tradera/apps/syi/state/selectors/attribute-selectors';\nimport {\n selectRecommendedWeight,\n selectShippingRecommendations\n} from 'tradera/apps/syi/state/selectors/shipping-selectors';\nimport {\n selectFeatureSwitches,\n selectIsFeatureEnabled\n} from 'tradera/state/environment/selectors';\nimport { selectMemberCountryCodeIso2 } from 'tradera/state/member/selectors';\nimport {\n trackAttributeSuggestions,\n trackShippingRecommendations\n} from './draft-tracking';\nimport { logger } from 'packages/logger';\nimport dayjs from 'dayjs';\nimport {\n getDefaultSelectedDescriptionLanguageCodeIso2,\n getDefaultShippingFromCountryCodeIso2\n} from 'tradera/apps/my-tradera/app/components/settings/selling/item-localization';\nimport userData from 'tradera/apps/syi/services/user-data.js';\nimport initData from 'init-data';\nimport { Tags, util } from '../drafts-api';\nimport { setCustomEndTime, setDurationDays } from '../reducers/item-duration';\nimport { GtmService as gtm } from 'tradera/services/google-tagmanager-service';\n\nfunction ensureDraftReason(draft) {\n if (!draft.draftReason) {\n // eslint-disable-next-line better-mutation/no-mutation\n draft.draftReason = 'NewItem';\n }\n}\n\nconst trackAddonBeforePublish = function (addOnfeatureName) {\n gtm.trackAction('Listing AddOns', addOnfeatureName, 'Before Publish');\n};\n\nconst setDraft =\n (draft, params = {}) =>\n (dispatch, getState) => {\n const memberCountryCodeIso2 = selectMemberCountryCodeIso2(getState());\n\n const fromCountry =\n draft.fromCountry ||\n userData.shippingFromCountryCodeIso2 ||\n getDefaultShippingFromCountryCodeIso2(memberCountryCodeIso2);\n\n dispatch(shippingActions.setShippingFromCountry({ fromCountry }));\n\n dispatch(syiActions.disableAutoSave());\n ensureDraftReason(draft);\n\n const isNewDraft =\n getSyiSlice(getState()).draft.draftId != draft.draftId ||\n getSyiSlice(getState()).draft.draftReason != draft.draftReason;\n const isChangeItem = draft.draftReason === 'ChangeItem';\n\n // Do first for actions that depends on this info.\n dispatch(syiActions.setIsEditOfPublishedItem(isChangeItem));\n dispatch(syiActions.hideAllErrors());\n\n dispatch({\n type: 'SET_DRAFT_PROPERTIES',\n draft: draft\n });\n\n dispatch(\n setAllowedBuyerRegion({\n allowedBuyerRegion: draft.allowedBuyerRegion\n })\n );\n dispatch(setAvailableAllowedBuyerRegions());\n dispatch(setItemCondition(draft.itemCondition));\n dispatch(\n campaignCodeActions.setInitialCampaignCode(\n draft.campaignCode,\n draft.campaignCodeId,\n draft.campaignCodeDescription,\n isChangeItem\n )\n );\n\n // Setting short description also loads top categories!\n dispatch(\n shortDescriptionActions.setShortDescription(draft.shortDescription)\n );\n dispatch(\n setDescriptionLanguageCodeIso2(\n draft.descriptionLanguageCodeIso2 ||\n userData.selectedDescriptionLanguageCodeIso2 ||\n getDefaultSelectedDescriptionLanguageCodeIso2(\n initData.languageCodeIso2,\n memberCountryCodeIso2,\n selectIsFeatureEnabled('french-dutch-selectable')(\n getState()\n )\n )\n )\n );\n dispatch(setCurrency(draft.currency));\n dispatch(setResellPartner(draft.resellPartner));\n dispatch(\n categoryActions.setDraftCategory(\n draft.categoryId,\n draft.categoryPath\n )\n );\n dispatch(setDurationDays(draft.durationDays));\n dispatch(setCustomEndTime(draft.customEndTime));\n dispatch(\n longDescriptionActions.setLongDescriptionFromDraft(\n draft.longDescription\n )\n );\n dispatch(setDisplayPromoted(draft.displayPromoted));\n dispatch(setDisplayHighlighted(draft.displayHighlighted));\n dispatch(imageActions.setDraftImages(draft.images || []));\n dispatch(resetImageAttributesSuggestions());\n dispatch(\n priceActions.setFromDraft(\n draft.openingBid,\n draft.fixedPrice,\n draft.reservePrice,\n draft.charity?.charityId,\n draft.vat,\n isChangeItem\n )\n );\n\n const pennybridgeCharitiesEnabled = selectFeatureSwitches(getState())[\n 'pennybridge-charities'\n ];\n\n if (pennybridgeCharitiesEnabled) {\n if (params.charityId) {\n dispatch(setCharityAndFetchInfo(params.charityId));\n } else if (draft.charity) {\n dispatch(setCharityFromDraftAndFetchInfo(draft.charity));\n }\n }\n dispatch(setAttributesFromDraft(draft));\n\n dispatch(\n shippingActions.getAndSetShippingOptionsByWeight(\n draft.shippingOptions\n )\n );\n\n dispatch(syiActions.enableAutoSave());\n\n if (isNewDraft) {\n scribe.sendSessionStart();\n }\n };\n\nconst setIsLoading = (isLoading) => ({\n type: 'SET_DRAFT_IS_LOADING',\n payload: isLoading\n});\n\nconst loadDraft = (dispatch, draftId) => {\n dispatch(setIsLoading(true));\n return draftService\n .loadDraft(draftId)\n .then((result) => {\n dispatch(setDraft(result));\n return result;\n })\n .catch((result) => {\n navigationService.goToStart();\n throw result;\n })\n .finally(() => dispatch(setIsLoading(false)));\n};\n\nconst loadImagesFromDraft = (draftId) => async (dispatch, getState) => {\n const browserDraftImageUrls = (getSyiSlice(getState()).images.slots || [])\n .map((image) => image.imageUrl)\n .filter(Boolean);\n\n const serverDraft = await draftService.loadDraft(draftId);\n const serverDraftImages = serverDraft.images || [];\n const serverDraftImageUrls = serverDraftImages.map(\n (image) => image.imageUrl\n );\n\n const changedImages = browserDraftImageUrls\n .filter((x) => !serverDraftImageUrls.includes(x))\n .concat(\n serverDraftImageUrls.filter(\n (x) => !browserDraftImageUrls.includes(x)\n )\n );\n const imagesHaveChanged = changedImages.length > 0;\n if (imagesHaveChanged) {\n dispatch(imageActions.setDraftImages(serverDraftImages));\n }\n return imagesHaveChanged;\n};\n\n// KATS: this should perhaps be moved to the draft service on BE - do not save a draft if it's not\n// complete. Then we could check in FE if the save action succeeded, and if it did then we know that it can be resumed.\nexport const canBeResumed = (\n draftId,\n draftReason,\n shortDescription,\n longDescription,\n images\n) => {\n if (!draftId) {\n return false;\n }\n\n if (draftReason !== 'NewItem') {\n return false;\n }\n\n var hasShortDescription =\n shortDescription && shortDescription.trim().length > 0;\n var hasLongDescription =\n longDescription && longDescription.trim().length > 0;\n var hasImage =\n Array.isArray(images) && images.some((image) => !!image.imageUrl);\n return hasShortDescription || hasLongDescription || hasImage;\n};\n\nconst updateDraftCanBeResumed = () => (dispatch, getState) => {\n const draft = getSyiSlice(getState()).draft;\n const shortDescription = getSyiSlice(getState()).shortDescription\n .shortDescription;\n const longDescription = getSyiSlice(getState()).longDescription\n .longDescription;\n const imageSlots = getSyiSlice(getState()).images.slots;\n\n // TODO: avoid duplication by using canBeResumed\n if (!draft.draftId) {\n return false;\n }\n\n if (draft.draftReason !== 'NewItem') {\n return false;\n }\n\n var hasShortDescription =\n shortDescription && shortDescription.trim().length > 0;\n var hasLongDescription =\n longDescription && longDescription.trim().length > 0;\n var hasImage =\n Array.isArray(imageSlots) &&\n imageSlots.some((image) => !!image.imageUrl);\n const canBeResumed = hasShortDescription || hasLongDescription || hasImage;\n\n dispatch({\n type: 'SET_DRAFT_CAN_BE_RESUMED',\n payload: canBeResumed\n });\n};\n\nconst setRestart = (restart) => ({\n type: 'SET_RESTART',\n payload: restart\n});\n\nconst setDisplayPromoted = (displayPromoted) => (dispatch) => {\n dispatch({\n type: 'SET_DISPLAY_PROMOTED',\n payload: displayPromoted || false\n });\n dispatch(feesActions.updatePrices());\n};\n\nconst setDisplayHighlighted = (displayHighlighted) => (dispatch) => {\n dispatch({\n type: 'SET_DISPLAY_HIGHLIGHTED',\n payload: displayHighlighted || false\n });\n dispatch(feesActions.updatePrices());\n};\n\nconst setReference = (reference) => ({\n type: 'SET_REFERENCE',\n payload: reference\n});\n\nconst publish = (t) => (dispatch, getState) => {\n dispatch({ type: 'SET_PUBLISH_PENDING' });\n\n const state = getSyiSlice(getState());\n const { displayHighlighted, displayPromoted } = state.extraFeatures;\n const reservePrice = state.price.reservePrice;\n const draft = draftService.buildDraftFromState(state);\n var splitTestGroups = getState().environment.splitTestGroups;\n var featureSwitches = getState().environment.featureSwitches;\n const customEndTime = state.itemDuration.customEndTime;\n\n if (draft.draftReason === 'NewItem') {\n gtm.trackAction(\n 'SYI',\n 'Creation time in seconds',\n String(dayjs().diff(dayjs(state.syi.creationStart), 'second'))\n );\n }\n\n publishService\n .publish(draft, state.memberConsent.hasTraderaPayConsent)\n .then((result) => {\n if (displayHighlighted) {\n trackAddonBeforePublish('Highlight');\n }\n if (displayPromoted) {\n trackAddonBeforePublish('Rank up');\n }\n if (reservePrice) {\n trackAddonBeforePublish('Reserve price');\n }\n if (customEndTime) {\n trackAddonBeforePublish('End time');\n }\n\n if (featureSwitches['syi-attribute-suggestions']) {\n const draftSelectedCategoryAttributes =\n draft.attributeValues.termAttributeValues;\n const suggestedCategoryAttributes =\n selectCategorySuggestedAttributes(getState()) || [];\n if (draftSelectedCategoryAttributes.length > 0) {\n trackAttributeSuggestions(\n draftSelectedCategoryAttributes,\n suggestedCategoryAttributes,\n splitTestGroups['attribute_suggestion_extractor'],\n state.draft.isNewDraft,\n result.itemId\n );\n }\n }\n\n if (featureSwitches['syi-image-attribute-suggestions']) {\n const draftSelectedColorAttributes =\n draft.attributeValues.termAttributeValues.filter(\n (a) => a.backingField === 'color'\n );\n const suggestedColorAttributes =\n selectImageToColorSuggestedAttributes(getState()) || [];\n if (draftSelectedColorAttributes) {\n trackAttributeSuggestions(\n draftSelectedColorAttributes,\n suggestedColorAttributes,\n 'ImageToColor',\n state.draft.isNewDraft,\n result.itemId\n );\n }\n }\n\n if (featureSwitches['shipping-recommendations']) {\n trackShippingRecommendations(\n draft.categoryId,\n draft.shippingOptions,\n selectRecommendedWeight(getState()) || 0,\n selectShippingRecommendations(getState()) || [],\n result.itemId\n );\n }\n\n dispatch(setDraft({}));\n navigationService.goToPublished(result.itemId);\n })\n .catch((response) => {\n logger('Failed to publish SYI draft', {\n contexts: {\n syiPublish: response\n }\n });\n\n if (\n hasResponseErrorCode(response, [\n 'DraftAlreadyPublished',\n 'DraftBelongsToAnotherMember'\n ])\n ) {\n navigationService.goToStart();\n dispatch(setDraft({}));\n } else if (hasResponseErrorCode(response, ['ValidationError'])) {\n handleServerValidationError(response.errors || [], dispatch, t);\n } else {\n dispatch({ type: 'SET_PUBLISH_FAILED' });\n dispatch(syiActions.toggleModal('error-modal-publish-failed'));\n }\n });\n};\n\nconst hasResponseErrorCode = (responseOrNull, arrayOfErrorCodesToCheck) =>\n responseOrNull &&\n arrayOfErrorCodesToCheck.includes(responseOrNull.errorCode);\n\nconst loadDraftIfMissing = (draftId) => (dispatch, getState) => {\n var draft = getSyiSlice(getState()).draft;\n const isAlreadyLoaded = draft.draftId === draftId;\n if (isAlreadyLoaded) {\n return Promise.resolve(draft);\n }\n return loadDraft(dispatch, draftId);\n};\n\nconst loadDefaultDraft =\n ({ charityId }) =>\n (dispatch) => {\n dispatch(syiActions.reset());\n dispatch(resetCharityAndShippingInfo());\n dispatch(setDraft(draftService.loadDefaultDraft(), { charityId }));\n dispatch(shippingActions.resetSelected());\n };\n\nconst loadDefaultTemplateDraft = () => (dispatch) => {\n dispatch(syiActions.reset());\n dispatch(resetCharityAndShippingInfo());\n var template = draftService.loadDefaultTemplateDraft();\n dispatch(setDraft({ ...template, templateId: 'new' }));\n};\n\nconst useDraftAsTemplate = () => (dispatch) => {\n dispatch({\n type: 'SET_DRAFT_REASON',\n payload: 'Template'\n });\n dispatch({\n type: 'SET_DRAFT_ID',\n payload: null\n });\n};\n\nconst setDraftVersion = (version) => (dispatch) => {\n dispatch({\n type: 'SET_DRAFT_VERSION',\n payload: version\n });\n};\n\nexport const triggerSave = () => (dispatch, getState) =>\n saveDraft(dispatch, getState);\n\nconst saveDraft = (dispatch, getState) => {\n const draft = draftService.buildDraftFromState(getSyiSlice(getState()));\n const version = getSyiSlice(getState()).draft.version || 0;\n return draftService\n .saveDraft(draft)\n .then((result) => {\n if (draft.draftId !== result.draftId) {\n dispatch({\n type: 'SET_DRAFT_ID',\n payload: result.draftId\n });\n }\n if (version > 0 && version + 1 !== result.version) {\n // Unexpected version. The draft is being edited somewhere else.\n }\n const wasNewDraftWithoutId = !draft.draftId && !!result.draftId;\n if (wasNewDraftWithoutId) {\n navigationService.setDraftUrlWithoutReload(result.draftId);\n }\n // Must happen after new URL is set for re-render to happen.\n dispatch(setDraftVersion(result.version));\n // KATS: This is only manually dispatched since not all of the templates API is in RTK query yet\n dispatch(util.invalidateTags([Tags.DRAFT_LIST]));\n\n return result;\n })\n .catch((result) => {\n const response = result.responseJSON;\n\n logger('Failed to save SYI draft', {\n contexts: {\n syiSave: response\n }\n });\n\n if (\n hasResponseErrorCode(response, [\n 'DraftAlreadyPublished',\n 'DraftBelongsToAnotherMember'\n ])\n ) {\n dispatch(setDraft({}));\n navigationService.goToStart();\n } else if (result.status == 404) {\n dispatch(setDraft({}));\n navigationService.goToStart();\n }\n throw result;\n });\n};\n\nconst setUsedAllowed = (isAllowed) => ({\n type: 'SET_ITEM_CONDITION_SELECTION_ERROR',\n payload: isAllowed ? null : 'syi_validation_used_not_allowed_for_category'\n});\n\nconst setItemCondition = (condition) => (dispatch) => {\n dispatch({\n type: 'SET_ITEM_CONDITION',\n payload: condition\n });\n dispatch(updateItemConditionRestrictionForCategory());\n};\n\nconst updateItemConditionRestrictionForCategory =\n () => (dispatch, getState) => {\n const condition = getSyiSlice(getState()).itemCondition.itemCondition;\n const isUsed = condition === 'Used';\n if (isUsed) {\n const isAllowed = isUsedAllowed(getState);\n dispatch(setUsedAllowed(isAllowed));\n } else {\n dispatch(setUsedAllowed(true));\n }\n };\n\nconst isUsedAllowed = (getState) => {\n const categoryRestriction = getSyiSlice(getState()).syi.categoryRestriction;\n return !categoryRestriction || categoryRestriction.allowUsed !== false;\n};\n\nconst resetItemCondition = () => ({\n type: 'RESET_ITEM_CONDITION'\n});\n\nconst publishAdditionalDescription = (text) => (dispatch, getState) => {\n if (text && text.length > 0) {\n dispatch({\n type: 'ADD_ADDITIONAL_DESCRIPTION',\n payload: text\n });\n }\n dispatch({ type: 'SET_PUBLISH_PENDING' });\n const draft = draftService.buildDraftFromState(getSyiSlice(getState()));\n publishService\n .publish(draft)\n .then((result) => {\n navigationService.goToPublished(result.itemId);\n dispatch(setDraft({}));\n })\n .catch(() => {\n dispatch({ type: 'SET_PUBLISH_FAILED' });\n });\n};\n\nconst resetDraft = () => ({ type: 'RESET_DRAFT' });\n\nconst setCurrency = (currency) => ({\n type: 'SET_CURRENCY',\n payload: { currency }\n});\n\nconst setResellPartner = (resellPartner) => ({\n type: 'SET_RESELL_PARTNER',\n payload: { resellPartner }\n});\n\nexport default {\n setDraft,\n loadDraft,\n loadImagesFromDraft,\n canBeResumed,\n updateDraftCanBeResumed,\n setRestart,\n setDisplayPromoted,\n setDisplayHighlighted,\n setReference,\n publish,\n loadDraftIfMissing,\n loadDefaultDraft,\n loadDefaultTemplateDraft,\n useDraftAsTemplate,\n saveDraft,\n setItemCondition,\n resetItemCondition,\n publishAdditionalDescription,\n resetDraft,\n updateItemConditionRestrictionForCategory,\n setIsLoading\n};\n","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 16 16\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M1.58 1.58a.6.6 0 01.84 0l5.59 5.58 5.58-5.58a.6.6 0 11.84.84L8.85 8l5.58 5.59a.6.6 0 01-.84.84L8 8.85l-5.59 5.58a.6.6 0 01-.84-.84L7.16 8 1.58 2.42a.6.6 0 010-.84z\"\n})));","/* eslint-disable better-mutation/no-mutation */\nimport initData from 'init-data';\nimport { createSlice } from '@reduxjs/toolkit';\n\nexport const initialState = {\n list: [],\n topLevelCategories:\n initData.allCategories?.map(({ id, name, href }) => ({\n id,\n title: name,\n href\n })) || [],\n isFetching: false,\n error: null\n};\n\nconst categoriesSlice = createSlice({\n name: 'categories',\n initialState,\n reducers: {\n initialize: (state, { payload }) => {\n state.topLevelCategories =\n payload.topLevelCategories || state.topLevelCategories;\n },\n requestCategoryList: (state) => {\n state.isFetching = true;\n state.error = null;\n },\n receiveCategoryList: (state, action) => {\n state.list = action.payload;\n state.isFetching = false;\n state.error = null;\n },\n handleCategoryListError: (state, action) => {\n state.isFetching = false;\n state.error = action.payload;\n }\n }\n});\n\nexport const reducer = categoriesSlice.reducer;\n\nexport const {\n initialize,\n requestCategoryList,\n receiveCategoryList,\n handleCategoryListError\n} = categoriesSlice.actions;\n","/* eslint-disable better-mutation/no-mutation */\n\nimport { createSlice } from '@reduxjs/toolkit';\nimport getInitialState, { MODAL_STATUS } from './initial-state';\nimport { getPaymentOptions, getInvoice } from './actions';\n\nconst invoiceCheckoutSlice = createSlice({\n name: 'invoiceCheckout',\n initialState: getInitialState(),\n reducers: {\n setInvoiceData: (state, { payload }) => {\n state.invoice = payload;\n },\n setSelectedPayment: (state, { payload }) => {\n state.payment.selectedPayment = payload;\n state.payment.paymentMethodData = null;\n state.checkoutSummary.hasError = false;\n },\n setPaymentMethodData: (state, { payload }) => {\n state.payment.paymentMethodData = payload;\n },\n setPaymentPaying: (state, { payload }) => {\n state.payment.isPaying = payload;\n state.payment.hasError = false;\n },\n setCheckoutSummaryFetching: (state, { payload }) => {\n state.checkoutSummary.isFetching = payload;\n state.checkoutSummary.hasError = false;\n state.isUpdating = payload;\n },\n setCheckoutSummaryHasError: (state, { payload }) => {\n state.checkoutSummary.hasError = payload;\n state.checkoutSummary.isFetching = false;\n state.isUpdating = false;\n state.payment.modal.status = MODAL_STATUS.ERROR;\n },\n openPaymentModal: (state, { payload }) => {\n const { open, status, paymentAttemptId } = payload;\n state.payment.modal = {\n open,\n status,\n paymentAttemptId\n };\n },\n closePaymentModal: (state) => {\n state.payment.modal = {\n open: '',\n status: MODAL_STATUS.START\n };\n },\n resetOngoingPaymentAttempt: (state) => {\n state.ongoingPaymentAttempt = {\n invoicePaymentAttemptId: null,\n paymentMethod: null\n };\n }\n },\n extraReducers: (builder) => {\n // get invoice\n builder.addCase(getInvoice.fulfilled, (state, { payload }) => {\n state.invoice = {\n ...state.invoice,\n ...payload.invoice,\n isFetching: false\n };\n state.sellerPhoneNumber = payload.sellerPhone;\n state.ongoingPaymentAttempt = {\n ...state.ongoingPaymentAttempt,\n ...payload.ongoingPaymentAttempt\n };\n });\n builder.addCase(getInvoice.pending, (state) => {\n state.invoice = {\n ...state.invoice,\n isFetching: true,\n hasError: null\n };\n });\n builder.addCase(getInvoice.rejected, (state) => {\n state.invoice = {\n ...state.invoice,\n isFetching: false,\n hasError: true\n };\n });\n\n // get payment options\n builder.addCase(getPaymentOptions.fulfilled, (state, { payload }) => {\n const { paymentOptions } = payload;\n state.payment = {\n ...state.payment,\n isFetching: false,\n paymentOptions: paymentOptions\n };\n });\n builder.addCase(getPaymentOptions.pending, (state) => {\n state.payment = {\n ...state.payment,\n isFetching: true,\n hasError: null\n };\n });\n builder.addCase(getPaymentOptions.rejected, (state) => {\n state.payment = {\n ...state.payment,\n isFetching: false,\n hasError: true\n };\n });\n }\n});\n\nexport const {\n openNonIntegratedModal,\n closeNonIntegratedModal,\n setSelectedPayment,\n setPaymentMethodData,\n setPaymentPaying,\n setCheckoutSummaryFetching,\n setCheckoutSummaryHasError,\n openPaymentModal,\n closePaymentModal,\n setTermsAccepted,\n setInvoiceData,\n resetOngoingPaymentAttempt\n} = invoiceCheckoutSlice.actions;\n\nexport default invoiceCheckoutSlice.reducer;\n","import React from 'react';\nimport { useTranslator } from 'tradera/lang/translate';\nimport { useFormatUtcDateInSwedishTimeZone } from 'tradera/hooks/use-format-utc-date-in-swedish-timezone';\nimport TimeLeft from '../helpers/time-left';\nimport { ITEM_STATES } from 'tradera/state/views/view-item/constants';\nimport { AnimateOnValueChange } from './animate-on-value-change';\nimport LocalizedPrice from 'tradera/localization/localized-price';\nimport { Button } from 'tradera/components/atoms/button/button';\n\ntype BidDetailsProps = {\n bidCount: number;\n endDate: string;\n hasEnded: boolean;\n isEnding: boolean;\n itemState: ITEM_STATES;\n leadingBidAmount: number;\n onShowBids: () => void;\n openingBid: number;\n finalPrice: number;\n timeLeftText: string;\n isTimeLeftBelowWarningLimit: boolean;\n};\n\nexport const BidDetails = ({\n bidCount,\n endDate,\n hasEnded,\n isEnding,\n itemState,\n leadingBidAmount,\n onShowBids,\n openingBid,\n timeLeftText,\n isTimeLeftBelowWarningLimit,\n finalPrice\n}: BidDetailsProps) => {\n const { t } = useTranslator();\n const formatUtcDateInSwedishTimeZone = useFormatUtcDateInSwedishTimeZone();\n\n const hasBids = bidCount > 0;\n const amountDetails = getAmountDetails(\n itemState,\n leadingBidAmount,\n openingBid,\n hasBids,\n finalPrice\n );\n\n const amountTitle = (\n

\n {t(amountDetails.title)}\n

\n );\n const amountValue = (\n

\n \n \n \n

\n );\n const timeTitle =\n isEnding || hasEnded ? (\n

\n {t('vip_hasEndedTime')}{' '}\n {formatUtcDateInSwedishTimeZone(endDate)}\n

\n ) : (\n

\n {t('vip_willEndTime')} {formatUtcDateInSwedishTimeZone(endDate)}\n

\n );\n const timeValue =\n isEnding || hasEnded ? (\n \n {hasEnded\n ? itemState === ITEM_STATES.ENDED_CANCELLED\n ? t('vip_cancelled')\n : t('vip_ended')\n : t('vip_ending')}\n

\n ) : (\n

\n \n

\n );\n const bidTitle = (\n

\n {t('vip_bid')}{' '}\n \n (\n {\n e?.preventDefault();\n onShowBids();\n }}>\n {t('vip_show')}\n \n )\n \n

\n );\n const bidValue = (\n

\n {bidCount} {t('vip_amount')}\n

\n );\n\n const showBidCount =\n itemState !== ITEM_STATES.ENDED_AUCTION_BIN_BOUGHT_AS_BIN;\n\n return (\n
\n
\n
{amountTitle}
\n
{amountValue}
\n
\n \n
{timeTitle}
\n
{timeValue}
\n \n {showBidCount && (\n
\n
{bidTitle}
\n
{bidValue}
\n
\n )}\n
\n );\n};\n\nexport const getAmountDetails = (\n itemState: ITEM_STATES,\n leadingBid: number,\n openingBid: number,\n hasBids: boolean,\n finalPrice: number\n) => {\n if (itemState === ITEM_STATES.ENDED_AUCTION_WITH_WINNING_BID) {\n return {\n title: 'vip_finalPrice',\n amount: finalPrice\n };\n }\n\n if (finalPrice > 0) {\n return {\n title: 'vip_soldFor',\n amount: finalPrice\n };\n }\n\n if (hasBids) {\n return {\n title: 'vip_leadingBid',\n amount: leadingBid\n };\n }\n return {\n title: 'vip_openingBid',\n amount: openingBid\n };\n};\n","export const VIEW_STATES = {\n FORM: 'FORM',\n ITEM_ENDED: 'ITEM_ENDED',\n LOADING: 'LOADING',\n SUBMIT_FAILED: 'SUBMIT_FAILED',\n SUBMIT_SUCCESS: 'SUBMIT_SUCCESS',\n SUBMITTING: 'SUBMITTING'\n} as const;\n\nexport const REASONS = {\n NONE: '0',\n SUSPECTED_FRAUD: '1',\n ITEM_IS_A_COUNTERFEIT: '2',\n BRAND_NAME_MISUSE: '3',\n WRONG_CATEGORY: '4',\n PROHIBITED_SHIPPINGvOR_PAYMEN_TMETHOD: '5',\n OTHER_PROHIBITED_ITEM: '6',\n OTHER_PROHIBITED_SETUP: '7',\n OTHER: '8'\n} as const;\n","import draftActions from './draft-actions';\n\nexport default {\n setIsPropertyEditMode: (isPropertyEditMode) => ({\n type: 'SET_IS_PROPERTY_EDIT_MODE',\n payload: isPropertyEditMode\n }),\n setCreationType: (creationType) => ({\n type: 'SET_CREATION_TYPE',\n payload: creationType\n }),\n setCreationStart: (date) => ({\n type: 'SET_CREATION_START',\n payload: date\n }),\n showAllErrors: () => ({\n type: 'SHOW_ALL_ERRORS'\n }),\n hideAllErrors: () => ({\n type: 'HIDE_ALL_ERRORS'\n }),\n setIsEditOfPublishedItem: (isEditOfPublishedItem) => ({\n type: 'SET_IS_EDIT_OF_PUBLISHED_ITEM',\n payload: isEditOfPublishedItem\n }),\n\n setCategoryRestriction: (restriction) => (dispatch) => {\n dispatch({\n type: 'SET_CATEGORY_RESTRICTION',\n payload: restriction\n });\n dispatch(draftActions.updateItemConditionRestrictionForCategory());\n },\n toggleModal: (modalId) => ({\n type: 'TOGGLE_MODAL',\n payload: modalId\n }),\n showModal: (modalId, modalData) => ({\n type: 'SHOW_MODAL',\n modalId: modalId,\n modalData: modalData\n }),\n hideModal: () => ({\n type: 'HIDE_MODAL'\n }),\n reset: () => ({\n type: 'RESET_SYI'\n }),\n enableAutoSave: () => ({\n type: 'ENABLE_AUTOSAVE'\n }),\n disableAutoSave: () => ({\n type: 'DISABLE_AUTOSAVE'\n })\n};\n","export const formatPrice = (price) => {\n const format = (formatMe) =>\n formatMe.toLocaleString('sv', {\n symbol: ' kr',\n symbolPosition: 'end',\n decimal: ',',\n comma: '.'\n });\n return typeof price !== 'number'\n ? `${format(parseInt(price))} kr`\n : `${format(price)} kr`;\n};\n","import { GtmService } from 'tradera/services/google-tagmanager-service';\nimport { BID_VALIDATION_RESULTS } from '../api/vip-api-constants';\n\nexport const CATEGORIES = {\n VIEW_ITEM: 'View item',\n BIDDING: 'Bidding',\n CART: 'Cart',\n CHECKOUT_BIN: 'Checkout bin'\n};\n\nconst trackAction = (category, action, label) => {\n GtmService.trackAction(category, action, label);\n};\n\nexport const trackBiddingConfirmBid = () =>\n trackAction(CATEGORIES.BIDDING, 'Bid button', 'Bekräfta bud');\n\nexport const trackBiddingShowEnterBid = () =>\n trackAction(CATEGORIES.BIDDING, 'Show', 'EnterBid');\n\nexport const trackBiddingShowConfirmBid = () =>\n trackAction(CATEGORIES.BIDDING, 'Show', 'ConfirmBid');\n\nexport const trackBiddingShowChangeMaxBid = () =>\n trackAction(CATEGORIES.BIDDING, 'Show', 'ChangeMaxBid');\n\nexport const trackBiddingQuickBid = () =>\n trackAction(CATEGORIES.BIDDING, 'Bid button', 'Lägg snabbud');\n\nexport const trackBiddingNewMaxBid = () =>\n trackAction(CATEGORIES.BIDDING, 'Bid button', 'Lägg maxbud');\n\nexport const trackNewBid = () =>\n trackAction(CATEGORIES.VIEW_ITEM, 'Bid button', 'Lägg bud');\n\nexport const trackNewMaxBid = () =>\n trackAction(CATEGORIES.VIEW_ITEM, 'Bid button', 'Ändra maxbud');\n\nexport const trackOpenCheckoutBin = () =>\n trackAction(CATEGORIES.CHECKOUT_BIN, 'Show', 'Open BIN modal');\n\nexport const trackConfirmBin = () =>\n trackAction(\n CATEGORIES.CHECKOUT_BIN,\n 'Bin navigation',\n 'Confirm BIN purchase'\n );\n\nexport const trackPayBin = () =>\n trackAction(CATEGORIES.CHECKOUT_BIN, 'Bin navigation', 'Pay BIN');\n\nexport const trackKeepShopping = () =>\n trackAction(CATEGORIES.CHECKOUT_BIN, 'Bin navigation', 'Keep shopping');\n\nexport const trackBinError = () =>\n trackAction(CATEGORIES.CHECKOUT_BIN, 'Bin navigation', 'Error');\n\nexport const trackBidPlaced = (\n itemId,\n validationCode,\n isMaxBid,\n potentialBidChange,\n bidId,\n transactionTotal\n) => {\n switch (validationCode) {\n case BID_VALIDATION_RESULTS.LEADING_BIDDER:\n case BID_VALIDATION_RESULTS.HIGHER_BIDDER_EXISTS:\n // LeadingBidder.cshtml and HigherBidderExists renders _PlaceBidDataLayerTracking.cshtml\n // which has this tracking.\n GtmService.push({\n event: 'auctionEvent',\n transactionTotal: `${transactionTotal}`\n });\n GtmService.trackAction(\n CATEGORIES.BIDDING,\n 'PlacedBidPotential',\n isMaxBid ? 'MaxBid' : 'MinBid',\n `${potentialBidChange}`,\n true\n );\n GtmService.push({\n event: 'bidPlacedEvent',\n itemId: `${itemId}`,\n placedBidId: `${bidId}`,\n bidValue: `${transactionTotal}`\n });\n break;\n }\n GtmService.trackAction(\n CATEGORIES.BIDDING,\n 'Show',\n validationCode,\n '0',\n true\n );\n};\n\nexport const trackWishlist = (itemId, isAdding) => {\n const action = isAdding ? 'Added to wish list' : 'Removed from wish list';\n const label = isAdding\n ? `Added item: ${itemId}`\n : `Removed item: ${itemId}`;\n GtmService.trackAction('View item', action, label);\n};\n\nexport const trackAddToCart = (sellerMemberAlias, fixedPrice, redirectUrl) =>\n GtmService.trackLinkClickAndGotoUrl(\n CATEGORIES.CART,\n 'Add to cart',\n `Added ${sellerMemberAlias}`,\n redirectUrl,\n fixedPrice\n );\n\nconst defaultClientId = '2ab8b9da-aeb2-4790-86cf-bd1cd3c51453';\nexport const getGaTrackingData = (\n isGoogleAnalyticsImprovedTrackingEnabled,\n googleAnalyticsTrackingId,\n isHybridAppContextForIos,\n isHybridAppContextForAndroid,\n appInstanceId,\n sessionId\n) => {\n const trackingPlatform = isHybridAppContextForIos\n ? 'ios'\n : isHybridAppContextForAndroid\n ? 'android'\n : 'web';\n\n if (isGoogleAnalyticsImprovedTrackingEnabled) {\n return {\n clientId:\n window?.ga?.getAll?.()[0]?.get('clientId') || defaultClientId,\n trackingIds:\n typeof googleAnalyticsTrackingId !== 'undefined'\n ? [googleAnalyticsTrackingId]\n : [],\n platform: trackingPlatform,\n appInstanceId,\n sessionId\n };\n }\n\n /* global gaData */\n return {\n clientId: window?.ga?.getAll?.()[0]?.get('clientId') || defaultClientId,\n trackingIds:\n typeof gaData !== 'undefined' ? [Object.keys(gaData)[1]] : [],\n //TODO: Will this work with web views in app?\n platform: trackingPlatform,\n appInstanceId\n };\n};\n","import { toLocalizedRiotUrl } from 'tradera/utils/language';\nimport { toLocalizedUrl } from 'tradera/utils/url';\nimport { getHistory } from 'tradera/utils/history';\n\nconst goToStart = function () {\n getHistory().push(toLocalizedRiotUrl('/selling/'));\n};\n\nconst goToPublished = function (itemId) {\n getHistory().push(toLocalizedRiotUrl('/selling/published/' + itemId));\n};\n\nconst goToVIP = function (itemId) {\n window.location.href = toLocalizedUrl('/item/' + itemId);\n};\n\nconst setDraftUrlWithoutReload = function (draftId) {\n window.history.replaceState(\n {},\n document.title,\n toLocalizedRiotUrl('/selling/draft/' + draftId)\n );\n};\n\nexport default {\n goToStart,\n goToPublished,\n goToVIP,\n setDraftUrlWithoutReload\n};\n","import { nullifyUndefinedProperties } from 'tradera/utils/object';\nimport { capitalize } from 'tradera/utils/string';\nimport {\n SUPPORTED_LANGUAGES,\n DEFAULT_LANGUAGE\n} from 'tradera/lang/constants.mjs';\nimport type { Language } from './types';\n\nconst getInitialPreferredLanguage = (\n languageCodeIso2: string,\n availableLanguages: Language[],\n defaultLanguage: Language\n) => {\n const availableIsoCodes = availableLanguages.map(\n (lang) => lang.languageCodeIso2\n );\n if (\n !!languageCodeIso2 &&\n availableIsoCodes.indexOf(languageCodeIso2) !== -1\n ) {\n return availableLanguages.find(\n (l) => l.languageCodeIso2 === languageCodeIso2\n );\n }\n\n return defaultLanguage;\n};\n\nconst getLanguageDisplayName = (languageCodeIso2: string) =>\n capitalize(\n // Only works on server side, lacks good browser support\n new Intl.DisplayNames([languageCodeIso2], { type: 'language' }).of(\n languageCodeIso2\n )\n );\n\nexport const getInitialServerLanguage = ({\n preferredLanguage = DEFAULT_LANGUAGE,\n memberCountryCodeIso2 = null,\n automaticTranslationPreference = false\n}) => {\n const defaultLanguage = {\n languageCodeIso2: preferredLanguage,\n displayName: getLanguageDisplayName(preferredLanguage)\n };\n const availableLanguages = SUPPORTED_LANGUAGES.map((languageCodeIso2) => ({\n languageCodeIso2,\n displayName: getLanguageDisplayName(languageCodeIso2)\n }));\n\n return {\n preferred: getInitialPreferredLanguage(\n preferredLanguage,\n availableLanguages,\n defaultLanguage\n ),\n available: availableLanguages,\n memberCountryCodeIso2,\n automaticTranslationPreference\n };\n};\n\n// KATS: this should probably be in a large \"InitData\" type\ntype InitDataSubSetForLanguage = {\n defaultLanguage: Language;\n availableLanguages: Language[];\n languageCodeIso2: string;\n memberCountryCodeIso2: string;\n automaticTranslationPreference: boolean;\n};\n\nexport default (initData: InitDataSubSetForLanguage) => {\n const result = nullifyUndefinedProperties({\n preferred: getInitialPreferredLanguage(\n initData.languageCodeIso2,\n initData.availableLanguages || [],\n initData.defaultLanguage\n ),\n memberCountryCodeIso2: initData.memberCountryCodeIso2,\n available: initData.availableLanguages,\n automaticTranslationPreference: initData.automaticTranslationPreference\n });\n return result;\n};\n","/* eslint-disable better-mutation/no-mutation */\n\nimport { createSlice } from '@reduxjs/toolkit';\nimport getInitialState, { getInitialServerLanguage } from './initial-state';\n\ntype Language = {\n languageCodeIso2?: string;\n displayName?: string;\n languageCodeIso3?: string;\n};\n\ntype LanguageState = {\n preferred?: Language;\n available?: Language[];\n automaticTranslationPreference?: boolean;\n memberCountryCodeIso2?: string | null;\n};\n\nconst languageSlice = createSlice({\n name: 'language',\n initialState: {} as LanguageState,\n reducers: {\n initialize: (_state, { payload }) => {\n return getInitialState(payload);\n },\n initServerLanguage: (_state, { payload }) => {\n return getInitialServerLanguage(payload);\n },\n setPreferred: (state, action) => {\n state.preferred =\n state.available?.find(\n (language) => language.languageCodeIso2 === action.payload\n ) || {};\n },\n setAutomaticTranslationPreference: (state, { payload }) => {\n state.automaticTranslationPreference =\n payload.automaticTranslationPreference;\n }\n }\n});\n\nexport const {\n initialize,\n initServerLanguage,\n setPreferred,\n setAutomaticTranslationPreference\n} = languageSlice.actions;\nexport default languageSlice.reducer;\n","export const selectShippingConfirmation = (state) =>\n state.views.shippingCheckout.shippingConfirmation;\n\nexport const selectShippingCheckout = (state) => state.views.shippingCheckout;\n\nexport const selectShipping = (state) => state.views.shippingCheckout.shipping;\n\nexport const selectItemWithoutShipment = (state) =>\n state.views.shippingCheckout.itemWithoutShipment;\n\nexport const selectShipment = (state, shipmentId) =>\n state.views.shippingCheckout?.shipments?.find(\n (shipment) => shipment.shipmentId === shipmentId\n );\n\nexport const selectShippingPayment = (state) =>\n state.views.shippingCheckout.payment;\n\nexport const selectCheckoutSummary = (state) =>\n state.views.shippingCheckout.checkoutSummary;\n\nexport const selectSellerPhoneNumber = (state) =>\n state.views.shippingCheckout.sellerPhoneNumber;\n","import type { Storage } from 'tradera/utils/storage';\nimport { localStore } from 'tradera/utils/storage';\n\ntype ResultSetRow = {\n key: string;\n value: T;\n timestamp: string;\n expires: string;\n};\n\ntype ResultSetResult = ResultSetRow[] & {\n orderByTimestamp?: () => ResultSetResult;\n orderByValue?: () => ResultSetResult;\n orderByExpire?: () => ResultSetResult;\n};\n\nclass ResultSet {\n private _result: ResultSetResult;\n constructor(result: ResultSetRow[]) {\n this._result = result;\n this._result.orderByTimestamp = this.orderByTimestamp.bind(this);\n this._result.orderByValue = this.orderByValue.bind(this);\n this._result.orderByExpire = this.orderByExpire.bind(this);\n }\n\n get() {\n return this._result;\n }\n\n _orderBy(orderProp: keyof ResultSetRow) {\n function orderByProp(a: ResultSetRow, b: ResultSetRow) {\n if (a[orderProp] === b[orderProp]) {\n return 0;\n }\n\n return a[orderProp] < b[orderProp] ? 1 : -1;\n }\n\n return this._result.sort(orderByProp);\n }\n\n orderByTimestamp() {\n return this._orderBy('timestamp');\n }\n\n orderByValue() {\n return this._orderBy('value');\n }\n\n orderByExpire() {\n return this._orderBy('expires');\n }\n}\n\ntype StorageServiceOptions = {\n datastore?: Storage;\n};\n\n// KATS: since this is TS now we can likely make a couple of internal functions etc \"private\"...that will make it more useful from a TS perspective (public api etc) and something that C# devs can relate to I guess ;)\nclass StorageService {\n namespace: string;\n datastore: Storage;\n constructor(namespace = 'default', options: StorageServiceOptions = {}) {\n this.namespace = namespace;\n this.datastore = options.datastore || localStore;\n }\n\n getDataSafe() {\n return this.datastore.getItem(this.namespace) || {};\n }\n\n store(data: unknown) {\n this.datastore.setItem(this.namespace, data);\n return true;\n }\n\n remove(key: string) {\n const data = this.getDataSafe(),\n encodedKey = encodeURI(key).toLowerCase();\n\n this.purge(encodedKey, data);\n }\n\n purge(key: string, data: Record) {\n delete data[key];\n this.store(data);\n return true;\n }\n\n get(key: string) {\n const data = this.getDataSafe(),\n encodedKey = encodeURI(key).toLowerCase();\n\n if (\n data[encodedKey] &&\n data[encodedKey].expires &&\n data[encodedKey].expires < new Date().getTime()\n ) {\n this.purge(encodedKey, data);\n }\n\n return ((data[encodedKey] && data[encodedKey].value) as TValue) ?? null;\n }\n\n set(key: string, value: unknown, expires?: Date, timestamp?: Date) {\n const data = this.getDataSafe();\n const encodedKey = encodeURI(key).toLowerCase();\n\n const newData = {\n expires: (expires && expires.getTime()) || null,\n timestamp:\n (timestamp && timestamp.getTime()) || new Date().getTime(),\n value: value\n };\n\n this.datastore.setItem(this.namespace, {\n ...data,\n [encodedKey]: newData\n });\n\n return newData || null;\n }\n\n // KATS: can this removed?\n removeExpired() {\n const data = this.getDataSafe();\n\n for (const prop in data) {\n if (data.hasOwnProperty(prop)) {\n if (\n data[prop].expires &&\n data[prop].expires < new Date().getTime()\n ) {\n this.purge(prop, data);\n }\n }\n }\n }\n\n fetch(): ResultSetResult {\n const data = this.getDataSafe();\n const rows: ResultSetRow[] = [];\n\n for (const prop in data) {\n if (data.hasOwnProperty(prop)) {\n rows.push({\n key: decodeURI(prop),\n value: data[prop].value,\n timestamp: data[prop].timestamp,\n expires: data[prop].expires\n });\n }\n }\n\n return new ResultSet(rows).get();\n }\n\n flush() {\n return this.datastore.clearByPrefix(this.namespace);\n }\n}\n\nexport default StorageService;\n","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 183 50\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"svg928507484a\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19.3 10h163v40h-163z\"\n})), /*#__PURE__*/React.createElement(\"path\", {\n clipRule: \"evenodd\",\n d: \"M41.3 33c0-3.3 1.5-6.7 3.8-9 2.6-2.5 4.2-6.1 4.2-10A14.04 14.04 0 0029.8 1.1C25.7 2.9 16.4 4 11.8 4 5.5 4 .3 9.1.3 15.5c0 4.1 2.2 7.7 5.4 9.8 2.5 1.5 4.6 4.8 4.6 7.7 0 8.3 6.9 15 15.5 15s15.5-6.7 15.5-15z\",\n fill: \"#e4ddee\",\n fillRule: \"evenodd\"\n}), /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#svg928507484a)\",\n fill: \"#151515\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M31 10c2.2 0 4.1.4 5.6 1.1 1.6.8 2.8 1.8 3.7 3.2s1.3 3.1 1.3 5.1-.4 3.6-1.3 5.1c-.9 1.4-2.1 2.5-3.7 3.3s-3.5 1.1-5.6 1.1h-6.8v11.2h-4.9V10zm-.8 14.7c2.2 0 3.8-.4 4.8-1.3s1.5-2.2 1.5-3.9-.5-3.1-1.5-4-2.6-1.3-4.8-1.3h-6v10.6zM64.8 36.9c-1.1 0-1.7-.6-1.7-1.7V25c0-1.9-.4-3.4-1.2-4.6s-1.9-2.1-3.3-2.7-3-.9-4.9-.9c-2.7 0-4.9.6-6.6 1.7s-2.8 2.6-3.4 4.5l4.1 1.7c.5-1.4 1.2-2.5 2.2-3.1s2.2-1 3.5-1c1.5 0 2.6.4 3.5 1.3.8.8 1.3 2 1.3 3.5v.9L50 28c-2.1.4-3.6 1.1-4.8 2.2a5.73 5.73 0 00-1.7 4.2c0 1.4.3 2.5 1 3.5.7.9 1.6 1.6 2.7 2.1 1.2.5 2.4.7 3.9.7 1.2 0 2.3-.2 3.5-.6 1.1-.4 2.1-1 3-1.7.3-.3.6-.7.9-1 .1.4.3.8.5 1.1.4.7 1.1 1.3 1.8 1.6.8.3 1.7.5 2.6.5 1.1 0 2-.2 2.7-.5l.3-3.4c-.5.1-1.1.2-1.6.2zm-7.1-2.8c-.3.7-.8 1.2-1.4 1.6s-1.2.7-2 .9c-.7.2-1.5.3-2.2.3-1.1 0-2-.2-2.6-.8-.7-.5-1-1.2-1-2 0-.9.3-1.6 1-2 .6-.5 1.6-.8 2.9-1.1l5.8-1.2v1.9c0 .9-.2 1.7-.5 2.4z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M87.5 17.3L77.4 42.9c-.7 1.8-1.4 3.2-2.2 4.2s-1.7 1.8-2.7 2.2c-1 .5-2.2.7-3.5.7-1.1 0-2.1-.1-3.1-.4-.9-.3-1.8-.7-2.5-1.2l1.2-3.8c.6.5 1.2.9 1.9 1.1s1.4.4 2.1.4c.8 0 1.6-.2 2.2-.7.7-.4 1.3-1.3 1.8-2.6l1-2.5-2.4-5.7L64 17.3h5.5l5.1 14.4 1.3 4.3 1.5-4.7 4.8-13.9zM109.1 20.6c-.8-1.2-1.8-2.2-3.1-2.8s-2.8-.9-4.4-.9c-1.3 0-2.4.2-3.6.6-1.1.4-2.1 1-2.9 1.9-.5.6-1 1.2-1.3 2l-.2-4h-4.4v22.9h4.9V28c0-1.7.3-3.1.9-4.2.6-1 1.4-1.8 2.4-2.3.9-.5 1.9-.7 2.9-.7 1.4 0 2.6.4 3.5 1.3s1.4 2.4 1.4 4.7v13.3h4.9V25.4c.2-2-.2-3.5-1-4.8zM124.9 16.9c2.2 0 4.2.5 5.9 1.4s3.1 2.3 4 4.1c1 1.8 1.4 3.9 1.4 6.4s-.5 4.6-1.4 6.4c-1 1.8-2.3 3.1-4 4.1-1.7.9-3.7 1.4-5.9 1.4s-4.2-.5-5.9-1.4-3.1-2.3-4-4.1c-1-1.8-1.5-3.9-1.5-6.4s.5-4.6 1.5-6.4 2.3-3.1 4-4.1c1.6-1 3.6-1.4 5.9-1.4zm0 3.8c-1.4 0-2.6.3-3.5.9-1 .6-1.7 1.5-2.2 2.7s-.8 2.7-.8 4.4.3 3.2.8 4.4 1.3 2.1 2.2 2.7c1 .6 2.1.9 3.5.9s2.5-.3 3.5-.9c.9-.6 1.7-1.5 2.2-2.7s.8-2.7.8-4.4-.3-3.2-.8-4.4-1.3-2.1-2.2-2.7c-1-.6-2.2-.9-3.5-.9zM154.3 17.3h5.2l-9.2 22.9h-5.4l-9.2-22.9h5.4l6.5 18.6zM180.7 36.9c-1.1 0-1.7-.6-1.7-1.7V25c0-1.9-.4-3.4-1.2-4.6s-1.9-2.1-3.3-2.7-3-.9-4.9-.9c-2.7 0-4.9.6-6.6 1.7s-2.8 2.6-3.4 4.5l4.1 1.7c.5-1.4 1.2-2.5 2.2-3.1s2.2-1 3.5-1c1.5 0 2.6.4 3.5 1.3.8.8 1.3 2 1.3 3.5v.9L166 28c-2.1.4-3.6 1.1-4.8 2.2a5.73 5.73 0 00-1.7 4.2c0 1.4.3 2.5 1 3.5.7.9 1.6 1.6 2.7 2.1 1.2.5 2.4.7 3.9.7 1.2 0 2.3-.2 3.5-.6 1.1-.4 2.1-1 3-1.7.3-.3.6-.7.9-1 .1.4.3.8.5 1.1.4.7 1.1 1.3 1.8 1.6s1.7.5 2.6.5c1.1 0 2-.2 2.7-.5l.3-3.4c-.6.1-1.1.2-1.7.2zm-7.1-2.8c-.3.7-.8 1.2-1.4 1.6s-1.2.7-2 .9c-.7.2-1.5.3-2.2.3-1.1 0-2-.2-2.6-.8-.7-.5-1-1.2-1-2 0-.9.3-1.6 1-2 .6-.5 1.6-.8 2.9-1.1l5.8-1.2v1.9c0 .9-.1 1.7-.5 2.4z\"\n}))));","/* eslint-disable better-mutation/no-mutation */\n\nimport cookieUtil from 'tradera/utils/cookie';\nimport { MYTRADERA_DEFAULT_COOKIES } from 'tradera/constants/cookies';\nimport { logger } from 'packages/logger';\nimport { createSlice } from '@reduxjs/toolkit';\n\nconst defaultState = () => {\n const defaultCookies = {};\n Object.keys(MYTRADERA_DEFAULT_COOKIES).forEach((value) => {\n const val = cookieUtil.readCookie(MYTRADERA_DEFAULT_COOKIES[value].key);\n defaultCookies[value] = val\n ? val\n : MYTRADERA_DEFAULT_COOKIES[value].default;\n });\n return defaultCookies;\n};\n\nconst cookiesSlice = createSlice({\n name: 'cookies',\n initialState: defaultState(),\n reducers: {\n setCookie: {\n reducer: (state, { payload }) => {\n if (state[payload.name] !== payload.value) {\n state[payload.name] = payload.value;\n }\n },\n prepare: (payload) => {\n const { length, key } = MYTRADERA_DEFAULT_COOKIES[payload.name];\n try {\n cookieUtil.createCookie(key, payload.value, length);\n } catch (e) {\n logger(e);\n }\n return { payload };\n }\n }\n }\n});\n\nexport default cookiesSlice.reducer;\n\nexport const { setCookie } = cookiesSlice.actions;\n\nexport const selectCookiesState = (state) => state.views.myTradera.cookies;\n","export const selectRouterState = (state) => state.router;\n","import { createSlice } from '@reduxjs/toolkit';\nimport { isDenmarkCountryCode } from 'tradera/localization/countrycode';\nimport initData from 'init-data';\n\nconst initialState = {\n shortDescription: null,\n validationError: null,\n descriptionLanguageCodeIso2: null,\n isDescriptionLanguageCodeIso2ChangeAvailable:\n initData &&\n initData.memberCountryCodeIso2 &&\n isDenmarkCountryCode(initData.memberCountryCodeIso2) &&\n initData.featureSwitches &&\n initData.featureSwitches['danish-description']\n};\n\nconst getValidationError = (state) => {\n if (!state.shortDescription || state.shortDescription.trim() === '') {\n return 'syi_validation_missing_title';\n }\n\n if (\n state.isDescriptionLanguageCodeIso2ChangeAvailable &&\n !state.descriptionLanguageCodeIso2\n ) {\n return 'syi_validation_missing_descriptionLanguageCodeIso2';\n }\n};\n\nconst validate = (state) => ({\n ...state,\n validationError: getValidationError(state)\n});\n\nconst shortDescriptionSlice = createSlice({\n name: 'shortDescription',\n initialState,\n reducers: {\n setShortDescription: (state, action) =>\n validate({ ...state, shortDescription: action.payload }),\n resetShortDescription: (state) =>\n validate({ ...state, shortDescription: null }),\n setDescriptionLanguageCodeIso2: (state, action) =>\n validate({\n ...state,\n descriptionLanguageCodeIso2: action.payload\n })\n }\n});\n\nexport const {\n setShortDescription,\n resetShortDescription,\n setDescriptionLanguageCodeIso2\n} = shortDescriptionSlice.actions;\n\nexport default shortDescriptionSlice.reducer;\n","export default {\n DEFAULT_ACTION: 'member/default',\n INITIALIZE: 'MEMBER/INITIALIZE',\n SET_IS_FETCHING_GEOLOCATION: 'MEMBER/SET_IS_FETCHING_GEOLOCATION',\n SET_GEOLOCATION: 'MEMBER/SET_GEOLOCATION',\n FAILED_LOADING_GEOLOCATION: 'MEMBER/FAILED_LOADING_GEOLOCATION',\n SET_MEMBER_HERO_IMAGE: 'MEMBER/SET_MEMBER_HERO_IMAGE'\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nconst TraderaLogo = ({ width, height, className, style, ...otherProps }) => (\n \n Tradera\n \n \n);\nTraderaLogo.propTypes = {\n width: PropTypes.number,\n height: PropTypes.number,\n className: PropTypes.string,\n style: PropTypes.object\n};\nTraderaLogo.defaultProps = {\n width: 120,\n className: ''\n};\n\nexport default React.memo(TraderaLogo);\n","import { PAGE_LIST_TYPES, PAGE_BULK_ACTIONS } from '../constants/list-types';\n\n/**\n * @param {string} listType\n * @param {object} item\n * @returns {object} 'Bulk Actions' available for the specific list\n */\n\nexport const listActions = (\n listType,\n memberId,\n selectedFilterBar,\n count = 0,\n t\n) => {\n const actions = {\n [PAGE_LIST_TYPES.SELLER_ACTIVE]: () => {\n switch (selectedFilterBar) {\n default:\n return {\n isCheckboxActive: (item) =>\n item && item.bidInformation.bidCount === 0,\n bulkCssClass: 'outline-dark',\n label: t('myt_action_cancelListingsLabel'),\n bulkAction: PAGE_BULK_ACTIONS.ACTIVE_CANCEL,\n modal: {\n icon: 'warning',\n heading: t(\n 'myt_action_cancelListingsModalHeading',\n { count: count, itemCount: count }\n ),\n message: t(\n 'myt_action_cancelListingsModalMessage',\n { count: count }\n ),\n confirmButtonText: t(\n 'myt_action_cancelListingsModalConfirmButtonText'\n ),\n cancelButtonText: t(\n 'myt_action_cancelListingsModalCancelButtonText'\n ),\n dismissable: true\n },\n idType: 'itemId'\n };\n }\n },\n\n [PAGE_LIST_TYPES.SELLER_NOT_SOLD]: () => {\n switch (selectedFilterBar) {\n default:\n return {\n isCheckboxActive: (item) => {\n if (!item) {\n return false;\n }\n if (item.listing.restart.hasRestartedChild) {\n return false;\n }\n return !item.isArchived;\n },\n /*\n * @todo: confirm this\n */\n bulkCssClass: 'outline-dark',\n label: t('myt_action_restartListingsLabel'),\n bulkAction: PAGE_BULK_ACTIONS.UNSOLD_RESTART,\n modal: {\n heading: t(\n 'myt_action_restartListingsModalHeading',\n { count: count, itemCount: count }\n ),\n dismissable: true,\n wide: true,\n confirmButtonText: t(\n 'myt_action_restartListingsModalConfirmButtonText'\n ),\n cancelButtonText: t(\n 'myt_action_restartListingsModalCancelButtonText'\n ),\n headingCSS: 'messaging-modal-title-with-line',\n messageAlignment: 'left',\n cssClass: false\n },\n idType: 'itemId'\n };\n }\n },\n\n [PAGE_LIST_TYPES.BUYER_ACTIVE_ITEMS]: () => {\n switch (selectedFilterBar) {\n case 'BuyerHidden':\n return {\n isCheckboxActive: (item) => {\n return (\n (item &&\n item.caller.leadingBidRemoved === true) ||\n (item.bidInformation.leadingBidder &&\n item.bidInformation.leadingBidder.id !==\n memberId)\n );\n },\n bulkCssClass: 'outline-dark',\n label: t(\n 'myt_action_showBuyerHiddenActiveListingsLabel'\n ),\n bulkAction: PAGE_BULK_ACTIONS.BUYER_SHOW_ACTIVE,\n modal: {\n heading: t(\n 'myt_action_showBuyerHiddenActiveListingsModalHeading',\n { count: count, itemCount: count }\n ),\n message: t(\n 'myt_action_showBuyerHiddenActiveListingsModalMessage',\n { count: count }\n ),\n dismissable: true,\n wide: false,\n confirmButtonText: t(\n 'myt_action_showBuyerHiddenActiveListingsModalConfirmButtonText'\n ),\n cancelButtonText: t(\n 'myt_action_showBuyerHiddenActiveListingsModalCancelButtonText'\n ),\n icon: 'warning',\n headingCSS: 'messaging-modal-title',\n messageAlignment: 'center',\n cssClass: false\n }\n };\n case 'BuyerNotHidden':\n return {\n isCheckboxActive: (item) => {\n return (\n (item &&\n item.caller?.leadingBidRemoved === true) ||\n (item.bidInformation.leadingBidder &&\n (item.bidInformation.leadingBidder.id !==\n memberId ||\n item.reservePriceReached === false))\n );\n },\n bulkCssClass: 'outline-dark',\n label: t('myt_action_hideListingsLabel'),\n bulkAction: PAGE_BULK_ACTIONS.BUYER_HIDE_ACTIVE,\n modal: {\n heading: t('myt_action_hideListingsModalHeading', {\n count: count,\n itemCount: count\n }),\n dismissable: true,\n wide: false,\n icon: 'warning',\n confirmButtonText: t(\n 'myt_action_hideListingsModalConfirmButtonText'\n ),\n cancelButtonText: t(\n 'myt_action_hideListingsModalCancelButtonText'\n ),\n message: t('myt_action_hideListingsModalMessage', {\n count: count\n }),\n headingCSS: 'messaging-modal-title',\n messageAlignment: 'center',\n cssClass: false\n }\n };\n default:\n return undefined;\n }\n },\n\n [PAGE_LIST_TYPES.BUYER_PURCHASES]: () => {\n switch (selectedFilterBar) {\n case 'AllPurchases':\n case 'BuyerNotPaid':\n return {\n isCheckboxActive: (item) =>\n item &&\n item.transaction &&\n item.transaction.buyerState &&\n item.transaction.buyerState.paid !== true,\n bulkCssClass: 'outline-dark',\n label: t('myt_action_markListingsAsPaidLabel'),\n bulkAction: PAGE_BULK_ACTIONS.BUYER_MARK_PAID,\n modal: {\n heading: t(\n 'myt_action_markListingsAsPaidModalHeading',\n { count: count, itemCount: count }\n ),\n message: '',\n dismissable: true,\n wide: false,\n confirmButtonText: t(\n 'myt_action_markListingsAsPaidModalConfirmButtonText'\n ),\n cancelButtonText: t(\n 'myt_action_markListingsAsPaidModalCancelButtonText'\n ),\n icon: 'warning',\n headingCSS: 'messaging-modal-title',\n messageAlignment: 'center',\n cssClass: false\n }\n };\n case 'BuyerHidden':\n return {\n isCheckboxActive: () => {\n return true;\n // return item && (item.caller.leadingBidRemoved === true) || (item.bidInformation.leadingBidder && item.bidInformation.leadingBidder.id !== memberId) ? true : false;\n },\n bulkCssClass: 'outline-dark',\n label: t('myt_action_showBuyerHiddenPurchasesLabel'),\n bulkAction: PAGE_BULK_ACTIONS.PURCHASES_SHOW,\n modal: {\n heading: t(\n 'myt_action_showBuyerHiddenPurchasesModalHeading',\n { count: count, itemCount: count }\n ),\n message: t(\n 'myt_action_showBuyerHiddenPurchasesModalMessage',\n { count: count }\n ),\n dismissable: true,\n wide: false,\n confirmButtonText: t(\n 'myt_action_showBuyerHiddenPurchasesModalConfirmButtonText'\n ),\n cancelButtonText: t(\n 'myt_action_showBuyerHiddenPurchasesModalCancelButtonText'\n ),\n icon: 'warning',\n headingCSS: 'messaging-modal-title',\n messageAlignment: 'center',\n cssClass: false\n }\n };\n default:\n return undefined;\n }\n },\n\n [PAGE_LIST_TYPES.BUYER_ITEMS_LOST]: () => {\n switch (selectedFilterBar) {\n case 'ItemsLostNotHidden':\n return {\n isCheckboxActive: () => true,\n bulkCssClass: 'outline-dark',\n label: t('myt_action_hideListingsLabel'),\n bulkAction: PAGE_BULK_ACTIONS.BUYER_HIDE_ACTIVE,\n modal: {\n heading: t('myt_action_hideListingsModalHeading', {\n count: count,\n itemCount: count\n }),\n dismissable: true,\n wide: false,\n icon: 'warning',\n confirmButtonText: 'Ja',\n cancelButtonText: 'Nej',\n message: t('myt_action_hideListingsModalMessage', {\n count: count\n }),\n headingCSS: 'messaging-modal-title',\n messageAlignment: 'center',\n cssClass: false\n }\n };\n case 'ItemsLostHidden':\n return {\n isCheckboxActive: () => true,\n bulkCssClass: 'outline-dark',\n label: t(\n 'myt_action_showBuyerHiddenActiveListingsLabel'\n ),\n bulkAction: PAGE_BULK_ACTIONS.BUYER_SHOW_ACTIVE,\n modal: {\n heading: t(\n 'myt_action_showBuyerHiddenActiveListingsModalHeading',\n { count: count, itemCount: count }\n ),\n message: t(\n 'myt_action_showBuyerHiddenActiveListingsModalMessage',\n { count: count }\n ),\n dismissable: true,\n wide: false,\n confirmButtonText: t(\n 'myt_action_showBuyerHiddenActiveListingsModalConfirmButtonText'\n ),\n cancelButtonText: t(\n 'myt_action_showBuyerHiddenActiveListingsModalCancelButtonText'\n ),\n icon: 'warning',\n headingCSS: 'messaging-modal-title',\n messageAlignment: 'center',\n cssClass: false\n }\n };\n default:\n return undefined;\n }\n },\n\n default: () => ({})\n };\n\n return actions[listType] ? actions[listType]() : actions['default']();\n};\n","import { push, replace } from 'connected-react-router';\nimport qs from 'qs';\nimport {\n error,\n searching,\n selectMyTraderaState\n} from 'tradera/apps/my-tradera/app/state/reducers/my-tradera';\nimport purchaseOrderActions from './purchase-order';\nimport { endItems } from '../../helpers/item-actions-helper';\nimport { logger } from 'packages/logger';\nimport Analytics from 'packages/analytics';\nimport { getAvailableQueryParams } from '../../helpers/route-helper';\nimport URLS from '../../constants/urls';\nimport fetch from '../../utils/fetch';\nimport featureToggles from '../../utils/feature-toggles';\nimport { selectCookiesState } from 'tradera/apps/my-tradera/app/state/reducers/cookies';\nimport { selectFiltersState } from 'tradera/apps/my-tradera/app/state/selectors/filters';\nimport { selectMyTraderaItemsState } from 'tradera/apps/my-tradera/app/state/reducers/my-tradera-items';\nimport { selectRouterState } from 'tradera/apps/my-tradera/app/state/selectors/router';\nimport { scrollToInitialScroll } from 'tradera/apps/my-tradera/app/state/actions/scroll-to-initial-scroll';\nimport { webApiClient } from 'tradera/utils/http';\n\n/**\n * @param {function} dispatch dispatch redux action\n * @param {err} error error relayed from asynch call\n */\nconst handleError = (dispatch, e) => {\n dispatch(searching(false));\n dispatch(error(true));\n logger(e);\n};\n\nconst actionTypes = {\n BUYER_ACTIVE_ITEMS_HIDE: 'BUYER_ACTIVE_ITEMS_HIDE',\n BUYER_ACTIVE_ITEMS_SHOW: 'BUYER_ACTIVE_ITEMS_SHOW',\n UPDATE_ITEMS: 'UPDATE_ITEMS',\n COMPLETED_SEARCH: 'COMPLETED_SEARCH',\n OPEN_MORE: 'OPENED_MORE_BUTTON_DROPDOWN',\n SELECT_ITEM: 'SELECT_ITEM_CHECKBOX',\n SELECT_ALL_ITEMS: 'SELECT_ALL_ITEMS',\n REMOVE_ITEMS: 'REMOVE_ITEMS',\n OPEN_DEL_LISTING_ITEM: 'OPEN_DELETE_LISTING_ITEM',\n REMOVE_ALL_SELECTED: 'REMOVE_ALL_SELECTED_CHECKBOXES',\n UPDATE_ITEMS_WITH_ERROR: 'UPDATED_ALL_ITEMS_DUE_TO_ERROR',\n PURCHASE_ORDERS_MARKED_AS_PAID_BY_SELLER:\n 'PURCHASE_ORDERS_MARKED_AS_PAID_BY_SELLER',\n PURCHASE_ORDERS_MARKED_AS_PAID_BY_BUYER:\n 'PURCHASE_ORDERS_MARKED_AS_PAID_BY_BUYER',\n PURCHASE_ORDERS_UNMARKED_AS_PAID_BY_SELLER:\n 'PURCHASE_ORDERS_UNMARKED_AS_PAID_BY_SELLER',\n PURCHASE_ORDERS_UNMARKED_AS_PAID_BY_BUYER:\n 'PURCHASE_ORDERS_UNMARKED_AS_PAID_BY_BUYER',\n PURCHASE_ORDERS_HIDDEN_BY_SELLER: 'PURCHASE_ORDERS_HIDDEN_BY_SELLER',\n PURCHASE_ORDERS_HIDDEN_BY_BUYER: 'PURCHASE_ORDERS_HIDDEN_BY_BUYER',\n PURCHASE_ORDERS_SHOWN_BY_SELLER: 'PURCHASE_ORDERS_SHOWN_BY_SELLER',\n PURCHASE_ORDERS_SHOWN_BY_BUYER: 'PURCHASE_ORDERS_SHOWN_BY_BUYER',\n ITEM_HIDDEN: 'ITEM_HIDDEN',\n ITEM_SHOWN: 'ITEM_SHOWN',\n PURCHASE_ORDERS_MARKED_AS_SHIPPED_BY_SELLER:\n 'PURCHASE_ORDERS_MARKED_AS_SHIPPED_BY_SELLER',\n PURCHASE_ORDERS_UNMARKED_AS_SHIPPED_BY_SELLER:\n 'PURCHASE_ORDERS_UNMARKED_AS_SHIPPED_BY_SELLER',\n PURCHASE_ORDERS_UNMARKED_AS_SHIPPING_BOOKED:\n 'PURCHASE_ORDERS_UNMARKED_AS_SHIPPING_BOOKED',\n PURCHASE_ORDERS_MARKED_AS_SHIPPING_BOOKED:\n 'PURCHASE_ORDERS_MARKED_AS_SHIPPING_BOOKED',\n SHIPMENT_DELETED: 'SHIPMENT_DELETED',\n FEEDBACK_LEFT_BY_SELLER: 'FEEDBACK_LEFT_BY_SELLER',\n FEEDBACK_LEFT_BY_BUYER: 'FEEDBACK_LEFT_BY_BUYER',\n RESET_ITEMS: 'RESET_ITEMS',\n SET_RESTARTED: 'SET_RESTARTED',\n SET_NEW_SHIPPING_PRICE: 'SET_NEW_SHIPPING_PRICE'\n};\n\nconst updateItems = (\n value,\n page,\n listViewType,\n memberMessagingParticipation\n) => ({\n type: actionTypes.UPDATE_ITEMS,\n payload: {\n value,\n page,\n listViewType,\n memberMessagingParticipation\n }\n});\n\nconst updateItemsWithError = () => ({\n type: actionTypes.UPDATE_ITEMS_WITH_ERROR\n});\n\nconst openMore = (itemId, pageName = false) => {\n if (pageName) {\n Analytics.trackEvent({\n category: pageName,\n action: 'Toggle',\n label: 'More'\n });\n }\n\n return {\n type: actionTypes.OPEN_MORE,\n payload: itemId\n };\n};\n\nconst selectItem = (itemId, listViewType, selectedFilterBar) => ({\n type: actionTypes.SELECT_ITEM,\n payload: {\n id: itemId,\n listViewType,\n selectedFilterBar\n }\n});\n\nconst resetSelectedCheckboxes = () => ({\n type: actionTypes.REMOVE_ALL_SELECTED\n});\n\nconst selectAllItems = (select, listViewType, selectedFilterBar, memberId) => ({\n type: actionTypes.SELECT_ALL_ITEMS,\n payload: {\n select,\n listViewType,\n selectedFilterBar,\n memberId\n }\n});\n\nconst removeItems = (itemIds) => ({\n type: actionTypes.REMOVE_ITEMS,\n payload: itemIds\n});\n\nconst updateURL = (url) => (dispatch, getState) => {\n const state = getState();\n const locationDescriptor = {\n pathname: url,\n search: qs.stringify(getAvailableQueryParams(state))\n };\n\n if (!window.location.search) {\n dispatch(replace(locationDescriptor));\n } else {\n dispatch(push(locationDescriptor));\n }\n};\n\nconst purchaseOrdersMarkAsPaidBySeller = (\n purchaseOrderIds,\n listViewType,\n messagingParticipation\n) => ({\n type: actionTypes.PURCHASE_ORDERS_MARKED_AS_PAID_BY_SELLER,\n payload: {\n ids: purchaseOrderIds,\n listViewType,\n messagingParticipation\n }\n});\n\nconst purchaseOrdersMarkAsPaidByBuyer = (purchaseOrderIds, listViewType) => ({\n type: actionTypes.PURCHASE_ORDERS_MARKED_AS_PAID_BY_BUYER,\n payload: {\n ids: purchaseOrderIds,\n listViewType: listViewType\n }\n});\n\nconst purchaseOrdersUnmarkAsPaidBySeller = (\n purchaseOrderIds,\n listViewType,\n messagingParticipation\n) => ({\n type: actionTypes.PURCHASE_ORDERS_UNMARKED_AS_PAID_BY_SELLER,\n payload: {\n ids: purchaseOrderIds,\n listViewType,\n messagingParticipation\n }\n});\n\nconst purchaseOrdersUnmarkAsPaidByBuyer = (purchaseOrderIds, listViewType) => ({\n type: actionTypes.PURCHASE_ORDERS_UNMARKED_AS_PAID_BY_BUYER,\n payload: {\n ids: purchaseOrderIds,\n listViewType: listViewType\n }\n});\n\nconst transactionsMarkAsShippedBySeller = (transactionIds, listViewType) => ({\n type: actionTypes.PURCHASE_ORDERS_MARKED_AS_SHIPPED_BY_SELLER,\n payload: {\n ids: transactionIds,\n listViewType: listViewType\n }\n});\n\nconst transactionsUnmarkAsShippedBySeller = (transactionIds, listViewType) => ({\n type: actionTypes.PURCHASE_ORDERS_UNMARKED_AS_SHIPPED_BY_SELLER,\n payload: {\n ids: transactionIds,\n listViewType: listViewType\n }\n});\n\nconst transactionsMarkAsShippingBooked = (transactionIds, listViewType) => ({\n type: actionTypes.PURCHASE_ORDERS_MARKED_AS_SHIPPING_BOOKED,\n payload: {\n ids: transactionIds,\n listViewType: listViewType\n }\n});\n\nconst transactionsUnmarkAsShippingBooked = (transactionIds, listViewType) => ({\n type: actionTypes.PURCHASE_ORDERS_UNMARKED_AS_SHIPPING_BOOKED,\n payload: {\n ids: transactionIds,\n listViewType: listViewType\n }\n});\n\nconst transactionDeleteShipment = (purchaseOrderId, listViewType) => ({\n type: actionTypes.SHIPMENT_DELETED,\n payload: {\n purchaseOrderId,\n listViewType\n }\n});\n\nconst buyerActiveItemsHide = (itemIds, listViewType) => ({\n type: actionTypes.BUYER_ACTIVE_ITEMS_HIDE,\n payload: {\n ids: itemIds,\n listViewType: listViewType\n }\n});\n\nconst buyerActiveItemsShow = (itemIds, listViewType) => ({\n type: actionTypes.BUYER_ACTIVE_ITEMS_SHOW,\n payload: {\n ids: itemIds,\n listViewType: listViewType\n }\n});\n\nconst purchaseOrdersHiddenBySeller = (purchaseOrderIds, listViewType) => ({\n type: actionTypes.PURCHASE_ORDERS_HIDDEN_BY_SELLER,\n payload: {\n ids: purchaseOrderIds,\n listViewType: listViewType\n }\n});\n\nconst transactionsHiddenByBuyer = (transactionIds, listViewType) => ({\n type: actionTypes.PURCHASE_ORDERS_HIDDEN_BY_BUYER,\n payload: {\n ids: transactionIds,\n listViewType: listViewType\n }\n});\n\nconst purchaseOrdersShownBySeller = (purchaseOrderIds, listViewType) => ({\n type: actionTypes.PURCHASE_ORDERS_SHOWN_BY_SELLER,\n payload: {\n ids: purchaseOrderIds,\n listViewType: listViewType\n }\n});\n\nconst transactionsShownByBuyer = (transactionIds, listViewType) => ({\n type: actionTypes.PURCHASE_ORDERS_SHOWN_BY_BUYER,\n payload: {\n ids: transactionIds,\n listViewType: listViewType\n }\n});\n\nconst unsoldItemsHidden = (itemIds, listViewType) => ({\n type: actionTypes.ITEM_HIDDEN,\n payload: {\n ids: itemIds,\n listViewType: listViewType\n }\n});\n\nconst unsoldItemsShown = (itemIds, listViewType) => ({\n type: actionTypes.ITEM_SHOWN,\n payload: {\n ids: itemIds,\n listViewType: listViewType\n }\n});\n\nconst feedbackLeftBySeller = (transactionId, listViewType) => ({\n type: actionTypes.FEEDBACK_LEFT_BY_SELLER,\n payload: {\n id: transactionId,\n listViewType: listViewType\n }\n});\n\nconst feedbackLeftByBuyer = (transactionId, listViewType) => ({\n type: actionTypes.FEEDBACK_LEFT_BY_BUYER,\n payload: {\n id: transactionId,\n listViewType: listViewType\n }\n});\n\nconst resetMyTraderaItems = () => ({\n type: actionTypes.RESET_ITEMS\n});\n\nconst cancelItem = (item) => (dispatch) => {\n dispatch(searching(true));\n endItems([item.itemId])\n .then((response) => {\n if (response && response.itemId) {\n dispatch(removeItems(response.itemId));\n }\n dispatch(resetSelectedCheckboxes());\n dispatch(searching(false));\n return;\n })\n .catch((error) => handleError(dispatch, error));\n};\n\nconst setRestarted = (itemIds, listViewType) => ({\n type: actionTypes.SET_RESTARTED,\n payload: {\n itemIds: itemIds,\n listViewType: listViewType\n }\n});\n\n/**\n * Tmp function until backend has changed its api\n * Manipulate paging params before sending to API;\n * @param {object} params - current state.filters.modifiers;\n */\nconst changeParamsForBackend = (params) => {\n const skip =\n params.paging && params.paging.page > 0\n ? (params.paging.page - 1) * params.paging.size\n : 0;\n const take =\n params.paging && params.paging.page > 0 ? params.paging.size * 1 : 25;\n\n const newPaging = {\n skip: skip < 0 ? 0 : skip,\n take: take\n };\n\n return {\n ...params,\n paging: newPaging\n };\n};\n\nconst runSearch =\n (\n page,\n shouldScrollToInitialScroll = false,\n listViewType,\n waitForBackend = false,\n dontModifyHistory = true\n ) =>\n async (dispatch, getState) => {\n if (!featureToggles.isMyTraderaElasticEnabled) {\n return;\n }\n\n const endPoint = page && page.searchUrl;\n\n if (!endPoint) {\n return;\n }\n\n const search = async () => {\n const state = getState();\n\n dispatch(searching(true));\n dispatch(error(false));\n dispatch(purchaseOrderActions.resetPurchaseOrder());\n dispatch(resetMyTraderaItems());\n dispatch(resetSelectedCheckboxes());\n\n try {\n const modifiers = selectFiltersState(state).modifiers;\n\n const routeBefore = getState().router.location.pathname;\n\n const data = await fetch(endPoint, {\n body: JSON.stringify(changeParamsForBackend(modifiers))\n });\n\n const routeAfter = getState().router.location.pathname;\n const routeHasChanged = routeAfter !== routeBefore;\n\n if (!routeHasChanged) {\n dispatch(\n updateItems(\n data,\n page.pageName,\n listViewType,\n selectMyTraderaState(state)\n .memberMessagingParticipation\n )\n );\n }\n\n if (shouldScrollToInitialScroll === true) {\n scrollToInitialScroll();\n }\n dispatch(searching(false));\n return dispatch(error(false));\n } catch (error) {\n dispatch(updateItemsWithError());\n if (dontModifyHistory === false) {\n updateURL(\n dispatch,\n page.url,\n selectFiltersState(state).modifiers\n );\n }\n handleError(dispatch, error);\n }\n };\n\n // This is a hack to enable delay of searches since sometimes when modifying an item\n // outside of the SPA world, it could take some time for the backend to catch up\n if (waitForBackend === true) {\n setTimeout(search, 3000);\n } else {\n search();\n }\n };\n\nconst rebuildList = () => (dispatch, getState) => {\n const existingState = { ...selectMyTraderaItemsState(getState()) };\n if (!existingState.itemsByID) {\n return dispatch(error(true));\n }\n const state = getState();\n\n const pageName =\n selectMyTraderaState(state).page &&\n selectMyTraderaState(state).page[\n selectRouterState(state).location.pathname\n ] &&\n selectMyTraderaState(state).page[\n selectRouterState(state).location.pathname\n ].pageName;\n const items = existingState.itemsOrderedByID.map(\n (i) => existingState.itemsByID[i]\n );\n const newState = {\n currentTime: existingState.currentTime,\n paging: existingState.paging,\n statistics: existingState.statistics,\n items: items\n };\n dispatch(\n updateItems(\n newState,\n pageName,\n selectCookiesState(getState()).LIST_VIEW_TYPE\n )\n );\n};\n\n// From the more-menu\nconst buyerActiveItemsHideItems = (itemIds) => (dispatch) => {\n dispatch(searching(true));\n fetch(URLS.BUYER_ACTIVE_ITEMS_HIDE, {\n body: JSON.stringify({ ids: itemIds })\n })\n .then(() => {\n dispatch(error(false));\n dispatch(removeItems(itemIds));\n dispatch(searching(false));\n return;\n })\n .catch((error) => handleError(dispatch, error));\n};\n\n// From the more-menu\nconst buyerActiveItemsShowItems = (itemIds) => (dispatch) => {\n dispatch(searching(true));\n fetch(URLS.BUYER_ACTIVE_ITEMS_SHOW, {\n body: JSON.stringify({ ids: itemIds })\n })\n .then(() => {\n dispatch(error(false));\n dispatch(removeItems(itemIds));\n dispatch(searching(false));\n return;\n })\n .catch((error) => handleError(dispatch, error));\n};\n\nconst markPurchaseOrdersAsPaidBySeller =\n (purchaseOrderIds, listViewType, messagingParticipation) => (dispatch) => {\n dispatch(searching(true));\n fetch(URLS.SELLER_MARK_PAID, {\n body: JSON.stringify({ ids: purchaseOrderIds })\n })\n .then(() => {\n dispatch(error(false));\n dispatch(\n purchaseOrdersMarkAsPaidBySeller(\n purchaseOrderIds,\n listViewType,\n messagingParticipation\n )\n );\n dispatch(searching(false));\n return;\n })\n .catch((error) => handleError(dispatch, error));\n };\n\nconst markPurchaseOrdersAsPaidByBuyer =\n (purchaseOrderIds, listViewType) => (dispatch) => {\n dispatch(searching(true));\n fetch(URLS.BUYER_MARK_PAID, {\n body: JSON.stringify({ ids: purchaseOrderIds })\n })\n .then(() => {\n dispatch(error(false));\n dispatch(\n purchaseOrdersMarkAsPaidByBuyer(\n purchaseOrderIds,\n listViewType\n )\n );\n dispatch(searching(false));\n return;\n })\n .catch((error) => handleError(dispatch, error));\n };\n\nconst unmarkPurchaseOrdersAsPaidBySeller =\n (purchaseOrderIds, listViewType, messagingParticipation) => (dispatch) => {\n dispatch(searching(true));\n fetch(URLS.SELLER_UNMARK_PAID, {\n body: JSON.stringify({ ids: purchaseOrderIds })\n })\n .then(() => {\n dispatch(error(false));\n dispatch(\n purchaseOrdersUnmarkAsPaidBySeller(\n purchaseOrderIds,\n listViewType,\n messagingParticipation\n )\n );\n dispatch(searching(false));\n return;\n })\n .catch((error) => handleError(dispatch, error));\n };\n\nconst unmarkPurchaseOrdersAsPaidByBuyer =\n (purchaseOrderIds, listViewType) => (dispatch) => {\n dispatch(searching(true));\n fetch(URLS.BUYER_UNMARK_PAID, {\n body: JSON.stringify({ ids: purchaseOrderIds })\n })\n .then(() => {\n dispatch(error(false));\n dispatch(\n purchaseOrdersUnmarkAsPaidByBuyer(\n purchaseOrderIds,\n listViewType\n )\n );\n dispatch(searching(false));\n return;\n })\n .catch((error) => handleError(dispatch, error));\n };\n\nconst sellingUnmarkAsShippingBooked =\n (purchaseOrderIds, listViewType, transactionIds) => (dispatch) => {\n dispatch(searching(true));\n fetch(URLS.UNMARK_BOOKED, {\n body: JSON.stringify({ ids: purchaseOrderIds })\n })\n .then(() => {\n dispatch(error(false));\n dispatch(\n transactionsUnmarkAsShippingBooked(\n transactionIds,\n listViewType\n )\n );\n dispatch(searching(false));\n return;\n })\n .catch((error) => handleError(dispatch, error));\n };\n\nconst sellingMarkAsShippingBooked =\n (purchaseOrderId, listViewType, transactionIds) => (dispatch) => {\n dispatch(searching(true));\n webApiClient\n .post('/member/selling/item-shipping-booked', {\n purchaseOrderId,\n booked: true\n })\n .then(() => {\n dispatch(error(false));\n dispatch(\n transactionsMarkAsShippingBooked(\n transactionIds,\n listViewType\n )\n );\n dispatch(searching(false));\n return;\n })\n .catch((error) => handleError(dispatch, error));\n };\n\nconst sellingDeleteShipment =\n (shipmentId, purchaseOrderId, listViewType) => (dispatch) => {\n dispatch(searching(true));\n fetch(URLS.DELETE_SHIPMENT, {\n body: JSON.stringify({ shipmentId: shipmentId })\n })\n .then(() => {\n dispatch(error(false));\n dispatch(\n transactionDeleteShipment(purchaseOrderId, listViewType)\n );\n dispatch(searching(false));\n return;\n })\n .catch((error) => handleError(dispatch, error));\n };\n\nconst sellingMarkAsShipped = (transactionIds, listViewType) => (dispatch) => {\n dispatch(searching(true));\n fetch(URLS.MARK_SHIPPED, {\n body: JSON.stringify({ ids: transactionIds })\n })\n .then(() => {\n dispatch(error(false));\n dispatch(\n transactionsMarkAsShippedBySeller(transactionIds, listViewType)\n );\n dispatch(searching(false));\n return;\n })\n .catch((error) => handleError(dispatch, error));\n};\n\nconst sellingUnmarkAsShipped = (transactionIds, listViewType) => (dispatch) => {\n dispatch(searching(true));\n\n fetch(URLS.UNMARK_SHIPPED, {\n body: JSON.stringify({ ids: transactionIds })\n })\n .then(() => {\n dispatch(error(false));\n dispatch(\n transactionsUnmarkAsShippedBySeller(\n transactionIds,\n listViewType\n )\n );\n dispatch(searching(false));\n return;\n })\n .catch((error) => handleError(dispatch, error));\n};\n\nconst sellerUnhideTransaction =\n (purchaseOrderIds, listViewType) => (dispatch) => {\n dispatch(searching(true));\n fetch(URLS.SELLER_SHOW, {\n body: JSON.stringify({ ids: purchaseOrderIds })\n })\n .then(() => {\n dispatch(error(false));\n dispatch(\n purchaseOrdersShownBySeller(purchaseOrderIds, listViewType)\n );\n dispatch(searching(false));\n return;\n })\n .catch((error) => handleError(dispatch, error));\n };\n\nconst buyerUnhideTransaction = (transactionIds, listViewType) => (dispatch) => {\n dispatch(searching(true));\n fetch(URLS.BUYER_SHOW, {\n body: JSON.stringify({ ids: transactionIds })\n })\n .then(() => {\n dispatch(error(false));\n dispatch(transactionsShownByBuyer(transactionIds, listViewType));\n dispatch(searching(false));\n return;\n })\n .catch((error) => handleError(dispatch, error));\n};\n\nconst sellerHideTransaction =\n (purchaseOrderIds, listViewType) => (dispatch) => {\n dispatch(searching(true));\n fetch(URLS.SELLER_HIDE, {\n body: JSON.stringify({ ids: purchaseOrderIds })\n })\n .then(() => {\n dispatch(error(false));\n dispatch(\n purchaseOrdersHiddenBySeller(purchaseOrderIds, listViewType)\n );\n dispatch(searching(false));\n return;\n })\n .catch((error) => handleError(dispatch, error));\n };\n\nconst buyerHideTransaction = (transactionIds, listViewType) => (dispatch) => {\n dispatch(searching(true));\n fetch(URLS.BUYER_HIDE, {\n body: JSON.stringify({ ids: transactionIds })\n })\n .then(() => {\n dispatch(error(false));\n dispatch(transactionsHiddenByBuyer(transactionIds, listViewType));\n dispatch(searching(false));\n return;\n })\n .catch((error) => handleError(dispatch, error));\n};\n\nconst sellerUnhideUnsold = (itemIds, listViewType) => (dispatch) => {\n dispatch(searching(true));\n fetch(URLS.UNSOLDSHOW, {\n body: JSON.stringify({ ids: itemIds })\n })\n .then(() => {\n dispatch(error(false));\n dispatch(unsoldItemsShown(itemIds, listViewType));\n dispatch(searching(false));\n return;\n })\n .catch((error) => handleError(dispatch, error));\n};\n\nconst sellerHideUnsold = (itemIds, listViewType) => (dispatch) => {\n dispatch(searching(true));\n fetch(URLS.UNSOLDHIDE, {\n body: JSON.stringify({ ids: itemIds })\n })\n .then(() => {\n dispatch(error(false));\n dispatch(unsoldItemsHidden(itemIds, listViewType));\n dispatch(searching(false));\n return;\n })\n .catch((error) => handleError(dispatch, error));\n};\n\nconst setNewShippingPrice = (purchaseOrderId, shippingProvider, newPrice) => ({\n type: actionTypes.SET_NEW_SHIPPING_PRICE,\n purchaseOrderId,\n shippingProvider,\n newPrice\n});\n\nexport default {\n resetMyTraderaItems,\n transactionsUnmarkAsShippedBySeller,\n transactionsMarkAsShippedBySeller,\n handleError,\n actionTypes,\n cancelItem,\n buyerActiveItemsHide,\n buyerActiveItemsShow,\n buyerActiveItemsHideItems, // More menu\n buyerActiveItemsShowItems, // More menu\n updateItems,\n resetSelectedCheckboxes,\n openMore,\n updateURL,\n runSearch,\n selectItem,\n removeItems,\n selectAllItems,\n markPurchaseOrdersAsPaidBySeller,\n unmarkPurchaseOrdersAsPaidBySeller,\n rebuildList,\n sellerUnhideTransaction,\n sellerHideTransaction,\n sellerUnhideUnsold,\n sellerHideUnsold,\n sellingMarkAsShippingBooked,\n sellingMarkAsShipped,\n sellingUnmarkAsShipped,\n sellingUnmarkAsShippingBooked,\n sellingDeleteShipment,\n feedbackLeftBySeller,\n feedbackLeftByBuyer,\n markPurchaseOrdersAsPaidByBuyer,\n unmarkPurchaseOrdersAsPaidByBuyer,\n buyerUnhideTransaction,\n buyerHideTransaction,\n setRestarted,\n setNewShippingPrice,\n purchaseOrdersMarkAsPaidBySeller,\n purchaseOrdersUnmarkAsPaidBySeller,\n purchaseOrdersMarkAsPaidByBuyer,\n purchaseOrdersUnmarkAsPaidByBuyer,\n changeParamsForBackend\n};\n","import { v4 as uuidv4 } from 'uuid';\n\nexport const getUuid = () => uuidv4();\n\n// Export object for Sinon stubbing\nexport default {\n getUuid\n};\n","import api from './api';\nimport { createAsyncThunk } from '@reduxjs/toolkit';\nimport { logger } from 'packages/logger';\nimport utils from './utils';\nimport {\n selectInvoiceCheckout,\n selectInvoiceOngoingPayment,\n selectInvoicePayment,\n selectSellerPhoneNumber\n} from './selector';\nimport {\n setCheckoutSummaryFetching,\n openPaymentModal,\n closePaymentModal,\n setPaymentMethodData,\n resetOngoingPaymentAttempt\n} from './reducer';\nimport { CHECKOUT_ERRORS } from 'tradera/helpers/checkout-errors';\nimport {\n MODAL_TYPE,\n MODAL_STATUS,\n PAYMENT_OPTIONS\n} from 'tradera/state/views/invoice-checkout/initial-state';\nimport { paymentInstance } from 'tradera/apps/my-tradera/invoice-checkout/payment/braintree-drop-in';\nimport {\n selectMemberCountryCodeIso2,\n selectMemberEmail,\n selectMemberFirstName,\n selectMemberLastName\n} from 'tradera/state/member/selectors';\n\nexport const getInvoice = createAsyncThunk(\n 'invoiceCheckout/getInvoice',\n async ({ invoiceId }, thunkAPI) => {\n try {\n const result = await api.getInvoice(invoiceId);\n\n return result.data;\n } catch (error) {\n logger(error);\n return thunkAPI.rejectWithValue(error);\n }\n }\n);\n\n// Payment\n\nexport const getPaymentOptions = createAsyncThunk(\n 'invoiceCheckout/getPaymentOptions',\n async (invoiceId, thunkAPI) => {\n try {\n const { data } = await api.getPaymentOptions(invoiceId);\n return data;\n } catch (error) {\n logger(error);\n return thunkAPI.rejectWithValue(error);\n }\n }\n);\n\nconst sleep = (delay) => new Promise((resolve) => setTimeout(resolve, delay));\n\nconst PAYMENT_STATUS = {\n AUTHORIZED: 'Authorized',\n AWAITING_SWISH: 'AwaitingExternalAuthentication',\n CANCELLED: 'Cancelled',\n CANCELLING: 'Cancelling',\n CANCELLING_FAILED: 'CancellingFailed',\n COMPLETING: 'Completing',\n COMPLETING_FAILED: 'CompletingFailed',\n DECLINED: 'Declined',\n FAILED: 'Failed',\n INIT: 'Initializing',\n INIT_COMPLETE: 'Initialized',\n INIT_FAILED: 'InitializationFailed',\n SETTLED: 'Settled'\n};\n\n// eslint-disable-next-line no-control-regex\nconst containsNonPrintableAscii = (value) => value.match(/[^\\x00-\\x7F]/g);\n\nconst createThreeDSecureParameters = (getState) => {\n const currentState = getState();\n const { amountOwed: totalCost } = selectInvoiceCheckout(currentState);\n const memberFirstName = selectMemberFirstName(currentState);\n const firstName = containsNonPrintableAscii(memberFirstName)\n ? null\n : memberFirstName;\n const memberLastName = selectMemberLastName(currentState);\n const lastName = containsNonPrintableAscii(memberLastName)\n ? null\n : memberLastName;\n\n const buyerAddress = {\n countryCodeAlpha2: selectMemberCountryCodeIso2(currentState),\n phoneNumber: selectSellerPhoneNumber(currentState)?.replace(\n /[^\\d]/g,\n ''\n )\n };\n return {\n amount: totalCost,\n email: selectMemberEmail(currentState),\n billingAddress: {\n givenName: firstName,\n surname: lastName,\n ...buyerAddress\n },\n additionalInformation: {\n shippingGivenName: firstName,\n shippingSurname: lastName,\n shippingAddress: buyerAddress\n }\n };\n};\n\nexport const initBraintreePayment =\n (paymentOption, onComplete) => async (dispatch, getState) => {\n let requestOptions = {};\n\n if (\n paymentOption === PAYMENT_OPTIONS.VISA_MASTERCARD ||\n paymentOption === PAYMENT_OPTIONS.GOOGLEPAY\n ) {\n requestOptions = {\n threeDSecure: createThreeDSecureParameters(getState)\n };\n }\n\n dispatch(setCheckoutSummaryFetching(true));\n\n try {\n if (paymentInstance) {\n const data = await paymentInstance.requestPaymentMethod(\n requestOptions\n );\n dispatch(setPaymentMethodData(data));\n } else {\n throw { message: CHECKOUT_ERRORS.NO_PAYMENT_METHOD };\n }\n return dispatch(initPayment(onComplete));\n } catch (error) {\n return Promise.reject(error);\n }\n };\n\nexport const initPayment = (onComplete) => async (dispatch, getState) => {\n const currentState = getState();\n\n const { invoicePaymentAttemptId } =\n selectInvoiceOngoingPayment(currentState);\n const { selectedPayment, paymentMethodData } =\n selectInvoicePayment(currentState);\n const { invoiceId } = selectInvoiceCheckout(currentState);\n\n dispatch(closePaymentModal());\n dispatch(setCheckoutSummaryFetching(true));\n\n try {\n const paymentAttemptId = invoicePaymentAttemptId || utils.getUuid();\n\n if (!invoicePaymentAttemptId) {\n const formData = {\n invoicePaymentAttemptId: paymentAttemptId,\n invoiceId,\n paymentMethod: selectedPayment,\n paymentMethodData\n };\n await api.initializePayment(formData);\n }\n\n //POST successful? then start polling:\n return dispatch(\n checkPaymentStatus(paymentAttemptId, selectedPayment, onComplete)\n );\n } catch (error) {\n return Promise.reject(error);\n }\n};\n\nexport const cancelPayment = async (invoicePaymentAttemptId) => {\n const formData = {\n invoicePaymentAttemptId\n };\n\n try {\n await api.cancelPayment(formData);\n } catch (error) {\n return Promise.reject(error);\n }\n};\n\nexport const completePayment =\n (paymentAttemptId, paymentMethod, onComplete) => async (dispatch) => {\n const formData = {\n paymentAttemptId\n };\n\n try {\n await api.completePayment(formData);\n\n //POST successful? then start polling again:\n return dispatch(\n checkPaymentStatus(paymentAttemptId, paymentMethod, onComplete)\n );\n } catch (error) {\n return Promise.reject(error);\n }\n };\n\nexport const checkPaymentStatus =\n (paymentAttemptId, paymentMethod, onComplete) =>\n async (dispatch, getState) => {\n const { modal } = selectInvoicePayment(getState());\n\n let poll = true;\n\n try {\n const paymentStatus = await api.getPaymentStatus(paymentAttemptId);\n\n const { data } = paymentStatus;\n\n switch (data?.status) {\n case PAYMENT_STATUS.AUTHORIZED:\n case PAYMENT_STATUS.COMPLETING:\n case PAYMENT_STATUS.INIT:\n case PAYMENT_STATUS.CANCELLING:\n poll = true;\n break;\n case PAYMENT_STATUS.AWAITING_SWISH:\n poll = true;\n if (!modal.open) {\n dispatch(\n openPaymentModal({\n open: MODAL_TYPE.SWISH_HANDEL,\n status: MODAL_STATUS.START,\n paymentAttemptId\n })\n );\n }\n break;\n case PAYMENT_STATUS.INIT_COMPLETE:\n poll = false;\n return dispatch(\n completePayment(\n paymentAttemptId,\n paymentMethod,\n onComplete\n )\n );\n case PAYMENT_STATUS.SETTLED:\n poll = false;\n dispatch(closePaymentModal());\n dispatch(setCheckoutSummaryFetching(false));\n onComplete();\n break;\n case PAYMENT_STATUS.DECLINED:\n poll = false;\n dispatch(closePaymentModal());\n dispatch(resetOngoingPaymentAttempt());\n dispatch(setCheckoutSummaryFetching(false));\n return Promise.reject(new Error(CHECKOUT_ERRORS.DECLINED));\n case PAYMENT_STATUS.CANCELLED:\n poll = false;\n dispatch(closePaymentModal());\n dispatch(resetOngoingPaymentAttempt());\n dispatch(setCheckoutSummaryFetching(false));\n break;\n case PAYMENT_STATUS.COMPLETING_FAILED:\n case PAYMENT_STATUS.FAILED:\n case PAYMENT_STATUS.INIT_FAILED:\n case PAYMENT_STATUS.CANCELLING_FAILED:\n poll = false;\n dispatch(closePaymentModal());\n dispatch(resetOngoingPaymentAttempt());\n dispatch(setCheckoutSummaryFetching(false));\n return Promise.reject(\n new Error(`Payment error: ${data?.status}`)\n );\n default:\n dispatch(closePaymentModal());\n poll = false;\n }\n } catch (error) {\n poll = false;\n return Promise.reject(error);\n }\n\n if (poll) {\n await sleep(1500);\n return dispatch(\n checkPaymentStatus(paymentAttemptId, paymentMethod, onComplete)\n );\n }\n };\n","import fetch from '../utils/fetch';\nimport URLS from '../constants/urls';\nexport const types = {\n LINK: 'LINK',\n EXTERNAL_LINK: 'EXTERNAL_LINK',\n EXTERNAL_LINK_ICON: 'EXTERNAL_LINK_ICON',\n DISPATCH: 'DISPATCH',\n DISABLED: 'DISABLED'\n};\n\n/**\n * Converts Array to string for FormData;\n * @param {array} ids array of ids to send to backend\n */\nconst getBodyStringFromIDs = (ids) => {\n let bodyString = '';\n if (ids) {\n ids.forEach((id, pos) => {\n // eslint-disable-next-line better-mutation/no-mutation\n bodyString += `${pos > 0 ? '&' : ''}ids=${id}`;\n });\n }\n return bodyString;\n};\n\n/**\n * Headers to be set on 'fetch' requests for FormData\n * We should remove FormData posts\n */\nconst formHeaders = {\n 'X-Requested-With': 'XmlHtpRequest',\n 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',\n 'Content-Disposition': 'form-data'\n};\n\n/**\n * Get Restart Items Summary\n * @param {array} ids\n * @returns {promise} fetch promise returned;\n */\nexport const restartItemsSummary = (ids) =>\n fetch(URLS.ACTIVE_ITEMS_RESTART_SUMMARY, {\n body: JSON.stringify({ ids: ids })\n });\n\n/**\n * End Items\n * @param {array} ids 'selectedCheckboxes in state'\n * @returns {promise} fetch promise returned;\n */\nexport const endItems = (ids) =>\n fetch(URLS.ACTIVE_END_ITEMS, {\n body: `${getBodyStringFromIDs(ids)}&filter=all`,\n headers: formHeaders\n });\n\n/**\n * Show Items in Purchases list\n * @param {array} ids 'selectedCheckboxes in state'\n * @returns {promise} fetch promise returned;\n */\nexport const showPurchases = (ids) =>\n fetch(URLS.BUYER_SHOW, {\n body: `${getBodyStringFromIDs(ids)}&filter=all`,\n headers: formHeaders\n });\n\n/**\n * Show Items\n * @param {array} ids 'selectedCheckboxes in state'\n * @returns {promise} fetch promise returned;\n */\nexport const showActive = (ids) =>\n fetch(URLS.BUYER_ACTIVE_ITEMS_SHOW, {\n body: `${getBodyStringFromIDs(ids)}&filter=all`,\n headers: formHeaders\n });\n\n/**\n * Hide Items\n * @param {array} ids 'selectedCheckboxes in state'\n * @returns {promise} fetch promise returned;\n */\nexport const hideActive = (ids) =>\n fetch(URLS.BUYER_ACTIVE_ITEMS_HIDE, {\n body: `${getBodyStringFromIDs(ids)}&filter=all`,\n headers: formHeaders\n });\n\n/**\n * Restart Items\n * @param {array} ids 'selectedCheckboxes in state'\n * @returns {promise} fetch promise returned;\n */\nexport const restartItems = (ids) =>\n fetch(URLS.UNSOLD_RESTART_ITEMS, {\n body: `${getBodyStringFromIDs(ids)}&filter=all`,\n headers: formHeaders\n });\n\n/**\n * Mark Paid\n * @param {array} ids 'selectedCheckboxes in state'\n * @returns {promise} fetch promise returned;\n */\nexport const markPaid = (ids) =>\n fetch(URLS.BUYER_MARK_PAID, {\n body: `${getBodyStringFromIDs(ids)}&filter=all`,\n headers: formHeaders\n });\n","export default {\n setError: (propertyName, error) => ({\n type: 'SET_ERROR',\n propertyName: propertyName,\n error: error\n })\n};\n","/* eslint-disable better-mutation/no-mutation */\n\nimport draftActions from './draft-actions';\nimport syiActions from './syi-actions';\nimport { logger } from 'packages/logger';\nimport { getSyiSlice } from 'tradera/apps/syi/state/selectors/syi';\nimport errorActions from 'tradera/apps/syi/state/actions/error-actions';\nimport { openAddPhoto } from 'tradera/apps/syi/services/native-app-service';\nimport imageUploadService from 'tradera/apps/syi/services/image-upload-service';\nimport { throttledFetchImageAttributeSuggestions } from './attributes-actions';\nimport { getDefaultImageData } from '../helpers/image-helpers';\n\nconst MAX_IMAGES_FOR_IMAGE_TO_COLORS = 2;\n\nconst setDraftImages = (images) => (dispatch) => {\n dispatch({\n type: 'SET_DRAFT_IMAGES',\n payload: images\n });\n\n dispatch(draftActions.updateDraftCanBeResumed());\n\n const removeNullAndUndefinedFilter = (n) => n;\n const draftImageIds = images\n .slice(0, MAX_IMAGES_FOR_IMAGE_TO_COLORS)\n .map((image) => image.draftImage?.imageId)\n .filter(removeNullAndUndefinedFilter);\n if (draftImageIds.length > 0) {\n dispatch(throttledFetchImageAttributeSuggestions(draftImageIds));\n }\n};\n\nconst setUploadedImageInNextFreeSlot =\n (imageId, imageUrl) => (dispatch, getState) => {\n var slots = getSyiSlice(getState()).images.slots;\n var freeSlotIndex = -1;\n for (var i = 0; i < slots.length; i++) {\n if (!slots[i].imageId) {\n freeSlotIndex = i;\n break;\n }\n }\n if (freeSlotIndex > -1) {\n dispatch({\n type: 'SET_UPLOADED_IMAGE_IN_SLOT',\n slotIndex: freeSlotIndex,\n imageUrl: imageUrl,\n imageId: imageId\n });\n if (freeSlotIndex < MAX_IMAGES_FOR_IMAGE_TO_COLORS) {\n handleAttributeSuggestionsForSlot(dispatch, slots);\n }\n }\n dispatch(draftActions.updateDraftCanBeResumed());\n };\n\nconst setUploadedImageInImageSlot =\n (slotIndex, imageId, imageUrl) => (dispatch, getState) => {\n dispatch({\n type: 'SET_UPLOADED_IMAGE_IN_SLOT',\n slotIndex: slotIndex,\n imageUrl: imageUrl,\n imageId: imageId\n });\n if (slotIndex < MAX_IMAGES_FOR_IMAGE_TO_COLORS) {\n var slots = getSyiSlice(getState()).images.slots;\n handleAttributeSuggestionsForSlot(dispatch, slots);\n }\n dispatch(draftActions.updateDraftCanBeResumed());\n };\n\nconst removeImageInSlot = (slotIndex) => (dispatch, getState) => {\n const slots = [...getSyiSlice(getState()).images.slots];\n\n slots.splice(slotIndex, 1);\n\n const newSlots = [\n { ...slots[0] },\n { ...slots[1] },\n { ...slots[2] },\n { ...slots[3] },\n // reset last slot\n getDefaultImageData()\n ];\n\n dispatch({\n type: 'SET_IMAGE_SLOTS',\n slots: newSlots\n });\n\n if (slotIndex < MAX_IMAGES_FOR_IMAGE_TO_COLORS) {\n handleAttributeSuggestionsForSlot(dispatch, newSlots);\n }\n dispatch(draftActions.updateDraftCanBeResumed());\n};\n\nconst changeImagePosition = (from, to) => (dispatch, getState) => {\n var slots = getSyiSlice(getState()).images.slots.map((slot) => ({\n ...slot\n }));\n var slot = slots[from];\n slots.splice(from, 1);\n var len = slots.length;\n var newSlots = [];\n for (var i = 0; i < len; i++) {\n if (i == to) {\n newSlots.push(slot);\n }\n newSlots.push(slots[i]);\n }\n if (to == slots.length) {\n newSlots.push(slot);\n }\n dispatch({\n type: 'SET_IMAGE_SLOTS',\n slots: newSlots\n });\n const isImageToColorImageChanged =\n (from >= MAX_IMAGES_FOR_IMAGE_TO_COLORS &&\n to < MAX_IMAGES_FOR_IMAGE_TO_COLORS) ||\n (to >= MAX_IMAGES_FOR_IMAGE_TO_COLORS &&\n from < MAX_IMAGES_FOR_IMAGE_TO_COLORS);\n if (isImageToColorImageChanged) {\n handleAttributeSuggestionsForSlot(dispatch, newSlots);\n }\n};\n\nconst removeImageWithId = (imageId) => (dispatch, getState) => {\n const slots = getSyiSlice(getState()).images.slots;\n let slotIndex = -1;\n for (var i = slots.length; i-- > 0; ) {\n if (slots[i].imageId === imageId) {\n slotIndex = i;\n break;\n }\n }\n if (slotIndex > -1) {\n dispatch(removeImageInSlot(slotIndex));\n }\n\n dispatch(draftActions.updateDraftCanBeResumed());\n};\n\nconst rotateImage = (slotIndex) => (dispatch, getState) => {\n var slots = getSyiSlice(getState()).images.slots;\n var rotationDegrees = slots[slotIndex].rotationDegrees || 0;\n rotationDegrees += 90;\n if (rotationDegrees === 360) {\n rotationDegrees = 0;\n }\n dispatch({\n type: 'SET_IMAGE_ROTATION',\n slotIndex: slotIndex,\n rotationDegrees: rotationDegrees\n });\n};\n\nconst setUploadFailed = (errorMessage) => (dispatch) => {\n dispatch({\n type: 'SET_IMAGE_UPLOAD_FAILED',\n payload: errorMessage\n });\n};\n\nconst setUploading = (numberOfSlots) => (dispatch) => {\n dispatch({\n type: 'SET_IMAGES_UPLOADING',\n numberOfSlots: numberOfSlots\n });\n};\n\nconst prepareUpload = (selectedFilesCount, freeSlotCount) => (dispatch) => {\n dispatch(errorActions.setError('images', null));\n const numberOfFilesToUpload = Math.min(freeSlotCount, selectedFilesCount);\n dispatch(setUploading(numberOfFilesToUpload));\n};\n\nconst setImageThunk = (freeSlotCount, fileInput, flow) => (dispatch) => {\n const selectedFilesCount = fileInput.files?.length || 1;\n dispatch(prepareUpload(selectedFilesCount, freeSlotCount));\n imageUploadService.uploadFromFileInput(fileInput, freeSlotCount, flow);\n};\n\nclass MissingDraftId extends Error {}\n\nconst nativeAppOpenAddPhotoThunk =\n (saveNowIfQueued) => async (dispatch, getState) => {\n dispatch(setIsUploadingWithApp(true));\n try {\n dispatch(syiActions.disableAutoSave());\n const currentDraftId = getSyiSlice(getState())?.draft?.draftId;\n const draft = await saveNowIfQueued(currentDraftId);\n const draftId = draft?.draftId || currentDraftId;\n if (!draftId) {\n throw new MissingDraftId();\n }\n await openAddPhoto(draftId);\n } catch (error) {\n if (error instanceof MissingDraftId) {\n logger('Missing draftId on app photo upload');\n } else if (!error.request || error.response) {\n // Do not log axios request errors, as they are client dependent (such as offline)\n logger(error);\n }\n dispatch(setUploadFailed('syi_images_photo_with_mobile_error'));\n dispatch(setIsUploadingWithApp(false));\n dispatch(syiActions.enableAutoSave());\n }\n };\n\nconst fetchImagesFromDraft = (draftId, draftSocket) => async (dispatch) => {\n if (!draftId) {\n logger('DraftChanged event missing draft ID');\n }\n const imagesHaveChanged = await dispatch(\n draftActions.loadImagesFromDraft(draftId)\n );\n if (imagesHaveChanged) {\n dispatch(cancelMobileUpload(draftSocket));\n }\n};\n\nconst setIsUploadingWithApp = (isUploadingWithApp) => (dispatch) => {\n dispatch({\n type: 'SET_MOBILE_UPLOAD',\n isUploadingWithApp\n });\n};\n\nconst cancelMobileUpload = (draftSocket) => (dispatch) => {\n draftSocket.disconnect();\n dispatch(setIsUploadingWithApp(false));\n dispatch(syiActions.enableAutoSave());\n};\n\nconst handleAttributeSuggestionsForSlot = (dispatch, slots) => {\n const imageIds = [];\n slots.slice(0, MAX_IMAGES_FOR_IMAGE_TO_COLORS).forEach((slot) => {\n if (slot.imageId && !slot.isListingImage) {\n imageIds.push(slot.imageId);\n }\n });\n if (imageIds.length > 0) {\n dispatch(throttledFetchImageAttributeSuggestions(imageIds));\n } else {\n dispatch({\n type: 'RESET_IMAGE_ATTRIBUTES_SUGGESTIONS'\n });\n }\n};\n\nconst fetchImageAttributeSuggestions = () => (dispatch, getState) => {\n const slots = getSyiSlice(getState()).images.slots;\n handleAttributeSuggestionsForSlot(dispatch, slots);\n};\n\nconst reset = () => (dispatch) => {\n dispatch(setDraftImages([]));\n dispatch(draftActions.updateDraftCanBeResumed());\n};\n\nexport default {\n fetchImageAttributeSuggestions,\n setDraftImages,\n setUploadedImageInNextFreeSlot,\n setUploadedImageInImageSlot,\n removeImageInSlot,\n removeImageWithId,\n changeImagePosition,\n rotateImage,\n setUploadFailed,\n setUploading,\n prepareUpload,\n setImageThunk,\n nativeAppOpenAddPhotoThunk,\n fetchImagesFromDraft,\n cancelMobileUpload,\n setIsUploadingWithApp,\n reset\n};\n","import axios from 'axios';\nimport { toLocalizedRiotUrl } from 'tradera/utils/language';\n\nexport const openAddPhoto = (draftId) => {\n const url = toLocalizedRiotUrl(`/selling/api/native-apps/add-photo`);\n return axios.post(url, {\n draftId\n });\n};\n","/* eslint-disable better-mutation/no-mutation */\n\nimport initData from 'init-data';\nimport { MODAL_STATE } from 'tradera/constants/ui';\nimport TEXT_STRINGS from 'tradera/apps/my-tradera/app/constants/text-strings';\nimport { createSlice } from '@reduxjs/toolkit';\n\nconst initialState = {\n isCombinedShippingEnabled: false,\n isSearching: false,\n page: {},\n error: false,\n initData: {\n environment: initData.environment || '',\n version: initData.environment || '',\n title: initData.title || '',\n description: initData.description || ''\n },\n splitTests: initData.splitTests || null,\n memberAlias: initData ? initData.memberAlias : '',\n memberFirstName: initData ? initData.memberFirstName : '',\n memberId: initData ? initData.memberId : '',\n memberLastName: initData ? initData.memberLastName : '',\n memberCountryCodeIso2: initData ? initData.memberCountryCodeIso2 : null,\n memberMessagingParticipation: false,\n mobileMenu: false,\n mobileActions: false,\n messagingModal: {\n open: MODAL_STATE.CLOSED,\n title: '',\n src: '',\n participating: false,\n recipientId: '',\n item: null\n },\n changeShippingModal: {\n open: false,\n purchaseOrderId: null\n },\n setDiscountModal: {\n open: false,\n purchaseOrderId: null\n }\n};\n\nconst slice = createSlice({\n name: 'my-tradera',\n initialState,\n reducers: {\n setCombinedShippingEnabled: (state, { payload }) => {\n state.isCombinedShippingEnabled = payload;\n },\n searching: (state, { payload }) => {\n state.isSearching = payload;\n },\n error: (state, { payload }) => {\n state.error =\n payload === true ? TEXT_STRINGS.ERRORS.GENERIC : payload;\n },\n openModal: (state, { payload }) => {\n state.openModal = payload;\n },\n setBreakPoint: (state, { payload }) => {\n state.breakpoint = payload;\n },\n mobileMenu: (state, { payload }) => {\n state.mobileMenu =\n payload && payload === false ? false : !state.mobileMenu;\n },\n mobileActions: (state, { payload }) => {\n state.mobileActions =\n payload && payload === false ? false : !state.mobileActions;\n },\n setMemberMessagingParticipation: (state, { payload }) => {\n state.memberMessagingParticipation = payload;\n },\n openChangeShipping: (state, { payload }) => {\n state.changeShippingModal.open = true;\n state.changeShippingModal.purchaseOrderId = payload.purchaseOrderId;\n state.changeShippingModal.receiverCountry =\n payload.receiverCountry || 'SE';\n },\n closeChangeShipping: (state) => {\n state.changeShippingModal.open = false;\n },\n openSetDiscount: (state, { payload }) => {\n state.setDiscountModal.open = true;\n state.setDiscountModal.purchaseOrderId = payload;\n },\n closeSetDiscount: (state) => {\n state.setDiscountModal.open = false;\n },\n setTranslatedRouteInformation: (state, { payload }) => {\n state.page = payload;\n }\n }\n});\n\nexport const selectMyTraderaState = (state) => state.views.myTradera.myTradera;\n\nexport default slice.reducer;\n\nexport const {\n openModal,\n searching,\n error,\n mobileMenu,\n mobileActions,\n setBreakPoint,\n setMemberMessagingParticipation,\n openChangeShipping,\n closeChangeShipping,\n openSetDiscount,\n closeSetDiscount,\n setCombinedShippingEnabled,\n setTranslatedRouteInformation\n} = slice.actions;\n","import { createSlice } from '@reduxjs/toolkit';\nimport cookieUtil from 'tradera/utils/cookie';\nimport {\n WISH_LIST_NOTIFICATION_DISPLAY_COUNT,\n WISH_LIST_NOTIFICATION_HIDDEN\n} from 'tradera/constants/cookies';\n\nconst slice = createSlice({\n name: 'wishListNudge',\n initialState: { wishListNudgeHidden: false },\n reducers: {\n addDisplayCount: {\n reducer: (state, { payload }) => {\n // eslint-disable-next-line better-mutation/no-mutation\n state.wishListNudgeHidden = payload.wishListNudgeHidden;\n },\n prepare: () => {\n const isHidden =\n cookieUtil.readCookie(WISH_LIST_NOTIFICATION_HIDDEN) ===\n 'true';\n if (isHidden) return { payload: { wishListNudgeHidden: true } };\n\n const displayCount =\n (parseInt(\n cookieUtil.readCookie(\n WISH_LIST_NOTIFICATION_DISPLAY_COUNT\n )\n ) || 0) + 1;\n if (displayCount > 3) {\n cookieUtil.createCookie(\n WISH_LIST_NOTIFICATION_HIDDEN,\n true,\n Infinity\n );\n cookieUtil.eraseCookie(\n WISH_LIST_NOTIFICATION_DISPLAY_COUNT\n );\n return { payload: { wishListNudgeHidden: true } };\n }\n\n cookieUtil.createCookie(\n WISH_LIST_NOTIFICATION_DISPLAY_COUNT,\n displayCount,\n Infinity\n );\n return { payload: { wishListNudgeHidden: false } };\n }\n },\n hideWishListNudge: {\n reducer: (state) => {\n // eslint-disable-next-line better-mutation/no-mutation\n state.wishListNudgeHidden = true;\n },\n prepare: () => {\n cookieUtil.createCookie(\n WISH_LIST_NOTIFICATION_HIDDEN,\n true,\n Infinity\n );\n cookieUtil.eraseCookie(WISH_LIST_NOTIFICATION_DISPLAY_COUNT);\n return {};\n }\n }\n }\n});\n\nexport const { addDisplayCount, hideWishListNudge } = slice.actions;\n\nexport const wishListNudge = slice.reducer;\n","import campaignCodeActions from './campaign-code-actions';\nimport { webApiClient } from 'tradera/utils/http';\nimport { selectCategoryAttributes } from '../selectors/attribute-selectors';\nimport { getSyiSlice } from 'tradera/apps/syi/state/selectors/syi';\nimport ThrottledAction from 'tradera/apps/syi/utils/throttled-action';\nimport { logger } from 'packages/logger';\nimport { selectPreferredLanguage } from 'tradera/state/language/selectors';\nimport imageActions from './image-actions';\n\nconst throttleTimeout = 2000;\nconst suggestionsThrottle = new ThrottledAction(throttleTimeout, true);\nconst imageToColorsThrottle = new ThrottledAction(throttleTimeout, false);\n\nconst INPUT_TYPE_MAP = {\n Button: 'button',\n Color: 'color',\n Dropdown: 'dropdown'\n};\n\nconst COLOR_ATTRIBUTE_ID = 2;\n\nconst transformServerOption = (serverOption) => {\n return {\n value:\n typeof serverOption === 'string'\n ? serverOption\n : serverOption.value,\n sortOrder: serverOption.sortOrder,\n isActive: false,\n warningLabel: {\n title:\n serverOption.warningLabel !== undefined &&\n serverOption.warningLabel !== null\n ? serverOption.warningLabel.title\n : null,\n text:\n serverOption.warningLabel !== undefined &&\n serverOption.warningLabel !== null\n ? serverOption.warningLabel.text\n : null\n }\n };\n};\n\nconst transformServerAttribute = (attribute) => {\n return {\n id: attribute.id,\n title: attribute.displayName,\n description: attribute.description,\n sortOrder: attribute.sortOrder,\n backingField: attribute.backingField,\n options: attribute.possibleValues.map(transformServerOption),\n inputType: INPUT_TYPE_MAP[attribute.type],\n isMultiSelect: attribute.isMultiSelect,\n maxNumberOfValues: attribute.maxNumberOfValues,\n minNumberOfValues: attribute.minNumberOfValues,\n numberOfValuesSelected: 0,\n shouldTranslateValues: attribute.shouldTranslateValues,\n preserveOptionsOrder: attribute.preserveOptionsOrder\n };\n};\n\nexport const setAttributesFromDraft = (draft) => (dispatch) => {\n dispatch({\n type: 'SET_DRAFT_ATTRIBUTES',\n payload: draft.attributeValues\n });\n};\n\nexport const reset = () => (dispatch) => {\n dispatch({\n type: 'RESET_ATTRIBUTES'\n });\n};\n\nexport const resetSelectedAttributes = () => (dispatch) => {\n dispatch({\n type: 'RESET_SELECTED_ATTRIBUTES'\n });\n};\n\nexport const fetchForCategory = (categoryId) => async (dispatch, getState) => {\n dispatch(reset());\n\n if (!categoryId) {\n return;\n }\n\n try {\n const { languageCodeIso2 } = selectPreferredLanguage(getState());\n const response = await webApiClient.get(\n `/selling/attributes/?categoryId=${categoryId}&locale=${languageCodeIso2}`\n );\n dispatch({\n type: 'SET_CATEGORY_ATTRIBUTES',\n payload: response.data.attributeDefinitions.map(\n transformServerAttribute\n )\n });\n dispatch(updateCategoryAttributesOptionsStatuses());\n dispatch(campaignCodeActions.validateCampaignCode());\n dispatch(imageActions.fetchImageAttributeSuggestions());\n } catch (error) {\n dispatch(reset());\n throw error;\n }\n};\n\nconst updateCategoryAttributesOptionsStatuses = () => (dispatch) => {\n dispatch({\n type: 'UPDATE_CATEGORY_ATTRIBUTES_OPTIONS_STATUSES'\n });\n};\n\nexport const updateAttribute =\n (attributeId, optionValue, activate, onUpdated) => (dispatch, getState) => {\n const { maxNumberOfValues, numberOfValuesSelected, isMultiSelect } =\n selectCategoryAttributes(getState()).find(\n (a) => a.id === attributeId\n );\n\n if (\n activate &&\n isMultiSelect &&\n maxNumberOfValues === numberOfValuesSelected\n ) {\n return;\n }\n\n dispatch({\n type: 'SET_CATEGORY_ATTRIBUTE_OPTION',\n payload: {\n attributeId,\n optionValue,\n activate\n }\n });\n dispatch(campaignCodeActions.validateCampaignCode());\n if (onUpdated) {\n onUpdated();\n }\n };\n\nexport const resetAttribute = (attributeId) => (dispatch) => {\n dispatch({\n type: 'SET_CATEGORY_ATTRIBUTE_OPTION',\n payload: {\n attributeId,\n activate: false\n }\n });\n dispatch(campaignCodeActions.validateCampaignCode());\n};\n\nexport const throttledFetchCategoryAttributeSuggestions =\n (categoryId, shortDescription) => (dispatch) => {\n const action = () => {\n dispatch(\n fetchCategoryAttributeSuggestions(categoryId, shortDescription)\n );\n };\n suggestionsThrottle.execute(action);\n };\n\nexport const throttledFetchImageAttributeSuggestions =\n (draftImageIds) => (dispatch, getState) => {\n const featureSwitches = getState().environment.featureSwitches;\n const draftCategoryId = getSyiSlice(getState())?.category\n ?.draftCategoryId;\n const categoryAttributes = getSyiSlice(getState())?.attributes\n ?.categoryAttributes;\n const hasColorAttribute =\n categoryAttributes &&\n categoryAttributes.some(\n (attribute) => attribute.backingField === 'color'\n );\n\n if (\n !featureSwitches['syi-image-attribute-suggestions'] ||\n !draftImageIds ||\n draftImageIds.length === 0 ||\n !draftCategoryId ||\n draftCategoryId === 0 ||\n !hasColorAttribute\n ) {\n return;\n }\n const action = () => {\n dispatch(fetchImageAttributeSuggestions(draftImageIds));\n };\n imageToColorsThrottle.execute(action);\n };\n\nexport const resetImageAttributesSuggestions = () => ({\n type: 'RESET_IMAGE_ATTRIBUTES_SUGGESTIONS'\n});\n\nconst fetchImageAttributeSuggestions = (draftImageIds) => async (dispatch) => {\n dispatch(resetImageAttributesSuggestions());\n\n const paramKeyPart = 'imageIds=';\n const query = paramKeyPart + draftImageIds.join(`&${paramKeyPart}`);\n\n try {\n const response = await webApiClient.get(\n `/selling/image-colors?${query}`\n );\n\n const colors = response.data?.colorValues?.map((cv) => cv.color) || [];\n\n dispatch({\n type: 'SET_IMAGE_ATTRIBUTES_SUGGESTIONS',\n payload: {\n suggestedAttributes: [\n {\n id: COLOR_ATTRIBUTE_ID,\n name: 'color',\n values: colors\n }\n ]\n }\n });\n } catch (error) {\n logger(error);\n }\n};\n\nexport const fetchCategoryAttributeSuggestions =\n (categoryId, shortDescription) => async (dispatch, getState) => {\n const featureSwitches = getState().environment.featureSwitches;\n if (!featureSwitches['syi-attribute-suggestions']) {\n return;\n }\n\n if (!categoryId || !shortDescription) {\n return;\n }\n\n const splitTestGroup =\n getState().environment.splitTestGroups[\n 'attribute_suggestion_extractor'\n ];\n if (!splitTestEnabled(splitTestGroup)) {\n return;\n }\n const extractorType = getAttributeSuggestionExtractor(splitTestGroup);\n\n try {\n const params = {\n categoryId,\n shortDescription,\n extractorType\n };\n const response = await webApiClient.post(\n '/selling/suggest/attributes',\n params\n );\n\n dispatch({\n type: 'SET_CATEGORY_ATTRIBUTES_SUGGESTIONS',\n payload: {\n suggestedAttributes:\n response.data.attributeValues.termAttributeValues.map(\n transformServerAttributeSuggestion\n ),\n suggestionsExtractorType: response.data.extractorType\n }\n });\n } catch (error) {\n dispatch({\n type: 'RESET_ATTRIBUTES'\n });\n throw error;\n }\n };\n\nconst splitTestEnabled = (splitTest) => splitTest !== 'control';\n\nconst getAttributeSuggestionExtractor = (splitTest) => {\n switch (splitTest) {\n case 'code':\n return 0;\n case 'tradera':\n return 1;\n case 'google':\n return 2;\n default:\n return 0;\n }\n};\n\nconst transformServerAttributeSuggestion = (attributeSuggestion) => {\n return {\n id: attributeSuggestion.id,\n name: attributeSuggestion.name,\n values: attributeSuggestion.values\n };\n};\n","import { createApi } from '@reduxjs/toolkit/query/react';\nimport { storeSavedSearch } from './helpers/saved-searches-storage';\nimport { sortSavedSearchesResponseOnLatestTotalCount } from './helpers/search-mapper';\nimport qs from 'qs';\nimport type {\n BlueshiftRecommendations4ApiResponse,\n GetFavouriteSellersAndItems2ApiResponse,\n GetSellerSuggestionsApiResponse,\n ExecuteSavedSearchApiResponse,\n ExecuteSavedSearchForCurrentUserApiRequest,\n GetSavedSearchesApiResponse,\n FavouritesellersAndItems2Request,\n RecommendationsV4Request,\n SellerSuggestionsRequest,\n GetTrendingSellersAndItemsApiResponse,\n TrendingsellersAndItemsRequest,\n BlueshiftSellpyRecommendationsApiResponse,\n SellpyRequest,\n ItemsByIdsApiResponse,\n ItemsItemsByIdsRequest,\n IndependentSearchApiRequest,\n IndependentSearchApiResponse,\n CategoryPageApiRequest,\n CategoryPageApiResponse,\n LastChanceApiResponse,\n StartPageLastChanceRequest,\n BrandSuggestionsApiResponse,\n IdeasApiResponse,\n TrendingSearchesApiResponse,\n TrendingSearchViewModel,\n WishlistApiApiResponse\n} from './types/webapi-discover-generated';\nimport { isServer } from 'tradera/utils/nextjs';\nimport { baseQueryForWishListableItems } from './utils/webapi-base-query';\n\nexport type RecommendationsQueryParams = {\n slot: string;\n userLanguage: string;\n automaticTranslationPreference: boolean;\n shippingCountryCode: string;\n maxResults: number;\n pageNumber: number;\n};\n\nexport type SuggestedRecommendationsQueryParams = {\n slot: string;\n userLanguage: string;\n automaticTranslationPreference: boolean;\n shippingCountryCode: string;\n};\n\n/**\n * Creates a query params object for RTK Query.\n * The query parameters for RTK Query is used as key for caching hence\n * must always be the same for the same query on server and client.\n */\nexport const getRecommendationsQueryParams = ({\n slot,\n userLanguage,\n automaticTranslationPreference,\n shippingCountryCode\n}: SuggestedRecommendationsQueryParams): RecommendationsQueryParams => ({\n slot,\n maxResults: 20,\n userLanguage: userLanguage.toLowerCase(),\n automaticTranslationPreference,\n shippingCountryCode: shippingCountryCode.toUpperCase(),\n pageNumber: 0\n});\n\ntype FavouriteSellersQueryParams = {\n shippingCountryCode: string;\n userLanguage: string;\n automaticTranslationPreference: boolean;\n};\n\nexport type LastChanceQueryParams = {\n automaticTranslationPreference: boolean;\n itemCount: number;\n shippingCountryCode: string;\n userLanguage: string;\n};\n\n/**\n * Creates a query params object for RTK Query.\n * The query parameters for RTK Query is used as key for caching hence\n * must always be the same for the same query on server and client.\n */\nexport const getFavouriteSellersQueryParams = ({\n shippingCountryCode,\n userLanguage,\n automaticTranslationPreference\n}: FavouriteSellersQueryParams): FavouriteSellersQueryParams => ({\n shippingCountryCode: shippingCountryCode.toUpperCase(),\n userLanguage: userLanguage.toLowerCase(),\n automaticTranslationPreference\n});\n\n/**\n * Creates a query params object for RTK Query.\n * The query parameters for RTK Query is used as key for caching hence\n * must always be the same for the same query on server and client.\n */\nexport const getSellerSuggestionsQueryParams = (\n shippingCountryCode: string\n) => ({\n shippingCountryCode: shippingCountryCode.toUpperCase()\n});\n\n/**\n * Creates a query params object for RTK Query.\n * The query parameters for RTK Query is used as key for caching hence\n * must always be the same for the same query on server and client.\n */\nexport const getTrendingSellersQueryParams = (\n shippingCountryCode: string,\n userLanguage: string\n) => ({\n shippingCountryCode: shippingCountryCode.toUpperCase(),\n userLanguage: userLanguage.toLowerCase()\n});\n\nenum SavedSearchesSorting {\n Sorted = 'sorted',\n Unsorted = 'unsorted'\n}\n\n/**\n * Creates a query params object for RTK Query.\n * The query parameters for RTK Query is used as key for caching.\n */\nexport const getSavedSearchesQueryParams = (isSortingRequired: boolean) =>\n isSortingRequired\n ? SavedSearchesSorting.Sorted\n : SavedSearchesSorting.Unsorted;\n\n/**\n * Creates a query params object for RTK Query.\n * The query parameters for RTK Query is used as key for caching hence\n * must always be the same for the same query on server and client.\n */\nexport const getInstagramQueryParams = () => ({});\n\nexport const getLastChanceQueryParams = (\n userLanguage: string,\n shippingCountryCode: string,\n automaticTranslationPreference: boolean\n): LastChanceQueryParams => ({\n itemCount: 19,\n userLanguage: userLanguage.toLowerCase(),\n shippingCountryCode: shippingCountryCode.toUpperCase(),\n automaticTranslationPreference\n});\n\nexport const discoverApi = createApi({\n reducerPath: 'discoveryApi',\n baseQuery: baseQueryForWishListableItems,\n endpoints: (builder) => ({\n getBrandSuggestions: builder.query<\n BrandSuggestionsApiResponse,\n unknown\n >({\n query: () => {\n const baseUrl = isServer ? '' : '/api/webapi';\n return `${baseUrl}/discover/web/start-page/brand-suggestions`;\n },\n extraOptions: {\n getWishListableItems: () => null\n }\n }),\n getFavouriteSellers: builder.query<\n GetFavouriteSellersAndItems2ApiResponse,\n FavouritesellersAndItems2Request\n >({\n query: ({\n shippingCountryCode,\n userLanguage,\n automaticTranslationPreference,\n maxItemsPerFavouriteSeller = 3,\n maxItems = 20,\n maxFavouriteSellers = 20\n }) => {\n const query = qs.stringify({\n shippingCountryCode,\n userLanguage,\n automaticTranslationPreference,\n maxItemsPerFavouriteSeller,\n maxItems,\n maxFavouriteSellers\n });\n const baseUrl = isServer ? '' : '/api/webapi';\n return `${baseUrl}/discover/favouritesellers-and-items2?${query}`;\n },\n extraOptions: {\n getWishListableItems: () => null\n }\n }),\n getIdeas: builder.query({\n query: () => {\n const baseUrl = isServer ? '' : '/api/webapi';\n return `${baseUrl}/discover/web/start-page/ideas`;\n },\n extraOptions: {\n getWishListableItems: () => null\n }\n }),\n getInstagramFeed: builder.query<\n GetFavouriteSellersAndItems2ApiResponse,\n FavouritesellersAndItems2Request\n >({\n query: () => {\n const baseUrl = isServer ? '' : '/api/webapi';\n return `${baseUrl}/discover/web/start-page/instagram-feed`;\n },\n extraOptions: {\n getWishListableItems: () => null\n }\n }),\n getLastChance: builder.query<\n LastChanceApiResponse,\n LastChanceQueryParams\n >({\n query: ({\n userLanguage,\n shippingCountryCode,\n automaticTranslationPreference,\n itemCount\n }) => {\n const request: StartPageLastChanceRequest = {\n shippingCountryCodeIso2: shippingCountryCode,\n languageCodeIso2: userLanguage,\n automaticTranslationPreferred:\n automaticTranslationPreference,\n limit: itemCount\n };\n const query = qs.stringify(request);\n const baseUrl = isServer ? '' : '/api/webapi';\n return `${baseUrl}/discover/web/start-page/last-chance?${query}`;\n },\n extraOptions: {\n getWishListableItems: (response: LastChanceApiResponse) =>\n response.items\n }\n }),\n getSellerSuggestions: builder.query<\n GetSellerSuggestionsApiResponse,\n SellerSuggestionsRequest\n >({\n query: ({ shippingCountryCode, maxSellers = 20 }) => {\n const query = qs.stringify({\n shippingCountryCode,\n maxSellers\n });\n const baseUrl = isServer ? '' : '/api/webapi';\n return `${baseUrl}/discover/seller-suggestions?${query}`;\n },\n extraOptions: {\n getWishListableItems: () => null\n }\n }),\n getTrendingSellers: builder.query<\n GetTrendingSellersAndItemsApiResponse,\n TrendingsellersAndItemsRequest\n >({\n query: ({\n maxItems = 0,\n maxItemsPerSeller = 3,\n maxSellers = 20,\n ...props\n }) => {\n const query = qs.stringify({\n maxItems,\n maxItemsPerSeller,\n maxSellers,\n ...props\n });\n const baseUrl = isServer ? '' : '/api/webapi';\n return `${baseUrl}/discover/trendingsellers-and-items?${query}`;\n },\n extraOptions: {\n getWishListableItems: () => null\n }\n }),\n getTrendingSearches: builder.query<\n TrendingSearchViewModel[],\n undefined\n >({\n query: () => {\n const baseUrl = isServer ? '' : '/api/webapi';\n return `${baseUrl}/discover/web/start-page/trending-searches`;\n },\n extraOptions: {\n getWishListableItems: () => null\n },\n transformResponse: (response: TrendingSearchesApiResponse) => {\n return response.searches || [];\n }\n }),\n getSavedSearches: builder.query({\n query: () => {\n const baseUrl = isServer ? '' : '/api/webapi';\n return `${baseUrl}/discover/savedsearches`;\n },\n extraOptions: {\n getWishListableItems: () => null\n },\n transformResponse: (response, _meta, arg) => {\n return arg === SavedSearchesSorting.Unsorted\n ? response\n : sortSavedSearchesResponseOnLatestTotalCount(response);\n }\n }),\n getRecommendations: builder.query<\n BlueshiftRecommendations4ApiResponse,\n RecommendationsV4Request\n >({\n query: ({\n slot,\n shippingCountryCode,\n userLanguage,\n automaticTranslationPreference,\n maxResults,\n pageNumber\n }: RecommendationsQueryParams) => {\n const query = qs.stringify({\n slot,\n pageNumber,\n shippingCountryCode,\n userLanguage,\n automaticTranslationPreference,\n maxResults\n });\n const baseUrl = isServer ? '' : '/api/webapi';\n return `${baseUrl}/discover/recommendations-v4?${query}`;\n },\n extraOptions: {\n getWishListableItems: (\n response: BlueshiftRecommendations4ApiResponse\n ) => response.items\n }\n }),\n getIndependentSearchResult: builder.query<\n IndependentSearchApiResponse,\n IndependentSearchApiRequest\n >({\n query: (parameters) => {\n return {\n url: '/api/webapi/discover/web/independent-search',\n method: 'POST',\n body: parameters\n };\n },\n extraOptions: {\n getWishListableItems: (\n response: IndependentSearchApiResponse\n ) => response.items\n }\n }),\n\n getCategoryResult: builder.query<\n CategoryPageApiResponse,\n CategoryPageApiRequest\n >({\n query: (parameters) => {\n return {\n url: '/api/webapi/discover/web/category-page',\n method: 'POST',\n body: parameters\n };\n },\n extraOptions: {\n getWishListableItems: (response: CategoryPageApiResponse) =>\n response.items\n }\n }),\n getSavedSearchResults: builder.mutation<\n ExecuteSavedSearchApiResponse,\n ExecuteSavedSearchForCurrentUserApiRequest\n >({\n query: (parameters) => {\n return {\n url: '/api/webapi/discover/savedsearches/search-v2',\n method: 'POST',\n body: parameters\n };\n },\n extraOptions: {\n //response.response?.result?.items are of type SearchResultItem2ApiDto which does not currently have the \"inWishList\" property\n getWishListableItems: () => null\n },\n transformResponse: (\n response: ExecuteSavedSearchApiResponse,\n meta,\n arg\n ) => {\n storeSavedSearch(arg.id, {\n totalItems: response.response?.result?.itemsMatched\n });\n return response;\n }\n }),\n getSellpyRecommendations: builder.query<\n BlueshiftSellpyRecommendationsApiResponse,\n SellpyRequest\n >({\n query: (params) => {\n const query = qs.stringify({\n ...params,\n maxResults: params.maxResults ?? 50\n });\n\n return `/api/webapi/discover/recommendations/sellpy?${query}`;\n },\n extraOptions: {\n getWishListableItems: (\n response: BlueshiftSellpyRecommendationsApiResponse\n ) => response.items\n }\n }),\n getItemsByIds: builder.query<\n ItemsByIdsApiResponse,\n ItemsItemsByIdsRequest\n >({\n query: (params) => {\n const query = qs.stringify(params);\n return `/api/webapi/discover/web/items/items-by-ids?${query}`;\n },\n extraOptions: {\n getWishListableItems: (response: ItemsByIdsApiResponse) =>\n response.items\n }\n }),\n getStartPageWishListItems: builder.query<\n WishlistApiApiResponse,\n undefined\n >({\n query: () => {\n const baseUrl = isServer ? '' : '/api/webapi';\n return `${baseUrl}/discover/web/start-page/wishlist?limit=100`;\n },\n extraOptions: {\n getWishListableItems: (data: WishlistApiApiResponse) =>\n data.items\n }\n })\n })\n});\n\nexport const {\n useGetBrandSuggestionsQuery,\n useGetIdeasQuery,\n useGetInstagramFeedQuery,\n useGetIndependentSearchResultQuery,\n useGetCategoryResultQuery,\n useGetLastChanceQuery,\n useGetSavedSearchesQuery,\n useGetSavedSearchResultsMutation,\n useGetRecommendationsQuery,\n useGetFavouriteSellersQuery,\n useGetTrendingSearchesQuery,\n useGetSellpyRecommendationsQuery,\n useGetItemsByIdsQuery,\n useGetStartPageWishListItemsQuery,\n endpoints\n} = discoverApi;\n\nexport const { updateQueryData } = discoverApi.util;\n","import { getSavedSearch } from './saved-searches-storage';\n\nexport const sortSavedSearchesResponseOnLatestTotalCount = (response) => {\n const savedSearches = response.savedSearches\n .map((savedSearch) => {\n const dataFromLocalStorage = getSavedSearch(savedSearch.id);\n\n return {\n ...savedSearch,\n totalItems: dataFromLocalStorage?.totalItems || 0\n };\n })\n .sort((a, b) => b.totalItems - a.totalItems);\n\n return { ...response, savedSearches };\n};\n","import { fetchBaseQuery } from '@reduxjs/toolkit/query';\nimport { defaultJsonRequestHeaders, logError } from './api';\nimport { getLanguage } from 'tradera/utils/language';\nimport { toLocalizedUrl } from 'tradera/utils/url';\n\nconst isUnauthorized = (response) =>\n response.error && response.error.status === 401;\n\nconst isMissingAuthToken = (response) => {\n return (\n response.error &&\n response.error.status === 400 &&\n response.error.data.responseStatus.errorCode === 'MissingAuthToken'\n );\n};\n\nconst baseQuery = fetchBaseQuery({\n baseUrl: '',\n prepareHeaders: (headers) => {\n Object.keys(defaultJsonRequestHeaders).forEach((headerName) => {\n headers.set(headerName, defaultJsonRequestHeaders[headerName]);\n });\n return headers;\n },\n credentials: 'include'\n});\n\nexport const baseQueryWithReauth = async (args, api, extraOptions) => {\n let result = await baseQuery(args, api, extraOptions);\n\n if (isMissingAuthToken(result) || isUnauthorized(result)) {\n // try to get a new token\n const refreshResult = await baseQuery(\n toLocalizedUrl('/login/state', getLanguage()),\n api,\n extraOptions\n );\n if (refreshResult.data) {\n // retry the initial query\n result = await baseQuery(args, api, extraOptions);\n if (isUnauthorized(result)) {\n logError(result);\n }\n } else {\n logError(result);\n window.location.reload();\n }\n }\n return result;\n};\n","import qs from 'qs';\nimport {\n checkResponseLoggedOut,\n finalizeResponse,\n handleError\n} from 'tradera/utils/api';\nimport { touchWebClient } from 'tradera/utils/http';\n\nconst getItem = (itemId) =>\n touchWebClient.get('ajax/item/' + itemId, {\n withCredentials: true\n });\n\nfunction postWishlistItem(itemId, add) {\n return touchWebClient\n .post(add ? `shopping/wishlist/add` : `shopping/wishlist/remove`, {\n itemId\n })\n .then(checkResponseLoggedOut())\n .then(finalizeResponse())\n .catch(handleError());\n}\n\nfunction getItemDiscountQuota() {\n return touchWebClient\n .get('/profile/shop-item-settings/quotas')\n .then(finalizeResponse())\n .catch(handleError());\n}\n\nfunction postItemSettings(itemId, onDisplay, discountRate) {\n const formData = qs.stringify({\n itemId,\n onDisplay,\n discountRate\n });\n return touchWebClient\n .post('/profile/shop-item-settings/settings', formData)\n .then(checkResponseLoggedOut())\n .then(finalizeResponse())\n .catch(handleError());\n}\n\nexport { getItem, postWishlistItem, getItemDiscountQuota, postItemSettings };\n","import { SortBy } from 'tradera/state/services/touchweb-search-api';\nimport { v4 as uuidv4 } from 'uuid';\n\nexport enum QueryType {\n Category = 'Category',\n Search = 'Search',\n Popular = 'Popular'\n}\n\nexport type ItemListType = {\n id: string;\n title: string;\n queryParams: Record;\n queryType: QueryType;\n used?: boolean;\n};\n\nconst topSearches =\n 'svenskt+tenn+zundapp+lego+marimekko+märklin+omega+volvo+saab+puch+fjällräven+louis+vuitton+rolex+toteme+husqvarna+luftgevär+lisa+larson+moped+rodebjer+muminmugg+vintage+retro+pokemon+motorsåg+volvo+240+gustavsberg+seiko+arket+warhammer+gucci+iittala+nintendo+switch+barbie+rörstrand+chanel+volvo+amazon+ganni+odd+molly+taklampa+lampa+ralph+lauren+nikon+guld+amatörradio+festool+makita+dior+iphone';\n\nexport const itemQueries: ItemListType[] = [\n // Antique & Design category\n {\n id: uuidv4(),\n title: 'startPage_itemList_1',\n queryType: QueryType.Category,\n queryParams: {\n categoryId: '20',\n sortBy: SortBy.Relevance,\n fromNumberOfBids: '5',\n toNumberOfBids: '20'\n }\n },\n //Ended auctions search\n {\n id: uuidv4(),\n title: 'startPage_itemList_2',\n queryType: QueryType.Search,\n queryParams: {\n q: topSearches,\n queryScope: 'AnyWordsAnyOrder',\n sortBy: SortBy.Relevance,\n itemStatus: 'Ended',\n fromPrice: '300',\n toPrice: '2500'\n }\n },\n // BIN search\n {\n id: uuidv4(),\n title: 'startPage_itemList_3',\n queryType: QueryType.Search,\n queryParams: {\n q: topSearches,\n queryScope: 'AnyWordsAnyOrder',\n sortBy: SortBy.Relevance,\n itemType: 'FixedPrice',\n fromPrice: '200',\n fromNumberOfBids: '0',\n toNumberOfBids: '0'\n }\n },\n // Video games category\n {\n id: uuidv4(),\n title: 'startPage_itemList_4',\n queryType: QueryType.Category,\n queryParams: {\n categoryId: '30',\n sortBy: SortBy.Relevance,\n fromNumberOfBids: '5',\n toNumberOfBids: '20'\n }\n },\n // Most popular searches (listnings)\n {\n id: uuidv4(),\n title: 'startPage_itemList_5',\n queryType: QueryType.Popular,\n queryParams: {\n queryScope: 'AnyWordsAnyOrder',\n sortBy: SortBy.AddedOn\n }\n }\n];\n","/* eslint-disable better-mutation/no-mutation */\n\nimport { createSlice } from '@reduxjs/toolkit';\nimport ENDPOINTS from 'tradera/constants/endpoints';\nimport {\n axiosWithTokenRefresh,\n axiosConfigs,\n finalizeResponse,\n handleError\n} from 'tradera/utils/api';\n\nimport {\n selectBox,\n isLoadingShippingProducts,\n selectIsBoxValid\n} from './selectors';\n\nconst defaultBox = {\n length: 15,\n height: 15,\n width: 15,\n weight: 1000\n};\n\nconst weightMap = {\n 1: 50,\n 2: 100,\n 3: 250,\n 4: 500,\n 5: 1000,\n 6: 2000,\n 7: 3000,\n 8: 5000,\n 9: 7000,\n 10: 9000,\n 11: 10000,\n 12: 12000,\n 13: 15000,\n 14: 20000,\n 15: 35000\n};\n\nconst enabledCountries = ['DK', 'SE'];\n\nconst shippingCalculatorSlice = createSlice({\n name: 'shippingCalculator',\n initialState: {\n box: { ...defaultBox },\n availableFromCountryCodes: [],\n availableToCountryCodes: [],\n defaultBox,\n weightUnit: 'kg',\n weightSliderValue: 5,\n isLoadingShippingProducts: false,\n shippingProviders: [\n {\n providerName: 'SchenkerPrivpak',\n service: 'traceable'\n },\n {\n providerName: 'PostNordParcel',\n service: 'traceable'\n },\n {\n providerName: 'PostNordStamp',\n service: 'stamps_digital'\n },\n {\n providerName: 'DHL',\n service: 'traceable'\n },\n {\n providerName: 'Bussgods',\n service: 'traceable'\n },\n {\n providerName: 'BringDenmark',\n service: 'traceable'\n },\n {\n providerName: 'PostNordStampDenmark',\n service: 'stamps'\n }\n ],\n internationalProductsGroupedByFromThenToCountry: {\n SE: { SE: [] }\n },\n showError: false\n },\n reducers: {\n initializeShippingCalculator: (state, action) => {\n const defaultCountry = enabledCountries.includes(\n action.payload.defaultCountry\n )\n ? action.payload.defaultCountry\n : 'SE';\n state.defaultCountry = defaultCountry;\n state.selectedToCountry = defaultCountry;\n state.selectedFromCountry = defaultCountry;\n },\n setSelectedToCountry: (state, action) => {\n state.selectedToCountry = action.payload.selectedToCountry;\n },\n setSelectedFromCountry: (state, action) => {\n state.selectedFromCountry = action.payload.selectedFromCountry;\n },\n setDefaultValuesOnBox: (state) => {\n state.box = { ...defaultBox };\n const value = weightMap[5];\n state.weightUnit = value % 1000 === 0 ? 'kg' : 'g';\n state.weightSliderValue = 5;\n },\n updateFilter: (state, action) => {\n const { filterName, value } = action.payload;\n state.box[filterName] = value;\n },\n setWeightFilter: (state, action) => {\n const value = weightMap[action.payload.value];\n state.weightUnit = value % 1000 === 0 ? 'kg' : 'g';\n state.box.weight = value;\n state.weightSliderValue = action.payload.value;\n },\n setWeightUnit: (state, action) => {\n state.weightUnit = action.payload.weightUnit;\n },\n beginFetchingShippingProducts: (state) => {\n state.isLoadingShippingProducts = true;\n },\n setShowError: (state) => {\n state.showError = true;\n },\n setShippingProducts: (state, action) => {\n const { internationalShippingCalculatorProducts } = action.payload;\n\n const internationalProductsGroupedByFromThenToCountry =\n internationalShippingCalculatorProducts.reduce(\n (prev, product) => {\n const {\n fromCountryCodeIso2: from,\n toCountryCodeIso2: to\n } = product;\n prev[from] = prev[from] || {};\n prev[from][to] = prev[from][to] || [];\n prev[from][to].push(product);\n return prev;\n },\n {}\n );\n\n const availableToCountryCodes = [\n ...new Set(\n internationalShippingCalculatorProducts.map(\n ({ toCountryCodeIso2 }) => toCountryCodeIso2\n )\n )\n ];\n\n const availableFromCountryCodes = [\n ...new Set(\n internationalShippingCalculatorProducts.map(\n ({ fromCountryCodeIso2 }) => fromCountryCodeIso2\n )\n )\n ];\n\n state.availableFromCountryCodes = availableFromCountryCodes;\n state.availableToCountryCodes = availableToCountryCodes;\n state.showError = false;\n state.internationalProductsGroupedByFromThenToCountry =\n internationalProductsGroupedByFromThenToCountry;\n state.isLoadingShippingProducts = false;\n }\n }\n});\n\nexport const setDefaultValues = () => (dispatch, getState) => {\n const state = getState();\n dispatch(setDefaultValuesOnBox());\n dispatch(fetchShippingProducts());\n dispatch(\n initializeShippingCalculator({\n defaultCountry: state.views.shippingCalculator.defaultCountry\n })\n );\n};\n\nexport const fetchShippingProducts = () => async (dispatch, getState) => {\n const { length, height, width, weight } = selectBox(getState());\n\n if (isLoadingShippingProducts(getState())) {\n return;\n }\n\n if (!selectIsBoxValid(getState())) {\n dispatch(\n setShippingProducts({\n internationalShippingCalculatorProducts: []\n })\n );\n return;\n }\n dispatch(beginFetchingShippingProducts());\n\n try {\n const response = await axiosWithTokenRefresh()\n .get(ENDPOINTS.INTERNATIONAL_SHIPPING_CALCULATOR, {\n params: {\n lengthInMillimeters: length * 10,\n heightInMillimeters: height * 10,\n widthInMillimeters: width * 10,\n weightInGrams: weight\n },\n ...axiosConfigs.authenticated\n })\n .then(finalizeResponse())\n .catch(handleError());\n\n dispatch(\n setShippingProducts({\n internationalShippingCalculatorProducts:\n response.data.internationalShippingCalculatorProducts\n })\n );\n } catch (e) {\n dispatch(\n setShippingProducts({\n internationalShippingCalculatorProducts: []\n })\n );\n dispatch(setShowError());\n }\n};\n\nexport const {\n updateFilter,\n setWeightUnit,\n beginFetchingShippingProducts,\n initializeShippingCalculator,\n setShippingProducts,\n setDefaultValuesOnBox,\n setSelectedToCountry,\n setSelectedFromCountry,\n setWeightFilter,\n setShowError\n} = shippingCalculatorSlice.actions;\nexport default shippingCalculatorSlice.reducer;\n","export enum VIEW_ITEM_STATES {\n INITIALIZING = 'INITIALIZING',\n NOT_STARTED = 'NOT_STARTED',\n ACTIVE = 'ACTIVE',\n ENDING = 'ENDING',\n ENDED = 'ENDED'\n}\n\nexport enum ITEM_STATES {\n NOT_STARTED_AUCTION = 'NOT_STARTED_AUCTION',\n NOT_STARTED_AUCTION_BIN = 'NOT_STARTED_AUCTION_BIN',\n NOT_STARTED_FIXED_PRICE = 'NOT_STARTED_FIXED_PRICE',\n ONGOING_AUCTION = 'ONGOING_AUCTION',\n ONGOING_AUCTION_BIN = 'ONGOING_AUCTION_BIN',\n ONGOING_FIXED_PRICE = 'ONGOING_FIXED_PRICE',\n ENDED_AUCTION_WITHOUT_BID = 'ENDED_AUCTION_WITHOUT_BID',\n ENDED_AUCTION_WITH_WINNING_BID = 'ENDED_AUCTION_WITH_WINNING_BID',\n ENDED_AUCTION_SOLD_THROUGH_PURCHASE_OFFER = 'ENDED_AUCTION_SOLD_THROUGH_PURCHASE_OFFER',\n ENDED_AUCTION_WITHOUT_WINNING_BID = 'ENDED_AUCTION_WITHOUT_WINNING_BID',\n ENDED_AUCTION_BIN_BOUGHT_AS_BIN = 'ENDED_AUCTION_BIN_BOUGHT_AS_BIN',\n ENDED_AUCTION_BIN_SOLD_THROUGH_PURCHASE_OFFER = 'ENDED_AUCTION_BIN_SOLD_THROUGH_PURCHASE_OFFER',\n ENDED_PURE_BIN_SOLD_THROUGH_PURCHASE_OFFER = 'ENDED_PURE_BIN_SOLD_THROUGH_PURCHASE_OFFER',\n ENDED_FIXED_PRICE = 'ENDED_FIXED_PRICE',\n ENDED_CANCELLED = 'ENDED_CANCELLED',\n UNKNOWN = 'UNKNOWN'\n}\n","import axios from 'axios';\nimport { handleError } from 'tradera/utils/api';\n\nexport const saveLanguageSetting = (code, toLocalizedUrl) =>\n axios\n .post(toLocalizedUrl('/my/profile/save-language-setting'), {\n languageCodeIso2: code\n })\n .catch(handleError());\n\n// Export object for Sinon stubbing\nexport default {\n saveLanguageSetting\n};\n","import Analytics from 'packages/analytics';\nimport { logger } from 'packages/logger';\nimport locationUtils from 'tradera/utils/location';\nimport api from './api';\nimport { selectIsLoggedIn } from 'tradera/state/member/selectors';\nimport { setPreferred } from './reducer';\n\n/**\n * Sets new preferred language\n * @param {string} code - example: 'sv' or 'en'\n */\nexport const setPreferredLanguage =\n (code, toLocalizedUrl) => async (dispatch, getState) => {\n Analytics.trackEvent({\n category: 'Settings',\n action: 'Language',\n label: code\n });\n\n try {\n if (selectIsLoggedIn(getState())) {\n await api.saveLanguageSetting(code, toLocalizedUrl);\n }\n dispatch(setPreferred(code));\n locationUtils.reloadLocalized(code);\n } catch (error) {\n logger(error);\n }\n };\n","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => /*#__PURE__*/React.createElement(\"svg\", _extends({\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 58 28\"\n}, props), /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#a)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M52.8 0H4.28A4.24 4.24 0 000 4.2v19.6C0 26.12 1.92 28 4.28 28H52.8a4.24 4.24 0 004.28-4.2V4.2c0-2.32-1.92-4.2-4.28-4.2z\",\n fill: \"#FFB3C7\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M45.28 12.15v.41a3.43 3.43 0 00-1.92-.58 3.38 3.38 0 00-3.42 3.35 3.38 3.38 0 003.42 3.35c.7 0 1.37-.21 1.92-.58v.4h1.94v-6.35h-1.94zm-1.77 4.81c-.97 0-1.75-.73-1.75-1.63 0-.9.78-1.63 1.75-1.63.98 0 1.76.73 1.76 1.63 0 .9-.78 1.63-1.76 1.63zM15.26 9.32h-2.1c0 1.69-.8 3.24-2.18 4.26l-.83.6 3.23 4.33h2.65l-2.96-3.98a7.24 7.24 0 002.2-5.21h-.01zm-5.36 0H7.74v9.19H9.9V9.3zm8.8 0h-2.04v9.19h2.03V9.32zm17.8 2.66c-.78 0-1.51.24-2 .89v-.72h-1.93v6.35h1.95v-3.33c0-.97.66-1.44 1.46-1.44.85 0 1.34.5 1.34 1.42v3.35h1.94v-4.04c0-1.47-1.2-2.48-2.76-2.48zm-11.68.17v.41a3.43 3.43 0 00-1.92-.58 3.38 3.38 0 00-3.42 3.35 3.38 3.38 0 003.42 3.35 3.4 3.4 0 001.92-.58v.4h1.94v-6.35h-1.94zm-1.76 4.81c-.97 0-1.76-.73-1.76-1.63 0-.9.79-1.63 1.76-1.63s1.75.73 1.75 1.63c0 .9-.78 1.63-1.75 1.63zm6.7-3.98v-.83h-1.99v6.36h2v-2.97c0-1 1.1-1.54 1.87-1.54h.02v-1.85c-.79 0-1.51.33-1.9.83zm19.52 3.27a1.2 1.2 0 00-1.22 1.2c0 .66.54 1.19 1.22 1.19a1.2 1.2 0 001.22-1.2 1.2 1.2 0 00-1.22-1.19z\",\n fill: \"#000\"\n})), /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"a\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M0 0h57.08v28H0z\"\n})))));","import {\n FAVOURITE_SELLERS,\n LAST_CHANCE,\n RECENTLY_VIEWED,\n SAVED_SEARCHES,\n WISH_LIST\n} from 'tradera/apps/tradera/components/start-page/content-types';\n\nexport enum STATUS {\n FETCH_FAILED = 'FETCH_FAILED',\n HAS_DATA = 'HAS_DATA',\n NOT_FETCHED = 'NOT_FETCHED'\n}\n\nconst DEFAULT_START_PAGE_HEADER_CONFIG = {\n alternativeText: '',\n backgroundImage: null,\n isCampaignMode: false,\n webpageUrl: ''\n};\n\nexport const DEFAULT_LOGGED_IN_START_PAGE_CONFIG = {\n header: DEFAULT_START_PAGE_HEADER_CONFIG,\n content: [\n { type: WISH_LIST },\n { type: SAVED_SEARCHES },\n { type: FAVOURITE_SELLERS },\n { type: LAST_CHANCE },\n { type: RECENTLY_VIEWED }\n ]\n};\n\nexport const DEFAULT_LOGGED_OUT_START_PAGE_CONFIG = {\n header: DEFAULT_START_PAGE_HEADER_CONFIG,\n content: [{ type: LAST_CHANCE }, { type: RECENTLY_VIEWED }]\n};\n","import {\n DEFAULT_LOGGED_IN_START_PAGE_CONFIG,\n DEFAULT_LOGGED_OUT_START_PAGE_CONFIG\n} from './constants';\nimport type { StartPageConfigInitData } from './types';\n\nexport const mapConfig = (\n config: StartPageConfigInitData,\n isLoggedIn?: boolean\n) => {\n const { contentLoggedIn, contentLoggedOut, ...restOfConfig } = config || {};\n const content = isLoggedIn ? contentLoggedIn : contentLoggedOut;\n\n if (!config || !content) {\n if (isLoggedIn) {\n return DEFAULT_LOGGED_IN_START_PAGE_CONFIG;\n }\n return DEFAULT_LOGGED_OUT_START_PAGE_CONFIG;\n }\n\n return {\n ...restOfConfig,\n content\n };\n};\n","import { createSlice } from '@reduxjs/toolkit';\nimport getInitialState from './initial-state';\n\nconst paymentsSlice = createSlice({\n name: 'payments',\n initialState: getInitialState(),\n reducers: {\n // Init\n initDataLoaded: (state, { payload }) => {\n const {\n swishApp2AppMember,\n braintreeMember,\n onboardToHyperwalletProblems,\n requireBankIdVerification,\n isCompany,\n tinkLink,\n hyperwalletPayeeVerification\n } = payload.initData.pageSpecificData;\n const tinkOnboarding =\n payload.initData.featureSwitches['tink-onboarding'];\n return {\n ...state,\n bankIdVerification: {\n ...state.bankIdVerification,\n requireBankIdVerification: requireBankIdVerification\n },\n swishDetails: {\n ...state.swishDetails,\n number: swishApp2AppMember.phoneNumber,\n newNumber:\n swishApp2AppMember.phoneNumber ||\n swishApp2AppMember.suggestedPhoneNumber,\n enabled: swishApp2AppMember.enabled,\n state: swishApp2AppMember.state,\n isCompany: isCompany,\n isFetching: false\n },\n bankAccountDetails: {\n ...state.bankAccountDetails,\n maskedBankAccountNumber:\n braintreeMember.maskedBankAccountNumber,\n isBankAccountSupplied:\n braintreeMember.isBankAccountSupplied,\n isMemberSetForPayout: braintreeMember.isMemberSetForPayout,\n onboardToHyperwalletProblems: onboardToHyperwalletProblems,\n isFetching: false\n },\n tink: {\n ...state.tink,\n tinkOnboarding: tinkOnboarding,\n iframeUrl: tinkLink,\n redirectUrl: tinkLink\n },\n hyperwalletPayeeVerification\n };\n },\n // BankAccount\n updateBankClearingNumber: (state, { payload }) => {\n return {\n ...state,\n bankAccountDetails: {\n ...state.bankAccountDetails,\n newClearingNumber: payload,\n bankUnknown: false,\n errorMessage: ''\n }\n };\n },\n updateBankAccountNumber: (state, { payload }) => {\n return {\n ...state,\n bankAccountDetails: {\n ...state.bankAccountDetails,\n newAccountNumber: payload,\n bankUnknown: false,\n errorMessage: ''\n }\n };\n },\n deleteBankAccount: (state) => {\n return {\n ...state,\n bankAccountDetails: {\n ...state.bankAccountDetails,\n maskedBankAccountNumber: '',\n isBankAccountSupplied: false,\n newClearingNumber: '',\n newAccountNumber: '',\n errorMessage: ''\n }\n };\n },\n bankError: (state, { payload }) => {\n return {\n ...state,\n bankAccountDetails: {\n ...state.bankAccountDetails,\n errorMessage: payload\n }\n };\n },\n bankAccountSaved: (state, { payload }) => {\n return {\n ...state,\n bankAccountDetails: {\n ...state.bankAccountDetails,\n bankAccountSaved: true,\n isBankAccountSupplied: true,\n maskedBankAccountNumber: payload,\n errorMessage: ''\n }\n };\n },\n bankNotMatched: (state) => {\n return {\n ...state,\n bankAccountDetails: {\n ...state.bankAccountDetails,\n bankUnknown: true\n }\n };\n },\n ignoreBankNotMatched: (state) => {\n return {\n ...state,\n bankAccountDetails: {\n ...state.bankAccountDetails,\n bankUnknown: false\n }\n };\n },\n // Tink\n initTink: (state) => {\n return {\n ...state,\n tink: {\n ...state.tink,\n shouldInitTink: true,\n errorMessage: ''\n }\n };\n },\n cancelTink: (state) => {\n return {\n ...state,\n tink: {\n ...state.tink,\n shouldInitTink: false,\n accounts: null,\n errorMessage: ''\n }\n };\n },\n setTinkFetching: (state, { payload }) => {\n return {\n ...state,\n tink: {\n ...state.tink,\n isFetching: payload\n }\n };\n },\n setTinkBankAccounts: (state, { payload }) => {\n return {\n ...state,\n tink: {\n ...state.tink,\n accounts: payload,\n isFetching: false\n }\n };\n },\n selectTinkBankAccount: (state, { payload }) => {\n return {\n ...state,\n tink: {\n ...state.tink,\n account: payload\n }\n };\n },\n tinkCompleted: (state, { payload }) => {\n return {\n ...state,\n tink: {\n ...state.tink,\n shouldInitTink: false,\n accounts: null\n },\n bankAccountDetails: {\n ...state.bankAccountDetails,\n bankAccountSaved: true,\n isBankAccountSupplied: true,\n maskedBankAccountNumber: payload\n }\n };\n },\n tinkError: (state, { payload }) => {\n return {\n ...state,\n tink: {\n ...state.tink,\n errorMessage: payload\n }\n };\n },\n // BankId\n skipBankIdAuth: (state, { payload }) => {\n return {\n ...state,\n bankIdVerification: {\n ...state.bankIdVerification,\n shouldInitBankID: false,\n bankIdCompleted: true,\n bankIdErrorMessage: '',\n requireBankIdVerification: false,\n ...payload\n }\n };\n },\n beginBankIdAuth: (state, { payload }) => {\n return {\n ...state,\n bankIdVerification: {\n ...state.bankIdVerification,\n shouldInitBankID: true,\n bankIdCompleted: false,\n bankIdErrorMessage: '',\n ...payload\n }\n };\n },\n cancelBankIdAuth: (state) => {\n return {\n ...state,\n bankIdVerification: {\n ...state.bankIdVerification,\n type: '',\n shouldInitBankID: false,\n bankIdInProgress: false,\n bankIdCompleted: false,\n bankIdErrorMessage: ''\n }\n };\n },\n bankIdInProgress: (state, { payload }) => {\n return {\n ...state,\n bankIdVerification: {\n ...state.bankIdVerification,\n bankIdInProgress: true,\n autoStartToken: payload.autoStartToken,\n errorCount: 0\n }\n };\n },\n setBankIdError: (state, { payload }) => {\n return {\n ...state,\n bankIdVerification: {\n ...state.bankIdVerification,\n bankIdErrorMessage: payload,\n bankIdInProgress: false,\n bankIdCompleted: false\n }\n };\n },\n incrementBankIdError: (state) => {\n return {\n ...state,\n bankIdVerification: {\n ...state.bankIdVerification,\n errorCount: state.bankIdVerification.errorCount + 1\n }\n };\n },\n bankIdCompleted: (state) => {\n return {\n ...state,\n bankIdVerification: {\n ...state.bankIdVerification,\n shouldInitBankID: false,\n bankIdInProgress: false,\n bankIdCompleted: true\n }\n };\n },\n // Payouts\n payoutsLoaded: (state, { payload }) => {\n return {\n ...state,\n payouts: payload.list,\n pagination: payload.pagination,\n paginationLinks: payload.paginationLinks\n };\n },\n // Update status\n setUpdateStatus: (state, { payload }) => {\n return {\n ...state,\n updateStatus: {\n ...state.updateStatus,\n ...payload\n }\n };\n },\n finishUpdate: (state, { payload }) => {\n return {\n ...state,\n updateStatus: {\n ...state.updateStatus,\n type: '',\n isUpdating: false,\n processCorrelationId: null,\n errorMessage: payload?.errorMessage\n }\n };\n },\n // PayPal\n setPayPalDetails: (state, { payload }) => {\n return {\n ...state,\n paypalDetails: {\n ...state.paypalDetails,\n ...payload\n }\n };\n }\n }\n});\n\nexport const {\n initDataLoaded,\n updateBankClearingNumber,\n updateBankAccountNumber,\n deleteBankAccount,\n bankError,\n bankAccountSaved,\n bankNotMatched,\n ignoreBankNotMatched,\n initTink,\n cancelTink,\n setTinkFetching,\n setTinkBankAccounts,\n selectTinkBankAccount,\n tinkCompleted,\n tinkError,\n skipBankIdAuth,\n beginBankIdAuth,\n cancelBankIdAuth,\n bankIdInProgress,\n setBankIdError,\n incrementBankIdError,\n bankIdCompleted,\n payoutsLoaded,\n setUpdateStatus,\n finishUpdate,\n setPayPalDetails\n} = paymentsSlice.actions;\n\nexport default paymentsSlice.reducer;\n","export default () => {\n return {\n bankIdVerification: {\n type: '',\n shouldInitBankID: false,\n bankIdInProgress: false,\n autoStartToken: '',\n completeText: '',\n verificationText: '',\n bankIdErrorMessage: '',\n errorCount: 0,\n requireBankIdVerification: true\n },\n swishDetails: {\n newNumber: '',\n verifyCode: '',\n isValid: false,\n errorMessage: '',\n isCompany: false,\n isFetching: true\n },\n bankAccountDetails: {\n newClearingNumber: '',\n newAccountNumber: '',\n bankAccountSaved: false,\n bankUnknown: false,\n errorMessage: '',\n isMemberSetForPayout: false,\n isFetching: true\n },\n tink: {\n tinkOnboarding: false,\n iframeUrl: '',\n shouldInitTink: false,\n accounts: null,\n account: null,\n errorMessage: '',\n isFetching: false\n },\n updateStatus: {\n type: '',\n isUpdating: false,\n processCorrelationId: null,\n errorMessage: null,\n maskedAccountNumber: null\n },\n paypalDetails: {\n emailAddress: null\n },\n payouts: [],\n pagination: {},\n paginationLinks: []\n };\n};\n","import type { TranslationFunction } from 'tradera/lang/translate';\n\nexport enum SHIPPING_OPTIONS {\n ALTERNATIVE = 'Alternative',\n ALTERNATIVE_DENMARK = 'AlternativeDenmark',\n BRING_DENMARK = 'BringDenmark',\n BUSSGODS = 'Bussgods',\n DHL = 'DHL',\n FEDEX = 'FedEx',\n NOT_SPECIFIED = 'NotSpecified',\n POSTNORD = 'Posten',\n POSTNORD_PARCEL = 'PostNordParcel',\n POSTNORD_STAMP = 'PostNordStamp',\n POSTNORD_STAMP_DENMARK = 'PostNordStampDenmark',\n SCHENKER = 'SchenkerPrivpak',\n TAKE_AWAY = 'Takeaway',\n TAKE_AWAY_ONLY = 'TakeawayOnly',\n UPS = 'Ups'\n}\n\ninterface ShippingProvider {\n text: string;\n type: SHIPPING_OPTIONS;\n logoImgUrl: string | null;\n}\n\nconst shippingProviders = (t: TranslationFunction): ShippingProvider[] => [\n {\n text: t('shippingProviders_schenkerPrivpak'),\n type: SHIPPING_OPTIONS.SCHENKER,\n logoImgUrl: '/static/images/shipping/schenker.svg'\n },\n {\n text: t('shippingProviders_posten'),\n type: SHIPPING_OPTIONS.POSTNORD,\n logoImgUrl: '/static/images/shipping/postnord.svg'\n },\n {\n text: t('shippingProviders_postNordParcel'),\n type: SHIPPING_OPTIONS.POSTNORD_PARCEL,\n logoImgUrl: '/static/images/shipping/postnord.svg'\n },\n {\n text: t('shippingProviders_postNordStamp'),\n type: SHIPPING_OPTIONS.POSTNORD_STAMP,\n logoImgUrl: '/static/images/shipping/postnord.svg'\n },\n {\n text: t('shippingProviders_postNordStamp'),\n type: SHIPPING_OPTIONS.POSTNORD_STAMP_DENMARK,\n logoImgUrl: '/static/images/shipping/postnord.svg'\n },\n {\n text: t('shippingProviders_dhl'),\n type: SHIPPING_OPTIONS.DHL,\n logoImgUrl: '/static/images/shipping/dhl.svg'\n },\n {\n text: t('shippingProviders_bussgods'),\n type: SHIPPING_OPTIONS.BUSSGODS,\n logoImgUrl: '/static/images/shipping/bussgods.svg'\n },\n {\n text: t('shippingProviders_bringDenmark'),\n type: SHIPPING_OPTIONS.BRING_DENMARK,\n logoImgUrl: '/static/images/shipping/bring.svg'\n },\n {\n text: t('shippingProviders_alternative'),\n type: SHIPPING_OPTIONS.ALTERNATIVE,\n logoImgUrl: null\n },\n {\n text: t('shippingProviders_alternative'),\n type: SHIPPING_OPTIONS.ALTERNATIVE_DENMARK,\n logoImgUrl: null\n },\n {\n text: t('shippingProviders_takeaway'),\n type: SHIPPING_OPTIONS.TAKE_AWAY,\n logoImgUrl: null\n },\n {\n text: t('shippingProviders_takeaway'),\n type: SHIPPING_OPTIONS.TAKE_AWAY_ONLY,\n logoImgUrl: null\n },\n {\n text: t('shippingProviders_notSpecified_full'),\n type: SHIPPING_OPTIONS.NOT_SPECIFIED,\n logoImgUrl: null\n }\n];\n\nconst shippingProvidersMap = (\n t: TranslationFunction\n): Record =>\n shippingProviders(t).reduce(\n (obj, provider) => ({\n ...obj,\n [provider.type]: provider\n }),\n {} as Record\n );\n\nexport const isStampProvider = (provider: SHIPPING_OPTIONS): boolean =>\n [\n SHIPPING_OPTIONS.POSTNORD_STAMP,\n SHIPPING_OPTIONS.POSTNORD_STAMP_DENMARK\n ].indexOf(provider) !== -1;\n\nexport default {\n get: (t: TranslationFunction) => shippingProviders(t),\n map: (t: TranslationFunction) => shippingProvidersMap(t)\n};\n","/* eslint-disable better-mutation/no-mutation */\n\nimport type { PayloadAction } from '@reduxjs/toolkit';\nimport { createSlice } from '@reduxjs/toolkit';\nimport cookieUtil from 'tradera/utils/cookie';\nimport {\n REGION_PICKER_DISMISSED,\n SHIPPING_COUNTRY\n} from 'tradera/constants/cookies';\n\nconst yearInMilliseconds = 1000 * 60 * 60 * 24 * 365;\n\ntype ShippingCountry = {\n countryCodeIso2: string;\n};\n\ntype ShippingRegionState = {\n shippingCountry: ShippingCountry;\n shippingCountryCookieValue: string;\n availableShippingCountries: unknown[];\n availableShippingCountryCodes: string[];\n hasLoadedAvailableShippingCountries: boolean;\n isLoadingAvailableShippingCountries: boolean;\n regionPickerDismissed: boolean;\n};\n\nconst shippingRegionSlice = createSlice({\n name: 'shippingRegion',\n initialState: {} as ShippingRegionState,\n reducers: {\n initialize: (_state, { payload }) => {\n return { ...payload };\n },\n setShippingCountry: {\n reducer: (state, action: PayloadAction) => {\n const { countryCodeIso2 } = action.payload;\n state.shippingCountry = {\n countryCodeIso2: toUpperCase(countryCodeIso2)\n };\n state.shippingCountryCookieValue = countryCodeIso2;\n },\n prepare: (payload) => {\n const { countryCodeIso2 } = payload;\n const expireDate = new Date(\n new Date().getTime() + yearInMilliseconds\n );\n cookieUtil.createCookie(\n SHIPPING_COUNTRY,\n countryCodeIso2,\n expireDate\n );\n return { payload };\n }\n },\n setDefaultShippingCountry: (state) => {\n state.shippingCountry = { countryCodeIso2: 'SE' };\n },\n setAvailableShippingCountries: (\n state,\n action: PayloadAction<{ shippingCountries: ShippingCountry[] }>\n ) => {\n state.availableShippingCountries = action.payload.shippingCountries;\n state.availableShippingCountryCodes =\n action.payload.shippingCountries.map(\n (shippingCountry) => shippingCountry.countryCodeIso2\n );\n state.hasLoadedAvailableShippingCountries = true;\n state.isLoadingAvailableShippingCountries = false;\n },\n beginLoadingAvailableShippingOptions: (state) => {\n state.isLoadingAvailableShippingCountries = true;\n },\n dismissLocalizationRegionPicker: {\n reducer: (state) => {\n state.regionPickerDismissed = true;\n },\n prepare: (payload) => {\n cookieUtil.createCookie(REGION_PICKER_DISMISSED, true);\n return { payload };\n }\n }\n }\n});\n\nconst toUpperCase = (countryCodeIso2 = '') => countryCodeIso2.toUpperCase();\n\nexport const {\n initialize,\n setShippingCountry,\n setAvailableShippingCountries,\n beginLoadingAvailableShippingOptions,\n dismissLocalizationRegionPicker,\n setDefaultShippingCountry\n} = shippingRegionSlice.actions;\nexport default shippingRegionSlice.reducer;\n","/**\n * @returns {object} - list of available columns in MyTradera.\n */\nexport enum columns {\n CurrentPrice = 'CurrentPrice',\n TransactionDate = 'TransactionDate',\n EndDate = 'EndDate',\n ShippingCost = 'ShippingCost',\n Bids = 'Bids',\n ItemId = 'ItemId',\n OpeningBid = 'OpeningBid',\n ReservePrice = 'ReservePrice',\n BuyItNow = 'BuyItNow',\n OwnReference = 'OwnReference',\n Discount = 'Discount',\n MaxBid = 'MaxBid',\n TimeLeft = 'TimeLeft'\n}\n\ntype ColumnGroup = {\n Basic: columns[];\n Normal?: columns[];\n};\n\nexport const buyerActiveItemsColumns: ColumnGroup = {\n Basic: [\n columns.CurrentPrice,\n columns.MaxBid,\n columns.Bids,\n columns.ShippingCost,\n columns.EndDate,\n columns.TimeLeft,\n columns.ItemId\n ]\n};\n\nexport const buyerItemsLostColumns: ColumnGroup = {\n Basic: [\n columns.CurrentPrice,\n columns.MaxBid,\n columns.Bids,\n columns.ShippingCost,\n columns.EndDate,\n columns.ItemId\n ]\n};\n\nexport const sellerActiveColumns: ColumnGroup = {\n Basic: [\n columns.CurrentPrice,\n columns.Bids,\n columns.EndDate,\n columns.ItemId,\n columns.ReservePrice,\n columns.OwnReference\n ]\n};\nexport const sellerSoldColumns: ColumnGroup = {\n Basic: [\n columns.CurrentPrice,\n columns.Bids,\n columns.ShippingCost,\n columns.TransactionDate,\n columns.ItemId,\n columns.ReservePrice,\n columns.BuyItNow,\n columns.OwnReference\n ],\n Normal: [\n columns.Bids,\n columns.TransactionDate,\n columns.ItemId,\n columns.OwnReference,\n columns.ReservePrice,\n columns.BuyItNow,\n columns.CurrentPrice\n ]\n};\n\nexport const sellerUnsoldColumns: ColumnGroup = {\n Basic: [\n columns.CurrentPrice,\n columns.Bids,\n columns.ShippingCost,\n columns.EndDate,\n columns.ItemId,\n columns.OwnReference\n ]\n};\n\nexport const buyerPurchasesColumns: ColumnGroup = {\n Basic: [\n columns.CurrentPrice,\n columns.Bids,\n columns.ShippingCost,\n columns.TransactionDate,\n columns.ItemId\n ],\n Normal: [\n columns.Bids,\n columns.TransactionDate,\n columns.ItemId,\n columns.CurrentPrice\n ]\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nfunction TimeLeft(props) {\n const {\n className = '',\n isTimeLeftBelowWarningLimit,\n timeLeftText,\n icon,\n ...otherProps\n } = props;\n\n if (!timeLeftText) {\n return null;\n }\n\n return (\n \n {icon}\n {timeLeftText}\n \n );\n}\n\nTimeLeft.propTypes = {\n timeLeftText: PropTypes.string.isRequired,\n isTimeLeftBelowWarningLimit: PropTypes.bool.isRequired\n};\n\nexport default TimeLeft;\n","import {\n formatQueryParams,\n stripItmFromQueryParameters,\n toQueryParameters\n} from 'tradera/utils/url';\nimport cookieUtil from 'tradera/utils/cookie';\n\nimport { setTcfLoaded, initialize } from './ads/actions';\nimport uiActions from './ui/actions';\nimport * as pushNotificationActions from './push-notifications/push-notifications-slice';\nimport { initializeFromInitData as initShippingRegion } from './shipping-region/actions';\nimport * as discoverActions from './discover/actions';\nimport { initEnvironment } from './environment/actions';\nimport { initialize as initLanguage } from './language/reducer';\nimport { initialize as initMember } from './member/actions';\nimport { initialize as initInitData } from './init-data/actions';\nimport { initialize as initMultiCurrency } from './multi-currency/reducer';\nimport { initialize as initPersonalisation } from './personalisation/reducer';\nimport * as itemActions from './items/actions';\nimport pageActions from './page/actions';\n\n// Views\nimport * as viewItemActions from './views/view-item/reducer';\nimport { handleReportItemModel } from './views/report-item/actions';\nimport { initialize as initStartPage } from './views/start-page/reducer';\nimport { initializeFromInitData as initializeUiFromInitData } from './ui/initial-state';\nimport { receiveSearchResults } from './discover/reducer';\nimport { handleTraderaShopProduct } from './views/tradera-shop/actions';\nimport { setRandomNumber } from './random/reducer';\n\nexport const initializeState = (initData) => (dispatch) => {\n const { isLoggedIn, featureSwitches, currencies, currencyCode } = initData;\n if (initData?.itemNext) {\n // temporary compatibility fix during migration\n // from touchweb backend to nextjs/webapi\n // eslint-disable-next-line better-mutation/no-mutation\n initData.item = initData.itemNext;\n }\n\n const preferredCurrency = isLoggedIn\n ? currencyCode\n : cookieUtil.readCookie('preferred_currency');\n /**\n * handle tcf + gdpr loading\n */\n if (featureSwitches?.['quantcast-consent']) {\n window.addEventListener('tcfLoaded', function () {\n dispatch(setTcfLoaded());\n });\n } else {\n dispatch(setTcfLoaded());\n }\n dispatch(initializeUiFromInitData(initData));\n dispatch(pushNotificationActions.init());\n dispatch(initialize(initData));\n dispatch(initLanguage(initData));\n dispatch(initPersonalisation());\n dispatch(initShippingRegion(initData));\n dispatch(initEnvironment(initData));\n dispatch(initMember(initData));\n dispatch(initInitData(initData));\n dispatch(\n initMultiCurrency({\n currencies,\n enabled: featureSwitches?.['multi-currency'],\n preferredCurrency\n })\n );\n dispatch(itemActions.initialize(initData));\n dispatch(pageActions.initialize(initData));\n dispatch(initStartPage(initData));\n dispatch(uiActions.fetchSystemMessages());\n dispatch(discoverActions.initialize());\n dispatch(setRandomNumber());\n\n /**\n * We hydrate the store with discover results from initData\n * this will be dispatched before any rendering to reduce the time from first byte to first render.\n */\n if (initData?.discoverResponse) {\n dispatch(\n receiveSearchResults(\n {\n endpoint: window.location.pathname,\n queryParams: stripItmFromQueryParameters(\n formatQueryParams(\n toQueryParameters(window.location.search)\n )\n ),\n result: initData.discoverResponse\n },\n initData.memberCountryCodeIso2\n )\n );\n } else if (initData?.item) {\n dispatch(\n viewItemActions.handleItemModel(initData.item, initData.memberId)\n );\n } else if (initData?.reportItem) {\n dispatch(handleReportItemModel(initData.reportItem));\n } else if (initData?.traderaShopProduct) {\n dispatch(handleTraderaShopProduct(initData.traderaShopProduct));\n }\n};\n","import actionTypes from './action-types';\n\nexport const initialize = (initData) => ({\n type: actionTypes.INITIALIZE,\n payload: initData\n});\n\nexport const defaultAction = (data) => ({\n type: actionTypes.DEFAULT_ACTION,\n payload: data\n});\n","import React, { useEffect, useMemo } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { setSelectedPayment } from 'tradera/state/views/shipping-checkout/reducer';\nimport { LocalLoader } from 'tradera/components/loader/loader';\nimport { useCurrentLanguage, useTranslator } from 'tradera/lang/translate';\nimport { PAYMENT_OPTIONS } from 'tradera/state/views/shipping-checkout/initial-state';\nimport {\n selectCheckoutSummary,\n selectShippingCheckout,\n selectShippingPayment\n} from 'tradera/state/views/shipping-checkout/selector';\nimport PaymentMethodLogo from 'tradera/components/payment-method/payment-method-logo';\nimport api from 'tradera/state/views/shipping-checkout/api';\n\nimport './braintree-drop-in.scss';\n\nimport { useFetchData } from 'tradera/hooks/use-fetch-data';\nimport { Button } from 'tradera/components/atoms/button/button';\nimport { PaymentMethodName } from 'tradera/components/payment-method/payment-method-name';\n\n// Testing card number for dev environment: 4111111111111111\n\nexport var paymentInstance = null;\n\nconst BraintreeDropIn = ({\n paymentOptions,\n selected,\n onPaymentMethodRequestable\n}) => {\n const dispatch = useDispatch();\n const { t } = useTranslator();\n\n const { isUpdating } = useSelector(selectShippingCheckout);\n\n const { paymentOption } = paymentOptions;\n\n const handlePaymentSelected = () => {\n if (!selected) {\n dispatch(setSelectedPayment(paymentOption));\n }\n };\n\n return (\n <>\n
\n \n \n
\n \n \n
\n
\n {paymentOption === PAYMENT_OPTIONS.VISA_MASTERCARD &&\n t('payment_method_info_visaMasterCard')}\n {paymentOption === PAYMENT_OPTIONS.APPLEPAY &&\n t('payment_method_info_applePay')}\n {paymentOption === PAYMENT_OPTIONS.GOOGLEPAY &&\n t('payment_method_info_googlePay')}\n
\n \n
\n {selected && (\n
\n \n
\n )}\n \n );\n};\n\nconst DropInSelected = ({ paymentOption, onPaymentMethodRequestable }) => {\n const { language } = useCurrentLanguage();\n const { t } = useTranslator();\n const { shipmentCheckoutId } = useSelector(selectShippingPayment);\n const { totalCost } = useSelector(selectCheckoutSummary);\n\n const fetchParams = useMemo(() => {\n return {\n shipmentCheckoutId: shipmentCheckoutId,\n paymentOption: paymentOption\n };\n }, [shipmentCheckoutId, paymentOption]);\n\n //Fetch Braintree Token\n const { data, isLoading, isRejected, isResolved, retryFetch } =\n useFetchData(\n api.getBraintreeToken,\n fetchParams,\n 'Shipping Checkout Braintree token'\n );\n\n useEffect(() => {\n const dropIn = async () => {\n if (isResolved && !paymentInstance) {\n const { clientToken } = data;\n await initDropIn(\n clientToken,\n language,\n paymentOption,\n totalCost,\n onPaymentMethodRequestable\n );\n }\n };\n dropIn();\n }, [\n data,\n isResolved,\n language,\n paymentOption,\n totalCost,\n onPaymentMethodRequestable\n ]);\n\n // Update amount in configuration for PayPal, Apple Pay, Google Pay\n useEffect(() => {\n let paymentProvider = null;\n if (paymentInstance) {\n switch (paymentOption) {\n case PAYMENT_OPTIONS.PAYPAL:\n paymentProvider = 'paypal';\n break;\n case PAYMENT_OPTIONS.APPLEPAY:\n paymentProvider = 'applepay';\n break;\n case PAYMENT_OPTIONS.GOOGLEPAY:\n paymentProvider = 'googlepay';\n break;\n default:\n paymentProvider = null;\n break;\n }\n }\n if (paymentProvider) {\n paymentInstance.updateConfiguration(\n paymentProvider,\n 'amount',\n totalCost\n );\n }\n }, [paymentOption, totalCost]);\n\n // Effect to reset paymentIntance when switching payment option\n useEffect(() => {\n return () => {\n // eslint-disable-next-line better-mutation/no-mutation\n paymentInstance = null; // Reset paymentInstance when unmounting\n };\n }, [paymentOption]);\n\n return (\n
\n {isRejected && (\n
\n
\n

{t('error_somethingWentWrong')}

\n
\n retryFetch()}>\n {t('error_reloadPage')}\n \n
\n )}\n {isLoading && (\n \n \n
\n )}\n \n
\n
\n \n );\n};\n\nconst initDropIn = async (\n clientToken,\n language,\n paymentOption,\n totalCost,\n onPaymentMethodRequestable\n) => {\n const callback = (err, dropinInstance) => {\n if (err) {\n return null;\n }\n\n if (dropinInstance.isPaymentMethodRequestable()) {\n onPaymentMethodRequestable(null, true);\n }\n\n dropinInstance.on(\n 'paymentMethodRequestable',\n function (paymentMethodRequestable) {\n onPaymentMethodRequestable(paymentMethodRequestable, true);\n }\n );\n\n dropinInstance.on('noPaymentMethodRequestable', function () {\n onPaymentMethodRequestable(null, false);\n });\n\n // eslint-disable-next-line better-mutation/no-mutation\n paymentInstance = dropinInstance;\n };\n\n const paymentOptions = getDropInOptions(paymentOption, totalCost);\n var options = {\n authorization: clientToken,\n container: '#dropin-container',\n locale: language,\n vaultManager: true,\n dataCollector: {\n kount: true // Required if Kount fraud data collection is enabled\n },\n card: {\n vault: {\n allowVaultCardOverride: true,\n vaultCard: false\n }\n },\n ...paymentOptions\n };\n\n const dropin = await import(\n /* webpackChunkName: \"braintree-web-drop-in\" */ 'braintree-web-drop-in'\n );\n await dropin.create(options, callback);\n};\n\nconst getDropInOptions = (paymentOption, totalCost) => {\n switch (paymentOption) {\n case PAYMENT_OPTIONS.VISA_MASTERCARD:\n return {\n threeDSecure: true\n };\n case PAYMENT_OPTIONS.PAYPAL:\n return {\n card: false,\n applePay: false,\n googlePay: false,\n paypal: {\n flow: 'checkout',\n amount: totalCost,\n currency: 'SEK'\n }\n };\n case PAYMENT_OPTIONS.APPLEPAY:\n return {\n card: false,\n paypal: false,\n googlePay: false,\n applePay: {\n displayName: 'Tradera',\n paymentRequest: {\n total: {\n label: 'Tradera',\n amount: totalCost.toString()\n },\n requiredBillingContactFields: ['postalAddress']\n }\n }\n };\n case PAYMENT_OPTIONS.GOOGLEPAY:\n return {\n card: false,\n paypal: false,\n applePay: false,\n threeDSecure: true,\n googlePay: {\n googlePayVersion: 2,\n merchantId: 'BCR2DN6TU7KPRDTQ',\n transactionInfo: {\n totalPriceStatus: 'FINAL',\n totalPrice: totalCost.toString(),\n currencyCode: 'SEK'\n },\n allowedPaymentMethods: [\n {\n type: 'CARD',\n parameters: {\n billingAddressRequired: true,\n billingAddressParameters: {\n format: 'FULL'\n }\n }\n }\n ]\n }\n };\n default:\n return {};\n }\n};\n\nexport default BraintreeDropIn;\n","import { PaidStatuses } from 'tradera/constants/paid-statuses';\n\nexport const getTranslatedImageLabel = (t, labelKey) => {\n switch (labelKey) {\n case buyerActiveItemsLabelKeys.RESERVE_PRICE_NOT_REACHED:\n case activeLabelKeys.RESERVE_PRICE_NOT_REACHED:\n case unsoldLabelKeys.RESERVE_PRICE_NOT_REACHED:\n return t('myt_itemCard_imgLabel_reservePriceNotReached');\n case soldLabelKeys.NOT_PAID:\n case purchasesLabelKeys.NOT_PAID:\n return t('myt_itemCard_imgLabel_notPaid');\n case unsoldLabelKeys.NOT_PAID:\n return t('myt_itemCard_imgLabel_unsoldNotPaid');\n case soldLabelKeys.PAYMENT_PENDING:\n case purchasesLabelKeys.PAYMENT_PENDING:\n return t('myt_itemCard_imgLabel_paymentPending');\n case soldLabelKeys.PAID:\n case purchasesLabelKeys.PAID:\n return t('myt_itemCard_imgLabel_paid');\n case soldLabelKeys.DONE:\n case purchasesLabelKeys.DONE:\n return t('myt_itemCard_imgLabel_done');\n case buyerActiveItemsLabelKeys.LEADING:\n return t('myt_itemCard_imgLabel_leading');\n case buyerActiveItemsLabelKeys.OVERBIDDEN:\n return t('myt_itemCard_imgLabel_overbidden');\n case buyerActiveItemsLabelKeys.BID_REMOVED:\n return t('myt_itemCard_imgLabel_bidRemoved');\n case activeLabelKeys.NOT_STARTED:\n return t('myt_itemCard_imgLabel_notStarted');\n case activeLabelKeys.HAS_BIDS:\n return t('myt_itemCard_imgLabel_hasBids');\n case activeLabelKeys.ACTIVE:\n return t('myt_itemCard_imgLabel_active');\n case activeLabelKeys.SOLD:\n return t('myt_itemCard_imgLabel_sold');\n case activeLabelKeys.NOT_SOLD:\n return t('myt_itemCard_imgLabel_notSold');\n case soldLabelKeys.SHIPPING_BOOKED:\n return t('myt_itemCard_imgLabel_shippingBooked');\n case soldLabelKeys.SHIPPED:\n return t('myt_itemCard_imgLabel_shipped');\n case unsoldLabelKeys.FORICBLY_CLOSED:\n return t('myt_itemCard_imgLabel_forciblyClosed');\n case unsoldLabelKeys.RESTARTED:\n return t('myt_itemCard_imgLabel_restarted');\n case itemLostLabelKeys.REMOVED:\n return t('myt_itemCard_imgLabel_removed');\n case itemLostLabelKeys.LOST:\n return t('myt_itemCard_imgLabel_lost');\n default:\n return '';\n }\n};\n\nconst buyerActiveItemsLabelKeys = {\n RESERVE_PRICE_NOT_REACHED: 'BUYER_RESERVE_PRICE_NOT_REACHED',\n LEADING: 'LEADING',\n OVERBIDDEN: 'OVERBIDDEN',\n BID_REMOVED: 'BID_REMOVED'\n};\n\nconst activeLabelKeys = {\n NOT_STARTED: 'NOT_STARTED',\n RESERVE_PRICE_NOT_REACHED: 'ACTIVE_RESERVE_PRICE_NOT_REACHED',\n HAS_BIDS: 'HAS_BIDS',\n ACTIVE: 'ACTIVE',\n SOLD: 'SOLD',\n NOT_SOLD: 'NOT_SOLD'\n};\n\nconst soldLabelKeys = {\n NOT_PAID: 'SOLD_NOT_PAID',\n PAYMENT_PENDING: 'PAYMENT_PENDING',\n PAID: 'SOLD_PAID',\n SHIPPING_BOOKED: 'SHIPPING_BOOKED',\n SHIPPED: 'SHIPPED',\n DONE: 'SOLD_DONE'\n};\n\nconst unsoldLabelKeys = {\n NOT_PAID: 'UNSOLD_NOT_PAID',\n RESERVE_PRICE_NOT_REACHED: 'UNSOLD_RESERVE_PRICE_NOT_REACHED',\n FORICBLY_CLOSED: 'FORCIBLY_CLOSED',\n RESTARTED: 'RESTARTED'\n};\n\nconst purchasesLabelKeys = {\n NOT_PAID: 'PURHCASED_NOT_PAID',\n PAYMENT_PENDING: 'PAYMENT_PENDING',\n PAID: 'PURCHASED_PAID',\n DONE: 'PURCHASED_DONE'\n};\n\nconst itemLostLabelKeys = {\n LOST: 'LOST',\n REMOVED: 'ITEMLOST_REMOVED '\n};\n\nconst buyerActiveItemsLabels = {\n reservePriceNotReached: {\n key: buyerActiveItemsLabelKeys.RESERVE_PRICE_NOT_REACHED,\n color: 'red'\n },\n leading: {\n key: buyerActiveItemsLabelKeys.LEADING,\n color: 'green'\n },\n overbidden: {\n key: buyerActiveItemsLabelKeys.OVERBIDDEN,\n color: 'red'\n },\n bidRemoved: {\n key: buyerActiveItemsLabelKeys.BID_REMOVED,\n color: 'grey-hard'\n }\n};\n\nconst activeLabels = {\n notStarted: {\n key: activeLabelKeys.NOT_STARTED,\n color: 'grey-soft'\n },\n reservePriceNotReached: {\n key: activeLabelKeys.RESERVE_PRICE_NOT_REACHED,\n color: 'red'\n },\n hasBids: { key: activeLabelKeys.HAS_BIDS, color: 'green' },\n active: { key: activeLabelKeys.ACTIVE, color: 'blue' },\n sold: { key: activeLabelKeys.SOLD, color: 'green' },\n notSold: {\n key: activeLabelKeys.NOT_SOLD,\n color: 'grey-soft'\n }\n};\n\nconst soldLabels = {\n notPaid: { key: soldLabelKeys.NOT_PAID, color: 'red' },\n paymentPending: { key: soldLabelKeys.PAYMENT_PENDING, color: 'red' },\n paid: { key: soldLabelKeys.PAID, color: 'green' },\n shippingBooked: {\n key: soldLabelKeys.SHIPPING_BOOKED,\n color: 'green'\n },\n shipped: { key: soldLabelKeys.SHIPPED, color: 'dark-highlighted' },\n done: { key: soldLabelKeys.DONE, color: 'grey-hard' }\n};\n\nconst unsoldLabels = {\n notPaid: {\n key: unsoldLabelKeys.NOT_PAID,\n color: 'grey-hard'\n },\n reservePriceNotReached: {\n key: unsoldLabelKeys.RESERVE_PRICE_NOT_REACHED,\n color: 'red'\n },\n forciblyClosed: {\n key: unsoldLabelKeys.FORICBLY_CLOSED,\n color: 'red'\n },\n restarted: {\n key: unsoldLabelKeys.RESTARTED,\n color: 'blue'\n }\n};\n\nconst purchasesLabels = {\n notPaid: {\n key: purchasesLabelKeys.NOT_PAID,\n color: 'red'\n },\n paymentPending: {\n key: purchasesLabelKeys.PAYMENT_PENDING,\n color: 'red'\n },\n paid: { key: purchasesLabelKeys.PAID, color: 'green' },\n done: { key: purchasesLabelKeys.DONE, color: 'grey-hard' }\n};\n\nconst itemLostLabels = {\n lost: {\n key: itemLostLabelKeys.LOST,\n color: 'grey-hard'\n },\n removed: {\n key: itemLostLabelKeys.REMOVED,\n color: 'grey-hard'\n }\n};\n\nexport const itemHasBids = (item) => item.bidInformation.bidCount > 0;\nexport const itemHasBidsButReservePriceNotReached = (item) =>\n item.transaction\n ? false\n : itemHasBids(item) &&\n !item.reservePriceReached &&\n item.listing.pricing.reservePrice !== -1;\n\nconst getActiveActiveLabel = (item) => {\n if (itemHasBidsButReservePriceNotReached(item)) {\n return activeLabels.reservePriceNotReached;\n }\n return itemHasBids(item) ? activeLabels.hasBids : activeLabels.active;\n};\n\nexport const getActiveLabel = (item) => {\n switch (item.activityType) {\n case 'NotPublished':\n return activeLabels.notStarted;\n case 'Active':\n return getActiveActiveLabel(item);\n case 'Sold':\n return activeLabels.sold;\n case 'Unsold':\n return activeLabels.unSold;\n }\n};\n\nexport const getUnsoldLabel = (item) => {\n if (item && item.listing.restart.hasRestartedChild) {\n return unsoldLabels.restarted;\n }\n if (item && item.forciblyClosed && item.forciblyClosed.closed) {\n return unsoldLabels.forciblyClosed;\n }\n if (itemHasBidsButReservePriceNotReached(item)) {\n return unsoldLabels.reservePriceNotReached;\n }\n return unsoldLabels.notPaid;\n};\n\nconst getStates = (sellerState) => ({\n paid: sellerState.paid ? 'done' : '',\n shipped: sellerState.shipped\n ? 'done'\n : sellerState.shippingBooked\n ? 'partial'\n : '',\n feedbackLeft: sellerState.feedbackLeft ? 'done' : ''\n});\n\nexport const getBuyerActiveItemsLabel = (item, memberId) => {\n if (item.caller.leadingBidRemoved === true) {\n return buyerActiveItemsLabels.bidRemoved;\n }\n\n if (\n item.bidInformation.leadingBidder &&\n item.bidInformation.leadingBidder.id === memberId\n ) {\n if (!item.reservePriceReached) {\n return buyerActiveItemsLabels.reservePriceNotReached;\n }\n return buyerActiveItemsLabels.leading;\n } else {\n return buyerActiveItemsLabels.overbidden;\n }\n};\n\nexport const getSoldLabel = (item) => {\n const sellerState = item.transaction.sellerState;\n const states = getStates(sellerState);\n\n if (item.transaction.paidStatus === PaidStatuses.PAYMENT_PENDING) {\n return {\n ...purchasesLabels.paymentPending,\n states: states\n };\n }\n\n if (sellerState.shipped && sellerState.paid && sellerState.feedbackLeft) {\n return {\n ...soldLabels.done,\n states: states\n };\n }\n\n if (sellerState.shipped || (sellerState.shipped && sellerState.paid)) {\n return {\n ...soldLabels.shipped,\n states: states\n };\n }\n\n if (sellerState.shippingBooked && sellerState.paid) {\n return {\n ...soldLabels.shippingBooked,\n states: states\n };\n }\n\n if (sellerState.paid) {\n return {\n ...soldLabels.paid,\n states: states\n };\n }\n\n return {\n ...soldLabels.notPaid,\n states: states\n };\n};\n\nexport const getPurchasesLabel = (item) => {\n const buyerState = item.transaction.buyerState;\n const states = getStates(buyerState);\n\n if (item.transaction.paidStatus === PaidStatuses.PAYMENT_PENDING) {\n return {\n ...purchasesLabels.paymentPending,\n states: states\n };\n }\n\n if (buyerState.paid && buyerState.feedbackLeft) {\n return {\n ...purchasesLabels.done,\n states: states\n };\n }\n\n if (buyerState.paid) {\n return {\n ...purchasesLabels.paid,\n states: states\n };\n }\n\n return {\n ...purchasesLabels.notPaid,\n states: states\n };\n};\n\nexport const getBuyerItemsLostLabel = (item) => {\n if (item && item.forciblyClosed && item.forciblyClosed.closed) {\n return {\n ...itemLostLabels.removed\n };\n }\n\n return {\n ...itemLostLabels.lost\n };\n};\n\nexport default {\n getActiveLabel,\n getBuyerItemsLostLabel,\n getSoldLabel,\n getUnsoldLabel\n};\n","export const selectFiltersState = (state) => state.views.myTradera.filters;\n","/* eslint-disable better-mutation/no-mutation */\n\nimport { createSlice } from '@reduxjs/toolkit';\nimport Analytics from 'packages/analytics';\nimport getInitialState from './initial-state';\n\nconst profileSlice = createSlice({\n name: 'profile',\n initialState: getInitialState(),\n reducers: {\n setTranslatedReviews: (state, { payload }) => {\n state.translatedReviews = [\n ...state.translatedReviews,\n ...payload.items\n ];\n state.isTranslationOnDemandDisabled = false;\n state.translatedReviewsLoading = false;\n state.translatedReviewsLoadingError = false;\n state.translatedReviewsProviderName = payload.providerName;\n },\n resetTranslatedReview: (state, { payload }) => {\n state.translatedReviews = state.translatedReviews.filter(\n (review) => review.gradeId !== payload.gradeId\n );\n },\n setTranslationOnDemandIsDisabled: (state) => {\n state.translatedReviews = [];\n state.isTranslationOnDemandDisabled = true;\n state.translatedReviewsLoading = false;\n state.translatedReviewsLoadingError = false;\n },\n showTranslatedReviews: {\n reducer: (state, { payload }) => {\n state.showTranslatedReviews = payload.show;\n state.translatedReviews = state.showTranslatedReviews\n ? state.translatedReviews\n : [];\n },\n prepare: (payload) => {\n Analytics.trackEvent({\n category: 'Profile',\n action: 'Translation',\n label: payload.show ? `Show - ${payload.language}` : 'Hide'\n });\n return { payload };\n }\n },\n beginLoadingTranslatedReviews: (state) => {\n state.translatedReviewsLoading = true;\n state.translatedReviewsLoadingError = false;\n },\n failedLoadingTranslatedReviews: (state) => {\n state.translatedReviewsLoading = false;\n state.translatedReviewsLoadingError = true;\n },\n beginLoadingModel: (state) => {\n state.loadingModel = true;\n },\n setModel: (state, { payload }) => {\n state.model = payload.model;\n state.showTranslatedReviews =\n state.showTranslatedReviews &&\n state.translatedReviews.some(\n ({ gradeId }) =>\n payload.model.feedbackItems.filter(\n (feedbackItem) => gradeId === feedbackItem.gradeId\n ).length\n );\n state.loadingModel = false;\n },\n setFeedbackComment: (state, { payload }) => {\n const { feedbackId, comment } = payload;\n const newFeedbackItems = state.model.feedbackItems.map((item) =>\n item.gradeId === feedbackId\n ? {\n ...item,\n hasReply: true,\n isReplyAllowed: false,\n reply: comment\n }\n : { ...item }\n );\n state.model.feedbackItems = newFeedbackItems;\n }\n }\n});\n\nexport const {\n setTranslatedReviews,\n showTranslatedReviews,\n beginLoadingModel,\n beginLoadingTranslatedReviews,\n failedLoadingTranslatedReviews,\n setModel,\n setTranslationOnDemandIsDisabled,\n setFeedbackComment,\n resetTranslatedReview\n} = profileSlice.actions;\n\nexport default profileSlice.reducer;\n","export default () => {\n return {\n isTranslationOnDemandDisabled: false,\n loadingModel: false,\n model: null,\n showTranslatedReviews: false,\n translatedReviews: [],\n translatedReviewsLoading: false,\n translatedReviewsLoadingError: false\n };\n};\n","import { useCallback, useEffect, useReducer } from 'react';\nimport { logger } from 'packages/logger';\n\nfunction fetchReducer(state, action) {\n switch (action.type) {\n case 'error': {\n return {\n ...state,\n status: 'rejected',\n error: action.error\n };\n }\n case 'success': {\n return {\n ...state,\n status: 'resolved',\n data: action.data\n };\n }\n case 'started': {\n return {\n ...state,\n status: 'fetching'\n };\n }\n default: {\n throw new Error(`Unhandled action type: ${action.type}`);\n }\n }\n}\n\n/**\n * Fetch data hook\n * @param {Function} apiFunction Function which makes the async API request\n * @param {String} apiParameter (Optional) Variable that could be passed to apiFunction\n * @param {String} apiName (Optional) The name of the API request for logging purposes\n * @return {Object} Object containing the data, status and retry function for the request.\n */\n\nexport function useFetchData(apiFunction, apiParameter, apiName) {\n const [state, dispatch] = useReducer(fetchReducer, {\n status: apiFunction ? 'idle' : 'resolved',\n data: {},\n error: null\n });\n\n const handleFetch = useCallback(async () => {\n dispatch({ type: 'started' });\n apiFunction(apiParameter)\n .then(({ data }) => {\n dispatch({ type: 'success', data });\n return;\n })\n .catch((error) => {\n dispatch({ type: 'error', error });\n logger(\n new Error(\n `Fetch ${apiName || apiParameter} failed ${error}`\n )\n );\n });\n }, [apiFunction, apiParameter, apiName]);\n\n useEffect(() => {\n if (apiFunction) {\n handleFetch();\n }\n }, [handleFetch, apiFunction]);\n\n const retryFetch = () => {\n handleFetch();\n };\n\n return {\n isLoading: state.status === 'idle' || state.status === 'fetching',\n isIdle: state.status === 'idle',\n isFetching: state.status === 'fetching',\n isResolved: state.status === 'resolved',\n isRejected: state.status === 'rejected',\n retryFetch,\n ...state\n };\n}\n","import draftActions from './draft-actions';\nimport { throttledFetchCategoryAttributeSuggestions } from './attributes-actions';\nimport { selectCategory } from 'tradera/apps/syi/state/selectors/category-selectors';\nimport {\n setShortDescription,\n resetShortDescription\n} from '../reducers/short-description';\n\nexport const shortDescriptionActions = {\n setShortDescription: (shortDescription) => (dispatch, getState) => {\n dispatch(setShortDescription(shortDescription));\n dispatch(draftActions.updateDraftCanBeResumed());\n dispatch(\n throttledFetchCategoryAttributeSuggestions(\n selectCategory(getState()).draftCategoryId,\n shortDescription\n )\n );\n },\n reset: () => (dispatch) => {\n dispatch(resetShortDescription());\n dispatch(draftActions.updateDraftCanBeResumed());\n }\n};\n","const getJSValue = {\n True: true,\n False: false,\n All: 'All'\n};\n\nconst setJSValue = {\n true: 'True',\n false: 'False',\n All: 'All'\n};\n\nexport const setEnum = (value) => setJSValue[value];\nexport const getEnum = (value) => getJSValue[value];\n","import {\n axiosWithTokenRefresh,\n axiosConfigs,\n finalizeResponse,\n handleError,\n API_ERRORS\n} from 'tradera/utils/api';\nimport { toLocalizedUrl } from 'tradera/utils/url';\nimport { logger } from 'packages/logger';\nimport { touchWebClient, webApiClient } from 'tradera/utils/http';\n\nexport const fetchDescription = (itemId, languageCodeIso2) => {\n return webApiClient\n .get(\n `/browse/item/${itemId}/description/?languageCodeIso2=${languageCodeIso2}`,\n {\n cancelTokenId: 'getItemDescriptionTranslated',\n ...axiosConfigs.authenticated\n }\n )\n .then(finalizeResponse())\n .catch(handleError());\n};\n\n/**\n * Returns an object with bid information for the item with the given ID.\n * @param {*} itemId\n */\nexport const getItemApi = async (itemId, preferredLanguageCode) => {\n return axiosWithTokenRefresh()\n .get(toLocalizedUrl(`/item/${itemId}.json`, preferredLanguageCode))\n .then(finalizeResponse())\n .then(({ data, status }) => {\n return { data, status };\n })\n .catch(\n handleError({\n // Ignore 400 & 401 errors that slip through token refresh\n 400: API_ERRORS.IGNORE_ME,\n 401: API_ERRORS.IGNORE_ME\n })\n );\n};\n\n/**\n * Places a bid for the given auction\n * @param {*} itemId\n * @param {*} amount\n */\nexport const placeBidApi = async (\n itemId,\n amount,\n onLoggedOut,\n preferredLanguageCode,\n gaTrackingSessionId\n) => {\n try {\n const response = await axiosWithTokenRefresh().post(\n toLocalizedUrl(`/item/place-bid/${itemId}`, preferredLanguageCode),\n { amount, gaTrackingSessionId },\n axiosConfigs.authenticated\n );\n const {\n data: {\n bid,\n item,\n transactionTotal,\n potentialBidChange,\n isMaxBid,\n serverSecondsLeft\n }\n } = response;\n\n const {\n bidId,\n isSuccessful,\n leadingBidAmount,\n leadingBidderMemberId,\n leadingMemberAlias: leadingBidMemberAlias,\n nextBidAmount: nextValidBidAmount,\n validationResult,\n placedBid\n } = bid;\n\n const {\n bidCount,\n categoryId,\n endDate,\n itemType,\n openingBid,\n reservePriceReached,\n sellermemberId: sellerMemberId,\n startDate\n } = item;\n\n return {\n isSuccessful,\n validationResult,\n item: {\n bidCount,\n categoryId,\n endDate,\n itemId: item.itemId,\n itemType,\n openingBid,\n reservePriceReached,\n sellerMemberId,\n startDate\n },\n bidInfo: {\n bidCount,\n bidId,\n isMaxBid,\n leadingBidAmount,\n leadingBidderMemberId,\n leadingBidMemberAlias,\n nextValidBidAmount,\n potentialBidChange,\n reservePriceReached,\n transactionTotal\n },\n analyticsData: {\n bidId,\n transactionTotal,\n potentialBidChange,\n isMaxBid\n },\n myMaxBidAmount: placedBid,\n serverSecondsLeft\n };\n } catch (error) {\n if (error.message === API_ERRORS.LOGGED_OUT) {\n onLoggedOut();\n } else {\n logger(error);\n }\n }\n};\n\nexport const getItemsFromSeller = (params, preferredLanguageCode) => {\n return axiosWithTokenRefresh()\n .get(\n toLocalizedUrl(\n '/api/webapi/discover/more-from-seller/',\n preferredLanguageCode\n ),\n { params }\n )\n .then(finalizeResponse())\n .catch(handleError());\n};\n\nexport const getCombinedShippingUpsell = (params) => {\n return touchWebClient\n .post(\n 'combined-shipping-upsell/items',\n params,\n axiosConfigs.authenticated\n )\n .then(finalizeResponse())\n .catch(handleError());\n};\n","export const getReturnUrl = (redirectURL?: string) =>\n `?returnUrl=${encodeURIComponent(\n redirectURL\n ? redirectURL\n : window.location.pathname +\n window.location.search +\n window.location.hash\n )}`;\n","import actionTypes from './action-types';\nimport initialState from './initial-state';\n\nexport const initialize = (initData) => ({\n type: actionTypes.INITIALIZE,\n payload: initialState(initData)\n});\n\n// TCF = https://iabeurope.eu/transparency-consent-framework/\nexport const setTcfLoaded = () => {\n return {\n type: actionTypes.SET_TCF_LOADED\n };\n};\n","export default () => ({\n isTcfLoaded: false\n});\n","import { selectFeatureSwitches } from 'tradera/state/environment/selectors';\nimport {\n getShippingProvidersByWeight,\n getShippingRecommendations\n} from 'tradera/apps/syi/services/shipping-provider-service';\nimport {\n getSyiSlice,\n selectItemIdFromDraft\n} from 'tradera/apps/syi/state/selectors/syi';\n\nimport { logger } from 'packages/logger';\nimport { selectSelectedShippingOptions } from '../reducers/shipping/shipping-selectors';\n\nconst reset = () => ({\n type: 'RESET_SHIPPING_OPTIONS'\n});\n\nconst resetSelected = () => async (dispatch) => {\n dispatch(setShippingOptionSelected([]));\n};\n\nconst toggleShippingOption = (type, primary) => (dispatch) => {\n dispatch({\n type: 'TOGGLE_SHIPPING_OPTION',\n payload: {\n type,\n primary\n }\n });\n};\n\nconst setShippingOptionCost = (cost, primary) => ({\n type: 'SET_SHIPPING_OPTION_COST',\n payload: {\n cost,\n primary\n }\n});\n\nconst setShippingOptionVariant = (primary, variant) => (dispatch) => {\n dispatch({\n type: 'SET_SHIPPING_OPTION_VARIANT',\n payload: {\n primary,\n variant\n }\n });\n};\n\nconst setShippingOptionSelected = (options) => (dispatch) => {\n dispatch({\n type: 'SET_SHIPPING_OPTION_SELECTED',\n payload: options\n });\n};\n\nconst setOfferTakeaway = (offerTakeaway) => async (dispatch) => {\n dispatch({\n type: 'SET_TAKEAWAY_SELECTED',\n payload: {\n offerTakeaway\n }\n });\n};\n\nconst setOfferShipping = (offerShipping) => ({\n type: 'SET_SHIPPING_SELECTED',\n payload: {\n offerShipping\n }\n});\n\nconst getAndSetShippingOptionsByWeight =\n (shippingOptions) => async (dispatch, getState) => {\n try {\n dispatch({\n type: 'SET_SHIPPING_OPTIONS_LOADING'\n });\n\n const { charity, shipping } = getSyiSlice(getState());\n const itemId = selectItemIdFromDraft(getState());\n const { charityId } = charity;\n const { fromCountry } = shipping;\n\n const { data } = await getShippingProvidersByWeight(\n fromCountry,\n charityId,\n itemId\n );\n const { productsPerWeightSpan } = data;\n\n dispatch({\n type: 'SET_SHIPPING_OPTIONS_BY_WEIGHT',\n payload: {\n productsPerWeightSpan,\n shippingOptions:\n shippingOptions ||\n selectSelectedShippingOptions(getState())\n }\n });\n } catch (error) {\n dispatch({\n type: 'SET_SHIPPING_OPTIONS_ERROR'\n });\n }\n };\n\nconst setShippingRecommendations =\n (categoryId) => async (dispatch, getState) => {\n if (\n selectFeatureSwitches(getState())['shipping-recommendations'] &&\n categoryId\n ) {\n try {\n const { categoryShippingRecommendations } =\n await getShippingRecommendations(categoryId);\n const { recommendedWeight, shippingRecommendations } =\n categoryShippingRecommendations;\n dispatch({\n type: 'SET_SHIPPING_RECOMMENDATIONS',\n payload: {\n recommendedWeight,\n shippingRecommendations\n }\n });\n } catch (error) {\n dispatch({\n type: 'CLEAR_SHIPPING_RECOMMENDATIONS'\n });\n logger(\n 'Get ShippingRecommendations failed. Reason: ' +\n error.message\n );\n }\n }\n };\n\nexport const setShippingFromCountry = (payload) => async (dispatch) => {\n dispatch({\n type: 'SET_SHIPPING_FROMCOUNTRY',\n payload\n });\n};\n\nexport default {\n reset,\n resetSelected,\n setOfferTakeaway,\n setOfferShipping,\n setShippingOptionCost,\n getAndSetShippingOptionsByWeight,\n setShippingOptionVariant,\n setShippingOptionSelected,\n setShippingRecommendations,\n toggleShippingOption,\n setShippingFromCountry\n};\n","import { axiosConfigs } from 'tradera/utils/api';\nimport qs from 'qs';\nimport {\n webApiClient,\n shippingRecommendationsClient\n} from 'tradera/utils/http';\n\nexport const getShippingProvidersByWeight = (\n fromCountry,\n charityId,\n itemId\n) => {\n const params = {\n fromCountryCode: fromCountry,\n charityId,\n itemId\n };\n\n return webApiClient.get(\n `/selling/shipping-products-for-country-by-weight-span?${qs.stringify(\n params\n )}`,\n axiosConfigs.authenticated\n );\n};\n\nexport const getShippingRecommendations = (categoryId) =>\n shippingRecommendationsClient.query(\n `GetCategoryShippingRecommendations?CategoryId=${categoryId}`\n );\n","import React from 'react';\nimport { formatPrice } from './formats';\nimport { LIST_VIEW_TYPES } from './../constants/list-types';\nimport STRINGS from './../constants/text-strings';\n\nexport const generateSumOfDiscounts = (discounts) => {\n return discounts\n .map((discount) => discount.amount)\n .reduce((total, currentAmount) => {\n return total + currentAmount;\n }, 0);\n};\n\nexport const getBidCount = (item) => {\n return item && item.bidInformation && item.bidInformation.bidCount > 0\n ? item.bidInformation.bidCount\n : 0;\n};\n\nexport const getSumOfDiscounts = (item) => {\n const transaction = item.transaction;\n return transaction &&\n transaction.discounts &&\n transaction.discounts.length > 0\n ? generateSumOfDiscounts(transaction.discounts)\n : null;\n};\n\nexport const getMaxBid = (item) =>\n item.caller && item.caller.maxBid && item.caller.maxBid > 0\n ? item.caller.maxBid\n : null;\n\nexport const getTimeLeft = (item) => {\n return item.isActive === true && item.timeLeft && item.timeLeft.timeleft\n ? item.timeLeft.timeleft\n : null;\n};\n\nexport const isTimeLeftCritical = (item) => {\n return item.timeLeft && item.timeLeft.critical\n ? item.timeLeft.critical\n : false;\n};\n\nexport const getShippingCost = (item, listViewType) => {\n const translateShippingNames = (name) => {\n const names = {\n Takeaway: 'Avh.',\n TakeawayLong: 'Avhämtning',\n TakeawayOnly: 'Avhämtning',\n SchenkerPrivpak: 'DB Schenker',\n Alternative: 'Annat fraktsätt'\n };\n if (!names[name]) {\n return name;\n }\n if (name === 'Takeaway' && listViewType === LIST_VIEW_TYPES.BASIC) {\n return names['TakeawayLong'];\n }\n return names[name];\n };\n\n const shouldShowShippingPrice = (shippingItem) =>\n shippingItem.shippingType === 'Takeaway'\n ? ''\n : `: ${formatPrice(shippingItem.shippingCost)}`;\n const getShippingLabelWithPrice = (shippingItem) => {\n return `${translateShippingNames(\n shippingItem.shippingType\n )}${shouldShowShippingPrice(shippingItem)}`;\n };\n\n return () => {\n const shippingOptions = item.listing.shippingOptions;\n\n if (item.transaction) {\n // Logic from Areas/MyTradera/Models/ShippingPrice.cs\n const selectedShipping = item.transaction.selectedShipping;\n if (selectedShipping) {\n if (selectedShipping.isTakeaway) {\n return `${translateShippingNames(\n 'Takeaway'\n )}: ${formatPrice(item.transaction.selectedShipping.cost)}`;\n }\n\n if (selectedShipping.isFreeShipping) {\n return STRINGS.SHIPPING_LABELS.FREE_SHIPPING;\n }\n return `${translateShippingNames(\n selectedShipping.name\n )}: ${formatPrice(item.transaction.selectedShipping.cost)}`;\n } else {\n /*\n * @todo: This if should be fixed in the backend.\n */\n if (shippingOptions.length === 1) {\n const theOnlyShippingOption =\n item.listing.shippingOptions[0];\n return theOnlyShippingOption.shippingType === 'Takeaway'\n ? STRINGS.SHIPPING_LABELS.TAKEAWAY\n : formatPrice(theOnlyShippingOption.shippingCost);\n }\n\n return shippingOptions.map((shippingItem, i) => {\n return listViewType === LIST_VIEW_TYPES.BASIC ? (\n

{getShippingLabelWithPrice(shippingItem)}

\n ) : (\n `${getShippingLabelWithPrice(shippingItem)}${\n i < shippingOptions.length ? ', ' : ''\n }`\n );\n });\n }\n }\n\n const itemOffersTakeawayOnly = () =>\n shippingOptions.length === 1 &&\n shippingOptions.find(\n (shippingOption) => shippingOption.shippingType === 'Takeaway'\n ) !== undefined\n ? true\n : false;\n const getCheapestShippingCost = () =>\n shippingOptions.length === 0\n ? { shippingCost: 0 }\n : shippingOptions.reduce((accumulator, currentValue) => {\n if (\n (currentValue.shippingCost <\n accumulator.shippingCost &&\n currentValue.shippingType !== 'Takeaway') ||\n accumulator.shippingType === 'Takeaway'\n ) {\n return currentValue;\n }\n return accumulator;\n });\n\n return itemOffersTakeawayOnly()\n ? STRINGS.SHIPPING_LABELS.TAKEAWAY\n : formatPrice(getCheapestShippingCost().shippingCost);\n };\n};\n\nexport const isNormalListViewType = (listViewType) =>\n listViewType === LIST_VIEW_TYPES.NORMAL;\n","import type { Request, Response } from 'tradera-backend/http/types/http';\nimport { isServer } from 'tradera/utils/nextjs';\n\ntype WebapiClient = {\n get: (\n req: Request,\n res: Response,\n path: string\n ) => Promise<{ json: () => string }>;\n};\n\n// Because @tradera-internal/infrastructure-logging\n// used in webapiClient does not work in frontend.\nconst webapiClientModulePromise = (async () =>\n isServer\n ? import('tradera-backend/http/webapi-client')\n : Promise.resolve({ webapiClient: null }))();\n\nconst isWebapiClient = (client: unknown): client is WebapiClient =>\n client !== null && typeof client === 'object' && 'get' in client;\n\nexport const serverWebApiBaseQuery = async (\n req: Request,\n res: Response,\n pathOrConfig: string | object\n) => {\n const webapiClientModule = await webapiClientModulePromise;\n const webapiClient = webapiClientModule.webapiClient;\n if (!isWebapiClient(webapiClient)) {\n throw new Error('webapiClient is not a WebapiClient');\n }\n if (typeof pathOrConfig !== 'string') {\n throw new Error(\n 'Handling config is not implemented. Would be used for POST requests.'\n );\n }\n const response = await webapiClient.get(req, res, pathOrConfig);\n const data = await response.json();\n return { data };\n};\n","import { serverWebApiBaseQuery } from 'tradera-backend/http/webapi-rtk';\nimport type { Request, Response } from 'tradera-backend/http/types/http';\nimport { baseQueryWithReauth } from 'tradera/utils/api-rtk';\nimport type { BaseQueryApi } from '@reduxjs/toolkit/dist/query';\nimport { isServer } from 'tradera/utils/nextjs';\nimport type { ItemCardViewModel } from '../types/webapi-discover-generated';\nimport * as itemActions from 'tradera/state/items/actions';\n\nexport type WithGetWishListableItems = {\n getWishListableItems: (data: unknown) => ItemCardViewModel[];\n};\n\nconst isWithGetWishListableItems = (\n item: unknown\n): item is WithGetWishListableItems =>\n (item as WithGetWishListableItems)?.getWishListableItems !== undefined;\n\nconst mustHandleWishListableItems = (input: string | object) =>\n typeof input === 'string';\n\nconst handleWishListableItems = async (\n input: unknown,\n api: BaseQueryApi,\n extraOptions: object,\n data: unknown\n) => {\n // All endpoints must handle possible wishlistable items.\n // If no wishlistable items can come from the endpoint the implementation\n // of getWishListableItems should return a falsy value.\n if (!isWithGetWishListableItems(extraOptions)) {\n throw new Error(\n `Must handle possible wishlistable items from ${input}`\n );\n }\n\n const items = extraOptions.getWishListableItems(data);\n\n if (!items) {\n return;\n }\n\n api.dispatch(\n itemActions.addItemsToWishList(\n items.filter((x) => x.inWishList).map((x) => x.itemId)\n )\n );\n};\n\nconst isServerState = (\n state: unknown\n): state is { request: { request: Request; response: Response } } =>\n isServer &&\n state !== null &&\n typeof state === 'object' &&\n 'request' in state;\n\nexport const baseQuery = async (\n input: string | object,\n api: BaseQueryApi,\n extraOptions: object\n) => {\n const state = api.getState();\n return isServerState(state)\n ? serverWebApiBaseQuery(\n state.request.request,\n state.request.response,\n input\n )\n : (baseQueryWithReauth(input, api, extraOptions) as Promise<{\n data: unknown;\n }>);\n};\n\nexport const baseQueryForWishListableItems = async (\n input: string | object,\n api: BaseQueryApi,\n extraOptions: object\n) => {\n const result = await baseQuery(input, api, extraOptions);\n\n if (mustHandleWishListableItems(input)) {\n const data = (await result).data;\n // There will be no data if the request failed.\n if (data) {\n await handleWishListableItems(input, api, extraOptions, data);\n }\n }\n return result;\n};\n","import {\n isEuCountryCode,\n isSwedenCountryCode\n} from 'tradera/utils/allowed-buyer-region';\nimport constants from '../constants/constants';\n\nconst getDefaultAllowedBuyerRegionsFilter = (countryCodeIso2) =>\n isSwedenCountryCode(countryCodeIso2)\n ? constants.FILTER_STATES_ALLOWED_BUYER_REGIONS.SWEDEN\n : isEuCountryCode(countryCodeIso2)\n ? constants.FILTER_STATES_ALLOWED_BUYER_REGIONS.EU\n : constants.FILTER_STATES_ALLOWED_BUYER_REGIONS.INTERNATIONAL;\n\nexport const getActiveFilterStatesAllowedBuyerRegions = (countryCodeIso2) =>\n Object.values(constants.FILTER_STATES_ALLOWED_BUYER_REGIONS).filter(\n (x) => x !== getDefaultAllowedBuyerRegionsFilter(countryCodeIso2)\n );\n\nexport const getActiveFilterStates = (countryCodeIso2) => {\n return [\n ...constants.ACTIVE_FILTER_STATES_ITEM_CONDITION,\n ...constants.ACTIVE_FILTER_STATES_SELLER_TYPE,\n ...constants.ACTIVE_FILTER_STATES_ITEM_STATUS,\n ...constants.ACTIVE_FILTER_STATES_ITEM_TYPE,\n ...constants.ACTIVE_FILTER_STATES_COUNTY,\n ...getActiveFilterStatesAllowedBuyerRegions(countryCodeIso2)\n ];\n};\n","import { getActiveFilterStates } from 'tradera/apps/tradera/components/discover/helpers/filter-states';\n\nconst normalizeFilters = (filters) => {\n if (filters) {\n const normalized = filters.reduce((aggregated, filter) => {\n return {\n ...aggregated,\n [filter.parameter]: {\n ...filter\n }\n };\n }, {});\n return normalized;\n }\n};\n\nconst activeFilters = (filters, shippingRegionCountryCodeIso2) => {\n if (filters) {\n const normalized = [];\n filters.map((filter) => {\n const { selectedValue } = filter;\n if (\n getActiveFilterStates(shippingRegionCountryCodeIso2).includes(\n selectedValue\n )\n ) {\n normalized.push(filter);\n }\n });\n return normalized;\n }\n};\n\n// This prevents a huge SSR HTML payload in categories with many attributes, such as brands\n// For brands it decreases the __NEXT_DATA__ payload from ~100 kB to ~20 kB\nconst compressAttributeFilterOptions = (attributeFilter) =>\n attributeFilter.map((attributeFilter) => [\n attributeFilter.value,\n attributeFilter.sortOrder\n ]);\n\nconst compressAttributeFilters = (attributeFilters) => {\n if (!attributeFilters) return;\n\n return attributeFilters.map((attributeFilter) => ({\n ...attributeFilter,\n options: compressAttributeFilterOptions(attributeFilter.options) || null\n }));\n};\n\nconst normalize = (responseData, shippingRegionCountryCodeIso2 = 'se') => {\n const normalized = {\n activeBrands: [],\n activeFilters: [],\n attributeFilters: [],\n categoryPath: responseData.categoryPath || [],\n currentCategoryId: responseData.categoryPath?.[0]?.id || 0,\n filterCategories: {},\n filterPrice: {},\n filters: {},\n headerText: responseData.headerText || null,\n internalSearch: responseData.internalSearchBar || {},\n introText: responseData.introText || null,\n isSavedSearchEmailEnabled:\n responseData?.isSavedSearchEmailEnabled || false,\n isShopOwnedByCurrentMember:\n responseData?.itemsOnDisplay?.isShopOwnedByCurrentMember || false,\n items: [],\n itemsOnDisplay: [],\n mainText: responseData.mainText || null,\n pagination: responseData.pagination || null,\n totalItems: responseData.totalItems || 0,\n reduxContainer: responseData.reduxContainer || {},\n searchLanguages: responseData.searchLanguages || []\n };\n\n if (responseData.filters) {\n normalized.filterCategories = responseData.filters.categoryFilter;\n normalized.filters = normalizeFilters(\n responseData.filters.singleOptionFilters\n );\n normalized.activeFilters = activeFilters(\n responseData.filters.singleOptionFilters,\n shippingRegionCountryCodeIso2\n );\n normalized.filterPrice = responseData.filters.priceRangeFilter;\n normalized.attributeFilters = compressAttributeFilters(\n responseData.filters.attributeFilters\n );\n }\n\n if (responseData.items) {\n normalized.items.push(...responseData.items);\n }\n\n if (responseData.itemsOnDisplay) {\n normalized.itemsOnDisplay.push(...responseData.itemsOnDisplay.items);\n }\n\n return normalized;\n};\n\nexport { normalize };\n","/* eslint-disable better-mutation/no-mutation */\nimport { createSlice } from '@reduxjs/toolkit';\nimport { normalize } from './helpers';\n\nconst slice = createSlice({\n name: 'discover',\n initialState: {\n queryParams: {}\n },\n reducers: {\n initialize: (_state, { payload }) => {\n return { ...payload };\n },\n requestSearchResults: (state) => {\n state.error = null;\n },\n receiveSearchResults: (state, { payload }) => {\n const {\n result = {},\n endpoint = null,\n queryParams = null,\n shippingRegionCountryCodeIso2 = 'se'\n } = payload;\n\n return {\n ...state,\n endpoint,\n error: null,\n hasResult: true,\n queryParams,\n ...normalize(result, shippingRegionCountryCodeIso2)\n };\n },\n handleSearchResultsError: (state, { payload }) => {\n state = { ...normalize({}) };\n state.error = payload;\n state.hasResult = true;\n },\n setSingleFilterValue: (state, { payload }) => {\n state.filters = {\n ...state.filters,\n [payload.filter]: {\n ...state.filters[payload.filter],\n selectedValue: payload.value\n }\n };\n },\n updateItem: (state, { payload }) => {\n const { itemId, ...itemData } = payload;\n return {\n ...state,\n items: [\n ...state.items.map((x) =>\n x.itemId === itemId ? { ...x, ...itemData } : x\n )\n ],\n itemsOnDisplay: [\n ...state.itemsOnDisplay.map((x) =>\n x.itemId === itemId ? { ...x, ...itemData } : x\n )\n ]\n };\n },\n addItemOnDisplay: (state, { payload }) => {\n return state.itemsOnDisplay.some(\n (x) => x.itemId === payload.item.itemId\n )\n ? state\n : {\n ...state,\n itemsOnDisplay: [...state.itemsOnDisplay, payload.item]\n };\n },\n removeItemOnDisplay: (state, { payload }) => {\n return state.itemsOnDisplay.some(\n (x) => x.itemId === payload.item.itemId\n )\n ? {\n ...state,\n itemsOnDisplay: state.itemsOnDisplay.filter(\n (x) => x.itemId !== payload.item.itemId\n )\n }\n : state;\n },\n setCategoryPath: (state, { payload }) => {\n state.categoryPath = payload;\n state.currentCategoryId = (payload && payload[0].id) || 0;\n },\n setCurrentCategoryId: (state, { payload }) => {\n state.currentCategoryId = payload;\n },\n setIsFilterOpen: (state, { payload }) => {\n state.isFilterOpen = payload;\n },\n reset: (state, { payload }) => {\n state = payload.initialState;\n }\n }\n});\n\nexport const {\n initialize,\n requestSearchResults,\n receiveSearchResults,\n handleSearchResultsError,\n setSingleFilterValue,\n updateItem,\n addItemOnDisplay,\n removeItemOnDisplay,\n setCategoryPath,\n setIsFilterOpen,\n setCurrentCategoryId,\n reset\n} = slice.actions;\nexport const reducer = slice.reducer;\n","/* eslint-disable better-mutation/no-mutation */\n\nimport { createSlice } from '@reduxjs/toolkit';\nimport getInitialState, {\n MODAL_STATUS\n} from 'tradera/state/views/checkout/initial-state';\n\nconst checkoutSlice = createSlice({\n name: 'checkout',\n initialState: getInitialState(),\n reducers: {\n receiveCheckout: (state, { payload }) => {\n const {\n buyerMember,\n purchaseOrder,\n sellerMember,\n shippingInfo,\n combinedShippingInfo,\n ongoingPaymentAttempt,\n shippingFeeRule\n } = payload;\n state.buyerMember = { ...buyerMember };\n state.sellerMember = { ...sellerMember };\n state.isFetching = false;\n state.hasError = false;\n state.purchaseOrderId = purchaseOrder.purchaseOrderId;\n state.orderNumber = purchaseOrder.orderNumber;\n state.paidStatus = purchaseOrder.paidStatus;\n state.ongoingPaymentAttempt = ongoingPaymentAttempt;\n state.shippingInfo.shippingOptions = shippingInfo.shippingOptions;\n state.shippingInfo.shippingPriceRange =\n shippingInfo.shippingPriceRange;\n state.shippingInfo.shippingDiscount = shippingInfo.shippingDiscount;\n state.shippingInfo.selectedCollectionPoint =\n shippingInfo.collectionPointId !== undefined\n ? { id: shippingInfo.collectionPointId }\n : undefined;\n state.combinedShippingInfo = combinedShippingInfo;\n state.shippingFeeRule = shippingFeeRule;\n state.purchaseOrder = purchaseOrder;\n state.shippingOptionsLoading = false;\n },\n receiveShippingOptions: (state, { payload }) => {\n state.shippingInfo.shippingOptions = payload;\n },\n setShippingOptionsLoading: (state, { payload }) => {\n state.shippingOptionsLoading = payload.isLoading;\n },\n receivePaymentOptions: (state, { payload }) => {\n const { paymentOptions } = payload;\n state.payment.paymentOptions = paymentOptions;\n state.payment.isFetching = false;\n },\n receiveCollectionPoints: (state, { payload }) => {\n state.shippingInfo.collectionPoints = payload;\n },\n setFetching: (state, { payload }) => {\n state.isFetching = payload;\n state.hasError = false;\n },\n openModal: (state, { payload }) => {\n const { open, status, paymentAttemptId } = payload;\n state.modal = {\n open,\n status,\n paymentAttemptId\n };\n },\n cancelPayment: (state) => {\n state.checkoutSummary.hasError = false;\n state.checkoutSummary.isFetching = false;\n },\n closeModal: (state) => {\n state.modal = {\n open: '',\n status: MODAL_STATUS.START\n };\n },\n setHasError: (state, { payload }) => {\n state.hasError = payload;\n state.isFetching = false;\n },\n setPaymentFetching: (state, { payload }) => {\n state.payment.isFetching = payload;\n state.payment.hasError = false;\n },\n setPaymentHasError: (state, { payload }) => {\n state.payment.hasError = payload;\n state.payment.isFetching = false;\n },\n setPaymentIsValid: (state, { payload }) => {\n state.payment.isValid = payload;\n },\n setPaymentMethodData: (state, { payload }) => {\n state.payment.paymentMethodData = payload;\n },\n setCheckoutSummaryFetching: (state, { payload }) => {\n state.checkoutSummary.isFetching = payload;\n state.checkoutSummary.hasError = false;\n },\n setCheckoutSummaryHasError: (state, { payload }) => {\n state.checkoutSummary.hasError = payload;\n state.checkoutSummary.isFetching = false;\n state.modal.status = MODAL_STATUS.ERROR;\n },\n setSelectedPayment: (state, { payload }) => {\n state.payment.selectedPayment = payload;\n state.checkoutSummary.hasError = false;\n },\n setOrderCalculation: (state, { payload }) => {\n state.payment.orderCalculation = payload;\n },\n setBuyerProtection: (state, { payload }) => {\n state.payment.buyerProtection = payload;\n },\n setSelectedShipping: (state, { payload }) => {\n state.selectedShipping = payload;\n },\n setOngoingPaymentAttempt: (state, { payload }) => {\n state.ongoingPaymentAttempt = payload;\n },\n setCombinedShippingInfo: (state, { payload }) => {\n state.combinedShippingInfo = {\n ...state.combinedShippingInfo,\n ...payload\n };\n },\n setBuyerMember: (state, { payload }) => {\n state.buyerMember = { ...state.buyerMember, ...payload };\n },\n setBuyerMemberAddress: (state, { payload }) => {\n state.buyerMember.address = {\n ...state.buyerMember.address,\n ...payload\n };\n },\n setCollectionPoint: (state, { payload }) => {\n state.shippingInfo.selectedCollectionPoint = payload;\n },\n setShippingInfoFetching: (state, { payload }) => {\n state.shippingInfo.isFetching = payload;\n },\n setCollectionPointSaving: (state, { payload }) => {\n state.shippingInfo.savingCollectionPoint = payload;\n },\n setDropinLoading: (state, { payload }) => {\n state.payment.dropinLoading = payload;\n }\n }\n});\n\nexport const {\n openModal,\n closeModal,\n cancelPayment,\n receiveCheckout,\n receiveShippingOptions,\n setShippingOptionsLoading,\n receivePaymentOptions,\n receiveCollectionPoints,\n setFetching,\n setHasError,\n setCheckoutSummaryFetching,\n setCheckoutSummaryHasError,\n setPaymentFetching,\n setPaymentHasError,\n setPaymentIsValid,\n setPaymentMethodData,\n setSelectedPayment,\n setOrderCalculation,\n setSelectedShipping,\n setOngoingPaymentAttempt,\n setCombinedShippingInfo,\n setBuyerMember,\n setBuyerMemberAddress,\n setCollectionPoint,\n setShippingInfoFetching,\n setCollectionPointSaving,\n setBuyerProtection,\n setDropinLoading\n} = checkoutSlice.actions;\n\nexport default checkoutSlice.reducer;\n","export const selectCategory = (state) => state.views.syi.category;\n","import axios from 'axios';\nimport { touchWebClient } from 'tradera/utils/http';\nimport { axiosConfigs } from 'tradera/utils/api';\nimport type {\n CampaignRequest,\n CampaignResponse,\n CampaignValidationResult\n} from './types';\n\nconst getCampaignCode = async (\n campaignCode: string,\n categoryId: string,\n brandAttributeValues: string[]\n) => {\n const requestData = {\n code: campaignCode,\n selectedCategories: categoryId ? [categoryId] : [],\n selectedBrandAttributes: brandAttributeValues\n };\n try {\n const response = await touchWebClient.post<\n CampaignResponse,\n CampaignRequest\n >('/selling/api/campaign', requestData, {\n cancelTokenId: 'SELLING_CAMPAIGN_CODE',\n ...axiosConfigs.authenticated\n });\n return response.data;\n } catch (error) {\n if (axios.isCancel(error)) {\n throw 'aborted';\n }\n throw 'Could not get the campaignCode';\n }\n};\n\nconst validate = async (\n campaignCode: string,\n categoryId: string,\n brandAttributeValues: string[]\n): Promise => {\n try {\n const data = await getCampaignCode(\n campaignCode,\n categoryId,\n brandAttributeValues\n );\n\n const result: CampaignValidationResult = {\n campaignCodeValid: data.validation.isValid,\n validationDisplayMessage: data.validation.message,\n hasEnded: data.validation.hasEnded\n };\n // KATS: this mapping serves no real purpose other adding another layer of abstraction, should probably be removed\n // when the campaign code is refactored to TS so that it's simple to rename the fields and catch any errors in code-time\n // instead of run-time.\n if (data.campaign) {\n result.campaignCode = data.campaign.code;\n result.campaignCodeId = data.campaign.id;\n result.campaignCodeMessage = data.campaign.description;\n result.isCustomLengthFeeFree = data.campaign.isCustomLengthFeeFree;\n result.isUnsoldFeeFree = data.campaign.isUnsoldFeeFree;\n result.provisionFactor = data.campaign.provisionFactor;\n result.discountFactor = data.campaign.discountFactor;\n result.maxFeeCap = data.campaign.maxFeeCap;\n result.bannerMobileImageUrl = data.campaign.bannerMobileImageUrl;\n result.bannerTabletImageUrl = data.campaign.bannerTabletImageUrl;\n result.bannerDesktopImageUrl = data.campaign.bannerDesktopImageUrl;\n }\n return result;\n } catch (reason) {\n if (reason === 'aborted') {\n return {\n campaignCodeValid: false,\n validationDisplayMessage: 'Valideringen avbröts.'\n };\n }\n\n return {\n campaignCodeValid: false,\n validationDisplayMessage: 'Kunde inte validera kampanjkoden.'\n };\n }\n};\n\nexport default { validate };\n","/* eslint-disable promise/always-return */\n/* eslint-disable promise/catch-or-return */\nimport campaignService from 'tradera/apps/syi/services/campaign-service';\nimport ThrottledAction from 'tradera/apps/syi/utils/throttled-action';\nimport userData from 'tradera/apps/syi/services/user-data';\nimport draftActions from './draft-actions';\nimport shippingActions from './shipping-actions';\nimport { getSyiSlice } from 'tradera/apps/syi/state/selectors/syi';\nimport type { AppDispatch, GetState } from 'tradera/state/configure-store';\nimport type { CampaignValidationResult } from '../../services/types';\nimport {\n disableZeroDayAuctions,\n enableRestart,\n enableZeroDayAuctions\n} from '../reducers/item-duration';\n\nconst CHARITIES = userData?.charities || [];\nconst throttleTimeout = 2000;\nconst throttledCampaignCodeValidation = new ThrottledAction(throttleTimeout);\nlet delayedValidationTimeoutId: ReturnType | undefined =\n undefined;\n\ntype Attribute = {\n id: number;\n options: {\n isActive: boolean;\n value: string;\n }[];\n};\n\nconst findBrandAttributeValues = (getState: GetState) => {\n if (\n !getSyiSlice(getState()).attributes ||\n !getSyiSlice(getState()).attributes.categoryAttributes\n ) {\n return [];\n }\n\n const brandAttribute: Attribute = getSyiSlice(\n getState()\n ).attributes.categoryAttributes.find((attribute: Attribute) => {\n const brandAttributeId = 3; //Brand Attribute has Id == 3\n if (attribute.id != brandAttributeId) {\n return false;\n }\n if (attribute.options.length === 0) {\n return false;\n }\n return true;\n });\n\n const brandAttributeValues = brandAttribute?.options\n .filter((option) => option.isActive)\n .map((option) => option.value);\n return brandAttributeValues;\n};\n\nconst resetCharityCampaign = (dispatch: AppDispatch, getState: GetState) => {\n const { name, forceFreeShipping: wasForceFreeShipping } = getSyiSlice(\n getState()\n ).charityCampaign;\n if (!name) {\n return;\n }\n dispatch({\n type: 'RESET_CHARITY_CAMPAIGN'\n });\n dispatch(disableZeroDayAuctions());\n if (wasForceFreeShipping) {\n dispatch(shippingActions.resetSelected());\n }\n};\n\nconst resetCampaign = (dispatch: AppDispatch) => {\n dispatch(resetCharityCampaign);\n dispatch({\n type: 'UNSET_UNSOLD_FEE_FREE_FOR_CAMPAIGN'\n });\n dispatch(enableRestart());\n dispatch({\n type: 'RESET_FEES'\n });\n dispatch({\n type: 'RESET_CAMPAIGN_BANNER'\n });\n};\n\nconst applyCharityFromCampaignCodeId =\n (campaignCodeId: number, campaignCode: string) =>\n (dispatch: AppDispatch) => {\n const charityCampaign = CHARITIES.find(\n (charityCampaign: CampaignValidationResult) =>\n charityCampaign.campaignCodeId === campaignCodeId\n );\n\n if (!charityCampaign) {\n dispatch(resetCharityCampaign);\n return;\n }\n\n dispatch({\n type: 'SET_CHARITY_CAMPAIGN',\n charityCampaign,\n campaignCode\n });\n const { allowZeroDayAuctions, forceFreeShipping } = charityCampaign;\n\n if (allowZeroDayAuctions) {\n dispatch(enableZeroDayAuctions());\n }\n\n if (forceFreeShipping) {\n dispatch({\n type: 'FORCE_FREE_SHIPPING'\n });\n }\n\n dispatch(draftActions.setDisplayPromoted(false));\n dispatch(draftActions.setDisplayHighlighted(false));\n };\n\nconst validateCampaignCode =\n () => (dispatch: AppDispatch, getState: GetState) => {\n const campaignCode = getSyiSlice(getState()).campaignCode.campaignCode;\n if (!campaignCode || campaignCode.trim().length === 0) {\n return;\n }\n dispatch({\n type: 'VALIDATING_CAMPAIGN_CODE_BY_SEARCHING'\n });\n const isReadOnly = getSyiSlice(getState()).campaignCode.isReadOnly;\n throttledCampaignCodeValidation.execute(function () {\n const category = getSyiSlice(getState()).category;\n const brandAttributeValues = findBrandAttributeValues(getState);\n campaignService\n .validate(\n campaignCode,\n category.draftCategoryId,\n brandAttributeValues\n )\n .then((result) => {\n const {\n bannerDesktopImageUrl,\n bannerMobileImageUrl,\n bannerTabletImageUrl,\n campaignCodeId,\n hasEnded,\n isUnsoldFeeFree,\n maxFeeCap,\n provisionFactor = null,\n validationDisplayMessage\n } = result;\n\n // If the campaign is read-only, ignore if the code is invalid since it has already been used.\n const campaignCodeValid = isReadOnly\n ? true\n : result.campaignCodeValid;\n const campaignCodeMessage = isReadOnly\n ? null\n : result.campaignCodeMessage;\n\n const campaignCodeDescription = campaignCodeValid\n ? campaignCodeMessage\n : validationDisplayMessage;\n\n const commissionPercent =\n provisionFactor !== null\n ? `${provisionFactor * 100}`\n : null;\n\n dispatch({\n type: 'SET_CAMPAIGN_VALIDATION_RESULT',\n bannerDesktopImageUrl,\n bannerMobileImageUrl,\n bannerTabletImageUrl,\n campaignCode,\n campaignCodeDescription,\n campaignCodeId,\n campaignCodeValid,\n hasEnded,\n maxFeeCap,\n commissionPercent\n });\n\n if (!campaignCodeValid) {\n dispatch(resetCampaign);\n return;\n }\n\n if (isUnsoldFeeFree) {\n dispatch({\n type: 'SET_UNSOLD_FEE_FREE_FOR_CAMPAIGN'\n });\n }\n\n dispatch({\n type: 'DISABLE_RESTART'\n });\n\n if (campaignCodeId) {\n dispatch(\n applyCharityFromCampaignCodeId(\n campaignCodeId,\n campaignCode\n )\n );\n }\n });\n });\n };\n\nconst saveTypedCampaignCode =\n (inputCampaignCode: string) =>\n (dispatch: AppDispatch, getState: GetState) => {\n const campaignCode = inputCampaignCode?.trim() || null;\n dispatch({\n type: 'SET_UNVERIFIED_CAMPAIGN_CODE',\n campaignCode\n });\n\n if (delayedValidationTimeoutId) {\n clearTimeout(delayedValidationTimeoutId);\n }\n\n if (campaignCode === null) {\n dispatch(resetCampaign);\n return;\n }\n\n /* eslint-disable-next-line better-mutation/no-mutation */\n delayedValidationTimeoutId = setTimeout(() => {\n if (delayedValidationTimeoutId) {\n clearTimeout(delayedValidationTimeoutId);\n }\n dispatch(validateCampaignCode());\n /* eslint-disable-next-line better-mutation/no-mutation */\n delayedValidationTimeoutId = setTimeout(() => {\n if (getSyiSlice(getState()).campaignCode.searching) {\n dispatch({\n type: 'SEARCHING_FOR_CAMPAIGN_CODE_IS_DELAYED'\n });\n }\n }, 100);\n }, 700);\n };\n\nconst setInitialCampaignCode =\n (\n campaignCode: string,\n campaignCodeId: string,\n campaignCodeDescription: string,\n isChangeItem: boolean\n ) =>\n (dispatch: AppDispatch) => {\n const isReadOnly = campaignCodeId && isChangeItem;\n\n dispatch({\n type: 'INITIALIZE_CAMPAIGN_CODE_STATE',\n campaignCode,\n campaignCodeId,\n campaignCodeDescription,\n isReadOnly\n });\n dispatch(resetCampaign);\n\n // Always validate because this fetches info about the campaign like free shipping etc.\n // If the campaign is read-only, ignore if the code is invalid since it has already been used.\n dispatch(validateCampaignCode());\n };\n\nconst toggleShowInput = (isChecked: boolean) => (dispatch: AppDispatch) => {\n if (delayedValidationTimeoutId) {\n clearTimeout(delayedValidationTimeoutId);\n }\n dispatch({\n type: 'TOGGLE_CAMPAIGN_CODE_CHECKBOX',\n isChecked: isChecked\n });\n dispatch(resetCampaign);\n};\n\nexport default {\n toggleShowInput,\n setInitialCampaignCode,\n saveTypedCampaignCode,\n validateCampaignCode\n};\n","export const getSyiSlice = (state) => state.views.syi;\nexport const selectShortDescription = (state) =>\n getSyiSlice(state).shortDescription.shortDescription;\nexport const selectItemIdFromDraft = (state) =>\n getSyiSlice(state).draft?.itemId || undefined;\n","import { isSwedenCountryNameOrUndefined } from 'tradera/localization/countrycode';\n\nexport const selectViewItem = (state) => state.views.viewItem;\n\nexport const selectTranslatedDescription = (state) =>\n state.views.viewItem.translatedDescription || null;\n\nexport const selectCurrentDescriptionLanguageCodeIso2 = (state) =>\n state.views.viewItem.currentDescriptionLanguageCodeIso2 || null;\n\nexport const selectItemDetails = (state) => selectViewItem(state).itemDetails;\n\nexport const selectBreadcrumbs = (state) => selectViewItem(state).breadCrumbs;\n\nexport const selectItemId = (state) => selectItemDetails(state)?.itemId;\n\nexport const selectBidInfo = (state) => selectViewItem(state).bidInfo;\n\nexport const selectAllowedBuyerRegionOutsideSweden = (state) =>\n selectItemDetails(state)?.allowedBuyerRegion &&\n !isSwedenCountryNameOrUndefined(\n selectItemDetails(state).allowedBuyerRegion\n );\n\nexport const selectTranslatedDescriptionState = (state) =>\n selectViewItem(state).translatedDescriptionState;\n\nexport const selectAllowedBuyerRegion = (state) =>\n selectItemDetails(state).allowedBuyerRegion;\n","import { logger } from 'packages/logger';\n\nimport { getSearchResults } from './api';\nimport pageActions from '../page/actions';\nimport { API_ERRORS } from 'tradera/utils/api';\nimport { reload } from 'tradera/utils/location';\nimport initialState from './initial-state';\nimport * as discoverTracking from 'tradera/apps/tradera/components/discover/helpers/search-gtm';\nimport { selectShippingRegionCountryCodeIso2 } from 'tradera/state/shipping-region/selectors';\nimport { replacePartInPath } from 'tradera/utils/url';\nimport {\n handleSearchResultsError,\n requestSearchResults,\n initialize as initReducer,\n receiveSearchResults as receiveSearchResultsReducerAction\n} from './reducer';\nimport * as itemActions from 'tradera/state/items/actions';\n\nconst updatePageMetaForSearchResults = () => (dispatch, getState) => {\n const discover = getState().discover;\n const { reduxContainer } = discover;\n const { pageMeta } = reduxContainer;\n dispatch(\n pageActions.setPageMeta({\n ...pageMeta\n })\n );\n};\n\n/**\n *\n * @param {object} payload the normalized version of the response\n * @param {string} payload.endpoint\n * @param {object} payload.queryParams\n * @param {object} payload.result\n * @param {object} [?payload.result.categoryPath]\n * @param {object[]} [payload.result.items]\n * @param {object} [payload.result.itemsOnDisplay]\n * @param {object[]} [payload.result.itemsOnDisplay.items]\n * @param {object} [payload.result.reduxContainer]\n * @param {object} [payload.result.reduxContainer.ads]\n * @param {object} [payload.result.reduxContainer.pageMeta]\n */\nexport const receiveSearchResults =\n (payload, shippingRegionCountryCodeIso2) => (dispatch) => {\n dispatch(\n receiveSearchResultsReducerAction({\n ...payload,\n shippingRegionCountryCodeIso2\n })\n );\n const items = payload.result?.items || [];\n dispatch(\n itemActions.addItemsToWishList(\n items\n .filter((item) => item.inWishList)\n .map((item) => item.itemId)\n )\n );\n };\n\nexport const fetchSearchResults = (\n endpoint,\n queryParams,\n pageType,\n onLoaded\n) => {\n return async (dispatch, getState) => {\n dispatch(requestSearchResults());\n const {\n environment: { version }\n } = getState();\n\n return getSearchResults(endpoint, queryParams, '', version)\n .then(({ data: result }) => {\n const { isRedirect, fromCategoryId, toCategoryId } = result;\n\n if (isRedirect) {\n const newPathname = replacePartInPath(\n window.location.pathname,\n `${fromCategoryId}`,\n `${toCategoryId}`\n );\n const newUrl = newPathname + window.location.search;\n window.location.replace(newUrl);\n return;\n }\n\n const searchResults = { result, endpoint, queryParams };\n const shippingRegionCountryCodeIso2 =\n selectShippingRegionCountryCodeIso2(getState());\n dispatch(\n receiveSearchResults(\n searchResults,\n shippingRegionCountryCodeIso2\n )\n );\n return searchResults;\n })\n .catch((error) => {\n switch (error.message) {\n case API_ERRORS.CANCELLED:\n break;\n case API_ERRORS.VERSION_MISMATCH:\n reload(true);\n break;\n default:\n dispatch(handleSearchResultsError(error.message));\n break;\n }\n switch (error.message) {\n case API_ERRORS.CANCELLED:\n case API_ERRORS.NETWORK:\n case API_ERRORS.TIMEOUT:\n case API_ERRORS.VERSION_MISMATCH:\n break;\n default:\n logger(error);\n break;\n }\n })\n .finally(() => {\n dispatch(afterReceiveSearchResults(pageType, onLoaded));\n });\n };\n};\n\nexport const afterReceiveSearchResults =\n (pageType, onLoaded) => (dispatch, getState) => {\n dispatch(updatePageMetaForSearchResults(pageType));\n dispatch(() => {\n trackNewSearch(getState);\n onLoaded();\n });\n };\n\nexport const initialize = () => (dispatch) => {\n dispatch(initReducer(initialState()));\n};\n\nconst trackNewSearch = (getState) => {\n const state = getState();\n const { categoryPath, items, metaTitle } = state.discover;\n discoverTracking.trackNewSearch(\n categoryPath,\n items.map((x) => x.itemId),\n metaTitle\n );\n};\n","export default () => {\n return {\n activeBrands: [],\n activeFilters: [],\n attributeFilters: [],\n categoryPath: [],\n currentCategoryId: 0,\n endpoint: null,\n error: null,\n filterCategories: {},\n filterPrice: {},\n filters: {},\n hasResult: false,\n headerText: null,\n internalSearch: {},\n introText: null,\n isFetchingGeolocation: false,\n isFilterOpen: false,\n isSavedSearchEmailEnabled: false,\n isShopOwnedByCurrentMember: false,\n items: [],\n itemsOnDisplay: [],\n mainText: null,\n pagination: null,\n queryParams: {},\n totalItems: 0,\n reduxContainer: {},\n searchLanguages: []\n };\n};\n","export const selectInvoiceCheckout = (state) =>\n state.views.invoiceCheckout.invoice;\n\nexport const selectInvoicePayment = (state) =>\n state.views.invoiceCheckout.payment;\n\nexport const selectInvoiceOngoingPayment = (state) =>\n state.views.invoiceCheckout.ongoingPaymentAttempt;\n\nexport const selectCheckoutSummary = (state) =>\n state.views.invoiceCheckout.checkoutSummary;\n\nexport const selectSellerPhoneNumber = (state) =>\n state.views.invoiceCheckout.sellerPhoneNumber;\n","export const MODAL_TYPE = {\n BANK_ID: 'BANK_ID',\n SWISH_HANDEL: 'SWISH_HANDEL'\n};\n\nexport const MODAL_STATUS = {\n START: 'START',\n COMPLETE: 'COMPLETE',\n ERROR: 'ERROR'\n};\n\nexport const PAYMENT_OPTIONS = {\n CARD: 'Card',\n APPLEPAY: 'ApplePay',\n GOOGLEPAY: 'GooglePay',\n SWISH_HANDEL: 'SwishHandel',\n VISA_MASTERCARD: 'VisaMasterCard'\n};\n\nexport const PAYMENT_OPTION_STATUS = {\n AVAILABLE: 'Available',\n UNAVAILABLE_DUE_TO_AMOUNT: 'UnavailableDueToAmount'\n};\n\nexport default () => ({\n invoice: {},\n ongoingPaymentAttempt: {\n invoicePaymentAttemptId: null,\n paymentMethod: null\n },\n payment: {\n hasError: false,\n isFetching: false,\n paymentOptions: null,\n selectedPayment: null,\n paymentMethodData: null,\n modal: {\n open: '',\n status: MODAL_STATUS.START\n }\n },\n checkoutSummary: {\n hasError: false,\n isFetching: false\n }\n});\n","import qs from 'qs';\nimport { touchWebClient, webApiClient } from 'tradera/utils/http';\n\nexport const createShipmentCheckout = async () =>\n webApiClient.post('/mytradera/shipmentcheckout/createshipmentcheckout');\n\nexport const deleteShipment = async (shipmentId) =>\n touchWebClient.post('/my/shipping/checkout/delete', { shipmentId });\n\nexport const getShippingOptions = (\n fromCountryCode,\n toCountryCode,\n purchaseOrderId\n) => {\n const params = {\n fromCountryCode,\n toCountryCode,\n purchaseOrderId\n };\n\n return webApiClient.get(\n `/selling/shipmentcheckout/shipping-products-for-country-by-weight-span?${qs.stringify(\n params\n )}`\n );\n};\n\nexport const setShipmentDetails = async (payload) =>\n webApiClient.post('/mytradera/shipmentcheckout/shipment', {\n shippingDetails: payload\n });\n\nexport const setShippingAsBooked = async (purchaseOrderId) =>\n webApiClient.post('/member/selling/item-shipping-booked', {\n purchaseOrderId: purchaseOrderId,\n booked: true\n });\n\nexport const setShippingAsShipped = async (purchaseOrderId) =>\n webApiClient.post('/member/selling/item-shipped', {\n purchaseOrderId: purchaseOrderId,\n shipped: true\n });\n\nexport const getMemberSoldItemShippingInfo = (purchaseOrderId) =>\n webApiClient.get(\n `/member/selling/sold-item/shipping-info-v2/${purchaseOrderId}`\n );\n\nexport const getPaymentOptions = async (shipmentCheckoutId) =>\n webApiClient.get(\n `/mytradera/shipmentcheckout/shipmentpaymentoptions/${shipmentCheckoutId}`\n );\n\nexport const initializePayment = async (formData) =>\n webApiClient.post(\n '/mytradera/shipmentcheckout/initializeshipmentpaymentattempt',\n formData\n );\n\nexport const getPaymentStatus = async (paymentAttemptId) =>\n webApiClient.get(\n `/mytradera/shipmentcheckout/shipmentpaymentattemptstatus/${paymentAttemptId}`\n );\n\nexport const completePayment = async (formData) =>\n webApiClient.post(\n '/mytradera/shipmentcheckout/completeshipmentpaymentattempt',\n formData\n );\n\nexport const cancelPayment = async (formData) =>\n webApiClient.post(\n '/mytradera/shipmentcheckout/cancelshipmentpaymentattempt',\n formData\n );\n\nexport const getExternalAuthData = async (paymentAttemptId) =>\n webApiClient.get(\n `/mytradera/shipmentcheckout/shipmentpaymentattemptauthenticationdata/${paymentAttemptId}`\n );\n\nexport const getBraintreeToken = async ({\n shipmentCheckoutId,\n paymentOption\n}) =>\n webApiClient.get(\n `/mytradera/shipmentcheckout/shipmentbraintreeclienttoken/${shipmentCheckoutId}`,\n {\n params: {\n paymentMethod: paymentOption\n },\n withCredentials: true\n }\n );\n\n// Export object for Sinon stubbing\nconst getShippingConfirmation = (shippingCheckoutId) =>\n touchWebClient.get(`/my/shipping/confirmation/${shippingCheckoutId}/data`);\n\nconst getShippingConfirmationStatus = (url) => touchWebClient.get(url);\n\nexport default {\n createShipmentCheckout,\n deleteShipment,\n getShippingOptions,\n setShipmentDetails,\n setShippingAsBooked,\n setShippingAsShipped,\n getMemberSoldItemShippingInfo,\n getPaymentOptions,\n initializePayment,\n getPaymentStatus,\n completePayment,\n cancelPayment,\n getExternalAuthData,\n getBraintreeToken,\n getShippingConfirmation,\n getShippingConfirmationStatus\n};\n","const SwedenCountryCode = 'SE';\n\nexport const isInternationalShippingToCountryAllowed = (\n region,\n countryCodeIso2\n) => {\n switch (region) {\n case 'Sweden':\n return isSwedenCountryCode(countryCodeIso2);\n case 'Nordic':\n return isNordicCountryCode(countryCodeIso2);\n case 'EU':\n return isEuCountryCode(countryCodeIso2);\n case 'International':\n return true;\n default:\n throw `Unhandled buyer region: ${region}`;\n }\n};\n\nexport const isSwedenCountryCode = (countryCodeIso2) =>\n isCountryCode(SwedenCountryCode, countryCodeIso2);\n\nexport const isNordicCountryCode = (countryCodeIso2) =>\n containsCode(nordicCountryCodes, countryCodeIso2);\n\nexport const isEuCountryCode = (countryCodeIso2) =>\n containsCode(euCountryCodes, countryCodeIso2);\n\nconst containsCode = (codes, code) =>\n !!codes.find((c) => isCountryCode(code, c));\n\nconst isCountryCode = (c1, c2) => c1.toUpperCase() === c2.toUpperCase();\n\nconst nordicCountryCodes = [\n 'SE',\n 'FI',\n 'NO',\n 'DK',\n 'IS',\n 'GL',\n 'FO',\n 'AX',\n 'SJ'\n];\n\nconst euCountryCodes = [\n 'AT',\n 'BE',\n 'BG',\n 'CZ',\n 'DE',\n 'DK',\n 'EE',\n 'EL',\n 'ES',\n 'FI',\n 'FR',\n 'GR',\n 'HR',\n 'HU',\n 'IE',\n 'IT',\n 'LT',\n 'LU',\n 'LV',\n 'MT',\n 'NL',\n 'PL',\n 'PT',\n 'RO',\n 'SE',\n 'SI',\n 'SK'\n];\n","/**\n * This is a helper class for sending google analytics events for the search experience\n * This is a wrapper for the GtmService. Do not call GTM or GA directly but use the GtmService.\n * Events tracked by this file set all GA categories to \"Search\" to namespace events\n */\nimport { GtmService } from 'tradera/services/google-tagmanager-service';\n\nconst GA_EVENT_SEARCH_CATEGORY = 'Search';\nexport const GA_EVENT_SAVE_SEARCH = 'Saved Search';\nexport const GA_EVENT_SAVE_SEARCH_MODAL = 'Save search modal';\nexport const GA_EVENT_SAVE_SEARCH_RELATED = 'Save search related';\nexport const GA_EVENT_SAVE_SEARCH_STICKY = 'Save search sticky';\nexport const GA_EVENT_SAVE_SEARCH_BANNER = 'Save search banner';\n\nconst filterNameMappings = {\n itemCondition: 'Condition',\n itemType: 'Ad Format',\n sellerType: 'Seller Type',\n county: 'Geo - Selected',\n countyBox: 'Geo',\n itemStatus: 'Item Status',\n shoeTypes: 'Type',\n subDepartments: 'Department',\n shoeSizes: 'Size',\n brandTags: 'Brand',\n sortBy: 'Sorting',\n price: 'Price',\n Layout: 'Layout'\n};\n\n/**\n * Generic action tracker for things that happen in the Search.\n * @param {string} action\n * @param {string} label\n */\nexport const trackAction = (action, label) => {\n GtmService.trackAction(GA_EVENT_SEARCH_CATEGORY, action, label);\n};\n\nconst getFilterLabel = (key) => {\n if (key in filterNameMappings) {\n return filterNameMappings[key];\n } else {\n return key;\n }\n};\n\n/**\n * translates the tech names of the filters to ga friendly names. to see the techie names a filter has\n * see the URL paramters on a search or a browse page.\n * @param {string} filter the name of the filter\n * @param {string} value the value the filter gets\n */\nexport const trackFilter = (filter, value) => {\n const action = getFilterLabel(filter);\n trackAction(`Filter ${action}`, value);\n};\n\nexport const trackButton = (label) => {\n trackAction('Button', label);\n};\n\nexport const trackLink = (action, label) => {\n trackAction(`Link - ${action}`, label);\n};\n\nexport const trackPriceFilter = (fromPrice, toPrice) => {\n // get a label that represents the current selected value\n const lbl = [];\n if (fromPrice !== '1' && typeof fromPrice !== 'undefined') {\n lbl.push('Min set');\n }\n if (typeof toPrice !== 'undefined') {\n lbl.push('Max set');\n }\n if (lbl.length === 0) {\n lbl.push('All');\n }\n trackAction(`Filter Price`, lbl.join(' and '));\n};\n\n/**\n * Tracks to google tag manager that a new search was made\n * @param {object} searchResults data returned fromm ajax when doing a search or browsing.\n * Note: needs to be the normalized version.\n */\nexport const trackNewSearch = (categoryPath, itemIds, metaTitle) => {\n if (typeof categoryPath === 'undefined' || categoryPath.length === 0) {\n return;\n }\n\n const reverseCategoryPath = categoryPath\n .filter((c) => c.id > 0)\n .map((c) => c.name)\n .reverse();\n\n GtmService.trackGtmEvent('viewCategory', {\n category: reverseCategoryPath.join(' > ')\n });\n\n GtmService.push({\n 'page.content-group-2': reverseCategoryPath.slice(0, 3).join(' > '),\n categoryId: categoryPath.length > 0 ? categoryPath[0].id : null\n });\n\n if (itemIds && itemIds.length >= 3) {\n GtmService.trackGtmEvent('viewItems', {\n itemIds: itemIds.slice(0, 3),\n keywords: categoryPath[0].name\n });\n }\n\n GtmService.push({\n ga_page_title: metaTitle\n });\n};\n","export default {\n ERRORS: {\n GENERIC:\n 'Något har gått fel på Tradera. Vi jobbar på att fixa det. Försök igen om en stund.'\n },\n SHIPPING_LABELS: {\n NO_SELECTED_SHIPPING: 'Inget fraktsätt valt',\n FREE_SHIPPING: 'Fri frakt',\n TAKEAWAY: 'Avhämtning'\n }\n} as const;\n","export const setNestedObjectValue = (object, keyPathArray, value) => {\n keyPathArray.reduce((acc, key, index, array) => {\n if (index + 1 < array.length) {\n acc[key] = acc[key] || {};\n } else {\n acc[key] = value;\n }\n return acc[key];\n }, object);\n};\n","export const TRACK_REDUX_ACTIONS = ['SET_DRAFT_ID', 'SET_DRAFT_VERSION'];\n// Note: Don't add large objects - Sentry will reject events over 200kB\nexport const SAVE_REDUX_STATE_PATHS = [\n 'views.syi.draft.draftId',\n 'views.syi.draft.itemId',\n 'views.syi.draft.version',\n 'views.syi.syi.autoSaveEnabled'\n];\n","import has from 'lodash/has';\nimport get from 'lodash/get';\nimport * as Sentry from '@sentry/react';\nimport { setNestedObjectValue } from 'tradera/utils/set-nested-object-value';\nimport {\n TRACK_REDUX_ACTIONS,\n SAVE_REDUX_STATE_PATHS\n} from 'tradera/constants/sentry-redux-filters';\n\nexport const actionTransformer = (action) =>\n TRACK_REDUX_ACTIONS.includes(action.type) ? action : null;\n\nexport const stateTransformer = (state) =>\n SAVE_REDUX_STATE_PATHS.reduce((sentryState, keyString) => {\n const keyArray = keyString.split('.');\n if (has(state, keyArray)) {\n const value = get(state, keyArray);\n setNestedObjectValue(sentryState, keyArray, value);\n }\n\n return sentryState;\n }, {});\n\nexport const sentryReduxEnhancer = Sentry.createReduxEnhancer({\n actionTransformer,\n stateTransformer\n});\n","import { touchWebClient } from 'tradera/utils/http';\n\nconst sendSessionStart = () => {\n touchWebClient.post('/selling/api/scribe/session-start');\n};\n\nconst sendSessionDuration = (duration, madeByTemplate) => {\n touchWebClient.post('/selling/api/scribe/session-duration', {\n durationMilliSeconds: duration,\n madeByTemplate: madeByTemplate\n });\n};\n\nconst sendDuration = (measuredName, durationMilliSeconds) => {\n touchWebClient.post('/selling/api/scribe/duration', {\n measuredName: measuredName,\n durationMilliSeconds: durationMilliSeconds\n });\n};\n\nconst sendIncrement = (name) => {\n touchWebClient.post('/selling/api/scribe/increment', {\n name: name\n });\n};\n\nconst sendValidationErrors = (errors) => {\n touchWebClient.post('/selling/api/scribe/form-validation-errors', {\n errors: errors\n });\n};\n\nexport default {\n sendSessionStart,\n sendSessionDuration,\n sendDuration,\n sendIncrement,\n sendValidationErrors\n};\n","import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react';\n\nexport const feesApi = createApi({\n reducerPath: 'feesApi',\n baseQuery: fetchBaseQuery({\n baseUrl: '/api/webapi/selling/commissionfee'\n }),\n endpoints: (builder) => ({\n // itemType and price does not affect the provision fee,\n // therefore we defaults to itemType `Auction` and price `1`\n getCommissionFee: builder.query({\n query: ({ categoryId }) =>\n `?categoryId=${categoryId}&itemType=Auction&price=1`\n })\n })\n});\n\nexport const { useGetCommissionFeeQuery } = feesApi;\n","import { getSyiSlice } from '../../selectors/syi';\n\nexport const getSelectedShippingProducts = (\n shippingByWeight,\n selectedShippingOptions,\n offerTakeaway\n) => {\n const result = selectedShippingOptions.map((selected) => {\n const shippingOption = shippingByWeight\n .flatMap((options) => options.products)\n .find((product) => {\n if (!selected.productId || !selected.weight) {\n return product.providerId === selected.type;\n }\n\n return (\n product.providerId === selected.type &&\n product.weight === selected.weight &&\n product.id === selected.productId\n );\n });\n\n if (!shippingOption) return null;\n\n return !!selected.isShippingFreeBasedOnCharity ===\n !!shippingOption.isShippingFreeBasedOnCharity\n ? {\n ...shippingOption,\n cost: selected.cost\n }\n : shippingOption;\n });\n\n const possiblePosten = selectedShippingOptions.find(\n (shippingOption) => shippingOption.type === 'Posten'\n );\n\n if (possiblePosten) {\n result.push({\n ...possiblePosten,\n productId: possiblePosten.type,\n providerId: possiblePosten.type,\n price: possiblePosten.cost\n });\n }\n\n if (offerTakeaway) {\n const takeAwayOption =\n result.length === 0\n ? {\n type: 'TakeawayOnly',\n providerId: 'TakeawayOnly',\n name: 'Endast avhämtning',\n summaryDisplayName: 'Endast avhämtning'\n }\n : {\n type: 'Takeaway',\n providerId: 'Takeaway',\n name: 'Avhämtning',\n summaryDisplayName: 'Avhämtning'\n };\n result.push(takeAwayOption);\n }\n\n return result.filter((x) => x !== null);\n};\n\nexport const selectSelectedShippingOptions = (state) =>\n getSyiSlice(state).shipping.selectedShippingOptions;\n","/* eslint-disable better-mutation/no-mutation */\n\nimport { createSlice } from '@reduxjs/toolkit';\n\n// if on server there is no window object\nconst windowExists = typeof window !== 'undefined';\nconst windowOrFallback = windowExists ? window : {};\n\nconst isNewDraft = windowOrFallback.location?.pathname?.endsWith('new');\nconst queryParams = new URLSearchParams(windowOrFallback?.location?.search);\nconst queryParamCharityId = queryParams.get('charityId');\nconst preselectCharity = isNewDraft && queryParamCharityId;\n\nconst initialStateShipping = {\n forceFreeShipping: false,\n isFreeShippingPaidByProvider: false,\n freeShippingPaidByProviderName: null\n};\n\nconst initialState = {\n anonymous: true,\n charityId: preselectCharity ? Number(queryParamCharityId) : null,\n description: null,\n logoUrl: null,\n name: null,\n percentageToDonate: preselectCharity ? 100 : 0,\n ...initialStateShipping\n};\n\nconst charitySlice = createSlice({\n name: 'charity',\n initialState,\n reducers: {\n setCharityId: (state, { payload }) => {\n state.charityId = payload.charityId;\n if (payload.charityId) {\n state.percentageToDonate = 100;\n } else {\n state.percentageToDonate = 0;\n }\n },\n setCharityInfo: (\n state,\n { payload: { name, description, logoUrl } }\n ) => {\n return { ...state, name, description, logoUrl };\n },\n setCharityAnonymous: (state, { payload }) => {\n state.anonymous = payload.anonymous;\n },\n setCharityFromDraft: (state, { payload }) => {\n state.charityId = payload.charityId;\n state.percentageToDonate = payload.percentageToDonate;\n state.anonymous = payload.anonymous;\n },\n resetCharity: () => {\n return { ...initialState };\n },\n setCharityShippingInfo: (state, { payload }) => {\n return { ...state, ...payload };\n }\n }\n});\n\nexport const {\n resetCharity,\n setCharityAnonymous,\n setCharityFromDraft,\n setCharityId,\n setCharityInfo,\n setCharityShippingInfo\n} = charitySlice.actions;\n\nexport default charitySlice.reducer;\n","export const selectBox = (state) => state.views.shippingCalculator.box;\n\nexport const selectFilterValue = (filterName) => (state) =>\n state.views.shippingCalculator.box[filterName];\n\nexport const selectIsBoxValid = (state) =>\n state.views.shippingCalculator.box.height > 0 &&\n state.views.shippingCalculator.box.length > 0 &&\n state.views.shippingCalculator.box.width > 0 &&\n state.views.shippingCalculator.box.weight > 0;\n\nexport const selectWeightUnit = (state) =>\n state.views.shippingCalculator.weightUnit;\n\nexport const selectWeightSliderValue = (state) =>\n state.views.shippingCalculator.weightSliderValue;\n\nexport const selectNormalizedWeight = (state) =>\n state.views.shippingCalculator.box.weight % 1000 === 0\n ? state.views.shippingCalculator.box.weight / 1000\n : state.views.shippingCalculator.box.weight;\n\nexport const selectWeightString = (state) =>\n `${selectNormalizedWeight(state)} ${selectWeightUnit(state)}`;\n\nexport const isLoadingShippingProducts = (state) =>\n state.views.shippingCalculator.isLoadingShippingProducts;\n\nexport const selectShippingProviders = (state) =>\n state.views.shippingCalculator.shippingProviders.map((provider) => ({\n ...provider,\n domesticProducts:\n selectShippingProducts(state)[\n state.views.shippingCalculator.selectedFromCountry\n ]?.filter(\n ({ shippingProvider }) =>\n shippingProvider === provider.providerName\n ) || []\n }));\n\nexport const selectAvailableShippingProviders = (state) => {\n const shippingProviders = state.views.shippingCalculator.shippingProviders;\n const shippingProducts = selectShippingProducts(state);\n\n const includedProviders = [];\n\n shippingProviders.forEach((provider) => {\n Object.keys(shippingProducts).forEach((key) => {\n if (\n shippingProducts[key] &&\n shippingProducts[key].length > 0 &&\n shippingProducts[key].some(\n (x) =>\n x.shippingProvider === provider.providerName &&\n !includedProviders.includes(x.shippingProvider)\n )\n ) {\n includedProviders.push(provider.providerName);\n }\n });\n });\n\n return shippingProviders.filter(({ providerName }) =>\n includedProviders.find((p) => p === providerName)\n );\n};\n\nexport const selectShippingProducts = (state) => {\n const {\n internationalProductsGroupedByFromThenToCountry,\n selectedFromCountry\n } = state.views.shippingCalculator;\n return (\n internationalProductsGroupedByFromThenToCountry[selectedFromCountry] ||\n {}\n );\n};\n\nexport const selectIsDifferentFromDefaultBox = (state) =>\n !(\n state.views.shippingCalculator.box.length ===\n state.views.shippingCalculator.defaultBox.length &&\n state.views.shippingCalculator.box.width ===\n state.views.shippingCalculator.defaultBox.width &&\n state.views.shippingCalculator.box.height ===\n state.views.shippingCalculator.defaultBox.height &&\n state.views.shippingCalculator.box.weight ===\n state.views.shippingCalculator.defaultBox.weight\n );\n\nexport const selectSelectedCountries = (state) => ({\n selectedFromCountry: state.views.shippingCalculator.selectedFromCountry,\n selectedToCountry: state.views.shippingCalculator.selectedToCountry\n});\n\nexport const selectAvailableCountryCodes = (state) => ({\n availableFromCountryCodes:\n state.views.shippingCalculator.availableFromCountryCodes,\n availableToCountryCodes:\n state.views.shippingCalculator.availableToCountryCodes\n});\n\nexport const selectShowError = (state) =>\n state.views.shippingCalculator.showError;\n","export const CHECKOUT_ERRORS = {\n BANK_ID_CANCEL: 'BANK_ID_CANCEL',\n DECLINED: 'DECLINED',\n DECLINED_PAYNOVA: 'DECLINED_PAYNOVA',\n GENERIC: 'GENERIC',\n PERSONAL_ID_INVALID: 'PERSONAL_ID_INVALID',\n EMAIL_ADDRESS_INVALID: 'EMAIL_ADDRESS_INVALID',\n NotSpecifiedShippingOption: 'NotSpecifiedShippingOption',\n NO_PAYMENT_METHOD: 'No payment method is available.'\n};\n\nconst CHECKOUT_ERROR_STRINGS = {\n [CHECKOUT_ERRORS.DECLINED_PAYNOVA]:\n 'checkout_summary_error_declined_paynova',\n [CHECKOUT_ERRORS.DECLINED]: 'checkout_summary_error_declined',\n [CHECKOUT_ERRORS.GENERIC]: 'checkout_summary_error',\n [CHECKOUT_ERRORS.PERSONAL_ID_INVALID]:\n 'checkout_summary_error_personal_id_invalid',\n [CHECKOUT_ERRORS.EMAIL_ADDRESS_INVALID]: 'checkout_paynova_email_invalid',\n [CHECKOUT_ERRORS.NotSpecifiedShippingOption]:\n 'checkout_summary_error_shipping_non_spec',\n [CHECKOUT_ERRORS.NO_PAYMENT_METHOD]:\n 'checkout_summary_error_no_payment_method',\n // Possible error codes from backend\n ['Error']: 'checkout_summary_error',\n ['Declined']: 'checkout_summary_error_declined',\n ['InsufficientFunds']: 'checkout_summary_error_insufficient_funds',\n ['PaymentInstrumentTypeNotAccepted']:\n 'checkout_summary_error_payment_intrument_type_not_accepted'\n};\n\ntype CheckoutErrorMessage = keyof typeof CHECKOUT_ERRORS;\n\nexport const getCheckoutErrorMessage = (type: CheckoutErrorMessage) => {\n return (\n CHECKOUT_ERROR_STRINGS[type] ||\n CHECKOUT_ERROR_STRINGS[CHECKOUT_ERRORS.GENERIC]\n );\n};\n","/* eslint-disable better-mutation/no-mutation */\nimport { createSlice } from '@reduxjs/toolkit';\nimport getInitialState from './initial-state';\n\nconst cartSlice = createSlice({\n name: 'cart',\n initialState: getInitialState(),\n reducers: {\n setFetching: (state, { payload }) => {\n state.isFetching = payload;\n },\n setCartData: (state, { payload }) => {\n state.isFetching = false;\n state.merchantPreOrders = payload.merchantPreOrders;\n state.errors = {};\n },\n setError: (state, { payload }) => {\n state.errors[payload.id] = payload.message;\n }\n }\n});\n\nexport const { setFetching, setCartData, setError } = cartSlice.actions;\n\nexport default cartSlice.reducer;\n","export default () => {\n return {\n isFetching: false,\n merchantPreOrders: [],\n errors: {}\n };\n};\n","/**\n * Clone of 'init-data'\n * @returns initData as JSON;\n */\nconst initData = () => {\n if (!window.initData) {\n const initDataEL = document.getElementById('init-data');\n if (initDataEL) {\n const data = initDataEL.getAttribute('data-init-data');\n const parsed = JSON.parse(data);\n return parsed;\n } else {\n return null;\n }\n } else {\n return window.initData;\n }\n};\n\nexport default initData;\n","import getInitData from './init-data';\nimport { logger } from 'packages/logger';\nimport { reload } from 'tradera/utils/location';\n/**\n * The fetch() function is a Promise-based mechanism for programmatically making web requests in the browser;\n * The fetch implementation we're using is developer by GitHub and polyfills the API for browsers that don't contain it.\n * https://github.com/github/fetch\n */\n\nconst refreshPageIfNotAuthenticated = (statusCode) => {\n if (statusCode === 401 || statusCode === 402) {\n window.document.location = window.document.location.pathname;\n }\n return false;\n};\n\n/**\n * Checks status of Fetch response;\n * @param {object} response\n */\nconst checkStatus = (response) => {\n const ID = getInitData();\n const tradVersion =\n response && response.headers\n ? response.headers.get('X-Tradera-Version')\n : '';\n if (tradVersion && tradVersion !== ID.version) {\n reload(true);\n }\n if (\n response.status >= 200 &&\n response.status < 300 &&\n typeof response !== 'string'\n ) {\n return Promise.resolve(response);\n } else {\n if (refreshPageIfNotAuthenticated(response.status)) {\n const error = new Error('Du har blivit utloggad - sidan laddas om');\n logger(error, {\n contexts: {\n response\n }\n });\n } else {\n return Promise.reject(response);\n }\n }\n};\n\n/**\n * parseJSON - don't remove res\n * @param {object} res - the response from the fetch API;\n */\nconst parseJSON = (res) => res.json();\n\n/**\n * get request from server;\n * @param {string} endPoint - declare where the network request is to be made\n * @param {string} params.body - body of the request\n * @param {string} params.method - request method\n */\nconst get = (endPoint, params) =>\n fetch(endPoint, {\n ...params,\n method: params.method || 'POST',\n dataType: params.dataType || 'json',\n headers:\n params.headers === false\n ? ''\n : params.headers || {\n 'Content-Type': 'application/json; charset=UTF-8'\n },\n credentials: 'include'\n })\n .then(checkStatus)\n .then(parseJSON);\n\nexport default get;\n","export enum infoItemComponents {\n BIDS = 'BIDS',\n TIME_LEFT = 'TIME_LEFT',\n ITEM_PRICE = 'ITEM_PRICE',\n PRICE_LABEL = 'PRICE_LABEL'\n}\n","type ErrorKey = {\n message: string;\n};\n\ntype ErrorMap = Record;\n\nexport const resolveMostPreciseTranslationKey = (\n errorKeys: ErrorKey[]\n): string => {\n const errorTranslationKeys = errorKeys.map((key) =>\n getOrDefault(key.message)\n );\n\n const errorPrio = [DefaultReceiverAddressError, DefaultError];\n const prioritizedKeys = errorTranslationKeys.sort((a, b) => {\n const aPrio = errorPrio.indexOf(a);\n const bPrio = errorPrio.indexOf(b);\n\n return aPrio - bPrio;\n });\n\n return prioritizedKeys[0];\n};\n\nexport const isUnSupportedProduct = (error: ErrorKey): boolean =>\n error.message ===\n `${Shipment}:${ValidatedProperty.Product}:${ValidationErrorType.NotSupported}`;\n\nexport const getDefaultErrorKey = (): string => DefaultError;\n\nconst getOrDefault = (errorCode: string): string => {\n const error = errorMap[errorCode];\n if (!error) return DefaultError;\n\n return error;\n};\n\nconst Unknown = 'Unknown';\nconst ReceiverAddress = 'ReceiverAddress';\nconst Shipment = 'Shipment';\nconst SenderAddress = 'SenderAddress';\nconst AgentAddress = 'AgentAddress';\nconst Product = 'Product';\n\nconst ValidatedProperty = {\n Unknown: 'Unknown',\n Street: 'Street',\n ZipCode: 'ZipCode',\n City: 'City',\n CountryCode: 'CountryCode',\n Email: 'Email',\n Phone: 'Phone',\n Length: 'Length',\n Width: 'Width',\n Height: 'Height',\n Weight: 'Weight',\n Product: 'Product',\n Type: 'Type',\n Name: 'Name',\n Agent: 'Agent'\n};\n\nconst ValidationErrorType = {\n Unknown: 'Unknown',\n Missing: 'Missing',\n WrongFormat: 'WrongFormat',\n NotReal: 'NotReal',\n ZipcodeRouting: 'ZipcodeRouting',\n NotSupported: 'NotSupported',\n NotEnabled: 'NotEnabled'\n};\n\nconst DefaultReceiverAddressError =\n 'shipping_validation_defaultReceiverAddress';\nconst DefaultSenderAddressError = 'shipping_validation_defaultSenderAddress';\nconst DefaultAgentAddressError = 'shipping_validation_defaultAgentAddress';\nconst DefaultError = 'shipping_validation_default';\n\nconst errorMap: ErrorMap = {\n [`${ReceiverAddress}:${ValidatedProperty.City}:${ValidationErrorType.Missing}`]:\n DefaultReceiverAddressError,\n [`${ReceiverAddress}:${ValidatedProperty.City}:${ValidationErrorType.WrongFormat}`]:\n DefaultReceiverAddressError,\n [`${ReceiverAddress}:${ValidatedProperty.CountryCode}:${ValidationErrorType.Missing}`]:\n DefaultReceiverAddressError,\n [`${ReceiverAddress}:${ValidatedProperty.CountryCode}:${ValidationErrorType.NotSupported}`]:\n 'shipping_validation_invalidCountryCode',\n [`${ReceiverAddress}:${ValidatedProperty.CountryCode}:${ValidationErrorType.WrongFormat}`]:\n DefaultReceiverAddressError,\n [`${ReceiverAddress}:${ValidatedProperty.Email}:${ValidationErrorType.Missing}`]:\n 'shipping_validation_checkReceiverEmail',\n [`${ReceiverAddress}:${ValidatedProperty.Email}:${ValidationErrorType.WrongFormat}`]:\n 'shipping_validation_checkReceiverEmail',\n [`${ReceiverAddress}:${ValidatedProperty.Name}:${ValidationErrorType.Missing}`]:\n DefaultReceiverAddressError,\n [`${ReceiverAddress}:${ValidatedProperty.Name}:${ValidationErrorType.WrongFormat}`]:\n DefaultReceiverAddressError,\n [`${ReceiverAddress}:${ValidatedProperty.Phone}:${ValidationErrorType.Missing}`]:\n 'shipping_validation_checkReceiverPhone',\n [`${ReceiverAddress}:${ValidatedProperty.Phone}:${ValidationErrorType.WrongFormat}`]:\n 'shipping_validation_checkReceiverPhone',\n [`${ReceiverAddress}:${ValidatedProperty.Street}:${ValidationErrorType.Missing}`]:\n DefaultReceiverAddressError,\n [`${ReceiverAddress}:${ValidatedProperty.Street}:${ValidationErrorType.WrongFormat}`]:\n DefaultReceiverAddressError,\n [`${ReceiverAddress}:${ValidatedProperty.Unknown}:${ValidationErrorType.Missing}`]:\n DefaultReceiverAddressError,\n [`${ReceiverAddress}:${ValidatedProperty.ZipCode}:${ValidationErrorType.Missing}`]:\n DefaultReceiverAddressError,\n [`${ReceiverAddress}:${ValidatedProperty.ZipCode}:${ValidationErrorType.NotReal}`]:\n 'shipping_validation_checkReceiverZipCode',\n [`${ReceiverAddress}:${ValidatedProperty.ZipCode}:${ValidationErrorType.NotSupported}`]:\n 'shipping_validation_checkReceiverZipCode',\n [`${ReceiverAddress}:${ValidatedProperty.ZipCode}:${ValidationErrorType.WrongFormat}`]:\n 'shipping_validation_checkReceiverZipCode',\n\n [`${Shipment}:${ValidatedProperty.Agent}:${ValidationErrorType.Missing}`]:\n DefaultError,\n [`${Shipment}:${ValidatedProperty.City}:${ValidationErrorType.Missing}`]:\n DefaultError,\n [`${Shipment}:${ValidatedProperty.Height}:${ValidationErrorType.Missing}`]:\n DefaultError,\n [`${Shipment}:${ValidatedProperty.Length}:${ValidationErrorType.Missing}`]:\n DefaultError,\n [`${Shipment}:${ValidatedProperty.Street}:${ValidationErrorType.Missing}`]:\n DefaultError,\n [`${Shipment}:${ValidatedProperty.Unknown}:${ValidationErrorType.Unknown}`]:\n DefaultError,\n [`${Shipment}:${ValidatedProperty.Unknown}:${ValidationErrorType.ZipcodeRouting}`]:\n 'shipping_validation_checkAddresses',\n [`${Shipment}:${ValidatedProperty.Weight}:${ValidationErrorType.Missing}`]:\n DefaultError,\n [`${Shipment}:${ValidatedProperty.Width}:${ValidationErrorType.Missing}`]:\n DefaultError,\n [`${Shipment}:${ValidatedProperty.ZipCode}:${ValidationErrorType.NotReal}`]:\n 'shipping_validation_badZipCode',\n [`${Shipment}:${ValidatedProperty.ZipCode}:${ValidationErrorType.WrongFormat}`]:\n DefaultError,\n\n [`${SenderAddress}:${ValidatedProperty.City}:${ValidationErrorType.Missing}`]:\n DefaultSenderAddressError,\n [`${SenderAddress}:${ValidatedProperty.City}:${ValidationErrorType.WrongFormat}`]:\n DefaultSenderAddressError,\n [`${SenderAddress}:${ValidatedProperty.CountryCode}:${ValidationErrorType.Missing}`]:\n DefaultSenderAddressError,\n [`${SenderAddress}:${ValidatedProperty.CountryCode}:${ValidationErrorType.WrongFormat}`]:\n DefaultSenderAddressError,\n [`${SenderAddress}:${ValidatedProperty.Email}:${ValidationErrorType.Missing}`]:\n 'shipping_validation_checkSenderEmail',\n [`${SenderAddress}:${ValidatedProperty.Email}:${ValidationErrorType.WrongFormat}`]:\n 'shipping_validation_checkSenderEmail',\n [`${SenderAddress}:${ValidatedProperty.Name}:${ValidationErrorType.Missing}`]:\n DefaultSenderAddressError,\n [`${SenderAddress}:${ValidatedProperty.Name}:${ValidationErrorType.WrongFormat}`]:\n DefaultSenderAddressError,\n [`${SenderAddress}:${ValidatedProperty.Phone}:${ValidationErrorType.Missing}`]:\n 'shipping_validation_checkSenderPhone',\n [`${SenderAddress}:${ValidatedProperty.Phone}:${ValidationErrorType.WrongFormat}`]:\n 'shipping_validation_checkSenderPhone',\n [`${SenderAddress}:${ValidatedProperty.Street}:${ValidationErrorType.Missing}`]:\n DefaultSenderAddressError,\n [`${SenderAddress}:${ValidatedProperty.Street}:${ValidationErrorType.WrongFormat}`]:\n DefaultSenderAddressError,\n [`${SenderAddress}:${ValidatedProperty.Unknown}:${ValidationErrorType.Missing}`]:\n DefaultSenderAddressError,\n [`${SenderAddress}:${ValidatedProperty.ZipCode}:${ValidationErrorType.Missing}`]:\n DefaultSenderAddressError,\n [`${SenderAddress}:${ValidatedProperty.ZipCode}:${ValidationErrorType.NotReal}`]:\n DefaultSenderAddressError,\n [`${SenderAddress}:${ValidatedProperty.ZipCode}:${ValidationErrorType.NotSupported}`]:\n 'shipping_validation_checkSenderZipCode',\n [`${SenderAddress}:${ValidatedProperty.ZipCode}:${ValidationErrorType.WrongFormat}`]:\n 'shipping_validation_checkSenderZipCode',\n\n [`${AgentAddress}:${ValidatedProperty.Unknown}:${ValidationErrorType.WrongFormat}`]:\n DefaultAgentAddressError,\n [`${AgentAddress}:${ValidatedProperty.Street}:${ValidationErrorType.WrongFormat}`]:\n DefaultAgentAddressError,\n [`${AgentAddress}:${ValidatedProperty.ZipCode}:${ValidationErrorType.WrongFormat}`]:\n DefaultAgentAddressError,\n [`${AgentAddress}:${ValidatedProperty.City}:${ValidationErrorType.WrongFormat}`]:\n DefaultAgentAddressError,\n [`${AgentAddress}:${ValidatedProperty.CountryCode}:${ValidationErrorType.WrongFormat}`]:\n DefaultAgentAddressError,\n\n [`${Product}:${ValidatedProperty.Type}:${ValidationErrorType.NotEnabled}`]:\n 'shipping_validation_defaultProductNotEnabled',\n\n [`${Unknown}:${ValidatedProperty.Unknown}:${ValidationErrorType.Unknown}`]:\n DefaultError\n};\n","import api from './api';\nimport { createAsyncThunk } from '@reduxjs/toolkit';\nimport { logger } from 'packages/logger';\nimport utils from './utils';\nimport {\n selectShipment,\n selectItemWithoutShipment,\n selectShippingPayment,\n selectCheckoutSummary,\n selectShippingCheckout,\n selectSellerPhoneNumber\n} from './selector';\nimport {\n resolveMostPreciseTranslationKey,\n getDefaultErrorKey,\n isUnSupportedProduct\n} from 'tradera/helpers/shipping-validation-errors';\nimport {\n setCheckoutSummaryFetching,\n openPaymentModal,\n closePaymentModal,\n setPaymentMethodData,\n resetOngoingPaymentAttempt\n} from './reducer';\nimport { CHECKOUT_ERRORS } from 'tradera/helpers/checkout-errors';\nimport {\n MODAL_TYPE,\n MODAL_STATUS,\n PAYMENT_OPTIONS\n} from 'tradera/state/views/shipping-checkout/initial-state';\nimport { paymentInstance } from 'tradera/apps/my-tradera/shipping-checkout/payment/braintree-drop-in';\nimport {\n selectMemberCountryCodeIso2,\n selectMemberEmail,\n selectMemberFirstName,\n selectMemberLastName\n} from 'tradera/state/member/selectors';\nimport { NIL as NIL_UUID } from 'uuid';\n\nexport const deleteShipment = createAsyncThunk(\n 'shippingCheckout/deleteShipment',\n async ({ shipmentId }, thunkAPI) => {\n try {\n const result = await api.deleteShipment(shipmentId);\n const { shipmentCheckoutId } = result?.data;\n return {\n shipmentId,\n shipmentCheckoutId\n };\n } catch (error) {\n logger(error);\n return thunkAPI.rejectWithValue(error);\n }\n }\n);\n\nexport const createShipmentCheckout = createAsyncThunk(\n 'shippingCheckout/createShipmentCheckout',\n async (callback = () => {}, thunkAPI) => {\n try {\n const result = await api.createShipmentCheckout();\n callback();\n\n return result.data;\n } catch (error) {\n logger(error);\n callback();\n\n return thunkAPI.rejectWithValue(error);\n }\n }\n);\n\nexport const getShippingOptions = createAsyncThunk(\n 'shippingCheckout/getShippingOptions',\n async (\n {\n fromCountry,\n toCountry,\n bringEnabled,\n postnordEnabled,\n dhlEnabled,\n schenkerEnabled,\n purchaseOrderId\n },\n thunkAPI\n ) => {\n try {\n const result = await api.getShippingOptions(\n fromCountry,\n toCountry,\n purchaseOrderId\n );\n\n return {\n data: result.data,\n bringEnabled: bringEnabled,\n postnordEnabled: postnordEnabled,\n dhlEnabled: dhlEnabled,\n schenkerEnabled: schenkerEnabled\n };\n } catch (error) {\n logger(error);\n return thunkAPI.rejectWithValue(error);\n }\n }\n);\n\nexport const updateShipment = createAsyncThunk(\n 'shippingCheckout/updateShipment',\n async (shipmentDetails, thunkAPI) => {\n thunkAPI.dispatch(setCheckoutSummaryFetching(true));\n\n let mostPreciseTranslationKey;\n try {\n const { data } = await api.setShipmentDetails(shipmentDetails);\n const { errors } = data.responseStatus;\n if (!errors) {\n if (data.shipmentCheckoutId !== NIL_UUID) {\n return data;\n }\n\n return thunkAPI.dispatch(\n createShipmentCheckout(() =>\n thunkAPI.dispatch(setCheckoutSummaryFetching(false))\n )\n );\n }\n\n mostPreciseTranslationKey =\n resolveMostPreciseTranslationKey(errors);\n } catch (error) {\n logger(error);\n mostPreciseTranslationKey = getDefaultErrorKey();\n }\n\n thunkAPI.dispatch(setCheckoutSummaryFetching(false));\n return thunkAPI.rejectWithValue({\n mostPreciseErrorKey: mostPreciseTranslationKey\n });\n }\n);\n\nexport const updateShippingProvider = (id, payload) => (dispatch, getState) => {\n const shipment = selectShipment(getState(), id);\n\n const { providerId, id: productId } = payload;\n const { purchaseOrderId, shipmentId, receiver } = shipment;\n\n const shippingPayload = buildShippingPayload(\n shipmentId,\n providerId,\n productId,\n purchaseOrderId,\n receiver\n );\n\n dispatch(updateShipment(shippingPayload));\n};\n\nexport const updateShippingAddress = (id, payload) => (dispatch, getState) => {\n const shipment = selectShipment(getState(), id);\n\n const { purchaseOrderId, shippingProvider, shipmentId, product, receiver } =\n shipment;\n\n const address = {\n name: payload.name || receiver.name,\n city: payload.city || receiver.city,\n zipCode: payload.zipCode || receiver.zipCode,\n street: payload.streetName || receiver.street\n };\n\n const shippingPayload = buildShippingPayload(\n shipmentId,\n shippingProvider,\n product.id,\n purchaseOrderId,\n address\n );\n dispatch(updateShipment(shippingPayload));\n};\n\nexport const createShipment = createAsyncThunk(\n 'shippingCheckout/createShipment',\n async (payload, thunkAPI) => {\n const {\n item: { selectedShipping },\n buyerContactDetails\n } = selectItemWithoutShipment(thunkAPI.getState());\n\n const { address } = payload;\n const shippingPayload = buildShippingPayload(\n null,\n payload.providerId || selectedShipping.providerId,\n payload.productId || selectedShipping.productId,\n payload.purchaseOrderId,\n {\n name: address?.name || buyerContactDetails.fullName,\n city: address?.city || buyerContactDetails.town,\n zipCode: address?.zipCode || buyerContactDetails.zipCode,\n street: address?.street || buyerContactDetails.streetName\n }\n );\n\n try {\n const { data } = await api.setShipmentDetails(shippingPayload);\n const { errors } = data.responseStatus;\n\n if (!errors) {\n return data;\n }\n\n // Can happen i combined shipping when seller sets custom shipping price and changes product\n // in that case we want to let the seller choose a product from shipping selector\n if (isUnSupportedProduct(errors[0])) {\n return thunkAPI.rejectWithValue({\n hasUnSupportedProduct: true\n });\n }\n\n const mostPreciseTranslationKey =\n resolveMostPreciseTranslationKey(errors);\n\n return thunkAPI.rejectWithValue({\n mostPreciseErrorKey: mostPreciseTranslationKey\n });\n } catch (error) {\n logger(error);\n return thunkAPI.rejectWithValue({\n mostPreciseErrorKey: getDefaultErrorKey()\n });\n }\n }\n);\n\nexport const markAsBooked = createAsyncThunk(\n 'shippingCheckout/markAsBooked',\n async (purchaseOrderId, thunkAPI) => {\n try {\n return await api.setShippingAsBooked(purchaseOrderId);\n } catch (error) {\n logger(error);\n return thunkAPI.rejectWithValue(error);\n }\n }\n);\n\nexport const markAsShipped = createAsyncThunk(\n 'shippingCheckout/markAsShipped',\n async (purchaseOrderId, thunkAPI) => {\n try {\n return await api.setShippingAsShipped(purchaseOrderId);\n } catch (error) {\n logger(error);\n return thunkAPI.rejectWithValue(error);\n }\n }\n);\n\nexport const getItemWithoutShipment = createAsyncThunk(\n 'shippingCheckout/getItemWithoutShipment',\n async (purchaseOrderId, thunkAPI) => {\n try {\n const { data } = await api.getMemberSoldItemShippingInfo(\n purchaseOrderId\n );\n const { responseStatus } = data;\n if (responseStatus?.errorCode) {\n return thunkAPI.rejectWithValue({\n errorCode: responseStatus?.errorCode\n });\n }\n\n return data;\n } catch (error) {\n logger(error);\n return thunkAPI.rejectWithValue(error);\n }\n }\n);\n\nexport const getShippingConfirmation = createAsyncThunk(\n 'shippingCheckout/getShippingConfirmation',\n async (shippingCheckoutId, thunkAPI) => {\n try {\n const { data } = await api.getShippingConfirmation(\n shippingCheckoutId\n );\n\n if (!data.pollBookingUrl) return data;\n\n const isBookingComplete = await pollShippingConfirmationStatus(\n data.pollBookingUrl,\n shippingCheckoutId\n );\n\n if (!isBookingComplete) {\n logger(\n `Booking was not completed after 10 retries. shippingCheckoutId ${shippingCheckoutId}`\n );\n return thunkAPI.rejectWithValue({ isLongPolling: true });\n }\n\n const response = await api.getShippingConfirmation(\n shippingCheckoutId\n );\n return response.data;\n } catch (error) {\n logger(error);\n return thunkAPI.rejectWithValue(error);\n }\n }\n);\n\nconst pollShippingConfirmationStatus = async (pollBookingUrl) =>\n new Promise((resolve, reject) => {\n let iterations = 0;\n const poller = setInterval(async () => {\n if (iterations === 10) {\n clearInterval(poller);\n return resolve(false);\n }\n\n try {\n const { data } = await api.getShippingConfirmationStatus(\n pollBookingUrl\n );\n\n if (data.isBookingComplete) {\n clearInterval(poller);\n return resolve(true);\n }\n } catch (error) {\n clearInterval(poller);\n logger(error);\n\n return reject(error);\n }\n // eslint-disable-next-line better-mutation/no-mutation\n iterations++;\n }, 2000);\n });\n\nconst buildShippingPayload = (\n shipmentId,\n shippingProvider,\n shippingProductId,\n purchaseOrderId,\n receiver\n) => ({\n shipmentId, // nullable if `null` -> new shipment is created\n shippingProvider,\n buyerAddress: {\n name: receiver.name,\n city: receiver.city,\n zipCode: receiver.zipCode,\n streetName: receiver.street\n },\n shippingProductId,\n purchaseOrderId\n});\n\n// Payment\n\nexport const getPaymentOptions = createAsyncThunk(\n 'shippingCheckout/getPaymentOptions',\n async (shipmentCheckoutId, thunkAPI) => {\n try {\n const { data } = await api.getPaymentOptions(shipmentCheckoutId);\n return data;\n } catch (error) {\n logger(error);\n return thunkAPI.rejectWithValue(error);\n }\n }\n);\n\nconst sleep = (delay) => new Promise((resolve) => setTimeout(resolve, delay));\n\nconst PAYMENT_STATUS = {\n AUTHORIZED: 'Authorized',\n AWAITING_SWISH: 'AwaitingExternalAuthentication',\n CANCELLED: 'Cancelled',\n CANCELLING: 'Cancelling',\n CANCELLING_FAILED: 'CancellingFailed',\n COMPLETING: 'Completing',\n COMPLETING_FAILED: 'CompletingFailed',\n DECLINED: 'Declined',\n FAILED: 'Failed',\n INIT: 'Initializing',\n INIT_COMPLETE: 'Initialized',\n INIT_FAILED: 'InitializationFailed',\n SETTLED: 'Settled'\n};\n\n// eslint-disable-next-line no-control-regex\nconst containsNonPrintableAscii = (value) => value.match(/[^\\x00-\\x7F]/g);\n\nconst createThreeDSecureParameters = (getState) => {\n const currentState = getState();\n const { totalCost } = selectCheckoutSummary(currentState);\n const memberFirstName = selectMemberFirstName(currentState);\n const firstName = containsNonPrintableAscii(memberFirstName)\n ? null\n : memberFirstName;\n const memberLastName = selectMemberLastName(currentState);\n const lastName = containsNonPrintableAscii(memberLastName)\n ? null\n : memberLastName;\n\n const buyerAddress = {\n phoneNumber: selectSellerPhoneNumber(currentState)?.replace(\n /[^\\d]/g,\n ''\n ),\n countryCodeAlpha2: selectMemberCountryCodeIso2(currentState)\n };\n return {\n amount: totalCost,\n email: selectMemberEmail(currentState),\n billingAddress: {\n givenName: firstName,\n surname: lastName,\n ...buyerAddress\n },\n additionalInformation: {\n shippingGivenName: firstName,\n shippingSurname: lastName,\n shippingAddress: buyerAddress\n }\n };\n};\n\nexport const initBraintreePayment =\n (paymentOption, onComplete) => async (dispatch, getState) => {\n let requestOptions = {};\n\n if (\n paymentOption === PAYMENT_OPTIONS.VISA_MASTERCARD ||\n paymentOption === PAYMENT_OPTIONS.GOOGLEPAY\n ) {\n requestOptions = {\n threeDSecure: createThreeDSecureParameters(getState)\n };\n }\n\n dispatch(setCheckoutSummaryFetching(true));\n\n try {\n if (paymentInstance) {\n const data = await paymentInstance.requestPaymentMethod(\n requestOptions\n );\n dispatch(setPaymentMethodData(data));\n } else {\n throw { message: CHECKOUT_ERRORS.NO_PAYMENT_METHOD };\n }\n return dispatch(initPayment(onComplete));\n } catch (error) {\n return Promise.reject(error);\n }\n };\n\nexport const initPayment = (onComplete) => async (dispatch, getState) => {\n const currentState = getState();\n\n const { ongoingPaymentAttempt } = selectShippingCheckout(currentState);\n const payment = selectShippingPayment(currentState);\n const { shipmentCheckoutId, selectedPayment, paymentMethodData } = payment;\n\n dispatch(closePaymentModal());\n dispatch(setCheckoutSummaryFetching(true));\n\n try {\n const { shipmentPaymentAttemptId } = ongoingPaymentAttempt;\n const paymentAttemptId = shipmentPaymentAttemptId || utils.getUuid();\n\n if (!shipmentPaymentAttemptId) {\n const formData = {\n shipmentPaymentAttemptId: paymentAttemptId,\n shipmentCheckoutId,\n paymentMethod: selectedPayment,\n paymentMethodData\n };\n await api.initializePayment(formData);\n }\n\n //POST successful? then start polling:\n return dispatch(\n checkPaymentStatus(paymentAttemptId, selectedPayment, onComplete)\n );\n } catch (error) {\n return Promise.reject(error);\n }\n};\n\nexport const cancelPayment = async (shipmentPaymentAttemptId) => {\n const formData = {\n shipmentPaymentAttemptId\n };\n\n try {\n await api.cancelPayment(formData);\n } catch (error) {\n return Promise.reject(error);\n }\n};\n\nexport const completePayment =\n (paymentAttemptId, paymentMethod, onComplete) => async (dispatch) => {\n const formData = {\n paymentAttemptId\n };\n\n try {\n await api.completePayment(formData);\n\n //POST successful? then start polling again:\n return dispatch(\n checkPaymentStatus(paymentAttemptId, paymentMethod, onComplete)\n );\n } catch (error) {\n return Promise.reject(error);\n }\n };\n\nexport const checkPaymentStatus =\n (paymentAttemptId, paymentMethod, onComplete) =>\n async (dispatch, getState) => {\n const { modal } = selectShippingPayment(getState());\n\n let poll = true;\n\n try {\n const paymentStatus = await api.getPaymentStatus(paymentAttemptId);\n\n const { data } = paymentStatus;\n\n switch (data?.status) {\n case PAYMENT_STATUS.AUTHORIZED:\n case PAYMENT_STATUS.COMPLETING:\n case PAYMENT_STATUS.INIT:\n case PAYMENT_STATUS.CANCELLING:\n poll = true;\n break;\n case PAYMENT_STATUS.AWAITING_SWISH:\n poll = true;\n if (!modal.open) {\n dispatch(\n openPaymentModal({\n open: MODAL_TYPE.SWISH_HANDEL,\n status: MODAL_STATUS.START,\n paymentAttemptId\n })\n );\n }\n break;\n case PAYMENT_STATUS.INIT_COMPLETE:\n poll = false;\n return dispatch(\n completePayment(\n paymentAttemptId,\n paymentMethod,\n onComplete\n )\n );\n case PAYMENT_STATUS.SETTLED:\n poll = false;\n dispatch(closePaymentModal());\n dispatch(setCheckoutSummaryFetching(false));\n onComplete();\n break;\n case PAYMENT_STATUS.DECLINED:\n poll = false;\n dispatch(closePaymentModal());\n dispatch(resetOngoingPaymentAttempt());\n dispatch(setCheckoutSummaryFetching(false));\n return Promise.reject(new Error(CHECKOUT_ERRORS.DECLINED));\n case PAYMENT_STATUS.CANCELLED:\n poll = false;\n dispatch(closePaymentModal());\n dispatch(resetOngoingPaymentAttempt());\n dispatch(setCheckoutSummaryFetching(false));\n break;\n case PAYMENT_STATUS.COMPLETING_FAILED:\n case PAYMENT_STATUS.FAILED:\n case PAYMENT_STATUS.INIT_FAILED:\n case PAYMENT_STATUS.CANCELLING_FAILED:\n poll = false;\n dispatch(closePaymentModal());\n dispatch(resetOngoingPaymentAttempt());\n dispatch(setCheckoutSummaryFetching(false));\n return Promise.reject(\n new Error(`Payment error: ${data?.status}`)\n );\n default:\n dispatch(closePaymentModal());\n poll = false;\n }\n } catch (error) {\n poll = false;\n return Promise.reject(error);\n }\n\n if (poll) {\n await sleep(1500);\n return dispatch(\n checkPaymentStatus(paymentAttemptId, paymentMethod, onComplete)\n );\n }\n };\n","import { getSyiSlice } from 'tradera/apps/syi/state/selectors/syi';\nimport { PossibleFeatures } from 'tradera/apps/syi/state/reducers/fees';\n\nconst updatePrices = () => (dispatch, getState) => {\n const featureFees = [];\n const state = getSyiSlice(getState());\n\n if (state.price.reservePrice) {\n featureFees.push(PossibleFeatures.reservePrice);\n }\n\n if (state.extraFeatures.displayHighlighted) {\n featureFees.push(PossibleFeatures.highlight);\n }\n\n if (state.extraFeatures.displayPromoted) {\n featureFees.push(PossibleFeatures.rankUp);\n }\n\n dispatch({\n type: 'SET_CHOSEN_EXTRA_FEATURES',\n payload: featureFees\n });\n};\n\nexport default {\n updatePrices\n};\n","import GdprSettings from 'tradera/utils/gdpr-settings';\nimport { STORAGE_KEYS } from 'tradera/constants/storage';\nimport { logger } from 'packages/logger';\nimport { isServer } from 'tradera/utils/nextjs';\n\n// KATS: this whole thing would be in better shape if we re-wrote it in TS instead with either inheritance or interfaces.\n\n/**\n * Storage wrapper/utility\n */\nexport class Storage {\n /**\n * @param {object} storage - Storage-compatible object\n * @param {function} [setFilter] - Functions that returns true/false for a storage key, deciding if it should be set in storage\n */\n constructor(storage, setFilter) {\n this.storage = storage;\n this.setFilter = setFilter;\n }\n\n get length() {\n return this.storage.length;\n }\n\n /**\n * @param {int} index\n * @returns {string}\n */\n key(index) {\n return this.storage.key(index);\n }\n\n /**\n * @param {string} key\n * @returns {null|any}\n */\n getItem(key) {\n const value = this.storage.getItem(key);\n if (value) {\n try {\n return JSON.parse(value);\n } catch (error) {\n logger(error, {\n contexts: {\n storage: {\n action: 'getItem',\n key,\n value\n }\n }\n });\n }\n }\n return null;\n }\n\n hasValueForKey(key) {\n const value = this.storage.getItem(key);\n return value !== null;\n }\n\n enabledByGdprSettings() {\n return gdprSettings.isFunctionalEnabled();\n }\n\n getItemsByPrefix(prefix) {\n const items = {};\n // eslint-disable-next-line better-mutation/no-mutation\n for (let i = 0; i < this.storage.length; i++) {\n const key = this.key(i);\n if (key.startsWith(prefix)) {\n items[key] = this.getItem(key);\n }\n }\n return items;\n }\n\n /**\n * @param {string} key\n * @param {any} value\n * @returns {undefined}\n */\n setItem(key, value) {\n if (this.setFilter && !this.setFilter(key)) {\n return undefined;\n }\n try {\n this.storage.setItem(key, JSON.stringify(value));\n } catch (error) {\n logger(error, {\n contexts: {\n storage: {\n action: 'setItem',\n key,\n stringifiedLength: JSON.stringify(value).length,\n value\n }\n }\n });\n }\n }\n\n /**\n * @param {string} key\n * @returns {undefined}\n */\n removeItem(key) {\n return this.storage.removeItem(key);\n }\n\n clear() {\n return this.storage.clear();\n }\n\n /**\n * Removes all items whose keys start with prefix\n * @param {string} prefix\n */\n clearByPrefix(prefix) {\n // Loop in reverse because storage indexes will change as you delete items.\n // eslint-disable-next-line better-mutation/no-mutation\n for (let i = this.storage.length - 1; i >= 0; --i) {\n const key = this.key(i);\n if (key.startsWith(prefix)) {\n this.removeItem(key);\n }\n }\n }\n}\n\n/**\n * In-memory Storage object for testing & fallback\n */\nexport class MemoryStorage {\n constructor() {\n this.storage = new Map();\n }\n\n get length() {\n return this.storage.size;\n }\n\n key(index) {\n const keys = Array.from(this.storage.keys());\n if (index in keys) {\n return keys[index];\n } else {\n return null;\n }\n }\n\n getItem(key) {\n return this.storage.get(key);\n }\n\n setItem(key, value) {\n this.storage.set(key, value);\n }\n\n removeItem(key) {\n this.storage.delete(key);\n }\n\n clear() {\n this.storage.clear();\n }\n}\n\n/**\n * Test if a storage implementation is available\n *\n * @param {Storage} storage\n * @returns {boolean}\n */\nfunction testStorage(storage) {\n if (!storage) {\n return false;\n }\n const TEST_KEY = 'STORAGE_TEST';\n const TEST_VALUE = '1';\n try {\n // This will throw an exception in some browsers when cookies/localStorage are explicitly disabled (i.e. Chrome)\n storage.setItem(TEST_KEY, TEST_VALUE);\n if (storage.getItem(TEST_KEY) === TEST_VALUE) {\n storage.removeItem(TEST_KEY);\n } else {\n throw new Error();\n }\n } catch (e) {\n return false;\n }\n return true;\n}\n\nlet localStorage;\ntry {\n if (!isServer) {\n // access to window.localStorage is forbidden when user blocks cookies or third party cookies so we safe-guard around this access\n localStorage = window?.localStorage;\n }\n} catch (e) {\n localStorage = null;\n}\n\n// Standard local store with GDPR cookie filter and in-memory storage fallback\nconst defaultStorage = testStorage(localStorage)\n ? localStorage\n : new MemoryStorage();\nconst gdprSettings = GdprSettings;\n\nexport const localStore = new Storage(defaultStorage, (key) => {\n if (!Object.values(STORAGE_KEYS).includes(key)) {\n logger(`Storage key '${key}' not found in STORAGE_KEYS`);\n return false;\n }\n if (!gdprSettings.isFunctionalEnabled()) {\n console.warn('Local storage blocked by GDPR settings', true);\n return false;\n }\n return true;\n});\n","export const selectSyiAttributes = (state) => state.views.syi.attributes;\n\nexport const selectCategoryAttributes = (state) =>\n selectSyiAttributes(state).categoryAttributes;\n\nexport const selectCategorySuggestedAttributes = (state) =>\n selectSyiAttributes(state).selectableCategorySuggestedAttributes;\n\nexport const selectImageToColorSuggestedAttributes = (state) =>\n selectSyiAttributes(state).imageToColorSuggestedAttributes;\n","/* eslint-disable better-mutation/no-mutation */\n\nimport { createSlice } from '@reduxjs/toolkit';\nimport { setEnum } from 'tradera/apps/my-tradera/app/helpers/enums';\n\nconst initialState = {\n modifiers: {\n query: {},\n paging: {}\n },\n filterBar: null,\n shownFilters: null\n};\n\nconst resetPageIndex = (state) => ({\n page: 1,\n size: state.modifiers.paging.size\n});\n\nconst slice = createSlice({\n name: 'filters',\n initialState,\n reducers: {\n updatePageSize: (state, { payload }) => {\n state.modifiers.paging.page = 1;\n state.modifiers.paging.size = payload.size;\n },\n selectSortChange: (state, { payload }) => {\n state.modifiers.sort = {\n sorting: payload.sort,\n order: payload.sortOrder\n };\n state.modifiers.paging = resetPageIndex(state);\n },\n changeSortOrder: (state) => {\n state.modifiers.sort = {\n sorting: state.modifiers.sort.sorting,\n order:\n state.modifiers.sort.order === 'Descending'\n ? 'Ascending'\n : 'Descending'\n };\n state.modifiers.paging = resetPageIndex(state);\n },\n selectTypeChange: (state, { payload }) => {\n state.modifiers.itemType = payload.itemType;\n state.modifiers.paging = resetPageIndex(state);\n },\n setDateFrom: (state, { payload }) => {\n state.modifiers.dateRange.from = payload.from;\n state.modifiers.paging = resetPageIndex(state);\n },\n setSingleFilterValue: (state, { payload }) => {\n state.modifiers.sellerFilters[payload.filter] = payload.value;\n },\n setDateTo: (state, { payload }) => {\n state.modifiers.dateRange.to = payload.to;\n state.modifiers.paging = resetPageIndex(state);\n },\n filterByState: (state, { payload }) => {\n let showSelectFiltersDropDown = false;\n if (payload.selected === 'Valj') {\n showSelectFiltersDropDown =\n !state.filterBar.showSelectFiltersDropDown;\n }\n setSellerFilterBarModifiers(state, payload.selected);\n state.defaults = {\n ...state.defaults\n };\n state.modifiers.selectedFilterBar = payload.selected;\n state.modifiers.paging = resetPageIndex(state);\n state.filterBar.showSelectFiltersDropDown =\n showSelectFiltersDropDown;\n },\n changePage: (state, { payload }) => {\n state.modifiers.paging.page = payload.page;\n },\n resetDateRangeTo: (state) => {\n state.modifiers.dateRange.to =\n state.defaults.modifiers.dateRange.to;\n },\n resetDateRangeFrom: (state) => {\n state.modifiers.dateRange.from =\n state.defaults.modifiers.dateRange.from;\n },\n resetFilters: (state) => {\n state.modifiers = { ...state.defaults.modifiers };\n state.filterBar = {\n ...state.filterBar,\n ...state.defaults.filterBar\n };\n },\n changeSearchQuery: (state, { payload }) => {\n state.modifiers.query.searchQuery = payload.searchQuery;\n state.modifiers.sort = {\n sorting: 'BestMatch',\n order: 'Ascending'\n };\n state.modifiers.paging = resetPageIndex(state);\n },\n selectReservationPriceChange: (state, { payload }) => {\n state.modifiers.reservePriceReached = payload.reservePriceReached;\n state.modifiers.paging = resetPageIndex(state);\n },\n updateFiltersForSelectedPage: (state, { payload }) => {\n if (!payload.newFilters.modifiers) {\n return;\n }\n Object.keys(payload.newFilters).forEach(\n (key) => (state[key] = payload.newFilters[key])\n );\n state.defaults = {\n ...payload.defaultFilters\n };\n },\n setFiltersFromRouter: (state, { payload }) => {\n state.modifiers = payload.filters;\n }\n }\n});\n\nexport default slice.reducer;\n\nexport const {\n updatePageSize,\n selectTypeChange,\n selectSortChange,\n changeSortOrder,\n setDateFrom,\n setDateTo,\n changePage,\n changeSearchQuery,\n selectReservationPriceChange,\n setFiltersFromRouter,\n updateFiltersForSelectedPage,\n filterByState,\n setSingleFilterValue,\n resetFilters,\n resetDateRangeTo,\n resetDateRangeFrom\n} = slice.actions;\n\n/**\n * setSellerFilterBarModifiers\n * @param {object} state\n * @param {string} selected\n * @returns {object} state of 'filters' based on UI tab selection. Note: WebApi expects values as Capitalcase Enum;\n */\nconst setSellerFilterBarModifiers = (state, selected) => {\n if (selected === 'Valj') {\n return;\n }\n\n if (state.modifiers.sellerFilters) {\n Object.keys(state.modifiers.sellerFilters).forEach((key) => {\n state.modifiers.sellerFilters[key] = setEnum('All');\n });\n }\n\n if (state.modifiers.buyerFilters) {\n Object.keys(state.modifiers.buyerFilters).forEach((key) => {\n state.modifiers.buyerFilters[key] = setEnum('All');\n });\n }\n\n switch (selected) {\n case 'SellerNoFeedback':\n state.modifiers.sellerFilters.paid = setEnum(true);\n state.modifiers.sellerFilters.shipped = setEnum(true);\n state.modifiers.sellerFilters.feedbackLeft = setEnum(false);\n state.modifiers.sellerFilters.hidden = setEnum(false);\n break;\n case 'BuyerNoFeedback':\n state.modifiers.buyerFilters.feedbackLeft = setEnum(false);\n state.modifiers.buyerFilters.paid = setEnum(true);\n state.modifiers.buyerFilters.hidden = setEnum(false);\n break;\n case 'SellerNotPaid':\n state.modifiers.sellerFilters.paid = setEnum(false);\n state.modifiers.sellerFilters.shipped = setEnum(false);\n state.modifiers.sellerFilters.hidden = setEnum(false);\n break;\n case 'BuyerNotPaid':\n state.modifiers.buyerFilters.paid = setEnum(false);\n state.modifiers.buyerFilters.hidden = setEnum(false);\n break;\n case 'NotSent':\n state.modifiers.sellerFilters.paid = setEnum(true);\n state.modifiers.sellerFilters.shipped = setEnum(false);\n state.modifiers.sellerFilters.hidden = setEnum(false);\n break;\n case 'AllSold':\n case 'AllUnsold':\n state.modifiers.sellerFilters.hidden = setEnum(false);\n break;\n case 'SellerHidden':\n state.modifiers.sellerFilters.hidden = setEnum(true);\n break;\n case 'BuyerHidden':\n state.modifiers.buyerFilters.hidden = setEnum(true);\n break;\n case 'BuyerNotHidden':\n state.modifiers.buyerFilters.hidden = setEnum(false);\n break;\n case 'AllPurchases':\n state.modifiers.buyerFilters.hidden = setEnum(false);\n break;\n case 'AllBids':\n state.modifiers.hasBids = setEnum('All');\n break;\n case 'HasBids':\n state.modifiers.hasBids = setEnum(true);\n break;\n case 'NoBids':\n state.modifiers.hasBids = setEnum(false);\n break;\n case 'ItemsLostNotHidden':\n state.modifiers.buyerFilters.hidden = setEnum(false);\n break;\n case 'ItemsLostHidden':\n state.modifiers.buyerFilters.hidden = setEnum(true);\n break;\n default:\n break;\n }\n};\n","import { createApi } from '@reduxjs/toolkit/query/react';\nimport { baseQuery } from 'tradera/state/services/utils/webapi-base-query';\nimport { canBeResumed } from './actions/draft-actions';\nimport type {\n DeleteDraftsApiRequest,\n GetDraftsPageApiResponse\n} from 'tradera/state/services/types/webapi-selling-generated';\n\nexport enum Tags {\n DRAFT_LIST = 'DRAFT_LIST'\n}\n\nexport const draftsApi = createApi({\n reducerPath: 'draftsApi',\n baseQuery,\n tagTypes: Object.keys(Tags),\n endpoints: (builder) => ({\n deleteDrafts: builder.mutation({\n invalidatesTags: [Tags.DRAFT_LIST],\n query: (parameters) => {\n return {\n url: '/api/webapi/selling/drafts',\n method: 'DELETE',\n body: parameters\n };\n }\n }),\n loadDrafts: builder.query({\n providesTags: [Tags.DRAFT_LIST],\n query: () => '/api/webapi/selling/drafts',\n transformResponse: (response: GetDraftsPageApiResponse) => {\n return {\n ...response,\n items: response.items?.filter((item) =>\n canBeResumed(\n item.draftId,\n item.draftReason,\n item.shortDescription,\n item.longDescription,\n [\n {\n imageUrl: item.images?.find(\n (image) => image.imageUrl\n )\n }\n ]\n )\n )\n };\n }\n })\n })\n});\n\nexport const { useDeleteDraftsMutation, useLoadDraftsQuery, util } = draftsApi;\n","/* eslint-disable */\n/* tslint:disable */\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nexport interface SetAutoShipmentCheckoutMemberEnabledApiRequest {\n enabled: boolean;\n}\n\nexport interface ResponseError {\n errorCode?: string | null;\n fieldName?: string | null;\n message?: string | null;\n}\n\nexport interface ResponseStatus {\n errorCode?: string | null;\n message?: string | null;\n stackTrace?: string | null;\n errors?: ResponseError[] | null;\n}\n\nexport interface SetAutoShipmentCheckoutMemberEnabledApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface BlockMemberApiRequest {\n aliasToBlock?: string | null;\n}\n\nexport interface BlockMemberApiResponse {\n /** @format int32 */\n blockedMemberId: number;\n responseStatus?: ResponseStatus | null;\n}\n\nexport type GetBlockedMembersApiRequest = object;\n\nexport interface BlockedMemberDto {\n /** @format int32 */\n memberId: number;\n alias?: string | null;\n /** @format date-time */\n createdDate: string;\n}\n\nexport interface GetBlockedMembersApiResponse {\n blockedMembers?: BlockedMemberDto[] | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface UnblockMemberApiRequest {\n /** @format int32 */\n memberIdToUnblock: number;\n}\n\nexport interface UnblockMemberApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport type GetBlueshiftEventApiCredentialsApiRequest = object;\n\nexport interface GetBlueshiftEventApiCredentialsApiResponse {\n verificationKey?: string | null;\n eventSignature?: string | null;\n eventApiKey?: string | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface SetBuyerTransactionVisibilityApiRequest {\n transactionIdList?: number[] | null;\n hidden: boolean;\n}\n\nexport interface SetBuyerTransactionVisibilityApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface SetCombinedShippingMemberDaysApiRequest {\n /** @format int32 */\n days: number;\n}\n\nexport interface SetCombinedShippingMemberDaysApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface SetCombinedShippingMemberEnabledApiRequest {\n enabled: boolean;\n}\n\nexport interface SetCombinedShippingMemberEnabledApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface SetCommitOnPaymentMemberEnabledApiRequest {\n enabled: boolean;\n}\n\nexport interface SetCommitOnPaymentMemberEnabledApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface ContactSellerApiRequest {\n /** @format int32 */\n itemId: number;\n message?: string | null;\n sendCopytoSender: boolean;\n}\n\nexport interface ContactSellerApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface ContactHighestBidderApiRequest {\n /** @format int32 */\n itemId: number;\n /** @format int32 */\n receiverMemberId: number;\n message?: string | null;\n sendCopytoSender: boolean;\n}\n\nexport interface NewBidderDto {\n /** @format int32 */\n memberId: number;\n memberAlias?: string | null;\n}\n\nexport interface ContactHighestBidderApiResponse {\n responseStatus?: ResponseStatus | null;\n success: boolean;\n message?: string | null;\n newBidder?: NewBidderDto | null;\n}\n\nexport type DeactivateMemberAccountPermanentlyApiRequest = object;\n\nexport interface DeactivateMemberAccountPermanentlyApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport type GetAccountDeactivationSettingsApiRequest = object;\n\nexport interface GetAccountDeactivationSettingsApiResponse {\n isAccountDeactivationAllowed: boolean;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface DeactivateMemberAccountTemporarilyApiRequest {\n comment?: string | null;\n}\n\nexport interface DeactivateMemberAccountTemporarilyApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport type MemberContactDetailsApiRequest = object;\n\nexport interface MemberContactDetailsApiResponse {\n /** @format int32 */\n memberId: number;\n streetName?: string | null;\n town?: string | null;\n zipCode?: string | null;\n country?: string | null;\n fullName?: string | null;\n phoneNumber?: string | null;\n email?: string | null;\n alias?: string | null;\n ssn?: string | null;\n countryCodeIso2?: string | null;\n firstName?: string | null;\n lastName?: string | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface UpdateMemberContactDetailsApiRequest {\n streetName?: string | null;\n town?: string | null;\n zipCode?: string | null;\n country?: string | null;\n fullName?: string | null;\n phoneNumber?: string | null;\n email?: string | null;\n alias?: string | null;\n firstName?: string | null;\n lastName?: string | null;\n userIpAddress?: string | null;\n}\n\nexport interface CreditSafeLookupResult {\n socialSecurityNumber?: string | null;\n firstName?: string | null;\n lastName?: string | null;\n givenName?: string | null;\n}\n\nexport enum CreditSafeNameVerificationStatus {\n Valid = 'Valid',\n Invalid = 'Invalid',\n SSNFail = 'SSNFail',\n NotFound = 'NotFound',\n Error = 'Error'\n}\n\nexport interface CreditSafeNameVerificationResult {\n lookupResult?: CreditSafeLookupResult | null;\n status: CreditSafeNameVerificationStatus;\n}\n\nexport interface UpdateMemberContactDetailsApiResponse {\n responseStatus?: ResponseStatus | null;\n creditSafeVerificationResult?: CreditSafeNameVerificationResult | null;\n}\n\nexport enum DisputeStatus {\n New = 'New',\n WaitingForSeller = 'WaitingForSeller',\n TraderaIsInvestigating = 'TraderaIsInvestigating',\n ToBeClosed = 'ToBeClosed',\n WaitingForBuyer = 'WaitingForBuyer',\n BuyerWonDispute = 'BuyerWonDispute',\n SellerWonDispute = 'SellerWonDispute',\n WaitingForReturn = 'WaitingForReturn',\n Appealed = 'Appealed',\n AvslutadUnder120Kr = 'AvslutadUnder120Kr',\n NotEscalated = 'NotEscalated',\n BuyerMarkedAsSolved = 'BuyerMarkedAsSolved'\n}\n\nexport enum MessageSentBy {\n CsAgent = 'CsAgent',\n Buyer = 'Buyer',\n Seller = 'Seller'\n}\n\nexport interface DisputeMessageDto {\n /** @format uuid */\n id: string;\n text?: string | null;\n /** @format date-time */\n created: string;\n sentBy: MessageSentBy;\n attachments?: string[] | null;\n}\n\nexport interface DisputeApiDto {\n /** @format int32 */\n transactionId: number;\n /** @format int32 */\n itemId: number;\n /** @format int32 */\n buyerMemberId: number;\n /** @format int32 */\n sellerMemberId: number;\n message?: string | null;\n status: DisputeStatus;\n /** @format date-time */\n timeStamp: string;\n messages?: DisputeMessageDto[] | null;\n}\n\nexport interface GetDisputeApiResponse {\n dispute?: DisputeApiDto | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface CreateDisputeApiRequest {\n /** @format int32 */\n transactionId: number;\n /** @format int32 */\n reason: number;\n message?: string | null;\n}\n\nexport interface CreateDisputeApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface AddDisputeMessageApiRequest {\n /** @format int32 */\n transactionId: number;\n message?: string | null;\n attachments?: string[] | null;\n}\n\nexport interface AddDisputeMessageApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface ChangeDisputeStatusToAppealedApiRequest {\n /** @format int32 */\n transactionId: number;\n}\n\nexport interface ChangeDisputeStatusToAppealedApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface MarkDisputeAsEscalatedApiRequest {\n /** @format int32 */\n transactionId: number;\n}\n\nexport interface MarkDisputeAsEscalatedApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface MarkDisputeAsSolvedApiRequest {\n /** @format int32 */\n transactionId: number;\n}\n\nexport interface MarkDisputeAsSolvedApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface GetDisputesApiResponse {\n disputes?: DisputeApiDto[] | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport type MemberEmailSettingsApiRequest = object;\n\nexport interface MemberEmailSettingsApiResponse {\n /** @format int32 */\n memberId: number;\n notifyWhenItemBecomesUnsold: boolean;\n notifyOnFirstWinningBid: boolean;\n notifyBeforeWishListItemEnds: boolean;\n acceptsNewsLetter: boolean;\n acceptsOfferEmails: boolean;\n acceptsUpiInfoEmails: boolean;\n acceptsUnknownDeviceOrIpEmails: boolean;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface UpdateMemberEmailSettingsApiRequest {\n notifyWhenItemBecomesUnsold: boolean;\n notifyOnFirstWinningBid: boolean;\n notifyBeforeWishListItemEnds: boolean;\n acceptsNewsLetter: boolean;\n acceptsOfferEmails: boolean;\n acceptsUpiInfoEmails: boolean;\n acceptsUnknownDeviceOrIpEmails?: boolean | null;\n}\n\nexport interface UpdateMemberEmailSettingsApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport enum FeedbackRoleFilter {\n All = 'All',\n Seller = 'Seller',\n Buyer = 'Buyer',\n LeftBy = 'LeftBy'\n}\n\nexport enum FeedbackRatingFilter {\n All = 'All',\n Positive = 'Positive',\n Negative = 'Negative'\n}\n\nexport interface FeedbackSummaryItemApiDto {\n /** @format int32 */\n totalNegative: number;\n /** @format int32 */\n totalPositive: number;\n}\n\nexport interface TotalFeedbackSummaryForMemberApiDto {\n /** @format int32 */\n memberId: number;\n lastMonth?: FeedbackSummaryItemApiDto | null;\n lastSixMonths?: FeedbackSummaryItemApiDto | null;\n lastTwelveMonths?: FeedbackSummaryItemApiDto | null;\n sinceRegistration?: FeedbackSummaryItemApiDto | null;\n unique?: FeedbackSummaryItemApiDto | null;\n}\n\nexport interface DetailedSellerRatingApiDto {\n category?: string | null;\n /** @format int32 */\n categoryCount: number;\n /** @format double */\n averageRating: number;\n}\n\nexport interface DetailedSellerRatingSummaryForMemberApiDto {\n /** @format int32 */\n memberId: number;\n itemDescription?: DetailedSellerRatingApiDto | null;\n communication?: DetailedSellerRatingApiDto | null;\n deliveryTime?: DetailedSellerRatingApiDto | null;\n shippingCost?: DetailedSellerRatingApiDto | null;\n /** @format double */\n detailedSellerRatingAverage: number;\n}\n\nexport enum MemberAccountState {\n None = 'None',\n Active = 'Active',\n TemporarySuspended = 'TemporarySuspended',\n PermanentlySuspended = 'PermanentlySuspended',\n Deregistered = 'Deregistered'\n}\n\nexport enum FeedbackRoleApiDto {\n Buyer = 'Buyer',\n Seller = 'Seller'\n}\n\nexport enum FeedbackRatingApiDto {\n None = 'None',\n Negative = 'Negative',\n Positive = 'Positive'\n}\n\nexport enum MutualFeedbackRemovalStatus {\n Available = 'Available',\n Unavailable = 'Unavailable',\n Requested = 'Requested',\n Received = 'Received',\n Denied = 'Denied'\n}\n\nexport interface MutualFeedbackRemovalItemApiDto {\n /** @format int32 */\n transactionId: number;\n /** @format int32 */\n feedbackRemovalRequestId?: number | null;\n status: MutualFeedbackRemovalStatus;\n /** @deprecated */\n statusText?: string | null;\n}\n\nexport interface FeedbackItemApiDto {\n /** @format int32 */\n feedbackMemberId: number;\n feedbackMemberAlias?: string | null;\n feedbackMemberCountryCodeIso2?: string | null;\n feedbackMemberRole: FeedbackRoleApiDto;\n /** @format int32 */\n gradeId: number;\n rating: FeedbackRatingApiDto;\n text?: string | null;\n reply?: string | null;\n /** @format int32 */\n totalRating: number;\n /** @format date-time */\n created: string;\n /** @format int32 */\n itemId: number;\n /** @format int32 */\n itemCategoryId: number;\n itemShortDescription?: string | null;\n /** @format int32 */\n itemMaxBid: number;\n /** @format date-time */\n itemEndDate: string;\n mutualFeedbackRemovalItem?: MutualFeedbackRemovalItemApiDto | null;\n}\n\nexport interface MemberFeedbackApiResponse {\n totalFeedbackSummary?: TotalFeedbackSummaryForMemberApiDto | null;\n detailedSellerRatingSummaryForMember?: DetailedSellerRatingSummaryForMemberApiDto | null;\n /** @format date-time */\n memberSince: string;\n accountState: MemberAccountState;\n responseStatus?: ResponseStatus | null;\n items?: FeedbackItemApiDto[] | null;\n /** @format int64 */\n totalCount: number;\n}\n\nexport interface MemberDetails {\n /** @format int32 */\n id: number;\n alias?: string | null;\n}\n\nexport enum FeedbackRemovalState {\n Pending = 'Pending',\n Accepted = 'Accepted',\n Rejected = 'Rejected'\n}\n\nexport interface MutualFeedbackRemovalApiDto {\n /** @format int32 */\n id: number;\n /** @format int32 */\n transactionId: number;\n /** @format int32 */\n transactionSellerMemberId: number;\n /** @format int32 */\n transactionBuyerMemberId: number;\n fromMember?: MemberDetails | null;\n toMember?: MemberDetails | null;\n comment?: string | null;\n /** @format date-time */\n created: string;\n /** @format date-time */\n completed?: string | null;\n status?: FeedbackRemovalState | null;\n /** @format int32 */\n itemId: number;\n isCompleted: boolean;\n}\n\nexport enum TransactionFeedbackRole {\n Buyer = 'Buyer',\n Seller = 'Seller'\n}\n\nexport enum TransactionFeedbackRating {\n None = 'None',\n Negative = 'Negative',\n Positive = 'Positive'\n}\n\nexport interface TransactionFeedbackApiDto {\n /** @format int32 */\n fromMemberId: number;\n fromMemberAlias?: string | null;\n /** @format int32 */\n toMemberId: number;\n toMemberAlias?: string | null;\n memberRole: TransactionFeedbackRole;\n rating: TransactionFeedbackRating;\n text?: string | null;\n /** @format date-time */\n created: string;\n}\n\nexport interface FeedbackRemovalApiResponse {\n responseStatus?: ResponseStatus | null;\n feedbackRemovalRequest?: MutualFeedbackRemovalApiDto | null;\n feedbacks?: TransactionFeedbackApiDto[] | null;\n}\n\nexport interface ConfirmMutualFeedbackRemovalApiRequest {\n /** @format int32 */\n feedbackRemovalRequestId: number;\n}\n\nexport interface ConfirmMutualFeedbackRemovalApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport enum ConfirmationStatus {\n ConfirmationAllowed = 'ConfirmationAllowed',\n RequestIsOlderThen30Days = 'RequestIsOlderThen30Days',\n RequestedBySubmitter = 'RequestedBySubmitter'\n}\n\nexport interface ValidateConfirmationApiResponse {\n responseStatus?: ResponseStatus | null;\n feedbackRemovalRequest?: MutualFeedbackRemovalApiDto | null;\n feedbacks?: TransactionFeedbackApiDto[] | null;\n confirmationStatus: ConfirmationStatus;\n}\n\nexport interface CreateFeedbackRemovalApiRequest {\n /** @format int32 */\n transactionId: number;\n comment?: string | null;\n}\n\nexport interface CreateFeedbackRemovalApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport enum CreationStatus {\n CreationAllowed = 'CreationAllowed',\n CreatedBySubmitter = 'CreatedBySubmitter',\n CanBeAcceptedByReceiver = 'CanBeAcceptedByReceiver'\n}\n\nexport interface ValidateCreationApiResponse {\n responseStatus?: ResponseStatus | null;\n feedbackRemovalRequest?: MutualFeedbackRemovalApiDto | null;\n feedbacks?: TransactionFeedbackApiDto[] | null;\n creationStatus: CreationStatus;\n}\n\nexport interface DenyMutualFeedbackRemovalApiRequest {\n /** @format int32 */\n feedbackRemovalRequestId: number;\n}\n\nexport interface DenyMututalFeedbackRemovalApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface FlowStatusRequest {\n /** @format int32 */\n transactionId: number;\n /** @format int32 */\n feedbackMemberId: number;\n}\n\nexport interface FeedbackRemovalsApiRequest {\n feedbacks?: FlowStatusRequest[] | null;\n}\n\nexport enum FeedbackRemovalFlowStatus {\n CanBeStarted = 'CanBeStarted',\n CanBeAccepted = 'CanBeAccepted',\n SubmittedAlready = 'SubmittedAlready',\n NotApplicable = 'NotApplicable'\n}\n\nexport interface FlowStatusResponse {\n /** @format int32 */\n transactionId: number;\n feedbacksRemovalRequest?: MutualFeedbackRemovalApiDto | null;\n flowStatus: FeedbackRemovalFlowStatus;\n}\n\nexport interface FeedbackRemovalsApiResponse {\n responseStatus?: ResponseStatus | null;\n feedbacksRemovalRequests?: FlowStatusResponse[] | null;\n}\n\nexport interface MemberFeedbackItemsApiResponse {\n responseStatus?: ResponseStatus | null;\n items?: FeedbackItemApiDto[] | null;\n /** @format int64 */\n totalCount: number;\n}\n\nexport interface MemberFeedbackSummaryApiResponse {\n totalFeedbackSummary?: TotalFeedbackSummaryForMemberApiDto | null;\n detailedSellerRatingSummary?: DetailedSellerRatingSummaryForMemberApiDto | null;\n /** @format date-time */\n memberSince: string;\n accountState: MemberAccountState;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface TranslatedFeedbackItemApiDto {\n /** @format int32 */\n gradeId: number;\n text?: string | null;\n reply?: string | null;\n}\n\nexport interface GetTranslatedMemberFeedbackApiResponse {\n items?: TranslatedFeedbackItemApiDto[] | null;\n isTranslationOnDemandDisabled: boolean;\n responseStatus?: ResponseStatus | null;\n providerName?: string | null;\n}\n\nexport interface GetTransactionFeedbacksApiResponse {\n responseStatus?: ResponseStatus | null;\n feedbacks?: TransactionFeedbackApiDto[] | null;\n}\n\nexport interface GetBraintreeInvoicePaymentApiResponse {\n responseStatus?: ResponseStatus | null;\n /** @format int64 */\n invoiceId: number;\n status?: string | null;\n orderId?: string | null;\n /** @format double */\n amount: number;\n}\n\nexport interface CreditMemoByEncryptedIdApiResponse {\n /** @format byte */\n pdfFileContent?: string | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface GetCreditMemoPdfApiResponse {\n /** @format byte */\n pdfFileContent?: string | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface GetInvoiceCsvApiResponse {\n /** @format byte */\n csvFileContent?: string | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface GetInvoicePdfApiResponse {\n /** @format byte */\n pdfFileContent?: string | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface CreditMemoDto {\n /** @format int64 */\n invoiceId: number;\n creditMemoDocumentId?: string | null;\n}\n\nexport interface InvoiceDto {\n /** @format int64 */\n invoiceId: number;\n /** @format date-time */\n invoiceDate: string;\n /** @format date-time */\n dueDate: string;\n /** @format double */\n invoiceAmount: number;\n /** @format double */\n amountOwed: number;\n /** @format int64 */\n ocr: number;\n paymentStatus?: string | null;\n creditMemos?: CreditMemoDto[] | null;\n csvGenerated: boolean;\n}\n\nexport interface GetInvoicesApiResponse {\n invoices?: InvoiceDto[] | null;\n responseStatus?: ResponseStatus | null;\n isBillingUnderMaintenance: boolean;\n /** @format int64 */\n totalCount: number;\n}\n\nexport interface UninvoicedFeeDto {\n /** @format int32 */\n feeId: number;\n /** @format date-time */\n createdDate: string;\n /** @format int32 */\n feeType: number;\n feeDescription?: string | null;\n /** @format double */\n amount: number;\n /** @format int32 */\n objectId: number;\n objectDescription?: string | null;\n /** @format int32 */\n revertedFeeRowId: number;\n /** @format int32 */\n creditedByFeeRowId: number;\n usersOwnReference?: string | null;\n /** @format date-time */\n originalFeeDate?: string | null;\n thumbUrl?: string | null;\n /** @format double */\n amountIncludingVat: number;\n itemIds?: number[] | null;\n}\n\nexport interface GetUninvoicedFeesApiResponse {\n uninvoicedFees?: UninvoicedFeeDto[] | null;\n responseStatus?: ResponseStatus | null;\n /** @format int32 */\n totalCount: number;\n /** @format double */\n totalAmountIncludingVat: number;\n invoiceCreating: boolean;\n}\n\nexport interface MemberLoginDetailDto {\n alias?: string | null;\n hasTraderMessage: boolean;\n isCompanyUser: boolean;\n /** @format int32 */\n memberId: number;\n /** @format int32 */\n totalRating: number;\n /** @format date-time */\n memberSince: string;\n accountState: MemberAccountState;\n}\n\nexport interface FindMembersApiResponse {\n members?: MemberLoginDetailDto[] | null;\n /** @format int32 */\n totalCount: number;\n responseStatus?: ResponseStatus | null;\n}\n\nexport type GetAvailableCountriesForShippingApiRequest = object;\n\nexport interface Country {\n countryNameSwe?: string | null;\n countryNameEng?: string | null;\n countryCodeIso2?: string | null;\n}\n\nexport interface GetAvailableCountriesForShippingApiResponse {\n responseStatus?: ResponseStatus | null;\n availableCountries?: Country[] | null;\n}\n\nexport interface GradeTransactionsApiResponse {\n gradesTransactions?: Record;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface GetImageUploadUrlApiResponse {\n signedUrl?: string | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface SetItemVisibilityApiRequest {\n itemIds?: number[] | null;\n hidden: boolean;\n}\n\nexport interface SetItemVisibilityApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface CompleteQuestionnaireApiRequest {\n /** @format int32 */\n questionnaireId: number;\n fieldValues?: Record;\n languageCodeIso2?: string | null;\n}\n\nexport interface CompleteQuestionnaireApiResponse {\n alias?: string | null;\n isValid: boolean;\n ruleViolations?: Record;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface InitializeQuestionnaireApiRequest {\n alias?: string | null;\n}\n\nexport interface InitializeQuestionnaireApiResponse {\n /** @format int32 */\n questionnaireId: number;\n responseStatus?: ResponseStatus | null;\n}\n\nexport type GetKycPendingActionsApiRequest = object;\n\nexport interface GetKycPendingActionsApiResponse {\n /** @format int32 */\n memberId: number;\n pendingActionActionTypes?: string[] | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface AnswerQuestionnaireApiRequest {\n alias?: string | null;\n fieldValues?: Record;\n pageDefinitionWithValues?: string | null;\n languageCodeIso2?: string | null;\n}\n\nexport interface AnswerQuestionnaireApiResponse {\n alias?: string | null;\n isValid: boolean;\n ruleViolations?: Record;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface GetKycQuestionnairePageDefinitionApiResponse {\n /** @format int32 */\n memberId: number;\n alias?: string | null;\n pageDefinition?: object | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport type SetLastNotifiedApiRequest = object;\n\nexport interface SetLastNotifiedApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport enum ItemTransactionTypeApiDto {\n Auction = 'Auction',\n Bin = 'Bin',\n Cart = 'Cart',\n PurchaseOfferOnActive = 'PurchaseOfferOnActive',\n PurchaseOfferOnEnded = 'PurchaseOfferOnEnded'\n}\n\nexport interface ShippingApiDto {\n /** @format int32 */\n cost: number;\n type?: string | null;\n name?: string | null;\n isFreeShipping: boolean;\n isTakeaway: boolean;\n /** @format int32 */\n productId?: number | null;\n /** @format int32 */\n weight?: number | null;\n fromCountryCodeIso2?: string | null;\n toCountryCodeIso2?: string | null;\n}\n\nexport interface DiscountDto {\n /** @format double */\n amount: number;\n /** @format date-time */\n created: string;\n type?: string | null;\n}\n\nexport interface ItemTransactionApiDto {\n /** @format int32 */\n itemId: number;\n itemTransactionType: ItemTransactionTypeApiDto;\n /** @format int32 */\n itemCategoryId: number;\n itemTitle?: string | null;\n imageUrl?: string | null;\n imageUrlTemplate?: string | null;\n /** @format int32 */\n sellerMemberId: number;\n sellerAlias?: string | null;\n /** @format int32 */\n buyerMemberId: number;\n /** @format int32 */\n itemPrice?: number | null;\n isPaid: boolean;\n /** @format int32 */\n transactionId: number;\n /** @format uuid */\n purchaseOrderId: string;\n hasBuyerLeftFeedback: boolean;\n hasSellerLeftFeedback: boolean;\n /** @format date-time */\n transactionDate: string;\n selectedShipping?: ShippingApiDto | null;\n /** @format int32 */\n orderNumber: number;\n trackingLink?: string | null;\n /** @format int32 */\n sellerRating: number;\n /** @format int32 */\n openingBid?: number | null;\n /** @format int32 */\n buyItNowPrice?: number | null;\n /** @format int32 */\n bidCount?: number | null;\n isHidden: boolean;\n discounts?: DiscountDto[] | null;\n paidStatus?: string | null;\n hasTraderaAsMerchantOfRecord: boolean;\n isPaynovaPayment: boolean;\n}\n\nexport interface GetAllItemsForLeaveFeedbackAsBuyerApiResponse {\n items?: ItemTransactionApiDto[] | null;\n /** @format int64 */\n itemsLeft: number;\n /** @format int64 */\n totalCount: number;\n /** @format int64 */\n paidTotalCount: number;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface GetItemsForLeaveFeedbackAsBuyerApiResponse {\n transactions?: ItemTransactionApiDto[] | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface ItemImageUrls {\n normal?: string | null;\n medium?: string | null;\n}\n\nexport interface MemberContactDetailsApiDto {\n /** @format int32 */\n memberId: number;\n streetName?: string | null;\n town?: string | null;\n zipCode?: string | null;\n country?: string | null;\n fullName?: string | null;\n phoneNumber?: string | null;\n email?: string | null;\n alias?: string | null;\n ssn?: string | null;\n firstName?: string | null;\n lastName?: string | null;\n countryCodeIso2?: string | null;\n}\n\nexport interface BookedShipping {\n /** @format uuid */\n shipmentId: string;\n /** @format uuid */\n shipmentCheckoutId: string;\n trackingLink?: string | null;\n trackingId?: string | null;\n shippingType?: string | null;\n hasShipmentLabel: boolean;\n hasShipmentReceipt: boolean;\n}\n\nexport interface ShippingDiscount {\n shippingProvider?: string | null;\n /** @format int32 */\n price: number;\n}\n\nexport interface MemberSoldItemApiDto {\n /** @format uuid */\n purchaseOrderId: string;\n /** @format int32 */\n transactionId: number;\n /** @format int32 */\n itemId: number;\n /** @format int32 */\n categoryId: number;\n itemTitle?: string | null;\n mainImage?: ItemImageUrls | null;\n mainImageTemplate?: string | null;\n /** @format int32 */\n price: number;\n /** @format int32 */\n fixedPrice?: number | null;\n /** @format int32 */\n reservedPrice?: number | null;\n hasBuyerLeftFeedback: boolean;\n hasSellerLeftFeedback: boolean;\n isMarkedAsPaidByBuyer: boolean;\n isMarkedAsPaidBySeller: boolean;\n isMarkedAsShipped: boolean;\n isShippingBooked: boolean;\n /** @format date-time */\n transactionDate: string;\n buyerMemberAlias?: string | null;\n /** @format int32 */\n buyerMemberId: number;\n hiddenBySeller: boolean;\n /** @deprecated */\n trackingLink?: string | null;\n itemTransactionType: ItemTransactionTypeApiDto;\n /** @format int32 */\n openingBid?: number | null;\n /** @format int32 */\n bidCount?: number | null;\n buyerContactDetails?: MemberContactDetailsApiDto | null;\n selectedShipping?: ShippingApiDto | null;\n offeredShippingOptions?: ShippingApiDto[] | null;\n bookedShipping?: BookedShipping | null;\n shippingDiscount?: ShippingDiscount | null;\n userReference?: string | null;\n soldItemState?: string | null;\n /** @format int32 */\n leadingBid?: number | null;\n /** @format int32 */\n buyerTotalRating: number;\n paidStatus?: string | null;\n /** @deprecated */\n paymentProvider?: string | null;\n discounts?: DiscountDto[] | null;\n isDiscountAfterPaymentSupported: boolean;\n isDiscountBeforePaymentSupported: boolean;\n /** @deprecated */\n isPaidWithIntegratedPaymentOption: boolean;\n}\n\nexport interface GetAllItemsForLeaveFeedbackAsSellerApiResponse {\n items?: MemberSoldItemApiDto[] | null;\n /** @format int64 */\n itemsLeft: number;\n /** @format int64 */\n totalCount: number;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface GetItemsForLeaveFeedbackAsSellerApiResponse {\n items?: MemberSoldItemApiDto[] | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface LeaveFeedbackAsBuyerApiResponse {\n transaction?: ItemTransactionApiDto | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface SaveFeedbackAsBuyerApiRequest {\n /** @format int32 */\n transactionId: number;\n isPositive: boolean;\n comment?: string | null;\n /** @format int32 */\n itemAsDescribed?: number | null;\n /** @format int32 */\n commResponsiveness?: number | null;\n /** @format int32 */\n shippingTime?: number | null;\n /** @format int32 */\n shippingHandlingCharges?: number | null;\n reportInr: boolean;\n /**\n * @deprecated\n * @format int32\n */\n sellerMemberId: number;\n /**\n * @deprecated\n * @format int32\n */\n itemId: number;\n}\n\nexport interface SaveFeedbackAsBuyerApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface CommentFeedbackApiRequest {\n /** @format int32 */\n memberId: number;\n /** @format int32 */\n gradeId: number;\n comment?: string | null;\n}\n\nexport interface CommentFeedbackApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface LeaveFeedbackAsSellerApiResponse {\n transaction?: ItemTransactionApiDto | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface SaveFeedbackAsSellerApiRequest {\n /** @format int32 */\n transactionId: number;\n isPositive: boolean;\n comment?: string | null;\n /** @format int32 */\n paymentTime?: number | null;\n /**\n * @deprecated\n * @format int32\n */\n itemId: number;\n /**\n * @deprecated\n * @format int32\n */\n buyerMemberId: number;\n}\n\nexport interface SaveFeedbackAsSellerApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport type MemberListSettingsApiRequest = object;\n\nexport interface MemberListSettingsApiResponse {\n /** @format int32 */\n memberId: number;\n publicMemoryList: boolean;\n enablePublicSavedSearch: boolean;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface StrikeItem {\n /** @format int32 */\n transactionId: number;\n}\n\nexport interface MutualCancelOfPurchaseStrikeApiResponse {\n responseStatus?: ResponseStatus | null;\n strikeSubmitted: boolean;\n strikeConfirmed: boolean;\n /** @format uuid */\n purchaseOrderId: string;\n items?: StrikeItem[] | null;\n}\n\nexport interface AddMutualCancelOfPurchaseStrikeApiRequest {\n /** @format uuid */\n purchaseOrderId: string;\n comment?: string | null;\n}\n\nexport interface AddMutualCancelOfPurchaseStrikeApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface ConfirmMutualCancelOfPurchaseStrikeApiRequest {\n /** @format uuid */\n purchaseOrderId: string;\n approved: boolean;\n}\n\nexport interface ConfirmMutualCancelOfPurchaseStrikeApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport type GetMemberEmailNotificationsSettingsViewModelApiRequest = object;\n\nexport interface MemberEmailNotificationsSettingsMessagingApiDto {\n isAllowedToSetParticipation: boolean;\n participates: boolean;\n emailNotifyAll: boolean;\n}\n\nexport interface MemberEmailNotificationsSettingsEmailApiDto {\n notifyWhenItemBecomesUnsold: boolean;\n notifyOnFirstWinningBid: boolean;\n notifyBeforeWishListItemEnds: boolean;\n acceptsNewsLetter: boolean;\n acceptsOfferEmails: boolean;\n acceptsUpiInfoEmails: boolean;\n acceptsUnknownDeviceOrIpEmails: boolean;\n}\n\nexport interface GetMemberEmailNotificationsSettingsViewModelApiResponse {\n /** @format int32 */\n memberId: number;\n messaging?: MemberEmailNotificationsSettingsMessagingApiDto | null;\n email?: MemberEmailNotificationsSettingsEmailApiDto | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport type GetMemberProfileSettingsViewModelApiRequest = object;\n\nexport interface HeroImageUrlApiDto {\n max?: string | null;\n med?: string | null;\n min?: string | null;\n}\n\nexport interface MemberProfileSettingsPresentationApiDto {\n heroImageUrls?: HeroImageUrlApiDto | null;\n information?: string | null;\n}\n\nexport interface MemberProfileSettingsAccountInformationApiDto {\n alias?: string | null;\n emailAddress?: string | null;\n}\n\nexport interface MemberProfileSettingsPersonalDataApiDto {\n firstName?: string | null;\n lastName?: string | null;\n streetName?: string | null;\n zipCode?: string | null;\n city?: string | null;\n country?: string | null;\n countryCodeIso2?: string | null;\n phoneNumber?: string | null;\n phoneNumberUnvalidated?: string | null;\n isNameChangeAllowed: boolean;\n}\n\nexport interface GetMemberProfileSettingsViewModelApiResponse {\n /** @format int32 */\n memberId: number;\n presentation?: MemberProfileSettingsPresentationApiDto | null;\n accountInformation?: MemberProfileSettingsAccountInformationApiDto | null;\n personalData?: MemberProfileSettingsPersonalDataApiDto | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport type GetMemberSecuritySettingsViewModelApiRequest = object;\n\nexport interface MemberSecuritySettingsAccountDeactivationApiDto {\n isAccountDeactivationAllowed: boolean;\n}\n\nexport interface MemberSecuritySettingsBlockedMemberApiDto {\n /** @format int32 */\n memberId: number;\n alias?: string | null;\n}\n\nexport interface MemberSecuritySettingsMemberBlockingApiDto {\n blockedMembers?: MemberSecuritySettingsBlockedMemberApiDto[] | null;\n}\n\nexport interface GetMemberSecuritySettingsViewModelApiResponse {\n /** @format int32 */\n memberId: number;\n accountDeactivation?: MemberSecuritySettingsAccountDeactivationApiDto | null;\n memberBlocking?: MemberSecuritySettingsMemberBlockingApiDto | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport type GetMemberSellerSettingsViewModelApiRequest = object;\n\nexport interface MemberSellerSettingsCombinedShippingApiDto {\n enabled: boolean;\n /** @format int32 */\n days: number;\n isChangeAllowed: boolean;\n}\n\nexport interface MemberSellerSettingsShippingFeeRuleApiDto {\n shippingOption?: string | null;\n useFreeShippingCostLimit: boolean;\n /** @format int32 */\n freeShippingCostLimit: number;\n}\n\nexport interface MemberSellerSettingsCommitOnPaymentApiDto {\n enabled: boolean;\n isChangeAllowed: boolean;\n}\n\nexport enum SellerAutoFeedbackType {\n Manual = 'Manual',\n PositiveFeedback = 'PositiveFeedback',\n Paid = 'Paid'\n}\n\nexport interface MemberSellerSettingsAutoFeedbackApiDto {\n enabled: boolean;\n type: SellerAutoFeedbackType;\n message?: string | null;\n}\n\nexport interface MemberSellerSettingsAutoPaymentReminderApiDto {\n enabled: boolean;\n}\n\nexport interface MemberSellerSettingsAutoShipmentCheckoutApiDto {\n enabled: boolean;\n isChangeAllowed: boolean;\n}\n\nexport interface MemberSellerSettingsItemLocalizationApiDto {\n shippingFromCountryCodeIso2?: string | null;\n selectedDescriptionLanguageCodeIso2?: string | null;\n}\n\nexport interface GetMemberSellerSettingsViewModelApiResponse {\n /** @format int32 */\n memberId: number;\n combinedShipping?: MemberSellerSettingsCombinedShippingApiDto | null;\n shippingFeeRule?: MemberSellerSettingsShippingFeeRuleApiDto | null;\n commitOnPayment?: MemberSellerSettingsCommitOnPaymentApiDto | null;\n autoFeedback?: MemberSellerSettingsAutoFeedbackApiDto | null;\n autoPaymentReminder?: MemberSellerSettingsAutoPaymentReminderApiDto | null;\n autoShipmentCheckout?: MemberSellerSettingsAutoShipmentCheckoutApiDto | null;\n itemLocalization?: MemberSellerSettingsItemLocalizationApiDto | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport enum MessagingEmailNotification {\n All = 'All',\n Unread = 'Unread',\n None = 'None'\n}\n\nexport interface GetMessagingEmailNotifyApiResponse {\n /** @format int32 */\n memberId: number;\n emailNotify: MessagingEmailNotification;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface SetMessagingEmailNotifyApiRequest {\n emailNotify: MessagingEmailNotification;\n}\n\nexport interface SetMessagingEmailNotifyApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport type GetMessagingMyParticipationApiRequest = object;\n\nexport interface GetMessagingMyParticipationApiResponse {\n /** @format int32 */\n memberId: number;\n participates: boolean;\n allowedToSet: boolean;\n suspended: boolean;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface GetMessagingParticipationApiResponse {\n /** @format int32 */\n memberId: number;\n participates: boolean;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface SetMessagingParticipationApiRequest {\n participates: boolean;\n}\n\nexport interface SetMessagingParticipationApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport type GetMessagingStatsApiRequest = object;\n\nexport interface GetMessagingStatsApiResponse {\n /** @format int32 */\n threads: number;\n /** @format int32 */\n threadsUnread: number;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface NotificationApiDto {\n /** @format int32 */\n memberId: number;\n type?: string | null;\n /** @format int32 */\n itemId: number;\n title?: string | null;\n /** @format int32 */\n amount: number;\n /** @format date-time */\n timeStamp: string;\n isRead: boolean;\n mainImage?: ItemImageUrls | null;\n mainImageTemplate?: string | null;\n}\n\nexport interface GetNotificationsApiResponse {\n responseStatus?: ResponseStatus | null;\n /** @format int64 */\n unreadCount: number;\n /** @format int64 */\n totalCount: number;\n items?: NotificationApiDto[] | null;\n}\n\nexport interface OrderItem {\n /** @format int32 */\n itemId: number;\n /** @format double */\n price: number;\n shortDescription?: string | null;\n imageUrl?: string | null;\n imageUrlTemplate?: string | null;\n /** @format date-time */\n transactionDate: string;\n}\n\nexport interface PublicProfileApiDto {\n /** @format int32 */\n memberId: number;\n alias?: string | null;\n /** @format double */\n detailedSellerRating?: number | null;\n /** @format int32 */\n totalRating: number;\n isCompanyUser: boolean;\n hasShop: boolean;\n zipCode?: string | null;\n city?: string | null;\n country?: string | null;\n}\n\nexport interface ContactDetailsApiDto {\n /** @format int32 */\n memberId: number;\n streetName?: string | null;\n town?: string | null;\n zipCode?: string | null;\n country?: string | null;\n fullName?: string | null;\n phoneNumber?: string | null;\n email?: string | null;\n alias?: string | null;\n firstName?: string | null;\n lastName?: string | null;\n countryCodeIso2?: string | null;\n}\n\nexport interface PaymentOptionApiDto {\n displayName?: string | null;\n paymentType?: string | null;\n}\n\nexport interface BuyerProtectionApiDto {\n /** @format double */\n buyerProtectionCost: number;\n}\n\nexport interface OrderInfoApiResponse {\n responseStatus?: ResponseStatus | null;\n items?: OrderItem[] | null;\n sellerProfile?: PublicProfileApiDto | null;\n sellerContactDetails?: ContactDetailsApiDto | null;\n paymentOptions?: PaymentOptionApiDto[] | null;\n paidStatus?: string | null;\n paymentMethod?: string | null;\n /** @format uuid */\n purchaseOrderId: string;\n /** @format int32 */\n transactionId: number;\n offeredShippingOptions?: ShippingApiDto[] | null;\n selectedShipping?: ShippingApiDto | null;\n bookedShipping?: BookedShipping | null;\n shippingDiscount?: ShippingDiscount | null;\n isMarkedAsShipped: boolean;\n isFeedbackLeftByBuyer: boolean;\n discounts?: DiscountDto[] | null;\n /** @format double */\n totalOrderPrice: number;\n /** @format double */\n totalOrderPriceWithoutShipping: number;\n buyerProtection?: BuyerProtectionApiDto | null;\n}\n\nexport type RemoveBankAccountPayoutTransferMethodApiRequest = object;\n\nexport interface RemoveBankAccountPayoutTransferMethodApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface SetBankAccountPayoutTransferMethodApiRequest {\n clearingNumber?: string | null;\n bankAccountNumber?: string | null;\n}\n\nexport interface SetBankAccountPayoutTransferMethodApiResponse {\n responseStatus?: ResponseStatus | null;\n /** @format uuid */\n processCorrelationId: string;\n errorCode?: string | null;\n}\n\nexport interface CompleteHyperwalletTransferMethodApiRequest {\n transferMethodToken?: string | null;\n transferMethodType?: string | null;\n}\n\nexport interface CompleteHyperwalletTransferMethodApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport type GetHyperwalletAuthenticationTokenApiRequest = object;\n\nexport interface GetHyperwalletAuthenticationTokenApiResponse {\n authenticationToken?: string | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport type GetHyperwalletTransferMethodViewModelApiRequest = object;\n\nexport interface GetHyperwalletTransferMethodViewModelApiResponse {\n userToken?: string | null;\n widgetBaseUrl?: string | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface MatchBankApiRequest {\n bankAccountNumber?: string | null;\n clearingNumber?: string | null;\n}\n\nexport interface MatchBankApiResponse {\n bankName?: string | null;\n ok: boolean;\n clearingNumber?: string | null;\n bankAccountNumber?: string | null;\n responseStatus?: ResponseStatus | null;\n requireBankIdVerification: boolean;\n}\n\nexport type GetMemberPayoutSettingsViewModelApiRequest = object;\n\nexport interface MemberPayoutSettingsMember {\n /** @format int32 */\n memberId: number;\n isCompany: boolean;\n emailAddress?: string | null;\n phoneNumber?: string | null;\n}\n\nexport interface MemberPayoutSettingsPayoutDestination {\n type?: string | null;\n transferMethodToken?: string | null;\n country?: string | null;\n currency?: string | null;\n emailAddress?: string | null;\n clearingNumber?: string | null;\n bankAccountNumber?: string | null;\n swift?: string | null;\n iban?: string | null;\n}\n\nexport interface MemberPayoutSettingsPayoutProblem {\n type?: string | null;\n details?: string | null;\n}\n\nexport interface MemberPayoutSettingsSwishApp2App {\n swishNumber?: string | null;\n}\n\nexport interface MemberPayoutSettingsTink {\n tinkLinkUrl?: string | null;\n}\n\nexport interface MemberPayoutSettingsHyperwallet {\n userToken?: string | null;\n widgetBaseUrl?: string | null;\n}\n\nexport interface MemberPayoutSettingsTraderaPay {\n payoutProvider?: string | null;\n payoutDestination?: MemberPayoutSettingsPayoutDestination | null;\n payoutProblems?: MemberPayoutSettingsPayoutProblem[] | null;\n swishApp2App?: MemberPayoutSettingsSwishApp2App | null;\n tink?: MemberPayoutSettingsTink | null;\n hyperwallet?: MemberPayoutSettingsHyperwallet | null;\n}\n\nexport interface GetMemberPayoutSettingsViewModelApiResponse {\n member?: MemberPayoutSettingsMember | null;\n traderaPay?: MemberPayoutSettingsTraderaPay | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport type RemovePayPalPayoutTransferMethodApiRequest = object;\n\nexport interface RemovePayPalPayoutTransferMethodApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface SetPayPalPayoutTransferMethodApiRequest {\n emailAddress?: string | null;\n}\n\nexport interface SetPayPalPayoutTransferMethodApiResponse {\n responseStatus?: ResponseStatus | null;\n /** @format uuid */\n processCorrelationId: string;\n errorCode?: string | null;\n}\n\nexport type SetHyperwalletPayeeVerificationAsSubmittedApiRequest = object;\n\nexport interface SetHyperwalletPayeeVerificationAsSubmittedApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface SetPayoutTransferMethodUsingTinkApiRequest {\n accountNumber?: string | null;\n}\n\nexport interface SetPayoutTransferMethodUsingTinkApiResponse {\n responseStatus?: ResponseStatus | null;\n /** @format uuid */\n processCorrelationId: string;\n errorCode?: string | null;\n}\n\nexport interface GetPayoutTransferMethodUpdateStatusApiResponse {\n responseStatus?: ResponseStatus | null;\n status?: string | null;\n errorCode?: string | null;\n}\n\nexport interface ItemStrikeSubmission {\n /** @format int32 */\n transactionId: number;\n strikeSubmitted: boolean;\n}\n\nexport interface PurchaseOrderNotReceivedStrikeApiResponse {\n responseStatus?: ResponseStatus | null;\n strikeSubmitted: boolean;\n items?: ItemStrikeSubmission[] | null;\n}\n\nexport interface AddPurchaseOrderNotReceivedStrikeApiRequest {\n /** @format uuid */\n purchaseOrderId: string;\n comment?: string | null;\n}\n\nexport interface AddPurchaseOrderNotReceivedStrikeApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface BankIdPasswordRecoveryCancelApiRequest {\n bankIdOrderRef?: string | null;\n /** @format int32 */\n memberid: number;\n}\n\nexport interface BankIdAuthenticationCancelApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface BankIdAuthenticationProgressApiResponse {\n isCompleted: boolean;\n progress?: string | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface BankIdBeginWithIdApiRequest {\n /** @format int32 */\n memberId: number;\n}\n\nexport interface BankIdAuthenticationBeginApiResponse {\n bankIdOrderRef?: string | null;\n responseStatus?: ResponseStatus | null;\n autoStartToken?: string | null;\n}\n\nexport enum VerificationReason {\n VerificationNotNeeded = 'VerificationNotNeeded',\n NeedInitialVerification = 'NeedInitialVerification',\n NeedsVerificationFixedPriceLimitTwoMonthValidation = 'NeedsVerificationFixedPriceLimitTwoMonthValidation',\n NeedsVerificationFixedPriceLimitExpensive = 'NeedsVerificationFixedPriceLimitExpensive'\n}\n\nexport interface GetMemberBankIdVerificationApiResponse {\n responseStatus?: ResponseStatus | null;\n needInitialVerification: boolean;\n supportsVerification: boolean;\n /** @format date-time */\n lastVerifiedDate: string;\n /** @format date-time */\n manualIdentityVerificationValidTo: string;\n bankIdFormattedPersonalNumber?: string | null;\n needsVerification: boolean;\n verificationReason: VerificationReason;\n}\n\nexport type GetBraintreeOnboardingDetailsApiRequest = object;\n\nexport interface GetBraintreeOnboardingDetailsApiResponse {\n responseStatus?: ResponseStatus | null;\n isEnabled: boolean;\n isAccountDetailsSupplied: boolean;\n maskedBankAccount?: string | null;\n isAlreadyOnboarded: boolean;\n isOnboardingAllowed: boolean;\n}\n\nexport interface ChangeAliasApiRequest {\n newAlias?: string | null;\n ipAddress?: string | null;\n operatingSystem?: string | null;\n browser?: string | null;\n location?: string | null;\n}\n\nexport interface ChangeAliasApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface ChangeEmailWithIdApiRequest {\n bankIdOrderRef?: string | null;\n /** @format int32 */\n memberId: number;\n email?: string | null;\n userIpAddress?: string | null;\n}\n\nexport interface ChangeEmailWithIdApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface ChangePasswordApiRequest {\n password?: string | null;\n}\n\nexport interface ChangePasswordApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface ChangePasswordWithIdApiRequest {\n /** @format int32 */\n memberId: number;\n password?: string | null;\n}\n\nexport interface SetMemberConsentApiRequest {\n agreementName?: string | null;\n}\n\nexport interface SetMemberConsentApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport type CreateVerificationCodeApiRequest = object;\n\nexport interface CreateVerificationCodeApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport enum RecoveryFlowType {\n Email = 'Email',\n Sms = 'Sms'\n}\n\nexport interface CreateVerificationCodeWithMemberIdApiRequest {\n /** @format int32 */\n memberId: number;\n recoveryFlowType: RecoveryFlowType;\n}\n\nexport interface CreateVerificationCodeWithMemberIdApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface UpdateMemberCurrencyApiRequest {\n currencyCode?: string | null;\n}\n\nexport interface UpdateMemberCurrencyApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport type GetHyperwalletMemberDetailsApiRequest = object;\n\nexport interface GetHyperwalletMemberDetailsApiResponse {\n responseStatus?: ResponseStatus | null;\n userToken?: string | null;\n payeeVerificationStatus?: string | null;\n}\n\nexport type GetIsCombinedShippingEnabledApiRequest = object;\n\nexport interface GetIsCombinedShippingEnabledApiResponse {\n responseStatus?: ResponseStatus | null;\n isEnabled: boolean;\n}\n\nexport type GetIsTraderaPayEnabledApiRequest = object;\n\nexport interface GetIsTraderaPayEnabledApiResponse {\n responseStatus?: ResponseStatus | null;\n isEnabled: boolean;\n}\n\nexport type GetShippingInvoiceMemberApiRequest = object;\n\nexport interface GetShippingInvoiceMemberApiResponse {\n responseStatus?: ResponseStatus | null;\n enabled: boolean;\n}\n\nexport type GetTraderaPayMemberApiRequest = object;\n\nexport enum SwishApp2AppMemberDetailsState {\n Step1 = 'Step1',\n Step2 = 'Step2',\n Step3 = 'Step3'\n}\n\nexport interface SwishApp2AppMemberDetailsDto {\n phoneNumber?: string | null;\n /** @format date-time */\n verified?: string | null;\n enabled: boolean;\n optOut: boolean;\n suggestedPhoneNumber?: string | null;\n state: SwishApp2AppMemberDetailsState;\n}\n\nexport interface BraintreeMemberDetailsDto {\n enabled: boolean;\n maskedBankAccountNumber?: string | null;\n isBankAccountSupplied: boolean;\n /** @format date-time */\n created: string;\n hasFailedPayouts: boolean;\n isMemberSetForPayout: boolean;\n isOnboardedToLicense: boolean;\n}\n\nexport interface HyperwalletPayeeVerificationDetailsDto {\n status?: string | null;\n /** @format date-time */\n statusCreatedOn?: string | null;\n /** @format date-time */\n submitted?: string | null;\n}\n\nexport interface GetTraderaPayMemberApiResponse {\n responseStatus?: ResponseStatus | null;\n swishApp2AppMemberMemberDetails?: SwishApp2AppMemberDetailsDto | null;\n braintreeMemberDetails?: BraintreeMemberDetailsDto | null;\n hyperwalletPayeeVerificationDetails?: HyperwalletPayeeVerificationDetailsDto | null;\n}\n\nexport type GetTraderaPayOnboardingDetailsApiRequest = object;\n\nexport enum OnboardingType {\n None = 'None',\n Normal = 'Normal',\n Aggressive = 'Aggressive'\n}\n\nexport interface GetTraderaPayOnboardingDetailsApiResponse {\n onboardingType: OnboardingType;\n isSwishNumberSupplied: boolean;\n isBankAccountDetailsSupplied: boolean;\n hasSellerActivity: boolean;\n responseStatus?: ResponseStatus | null;\n}\n\nexport type GetHasWalletApiRequest = object;\n\nexport interface GetHasWalletApiResponse {\n responseStatus?: ResponseStatus | null;\n hasWallet: boolean;\n isFeeNettingEnabled: boolean;\n isOnboardedToFeeNetting: boolean;\n isFeeNettingReminderPostponed: boolean;\n}\n\nexport interface UpdateMemberLanguageApiRequest {\n languageCodeIso2?: string | null;\n userIpAddress?: string | null;\n}\n\nexport interface UpdateMemberLanguageApiResponse {\n responseStatus?: ResponseStatus | null;\n isValid: boolean;\n}\n\nexport interface MemberIdentificationBankIdPasswordRecoveryCancelApiRequest {\n bankIdOrderRef?: string | null;\n /** @format int32 */\n memberid: number;\n}\n\nexport interface MemberIdentificationBeginBankIdWithIdApiRequest {\n /** @format int32 */\n memberId: number;\n}\n\nexport interface MemberIdentificationChangeEmailWithIdApiRequest {\n bankIdOrderRef?: string | null;\n /** @format int32 */\n memberId: number;\n email?: string | null;\n userIpAddress?: string | null;\n}\n\nexport type GetMemberLocalizationApiRequest = object;\n\nexport interface GetMemberLocalizationApiResponse {\n responseStatus?: ResponseStatus | null;\n languageCodeIso2?: string | null;\n currencyCode?: string | null;\n automaticTranslationPreference: boolean;\n}\n\nexport type GetMemberConsentApiRequest = object;\n\nexport interface GetMemberConsentApiResponse {\n responseStatus?: ResponseStatus | null;\n hasTraderaPayConsent: boolean;\n isUnderLicense: boolean;\n needsConsentOfTraderaPayAgreement?: string | null;\n}\n\nexport type GetPayoutFrequencyApiRequest = object;\n\nexport interface PayoutFrequencyApiResponse {\n payoutFrequencyOption?: string | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport type GetPayoutFrequencyOptionsApiRequest = object;\n\nexport interface PayoutFrequencyOptionsApiResponse {\n options?: string[] | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport type RemoveTraderaPayPayoutDestinationApiRequest = object;\n\nexport interface RemoveTraderaPayPayoutDestinationApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface UpdateMemberSelectedDescriptionLanguageApiRequest {\n languageCodeIso2?: string | null;\n}\n\nexport interface UpdateMemberSelectedDescriptionLanguageApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface SetPayoutFrequencyApiRequest {\n payoutFrequencyOption?: string | null;\n}\n\nexport interface SetPayoutFrequencyApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface UpdateMemberShippingFromCountryApiRequest {\n countryCodeIso2?: string | null;\n}\n\nexport interface UpdateMemberShippingFromCountryApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface SmsCheckApiRequest {\n smsSid?: string | null;\n}\n\nexport interface SmsCheckApiResponse {\n responseStatus?: ResponseStatus | null;\n successful: boolean;\n}\n\nexport interface SendVerificationSmsApiRequest {\n cellphoneNumber?: string | null;\n countryCode?: string | null;\n}\n\nexport interface SendVerificationSmsApiResponse {\n responseStatus?: ResponseStatus | null;\n successful: boolean;\n errorMessage?: string | null;\n sentToTelephoneNumber?: string | null;\n sentToCountryCode?: string | null;\n smsSid?: string | null;\n}\n\nexport interface SmsVerificationDTO {\n cellphoneNumber?: string | null;\n /** @format date-time */\n timestamp: string;\n action?: string | null;\n}\n\nexport interface SmsVerificationsApiResponse {\n verifications?: SmsVerificationDTO[] | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface SendVerificationSmsWithIdApiRequest {\n /** @format int32 */\n memberId: number;\n cellphoneNumber?: string | null;\n countryCode?: string | null;\n recoveryFlowType: RecoveryFlowType;\n}\n\nexport type SwishApp2AppMemberDisableApiRequest = object;\n\nexport interface SwishApp2AppMemberDisableApiResponse {\n responseStatus?: ResponseStatus | null;\n ok: boolean;\n}\n\nexport type SwishApp2AppMemberOptOutApiRequest = object;\n\nexport interface SwishApp2AppMemberOptOutApiResponse {\n responseStatus?: ResponseStatus | null;\n ok: boolean;\n}\n\nexport interface SwishApp2AppMemberSavePhoneNumberApiRequest {\n phoneNumber?: string | null;\n}\n\nexport interface SwishApp2AppMemberSavePhoneNumberApiResponse {\n ok: boolean;\n responseStatus?: ResponseStatus | null;\n requireSmsVerification: boolean;\n requireBankIdVerification: boolean;\n}\n\nexport interface SwishApp2AppMemberSetVerifiedApiRequest {\n code?: string | null;\n}\n\nexport interface SwishApp2AppMemberSetVerifiedApiResponse {\n responseStatus?: ResponseStatus | null;\n ok: boolean;\n}\n\nexport interface SwishApp2AppMemberVerifyCodeApiRequest {\n code?: string | null;\n}\n\nexport interface SwishApp2AppMemberVerifyCodeApiResponse {\n responseStatus?: ResponseStatus | null;\n ok: boolean;\n}\n\nexport interface TinkBankAccountDto {\n bankId?: string | null;\n name?: string | null;\n accountNumber?: string | null;\n icon?: string | null;\n}\n\nexport interface TinkGetBankAccountsApiResponse {\n responseStatus?: ResponseStatus | null;\n accounts?: TinkBankAccountDto[] | null;\n}\n\nexport type TinkGetLinkApiRequest = object;\n\nexport interface TinkGetLinkApiResponse {\n responseStatus?: ResponseStatus | null;\n url?: string | null;\n}\n\nexport interface UpdateMemberTranslationPreferenceApiRequest {\n isAutomaticTranslationPreferenceEnabled: boolean;\n}\n\nexport interface UpdateMemberTranslationPreferenceApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface ValidateExistingPasswordForMemberApiRequest {\n existingPassword?: string | null;\n}\n\nexport interface ValidateExistingPasswordForMemberApiResponse {\n isValid: boolean;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface VerifyNonMobilePincodeApiRequest {\n pincode?: string | null;\n}\n\nexport interface VerifyPincodeApiResponse {\n success: boolean;\n hasActiveVerificationCode: boolean;\n /** @format int32 */\n verificationAttempts: number;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface VerifyNonMobilePincodeWithIdApiRequest {\n /** @format int32 */\n memberId: number;\n pincode?: string | null;\n recoveryFlowType: RecoveryFlowType;\n}\n\nexport interface VerifyPincodeApiRequest {\n pincode?: string | null;\n}\n\nexport interface VerifyPincodeWithIdApiRequest {\n /** @format int32 */\n memberId: number;\n pincode?: string | null;\n recoveryFlowType: RecoveryFlowType;\n}\n\nexport interface RemoveMemberPublicProfileHeroImageApiRequest {\n userIpAddress?: string | null;\n}\n\nexport interface RemoveMemberPublicProfileHeroImageApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface UpdateMemberPublicProfileHeroImageApiRequest {\n heroImageUrl?: string | null;\n userIpAddress?: string | null;\n}\n\nexport interface UpdateMemberPublicProfileHeroImageApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface UpdateMemberPublicProfileInformationApiRequest {\n information?: string | null;\n userIpAddress?: string | null;\n}\n\nexport interface UpdateMemberPublicProfileInformationApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport enum WishListStatusFilter {\n All = 'All',\n Active = 'Active',\n Ended = 'Ended'\n}\n\nexport interface MemberBidInfo {\n /** @format int32 */\n maxBidAmount: number;\n bidRemoved: boolean;\n auctionRemoved: boolean;\n reservePriceReached: boolean;\n /** @format int32 */\n memberId: number;\n}\n\nexport enum ItemTypeApiDto {\n Auction = 'Auction',\n AuctionBin = 'AuctionBin',\n PureBin = 'PureBin',\n ShopItem = 'ShopItem'\n}\n\nexport interface WishListItemDto {\n /** @format int32 */\n itemId: number;\n title?: string | null;\n /** @format int32 */\n categoryId: number;\n /** @format date-time */\n endDate: string;\n isShopItem: boolean;\n /** @format int32 */\n currentBidAmount: number;\n /** @format int32 */\n bidCount: number;\n /** @format int32 */\n nextValidBidAmount?: number | null;\n /** @format int32 */\n leadingBidMemberId?: number | null;\n /** @format int32 */\n openingBid?: number | null;\n /** @format int32 */\n fixedPrice: number;\n hasEnded: boolean;\n isBuyItNow: boolean;\n preferredShipping?: ShippingApiDto | null;\n sellerAlias?: string | null;\n /** @format int32 */\n sellerTotalRating: number;\n /** @format int32 */\n sellerMemberId: number;\n /** @format date-time */\n addedToWishList: string;\n memberBid?: MemberBidInfo | null;\n /** @format int32 */\n transactionType?: number | null;\n isPaid?: boolean | null;\n /** @format int32 */\n itemPrice?: number | null;\n /** @format date-time */\n transactionDate?: string | null;\n boughtByCurrentMember: boolean;\n hasReservePrice: boolean;\n reservePriceReached: boolean;\n displayHighlighted: boolean;\n type: ItemTypeApiDto;\n mainImage?: ItemImageUrls | null;\n mainImageTemplate?: string | null;\n secondaryImage?: ItemImageUrls | null;\n secondaryImageTemplate?: string | null;\n hasCommitUpFront: boolean;\n}\n\nexport interface GetWishListApiResponse {\n wishListItems?: WishListItemDto[] | null;\n /** @format int32 */\n totalCount: number;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface PublicProfileApiResponse {\n /** @format int32 */\n memberId: number;\n /** @format int32 */\n totalRating: number;\n alias?: string | null;\n isCompanyUser: boolean;\n city?: string | null;\n firstName?: string | null;\n shopLogoUrl?: string | null;\n hasShop: boolean;\n isSwedishUser: boolean;\n /** @format float */\n detailedSellerRatingAverage?: number | null;\n /** @format date-time */\n memberSince: string;\n responseStatus?: ResponseStatus | null;\n heroImage?: string | null;\n information?: string | null;\n accountState: MemberAccountState;\n /** @format int32 */\n combinedShippingDays: number;\n selectedDescriptionLanguageCodeIso2?: string | null;\n shippingFromCountryCodeIso2?: string | null;\n translatedInformation?: string | null;\n}\n\nexport interface MemberPurchaseApiResponse {\n item?: ItemTransactionApiDto | null;\n seller?: MemberContactDetailsApiDto | null;\n buyer?: MemberContactDetailsApiDto | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface MemberPurchaseOrderApiResponse {\n items?: ItemTransactionApiDto[] | null;\n seller?: ContactDetailsApiDto | null;\n buyer?: ContactDetailsApiDto | null;\n paymentMethod?: string | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface MemberPurchaseOrderItemApiResponse {\n items?: ItemTransactionApiDto[] | null;\n paymentMethod?: string | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport enum SellerAutoFeedbackCriteria {\n Manual = 'Manual',\n PositiveFeedback = 'PositiveFeedback',\n Paid = 'Paid'\n}\n\nexport interface SaveSellerAutoFeedbackSettingsApiRequest {\n message?: string | null;\n criteria: SellerAutoFeedbackCriteria;\n}\n\nexport interface SaveSellerAutoFeedbackSettingsApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport type SellerAutoFeedbackApiRequest = object;\n\nexport interface SellerAutoFeedbackApiResponse {\n message?: string | null;\n criteria: SellerAutoFeedbackCriteria;\n /** @format date-time */\n created: string;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface SaveSellerAutoPaymentReminderSettingsApiRequest {\n enabled: boolean;\n}\n\nexport interface SaveSellerAutoPaymentReminderSettingsApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport type SellerAutoPaymentReminderApiRequest = object;\n\nexport interface SellerAutoPaymentReminderApiResponse {\n enabled: boolean;\n responseStatus?: ResponseStatus | null;\n}\n\nexport type MemberActiveItemsSummaryApiRequest = object;\n\nexport interface MemberActiveItemsSummaryApiDto {\n /** @format int32 */\n itemCount: number;\n /** @format int32 */\n bidSum: number;\n /** @format int32 */\n bidCount: number;\n /** @format int32 */\n sumOpeningBids: number;\n /** @format int32 */\n auctionCount: number;\n /** @format int32 */\n buyItNowCount: number;\n /** @format int32 */\n shopItemCount: number;\n}\n\nexport interface MemberActiveItemsSummaryApiResponse {\n summary?: MemberActiveItemsSummaryApiDto | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface FeatureSummaryApiDto {\n name?: string | null;\n /** @format int32 */\n cost: number;\n /** @format int32 */\n count: number;\n}\n\nexport interface CampaignCodeItem {\n /** @format int32 */\n campaignCodeId: number;\n campaignCode?: string | null;\n auctionId?: number[] | null;\n}\n\nexport interface FeatureSummaryByIdsApiResponse {\n featureSummaryList?: FeatureSummaryApiDto[] | null;\n isCompanyUser: boolean;\n campaignCodes?: CampaignCodeItem[] | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface SetItemShippedApiRequest {\n /** @format uuid */\n purchaseOrderId: string;\n shipped: boolean;\n}\n\nexport interface SetItemShippedApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface SetItemShippingBookedApiRequest {\n /** @format uuid */\n purchaseOrderId: string;\n booked: boolean;\n}\n\nexport interface SetItemShippingBookedApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface MarkAsPaidBySellerApiRequest {\n /** @format uuid */\n purchaseOrderId: string;\n paidConfirmed: boolean;\n}\n\nexport interface MarkAsPaidBySellerApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport enum PickListFilterPaidStatus {\n All = 'All',\n Paid = 'Paid',\n Unpaid = 'Unpaid'\n}\n\nexport enum PickListFilterShippedStatus {\n All = 'All',\n Shipped = 'Shipped',\n NotShipped = 'NotShipped'\n}\n\nexport interface PickListBuyerApiDto {\n /** @format int32 */\n buyerMemberId: number;\n buyerMemberAlias?: string | null;\n /** @format int32 */\n feedbackCount: number;\n buyerContactDetails?: MemberContactDetailsApiDto | null;\n items?: MemberSoldItemApiDto[] | null;\n}\n\nexport interface MemberPickListApiResponse {\n /** @format int32 */\n hiddenCount: number;\n items?: PickListBuyerApiDto[] | null;\n /** @format int64 */\n totalCount: number;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface SelectedShippingOption {\n /** @format int32 */\n cost: number;\n type?: string | null;\n}\n\nexport interface OfferedShippingOption {\n /** @format int32 */\n cost: number;\n type?: string | null;\n}\n\nexport interface PickListItemApiDto {\n /** @format uuid */\n purchaseOrderId: string;\n /** @format int32 */\n itemId: number;\n itemTitle?: string | null;\n itemUrl?: string | null;\n mainImage?: ItemImageUrls | null;\n mainImageTemplate?: string | null;\n /** @format int32 */\n price: number;\n isMarkedAsPaidBySeller: boolean;\n isMarkedAsShipped: boolean;\n /** @format date-time */\n transactionDate: string;\n hiddenBySeller: boolean;\n userReference?: string | null;\n /** @format double */\n totalDiscountAmount: number;\n hasSellerLeftFeedback: boolean;\n selectedShipping?: SelectedShippingOption | null;\n offeredShippingOptions?: OfferedShippingOption[] | null;\n /** @format int32 */\n transactionId: number;\n}\n\nexport interface PickListBuyerV2ApiDto {\n /** @format int32 */\n buyerMemberId: number;\n buyerMemberAlias?: string | null;\n buyerContactDetails?: ContactDetailsApiDto | null;\n items?: PickListItemApiDto[] | null;\n}\n\nexport interface MemberPickListV2ApiResponse {\n items?: PickListBuyerV2ApiDto[] | null;\n /** @format int64 */\n totalCount: number;\n /** @format int64 */\n filterHitCount: number;\n /** @format int32 */\n hiddenCount: number;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface FeatureSummaryDto {\n name?: string | null;\n /** @format int32 */\n price: number;\n /** @format int32 */\n count: number;\n}\n\nexport interface CommissionFeeSummaryDto {\n /** @format double */\n minFee: number;\n /** @format double */\n maxFee: number;\n /** @format double */\n minPercentage: number;\n /** @format double */\n maxPercentage: number;\n}\n\nexport interface RestartItemsSummaryApiResponse {\n features?: FeatureSummaryDto[] | null;\n commission?: CommissionFeeSummaryDto | null;\n isCompany: boolean;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface ShopItemPurchase {\n /** @format int32 */\n buyerMemberId: number;\n buyerMemberAlias?: string | null;\n /** @format int32 */\n buyerTotalRating: number;\n /** @format int32 */\n price: number;\n /** @format date-time */\n transactionDate: string;\n /** @format int32 */\n categoryId: number;\n}\n\nexport interface ShopItemPurchaseHistoryApiResponse {\n /** @format int32 */\n itemId: number;\n shortDescription?: string | null;\n /** @format date-time */\n endDate: string;\n userReference?: string | null;\n purchases?: ShopItemPurchase[] | null;\n responseStatus?: ResponseStatus | null;\n /** @format int32 */\n categoryId: number;\n imageUrl?: string | null;\n imageUrlTemplate?: string | null;\n}\n\nexport interface SelectedShipping {\n /** @format int32 */\n productId?: number | null;\n providerId?: string | null;\n}\n\nexport interface ItemApiDto {\n /** @format int32 */\n id: number;\n shortDescription?: string | null;\n /** @format int32 */\n price: number;\n mainImageUrl?: ItemImageUrls | null;\n mainImageUrlTemplate?: string | null;\n selectedShipping?: SelectedShipping | null;\n}\n\nexport interface MemberSoldItemShippingInfoV2ApiResponse {\n responseStatus?: ResponseStatus | null;\n item?: ItemApiDto | null;\n buyerContactDetails?: ContactDetailsApiDto | null;\n isQuickFlowPossible: boolean;\n}\n\nexport interface MemberSoldItemByTransactionIdApiResponse {\n responseStatus?: ResponseStatus | null;\n item?: MemberSoldItemApiDto | null;\n}\n\nexport interface MemberSoldItemBuyerInfoApiResponse {\n responseStatus?: ResponseStatus | null;\n items?: MemberSoldItemApiDto[] | null;\n buyerProfile?: PublicProfileApiDto | null;\n buyerContactDetails?: ContactDetailsApiDto | null;\n sellerContactDetails?: ContactDetailsApiDto | null;\n paymentOptions?: PaymentOptionApiDto[] | null;\n paidStatus?: string | null;\n paymentMethod?: string | null;\n /** @format double */\n totalOrderPrice: number;\n /** @format double */\n totalOrderPriceWithoutShipping: number;\n}\n\nexport interface MemberSoldItemsApiResponse {\n /** @format int32 */\n notPaidCount: number;\n /** @format int32 */\n paidCount: number;\n /** @format int32 */\n shippedCount: number;\n /** @format int32 */\n hiddenCount: number;\n items?: MemberSoldItemApiDto[] | null;\n /** @format int64 */\n totalCount: number;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface MemberSoldItemsByPurchaseOrderIdApiResponse {\n responseStatus?: ResponseStatus | null;\n items?: MemberSoldItemApiDto[] | null;\n}\n\nexport type MemberSoldItemsSummaryApiRequest = object;\n\nexport interface MemberSoldItemsSummaryApiDto {\n /** @format int32 */\n totalPrice: number;\n /** @format int32 */\n itemCount: number;\n /** @format int32 */\n bidSum: number;\n /** @format int32 */\n bidCount: number;\n /** @format int32 */\n sumOpeningBids: number;\n /** @format int32 */\n auctionCount: number;\n /** @format int32 */\n buyItNowCount: number;\n /** @format int32 */\n shopItemCount: number;\n}\n\nexport interface MemberSoldItemsSummaryApiResponse {\n summary?: MemberSoldItemsSummaryApiDto | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport type MemberStatsThisMonthApiRequest = object;\n\nexport interface MemberStatsThisMonthApiResponse {\n /** @format int32 */\n soldThisMonthCount: number;\n /** @format int32 */\n activeThisMonthCount: number;\n /** @format int32 */\n unsoldThisMonthCount: number;\n /** @format int32 */\n listedThisMonthCount: number;\n /** @format int32 */\n maxFreeListingsPerMonth: number;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface SetTransactionItemShippedApiRequest {\n /** @format int32 */\n transactionId: number;\n shipped: boolean;\n}\n\nexport interface SetTransactionItemShippedApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport type MemberSelloProfileApiRequest = object;\n\nexport interface MemberSelloProfileApiResponse {\n responseStatus?: ResponseStatus | null;\n /** @format int32 */\n memberId: number;\n /** @format date-time */\n memberSince: string;\n accountState: MemberAccountState;\n alias?: string | null;\n email?: string | null;\n firstName?: string | null;\n city?: string | null;\n isSwedishUser: boolean;\n isCompanyUser: boolean;\n hasShop: boolean;\n /** @format int32 */\n totalRating: number;\n /** @format float */\n detailedSellerRatingAverage?: number | null;\n /** @format int32 */\n combinedShippingDays: number;\n}\n\nexport type MemberSessionDataApiRequest = object;\n\nexport interface MemberSessionDataApiResponse {\n /** @format int32 */\n memberId: number;\n email?: string | null;\n alias?: string | null;\n aliasSlug?: string | null;\n heroImageUrl?: string | null;\n firstName?: string | null;\n lastName?: string | null;\n country?: string | null;\n countryCodeIso2?: string | null;\n languageCodeIso2?: string | null;\n birthDate?: string | null;\n /** @format float */\n detailedSellerRating?: number | null;\n appleId?: string | null;\n facebookId?: string | null;\n googleId?: string | null;\n klarnaId?: string | null;\n currencyCode?: string | null;\n automaticTranslationPreference: boolean;\n gender?: string | null;\n memberIdHash?: string | null;\n /** @format int32 */\n age?: number | null;\n responseStatus?: ResponseStatus | null;\n city?: string | null;\n blueshiftEventSignature?: string | null;\n}\n\nexport interface SetShippingFeeRuleFreeShippingCostLimitApiRequest {\n useFreeShippingCostLimit: boolean;\n /** @format int32 */\n freeShippingCostLimit: number;\n}\n\nexport interface SetShippingFeeRuleFreeShippingCostLimitApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface SetShippingFeeRuleShippingOptionApiRequest {\n shippingOption?: string | null;\n}\n\nexport interface SetShippingFeeRuleShippingOptionApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface MemberShopDetailsApiResponse {\n /** @format int32 */\n memberId: number;\n alias?: string | null;\n logoFormat?: string | null;\n hasLogo: boolean;\n companyInfo?: string | null;\n contactInfo?: string | null;\n purchaseTerms?: string | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport type MemberHasSsnApiRequest = object;\n\nexport interface MemberHasSsnApiResponse {\n responseStatus?: ResponseStatus | null;\n hasSsn: boolean;\n}\n\nexport interface UpdateMemberSsnApiRequest {\n ssn?: string | null;\n}\n\nexport interface UpdateMemberSsnApiResponse {\n responseStatus?: ResponseStatus | null;\n isValid: boolean;\n}\n\nexport type GetMemberSuspendedUntilApiRequest = object;\n\nexport interface GetMemberSuspendedUntilApiResponse {\n /** @format date-time */\n suspendedUntil?: string | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport type GetSystemMessagesApiRequest = object;\n\nexport enum SystemMessageType {\n InvoiceOverdue = 'InvoiceOverdue',\n InvoiceUnpaid = 'InvoiceUnpaid',\n PayoutFailed = 'PayoutFailed',\n PayoutReadyBankAccountMissing = 'PayoutReadyBankAccountMissing',\n BankAccountMissing = 'BankAccountMissing',\n HyperwalletPayeeVerificationRequired = 'HyperwalletPayeeVerificationRequired',\n HyperwalletPayeeVerificationUnderReview = 'HyperwalletPayeeVerificationUnderReview',\n PayoutProviderOnboardingFailed = 'PayoutProviderOnboardingFailed',\n KycQuestionnaire = 'KycQuestionnaire',\n PayoutReadyVerificationRequired = 'PayoutReadyVerificationRequired',\n OutstandingTraderaPayLicense = 'OutstandingTraderaPayLicense',\n PayoutReadyOutstandingTraderaPayLicense = 'PayoutReadyOutstandingTraderaPayLicense'\n}\n\nexport enum SystemMessageSeverity {\n Warning = 'Warning',\n Info = 'Info'\n}\n\nexport interface SystemMessage {\n type: SystemMessageType;\n severity: SystemMessageSeverity;\n}\n\nexport interface GetSystemMessagesApiResponse {\n responseStatus?: ResponseStatus | null;\n /** @format int64 */\n totalCount: number;\n items?: SystemMessage[] | null;\n}\n\nexport interface SetTransactionVisibilityApiRequest {\n /** @format uuid */\n purchaseOrderId: string;\n hidden: boolean;\n}\n\nexport interface SetTransactionVisibilityApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface UnpaidItemStrikeApiResponse {\n responseStatus?: ResponseStatus | null;\n strikeSubmitted: boolean;\n}\n\nexport interface UnpaidPurchaseOrderStrikeApiResponse {\n responseStatus?: ResponseStatus | null;\n strikeSubmitted: boolean;\n items?: ItemStrikeSubmission[] | null;\n}\n\nexport interface AddUnpaidPurchaseOrderStrikeApiRequest {\n /** @format uuid */\n purchaseOrderId: string;\n comment?: string | null;\n}\n\nexport interface AddUnpaidPurchaseOrderStrikeApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport type GetMemberVatDetailsApiRequest = object;\n\nexport interface GetMemberVatDetailsApiResponse {\n memberIsSubjectToVat: boolean;\n responseStatus?: ResponseStatus | null;\n /** @format byte */\n selectableVatValues?: string | null;\n}\n\nexport type GetMemberVerificationStatusApiRequest = object;\n\nexport interface GetMemberVerificationStatusApiResponse {\n responseStatus?: ResponseStatus | null;\n hasSsn: boolean;\n needsBankIdVerification: boolean;\n needsConsentOfTraderaPayAgreement?: string | null;\n isUnderLicense: boolean;\n}\n\nexport type MemberWinnerEmailApiRequest = object;\n\nexport interface MemberWinnerEmailApiResponse {\n winnerEmail?: string | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface SaveWinnerEmailApiRequest {\n winnerEmail?: string | null;\n}\n\nexport interface SaveWinnerEmailApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface AddItemToWishListApiRequest {\n /** @format int32 */\n itemId: number;\n}\n\nexport interface AddItemToWishListApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface RemoveItemsFromWishListApiRequest {\n itemIds?: number[] | null;\n}\n\nexport interface RemoveItemFromWishListApiResponse {\n responseStatus?: ResponseStatus | null;\n}\n\nexport type GetWishListItemIdsApiRequest = object;\n\nexport interface GetWishListItemIdsApiResponse {\n responseStatus?: ResponseStatus | null;\n wishListItemsIds?: number[] | null;\n}\n\nexport interface GetMemberWithAliasApiResponse {\n /** @format int32 */\n memberId: number;\n isCompanyUser: boolean;\n hasShopAccount: boolean;\n alias?: string | null;\n responseStatus?: ResponseStatus | null;\n}\n\nexport interface AutoShipmentCheckoutEnabledUpdateParams {\n request?: SetAutoShipmentCheckoutMemberEnabledApiRequest;\n}\n\nexport interface BlockedMembersCreateParams {\n request?: BlockMemberApiRequest;\n}\n\nexport interface BlockedMembersRequest {\n request?: GetBlockedMembersApiRequest;\n}\n\nexport interface BlockedMembersDeleteParams {\n request?: UnblockMemberApiRequest;\n}\n\nexport interface BlueshiftCredentialsRequest {\n request?: GetBlueshiftEventApiCredentialsApiRequest;\n}\n\nexport interface BuyerTransactionVisibilityCreateParams {\n request?: SetBuyerTransactionVisibilityApiRequest;\n}\n\nexport interface CombinedShippingDaysUpdateParams {\n request?: SetCombinedShippingMemberDaysApiRequest;\n}\n\nexport interface CombinedShippingEnabledUpdateParams {\n request?: SetCombinedShippingMemberEnabledApiRequest;\n}\n\nexport interface CommitonpaymentEnabledUpdateParams {\n request?: SetCommitOnPaymentMemberEnabledApiRequest;\n}\n\nexport interface ContactSellerCreateParams {\n request?: ContactSellerApiRequest;\n}\n\nexport interface ContacthighestbidderCreateParams {\n request?: ContactHighestBidderApiRequest;\n}\n\nexport interface DeactivateaccountCreateParams {\n request?: DeactivateMemberAccountPermanentlyApiRequest;\n}\n\nexport interface DeactivateaccountRequest {\n request?: GetAccountDeactivationSettingsApiRequest;\n}\n\nexport interface DeactivateaccounttemporarilyCreateParams {\n request?: DeactivateMemberAccountTemporarilyApiRequest;\n}\n\nexport interface DetailsRequest {\n request?: MemberContactDetailsApiRequest;\n}\n\nexport interface DetailsUpdateParams {\n request?: UpdateMemberContactDetailsApiRequest;\n}\n\nexport interface DisputeRequest {\n /** @format int32 */\n transactionId?: number;\n}\n\nexport interface DisputeCreateParams {\n request?: CreateDisputeApiRequest;\n}\n\nexport interface DisputeMessageCreateParams {\n request?: AddDisputeMessageApiRequest;\n}\n\nexport interface ChangeStatusToAppealedCreateParams {\n request?: ChangeDisputeStatusToAppealedApiRequest;\n}\n\nexport interface MarkAsEscalatedCreateParams {\n request?: MarkDisputeAsEscalatedApiRequest;\n}\n\nexport interface MarkAsSolvedCreateParams {\n request?: MarkDisputeAsSolvedApiRequest;\n}\n\nexport interface DisputesRequest {\n transactionIds?: number[];\n}\n\nexport interface EmailSettingsRequest {\n request?: MemberEmailSettingsApiRequest;\n}\n\nexport interface EmailSettingsUpdateParams {\n request?: UpdateMemberEmailSettingsApiRequest;\n}\n\nexport interface FeedbackRequest {\n /** @format int32 */\n memberId?: number;\n feedbackRoleFilter?: FeedbackRoleFilter;\n feedbackRatingFilter?: FeedbackRatingFilter;\n /** @format int32 */\n skip?: number;\n /** @format int32 */\n take?: number;\n}\n\nexport interface FeedbackRemovalDetailsRequest {\n /** @format int32 */\n feedbackRemovalRequestId?: number;\n}\n\nexport interface ConfirmCreateParams {\n request?: ConfirmMutualFeedbackRemovalApiRequest;\n}\n\nexport interface ConfirmationValidationRequest {\n /** @format int32 */\n id?: number;\n}\n\nexport interface CreateCreateParams {\n request?: CreateFeedbackRemovalApiRequest;\n}\n\nexport interface CreationValidationRequest {\n /** @format int32 */\n transactionId?: number;\n}\n\nexport interface DenyCreateParams {\n request?: DenyMutualFeedbackRemovalApiRequest;\n}\n\nexport interface FeedbackRemovalsCreateParams {\n request?: FeedbackRemovalsApiRequest;\n}\n\nexport interface ItemsRequest {\n /** @format int32 */\n memberId?: number;\n role?: FeedbackRoleFilter;\n rating?: FeedbackRatingFilter;\n /** @format int32 */\n skip?: number;\n /** @format int32 */\n take?: number;\n}\n\nexport interface SummaryRequest {\n /** @format int32 */\n memberId?: number;\n}\n\nexport interface TranslatedRequest {\n toLanguageCodeIso2?: string;\n feedbackIds?: number[];\n}\n\nexport interface FeedbacksRequest {\n /** @format int32 */\n transactionId?: number;\n showDeleted?: boolean;\n}\n\nexport interface GetcreditmemobyencryptedidRequest {\n encryptedId?: string;\n}\n\nexport interface GetcreditmemopdfRequest {\n /** @format int64 */\n invoiceId?: number;\n creditMemoDocumentId?: string;\n}\n\nexport interface GetcreditmemopdfbyidRequest {\n /** @format int64 */\n creditMemoId?: number;\n}\n\nexport interface GetinvoicecsvRequest {\n /** @format int64 */\n invoiceId?: number;\n}\n\nexport interface GetinvoicepdfRequest {\n /** @format int64 */\n invoiceId?: number;\n}\n\nexport interface GetinvoicepdfbyencryptedidRequest {\n encryptedId?: string;\n}\n\nexport interface GetinvoicesRequest {\n /** @format int32 */\n pageIndex?: number;\n /** @format int32 */\n itemsPerPage?: number;\n}\n\nexport interface GetuninvoicedfeesRequest {\n /** @format int32 */\n pageIndex?: number;\n /** @format int32 */\n itemsPerPage?: number;\n getThumbUrl?: boolean;\n}\n\nexport interface FindRequest {\n query?: string;\n /** @format int32 */\n page?: number;\n /** @format int32 */\n pageSize?: number;\n}\n\nexport interface GetavailablecountriesforshippingRequest {\n request?: GetAvailableCountriesForShippingApiRequest;\n}\n\nexport interface GradeTransactionsRequest {\n gradeIds?: number[];\n}\n\nexport interface ImageUploadUrlRequest {\n contentType?: string;\n}\n\nexport interface ItemVisibilityCreateParams {\n request?: SetItemVisibilityApiRequest;\n}\n\nexport interface CompleteQuestionnaireCreateParams {\n request?: CompleteQuestionnaireApiRequest;\n}\n\nexport interface InitializeQuestionnaireCreateParams {\n request?: InitializeQuestionnaireApiRequest;\n}\n\nexport interface PendingActionsRequest {\n request?: GetKycPendingActionsApiRequest;\n}\n\nexport interface QuestionnaireCreateParams {\n request?: AnswerQuestionnaireApiRequest;\n}\n\nexport interface QuestionnaireRequest {\n actionType?: string;\n languageCodeIso2?: string;\n}\n\nexport interface LastnotifiedCreateParams {\n request?: SetLastNotifiedApiRequest;\n}\n\nexport interface PagedTransactionsRequest {\n /** @format int32 */\n skip?: number;\n /** @format int32 */\n take?: number;\n}\n\nexport interface TransactionsRequest {\n transactionIds?: number[];\n}\n\nexport interface SetAutoShipmentCheckoutMemberEnabledApiRequest4 {\n /** @format int32 */\n skip?: number;\n /** @format int32 */\n take?: number;\n}\n\nexport interface SetAutoShipmentCheckoutMemberEnabledApiRequest6 {\n transactionIds?: number[];\n}\n\nexport interface BuyerRequest {\n /** @format int32 */\n transactionId?: number;\n}\n\nexport interface BuyerCreateParams {\n request?: SaveFeedbackAsBuyerApiRequest;\n}\n\nexport interface CommentCreateParams {\n request?: CommentFeedbackApiRequest;\n}\n\nexport interface SellerRequest {\n /** @format int32 */\n transactionId?: number;\n}\n\nexport interface SellerCreateParams {\n request?: SaveFeedbackAsSellerApiRequest;\n}\n\nexport interface ListSettingsRequest {\n request?: MemberListSettingsApiRequest;\n}\n\nexport interface McpStrikeRequest {\n /** @format uuid */\n purchaseOrderId?: string;\n}\n\nexport interface McpStrikeCreateParams {\n request?: AddMutualCancelOfPurchaseStrikeApiRequest;\n}\n\nexport interface McpStrikeConfirmCreateParams {\n request?: ConfirmMutualCancelOfPurchaseStrikeApiRequest;\n}\n\nexport interface MemberemailnotificationssettingsviewmodelRequest {\n request?: GetMemberEmailNotificationsSettingsViewModelApiRequest;\n}\n\nexport interface MemberprofilesettingsviewmodelRequest {\n request?: GetMemberProfileSettingsViewModelApiRequest;\n}\n\nexport interface MembersecuritysettingsviewmodelRequest {\n request?: GetMemberSecuritySettingsViewModelApiRequest;\n}\n\nexport interface MembersellersettingsviewmodelRequest {\n request?: GetMemberSellerSettingsViewModelApiRequest;\n}\n\nexport interface EmailnotifyRequest {\n /** @format int32 */\n memberId?: number;\n}\n\nexport interface EmailnotifyUpdateParams {\n request?: SetMessagingEmailNotifyApiRequest;\n}\n\nexport interface MyParticipationRequest {\n request?: GetMessagingMyParticipationApiRequest;\n}\n\nexport interface ParticipationRequest {\n /** @format int32 */\n memberId?: number;\n}\n\nexport interface ParticipationUpdateParams {\n request?: SetMessagingParticipationApiRequest;\n}\n\nexport interface StatsRequest {\n request?: GetMessagingStatsApiRequest;\n}\n\nexport interface NotificationsRequest {\n /** @format int32 */\n take?: number;\n /** @format int32 */\n skip?: number;\n}\n\nexport interface BankaccountDeleteParams {\n request?: RemoveBankAccountPayoutTransferMethodApiRequest;\n}\n\nexport interface BankaccountCreateParams {\n request?: SetBankAccountPayoutTransferMethodApiRequest;\n}\n\nexport interface CompletehyperwallettransfermethodCreateParams {\n request?: CompleteHyperwalletTransferMethodApiRequest;\n}\n\nexport interface HyperwalletauthenticationtokenRequest {\n request?: GetHyperwalletAuthenticationTokenApiRequest;\n}\n\nexport interface HyperwallettransfermethodviewmodelRequest {\n request?: GetHyperwalletTransferMethodViewModelApiRequest;\n}\n\nexport interface MatchbankCreateParams {\n request?: MatchBankApiRequest;\n}\n\nexport interface MemberpayoutsettingsviewmodelRequest {\n request?: GetMemberPayoutSettingsViewModelApiRequest;\n}\n\nexport interface PaypalDeleteParams {\n request?: RemovePayPalPayoutTransferMethodApiRequest;\n}\n\nexport interface PaypalCreateParams {\n request?: SetPayPalPayoutTransferMethodApiRequest;\n}\n\nexport interface SethyperwalletpayeeverificationassubmittedCreateParams {\n request?: SetHyperwalletPayeeVerificationAsSubmittedApiRequest;\n}\n\nexport interface TinkaccountCreateParams {\n request?: SetPayoutTransferMethodUsingTinkApiRequest;\n}\n\nexport interface PonrStrikeRequest {\n /** @format uuid */\n purchaseOrderId?: string;\n}\n\nexport interface PonrStrikeCreateParams {\n request?: AddPurchaseOrderNotReceivedStrikeApiRequest;\n}\n\nexport interface BankIdPasswordRecoveryCancelCreateParams {\n request?: BankIdPasswordRecoveryCancelApiRequest;\n}\n\nexport interface BankIdProgressWithIdRequest {\n bankIdOrderRef?: string;\n /** @format int32 */\n memberid?: number;\n}\n\nexport interface BankIdRecoveryWithIdCreateParams {\n request?: BankIdBeginWithIdApiRequest;\n}\n\nexport interface BankidVerificationRequest {\n /** @format int32 */\n fixedPrice?: number;\n}\n\nexport interface BraintreeOnboardingDetailsRequest {\n request?: GetBraintreeOnboardingDetailsApiRequest;\n}\n\nexport interface ChangealiasCreateParams {\n request?: ChangeAliasApiRequest;\n}\n\nexport interface ChangeemailCreateParams {\n request?: ChangeEmailWithIdApiRequest;\n memberId: string;\n}\n\nexport interface ChangepasswordCreateParams {\n request?: ChangePasswordApiRequest;\n}\n\nexport interface ChangepasswordCreate2Params {\n request?: ChangePasswordWithIdApiRequest;\n memberId: string;\n}\n\nexport interface ConsentCreateParams {\n request?: SetMemberConsentApiRequest;\n}\n\nexport interface CreateVerificationCodeCreateParams {\n request?: CreateVerificationCodeApiRequest;\n}\n\nexport interface CreateVerificationCodeWithMemberIdCreateParams {\n request?: CreateVerificationCodeWithMemberIdApiRequest;\n}\n\nexport interface CurrencyUpdateParams {\n request?: UpdateMemberCurrencyApiRequest;\n}\n\nexport interface GethyperwalletmemberdetailsRequest {\n request?: GetHyperwalletMemberDetailsApiRequest;\n}\n\nexport interface GetiscombinedshippingenabledRequest {\n request?: GetIsCombinedShippingEnabledApiRequest;\n}\n\nexport interface GetistraderapayenabledRequest {\n request?: GetIsTraderaPayEnabledApiRequest;\n}\n\nexport interface GetshippinginvoicememberRequest {\n request?: GetShippingInvoiceMemberApiRequest;\n}\n\nexport interface GettraderapaymemberdetailsRequest {\n request?: GetTraderaPayMemberApiRequest;\n}\n\nexport interface GettraderapayonboardingdetailsRequest {\n request?: GetTraderaPayOnboardingDetailsApiRequest;\n}\n\nexport interface HaswalletRequest {\n request?: GetHasWalletApiRequest;\n}\n\nexport interface LanguageUpdateParams {\n request?: UpdateMemberLanguageApiRequest;\n}\n\nexport interface MemberIdentificationBankIdPasswordRecoveryCancelCreateParams {\n request?: MemberIdentificationBankIdPasswordRecoveryCancelApiRequest;\n}\n\nexport interface MemberIdentificationBankIdProgressWithIdRequest {\n bankIdOrderRef?: string;\n /** @format int32 */\n memberid?: number;\n}\n\nexport interface MemberIdentificationBankIdRecoveryWithIdCreateParams {\n request?: MemberIdentificationBeginBankIdWithIdApiRequest;\n}\n\nexport interface MemberIdentificationChangeemailCreateParams {\n request?: MemberIdentificationChangeEmailWithIdApiRequest;\n memberId: string;\n}\n\nexport interface MemberLocalizationRequest {\n request?: GetMemberLocalizationApiRequest;\n}\n\nexport interface MemberconsentRequest {\n request?: GetMemberConsentApiRequest;\n}\n\nexport interface PayoutfrequencyRequest {\n request?: GetPayoutFrequencyApiRequest;\n}\n\nexport interface PayoutfrequencyoptionsRequest {\n request?: GetPayoutFrequencyOptionsApiRequest;\n}\n\nexport interface RemovetraderapaypayoutdestinationCreateParams {\n request?: RemoveTraderaPayPayoutDestinationApiRequest;\n}\n\nexport interface SelectedDescriptionLanguageUpdateParams {\n request?: UpdateMemberSelectedDescriptionLanguageApiRequest;\n}\n\nexport interface SetpayoutfrequencyCreateParams {\n request?: SetPayoutFrequencyApiRequest;\n}\n\nexport interface ShippingFromCountryUpdateParams {\n request?: UpdateMemberShippingFromCountryApiRequest;\n}\n\nexport interface SmsCheckCreateParams {\n request?: SmsCheckApiRequest;\n}\n\nexport interface SmsVerificationCreateParams {\n request?: SendVerificationSmsApiRequest;\n}\n\nexport interface SmsVerificationRequest {\n action?: string;\n}\n\nexport interface SmsVerificationWithIdCreateParams {\n request?: SendVerificationSmsWithIdApiRequest;\n}\n\nexport interface Swishapp2AppDisableCreateParams {\n request?: SwishApp2AppMemberDisableApiRequest;\n}\n\nexport interface Swishapp2AppOptoutCreateParams {\n request?: SwishApp2AppMemberOptOutApiRequest;\n}\n\nexport interface Swishapp2AppSavephonenumberCreateParams {\n request?: SwishApp2AppMemberSavePhoneNumberApiRequest;\n}\n\nexport interface Swishapp2AppSetverifiedCreateParams {\n request?: SwishApp2AppMemberSetVerifiedApiRequest;\n}\n\nexport interface Swishapp2AppVerifycodeCreateParams {\n request?: SwishApp2AppMemberVerifyCodeApiRequest;\n}\n\nexport interface TinkBankaccountsRequest {\n code?: string;\n}\n\nexport interface TinkLinkRequest {\n request?: TinkGetLinkApiRequest;\n}\n\nexport interface TranslationPreferenceUpdateParams {\n request?: UpdateMemberTranslationPreferenceApiRequest;\n}\n\nexport interface ValidateExistingPasswordCreateParams {\n request?: ValidateExistingPasswordForMemberApiRequest;\n}\n\nexport interface VerifyNonmobilePincodeCreateParams {\n request?: VerifyNonMobilePincodeApiRequest;\n}\n\nexport interface VerifyNonmobilePincodeWithIdCreateParams {\n request?: VerifyNonMobilePincodeWithIdApiRequest;\n}\n\nexport interface VerifyPincodeCreateParams {\n request?: VerifyPincodeApiRequest;\n}\n\nexport interface VerifyPincodeWithIdCreateParams {\n request?: VerifyPincodeWithIdApiRequest;\n}\n\nexport interface PublicProfileHeroImageDeleteParams {\n request?: RemoveMemberPublicProfileHeroImageApiRequest;\n}\n\nexport interface PublicProfileHeroImageUpdateParams {\n request?: UpdateMemberPublicProfileHeroImageApiRequest;\n}\n\nexport interface PublicProfileInformationUpdateParams {\n request?: UpdateMemberPublicProfileInformationApiRequest;\n}\n\nexport interface PublicWishlistDetailParams {\n statusFilter?: WishListStatusFilter;\n /** @format int32 */\n take?: number;\n /** @format int32 */\n skip?: number;\n languageCodeIso2?: string;\n /** @format int32 */\n memberId: number;\n}\n\nexport interface PublicprofileRequest {\n /** @format int32 */\n memberId?: number;\n toLanguageCodeIso2?: string;\n}\n\nexport interface PurchaseRequest {\n /** @format int32 */\n transactionId?: number;\n}\n\nexport interface PurchaseorderRequest {\n /** @format uuid */\n purchaseOrderId?: string;\n}\n\nexport interface PurchaseorderitemRequest {\n /** @format uuid */\n purchaseOrderId?: string;\n}\n\nexport interface SellerAutoFeedbackUpdateParams {\n request?: SaveSellerAutoFeedbackSettingsApiRequest;\n}\n\nexport interface SellerAutoFeedbackRequest {\n request?: SellerAutoFeedbackApiRequest;\n}\n\nexport interface SellerAutoPaymentReminderUpdateParams {\n request?: SaveSellerAutoPaymentReminderSettingsApiRequest;\n}\n\nexport interface SellerAutoPaymentReminderRequest {\n request?: SellerAutoPaymentReminderApiRequest;\n}\n\nexport interface ActivesummaryRequest {\n request?: MemberActiveItemsSummaryApiRequest;\n}\n\nexport interface FeatureSummaryByIdsRequest {\n itemIds?: number[];\n}\n\nexport interface ItemShippedCreateParams {\n request?: SetItemShippedApiRequest;\n}\n\nexport interface ItemShippingBookedCreateParams {\n request?: SetItemShippingBookedApiRequest;\n}\n\nexport interface MarkedAsPaidBySellerCreateParams {\n request?: MarkAsPaidBySellerApiRequest;\n}\n\nexport interface PicklistRequest {\n /** @format int32 */\n pageIndex?: number;\n /** @format int32 */\n itemsPerPage?: number;\n retrieveHidden?: boolean;\n paidStatus?: PickListFilterPaidStatus;\n shippedStatus?: PickListFilterShippedStatus;\n /** @format date-time */\n from?: string;\n /** @format date-time */\n to?: string;\n}\n\nexport interface PicklistV2Request {\n /** @format int32 */\n skip?: number;\n /** @format int32 */\n take?: number;\n retrieveHidden?: boolean;\n paidStatus?: PickListFilterPaidStatus;\n shippedStatus?: PickListFilterShippedStatus;\n /** @format date-time */\n fromDate?: string;\n /** @format date-time */\n toDate?: string;\n}\n\nexport interface RestartItemsSummaryRequest {\n itemIds?: number[];\n}\n\nexport interface ShopitemOrderhistoryRequest {\n /** @format int32 */\n itemId?: number;\n}\n\nexport interface SolditemsRequest {\n soldItemStateFilter?: string;\n soldItemOrderBy?: string;\n retrieveHidden?: boolean;\n /** @format int32 */\n take?: number;\n /** @format int32 */\n skip?: number;\n}\n\nexport interface SoldsummaryRequest {\n request?: MemberSoldItemsSummaryApiRequest;\n}\n\nexport interface StatsThisMonthRequest {\n request?: MemberStatsThisMonthApiRequest;\n}\n\nexport interface TransactionItemShippedCreateParams {\n request?: SetTransactionItemShippedApiRequest;\n}\n\nexport interface SelloprofileRequest {\n request?: MemberSelloProfileApiRequest;\n}\n\nexport interface SessionDataRequest {\n request?: MemberSessionDataApiRequest;\n}\n\nexport interface ShippingFeeRuleFreeShippingCostLimitUpdateParams {\n request?: SetShippingFeeRuleFreeShippingCostLimitApiRequest;\n}\n\nexport interface ShippingFeeRuleShippingOptionUpdateParams {\n request?: SetShippingFeeRuleShippingOptionApiRequest;\n}\n\nexport interface ShopDetailsRequest {\n /** @format int32 */\n memberId?: number;\n}\n\nexport interface GetSsnParams {\n request?: MemberHasSsnApiRequest;\n}\n\nexport interface PutSsnParams {\n request?: UpdateMemberSsnApiRequest;\n}\n\nexport interface SuspendedUntilRequest {\n request?: GetMemberSuspendedUntilApiRequest;\n}\n\nexport interface SystemMessagesRequest {\n request?: GetSystemMessagesApiRequest;\n}\n\nexport interface TransactionFeedbackRemovalRequest {\n /** @format int32 */\n transactionId?: number;\n}\n\nexport interface TransactionVisibilityCreateParams {\n request?: SetTransactionVisibilityApiRequest;\n}\n\nexport interface UpiStrikeRequest {\n /** @format int32 */\n transactionId?: number;\n}\n\nexport interface UppoStrikeRequest {\n /** @format uuid */\n purchaseOrderId?: string;\n}\n\nexport interface UppoStrikeCreateParams {\n request?: AddUnpaidPurchaseOrderStrikeApiRequest;\n}\n\nexport interface VatdetailsRequest {\n request?: GetMemberVatDetailsApiRequest;\n}\n\nexport interface VerificationStatusRequest {\n request?: GetMemberVerificationStatusApiRequest;\n}\n\nexport interface WinnerEmailRequest {\n request?: MemberWinnerEmailApiRequest;\n}\n\nexport interface WinnerEmailUpdateParams {\n request?: SaveWinnerEmailApiRequest;\n}\n\nexport interface WishlistCreateParams {\n request?: AddItemToWishListApiRequest;\n}\n\nexport interface WishlistRequest {\n statusFilter?: WishListStatusFilter;\n /** @format int32 */\n take?: number;\n /** @format int32 */\n skip?: number;\n languageCodeIso2?: string;\n}\n\nexport interface WishlistDeleteParams {\n request?: RemoveItemsFromWishListApiRequest;\n}\n\nexport interface ItemIdsRequest {\n request?: GetWishListItemIdsApiRequest;\n}\n\nexport interface WithAliasRequest {\n alias?: string;\n}\n","import { localStore } from 'tradera/utils/storage';\n\n// Remember to add prefix+key to STORAGE_KEYS in config/storage!\nconst CACHE_PREFIX = 'cache.';\nconst CACHE_KEYS = {\n MESSAGING_BADGES: 'messagingBadges',\n SYSTEM_MESSAGES: 'systemMessages'\n};\nconst DEFAULT_TTL = 10 * 60 * 1000;\n\nclass CacheHandler {\n constructor(store, keyPrefix) {\n this.store = store;\n this.keyPrefix = keyPrefix;\n }\n\n /**\n * Read item from the cache, return null if expired or non existent\n *\n * @param {string} key\n * @returns {null|*}\n */\n read(key) {\n const cached = this.store.getItem(this.keyPrefix + key);\n if (cached) {\n if (cached.expires > Date.now()) {\n return cached.data;\n } else {\n this.store.removeItem(this.keyPrefix + key);\n }\n }\n return null;\n }\n\n /**\n * Write an item to the cache with expiry time\n *\n * @param {string} key\n * @param data\n * @param {int} [ttl]\n * @returns {CacheHandler}\n */\n write(key, data, ttl = DEFAULT_TTL) {\n this.store.setItem(this.keyPrefix + key, {\n expires: Date.now() + ttl,\n data\n });\n return this;\n }\n\n /**\n * Remove item regardless of expiry time\n *\n * @param {string} key\n * @returns {CacheHandler}\n */\n remove(key) {\n this.store.removeItem(this.keyPrefix + key);\n return this;\n }\n\n /**\n * Remove all items regardless of expiry time\n *\n * @returns {CacheHandler}\n */\n removeAll() {\n this.store.clearByPrefix(this.keyPrefix);\n return this;\n }\n\n /**\n * Remove item if expired, keep otherwise\n *\n * @param {string} key\n * @returns {CacheHandler}\n */\n expire(key) {\n const cached = this.store.getItem(this.keyPrefix + key);\n if (cached) {\n if (cached.expires <= Date.now()) {\n this.store.removeItem(this.keyPrefix + key);\n }\n }\n return null;\n }\n\n /**\n * Remove expired items\n *\n * @returns {CacheHandler}\n */\n expireAll() {\n const caches = this.store.getItemsByPrefix(this.keyPrefix);\n const now = Date.now();\n for (const [key, cached] of Object.entries(caches)) {\n if (cached.expires <= now) {\n this.store.removeItem(key);\n }\n }\n return this;\n }\n}\n\n// Standard cache with GDPR-compliant localStore and standard cache prefix\nconst cache = new CacheHandler(localStore, CACHE_PREFIX);\n\nexport { CACHE_KEYS, CacheHandler, cache };\n","export const MODAL_TYPE = {\n BANK_ID: 'BANK_ID',\n SWISH_HANDEL: 'SWISH_HANDEL'\n};\n\nexport const MODAL_STATUS = {\n START: 'START',\n COMPLETE: 'COMPLETE',\n ERROR: 'ERROR'\n};\n\nexport const PAYMENT_OPTIONS = {\n CARD: 'Card',\n PAYPAL: 'PayPal',\n APPLEPAY: 'ApplePay',\n GOOGLEPAY: 'GooglePay',\n SWISH_HANDEL: 'SwishHandel',\n VISA_MASTERCARD: 'VisaMasterCard',\n INVOICE: 'Invoice'\n};\n\nexport const PAYMENT_OPTION_STATUS = {\n AVAILABLE: 'Available',\n UNAVAILABLE_DUE_TO_AMOUNT: 'UnavailableDueToAmount'\n};\n\nexport default () => ({\n shipments: [],\n isFetching: false,\n hasError: false,\n error: null,\n isDeleting: false,\n isUpdating: false,\n isCreating: false,\n ongoingPaymentAttempt: {\n shipmentPaymentAttemptId: null,\n paymentMethod: null\n },\n payment: {\n hasError: false,\n isFetching: false,\n paymentOptions: null,\n selectedPayment: null,\n paymentMethodData: null,\n modal: {\n open: '',\n status: MODAL_STATUS.START\n }\n },\n checkoutSummary: {\n hasError: false,\n isFetching: false,\n totalCost: null,\n termsAccepted: true\n },\n itemWithoutShipment: {\n error: null,\n item: null,\n buyerContactDetails: null,\n isFetching: false\n },\n nonIntegrated: {\n open: false,\n provider: null,\n isUpdating: false,\n markedAsBooked: false,\n markedAsShipped: false,\n hasError: false\n },\n shipping: {\n shippingOptions: [],\n isShippingFetching: false,\n hasShippingError: false\n },\n shippingConfirmation: {\n data: null,\n isFetching: false,\n isLongPolling: false,\n hasError: false\n }\n});\n","/* eslint-disable better-mutation/no-mutation */\n\nimport { createSlice } from '@reduxjs/toolkit';\nimport dayjs from 'dayjs';\nimport { VIEW_ITEM_STATES } from './constants';\nimport TRANSACTION_TYPES from 'tradera/constants/transaction-types';\nimport { getItemApi, placeBidApi } from './api';\nimport { logger } from 'packages/logger';\nimport * as analytics from '../../../apps/tradera/components/vip/helpers/analytics';\nimport * as itemActions from '../../items/actions';\nimport { assertNoUndefinedProperties } from 'tradera/utils/assert';\nimport pageActions from 'tradera/state/page/actions';\nimport {\n selectAutomaticTranslationPreference,\n selectPreferredLanguageCode\n} from 'tradera/state/language/selectors';\nimport {\n selectBidInfo,\n selectItemId,\n selectItemDetails,\n selectBreadcrumbs\n} from './selectors';\nimport { GtmService as gtm } from 'tradera/services/google-tagmanager-service';\nimport { getItemState } from './item-state-helper';\nimport { getHistory } from 'tradera/utils/history';\nimport { BID_VALIDATION_RESULTS } from 'tradera/apps/tradera/components/vip/api/vip-api-constants';\nimport { selectExistsInWishList } from 'tradera/state/items/selectors';\nimport { selectShippingRegionCountryCodeIso2 } from 'tradera/state/shipping-region/selectors';\nimport { isSwedenCountryCodeOrUndefined } from 'tradera/localization/countrycode';\nimport { areLanguageCodesIso2Equal } from 'tradera/localization/languagecode';\n\nconst initialPlaceBidResponse = {\n info: null,\n isSuccessful: null,\n validationResult: null,\n error: null\n};\n\nexport const translatedDescriptionStates = {\n DEFAULT: 'DEFAULT',\n LOADING: 'LOADING',\n SERVER_ERROR: 'SERVER_ERROR',\n TRANSLATION_ON_DEMAND_DISABLED: 'TRANSLATION_ON_DEMAND_DISABLED'\n};\n\nexport const initialState = {\n initialBidFormValue: null,\n bidInfo: null,\n breadCrumbs: [],\n isBidding: false,\n itemDetails: {},\n categoryItems: [],\n shopItems: [],\n sellerItems: null,\n combinedShippingItems: null,\n itemState: null,\n viewItemState: null,\n myMaxBidAmount: null,\n placeBidResponse: initialPlaceBidResponse,\n serverSecondsLeft: null,\n translatedDescription: null,\n translatedDescriptionState: translatedDescriptionStates.DEFAULT,\n currentDescriptionLanguageCodeIso2: null\n};\n\nconst viewItemSlice = createSlice({\n name: 'viewItem',\n initialState,\n reducers: {\n resetPlaceBidResponse: (state) => {\n state.placeBidResponse = initialPlaceBidResponse;\n },\n resetInitialState: () => {\n return initialState;\n },\n setInitialBidFormValue: (state, { payload }) => {\n state.initialBidFormValue = payload;\n },\n setIsRestricted: (state, { payload }) => {\n state.itemDetails.isRestricted = payload;\n },\n setIsInternationalWacko: (state, { payload }) => {\n state.itemDetails.wackoInfo.isInternationalWacko = payload;\n },\n setItemDetails: (state, { payload: itemDetails }) => {\n state.itemDetails = mapItemDetails(itemDetails);\n },\n setPurchaseInfo: (state, { payload: purchaseInfo }) => {\n state.purchaseInfo = purchaseInfo || null;\n },\n setBreadCrumbs: (state, { payload: breadCrumbs }) => {\n state.breadCrumbs = breadCrumbs.map(\n ({ id, href, text }, index) => ({\n id: index,\n url: href,\n name: text,\n categoryId: id\n })\n );\n },\n setIsBidding: (state, { payload: isBidding }) => {\n state.isBidding = isBidding;\n },\n setPlaceBidResponse: (\n state,\n { payload: { isSuccessful, validationResult, bidError } }\n ) => {\n state.placeBidResponse.isSuccessful = isSuccessful;\n state.placeBidResponse.validationResult = validationResult;\n state.placeBidResponse.error = bidError;\n },\n setBidInfo: (state, { payload: { bidInfo, itemId, memberId } }) => {\n // Ensure bid is for current item.\n if (state.itemDetails?.itemId !== itemId) {\n logger(new Error(`setBidInfo was not for current item`), {\n contexts: {\n items: {\n currentItemId: state.itemDetails?.itemId,\n bidInfoItemId: itemId\n }\n }\n });\n return;\n }\n\n // Ensure incoming data is for latest bid. It is possible to get stale data in\n // the response from place bid due to eventual consistency. When that happens\n // we should have received the latest bid before via web socket. For items where\n // web socket updates are not enabled (too long time left of auction) the effect\n // is considered acceptable. Just make sure to not overwrite newer data here.\n const isFirstBidInfo = !state.bidInfo;\n const isBinPurchase =\n bidInfo.transactionType === TRANSACTION_TYPES.BIN;\n const isLatestBid =\n isFirstBidInfo ||\n isBinPurchase ||\n state.bidInfo.bidId <= bidInfo.bidId;\n if (!isLatestBid) return;\n\n const bidStatus = getLeadingBidStatus(\n bidInfo,\n memberId,\n state.bidInfo\n );\n\n const existingBidCount = state.bidInfo?.bidCount || 0;\n const incomingBidCount = bidInfo.bidCount || 0;\n const newBidInfo = {\n bidId: bidInfo.bidId || 0,\n leadingBidAmount: bidInfo.leadingBidAmount || 0,\n leadingBidderMemberId: bidInfo.leadingBidderMemberId || null,\n leadingBidMemberAlias: bidInfo.leadingBidMemberAlias || null,\n nextValidBidAmount: bidInfo.nextValidBidAmount,\n transactionType: state.bidInfo?.transactionType\n ? state.bidInfo.transactionType\n : bidInfo.transactionType || null,\n\n // Never update with a lower bidCount. Can happen if place-bid-response comes before WebSocket event.\n bidCount:\n incomingBidCount > existingBidCount\n ? incomingBidCount\n : existingBidCount,\n\n // Never reset if reservePriceReached was true. Can happen if place-bid-response comes before WebSocket event.\n reservePriceReached:\n state.bidInfo?.reservePriceReached ||\n bidInfo.reservePriceReached ||\n false\n };\n\n assertNoUndefinedProperties(newBidInfo);\n\n state.bidInfo = { ...newBidInfo, ...bidStatus };\n },\n setMyMaxBidAmount: (state, { payload }) => {\n state.myMaxBidAmount = payload;\n },\n setItemState: (state, { payload }) => {\n state.itemState = payload;\n },\n setViewItemState: (state, { payload: viewItemState }) => {\n state.viewItemState = viewItemState;\n },\n setServerSecondsLeft: (state, { payload }) => {\n state.serverSecondsLeft = payload;\n },\n setTranslatedDescription: (state, { payload }) => {\n state.translatedDescription = payload;\n state.translatedDescriptionState =\n translatedDescriptionStates.DEFAULT;\n },\n setCurrentDescriptionLanguageCodeIso2: (state, { payload }) => {\n state.currentDescriptionLanguageCodeIso2 = payload;\n },\n setTranslationOnDemandDisabled: (state) => {\n state.translatedDescription = null;\n state.translatedDescriptionState =\n translatedDescriptionStates.TRANSLATION_ON_DEMAND_DISABLED;\n },\n resetTranslatedDescription: (state) => {\n state.translatedDescription = null;\n state.translatedDescriptionState =\n translatedDescriptionStates.DEFAULT;\n },\n beginLoadingTranslatedDescription: (state) => {\n state.translatedDescription = null;\n state.translatedDescriptionState =\n translatedDescriptionStates.LOADING;\n },\n failedLoadingTranslatedDescription: (state) => {\n state.translatedDescriptionState =\n translatedDescriptionStates.SERVER_ERROR;\n },\n setSellerItems: (state, { payload }) => {\n state.sellerItems = payload;\n },\n setCategoryItems: (state, { payload }) => {\n state.categoryItems = payload;\n },\n setShopItems: (state, { payload }) => {\n state.shopItems = payload;\n },\n setCombinedShippingItems: (state, { payload }) => {\n state.combinedShippingItems = payload;\n }\n }\n});\n\nexport default viewItemSlice.reducer;\n\nexport const mapItemDetails = (itemDetails) => ({\n ...itemDetails,\n descriptionLanguageCodeIso2:\n itemDetails.descriptionLanguageCodeIso2.toLowerCase(),\n images: itemDetails.images.map((img) => ({\n thumbnail: img.thumbnail,\n multiThumbnail: img.thumbnail,\n medium: img.medium || img.small,\n normal: img.normal,\n smallFit: img.smallFit,\n mediumFit: img.mediumFit,\n largeFit: img.largeFit,\n video: img.video || null\n }))\n});\n\nexport const handleItemModel =\n (itemModel, memberId) => (dispatch, getState) => {\n const previousItemId = selectItemId(getState());\n dispatch(viewItemSlice.actions.setItemDetails(itemModel.itemDetails));\n dispatch(setTranslation(itemModel));\n dispatch(viewItemSlice.actions.setPurchaseInfo(itemModel.purchaseInfo));\n\n dispatch(\n itemActions.setItemWishList(\n itemModel.itemDetails.itemId,\n itemModel.itemDetails.inWishList\n )\n );\n dispatch(viewItemSlice.actions.setBreadCrumbs(itemModel.breadCrumbs));\n dispatch(\n viewItemSlice.actions.setBidInfo({\n bidInfo: itemModel.bidInfo,\n itemId: itemModel.itemDetails.itemId,\n memberId\n })\n );\n\n if (itemModel.bidInfo.maxBidAmount) {\n // Touchweb uses a different property name than is used in frontend.\n dispatch(\n viewItemSlice.actions.setMyMaxBidAmount(\n itemModel.bidInfo.maxBidAmount\n )\n );\n } else if (itemModel.bidInfo.myMaxBidAmount) {\n // NextWeb uses the correct property name.\n dispatch(\n viewItemSlice.actions.setMyMaxBidAmount(\n itemModel.bidInfo.myMaxBidAmount\n )\n );\n }\n\n const isSafeToShowWinnerStatus =\n itemModel.itemDetails.hasEnded &&\n !itemModel.hasBidsWinnerToBeConfirmed;\n\n const viewItemState = isSafeToShowWinnerStatus\n ? VIEW_ITEM_STATES.ENDED\n : itemModel.itemDetails.hasStarted\n ? VIEW_ITEM_STATES.ACTIVE\n : VIEW_ITEM_STATES.NOT_STARTED;\n\n dispatch(viewItemSlice.actions.setViewItemState(viewItemState));\n dispatch(\n updateItemState(\n selectItemDetails(getState()),\n selectBidInfo(getState()),\n viewItemState\n )\n );\n\n if (itemModel.reduxContainer) {\n const { pageMeta } = itemModel.reduxContainer;\n dispatch(pageActions.setPageMeta(pageMeta));\n }\n\n dispatch(\n viewItemSlice.actions.setServerSecondsLeft(\n itemModel.serverSecondsLeft\n )\n );\n\n const isNewPage = previousItemId != selectItemId(getState());\n if (isNewPage) {\n handleNewPage(getState);\n }\n };\n\nconst setTranslation = (itemModel) => (dispatch, getState) => {\n const state = getState();\n const shippingRegion = selectShippingRegionCountryCodeIso2(state);\n const preferredLanguageCodeIso2 = selectPreferredLanguageCode(state);\n const disabledForEnglishLangSwedes =\n isSwedenCountryCodeOrUndefined(shippingRegion) &&\n areLanguageCodesIso2Equal(preferredLanguageCodeIso2, 'en');\n const automaticTranslationPreferred =\n selectAutomaticTranslationPreference(state);\n const descriptionLanguageCodeIso2 =\n itemModel.itemDetails.descriptionLanguageCodeIso2;\n const shouldTranslateDescriptionOnLoad =\n automaticTranslationPreferred &&\n preferredLanguageCodeIso2 !== descriptionLanguageCodeIso2 &&\n !disabledForEnglishLangSwedes;\n\n dispatch(\n viewItemSlice.actions.setCurrentDescriptionLanguageCodeIso2(\n shouldTranslateDescriptionOnLoad\n ? preferredLanguageCodeIso2\n : descriptionLanguageCodeIso2\n )\n );\n if (itemModel.translations) {\n dispatch(\n viewItemSlice.actions.setTranslatedDescription({\n title: itemModel.translations.title,\n description: itemModel.translations.description,\n additionalDescriptions:\n itemModel.translations.additionalDescriptions,\n languageCodeIso2: itemModel.translations.languageCodeIso2,\n providerName: 'Google Translate',\n shippingTerms: itemModel.translations.shippingTerms\n })\n );\n } else {\n dispatch(viewItemSlice.actions.resetTranslatedDescription());\n }\n};\n\nexport const handleNewPage = (getState) => {\n const currentItemDetails = selectItemDetails(getState());\n const currentBidInfo = selectBidInfo(getState());\n const breadCrumbs = selectBreadcrumbs(getState());\n const swedishCategoryPath = breadCrumbs.map((b) => b.name).join(' > ');\n\n const getAuctionState = () => {\n const hasWon =\n currentItemDetails.hasEnded && currentBidInfo.hasLeadingBid;\n const isLeading =\n !currentItemDetails.hasEnded && currentBidInfo.hasLeadingBid;\n if (hasWon) return 'won';\n if (isLeading) return 'leading';\n return currentItemDetails.hasEnded ? 'ended' : 'normal';\n };\n\n const contentGroup = `${currentItemDetails.itemType}-${getAuctionState()}`;\n gtm.trackGtmEvent('viewItem', {\n page: {\n itemState: contentGroup,\n 'content-group-2': swedishCategoryPath,\n 'content-group-3': contentGroup\n },\n itemType: currentItemDetails.itemType,\n itemId: currentItemDetails.itemId,\n itemFixedPrice: currentItemDetails.fixedPrice || 0,\n itemCategory: swedishCategoryPath,\n itemStatus: currentItemDetails.hasEnded ? 'inactive' : 'active',\n itemEndDate: dayjs(currentItemDetails.endDate).format('YYYYMMDD')\n });\n};\n\nconst updateItemState = (itemDetails, bidInfo, viewItemState) => (dispatch) => {\n const itemState = getItemState(\n viewItemState === VIEW_ITEM_STATES.ENDED,\n viewItemState !== VIEW_ITEM_STATES.NOT_STARTED,\n itemDetails.itemType,\n bidInfo.bidCount,\n bidInfo.reservePriceReached,\n bidInfo.nextValidBidAmount,\n bidInfo.transactionType,\n bidInfo.leadingBidderMemberId,\n itemDetails.isCancelled\n );\n dispatch(viewItemSlice.actions.setItemState(itemState));\n};\n\n/**\n * It is possible that we need to update the URL\n * when an auction that expires is automatically\n * restarted and gets a new itemId. Without this,\n * we could end up in an endless recursion of\n * trying to fetch data for the itemId in the URL.\n * @param {*} currentItemId\n * @param {*} itemModel\n */\nexport const ensureCorrectUrlForItem = (expectedItemId, itemModel) => {\n const incomingItemId = itemModel.itemDetails.itemId;\n if (expectedItemId !== incomingItemId) {\n // Restarted item, update URL\n getHistory().replace({\n pathname: itemModel.reduxContainer.pageMeta.canonicalLink,\n search: window.location.search\n });\n }\n};\n\nexport const fetchItemAndBidInfo =\n (itemId, shouldResetInititalState, setLoading, setLoaded) =>\n async (dispatch, getState) => {\n setLoading && setLoading();\n const { memberId = 0 } = getState().member;\n const preferredLanguageCode = selectPreferredLanguageCode(getState());\n if (shouldResetInititalState) {\n dispatch(viewItemSlice.actions.resetInitialState());\n }\n try {\n const itemModel = (await getItemApi(itemId, preferredLanguageCode))\n .data;\n dispatch(handleItemModel(itemModel, memberId));\n setLoaded && setLoaded();\n ensureCorrectUrlForItem(itemId, itemModel);\n } catch (error) {\n const status = error.response && error.response.status;\n if (status === 404) {\n // Handle server side.\n window.location.reload();\n } else {\n logger(error);\n }\n }\n };\n\nconst getLeadingBidStatus = (bidInfo, memberId, previousBidInfo = null) => {\n const hadLeadingBid = !!previousBidInfo?.hasLeadingBid;\n const hasLeadingBid =\n !!memberId && memberId === bidInfo.leadingBidderMemberId;\n const hadLostLeadingBid = !!previousBidInfo?.hasLostLeadingBid;\n const hasLostLeadingBid =\n (hadLostLeadingBid || hadLeadingBid) && !hasLeadingBid;\n return {\n // ...bidInfo,\n hasLostLeadingBid,\n hasLeadingBid\n };\n};\n\nexport const toggleWishList =\n (itemId, forceAdd = false) =>\n (dispatch, getState) => {\n const shouldNotTrackWishlistEventBecauseNeedsToBeSameAsLegacyVip = true;\n const inWishListOldValue =\n getState().items.wishListItemIds.includes(itemId);\n const inWishListNewValue = !inWishListOldValue || forceAdd;\n\n const itemDetails = getState().views.viewItem.itemDetails;\n const wishListCountOldValue = itemDetails.wishListCount;\n let wishListCountNewValue = wishListCountOldValue;\n if (Number.isInteger(wishListCountNewValue)) {\n if (inWishListOldValue && !inWishListNewValue) {\n wishListCountNewValue--;\n } else if (!inWishListOldValue && inWishListNewValue) {\n wishListCountNewValue++;\n }\n }\n dispatch(\n viewItemSlice.actions.setItemDetails({\n ...itemDetails,\n inWishList: inWishListNewValue,\n wishListCount: wishListCountNewValue\n })\n );\n\n return dispatch(\n itemActions.wishlist(\n itemId,\n inWishListNewValue,\n shouldNotTrackWishlistEventBecauseNeedsToBeSameAsLegacyVip\n )\n ).then((inWishListNewValue) => {\n if (inWishListNewValue !== undefined) {\n analytics.trackWishlist(itemId, inWishListNewValue);\n } else {\n //Restore previous value;\n const itemDetails = getState().views.viewItem.itemDetails;\n dispatch(\n viewItemSlice.actions.setItemDetails({\n ...itemDetails,\n inWishList: inWishListOldValue,\n wishListCount: wishListCountOldValue\n })\n );\n }\n return inWishListNewValue;\n });\n };\n\nexport const placeBid =\n (itemId, memberId, amount, onLoggedOut) => async (dispatch, getState) => {\n dispatch(viewItemSlice.actions.setIsBidding(true));\n const existsInWishList = selectExistsInWishList(itemId)(getState());\n const preferredLanguageCode = selectPreferredLanguageCode(getState());\n const { gaTrackingSessionId } = getState().environment;\n try {\n const result = await placeBidApi(\n itemId,\n amount,\n onLoggedOut,\n preferredLanguageCode,\n gaTrackingSessionId\n );\n\n if (!result) {\n dispatch(\n viewItemSlice.actions.setPlaceBidResponse({\n isSuccessful: false,\n validationResult: {\n code: BID_VALIDATION_RESULTS.OFFLINE\n }\n })\n );\n dispatch(viewItemSlice.actions.setInitialBidFormValue(amount));\n dispatch(viewItemSlice.actions.setIsBidding(false));\n return;\n }\n\n const {\n analyticsData,\n bidInfo,\n isSuccessful,\n item: updatedItem,\n validationResult,\n myMaxBidAmount,\n serverSecondsLeft\n } = result;\n\n if (isSuccessful) {\n dispatch(\n viewItemSlice.actions.setBidInfo({\n bidInfo,\n itemId,\n memberId\n })\n );\n dispatch(\n viewItemSlice.actions.setMyMaxBidAmount(myMaxBidAmount)\n );\n dispatch(\n viewItemSlice.actions.setInitialBidFormValue(\n bidInfo.nextValidBidAmount\n )\n );\n } else {\n // suggest next valid bid to user\n dispatch(\n viewItemSlice.actions.setInitialBidFormValue(\n bidInfo.nextValidBidAmount\n )\n );\n }\n\n analytics.trackBidPlaced(\n itemId,\n validationResult.code,\n analyticsData.isMaxBid,\n analyticsData.potentialBidChange,\n analyticsData.bidId,\n analyticsData.transactionTotal\n );\n\n const currentItemDetails = getState().views.viewItem.itemDetails;\n dispatch(\n viewItemSlice.actions.setItemDetails({\n ...currentItemDetails,\n ...updatedItem\n })\n );\n\n dispatch(\n viewItemSlice.actions.setPlaceBidResponse({\n isSuccessful,\n validationResult,\n bidError: null\n })\n );\n\n dispatch(\n viewItemSlice.actions.setServerSecondsLeft(serverSecondsLeft)\n );\n } catch (error) {\n logger(error);\n dispatch(\n viewItemSlice.actions.setPlaceBidResponse({\n isSuccessful: false,\n validationResult: null,\n error\n })\n );\n }\n dispatch(viewItemSlice.actions.setIsBidding(false));\n\n // Add item to wish list if it doesn't already exist in list\n if (!existsInWishList) {\n dispatch(toggleWishList(itemId, true));\n }\n };\n\nexport const setNotValidToBidOrBuyNow = () => (dispatch) => {\n return dispatch(\n viewItemSlice.actions.setPlaceBidResponse({\n isSuccessful: false,\n validationResult: {\n code: BID_VALIDATION_RESULTS.BIDDING_OR_BUYING_OWN_ITEM\n }\n })\n );\n};\n\nexport const {\n beginLoadingTranslatedDescription,\n failedLoadingTranslatedDescription,\n resetPlaceBidResponse,\n resetTranslatedDescription,\n setBidInfo,\n setIsRestricted,\n setIsInternationalWacko,\n setViewItemState,\n setTranslatedDescription,\n setTranslationOnDemandDisabled,\n setSellerItems,\n setCategoryItems,\n setShopItems,\n setCombinedShippingItems,\n setCurrentDescriptionLanguageCodeIso2\n} = viewItemSlice.actions;\n","import { createApi } from '@reduxjs/toolkit/query/react';\nimport { baseQueryWithReauth } from 'tradera/utils/api-rtk';\n\nexport const webApiTags = {\n Item: 'Item',\n Offer: 'Offer',\n KycPendingActions: 'KycPendingActions',\n KycQuestionnaire: 'KycQuestionnaire'\n};\n\nexport const webApi = createApi({\n reducerPath: 'webApi',\n tagTypes: [\n webApiTags.Item,\n webApiTags.Offer,\n webApiTags.KycPendingActions,\n webApiTags.KycQuestionnaire\n ],\n baseQuery: baseQueryWithReauth,\n // endpoints are added through injectEndpoints\n endpoints: () => ({})\n});\n","import qs from 'qs';\nimport initData from 'init-data';\nimport { touchWebClient } from 'tradera/utils/http';\n\nconst checkUserMessagingParticipation = (sellerId) =>\n touchWebClient\n .get('messaging/participation/' + sellerId)\n .then((response) => !!response.data.participates);\n\nconst setUserMessagingParticipation = (messagingSettings) =>\n touchWebClient\n .post('/my/profile/messaging-participation', messagingSettings)\n .then((response) => response.data);\n\nconst setUserMessagingEmailSetting = async (setting) =>\n touchWebClient\n .post('/api/messaging/emailnotify?emailNotify=' + setting)\n .then((response) => response.data);\n\n/**\n * Returns base path for a thread\n *\n * @param {number} u1\n * @param {number} u2\n * @param {number} l\n * @param {object} [options]\n * @param {boolean} [options.singleThread] - Open in single thread mode\n * @param {boolean} [options.openForm] - Open message form right away\n * @param {string} [options.source] - Message source info for tracking\n * @returns {string}\n */\nconst getMessagingThreadLink = (u1, u2, l, options) => {\n const optionsWithDefaults = {\n singleThread: false,\n openForm: false,\n ...options\n };\n const { singleThread, ...queryParams } = optionsWithDefaults;\n return (\n (singleThread ? '/thread/' : '/threads/') +\n 'u' +\n Math.min(u1, u2) +\n '_u' +\n Math.max(u1, u2) +\n '_l' +\n l +\n qs.stringify(queryParams, { addQueryPrefix: true })\n );\n};\n\n/**\n * Returns the path to a thread on Tradera's messaging page\n *\n * @param {number} u1\n * @param {number} u2\n * @param {number} l\n * @param {object} [options]\n * @returns {string}\n */\nconst getMessagingPageLink = (u1, u2, l, options) =>\n 'messaging' +\n (u1 && u2 && l ? getMessagingThreadLink(u1, u2, l, options) : '');\n\n/**\n * Get messaging url\n *\n * @returns {string}\n */\nconst getMessagingRemoteUrl = () => {\n return initData.messagingIframeUrl;\n};\n\nexport {\n checkUserMessagingParticipation,\n setUserMessagingParticipation,\n setUserMessagingEmailSetting,\n getMessagingPageLink,\n getMessagingThreadLink,\n getMessagingRemoteUrl\n};\n","import feesActions from './fees-actions';\nimport { getSyiSlice } from 'tradera/apps/syi/state/selectors/syi';\nimport { resetCharityAndShippingInfo } from 'tradera/apps/syi/state/actions/charity-actions';\nimport { PURE_BIN_CATEGORY_IDS } from '../constants';\nimport { selectIsFeatureEnabled } from 'tradera/state/environment/selectors';\nimport { setCustomEndTime } from '../reducers/item-duration';\n\nfunction toIntOrNull(number) {\n var i = parseInt(number);\n if (isFinite(i)) {\n return i;\n }\n return null;\n}\n\nfunction isNullOrUndefined(val) {\n return val === null || val === undefined;\n}\n\nconst setOpeningBid = (openingBid) => (dispatch) => {\n dispatch({\n type: 'SET_OPENING_BID',\n payload: toIntOrNull(openingBid)\n });\n};\n\nconst setFixedPrice = (fixedPrice) => (dispatch) => {\n dispatch({\n type: 'SET_FIXED_PRICE',\n payload: toIntOrNull(fixedPrice)\n });\n};\n\nconst setReservePrice = (reservePrice) => (dispatch) => {\n dispatch({\n type: 'SET_RESERVE_PRICE',\n payload: toIntOrNull(reservePrice)\n });\n dispatch(feesActions.updatePrices());\n};\n\nconst setAuctionBinPrice = (auctionBinPrice) => (dispatch) => {\n dispatch({\n type: 'SET_AUCTION_BIN_PRICE',\n payload: toIntOrNull(auctionBinPrice)\n });\n};\n\nconst setReservePriceVisibility = (visible) => (dispatch) => {\n dispatch({\n type: 'SET_RESERVE_PRICE_VISIBILITY',\n payload: visible\n });\n if (!visible) {\n dispatch(setReservePrice(null));\n }\n};\n\nconst setCharityDonationVisibility = (visible) => (dispatch) => {\n dispatch({\n type: 'SET_CHARITY_DONATION_VISIBILITY',\n payload: visible\n });\n if (!visible) {\n dispatch(resetCharityAndShippingInfo());\n }\n};\n\nconst setEditCharity = (editCharity) => (dispatch) => {\n dispatch({\n type: 'SET_EDIT_CHARITY',\n payload: editCharity\n });\n};\n\nconst setIsPureBinSelected = (isPureBinSelected) => (dispatch, getState) => {\n dispatch({\n type: 'SET_IS_PURE_BIN_SELECTED',\n isPureBinSelected,\n isChangeItem: getSyiSlice(getState()).syi.isEditOfPublishedItem\n });\n if (isPureBinSelected) {\n dispatch(setOpeningBid(null));\n dispatch(setAuctionBinPrice(null));\n dispatch(setReservePrice(null));\n dispatch(setCustomEndTime(null));\n } else {\n dispatch(setFixedPrice(null));\n }\n};\n\nconst setVat = (vat) => (dispatch) => {\n dispatch({\n type: 'SET_VAT',\n payload: vat\n });\n};\n\nconst setFromDraft =\n (openingBid, fixedPrice, reservePrice, charityId, vat, isChangeItem) =>\n (dispatch) => {\n const queryParams = new URLSearchParams(location.search);\n const queryParamCharityId = queryParams.get('charityId');\n const hasOpeningBid = !isNullOrUndefined(openingBid);\n const hasFixedPrice = !isNullOrUndefined(fixedPrice);\n const hasReservePrice = !isNullOrUndefined(reservePrice);\n const hasCharityId =\n !isNullOrUndefined(charityId) ||\n !isNullOrUndefined(queryParamCharityId);\n const isAuction = hasOpeningBid && !hasFixedPrice;\n const isAuctionBin = hasOpeningBid && hasFixedPrice;\n const isPureBin = !hasOpeningBid && hasFixedPrice;\n\n dispatch(setVat(vat));\n\n // TODO: fewer changes to the state makes the page load faster...\n if (isAuction) {\n dispatch(setOpeningBid(openingBid));\n dispatch(setReservePrice(reservePrice));\n dispatch(setAuctionBinPrice(null));\n dispatch(setFixedPrice(null));\n dispatch(setReservePriceVisibility(hasReservePrice));\n dispatch(setCharityDonationVisibility(hasCharityId));\n dispatch(setIsPureBinSelected(false));\n } else if (isAuctionBin) {\n dispatch(setOpeningBid(openingBid));\n dispatch(setReservePrice(reservePrice));\n dispatch(setAuctionBinPrice(fixedPrice));\n dispatch(setFixedPrice(null));\n dispatch(setReservePriceVisibility(hasReservePrice));\n dispatch(setCharityDonationVisibility(hasCharityId));\n dispatch(setIsPureBinSelected(false));\n } else if (isPureBin) {\n dispatch(setOpeningBid(null));\n dispatch(setReservePrice(null));\n dispatch(setAuctionBinPrice(null));\n dispatch(setFixedPrice(fixedPrice));\n dispatch(setReservePriceVisibility(false));\n dispatch(setCharityDonationVisibility(false));\n dispatch(setIsPureBinSelected(true));\n } else {\n dispatch(setOpeningBid(null));\n dispatch(setReservePrice(null));\n dispatch(setAuctionBinPrice(null));\n dispatch(setFixedPrice(null));\n dispatch(setReservePriceVisibility(false));\n dispatch(setCharityDonationVisibility(hasCharityId));\n dispatch(setIsPureBinSelected(false));\n }\n\n dispatch({\n type: 'SET_RESERVE_PRICE_CAN_CHANGE_BUT_NOT_BE_REMOVED',\n payload: isChangeItem && hasReservePrice\n });\n };\n\nconst reset = () => (dispatch) => {\n dispatch({\n type: 'RESET_PRICES_AND_VAT'\n });\n};\n\nconst rootCategoryHasBeenSelected = (categoryId) => (dispatch, getState) => {\n const isPureBinCategory = PURE_BIN_CATEGORY_IDS.includes(categoryId);\n const isFeatureEnabled = selectIsFeatureEnabled(\n 'syi-select-bin-for-selected-categories'\n )(getState());\n const isEditOfPublishedItem = getSyiSlice(getState()).syi\n .isEditOfPublishedItem;\n\n // We do not want to change the auction type if the user is editing a\n // published item, since that's not allowed anyway\n if (isFeatureEnabled && !isEditOfPublishedItem) {\n dispatch(setIsPureBinSelected(isPureBinCategory));\n dispatch({\n type: 'SHOW_AUCTION_INFO_MODAL',\n payload: isPureBinCategory\n });\n }\n};\n\nexport default {\n setOpeningBid,\n setFixedPrice,\n setReservePrice,\n setAuctionBinPrice,\n setReservePriceVisibility,\n setCharityDonationVisibility,\n setEditCharity,\n setIsPureBinSelected,\n setFromDraft,\n rootCategoryHasBeenSelected,\n setVat,\n reset\n};\n","import { createSlice } from '@reduxjs/toolkit';\n\nconst resolveCurrency = (enabled, preferredCurrencyCookieValue, currencies) => {\n if (!enabled || !preferredCurrencyCookieValue) {\n return null;\n }\n return (\n currencies.find(\n (currency) => currency.code === preferredCurrencyCookieValue\n ) || null\n );\n};\n\nconst multiCurrencySlice = createSlice({\n name: 'multiCurrency',\n initialState: {},\n reducers: {\n initialize: (_state, { payload }) => {\n const { currencies = [], enabled, preferredCurrency } = payload;\n\n return {\n enabled,\n currencies,\n preferredCurrency: resolveCurrency(\n enabled,\n preferredCurrency,\n currencies\n )\n };\n },\n setPreferredCurrency: (state, { payload }) => {\n const { enabled, currencies } = state;\n\n return {\n ...state,\n preferredCurrency: resolveCurrency(\n enabled,\n payload.currencyCode,\n currencies\n )\n };\n }\n }\n});\n\nexport const { initialize, setPreferredCurrency } = multiCurrencySlice.actions;\nexport default multiCurrencySlice.reducer;\n","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 16 16\"\n}, props), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12.98 3.08a7 7 0 10-.06 9.9l-.77-.78a5.9 5.9 0 11.05-8.35l.78-.77z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13.47 1.96L11.1 4.21l2.5.5-.12-2.76z\"\n})));","// extracted by mini-css-extract-plugin\nexport default {\"animate-on-value-change\":\"animate-on-value-change--vaPOz\",\"animateOnValueChange\":\"animate-on-value-change--vaPOz\",\"animate\":\"animate--H4tSO\"};","import * as React from 'react';\nimport styles from './animate-on-value-change.module.scss';\n\nexport const AnimateOnValueChange = ({ trigger, children }) => {\n const [animate, setAnimate] = React.useState(false);\n const firstUpdate = React.useRef(true);\n\n React.useEffect(() => {\n if (firstUpdate.current) {\n firstUpdate.current = false;\n return;\n }\n setAnimate(true);\n }, [trigger]);\n\n return (\n setAnimate(false)}>\n {children}\n \n );\n};\n","export default {\n DEFAULT_ACTION: 'initData/default',\n INITIALIZE: 'initData/INITIALIZE'\n};\n","import { isServer } from 'tradera/utils/nextjs';\n\nconst config =\n !isServer && window.sellingGlobalConfig\n ? { ...window.sellingGlobalConfig }\n : {};\n\nconfig.maxTemplates = 100;\nconfig.domainNameCategoryId = 344477;\n\nexport default config;\n","export const HEADER = 'header';\nexport const LAST_CHANCE = 'lastChance';\nexport const PICKS_FOR_YOU = 'picksForYou';\nexport const POPULAR_CATEGORIES = 'popularCategories';\nexport const RECENTLY_VIEWED = 'recentlyViewed';\nexport const INSTAGRAM_FEED = 'instagramPosts';\nexport const WISH_LIST = 'wishList';\nexport const FAVOURITE_SELLERS = 'favouriteSellers';\nexport const CATEGORY_LINKS = 'categoryLinks';\nexport const SAVED_SEARCHES = 'savedSearches';\nexport const LAST_SEARCH = 'lastSearch';\nexport const DISCOVER_SUGGESTIONS = 'discoverSuggestions';\n","import { useSelector } from 'react-redux';\nimport { useMediaQuery } from 'react-responsive';\nimport { SITE_LAYOUT } from 'tradera/constants/ui';\nimport { BREAKPOINT_SIZES } from 'tradera/constants/breakpoints';\n\n/**\n * Count the number of system messages that should cause alerts and badges\n *\n * @param {object} systemMessages\n * @returns {number}\n */\nexport const getSystemMessageAlertCount = (systemMessages = {}) => {\n return (\n (systemMessages.InvoiceOverdue ? 1 : 0) +\n (systemMessages.PayoutFailed ? 1 : 0) +\n (systemMessages.PayoutReadyBankAccountMissing ? 1 : 0) +\n (systemMessages.HyperwalletPayeeVerificationRequired ? 1 : 0) +\n (systemMessages.KycQuestionnaire ? 1 : 0) +\n (systemMessages.PayoutReadyVerificationRequired ? 1 : 0) +\n (systemMessages.PayoutReadyOutstandingTraderaPayLicense ? 1 : 0)\n );\n};\n\nexport const useIsSiteWidthFull = () => {\n const isExtraLargeDesktop = useMediaQuery({\n minWidth: BREAKPOINT_SIZES.XL.min\n });\n const siteLayout = useSelector((state) => state.ui.siteLayout);\n return siteLayout === SITE_LAYOUT.FULL_WIDTH && isExtraLargeDesktop;\n};\n","export const actionTypes = {\n PURCHASE_ORDER_REQUEST_COMBINED_SHIPPING:\n 'PURCHASE_ORDER_REQUEST_COMBINED_SHIPPING',\n PURCHASE_ORDER_SHIPPED: 'PURCHASE_ORDER_SHIPPED',\n PURCHASE_ORDER_LIST: 'PURCHASE_ORDER_LIST',\n PURCHASE_ORDER_PAID_STATUS: 'PURCHASE_ORDER_PAID_STATUS',\n PURCHASE_ORDER_RESET: 'PURCHASE_ORDER_RESET',\n PURCHASE_ORDER_DELETE_SHIPMENT: 'PURCHASE_ORDER_DELETE_SHIPMENT',\n PURCHASE_ORDER_HIDDEN: 'PURCHASE_ORDER_HIDDEN',\n PURCHASE_ORDERS_SHIPPING_BOOKED: 'PURCHASE_ORDERS_SHIPPING_BOOKED',\n PURCHASE_ORDERS_FEEDBACK_LEFT_BY_SELLER:\n 'PURCHASE_ORDERS_FEEDBACK_LEFT_BY_SELLER',\n PURCHASE_ORDERS_FEEDBACK_LEFT_BY_BUYER:\n 'PURCHASE_ORDERS_FEEDBACK_LEFT_BY_BUYER'\n};\n","export const getInitialState = ({\n memberCountryCodeIso2,\n isFunctionalCookiesEnabled,\n hasRegionPickerDismissedCookie,\n shippingCountryCookieValue,\n fallbackShippingCountry\n}) => {\n const regionPickerDismissed =\n isFunctionalCookiesEnabled && hasRegionPickerDismissedCookie;\n const preferredShippingCountry = memberCountryCodeIso2\n ? memberCountryCodeIso2\n : isFunctionalCookiesEnabled &&\n !!shippingCountryCookieValue &&\n shippingCountryCookieValue;\n return {\n availableShippingCountries: [],\n availableShippingCountryCodes: [],\n isLoadingAvailableShippingCountries: false,\n hasLoadedAvailableShippingCountries: false,\n shippingCountry: {\n countryCodeIso2:\n preferredShippingCountry ||\n fallbackShippingCountry.toUpperCase()\n },\n regionPickerDismissed,\n shippingCountryCookieValue:\n (isFunctionalCookiesEnabled && shippingCountryCookieValue) || null\n };\n};\n","import cookieUtil from 'tradera/utils/cookie';\nimport {\n REGION_PICKER_DISMISSED,\n SHIPPING_COUNTRY\n} from 'tradera/constants/cookies';\nimport { fetchAvailableShippingCountries } from './api';\nimport {\n selectIsLoadingAvailableShippingCountries,\n selectHasLoadedAvailableShippingCountries\n} from './selectors';\n\nimport {\n initialize,\n setShippingCountry,\n setAvailableShippingCountries,\n beginLoadingAvailableShippingOptions,\n setDefaultShippingCountry\n} from './reducer';\nimport { setPreferredCurrencyThunk } from 'tradera/state/multi-currency/actions';\nimport { setPreferredLanguage } from 'tradera/state/language/actions';\nimport Analytics from 'packages/analytics';\nimport {\n getCountryCodeFromLanguage,\n getLanguageFromCountryCode\n} from 'tradera/localization/languagecode';\nimport { selectMemberCountryCodeIso2 } from 'tradera/state/member/selectors';\nimport { getInitialState } from './initial-state';\nimport GdprSettings from 'tradera/utils/gdpr-settings';\nimport { selectPreferredLanguageCode } from 'tradera/state/language/selectors';\nimport { selectIsFeatureEnabled } from '../environment/selectors';\n\nexport const updateShippingRegion = (countryCodeIso2) => (dispatch) => {\n dispatch(setShippingCountry({ countryCodeIso2 }));\n};\n\nexport const removeShippingCountryCookieIfSwedish =\n (geolocation) => (dispatch) => {\n if (\n geolocation.isoCode === 'SE' &&\n cookieUtil.hasCookie(SHIPPING_COUNTRY)\n ) {\n cookieUtil.eraseCookie(SHIPPING_COUNTRY);\n dispatch(setDefaultShippingCountry());\n }\n };\n\nexport const getAvailableShippingCountries =\n () => async (dispatch, getState) => {\n if (\n selectIsLoadingAvailableShippingCountries(getState()) ||\n selectHasLoadedAvailableShippingCountries(getState())\n ) {\n return;\n }\n\n dispatch(beginLoadingAvailableShippingOptions());\n const { shippingCountries } = await fetchAvailableShippingCountries();\n dispatch(setAvailableShippingCountries({ shippingCountries }));\n };\n\nexport const onLocalizationShippingRegionSelected =\n ({ countryCodeIso2, currencyCode, toLocalizedUrl }) =>\n (dispatch, getState) => {\n const languageCodeIso2 = getLanguageFromCountryCode(\n countryCodeIso2,\n selectIsFeatureEnabled('french-dutch-selectable')(getState())\n );\n\n Analytics.trackEvent({\n category: 'Top navigation',\n action: 'Localization menu tooltip',\n label: `Set localization region - ${countryCodeIso2}`\n });\n\n dispatch(getAvailableShippingCountries()); //make sure we have loaded countries\n dispatch(updateShippingRegion(countryCodeIso2));\n dispatch(setPreferredCurrencyThunk(currencyCode));\n dispatch(setPreferredLanguage(languageCodeIso2, toLocalizedUrl));\n };\n\nconst getFallbackShippingCountry = (state) =>\n getCountryCodeFromLanguage(selectPreferredLanguageCode(state));\n\nexport const initializeFromInitData = (initData) => (dispatch, getState) => {\n const memberCountryCodeIso2 = initData.memberCountryCodeIso2;\n const initialState = getInitialState({\n memberCountryCodeIso2,\n isFunctionalCookiesEnabled: GdprSettings.isFunctionalEnabled(),\n hasRegionPickerDismissedCookie: cookieUtil.hasCookie(\n REGION_PICKER_DISMISSED\n ),\n shippingCountryCookieValue: cookieUtil.readCookie(SHIPPING_COUNTRY),\n fallbackShippingCountry: getFallbackShippingCountry(getState())\n });\n dispatch(initialize(initialState));\n};\n\nexport const initializeFromState =\n (gdprSettings, ssrCookieUtil) => (dispatch, getState) => {\n const memberCountryCodeIso2 = selectMemberCountryCodeIso2(getState());\n const initialState = getInitialState({\n memberCountryCodeIso2,\n isFunctionalCookiesEnabled: gdprSettings.isFunctionalEnabled(),\n hasRegionPickerDismissedCookie: ssrCookieUtil.hasCookie(\n REGION_PICKER_DISMISSED\n ),\n shippingCountryCookieValue:\n ssrCookieUtil.readCookie(SHIPPING_COUNTRY),\n fallbackShippingCountry: getFallbackShippingCountry(getState())\n });\n dispatch(initialize(initialState));\n };\n","import axios from 'axios';\n\nimport ENDPOINTS from 'tradera/constants/endpoints';\nimport { finalizeResponse, handleError } from 'tradera/utils/api';\nimport { removeBannedCountries } from 'tradera/localization/countries';\n\nexport const fetchAvailableShippingCountries = () =>\n axios\n .get(ENDPOINTS.AVAILABLE_SHIPPING_COUNTRIES)\n .then(finalizeResponse())\n .then(({ data }) => ({\n shippingCountries: data.availableCountries\n .map((country) => ({\n countryCodeIso2: country.countryCodeIso2.toLowerCase(),\n countryNameEng: country.countryNameEng\n }))\n .filter(removeBannedCountries)\n }))\n .catch(handleError());\n","export const capitalize = (text) => `${text[0].toUpperCase()}${text.slice(1)}`;\n\nexport const removeTags = (text) => text.replace(/(<([^>]+)>)/gi, '');\n","/* eslint-disable better-mutation/no-mutation */\nimport { createSlice } from '@reduxjs/toolkit';\nimport { getRecentSearchesLocalStorage } from './helpers';\n\nexport const initialState = {\n brands: {\n items: [],\n status: 'NOT_FETCHED'\n },\n searches: {\n items: [],\n status: 'NOT_FETCHED'\n },\n recentSearches: []\n};\n\nconst getInitialState = () => {\n const recentSearches = getRecentSearchesLocalStorage() || [];\n\n return {\n ...initialState,\n recentSearches\n };\n};\n\nconst personalisationSlice = createSlice({\n name: 'personalisation',\n initialState,\n reducers: {\n initialize: (_state, { payload }) => {\n return getInitialState(payload);\n },\n initializeRecentSearches: (state, { payload }) => {\n state.recentSearches = payload;\n },\n setPersonalisedSearches: (state, { payload }) => {\n state.searches = payload;\n },\n setPersonalisedSearchesStatus: (state, { payload }) => {\n state.searches.status = payload;\n },\n setRecentSearches: (state, { payload }) => {\n const recentSearchIndex = state.recentSearches.findIndex(\n (search) => search.text === payload.text\n );\n\n if (recentSearchIndex > -1) {\n state.recentSearches[recentSearchIndex].count = payload.count;\n state.recentSearches[recentSearchIndex].queryParams =\n payload.queryParams;\n\n // Move the search to the top of the list\n state.recentSearches.unshift(\n state.recentSearches.splice(recentSearchIndex, 1)[0]\n );\n } else {\n state.recentSearches.unshift(payload);\n }\n },\n removeRecentSearch: (state, { payload }) => {\n state.recentSearches = state.recentSearches.filter(\n (search) => search.text !== payload\n );\n }\n }\n});\n\nexport const {\n initialize,\n initializeRecentSearches,\n setPersonalisedSearches,\n setPersonalisedSearchesStatus,\n setRecentSearches,\n removeRecentSearch\n} = personalisationSlice.actions;\n\nexport const reducer = personalisationSlice.reducer;\n","import syiActions from './syi-actions';\nimport {\n fetchForCategory,\n fetchCategoryAttributeSuggestions\n} from './attributes-actions';\n\nimport campaignCodeActions from './campaign-code-actions';\nimport { getSyiSlice } from 'tradera/apps/syi/state/selectors/syi';\n\nimport { webApiClient } from 'tradera/utils/http';\nimport { selectPreferredLanguage } from 'tradera/state/language/selectors';\nimport shippingActions from './shipping-actions';\nimport priceActions from './price-actions';\n\nexport const updateCategoryRestrictions =\n (categoryId) => async (dispatch, getState) => {\n if (!categoryId) {\n return;\n }\n\n const { languageCodeIso2 } = selectPreferredLanguage(getState());\n const { data } = await webApiClient.get(\n `/selling/category-restriction/${categoryId}?locale=${languageCodeIso2}`\n );\n dispatch(syiActions.setCategoryRestriction(data));\n };\n\nconst reset = () => (dispatch) => {\n dispatch({\n type: 'RESET_CATEGORY'\n });\n};\n\nconst setDraftCategory = (categoryId, categoryPath) => (dispatch, getState) => {\n var slice = getSyiSlice(getState());\n dispatch({\n type: 'SET_DRAFT_CATEGORY',\n categoryId: categoryId,\n categoryPath: categoryPath\n });\n dispatch(campaignCodeActions.validateCampaignCode());\n dispatch(updateCategoryRestrictions(categoryId));\n dispatch(fetchForCategory(categoryId));\n dispatch(\n fetchCategoryAttributeSuggestions(\n categoryId,\n slice.shortDescription.shortDescription\n )\n );\n dispatch(shippingActions.setShippingRecommendations(categoryId));\n if (categoryPath?.length > 0) {\n dispatch(\n priceActions.rootCategoryHasBeenSelected(categoryPath[0].categoryId)\n );\n }\n};\n\nexport default {\n setDraftCategory,\n reset\n};\n","// We map this way to ensure that each key in lokalise is present in code.\n// This allows us to clean up unnecessary codes in the future.\nexport const mapLanguageCodeToLanguageKey = (languageCode) => {\n const lokaliseKey = {\n sv: 'language_sv',\n da: 'language_da',\n de: 'language_de',\n en: 'language_en',\n fr: 'language_fr',\n nl: 'language_nl'\n }[languageCode.toLowerCase()];\n if (!lokaliseKey)\n throw `Language ${languageCode} has no mapping to lokalise key`;\n return lokaliseKey;\n};\n","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 578 176\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n x1: \"80.82%\",\n y1: \"59.64%\",\n x2: \"59.87%\",\n y2: \"8.15%\",\n id: \"svg999568949a\"\n}, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#EF2131\",\n offset: \"0%\"\n}), /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#FECF2C\",\n offset: \"100%\"\n})), /*#__PURE__*/React.createElement(\"linearGradient\", {\n x1: \"58.82%\",\n y1: \"0%\",\n x2: \"9.24%\",\n y2: \"94.07%\",\n id: \"svg999568949b\"\n}, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#FBC52C\",\n offset: \"0%\"\n}), /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#F87130\",\n offset: \"26.39%\"\n}), /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#EF52E2\",\n offset: \"56.08%\"\n}), /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#661EEC\",\n offset: \"100%\"\n})), /*#__PURE__*/React.createElement(\"linearGradient\", {\n x1: \"20.57%\",\n y1: \"41.02%\",\n x2: \"40.6%\",\n y2: \"91.28%\",\n id: \"svg999568949c\"\n}, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#78F6D8\",\n offset: \"0%\"\n}), /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#77D1F6\",\n offset: \"26.57%\"\n}), /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#70A4F3\",\n offset: \"55.45%\"\n}), /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#661EEC\",\n offset: \"100%\"\n})), /*#__PURE__*/React.createElement(\"linearGradient\", {\n x1: \"42.44%\",\n y1: \"100%\",\n x2: \"91.61%\",\n y2: \"6.28%\",\n id: \"svg999568949d\"\n}, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#536EED\",\n offset: \"0%\"\n}), /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#54C3EC\",\n offset: \"24.67%\"\n}), /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#64D769\",\n offset: \"56.42%\"\n}), /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#FECF2C\",\n offset: \"100%\"\n}))), /*#__PURE__*/React.createElement(\"g\", {\n fill: \"none\",\n fillRule: \"evenodd\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M549.06 48.9a14.92 14.92 0 014.16-10.36 14.2 14.2 0 014.5-3.12 13.54 13.54 0 015.54-1.14 14.3 14.3 0 0113.24 8.91 14.58 14.58 0 011.12 5.71 14.58 14.58 0 01-4.18 10.36 14.3 14.3 0 01-10.18 4.26c-1.97 0-3.82-.38-5.54-1.14a14.2 14.2 0 01-4.5-3.12 14.92 14.92 0 01-4.16-10.36zm2.92 0c0 1.69.29 3.25.86 4.69a11.16 11.16 0 005.96 6.29c1.37.61 2.86.92 4.46.92a11.04 11.04 0 008.14-3.44 11.78 11.78 0 002.42-3.77c.59-1.44.88-3 .88-4.69 0-1.68-.3-3.24-.88-4.68a11.33 11.33 0 00-6.04-6.29c-1.39-.62-2.9-.92-4.52-.92-1.6 0-3.09.3-4.46.92a11.16 11.16 0 00-5.96 6.29c-.57 1.44-.86 3-.86 4.68zm6.4-6.29c0-.88.44-1.32 1.32-1.32h4.52c1.44 0 2.59.42 3.44 1.24a4.47 4.47 0 011.28 3.37 4.36 4.36 0 01-.92 2.74c-.27.34-.56.61-.88.82-.32.22-.64.36-.96.44v.08l.12.17c.05.05.1.14.16.26.05.12.13.26.24.42l2.08 4.04c.24.46.3.82.16 1.1-.13.28-.43.42-.88.42h-.48c-.75 0-1.27-.32-1.56-.96l-2.32-4.88h-2.48v4.56c0 .86-.41 1.28-1.24 1.28h-.36c-.83 0-1.24-.42-1.24-1.28v-12.5zm5.24 5.85c.77 0 1.37-.22 1.8-.68.43-.45.64-1.08.64-1.88 0-.78-.21-1.38-.64-1.8a2.38 2.38 0 00-1.76-.64h-2.44v5h2.4zm-116.6 9.58c4.52 0 8.35.58 11.5 1.73a55.5 55.5 0 017.38 3.2c1.51.8 2.4 1.86 2.66 3.2a6.78 6.78 0 01-.66 4.26l-1.33 2.4c-.8 1.6-1.82 2.53-3.06 2.8-1.24.26-2.7.04-4.4-.67a60.07 60.07 0 00-5.44-2.2 22.27 22.27 0 00-7.45-1.13c-2.93 0-5.19.57-6.79 1.73a5.72 5.72 0 00-2.39 4.93 5.3 5.3 0 002.46 4.53 25.65 25.65 0 006.25 3.06l8.12 2.86a40.31 40.31 0 018.1 3.93 20.59 20.59 0 016.26 6.13c1.64 2.48 2.46 5.64 2.46 9.46 0 3.01-.6 5.79-1.8 8.32a19.03 19.03 0 01-5.18 6.6c-2.26 1.86-4.99 3.32-8.18 4.39s-6.74 1.6-10.64 1.6c-5.5 0-10.13-.8-13.9-2.4a49.58 49.58 0 01-8.71-4.53c-1.51-.89-2.35-2-2.53-3.33-.18-1.33.22-2.75 1.2-4.26l1.6-2.4c.97-1.42 2.05-2.22 3.25-2.4 1.2-.17 2.64.18 4.32 1.07 1.6.89 3.66 1.89 6.19 3s5.52 1.66 8.98 1.66c2.92 0 5.23-.62 6.91-1.86a5.96 5.96 0 002.53-5.07c0-1.86-.82-3.35-2.46-4.46-1.64-1.1-3.72-2.13-6.25-3.06l-8.12-3a43.1 43.1 0 01-8.1-4 20.59 20.59 0 01-6.26-6.12c-1.64-2.49-2.46-5.68-2.46-9.59 0-3.29.69-6.22 2.06-8.8a18.47 18.47 0 015.59-6.38 26.2 26.2 0 018.24-3.87c3.15-.89 6.5-1.33 10.05-1.33zm-197.71 0c4.52 0 8.35.58 11.5 1.73a55.5 55.5 0 017.38 3.2c1.51.8 2.4 1.86 2.66 3.2a6.78 6.78 0 01-.66 4.26l-1.33 2.4c-.8 1.6-1.82 2.53-3.06 2.8-1.24.26-2.7.04-4.39-.67a60.07 60.07 0 00-5.45-2.2 22.27 22.27 0 00-7.45-1.13c-2.93 0-5.19.57-6.78 1.73a5.72 5.72 0 00-2.4 4.93 5.3 5.3 0 002.46 4.53 25.65 25.65 0 006.25 3.06l8.12 2.86a40.31 40.31 0 018.11 3.93 20.59 20.59 0 016.25 6.13c1.64 2.48 2.46 5.64 2.46 9.46 0 3.01-.6 5.79-1.8 8.32a19.03 19.03 0 01-5.18 6.6 25.3 25.3 0 01-8.18 4.39 33.46 33.46 0 01-10.64 1.6c-5.5 0-10.13-.8-13.9-2.4a49.58 49.58 0 01-8.71-4.53c-1.5-.89-2.35-2-2.53-3.33-.18-1.33.22-2.75 1.2-4.26l1.6-2.4c.97-1.42 2.06-2.22 3.25-2.4 1.2-.17 2.64.18 4.33 1.07a75.6 75.6 0 006.18 3 22.2 22.2 0 008.98 1.66c2.92 0 5.23-.62 6.91-1.86a5.96 5.96 0 002.53-5.07c0-1.86-.82-3.35-2.46-4.46a29.32 29.32 0 00-6.25-3.06l-8.11-3a43.08 43.08 0 01-8.12-4 20.59 20.59 0 01-6.25-6.12c-1.64-2.49-2.46-5.68-2.46-9.59 0-3.29.69-6.22 2.06-8.8a18.47 18.47 0 015.59-6.38 26.2 26.2 0 018.25-3.87c3.14-.89 6.5-1.33 10.04-1.33zM491.83 33c3.73 0 5.59 1.86 5.59 5.6v27.43c0 .89-.02 1.67-.07 2.33-.04.67-.1 1.27-.2 1.8-.09.62-.13 1.16-.13 1.6h.27c.8-1.6 1.92-3.22 3.39-4.86a26.88 26.88 0 0111.97-7.66c2.53-.8 5.25-1.2 8.18-1.2 7.54 0 13.37 2.04 17.49 6.13s6.18 10.65 6.18 19.71v38.1c0 3.72-1.86 5.59-5.58 5.59h-5.72c-3.73 0-5.59-1.87-5.59-5.6V87.34c0-4.17-.7-7.52-2.13-10.05-1.42-2.53-4.25-3.8-8.5-3.8-2.94 0-5.62.58-8.06 1.73a18.12 18.12 0 00-6.18 4.73c-1.69 2-3 4.37-3.92 7.13a27.68 27.68 0 00-1.4 8.92v25.97c0 3.73-1.86 5.6-5.59 5.6h-5.72c-3.72 0-5.58-1.87-5.58-5.6V38.6c0-3.73 1.86-5.59 5.58-5.59h5.72zm-88.37 26.64c3.64 0 5.45 1.86 5.45 5.6v56.73c0 3.73-1.81 5.6-5.45 5.6h-5.85c-3.64 0-5.46-1.87-5.46-5.6V65.23c0-3.73 1.82-5.6 5.46-5.6h5.85zm-112.86 0c3.37 0 5.37 1.64 5.99 4.93l10.9 39.69c.18.98.34 1.86.47 2.66.14.8.29 1.56.47 2.27.18.8.3 1.55.4 2.26h.26c.1-.7.22-1.46.4-2.26.18-.71.33-1.47.47-2.27.13-.8.33-1.68.6-2.66l11.43-39.7c.63-3.19 2.66-4.79 6.12-4.79h5.06c3.28 0 5.32 1.6 6.12 4.8l11.3 39.69c.27.98.47 1.86.6 2.66s.29 1.56.47 2.27c.17.8.3 1.55.4 2.26h.26c.09-.7.22-1.46.4-2.26.18-.71.33-1.47.46-2.27.14-.8.34-1.68.6-2.66l10.78-39.7c.8-3.28 2.83-4.92 6.12-4.92h6.11c2.04 0 3.46.58 4.26 1.73.8 1.15.93 2.66.4 4.53l-17.43 57c-.88 3.11-2.97 4.67-6.25 4.67h-8.9c-3.38 0-5.46-1.6-6.26-4.8l-10.24-33.96c-.27-.89-.49-1.78-.67-2.67-.17-.88-.35-1.68-.53-2.4-.18-.8-.3-1.55-.4-2.26h-.26c-.18.71-.36 1.47-.53 2.27-.18.7-.36 1.5-.54 2.4-.17.88-.4 1.77-.66 2.66l-10.24 33.96c-.8 3.2-2.84 4.8-6.12 4.8h-9.18c-3.2 0-5.23-1.56-6.12-4.66L279.57 65.9c-.54-1.87-.38-3.38.46-4.53.84-1.15 2.24-1.73 4.19-1.73h6.38z\",\n fill: \"#4A4A49\",\n fillRule: \"nonzero\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0 146.69a87.97 87.97 0 00105.25-22.85A87.89 87.89 0 0094.42 0L69.69 29.46a68.66 68.66 0 018.46 96.75C58.71 149.38 26.7 157.11 0 146.7\",\n fill: \"url(#svg999568949a)\",\n transform: \"translate(50 20.58)\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0 146.69a87.97 87.97 0 00113.77-34.92 76.86 76.86 0 00-26.5-71.2 76.99 76.99 0 00-17.57-11.1 68.66 68.66 0 018.45 96.74C58.71 149.38 26.7 157.11 0 146.7\",\n fill: \"url(#svg999568949b)\",\n transform: \"translate(50 20.58)\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M125.82 8.56A87.97 87.97 0 0020.57 31.41 87.89 87.89 0 0031.4 155.25l24.73-29.47a68.66 68.66 0 01-8.46-96.75C67.11 5.87 99.13-1.87 125.82 8.56\",\n fill: \"url(#svg999568949c)\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M125.82 8.56A87.97 87.97 0 0012.05 43.47a76.86 76.86 0 0026.5 71.21 77 77 0 0017.58 11.1 68.66 68.66 0 01-8.46-96.75C67.11 5.87 99.13-1.87 125.82 8.56\",\n fill: \"url(#svg999568949d)\"\n}))));","const STORAGE_KEYS = {\n COOKIE_NOTIFICATION: 'cookieNotification',\n ITEMS_CLICK: 'items-click',\n SAVE_SEARCH_HINT: 'save-search-tooltip',\n SAVED_SEARCHES: 'saved-searches',\n SEARCH_RECENT: 'search-recent',\n WEB_PUSH_ACCEPTED: 'web_push_accepted',\n WEB_PUSH_SHOWN_MODALS: 'webPushModalsShown',\n SELLER_LIST_COMPACT_VIEW: 'sellerListCompactView',\n SYI_NEW_LAYOUT_INFO_DISMISSED: 'syiNewLayoutInfoDismissed',\n SYI_RESELL_SHOWN_FOR_DRAFT_IDS: 'syiResellShownForDraftIds',\n SYI_DISMISSED_AUCTION_INFO_MODAL: 'syi-dismissed-auction-info-modal',\n SYI_DISMISSED_HIGH_OPENING_BID_MODAL:\n 'syi-dismissed-high-opening-bid-modal',\n SHIPPING_CONFIRMATION_PAGE_DIGITAL_STAMP_MODAL_DISMISSED:\n 'shippingConfirmationPageDigitalStampModalDismissed',\n SELLER_LIST_MARK_AS_SENT_HINT: 'seller-list-mark-as-sent-tooltip',\n FEATURE_MODAL_MAO_ACTIVE: 'featureModalMaoActive',\n // State caches\n // NOTE: Even if these keys aren't used, we check for the values which are defined in utils/cache.js so don't remove these even if they looked unused\n CACHE_MESSAGING_BADGES: 'cache.messagingBadges',\n CACHE_SYSTEM_MESSAGES: 'cache.systemMessages',\n // Apple ID login user\n APPLE_ID_USER: 'appleId.user',\n\n USER_PROFILE: 'tradera--user-profile',\n HAS_SHOWED_MFA_VERIFICATION_MESSAGE: 'hasShowedMfaVerification'\n};\n\nconst STORAGE_VALUES = {\n SAVE_SEARCH_HINT_CLICKED: 'CLOSE_CLICKED',\n SELLER_LIST_MARK_AS_SENT_HINT_CLICKED: 'CLOSE_CLICKED',\n FEATURE_MODAL_MAO_DISMISSED_CLICKED: 'CLOSE_CLICKED'\n};\n\nexport { STORAGE_KEYS, STORAGE_VALUES };\n","/* eslint-disable better-mutation/no-mutation */\n\nimport initData from 'init-data';\nimport { createSlice } from '@reduxjs/toolkit';\nimport userData from 'tradera/apps/syi/services/user-data';\nimport { getSyiSlice } from 'tradera/apps/syi/state/selectors/syi';\nimport { isServer } from 'tradera/utils/nextjs';\n\nif (isServer) {\n // Do not remove this without also removing the disable of eslint better-mutation/no-mutation at top of file.\n throw new Error(\n 'This implementation is not compatible with SSR as global properties are shared between server instances'\n );\n}\n\nconst defaultRegionValue = 'EU';\nlet availableAllowedBuyerRegions;\nlet defaultBuyerRegion;\nlet initialState = {};\n\nconst initModuleGlobals = () => {\n if (\n !initData.pageSpecificData ||\n !initData.pageSpecificData.allowedBuyerRegions\n ) {\n return null;\n }\n\n availableAllowedBuyerRegions =\n initData.pageSpecificData.allowedBuyerRegions;\n defaultBuyerRegion = availableAllowedBuyerRegions.find(\n (r) => r.value === defaultRegionValue\n );\n\n initialState = {\n availableAllowedBuyerRegions: availableAllowedBuyerRegions,\n selectedBuyerRegion: defaultBuyerRegion.value,\n selectedBuyerRegionText: defaultBuyerRegion.text,\n availableAllowedBuyerRegionsForEditWithBids: false,\n isSetAllowedBuyerRegionToAtLeastEuEnabled:\n initData &&\n initData.featureSwitches &&\n initData.featureSwitches[\n 'international-shipping-schenker-eu-default'\n ],\n isTraderaPayEnabled: userData.payment.isTraderaPayEnabled\n };\n};\n\ninitModuleGlobals();\nconst buyerRegionSlice = createSlice({\n name: 'buyer-region',\n initialState: initialState,\n reducers: {\n setAllowedBuyerRegion: (state, action) => {\n const region = availableAllowedBuyerRegions.find(\n (r) => r.value === action.payload.allowedBuyerRegion\n );\n const { value, text } = region || defaultBuyerRegion;\n state.selectedBuyerRegion = value;\n state.selectedBuyerRegionText = text;\n\n return state;\n },\n setAvailableAllowedBuyerRegions: (state, action) => {\n state.availableAllowedBuyerRegions =\n action.payload.availableRegions;\n state.availableAllowedBuyerRegionsForEditWithBids = true;\n return state;\n }\n }\n});\n\nexport const setAvailableAllowedBuyerRegions = () => (dispatch, getState) => {\n const draftState = getSyiSlice(getState()).draft;\n const regionState = getSyiSlice(getState()).buyerRegion;\n const regions = regionState.availableAllowedBuyerRegions;\n const selectedRegion = regionState.selectedBuyerRegion;\n const filters = {\n Sweden: (region) =>\n ['Sweden', 'Nordic', 'EU', 'International'].indexOf(region.value) >\n -1,\n Nordic: (region) =>\n ['Nordic', 'International'].indexOf(region.value) > -1,\n EU: (region) => ['EU', 'International'].indexOf(region.value) > -1,\n International: (region) => ['International'].indexOf(region.value) > -1\n };\n const useFilter = draftState.draftReason === 'ChangeItemWithBids';\n const filter = (useFilter && filters[selectedRegion]) || (() => true);\n const availableRegions = regions.filter(filter);\n dispatch(\n buyerRegionSlice.actions.setAvailableAllowedBuyerRegions({\n availableRegions\n })\n );\n};\n\nexport const { setAllowedBuyerRegion } = buyerRegionSlice.actions;\n\nexport default buyerRegionSlice.reducer;\n","import type { AxiosRequestConfig } from 'axios';\nimport Axios from 'axios';\nimport type { BaseQueryFn } from '@reduxjs/toolkit/query/react';\nimport type { touchWebClient } from 'tradera/utils/http';\n\nconst getRequestConfig = (args: string | CustomAxiosRequestConfig) => {\n if (typeof args === 'string') {\n return { url: args };\n }\n\n const { body, ...config } = args;\n\n return {\n ...config,\n data: body ?? config.data\n };\n};\n\ntype HttpClientBaseQueryArgs = {\n client: typeof touchWebClient;\n};\n\ntype CustomAxiosRequestConfig = AxiosRequestConfig & {\n body?: AxiosRequestConfig['data'];\n};\n\n/**\n * A base query function for use with `createApi` that uses our own http client(s) to make requests.\n *\n * @example\n * create a new api with this base query\n *\n * import { createApi } from '@reduxjs/toolkit/query/react';\n * import { touchWebClient } from 'tradera/utils/http';\n * import { httpClientBaseQuery } from './utils/http-client-base-query';\n *\n * export const touchwebSyiApi = createApi({\n * baseQuery: httpClientBaseQuery({ client: touchWebClient }),\n * ...etc... *\n *\n * @example\n * using the api\n *\n * 1. either with just a string\n * query: (params) => `/search.json?${qs.stringify(params)}`\n *\n * 2. or with a full config (this is basically an axios config but with the added body property which you can use for convenience, data works the same way as axios does)\n * query: (parameters) => ({\n url: '/my/savedsearches/add',\n method: 'POST',\n body: parameters\n }),\n\n OR (these two will do the same thing)\n\n query: (parameters) => ({\n url: '/my/savedsearches/add',\n method: 'POST',\n data: parameters\n }),\n */\nexport function httpClientBaseQuery({\n client\n}: HttpClientBaseQueryArgs): BaseQueryFn<\n CustomAxiosRequestConfig | string,\n unknown,\n unknown\n> {\n return async (args, api) => {\n try {\n const requestConfig = getRequestConfig(args);\n\n const result = await client.request({\n ...requestConfig,\n signal: api.signal\n });\n\n return { data: result.data };\n } catch (error) {\n if (Axios.isAxiosError(error)) {\n return {\n error: {\n status: error.response?.status,\n data: error.response?.data || error.message\n }\n };\n }\n\n return {\n error\n };\n }\n };\n}\n","export const scrollToInitialScroll = () => {\n const initialScrollEls = document.querySelectorAll('[data-initial-scroll]');\n if (initialScrollEls.length > 0) {\n window.scrollTo(0, initialScrollEls[0].offsetTop || 0);\n }\n};\n","export const findKeysByPurchaseOrderId = (items) => (purchaseOrderId) => {\n return Object.keys(items).filter(\n (key) => items[key].transaction.purchaseOrderId === purchaseOrderId\n );\n};\n\nexport const findKeysByTransactionId = (items) => (transactionId) => {\n return Object.keys(items).filter(\n (key) => items[key].transaction.transactionId === transactionId\n );\n};\n\nexport const findKeysByItemId = (items) => (itemId) => {\n return Object.keys(items).filter((key) => items[key].itemId === itemId);\n};\n","/* eslint-disable better-mutation/no-mutation */\n\nimport myTraderaItemsSelector from './items';\nimport { logger } from 'packages/logger';\nimport {\n findKeysByPurchaseOrderId,\n findKeysByTransactionId,\n findKeysByItemId\n} from '../../helpers/commands-helper.js';\nimport { isServer } from 'tradera/utils/nextjs';\n\nif (isServer) {\n // Do not remove this without also removing the disable of eslint better-mutation/no-mutation at top of file.\n throw new Error(\n 'This implementation is not compatible with SSR as global properties are shared between server instances'\n );\n}\n\nconst getSoldItemStateFor = (sellerState) => {\n if (sellerState.shipped && sellerState.feedbackLeft) {\n return 'Done';\n }\n if (sellerState.shipped) {\n return 'Shipped';\n }\n return sellerState.paid ? 'Paid' : 'NotPaid';\n};\n\nconst updateStateAndLabels = (item, listViewType, messagingParticipation) => {\n if (listViewType === undefined) {\n try {\n throw 'updateStateAndLabels: listViewType === undefined, ' + item;\n } catch (e) {\n logger(e);\n }\n }\n item.transaction.sellerState.state = getSoldItemStateFor(\n item.transaction.sellerState\n );\n return myTraderaItemsSelector.getSoldItem(\n item,\n listViewType,\n messagingParticipation\n );\n};\n\nconst updateUnsoldLabelsAndActions = (item, listViewType) => {\n if (listViewType === undefined) {\n try {\n throw (\n 'updateUnsoldLabelsAndActions: listViewType === undefined, ' +\n item\n );\n } catch (e) {\n logger(e);\n }\n }\n return myTraderaItemsSelector.getUnsoldItem(item, listViewType);\n};\n\nconst setPaidState =\n (flag, listViewType, messagingParticipation) => (items) => (keys) => {\n return keys.map((key) => {\n const item = items[key];\n if (!item) {\n try {\n throw `setPaidState failed. tried to find key ${key} in ${JSON.stringify(\n items\n )}`;\n } catch (e) {\n logger(e);\n }\n }\n\n item.transaction.sellerState.paid = flag;\n return updateStateAndLabels(\n item,\n listViewType,\n messagingParticipation\n );\n });\n };\n\nconst setShippedState = (flag, listViewType) => (items) => (key) => {\n const item = items[key];\n if (!item) {\n try {\n throw `setShippedState failed. tried to find key ${key} in ${JSON.stringify(\n items\n )}`;\n } catch (e) {\n logger(e);\n }\n }\n\n item.transaction.sellerState.shipped = flag;\n return updateStateAndLabels(item, listViewType);\n};\n\nconst setTransactionHiddenState = (flag, listViewType) => (items) => (key) => {\n const item = items[key];\n if (!item) {\n try {\n throw `setTransactionHiddenState failed. tried to find key ${key} in ${JSON.stringify(\n items\n )}`;\n } catch (err) {\n logger(err);\n }\n return [];\n }\n\n item.transaction.sellerState.hidden = flag;\n return updateStateAndLabels(item, listViewType);\n};\n\nconst setUnsoldItemHiddenState =\n (flag, listViewType) => (items, memberId) => (key) => {\n const item = items[key];\n if (!item) {\n try {\n throw `setUnsoldItemHiddenState failed. tried to find key ${key} in ${JSON.stringify(\n items\n )}`;\n } catch (err) {\n logger(err);\n }\n return [];\n }\n\n if (!item.hiddenByMember?.includes(memberId)) {\n item.removeFromList = true;\n }\n return updateUnsoldLabelsAndActions(item, listViewType, memberId);\n };\n\nconst setFeedback = (flag, listViewType) => (items) => (key) => {\n const item = items[key];\n if (!item) {\n try {\n throw `setFeedback failed. tried to find key ${key} in ${JSON.stringify(\n items\n )}`;\n } catch (err) {\n logger(err);\n }\n return [];\n }\n\n item.transaction.sellerState.feedbackLeft = flag;\n return updateStateAndLabels(item, listViewType);\n};\n\nconst setShippingBookedState = (flag, listViewType) => (items) => (key) => {\n const item = items[key];\n if (!item) {\n try {\n throw `setShippingBookedState failed. tried to find key ${key} in ${JSON.stringify(\n items\n )}`;\n } catch (err) {\n logger(err);\n }\n return [];\n }\n\n item.transaction.sellerState.shippingBooked = flag;\n return updateStateAndLabels(item, listViewType);\n};\n\nconst setShippingDeletedState = (listViewType) => (items) => (key) => {\n const item = items[key];\n if (!item) {\n try {\n throw `setShippingDeletedState failed. tried to find key ${key} in ${JSON.stringify(\n items\n )}`;\n } catch (err) {\n logger(err);\n }\n return [];\n }\n\n item.transaction.hasUnpaidShipping = false;\n return updateStateAndLabels(item, listViewType);\n};\n\nconst setItemsHasRestartedChild = (flag, listViewType) => (items) => (key) => {\n const item = items[key];\n if (!item) {\n try {\n throw `setItemHasRestartedChild failed. tried to find key ${key} in ${JSON.stringify(\n items\n )}`;\n } catch (err) {\n logger(err);\n }\n return [];\n }\n\n item.listing.restart.hasRestartedChild = flag;\n return updateUnsoldLabelsAndActions(item, listViewType);\n};\n\nexport const markAsPaidBySellerReducer = (state, action) => {\n const stateItems = { ...state.itemsByID };\n const updateChangedItems = setPaidState(\n true,\n action.payload.listViewType,\n action.payload.messagingParticipation\n )(stateItems);\n const findUpdatedKeysByPurchaseOrderId =\n findKeysByPurchaseOrderId(stateItems);\n const updatedOrders = action.payload.ids\n .map(findUpdatedKeysByPurchaseOrderId)\n .map(updateChangedItems);\n\n updatedOrders.forEach((updatedItems) => {\n updatedItems.forEach((updatedItem) => {\n stateItems[updatedItem.key] = updatedItem;\n });\n });\n\n return stateItems;\n};\n\nexport const unmarkAsPaidBySellerReducer = (state, action) => {\n const stateItems = { ...state.itemsByID };\n const updateChangedItems = setPaidState(\n false,\n action.payload.listViewType,\n action.payload.messagingParticipation\n )(stateItems);\n const findUpdatedKeysByPurchaseOrderId =\n findKeysByPurchaseOrderId(stateItems);\n const updatedOrders = action.payload.ids\n .map(findUpdatedKeysByPurchaseOrderId)\n .map(updateChangedItems);\n\n updatedOrders.forEach((updatedItems) => {\n updatedItems.forEach((updatedItem) => {\n stateItems[updatedItem.key] = updatedItem;\n });\n });\n\n return stateItems;\n};\n\nexport const markAsShippedReducer = (state, action) => {\n const stateItems = { ...state.itemsByID };\n const updateChangedItems = setShippedState(\n true,\n action.payload.listViewType\n )(stateItems);\n const findUpdatedKeysByTransactionId = findKeysByTransactionId(stateItems);\n const updatedItems = action.payload.ids\n .map(findUpdatedKeysByTransactionId)\n .map(updateChangedItems);\n\n updatedItems.forEach((updatedItem) => {\n stateItems[updatedItem.key] = updatedItem;\n });\n\n return stateItems;\n};\n\nexport const unmarkAsShippedReducer = (state, action) => {\n const stateItems = { ...state.itemsByID };\n const updateChangedItems = setShippedState(\n false,\n action.payload.listViewType\n )(stateItems);\n const findUpdatedKeysByTransactionId = findKeysByTransactionId(stateItems);\n const updatedItems = action.payload.ids\n .map(findUpdatedKeysByTransactionId)\n .map(updateChangedItems);\n\n updatedItems.forEach((updatedItem) => {\n stateItems[updatedItem.key] = updatedItem;\n });\n\n return stateItems;\n};\n\nexport const markTransactionAsHiddenBySellerReducer = (state, action) => {\n const updatedItems = { ...state.itemsByID };\n\n const updateChangedItems = setTransactionHiddenState(\n true,\n action.payload.listViewType\n )(updatedItems);\n const findUpdatedKeysByPurchaseOrderId =\n findKeysByPurchaseOrderId(updatedItems);\n action.payload.ids\n .flatMap(findUpdatedKeysByPurchaseOrderId)\n .map(updateChangedItems);\n return updatedItems;\n};\n\nexport const markTransactionAsShownBySellerReducer = (state, action) => {\n const updatedItems = { ...state.itemsByID };\n\n const updateChangedItems = setTransactionHiddenState(\n false,\n action.payload.listViewType\n )(updatedItems);\n const findUpdatedKeysByPurchaseOrderId =\n findKeysByPurchaseOrderId(updatedItems);\n action.payload.ids\n .flatMap(findUpdatedKeysByPurchaseOrderId)\n .map(updateChangedItems);\n return updatedItems;\n};\n\nexport const markItemAsHiddenReducer = (state, action) => {\n const updatedItems = { ...state.itemsByID };\n const updateChangedItems = setUnsoldItemHiddenState(\n true,\n action.payload.listViewType\n )(updatedItems, state.currentMemberId);\n const findUpdatedKeysByItemId = findKeysByItemId(updatedItems);\n action.payload.ids.map(findUpdatedKeysByItemId).map(updateChangedItems);\n return updatedItems;\n};\n\nexport const markItemAsShownReducer = (state, action) => {\n const updatedItems = { ...state.itemsByID };\n const updateChangedItems = setUnsoldItemHiddenState(\n false,\n action.payload.listViewType\n )(updatedItems);\n const findUpdatedKeysByItemId = findKeysByItemId(updatedItems);\n action.payload.ids.map(findUpdatedKeysByItemId).map(updateChangedItems);\n return updatedItems;\n};\n\nexport const feedbackLeftBySeller = (state, action) => {\n const stateItems = { ...state.itemsByID };\n const updateChangedItems = setFeedback(\n true,\n action.payload.listViewType\n )(stateItems);\n const findUpdatedKeysByTransactionId = findKeysByTransactionId(stateItems);\n const updatedItems = [action.payload.id]\n .map(findUpdatedKeysByTransactionId)\n .map(updateChangedItems);\n\n updatedItems.forEach((updatedItem) => {\n stateItems[updatedItem.key] = updatedItem;\n });\n\n return stateItems;\n};\n\nexport const markAsShippingBooked = (state, action) => {\n const stateItems = { ...state.itemsByID };\n const updateChangedItems = setShippingBookedState(\n true,\n action.payload.listViewType\n )(stateItems);\n\n const findUpdatedKeysByTransactionId = findKeysByTransactionId(stateItems);\n const updatedItems = action.payload.ids\n .map(findUpdatedKeysByTransactionId)\n .map(updateChangedItems);\n\n updatedItems.forEach((updatedItem) => {\n stateItems[updatedItem.key] = updatedItem;\n });\n\n return stateItems;\n};\n\nexport const unmarkAsShippingBooked = (state, action) => {\n const stateItems = { ...state.itemsByID };\n const updateChangedItems = setShippingBookedState(\n false,\n action.payload.listViewType\n )(stateItems);\n const findUpdatedKeysByTransactionId = findKeysByTransactionId(stateItems);\n const updatedItems = action.payload.ids\n .map(findUpdatedKeysByTransactionId)\n .map(updateChangedItems);\n\n updatedItems.forEach((updatedItem) => {\n stateItems[updatedItem.key] = updatedItem;\n });\n\n return stateItems;\n};\n\nexport const deleteShipment = (state, action) => {\n const stateItems = { ...state.itemsByID };\n const updateChangedItems = setShippingDeletedState(\n action.payload.listViewType\n )(stateItems);\n const findUpdatedKeysByPurchaseOrderId =\n findKeysByPurchaseOrderId(stateItems);\n\n const updatedItems = [action.payload.purchaseOrderId]\n .map(findUpdatedKeysByPurchaseOrderId)\n .map(updateChangedItems);\n\n updatedItems.forEach((updatedItem) => {\n stateItems[updatedItem.key] = updatedItem;\n });\n\n return stateItems;\n};\n\nexport const setRestartedReducer = (state, action) => {\n const stateItems = { ...state.itemsByID };\n const updateChangedItems = setItemsHasRestartedChild(\n true,\n action.payload.listViewType\n )(stateItems);\n const findUpdatedKeysByItemId = findKeysByItemId(stateItems);\n const updatedItems = action.payload.itemIds\n .map(findUpdatedKeysByItemId)\n .map(updateChangedItems);\n updatedItems.forEach((updatedItem) => {\n stateItems[updatedItem.key] = updatedItem;\n });\n return stateItems;\n};\n\nexport const feedbacksLeftBySeller = (state, action) => {\n const stateItems = { ...state.itemsByID };\n const updateChangedItems = setFeedback(\n true,\n action.payload.listViewType\n )(stateItems);\n const findUpdatedKeysByTransactionId = findKeysByTransactionId(stateItems);\n const updatedItems = action.payload.submittables\n .map((submittable) => submittable.transactionId)\n .map(findUpdatedKeysByTransactionId)\n .map(updateChangedItems);\n\n updatedItems.forEach((updatedItem) => {\n stateItems[updatedItem.key] = updatedItem;\n });\n\n return stateItems;\n};\n","/* eslint-disable better-mutation/no-mutation */\n\nimport myTraderaItemsSelector from './items';\nimport { logger } from 'packages/logger';\nimport {\n findKeysByPurchaseOrderId,\n findKeysByTransactionId\n} from '../../helpers/commands-helper.js';\nimport { isServer } from 'tradera/utils/nextjs';\n\nif (isServer) {\n // Do not remove this without also removing the disable of eslint better-mutation/no-mutation at top of file.\n throw new Error(\n 'This implementation is not compatible with SSR as global properties are shared between server instances'\n );\n}\n\nconst updateStateAndLabels = (item, listViewType) => {\n if (listViewType === undefined) {\n try {\n throw 'updateStateAndLabels: listViewType === undefined, ' + item;\n } catch (e) {\n logger(e);\n }\n }\n return myTraderaItemsSelector.getPurchasedItem(item, listViewType);\n};\n\nconst setPaidState =\n (flag, listViewType, messagingParticipation) => (items) => (keys) => {\n return keys.map((key) => {\n const item = items[key];\n if (!item) {\n try {\n throw `setPaidState failed. tried to find key ${key} in ${JSON.stringify(\n items\n )}`;\n } catch (e) {\n logger(e);\n }\n }\n\n item.transaction.buyerState.paid = flag;\n return updateStateAndLabels(\n item,\n listViewType,\n messagingParticipation\n );\n });\n };\n\nconst setTransactionHiddenState = (flag, listViewType) => (items) => (key) => {\n const item = items[key];\n if (!item) {\n try {\n throw `setTransactionHiddenState failed. tried to find key ${key} in ${JSON.stringify(\n items\n )}`;\n } catch (err) {\n logger(err);\n }\n return [];\n }\n\n item.transaction.buyerState.hidden = flag;\n return updateStateAndLabels(item, listViewType);\n};\n\nconst setFeedback = (flag, listViewType) => (items) => (key) => {\n const item = items[key];\n if (!item) {\n try {\n throw `setFeedback failed. tried to find key ${key} in ${JSON.stringify(\n items\n )}`;\n } catch (err) {\n logger(err);\n }\n return [];\n }\n\n item.transaction.buyerState.feedbackLeft = flag;\n return updateStateAndLabels(item, listViewType);\n};\n\nexport const markAsPaidByBuyerReducer = (state, action) => {\n const stateItems = { ...state.itemsByID };\n const updateChangedItems = setPaidState(\n true,\n action.payload.listViewType\n )(stateItems);\n const findUpdatedKeysByPurchaseOrderId =\n findKeysByPurchaseOrderId(stateItems);\n const updatedOrders = action.payload.ids\n .map(findUpdatedKeysByPurchaseOrderId)\n .map(updateChangedItems);\n\n updatedOrders.forEach((updatedItems) => {\n updatedItems.forEach((updatedItem) => {\n stateItems[updatedItem.key] = updatedItem;\n });\n });\n\n return stateItems;\n};\n\nexport const feedbackLeftByBuyer = (state, action) => {\n const stateItems = { ...state.itemsByID };\n const updateChangedItems = setFeedback(\n true,\n action.payload.listViewType\n )(stateItems);\n const findUpdatedKeysByTransactionId = findKeysByTransactionId(stateItems);\n const updatedItems = [action.payload.id]\n .map(findUpdatedKeysByTransactionId)\n .map(updateChangedItems);\n\n updatedItems.forEach((updatedItem) => {\n stateItems[updatedItem.key] = updatedItem;\n });\n\n return stateItems;\n};\n\nexport const unmarkAsPaidByBuyerReducer = (state, action) => {\n const stateItems = { ...state.itemsByID };\n const updateChangedItems = setPaidState(\n false,\n action.payload.listViewType\n )(stateItems);\n const findUpdatedKeysByPurchaseOrderId =\n findKeysByPurchaseOrderId(stateItems);\n const updatedOrders = action.payload.ids\n .map(findUpdatedKeysByPurchaseOrderId)\n .map(updateChangedItems);\n\n updatedOrders.forEach((updatedItems) => {\n updatedItems.forEach((updatedItem) => {\n stateItems[updatedItem.key] = updatedItem;\n });\n });\n\n return stateItems;\n};\n\nexport const markTransactionAsHiddenByBuyerReducer = (state, action) => {\n const updatedItems = { ...state.itemsByID };\n\n const updateChangedItems = setTransactionHiddenState(\n true,\n action.payload.listViewType\n )(updatedItems);\n const findUpdatedKeysByTransactionId =\n findKeysByTransactionId(updatedItems);\n action.payload.ids\n .map(findUpdatedKeysByTransactionId)\n .map(updateChangedItems);\n return updatedItems;\n};\n\nexport const markTransactionAsShownByBuyerReducer = (state, action) => {\n const updatedItems = { ...state.itemsByID };\n\n const updateChangedItems = setTransactionHiddenState(\n false,\n action.payload.listViewType\n )(updatedItems);\n const findUpdatedKeysByTransactionId =\n findKeysByTransactionId(updatedItems);\n action.payload.ids\n .map(findUpdatedKeysByTransactionId)\n .map(updateChangedItems);\n return updatedItems;\n};\n\nexport const feedbacksLeftByBuyer = (state, action) => {\n const stateItems = { ...state.itemsByID };\n const updateChangedItems = setFeedback(\n true,\n action.payload.listViewType\n )(stateItems);\n const findUpdatedKeysByTransactionId = findKeysByTransactionId(stateItems);\n const updatedItems = action.payload.submittables\n .map((submittable) => submittable.transactionId)\n .map(findUpdatedKeysByTransactionId)\n .map(updateChangedItems);\n\n updatedItems.forEach((updatedItem) => {\n stateItems[updatedItem.key] = updatedItem;\n });\n\n return stateItems;\n};\n","/* eslint-disable better-mutation/no-mutation */\n\nimport myTraderaItems from '../actions/my-tradera-items';\nimport myTraderaItemsSelector from '../selectors/items';\nimport { listActions } from '../../helpers/list-helper';\nimport { actionTypes as purchaseOrderActionTypes } from '../action-types/purchase-order';\n\nimport {\n markAsPaidBySellerReducer,\n unmarkAsPaidBySellerReducer,\n markAsShippedReducer,\n unmarkAsShippedReducer,\n markItemAsHiddenReducer,\n markItemAsShownReducer,\n markTransactionAsHiddenBySellerReducer,\n markTransactionAsShownBySellerReducer,\n feedbackLeftBySeller,\n unmarkAsShippingBooked,\n deleteShipment,\n setRestartedReducer,\n feedbacksLeftBySeller,\n markAsShippingBooked\n} from '../selectors/seller-commands';\n\nimport {\n markAsPaidByBuyerReducer,\n feedbackLeftByBuyer,\n feedbacksLeftByBuyer,\n unmarkAsPaidByBuyerReducer,\n markTransactionAsHiddenByBuyerReducer,\n markTransactionAsShownByBuyerReducer\n} from '../selectors/buyer-commands';\n\nimport { findKeysByPurchaseOrderId } from '../../helpers/commands-helper.js';\nimport { isServer } from 'tradera/utils/nextjs';\n\nif (isServer) {\n // Do not remove this without also removing the disable of eslint better-mutation/no-mutation at top of file.\n throw new Error(\n 'This implementation is not compatible with SSR as global properties are shared between server instances'\n );\n}\n\nexport default (state, action) => {\n state = state || {};\n\n const updateItems = () => {\n return {\n ...state,\n ...myTraderaItemsSelector.getItemsInOrder(\n action.payload.value,\n action.payload.listViewType,\n action.payload.value.currentMemberId,\n action.payload.memberMessagingParticipation,\n action.payload.page\n )\n };\n };\n\n /**\n * Called when server has an error\n * @returns {object} with basic structure needed for application.\n */\n const updateItemsWithError = () => ({\n ...state,\n itemsByID: {},\n itemsOrderedByID: [],\n statistics: {\n values: []\n },\n paging: {\n ...state.paging,\n totalItems: 0\n }\n });\n\n /**\n * Tells State which More Menu to open / close;\n * @returns {object} - new state\n */\n const openMore = () => ({\n ...state,\n isSubMenuOpen:\n action.payload === state.isSubMenuOpen ? false : action.payload\n });\n\n /**\n * Selects a specific item for bulk action;\n * @returns {object} new state\n */\n const selectItem = () => {\n let bulkChecked = false;\n if (\n !state.selectedCheckboxes ||\n state.selectedCheckboxes.length === 0\n ) {\n return {\n ...state,\n selectedCheckboxes: [action.payload.id],\n bulkChecked: bulkChecked\n };\n } else {\n let chosenBoxes = [...state.selectedCheckboxes];\n if (state.selectedCheckboxes.indexOf(action.payload.id) > -1) {\n bulkChecked = false;\n chosenBoxes = chosenBoxes.filter(\n (id) => id !== action.payload.id\n );\n } else {\n chosenBoxes.push(action.payload.id);\n }\n\n return {\n ...state,\n selectedCheckboxes: chosenBoxes,\n bulkChecked: bulkChecked\n };\n }\n };\n\n /**\n * Selects all items for bulk action\n * @returns {object} new state\n */\n const selectAllItems = () => {\n const checkIfActive = (item) => {\n const actions = listActions(\n action.payload.listViewType,\n action.payload.memberId,\n action.payload.selectedFilterBar,\n 0,\n () => {}\n );\n return actions.isCheckboxActive(item);\n };\n if (action.payload.select === true || !state.bulkChecked) {\n const allItemsWithBulk = Object.keys(state.itemsByID)\n .filter((itemId) => checkIfActive(state.itemsByID[itemId]))\n .map((id) => {\n return parseInt(id, 10);\n });\n return {\n ...state,\n selectedCheckboxes: allItemsWithBulk,\n bulkChecked: true\n };\n }\n\n return {\n ...state,\n selectedCheckboxes: [],\n bulkChecked: false\n };\n };\n\n const openDelListingItem = () => ({\n ...state,\n isOpenDeleteItem:\n action.payload === false ? false : !state.isOpenDeleteItem\n });\n\n const removeAllSelected = () => ({\n ...state,\n selectedCheckboxes: [],\n bulkChecked: false\n });\n\n const removeItems = () => {\n const newItemsOrderedByID = state.itemsOrderedByID.filter((id) =>\n action.payload.some(\n (element) => element.toString() === id.toString()\n )\n ? false\n : true\n );\n const newItems = {};\n newItemsOrderedByID.map(\n (item) => (newItems[item] = state.itemsByID[item])\n );\n return {\n ...state,\n itemsByID: newItems,\n itemsOrderedByID: newItemsOrderedByID\n };\n };\n\n const setNewShippingPrice = () => {\n const items = { ...state.itemsByID };\n const itemKeysForPurchaseOrderId = findKeysByPurchaseOrderId(items)(\n action.purchaseOrderId\n );\n const shippingDiscount = {\n shippingProvider: action.shippingProvider,\n price: action.newPrice\n };\n itemKeysForPurchaseOrderId.map((key) => {\n items[key].transaction.shippingDiscount = shippingDiscount;\n });\n return {\n ...state,\n itemsByID: items\n };\n };\n\n /**\n * Reset state to empty.\n */\n const resetItems = () => ({\n ...state,\n itemsByID: [],\n itemsOrderedByID: [],\n paging: {\n ...state.paging,\n totalItems: 0\n }\n });\n\n const poMarkedAsPaidBySeller = () => ({\n ...state,\n itemsByID: markAsPaidBySellerReducer(state, action)\n });\n const poUnmarkedAsPaidBySeller = () => ({\n ...state,\n itemsByID: unmarkAsPaidBySellerReducer(state, action)\n });\n const markedAsShippedBySeller = () => ({\n ...state,\n itemsByID: markAsShippedReducer(state, action)\n });\n const unmarkedAsShippedBySeller = () => ({\n ...state,\n itemsByID: unmarkAsShippedReducer(state, action)\n });\n const poHiddenBySeller = () => ({\n ...state,\n itemsByID: markTransactionAsHiddenBySellerReducer(state, action)\n });\n const poShownBySeller = () => ({\n ...state,\n itemsByID: markTransactionAsShownBySellerReducer(state, action)\n });\n const itemHidden = () => ({\n ...state,\n itemsByID: markItemAsHiddenReducer(state, action)\n });\n const itemShown = () => ({\n ...state,\n itemsByID: markItemAsShownReducer(state, action)\n });\n const feedbackLeftBySellerReducer = () => ({\n ...state,\n itemsByID: feedbackLeftBySeller(state, action)\n });\n const feedbackLeftByBuyerReducer = () => ({\n ...state,\n itemsByID: feedbackLeftByBuyer(state, action)\n });\n const poMarkedAsShippingBooked = () => ({\n ...state,\n itemsByID: markAsShippingBooked(state, action)\n });\n const poUnmarkedAsShippingBooked = () => ({\n ...state,\n itemsByID: unmarkAsShippingBooked(state, action)\n });\n const poShipmentDeleted = () => ({\n ...state,\n itemsByID: deleteShipment(state, action)\n });\n const poMarkedAsPaidByBuyer = () => ({\n ...state,\n itemsByID: markAsPaidByBuyerReducer(state, action)\n });\n const poUnmarkedAsPaidByBuyer = () => ({\n ...state,\n itemsByID: unmarkAsPaidByBuyerReducer(state, action)\n });\n const poHiddenByBuyer = () => ({\n ...state,\n itemsByID: markTransactionAsHiddenByBuyerReducer(state, action)\n });\n const poShownByBuyer = () => ({\n ...state,\n itemsByID: markTransactionAsShownByBuyerReducer(state, action)\n });\n const setRestarted = () => ({\n ...state,\n itemsByID: setRestartedReducer(state, action)\n });\n const feedbacksLeftBySellerReducer = () => ({\n ...state,\n itemsByID: feedbacksLeftBySeller(state, action)\n });\n const feedbacksLeftByBuyerReducer = () => ({\n ...state,\n itemsByID: feedbacksLeftByBuyer(state, action)\n });\n\n const def = () => state;\n\n const reducers = {\n [myTraderaItems.actionTypes.BUYER_ACTIVE_ITEMS_HIDE]: poHiddenByBuyer,\n [myTraderaItems.actionTypes.BUYER_ACTIVE_ITEMS_SHOW]: poShownByBuyer,\n [myTraderaItems.actionTypes.UPDATE_ITEMS]: updateItems,\n [myTraderaItems.actionTypes.UPDATE_ITEMS_WITH_ERROR]:\n updateItemsWithError,\n [myTraderaItems.actionTypes.OPEN_MORE]: openMore,\n [myTraderaItems.actionTypes.SELECT_ITEM]: selectItem,\n [myTraderaItems.actionTypes.SELECT_ALL_ITEMS]: selectAllItems,\n [myTraderaItems.actionTypes.OPEN_DEL_LISTING_ITEM]: openDelListingItem,\n [myTraderaItems.actionTypes.REMOVE_ALL_SELECTED]: removeAllSelected,\n [myTraderaItems.actionTypes.REMOVE_ITEMS]: removeItems,\n [myTraderaItems.actionTypes.PURCHASE_ORDERS_MARKED_AS_PAID_BY_SELLER]:\n poMarkedAsPaidBySeller,\n [myTraderaItems.actionTypes.PURCHASE_ORDERS_MARKED_AS_PAID_BY_BUYER]:\n poMarkedAsPaidByBuyer,\n [myTraderaItems.actionTypes.PURCHASE_ORDERS_UNMARKED_AS_PAID_BY_SELLER]:\n poUnmarkedAsPaidBySeller,\n [myTraderaItems.actionTypes.PURCHASE_ORDERS_UNMARKED_AS_PAID_BY_BUYER]:\n poUnmarkedAsPaidByBuyer,\n [myTraderaItems.actionTypes\n .PURCHASE_ORDERS_MARKED_AS_SHIPPED_BY_SELLER]:\n markedAsShippedBySeller,\n [myTraderaItems.actionTypes\n .PURCHASE_ORDERS_UNMARKED_AS_SHIPPED_BY_SELLER]:\n unmarkedAsShippedBySeller,\n [myTraderaItems.actionTypes.PURCHASE_ORDERS_HIDDEN_BY_SELLER]:\n poHiddenBySeller,\n [myTraderaItems.actionTypes.PURCHASE_ORDERS_HIDDEN_BY_BUYER]:\n poHiddenByBuyer,\n [myTraderaItems.actionTypes.PURCHASE_ORDERS_SHOWN_BY_SELLER]:\n poShownBySeller,\n [myTraderaItems.actionTypes.PURCHASE_ORDERS_SHOWN_BY_BUYER]:\n poShownByBuyer,\n [myTraderaItems.actionTypes.ITEM_HIDDEN]: itemHidden,\n [myTraderaItems.actionTypes.ITEM_SHOWN]: itemShown,\n [myTraderaItems.actionTypes.FEEDBACK_LEFT_BY_SELLER]:\n feedbackLeftBySellerReducer,\n [myTraderaItems.actionTypes.FEEDBACK_LEFT_BY_BUYER]:\n feedbackLeftByBuyerReducer,\n [myTraderaItems.actionTypes.PURCHASE_ORDERS_MARKED_AS_SHIPPING_BOOKED]:\n poMarkedAsShippingBooked,\n [myTraderaItems.actionTypes\n .PURCHASE_ORDERS_UNMARKED_AS_SHIPPING_BOOKED]:\n poUnmarkedAsShippingBooked,\n [myTraderaItems.actionTypes.SHIPMENT_DELETED]: poShipmentDeleted,\n [myTraderaItems.actionTypes.RESET_ITEMS]: resetItems,\n [myTraderaItems.actionTypes.SET_RESTARTED]: setRestarted,\n [purchaseOrderActionTypes.PURCHASE_ORDERS_FEEDBACK_LEFT_BY_SELLER]:\n feedbacksLeftBySellerReducer,\n [purchaseOrderActionTypes.PURCHASE_ORDERS_FEEDBACK_LEFT_BY_BUYER]:\n feedbacksLeftByBuyerReducer,\n [myTraderaItems.actionTypes.SET_NEW_SHIPPING_PRICE]: setNewShippingPrice\n };\n\n return !reducers[action.type] ? def() : reducers[action.type]();\n};\n\nexport const selectMyTraderaItemsState = (state) =>\n state.views.myTradera.myTraderaItems;\n","import React, { useEffect, useRef } from 'react';\nimport PropTypes from 'prop-types';\n\nimport LoadingIcon from '@tradera/blueprint/theme/icons2/loading.svg?jsx';\nimport LoadingPortal from 'tradera/components/portals/loading-portal';\n\nconst LoaderComponent = ({\n className,\n children,\n visibleClassName,\n ...otherProps\n}) => {\n const loaderRef = useRef(null);\n useEffect(() => {\n const timeout = setTimeout(() => {\n loaderRef?.current?.classList.add(visibleClassName);\n }, 0);\n return () => clearTimeout(timeout);\n }, [visibleClassName]);\n\n return (\n
\n {children}\n
\n );\n};\n\n// Global loading with overlay that covers the whole page, except top menu\nexport const GlobalLoader = () => (\n \n \n \n);\n\n// Legacy global loader that uses portal\nexport const PortalLoader = () => (\n \n \n \n);\n\n// Local loader that covers its closest positioned parent\n// Tip: use position-relative class for containing parent\nexport const LocalLoader = ({ className = '', ...otherProps }) => (\n \n \n \n);\n\nconst Loader = ({ usePortal }) => {\n return usePortal ? : ;\n};\n\nLoader.propTypes = {\n usePortal: PropTypes.bool.isRequired\n};\n\nLoader.defaultProps = {\n usePortal: true\n};\n\nexport default Loader;\n","import { touchWebClient } from 'tradera/utils/http';\nimport featureToggles from 'tradera/apps/my-tradera/app/utils/feature-toggles';\nimport { isServer } from 'tradera/utils/nextjs';\n\nvar initData = (!isServer && window.sellingGlobalData) || {};\nvar defaultDrafts = initData.defaultDrafts;\n\nconst resetUnwantedProperties = (draft) => {\n return { ...draft, itemId: 0 };\n};\n\nconst isNullOrUndefined = (val) => val === null || val === undefined;\n\nconst getType = (draft) => {\n var hasOpeningPrice = !isNullOrUndefined(draft.openingBid);\n var hasFixedPrice = !isNullOrUndefined(draft.fixedPrice);\n if (hasOpeningPrice && !hasFixedPrice) {\n return 'Auction';\n }\n\n if (hasOpeningPrice && hasFixedPrice) {\n return 'AuctionBin';\n }\n\n if (!hasOpeningPrice && hasFixedPrice) {\n return 'PureBin';\n }\n\n return 'Unknown';\n};\n\nconst ensureApplicationId = (draft) => {\n return {\n ...draft,\n metadata: { ...draft.metadata, applicationId: 'SYI-Riot' }\n };\n};\n\nconst isPureBin = (draft) => draft && getType(draft) === 'PureBin';\n\nconst isAuctionBin = (draft) => draft && getType(draft) === 'AuctionBin';\n\nconst getDefaultTemplateValue = (propertyName) =>\n defaultDrafts.newTemplate[propertyName];\n\nconst loadDraft = async (draftId) => {\n if (!draftId) {\n throw 'missing draftId';\n }\n\n const response = await touchWebClient.get(`/selling/api/drafts/${draftId}`);\n return response.data.draft;\n};\n\nconst loadDefaultDraft = () => ({\n ...defaultDrafts.newItem,\n allowedBuyerRegion: undefined\n});\n\nconst loadDefaultTemplateDraft = () => ({\n ...defaultDrafts.newTemplate,\n allowedBuyerRegion: undefined\n});\n\nconst loadDraftFromTemplate = async (templateId) => {\n try {\n const response = await touchWebClient.post(\n '/selling/api/drafts/from-template',\n {\n templateId\n }\n );\n const draft = response.data.draft;\n const draftWithoutItemId = resetUnwantedProperties(draft);\n return { ...draftWithoutItemId, draftReason: 'Template' };\n } catch {\n throw 'Could not load the draft from the template';\n }\n};\n\nconst saveDraft = async (draft) => {\n if (draft.draftReason === 'Template') {\n // Drafts for Templates cannot be saved\n throw 'Cannot save Template draft';\n }\n\n const ensuredDraft = ensureApplicationId(draft);\n\n const response = await touchWebClient.post(\n '/selling/api/drafts/',\n ensuredDraft\n );\n\n if (response.data.errorCode || !response.data.draftId) {\n throw response.data;\n }\n\n return response.data;\n};\n\nconst resolveImages = (syiSlice) => {\n const images = syiSlice.images.slots\n .map((slot) => {\n if (slot.imageId == null) {\n return null;\n }\n if (slot.isListingImage) {\n return {\n draftImage: null,\n listingImage: {\n imageId: slot.imageId,\n rotationDegrees: slot.rotationDegrees,\n filename: slot.filename,\n imageGroupId: slot.imageGroupId,\n isUploadedBySystem: slot.isUploadedBySystem\n },\n imageUrl: slot.imageUrl\n };\n } else {\n return {\n draftImage: {\n imageId: slot.imageId,\n rotationDegrees: slot.rotationDegrees,\n isUploadedBySystem: slot.isUploadedBySystem\n },\n listingImage: null,\n imageUrl: slot.imageUrl\n };\n }\n })\n .filter(Boolean);\n return images;\n};\n\nconst buildDraftFromState = (syiSlice) => {\n var draft = {};\n draft.draftId = syiSlice.draft.draftId;\n draft.draftReason = syiSlice.draft.draftReason;\n draft.MemberId = syiSlice.draft.memberId;\n draft.itemId = syiSlice.draft.itemId;\n draft.restart = syiSlice.draft.restart;\n draft.publishedPromoted = syiSlice.draft.publishedPromoted;\n draft.publishedHighlighted = syiSlice.draft.publishedHighlighted;\n draft.createdDate = syiSlice.draft.createdDate;\n draft.lastModifiedDate = syiSlice.draft.lastModifiedDate;\n draft.publishedDate = syiSlice.draft.publishedDate;\n draft.publishedAsItemType = syiSlice.draft.publishedAsItemType;\n draft.reference = syiSlice.draft.reference;\n draft.additionalDescriptions = syiSlice.draft.additionalDescriptions; //TODO\n draft.metadata = syiSlice.draft.metadata;\n if (syiSlice.draft.templateId) {\n draft.templateId = syiSlice.draft.templateId;\n }\n if (syiSlice.draft.templateName) {\n draft.templateName = syiSlice.draft.templateName;\n }\n\n draft.shortDescription = syiSlice.shortDescription.shortDescription;\n draft.longDescription = syiSlice.longDescription.longDescription;\n draft.descriptionLanguageCodeIso2 =\n syiSlice.shortDescription.descriptionLanguageCodeIso2;\n draft.currency = syiSlice.draft.currency;\n draft.resellPartner = syiSlice.draft.resellPartner;\n draft.categoryId = syiSlice.category.draftCategoryId;\n // categoryPath is needed on frontend for when cancelling edit of property.\n draft.categoryPath = syiSlice.category.draftCategoryPath;\n draft.images = resolveImages(syiSlice);\n draft.openingBid = syiSlice.price.openingBid;\n draft.reservePrice = syiSlice.price.reservePrice;\n draft.fixedPrice = syiSlice.price.isPureBinSelected\n ? syiSlice.price.fixedPrice\n : syiSlice.price.auctionBinPrice;\n draft.vat = syiSlice.price.vat;\n\n draft.durationDays = syiSlice.itemDuration.durationDays;\n draft.customEndTime = syiSlice.itemDuration.customEndTime;\n draft.shippingOptions = syiSlice.shipping.selectedShippingOptions;\n draft.fromCountry = syiSlice.shipping.fromCountry;\n\n draft.itemCondition = syiSlice.itemCondition.itemCondition;\n draft.allowedBuyerRegion = syiSlice.buyerRegion.selectedBuyerRegion;\n\n draft.campaignCode = syiSlice.campaignCode.campaignCode;\n draft.campaignCodeId = syiSlice.campaignCode.campaignCodeId;\n\n draft.displayPromoted = syiSlice.extraFeatures.displayPromoted;\n draft.displayHighlighted = syiSlice.extraFeatures.displayHighlighted;\n\n draft.charityId = syiSlice.charityCampaign.charityId;\n if (\n featureToggles.isPennybridgeCharitiesEnabled &&\n syiSlice.charity?.charityId\n ) {\n draft.charity = syiSlice.charity;\n }\n draft.allowZeroDayAuctions = syiSlice.charityCampaign.allowZeroDayAuctions;\n draft.version = syiSlice.draft.version;\n\n draft.attributeValues = {\n termAttributeValues: syiSlice.attributes.categoryAttributes.map(\n (attribute) => {\n const values = attribute.options.reduce((acc, option) => {\n if (option.isActive) {\n acc.push(option.value);\n }\n return acc;\n }, []);\n return {\n id: attribute.id,\n backingField: attribute.backingField,\n userGenerated: true,\n values\n };\n }\n )\n };\n\n return draft;\n};\n\nexport default {\n isPureBin,\n isAuctionBin,\n getDefaultTemplateValue,\n loadDraft,\n loadDefaultDraft,\n loadDefaultTemplateDraft,\n loadDraftFromTemplate,\n saveDraft,\n buildDraftFromState\n};\n","/* eslint-disable better-mutation/no-mutation */\n\nexport default function ThrottledAction(minDelayInMs, alwaysDelay) {\n var lastActionTime = 0;\n var timeoutId = null;\n this.execute = function (wrappedAction) {\n if (timeoutId) {\n clearTimeout(timeoutId);\n timeoutId = null;\n }\n var timeNow = Date.now();\n var elapsed = timeNow - lastActionTime;\n if (!alwaysDelay && elapsed > minDelayInMs) {\n wrappedAction();\n lastActionTime = timeNow;\n } else {\n timeoutId = setTimeout(() => {\n wrappedAction();\n }, minDelayInMs);\n }\n };\n}\n","import 'react';\nimport { itemHasBidsButReservePriceNotReached } from './item-labels';\nimport { columns } from '../../constants/column-definitions';\nimport { PAGE_NAMES } from '../../constants/page';\nimport {\n getBidCount,\n getMaxBid,\n getShippingCost\n} from '../../helpers/item-helper';\nimport { infoItemComponents } from 'tradera/apps/my-tradera/app/components/listing/item/info-item-components';\n\nconst labels = {\n [columns.CurrentPrice]: 'Pris',\n [columns.TransactionDate]: 'Avslutad',\n [columns.EndDate]: 'Sluttid',\n [columns.ShippingCost]: 'Frakt',\n [columns.Bids]: '#Bud',\n [columns.ItemId]: 'Objektnr',\n [columns.OpeningBid]: 'Utrop',\n [columns.ReservePrice]: 'Res.pris',\n [columns.BuyItNow]: 'Köp nu',\n [columns.OwnReference]: 'Ref',\n [columns.MaxBid]: 'Maxbud',\n [columns.TimeLeft]: 'Tid kvar'\n};\n\nconst columnCssClassCore = {\n [columns.CurrentPrice]: 'myt-list3__table-column-current-price', // show tablet\n [columns.TransactionDate]: 'myt-list3__table-column-end-date',\n [columns.EndDate]: 'myt-list3__table-column-end-date',\n [columns.ShippingCost]: 'myt-list3__table-column-shipping-cost', // show tablet\n [columns.Bids]: 'myt-list3__table-column-current-bids', // show tablet\n [columns.ItemId]: 'myt-list3__table-column-item-id',\n [columns.OpeningBid]: 'myt-list3__table-column-opening-bid',\n [columns.ReservePrice]: 'myt-list3__table-column-reserve-price',\n [columns.BuyItNow]: 'myt-list3__table-column-buy-it-now',\n [columns.OwnReference]: 'myt-list3__table-column-own-reference',\n [columns.MaxBid]: 'myt-list3__table-column-maxbid',\n [columns.TimeLeft]: 'myt-list3__table-column-timeleft'\n};\n\nconst getCoreCssClass = (column) => columnCssClassCore[column];\nconst getHeading = (label, cssClass, columnKey) => ({\n term: label,\n cssClass: cssClass,\n columnKey\n});\n\nexport const getTranslatedColumnKey = (t, columnKey) => {\n switch (columnKey) {\n case columns.CurrentPrice:\n return t('myt_columns_price');\n case columns.TransactionDate:\n return t('myt_columns_transactionDate');\n case columns.EndDate:\n return t('myt_columns_endTime');\n case columns.ShippingCost:\n return t('myt_columns_shipping');\n case columns.Bids:\n return `#${t('myt_columns_bids')}`;\n case columns.ItemId:\n return t('myt_columns_objectNo');\n case columns.OpeningBid:\n return t('myt_columns_startingPrice');\n case columns.ReservePrice:\n return t('myt_columns_reservePrice');\n case columns.BuyItNow:\n return t('myt_columns_buyNow');\n case columns.OwnReference:\n return t('myt_columns_ownReference');\n case columns.MaxBid:\n return t('myt_columns_maxBid');\n case columns.TimeLeft:\n return t('myt_columns_timeLeft');\n default:\n return '';\n }\n};\n\nexport const getHeadings = (t, columnDefinitions) => {\n return columnDefinitions\n ? columnDefinitions.map((columnKey) =>\n getHeading(\n getTranslatedColumnKey(t, columnKey),\n columnCssClassCore[columnKey]\n )\n )\n : [];\n};\n\nexport const getUserHeading = (t, pageName) => {\n const highestBidder = t('myt_columns_highestBidder');\n\n switch (pageName) {\n case PAGE_NAMES.BuyerActiveItems:\n return getHeading(\n highestBidder,\n 'myt-list3__table-column-counterpart'\n );\n case PAGE_NAMES.SellerActive:\n return getHeading(\n highestBidder,\n 'myt-list3__table-column-counterpart'\n );\n case PAGE_NAMES.SellerUnsold:\n return getHeading(\n highestBidder,\n 'myt-list3__table-column-counterpart'\n );\n case PAGE_NAMES.BuyerPurchases:\n return getHeading(\n 'Mina Köp',\n 'myt-list3__table-column-counterpart'\n );\n default:\n return null;\n }\n};\n\n/**\n * @name GetColumns\n * @desc Builds the columns out for a single item;\n */\nexport const getColumns = (columnDefinitions, listViewType) => (item) => {\n const getColumn = (label, value, cssClass, title, columnKey) => ({\n term: label,\n definition: value,\n cssClass: cssClass,\n tagTitle: title,\n columnKey\n });\n\n const hasTransactionDate =\n !!item &&\n item.transaction &&\n item.transaction &&\n item.transaction.transactionDate;\n const price = item.transaction\n ? parseInt(item.transaction.price)\n : parseInt(item.currentPrice);\n\n const getCurrentPriceMeta = () =>\n itemHasBidsButReservePriceNotReached(item)\n ? columnCssClassCore[columns.CurrentPrice] + ' text-danger bold'\n : columnCssClassCore[columns.CurrentPrice];\n\n const getItemId = item.itemId;\n const itemType = item.listing.itemType;\n const hasHighestBidder =\n item && item.bidInformation && item.bidInformation.leadingBidder\n ? true\n : false;\n const shouldShowBids =\n itemType === 'Auction' ||\n (hasHighestBidder && itemType === 'AuctionBin') ||\n (hasHighestBidder &&\n item.transaction &&\n item.listing.purchaseType === 'Auction')\n ? true\n : false;\n const bidCount = getBidCount(item);\n const getTransactionDate = hasTransactionDate\n ? item.transaction.transactionDate.formatted\n : null;\n const getEndDate = item.listing.endDate.formatted;\n const getCurrentPrice = () => ({\n component: infoItemComponents.ITEM_PRICE,\n transaction: item.transaction,\n price: price\n });\n const getTimeLeftAsString = item.listing.timeLeft\n ? item.listing.timeLeft.timeleft\n : null;\n\n const columnCssClass = {\n [columns.CurrentPrice]: getCurrentPriceMeta(),\n [columns.TransactionDate]:\n getCoreCssClass(columns.TransactionDate) +\n (hasTransactionDate && item.transaction.transactionDate.critical\n ? ' text-danger'\n : ''),\n [columns.EndDate]:\n getCoreCssClass(columns.EndDate) +\n (item.listing.endDate.critical ? ' text-danger' : ''),\n [columns.ShippingCost]: getCoreCssClass(columns.ShippingCost),\n [columns.Bids]: getCoreCssClass(columns.Bids),\n [columns.ItemId]: getCoreCssClass(columns.ItemId),\n [columns.OpeningBid]: getCoreCssClass(columns.OpeningBid),\n [columns.ReservePrice]: getCoreCssClass(columns.ReservePrice),\n [columns.BuyItNow]: getCoreCssClass(columns.BuyItNow),\n [columns.OwnReference]: getCoreCssClass(columns.OwnReference),\n [columns.Discount]: getCoreCssClass(columns.Discount) + ' text-danger',\n [columns.TimeLeft]: getCoreCssClass(columns.TimeLeft),\n [columns.MaxBid]: getCoreCssClass(columns.MaxBid)\n };\n\n const columnTitle = {\n [columns.CurrentPrice]: itemHasBidsButReservePriceNotReached(item)\n ? 'Reservationspris ej uppnått'\n : price,\n [columns.TransactionDate]: hasTransactionDate\n ? item.transaction.transactionDate.full\n : null,\n [columns.EndDate]:\n item &&\n item.listing &&\n item.listing.endDate &&\n item.listing.endDate.critical\n ? item.listing.timeLeft.timeleft\n : item.listing.endDate.full,\n [columns.ShippingCost]: '',\n [columns.Bids]: bidCount,\n [columns.ItemId]: '',\n [columns.OpeningBid]: '',\n [columns.ReservePrice]: '',\n [columns.BuyItNow]: '',\n [columns.OwnReference]: '',\n [columns.Discount]: '',\n [columns.TimeLeft]: getTimeLeftAsString\n };\n\n const getBids =\n shouldShowBids && bidCount\n ? {\n component: infoItemComponents.BIDS,\n itemId: getItemId,\n bidCount: bidCount\n }\n : '-';\n const getOpeningBid =\n item.listing.pricing.openingBid > 0\n ? item.listing.pricing.openingBid\n : ' ';\n const getReservePrice =\n item.listing.pricing.reservePrice > 0\n ? item.listing.pricing.reservePrice\n : 0;\n const getBuyItNow =\n item.listing.pricing.buyItNow > 0 ? item.listing.pricing.buyItNow : 0;\n const getOwnReference = item.listing.ownReference\n ? item.listing.ownReference\n : ' ';\n const getDefinitionForPriceLabel = (price) => ({\n component: infoItemComponents.PRICE_LABEL,\n price\n });\n const getTimeLeft = {\n component: infoItemComponents.TIME_LEFT,\n timeLeft: item.listing.timeLeft\n };\n const shippingCost = getShippingCost(item, listViewType)();\n\n const definitions = {\n [columns.CurrentPrice]: getCurrentPrice(),\n [columns.TransactionDate]: getTransactionDate,\n [columns.EndDate]: getEndDate,\n [columns.ShippingCost]: shippingCost,\n [columns.Bids]: getBids,\n [columns.ItemId]: getItemId,\n [columns.OpeningBid]: getOpeningBid,\n [columns.ReservePrice]: getDefinitionForPriceLabel(getReservePrice),\n [columns.BuyItNow]: getDefinitionForPriceLabel(getBuyItNow),\n [columns.OwnReference]: getOwnReference,\n [columns.MaxBid]: getDefinitionForPriceLabel(getMaxBid(item)),\n [columns.TimeLeft]: getTimeLeft\n };\n\n return columnDefinitions.map((columnKey) =>\n getColumn(\n columnKey === 'CurrentPrice' ? undefined : labels[columnKey],\n definitions[columnKey],\n columnCssClass[columnKey],\n columnTitle[columnKey],\n columnKey\n )\n );\n};\n\nexport default {\n getColumns,\n getHeadings\n};\n","import dayjs from 'dayjs';\nimport userData from 'tradera/apps/syi/services/user-data';\nimport draftService from 'tradera/apps/syi/services/draft-service';\nimport { createSlice } from '@reduxjs/toolkit';\n\ntype ItemDurationSlice = {\n isRestartAvailable: boolean;\n durationDays: number;\n customEndTime?: string;\n allowZeroDayAuctions: boolean;\n validationErrors: object;\n};\n\nconst getEndDate = (durationDays: number, customEndTime?: string) => {\n const endDate = dayjs().startOf('date').add(durationDays, 'day');\n if (!customEndTime) return endDate;\n\n const [hours, minutes] = customEndTime.split(':').map(Number);\n return endDate.hour(hours).minute(minutes);\n};\n\nconst getValidationErrors = (\n durationDays: number,\n allowZeroDayAuctions: boolean,\n customEndTime?: string\n) => {\n let customEndTimeError = null;\n const endDate = getEndDate(durationDays, customEndTime);\n\n if (allowZeroDayAuctions) {\n const earliestEndDate = dayjs().add(5, 'minute');\n\n if (endDate.isBefore(earliestEndDate)) {\n customEndTimeError = 'syi_validation_duration_too_short_zero_day'; //'Din valda sluttid är för tidig. Annonser får avslutas tidigast efter 5 minuter.';\n }\n } else if (customEndTime) {\n const earliestEndDate = dayjs().add(3, 'day');\n\n if (endDate.isBefore(earliestEndDate, 'minute')) {\n customEndTimeError = 'syi_validation_duration_too_short'; //'Din valda sluttid är för tidig. Annonser får avslutas tidigast efter 72 timmar.';\n }\n }\n\n return customEndTimeError ? { customEndTime: customEndTimeError } : {};\n};\n\nconst initialState: ItemDurationSlice = {\n isRestartAvailable: true,\n durationDays: userData?.defaultDrafts?.newItem?.durationDays,\n customEndTime: undefined,\n allowZeroDayAuctions: false,\n validationErrors: {}\n};\n\nconst newStateWithoutCampaignRelatedProps = (\n state: ItemDurationSlice,\n durationDays: number,\n allowZeroDayAuctions: boolean,\n customEndTime?: string\n) => {\n const validationErrors = getValidationErrors(\n durationDays,\n allowZeroDayAuctions,\n customEndTime\n );\n return {\n ...state,\n durationDays,\n customEndTime,\n validationErrors\n };\n};\n\nconst itemDurationSlice = createSlice({\n name: 'itemDuration',\n initialState,\n reducers: {\n setDurationDays: (state, action) => {\n const durationDays = action.payload;\n\n const validationErrors = getValidationErrors(\n durationDays,\n state.allowZeroDayAuctions,\n state.customEndTime\n );\n return {\n ...state,\n durationDays,\n validationErrors\n };\n },\n setCustomEndTime: (state, action) => {\n const customEndTime = action.payload;\n\n const validationErrors = customEndTime\n ? getValidationErrors(\n state.durationDays,\n state.allowZeroDayAuctions,\n customEndTime\n )\n : {};\n\n return {\n ...state,\n customEndTime,\n validationErrors\n };\n },\n resetDurationAndEndTime: (state) => {\n const durationDays =\n draftService.getDefaultTemplateValue('durationDays');\n const customEndTime =\n draftService.getDefaultTemplateValue('customEndTime');\n const newState = newStateWithoutCampaignRelatedProps(\n state,\n durationDays,\n state.allowZeroDayAuctions,\n customEndTime\n );\n\n return newState;\n },\n // maybe this can be removed ..\n resetCustomEndTime: (state) => {\n return {\n ...state,\n customEndTime: initialState.customEndTime\n };\n },\n disableZeroDayAuctions: (state) => {\n const durationDays =\n state.durationDays >= 3 ? state.durationDays : 3;\n\n return {\n ...state,\n allowZeroDayAuctions: false,\n durationDays\n };\n },\n enableZeroDayAuctions: (state) => {\n return {\n ...state,\n allowZeroDayAuctions: true\n };\n },\n enableRestart: (state) => {\n return {\n ...state,\n isRestartAvailable: true\n };\n }\n },\n extraReducers(builder) {\n // Is this needed?\n builder.addCase('SET_AUCTION_BIN_PRICE', (state) => {\n const validationErrors = getValidationErrors(\n state.durationDays,\n state.allowZeroDayAuctions,\n state.customEndTime\n );\n return { ...state, validationErrors };\n });\n\n builder.addCase('DISABLE_RESTART', (state) => {\n return {\n ...state,\n isRestartAvailable: false\n };\n });\n }\n});\n\nexport default itemDurationSlice.reducer;\n\nexport const {\n setDurationDays,\n setCustomEndTime,\n resetDurationAndEndTime,\n resetCustomEndTime,\n disableZeroDayAuctions,\n enableZeroDayAuctions,\n enableRestart\n} = itemDurationSlice.actions;\n","import initData from 'init-data';\n\nexport default {\n BUYER_ACTIVE_ITEMS_HIDE: initData.pageSpecificData?.BUYER_ACTIVE_ITEMS_HIDE,\n BUYER_ACTIVE_ITEMS_SHOW: initData.pageSpecificData?.BUYER_ACTIVE_ITEMS_SHOW,\n ACTIVE_ITEMS_RESTART_SUMMARY:\n initData.pageSpecificData?.ACTIVE_ITEMS_RESTART_SUMMARY,\n MARK_PAID: initData.pageSpecificData?.MARK_PAID,\n SELLER_MARK_PAID: initData.pageSpecificData?.SELLER_MARK_PAID,\n SELLER_UNMARK_PAID: initData.pageSpecificData?.SELLER_UNMARK_PAID,\n MARK_SHIPPED: initData.pageSpecificData?.MARK_SHIPPED,\n UNMARK_SHIPPED: initData.pageSpecificData?.UNMARK_SHIPPED,\n DELETE_SHIPMENT: initData.pageSpecificData?.DELETE_SHIPMENT,\n SELLER_HIDE: initData.pageSpecificData?.SELLER_HIDE,\n SELLER_SHOW: initData.pageSpecificData?.SELLER_SHOW,\n UNSOLDHIDE: initData.pageSpecificData?.UNSOLDHIDE,\n UNSOLDSHOW: initData.pageSpecificData?.UNSOLDSHOW,\n UNMARK_BOOKED: initData.pageSpecificData?.UNMARK_BOOKED,\n ACTIVE_END_ITEMS: initData.pageSpecificData?.ACTIVE_END_ITEMS,\n UNSOLD_RESTART_ITEMS: initData.pageSpecificData?.UNSOLD_RESTART_ITEMS,\n BUYER_MARK_PAID: initData.pageSpecificData?.BUYER_MARK_PAID,\n BUYER_UNMARK_PAID: initData.pageSpecificData?.BUYER_UNMARK_PAID,\n BUYER_HIDE: initData.pageSpecificData?.BUYER_HIDE,\n BUYER_SHOW: initData.pageSpecificData?.BUYER_SHOW,\n REQUEST_COMBINED_SHIPPING_PRICE:\n '/api/webapi/shopping/ordercheckout/requestcombinedshippingprice'\n};\n","export default {\n ACTIVE_FILTER_STATES_COUNTY: [\n 'Blekinge',\n 'Dalarna',\n 'Gavleborg',\n 'Gotland',\n 'Halland',\n 'Jamtland',\n 'Jonkoping',\n 'Kalmar',\n 'Kronoberg',\n 'Norrbotten',\n 'Skane',\n 'Sodermanland',\n 'Stockholm',\n 'Uppsala',\n 'Varmland',\n 'Vasterbotten',\n 'Vasternorrland',\n 'Vastmanland',\n 'VastraGotaland',\n 'Orebro',\n 'Ostergotland'\n ],\n ACTIVE_FILTER_STATES_ITEM_CONDITION: ['New', 'Used'],\n ACTIVE_FILTER_STATES_ITEM_STATUS: ['Ended', 'Unsold'],\n ACTIVE_FILTER_STATES_ITEM_TYPE: ['Auction', 'FixedPrice'],\n ACTIVE_FILTER_STATES_SELLER_TYPE: ['Private', 'Company'],\n FILTER_STATES_ALLOWED_BUYER_REGIONS: {\n SWEDEN: 'sweden;eu;international',\n EU: 'eu;international',\n INTERNATIONAL: 'international',\n NORDIC: 'nordic;international'\n },\n MODALS: {\n FILTER_MODAL: 'filterModal',\n CATEGORY_MODAL: 'categoryModal'\n }\n} as const;\n","export const SINGLE_FEEDBACK_DIALOG_ID = 'single-feedback-dialog';\n\nexport const ROLES = {\n BUYER: 'buyer',\n SELLER: 'seller'\n} as const;\nexport const MAX_COMMENT_LENGTH = 80;\nexport const UNSET_RATING_VALUE = 0;\nexport const MIN_RATING_VALUE = 1;\nexport const MAX_RATING_VALUE = 5;\n\nexport enum RATING_NAMES {\n DESCRIPTION = 'ItemAsDescribed',\n COMMUNICATION = 'CommResponsiveness',\n SHIPPING_TIME = 'ShippingTime',\n SHIPPING_COST = 'ShippingHandlingCharges',\n PAYMENT_TIME = 'PaymentTime'\n}\n\nexport const RATING_NAMES_SELLER = [RATING_NAMES.PAYMENT_TIME];\n\nexport const RATING_NAMES_BUYER = [\n RATING_NAMES.DESCRIPTION,\n RATING_NAMES.COMMUNICATION,\n RATING_NAMES.SHIPPING_TIME,\n RATING_NAMES.SHIPPING_COST\n];\n\ntype RatingSetting = {\n name: RATING_NAMES;\n titleKey: string;\n descriptionKeys: [string, string, string, string, string];\n};\n\nexport const RATING_SETTINGS: Record = {\n [RATING_NAMES.DESCRIPTION]: {\n name: RATING_NAMES.DESCRIPTION,\n titleKey: 'leaveFeedback_rateItemAsDecribedTitle',\n descriptionKeys: [\n 'leaveFeedback_rateItemAsDecribed_ratingOne',\n 'leaveFeedback_rateItemAsDecribed_ratingTwo',\n 'leaveFeedback_rateItemAsDecribed_ratingThree',\n 'leaveFeedback_rateItemAsDecribed_ratingFour',\n 'leaveFeedback_rateItemAsDecribed_ratingFive'\n ]\n },\n [RATING_NAMES.COMMUNICATION]: {\n name: RATING_NAMES.COMMUNICATION,\n titleKey: 'leaveFeedback_rateCommResponsivenessTitle',\n descriptionKeys: [\n 'leaveFeedback_rateCommResponsiveness_ratingOne',\n 'leaveFeedback_rateCommResponsiveness_ratingTwo',\n 'leaveFeedback_rateCommResponsiveness_ratingThree',\n 'leaveFeedback_rateCommResponsiveness_ratingFour',\n 'leaveFeedback_rateCommResponsiveness_ratingFive'\n ]\n },\n [RATING_NAMES.SHIPPING_TIME]: {\n name: RATING_NAMES.SHIPPING_TIME,\n titleKey: 'leaveFeedback_rateShippingTimeTitle',\n descriptionKeys: [\n 'leaveFeedback_rateShippingTime_ratingOne',\n 'leaveFeedback_rateShippingTime_ratingTwo',\n 'leaveFeedback_rateShippingTime_ratingThree',\n 'leaveFeedback_rateShippingTime_ratingFour',\n 'leaveFeedback_rateShippingTime_ratingFive'\n ]\n },\n [RATING_NAMES.SHIPPING_COST]: {\n name: RATING_NAMES.SHIPPING_COST,\n titleKey: 'leaveFeedback_rateShippingHandlingChargesTitle',\n descriptionKeys: [\n 'leaveFeedback_rateShippingHandlingCharges_ratingOne',\n 'leaveFeedback_rateShippingHandlingCharges_ratingTwo',\n 'leaveFeedback_rateShippingHandlingCharges_ratingThree',\n 'leaveFeedback_rateShippingHandlingCharges_ratingFour',\n 'leaveFeedback_rateShippingHandlingCharges_ratingFive'\n ]\n },\n [RATING_NAMES.PAYMENT_TIME]: {\n name: RATING_NAMES.PAYMENT_TIME,\n titleKey: 'leaveFeedback_ratePaymentTimeTitle',\n descriptionKeys: [\n 'leaveFeedback_ratePaymentTime_ratingOne',\n 'leaveFeedback_ratePaymentTime_ratingTwo',\n 'leaveFeedback_ratePaymentTime_ratingThree',\n 'leaveFeedback_ratePaymentTime_ratingFour',\n 'leaveFeedback_ratePaymentTime_ratingFive'\n ]\n }\n};\n","import React from 'react';\nimport { useTranslator } from 'tradera/lang/translate';\n\nexport const PaymentMethodName = ({ paymentMethod }) => {\n const { t } = useTranslator();\n\n const getName = () => {\n if (paymentMethod?.indexOf('PaynovaInstallments') === 0)\n return t('checkout_paid_paynova_installments');\n\n switch (paymentMethod) {\n case 'Mastercard':\n case 'Visa':\n case 'VisaMasterCard':\n case 'Card':\n return t('syi_payment_option_VisaMasterCard');\n case 'Paynova':\n return t('syi_payment_option_Paynova');\n case 'PayPal':\n return t('syi_payment_option_PayPal');\n case 'SwishApp2App':\n case 'SwishHandel':\n return t('syi_payment_option_Swish');\n case 'ApplePay':\n return t('syi_payment_option_ApplePay');\n case 'GooglePay':\n return t('syi_payment_option_GooglePay');\n case 'Klarna':\n return t('syi_payment_option_Klarna');\n case 'PaynovaDirectInvoice':\n return t('checkout_paid_paynova_invoice');\n case 'Invoice':\n return t('syi_payment_option_balance');\n default:\n return null;\n }\n };\n\n return {getName()};\n};\n","import StorageService from 'tradera/services/storage-service';\nimport { STORAGE_KEYS } from 'tradera/constants/storage';\n\nconst recentSearchesService = new StorageService(STORAGE_KEYS.SEARCH_RECENT);\n\ntype RecentSearchFromLocalStorage = {\n count: number;\n queryParams: Record;\n};\n\ntype LegacyRecentSearchFromLocalStorage = number;\n\ntype RecentSearch = RecentSearchFromLocalStorage & {\n text: string;\n};\n\nexport const getRecentSearchesLocalStorage = (): RecentSearch[] => {\n const recentSearches = recentSearchesService\n .fetch<\n RecentSearchFromLocalStorage | LegacyRecentSearchFromLocalStorage\n >()\n .orderByTimestamp?.();\n\n const formattedRecentSearches = recentSearches?.map((recent) => {\n return {\n text: recent.key,\n count:\n typeof recent.value === 'number'\n ? recent.value\n : recent.value?.count,\n queryParams:\n typeof recent.value === 'object'\n ? recent.value?.queryParams\n : { q: recent.key }\n };\n });\n\n return formattedRecentSearches ?? [];\n};\n\nexport const setRecentSearchLocalStorage = (\n searchTerm: string,\n queryParams: object,\n count: number\n) => {\n recentSearchesService.set(searchTerm, {\n count,\n queryParams\n });\n};\n\nexport const removeRecentSearchLocalStorage = (searchTerm: string) => {\n if (!searchTerm || searchTerm.length < 3) {\n return;\n }\n recentSearchesService.remove(searchTerm);\n};\n","import { axiosConfigs } from 'tradera/utils/api';\nimport { marketingApiClient } from 'tradera/utils/http';\nimport {\n resetCharity,\n setCharityShippingInfo,\n setCharityId,\n setCharityFromDraft,\n setCharityInfo\n} from 'tradera/apps/syi/state/reducers/charity';\nimport shippingActions from './shipping-actions';\nimport { logger } from 'packages/logger';\n\nexport const setCharityFromDraftAndFetchInfo =\n (charityFromDraft) => (dispatch) => {\n dispatch(setCharityFromDraft(charityFromDraft));\n dispatch(setCharityAndFetchInfo(charityFromDraft.charityId));\n };\n\nexport const resetCharityAndShippingInfo = () => setCharityAndFetchInfo(null);\n\nexport const setCharityAndFetchInfo = (charityId) => (dispatch) => {\n dispatch(shippingActions.resetSelected());\n dispatch(resetCharity());\n dispatch(setCharityId({ charityId }));\n dispatch(fetchCharityInfo(charityId));\n dispatch(fetchCharityShippingInfo(charityId));\n};\n\nconst fetchCharityInfo = (charityId) => async (dispatch) => {\n if (!charityId) {\n return;\n }\n try {\n const response = await getCharity(charityId);\n dispatch(setCharityInfo(response.data));\n } catch (error) {\n if (error?.response?.status !== 404) {\n logger(error);\n }\n }\n};\n\nconst fetchCharityShippingInfo = (charityId) => async (dispatch, getState) => {\n if (!charityId) {\n return;\n }\n try {\n const response = await getCharityShippingInfo(charityId);\n\n const isFreeShippingPaidByProviderEnabled =\n getState().environment.featureSwitches[\n 'free-shipping-paid-by-provider'\n ];\n\n if (isFreeShippingPaidByProviderEnabled) {\n dispatch(setCharityShippingInfo(response.data));\n if (response.data.freeShippingPaidByProviderName) {\n dispatch({\n type: 'FREE_SHIPPING_PAID_BY_PROVIDER',\n payload: {\n providerName:\n response.data.freeShippingPaidByProviderName\n }\n });\n }\n }\n if (response.data.forceFreeShipping) {\n dispatch({\n type: 'FORCE_FREE_SHIPPING'\n });\n }\n } catch (error) {\n if (error?.response?.status !== 404) {\n logger(error);\n }\n }\n};\n\nconst getCharityShippingInfo = (charityId) =>\n marketingApiClient.get(`/charity-shipping-info?charityId=${charityId}`, {\n ...axiosConfigs.notAuthenticated,\n cancelTokenId: 'getCharityShippingInfo'\n });\n\nconst getCharity = (charityId) =>\n marketingApiClient.get(`/syi/charity-details?charityId=${charityId}`, {\n ...axiosConfigs.notAuthenticated,\n cancelTokenId: 'getCharity'\n });\n","/* eslint-disable better-mutation/no-mutation */\n\nimport { createSlice } from '@reduxjs/toolkit';\nimport { assertNoUndefinedProperties } from 'tradera/utils/assert';\nimport { getItemState } from '../view-item/item-state-helper';\nimport { getAmountDetails } from 'tradera/apps/tradera/components/vip/bidding/bid-details'; // TODO put getAmountDetails somewhere else\nimport { VIEW_STATES } from './constants';\n\nexport const initialState = {\n amount: 0,\n breadCrumbs: [],\n categoryId: 0,\n categoryNames: [],\n categories: [],\n categoryLevel: 0,\n description: null,\n hasEnded: false,\n images: [],\n itemId: 0,\n itemUrl: null,\n paymentOptions: [],\n paymentTerms: null,\n reasons: [],\n resultMessage: null,\n shippingOptions: [],\n shippingTerms: [],\n sellerMemberId: 0,\n title: null,\n viewState: VIEW_STATES.LOADING,\n itemDetails: null\n};\n\nconst slice = createSlice({\n name: 'reportItem',\n initialState,\n reducers: {\n resetInitialState: () => {\n return initialState;\n },\n setReportItem: (state, { payload: { item, itemUrl, reasons } }) => {\n const itemDetails = item.itemDetails;\n const bidInfo = item.bidInfo;\n const itemState = getItemState(\n itemDetails.hasEnded,\n itemDetails.hasStarted,\n itemDetails.itemType,\n bidInfo.bidCount,\n bidInfo.reservePriceReached,\n bidInfo.nextValidBidAmount,\n bidInfo.transactionType,\n bidInfo.leadingBidderMemberId\n );\n const amountDetails = getAmountDetails(\n itemState,\n itemDetails.fixedPrice,\n bidInfo.leadingBidAmount,\n itemDetails.openingBid,\n bidInfo.bidCount > 0\n );\n state.amount = amountDetails.amount;\n state.allowedBuyerRegion = itemDetails.allowedBuyerRegion;\n state.breadCrumbs = item.breadCrumbs;\n state.categoryId = itemDetails.categoryId;\n state.categoryNames = item.breadCrumbs.map(\n (breadCrumb) => breadCrumb.text\n );\n state.description = itemDetails.description;\n state.endDate = itemDetails.endDate;\n state.hasEnded = itemDetails.hasEnded;\n state.images = itemDetails.images;\n state.itemId = itemDetails.itemId;\n state.itemUrl = itemUrl;\n state.paymentOptions = itemDetails.paymentOptions;\n state.reasons = reasons;\n state.shippingOptions = itemDetails.shippingOptions;\n state.shippingTerms = itemDetails.shippingTerms;\n state.sellerMemberId = itemDetails.sellerMemberId;\n state.title = itemDetails.title;\n state.viewState = itemDetails.hasEnded\n ? VIEW_STATES.ITEM_ENDED\n : VIEW_STATES.FORM;\n state.itemDetails = itemDetails;\n assertNoUndefinedProperties(state);\n },\n setViewState: (state, { payload }) => {\n state.viewState = payload;\n },\n setCategories: (state, { payload: categories, categoryLevel }) => {\n state.categories = categories;\n state.categoryLevel = categoryLevel;\n }\n }\n});\n\nexport const { resetInitialState, setReportItem, setViewState, setCategories } =\n slice.actions;\nexport const reducer = slice.reducer;\n","import { webApiClient } from 'tradera/utils/http';\n\nexport const getInvoice = (invoiceId) =>\n webApiClient.get('/mytradera/invoicecheckout', {\n params: {\n invoiceId\n },\n withCredentials: true\n });\n\nexport const getPaymentOptions = async (invoiceId) =>\n webApiClient.get(\n `/mytradera/invoicecheckout/invoicepaymentoptions/${invoiceId}`\n );\n\nexport const initializePayment = async (formData) =>\n webApiClient.post(\n '/mytradera/invoicecheckout/initializeinvoicepaymentattempt',\n formData\n );\n\nexport const getPaymentStatus = async (paymentAttemptId) =>\n webApiClient.get(\n `/mytradera/invoicecheckout/invoicepaymentattemptstatus/${paymentAttemptId}`\n );\n\nexport const completePayment = async (formData) =>\n webApiClient.post(\n '/mytradera/invoicecheckout/completeinvoicepaymentattempt',\n formData\n );\n\nexport const cancelPayment = async (formData) =>\n webApiClient.post(\n '/mytradera/invoicecheckout/cancelinvoicepaymentattempt',\n formData\n );\n\nexport const getExternalAuthData = async (paymentAttemptId) =>\n webApiClient.get(\n `/mytradera/invoicecheckout/invoicepaymentattemptauthenticationdata/${paymentAttemptId}`\n );\n\nexport const getBraintreeToken = async ({ invoiceId, paymentOption }) =>\n webApiClient.get(\n `/mytradera/invoicecheckout/invoicebraintreeclienttoken/${invoiceId}`,\n {\n params: {\n paymentMethod: paymentOption\n },\n withCredentials: true\n }\n );\n\n// Export object for Sinon stubbing\nexport default {\n getInvoice,\n getPaymentOptions,\n initializePayment,\n getPaymentStatus,\n completePayment,\n cancelPayment,\n getExternalAuthData,\n getBraintreeToken\n};\n","import { MODAL_STATE, type ITEM_LAYOUT } from 'tradera/constants/ui';\nimport { nullifyUndefinedProperties } from 'tradera/utils/object';\nimport { DEFAULT_COOKIES } from 'tradera/constants/cookies';\nimport cookieUtil from 'tradera/utils/cookie';\nimport { cache, CACHE_KEYS } from 'tradera/utils/cache';\nimport { initialize } from './reducer';\nimport { type Dispatch } from 'redux';\nimport { type InitData } from '../init-data/types';\n\nexport type UiState = {\n categoryDropdownMenu: {\n open: MODAL_STATE;\n };\n badges: {\n messaging: {\n threads: number;\n threadsUnread: number;\n };\n system: number;\n };\n itemLayout: ITEM_LAYOUT;\n itemSettings: {\n open: MODAL_STATE;\n item: unknown;\n };\n messagingModal: {\n open: MODAL_STATE;\n title: string;\n src: string;\n participating: boolean;\n recipientId: string;\n item: unknown;\n isContactHighestBidder: boolean;\n };\n modals: {\n currentModal: unknown;\n currentModalData: unknown;\n };\n notificationOptinModal: {\n open: MODAL_STATE;\n modalType: string;\n gaLabel: string;\n title: string;\n description: string;\n tagGroups: unknown[];\n };\n profileMenu: {\n open: MODAL_STATE;\n redirectUrl: boolean;\n };\n quickView: {\n open: MODAL_STATE;\n items: unknown[];\n item: unknown;\n loading?: boolean;\n };\n siteLayout: string;\n showHeaderSearch: boolean;\n showSaveSearchBanner: boolean;\n showSearchForm: boolean;\n systemMessages: {\n BankAccountMissing: boolean;\n InvoiceOverdue: boolean;\n InvoiceUnpaid: boolean;\n PayoutFailed: boolean;\n PayoutReadyBankAccountMissing: boolean;\n };\n videoModal: {\n open: MODAL_STATE;\n videoUrl: string;\n title: string;\n pageType: string;\n buttonLink: string;\n buttonText: string;\n };\n youtubeVideoModal: {\n open: MODAL_STATE;\n videoId: string;\n title: string;\n pageType: string;\n };\n shareModal: {\n isOpen: boolean;\n settings: unknown;\n };\n wishListSideSheet: {\n isOpen: boolean;\n };\n productCommunications: unknown;\n collectSsnModal: {\n isOpen: boolean;\n };\n messageThreadCount: number;\n messageThreadsUnreadCount: number;\n showCollectSsnModal: boolean;\n helpSection: {\n isOpen: boolean;\n settings: unknown;\n };\n};\n\nexport const getInitialBadges = () => ({\n messaging: {\n threads: 0,\n threadsUnread: 0\n },\n system: 0\n});\n\nexport const getInitialState = ({\n itemLayout,\n messageThreadCount = 0,\n messageThreadsUnreadCount = 0,\n showHeaderSearch,\n showSearchForm,\n siteLayout,\n systemMessages,\n productCommunications,\n showCollectSsnModal\n}: Partial) => {\n const badges = getInitialBadges();\n // eslint-disable-next-line better-mutation/no-mutation\n badges.messaging.threads = messageThreadCount;\n // eslint-disable-next-line better-mutation/no-mutation\n badges.messaging.threadsUnread = messageThreadsUnreadCount;\n\n return nullifyUndefinedProperties({\n categoryDropdownMenu: { open: MODAL_STATE.CLOSED },\n badges,\n itemLayout: itemLayout,\n itemSettings: {\n open: MODAL_STATE.CLOSED,\n item: {}\n },\n messagingModal: {\n open: MODAL_STATE.CLOSED,\n title: '',\n src: '',\n participating: false,\n recipientId: '',\n item: null\n },\n modals: {\n currentModal: null\n },\n notificationOptinModal: {\n open: MODAL_STATE.CLOSED,\n modalType: null,\n gaLabel: null,\n title: null,\n description: null,\n tagGroups: []\n },\n profileMenu: { open: MODAL_STATE.CLOSED, redirectUrl: false },\n quickView: {\n open: MODAL_STATE.CLOSED,\n items: [],\n item: null,\n loading: false\n },\n siteLayout,\n showHeaderSearch,\n showSearchForm,\n systemMessages: {\n BankAccountMissing: false,\n InvoiceOverdue: false,\n InvoiceUnpaid: false,\n PayoutFailed: false,\n PayoutReadyBankAccountMissing: false,\n OutstandingTraderaPayLicense: false,\n PayoutReadyOutstandingTraderaPayLicense: false,\n ...systemMessages\n },\n videoModal: {\n open: MODAL_STATE.CLOSED,\n video: ''\n },\n youtubeVideoModal: {\n open: MODAL_STATE.CLOSED,\n video: ''\n },\n shareModal: {\n isOpen: false,\n settings: null\n },\n wishListSideSheet: {\n isOpen: false\n },\n productCommunications,\n collectSsnModal: {\n isOpen: !!showCollectSsnModal\n }\n });\n};\n\ntype MessagingBadgesFromCache = {\n threads: number;\n threadsUnread: number;\n};\n\nexport const initializeFromInitData =\n (initData: Partial) => (dispatch: Dispatch) => {\n const messagingBadges =\n cache.read(CACHE_KEYS.MESSAGING_BADGES) ||\n ({\n threads: 0,\n threadsUnread: 0\n } as MessagingBadgesFromCache);\n\n const state = getInitialState({\n itemLayout:\n cookieUtil.readCookie(DEFAULT_COOKIES['ITEM_LAYOUT'].key) ||\n DEFAULT_COOKIES['ITEM_LAYOUT'].default,\n messageThreadCount: messagingBadges.threads,\n messageThreadsUnreadCount: messagingBadges.threadsUnread,\n showHeaderSearch:\n typeof initData.pageName === 'string' &&\n initData.pageName.includes('StartPage'),\n showSearchForm: !!initData.hasSearch,\n siteLayout:\n cookieUtil.readCookie(DEFAULT_COOKIES['SITE_LAYOUT'].key) ||\n DEFAULT_COOKIES['SITE_LAYOUT'].default,\n systemMessages: cache.read(CACHE_KEYS.SYSTEM_MESSAGES) || {},\n productCommunications: initData.productCommunications,\n showCollectSsnModal:\n initData.memberCountryCodeIso2 === 'SE' &&\n !initData.isCompany &&\n !initData.hasSsn\n });\n dispatch(initialize(state));\n };\n","import { RECENTLY_VIEWED_ITEM_IDS } from 'tradera/constants/cookies';\nimport cookieUtil from 'tradera/utils/cookie';\n\nexport const getInitialState = (initData) => {\n const wishListItemIds = new Set(initData.wishListItemIds || []);\n const recentItemIds =\n cookieUtil\n .readCookie(RECENTLY_VIEWED_ITEM_IDS)\n ?.split(';')\n .filter(Boolean)\n .map(Number) ?? [];\n\n return {\n recentItemIds,\n wishListItemIds: Array.from(wishListItemIds)\n };\n};\n","import { GtmService as gtmCore } from 'tradera/services/google-tagmanager-service';\nimport { logger } from 'packages/logger';\nimport Analytics from 'packages/analytics';\nimport actionTypes from './action-types';\nimport uiActions from '../ui/actions';\nimport { postWishlistItem } from './api';\nimport { API_ERRORS } from 'tradera/utils/api';\nimport { MODAL_TYPES } from 'tradera/state/push-notifications/constants';\nimport { getInitialState } from './initial-state';\nimport { hideWishListNudge } from 'tradera/state/wish-list-nudge/reducer';\nimport cookieUtil from 'tradera/utils/cookie';\nimport { RECENTLY_VIEWED_ITEM_IDS } from 'tradera/constants/cookies';\n\nconst RECENTLY_VIEWED_ITEM_IDS_TTL = 30 * 24 * 60 * 60 * 1000;\n\nexport const addRecentlyViewed = (itemId) => async (dispatch, getStore) => {\n dispatch({\n type: actionTypes.ADD_RECENTLY_VIEWED,\n payload: itemId\n });\n\n const {\n items: { recentItemIds }\n } = getStore();\n\n cookieUtil.createCookie(\n RECENTLY_VIEWED_ITEM_IDS,\n recentItemIds.join(';'),\n new Date(new Date().getTime() + RECENTLY_VIEWED_ITEM_IDS_TTL)\n );\n};\n\nexport const setRecentlyViewed = (itemIds) => async (dispatch) => {\n dispatch({\n type: actionTypes.SET_RECENTLY_VIEWED,\n payload: itemIds\n });\n};\n\nexport const setItemWishList = (itemId, exists) => (dispatch, getState) => {\n const existsInState = getState().items.wishListItemIds.includes(itemId);\n if (existsInState !== exists) {\n dispatch({\n type: actionTypes.WISHLIST,\n payload: { itemId, exists }\n });\n }\n};\n\nexport const addItemsToWishList = (itemIds) => ({\n type: actionTypes.WISHLIST_ADD_RANGE,\n payload: { itemIds }\n});\n\nexport const removeItemsFromWishList = (itemIds) => ({\n type: actionTypes.WISHLIST_REMOVE_RANGE,\n payload: { itemIds }\n});\n\n/**\n * Toggle item in wishlist\n *\n * @param {int} itemId\n * @param {boolean} [value] - Force add or remove from wishlist\n * @param {boolean} [shouldNotTrackEventBecauseNeedsToBeSameAsLegacyVip]\n * @returns {function(*, *): Promise<* | Error>}\n */\nexport const wishlist =\n (\n itemId,\n value,\n shouldNotTrackEventBecauseNeedsToBeSameAsLegacyVip = false\n ) =>\n async (dispatch, getStore) => {\n const {\n member: { isLoggedIn, memberId },\n items: { wishListItemIds },\n page\n } = getStore();\n let existsInWishList;\n if (value === undefined) {\n existsInWishList = wishListItemIds.includes(itemId);\n } else {\n existsInWishList = !value;\n }\n\n const redirectUrl = window.location.toString();\n const onSignedOutError = () =>\n dispatch(uiActions.signIn({ redirectUrl }));\n if (!isLoggedIn) {\n onSignedOutError();\n return;\n }\n\n dispatch(setItemWishList(itemId, !existsInWishList));\n\n if (!existsInWishList) {\n gtmCore.trackGtmEvent('add-to-wishlist', {\n memberId: memberId,\n itemId: itemId\n });\n dispatch(hideWishListNudge());\n }\n if (!shouldNotTrackEventBecauseNeedsToBeSameAsLegacyVip) {\n Analytics.trackEvent({\n category: 'Wish list',\n action: existsInWishList ? 'remove' : 'add',\n label: page.type\n });\n }\n\n return postWishlistItem(itemId, !existsInWishList)\n .then(() => {\n dispatch(\n uiActions.openNotificationOptinModalAction(\n MODAL_TYPES.wishlistReminders,\n 'Enable - Wishlist - Reminders (from alert)',\n 'pushModal_wishlist_title',\n 'pushModal_wishlist_description',\n ['wishlistReminders']\n )\n );\n return !existsInWishList;\n })\n .catch((error) => {\n // Restore previous wishlist status on error\n dispatch(setItemWishList(itemId, existsInWishList));\n switch (error.message) {\n case API_ERRORS.LOGGED_OUT:\n onSignedOutError();\n break;\n default:\n break;\n }\n switch (error.message) {\n case API_ERRORS.CANCELLED:\n case API_ERRORS.NETWORK:\n case API_ERRORS.TIMEOUT:\n case API_ERRORS.VERSION_MISMATCH:\n break;\n default:\n logger(error);\n break;\n }\n });\n };\n\nexport const initialize = (initData) => ({\n type: actionTypes.INITIALIZE,\n payload: getInitialState(initData)\n});\n","const bannedCountries = new Set([\n 'af',\n 'bi',\n 'by',\n 'cd',\n 'cf',\n 'cu',\n 'fx',\n 'gn',\n 'gw',\n 'iq',\n 'ir',\n 'kp',\n 'lb',\n 'ly',\n 'ml',\n 'mm',\n 'ng',\n 'ni',\n 'ru',\n 'sd',\n 'so',\n 'ss',\n 'sy',\n 'tn',\n 'ua',\n 've',\n 'ye',\n 'zw'\n]);\n\nexport const removeBannedCountries = (country) =>\n !bannedCountries.has(country.countryCodeIso2.toLowerCase());\n\nexport const removeBannedCountryCodes = (countryCodeIso2) =>\n !bannedCountries.has(countryCodeIso2.toLowerCase());\n\nexport const getAvailableCountries = (t) => {\n return Object.keys(countries)\n .filter(removeBannedCountryCodes)\n .map((code) => ({\n code,\n name: t(mapCountryCodeToCountryKey(code))\n }))\n .sort((a, b) => (a.name > b.name ? 1 : -1));\n};\n\n// We map this way to ensure that each key in lokalise is present in code.\n// This allows us to clean up unnecessary codes in the future.\nexport const mapCountryCodeToCountryKey = (countryCode) => {\n const lokaliseKey = countries[countryCode.toLowerCase()];\n if (!lokaliseKey)\n throw `CountryCode ${countryCode} has no mapping to lokalise key`;\n return lokaliseKey;\n};\n\nexport const countries = {\n ad: 'country_ad',\n ae: 'country_ae',\n af: 'country_af',\n ag: 'country_ag',\n ai: 'country_ai',\n al: 'country_al',\n am: 'country_am',\n an: 'country_an',\n ao: 'country_ao',\n aq: 'country_aq',\n ar: 'country_ar',\n as: 'country_as',\n at: 'country_at',\n au: 'country_au',\n aw: 'country_aw',\n ax: 'country_ax',\n az: 'country_az',\n ba: 'country_ba',\n bb: 'country_bb',\n bd: 'country_bd',\n be: 'country_be',\n bf: 'country_bf',\n bg: 'country_bg',\n bh: 'country_bh',\n bi: 'country_bi',\n bj: 'country_bj',\n bm: 'country_bm',\n bn: 'country_bn',\n bo: 'country_bo',\n br: 'country_br',\n bs: 'country_bs',\n bt: 'country_bt',\n bv: 'country_bv',\n bw: 'country_bw',\n by: 'country_by',\n bz: 'country_bz',\n ca: 'country_ca',\n cc: 'country_cc',\n cd: 'country_cd',\n cf: 'country_cf',\n cg: 'country_cg',\n ch: 'country_ch',\n ci: 'country_ci',\n ck: 'country_ck',\n cl: 'country_cl',\n cm: 'country_cm',\n cn: 'country_cn',\n co: 'country_co',\n cr: 'country_cr',\n cu: 'country_cu',\n cv: 'country_cv',\n cx: 'country_cx',\n cy: 'country_cy',\n cz: 'country_cz',\n de: 'country_de',\n dj: 'country_dj',\n dk: 'country_dk',\n dm: 'country_dm',\n do: 'country_do',\n dz: 'country_dz',\n ec: 'country_ec',\n ee: 'country_ee',\n eg: 'country_eg',\n eh: 'country_eh',\n er: 'country_er',\n es: 'country_es',\n et: 'country_et',\n fi: 'country_fi',\n fj: 'country_fj',\n fk: 'country_fk',\n fm: 'country_fm',\n fo: 'country_fo',\n fr: 'country_fr',\n fx: 'country_fx',\n ga: 'country_ga',\n gb: 'country_gb',\n gd: 'country_gd',\n ge: 'country_ge',\n gf: 'country_gf',\n gh: 'country_gh',\n gi: 'country_gi',\n gl: 'country_gl',\n gm: 'country_gm',\n gn: 'country_gn',\n gp: 'country_gp',\n gq: 'country_gq',\n gr: 'country_gr',\n gs: 'country_gs',\n gt: 'country_gt',\n gu: 'country_gu',\n gw: 'country_gw',\n gy: 'country_gy',\n hk: 'country_hk',\n hm: 'country_hm',\n hn: 'country_hn',\n hr: 'country_hr',\n ht: 'country_ht',\n hu: 'country_hu',\n id: 'country_id',\n ie: 'country_ie',\n il: 'country_il',\n in: 'country_in',\n io: 'country_io',\n iq: 'country_iq',\n ir: 'country_ir',\n is: 'country_is',\n it: 'country_it',\n jm: 'country_jm',\n jo: 'country_jo',\n jp: 'country_jp',\n ke: 'country_ke',\n kg: 'country_kg',\n kh: 'country_kh',\n ki: 'country_ki',\n km: 'country_km',\n kn: 'country_kn',\n kp: 'country_kp',\n kr: 'country_kr',\n kw: 'country_kw',\n ky: 'country_ky',\n kz: 'country_kz',\n la: 'country_la',\n lb: 'country_lb',\n lc: 'country_lc',\n li: 'country_li',\n lk: 'country_lk',\n lr: 'country_lr',\n ls: 'country_ls',\n lt: 'country_lt',\n lu: 'country_lu',\n lv: 'country_lv',\n ly: 'country_ly',\n ma: 'country_ma',\n mc: 'country_mc',\n md: 'country_md',\n mg: 'country_mg',\n mh: 'country_mh',\n mk: 'country_mk',\n ml: 'country_ml',\n mm: 'country_mm',\n mn: 'country_mn',\n mo: 'country_mo',\n mp: 'country_mp',\n mq: 'country_mq',\n mr: 'country_mr',\n ms: 'country_ms',\n mt: 'country_mt',\n mu: 'country_mu',\n mv: 'country_mv',\n mw: 'country_mw',\n mx: 'country_mx',\n my: 'country_my',\n mz: 'country_mz',\n na: 'country_na',\n nc: 'country_nc',\n ne: 'country_ne',\n nf: 'country_nf',\n ng: 'country_ng',\n ni: 'country_ni',\n nl: 'country_nl',\n no: 'country_no',\n np: 'country_np',\n nr: 'country_nr',\n nu: 'country_nu',\n nz: 'country_nz',\n om: 'country_om',\n pa: 'country_pa',\n pe: 'country_pe',\n pf: 'country_pf',\n pg: 'country_pg',\n ph: 'country_ph',\n pk: 'country_pk',\n pl: 'country_pl',\n pm: 'country_pm',\n pn: 'country_pn',\n pr: 'country_pr',\n ps: 'country_ps',\n pt: 'country_pt',\n pw: 'country_pw',\n py: 'country_py',\n qa: 'country_qa',\n re: 'country_re',\n ro: 'country_ro',\n ru: 'country_ru',\n rs: 'country_rs',\n rw: 'country_rw',\n sa: 'country_sa',\n sb: 'country_sb',\n sc: 'country_sc',\n sd: 'country_sd',\n se: 'country_se',\n sg: 'country_sg',\n sh: 'country_sh',\n si: 'country_si',\n sj: 'country_sj',\n sk: 'country_sk',\n sl: 'country_sl',\n sm: 'country_sm',\n sn: 'country_sn',\n so: 'country_so',\n sr: 'country_sr',\n st: 'country_st',\n sv: 'country_sv',\n sy: 'country_sy',\n sz: 'country_sz',\n tc: 'country_tc',\n td: 'country_td',\n tf: 'country_tf',\n tg: 'country_tg',\n th: 'country_th',\n tj: 'country_tj',\n tk: 'country_tk',\n tl: 'country_tl',\n tm: 'country_tm',\n tn: 'country_tn',\n to: 'country_to',\n tr: 'country_tr',\n tt: 'country_tt',\n tv: 'country_tv',\n tw: 'country_tw',\n tz: 'country_tz',\n ua: 'country_ua',\n ug: 'country_ug',\n um: 'country_um',\n us: 'country_us',\n uy: 'country_uy',\n uz: 'country_uz',\n va: 'country_va',\n vc: 'country_vc',\n ve: 'country_ve',\n vg: 'country_vg',\n vi: 'country_vi',\n vn: 'country_vn',\n vu: 'country_vu',\n wf: 'country_wf',\n ws: 'country_ws',\n ye: 'country_ye',\n yt: 'country_yt',\n yu: 'country_yu',\n za: 'country_za',\n zm: 'country_zm',\n zw: 'country_zw'\n};\n","export enum ModalState {\n CLOSED = 'CLOSED',\n START = 'START',\n COMPLETED = 'COMPLETED',\n ERROR = 'ERROR',\n IN_PROGRESS = 'IN_PROGRESS'\n}\n\nexport default ModalState;\n","import classNames from 'classnames';\nimport type { TFunction } from 'i18next';\nimport React, { useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport { useCurrentLanguage, useTranslator } from 'tradera/lang/translate';\nimport { mapCountryCodeToCountryKey } from 'tradera/localization/countries';\nimport { mapLanguageCodeToLanguageKey } from 'tradera/localization/map-language-code-to-language-key';\nimport { selectMemberCountryCodeIso2 } from 'tradera/state/member/selectors';\nimport { webApiClient } from 'tradera/utils/http';\nimport { isSwedenCountryCodeOrUndefined } from 'tradera/localization/countrycode';\nimport { getLanguageFromCountryCode } from 'tradera/localization/languagecode';\nimport { useIsFeatureEnabled } from 'tradera/hooks/use-is-feature-enabled';\n\ntype ItemLocalizationProps = {\n itemLocalization: {\n selectedDescriptionLanguageCodeIso2: string;\n shippingFromCountryCodeIso2: string;\n };\n};\n\nexport const ItemLocalization = ({\n itemLocalization\n}: ItemLocalizationProps) => {\n const memberCountryCode = useSelector(selectMemberCountryCodeIso2);\n const { defaultCountryCodeIso2, defaultLanguageCodeIso2 } =\n useDefaultItemLocalizationSettingValues();\n const [\n selectedDescriptionLanguageCodeIso2,\n setSelectedDescriptionLanguageCodeIso2\n ] = useState(\n itemLocalization.selectedDescriptionLanguageCodeIso2 ||\n defaultLanguageCodeIso2\n );\n\n const [shippingFromCountryCodeIso2, setShippingFromCountryCodeIso2] =\n useState(\n itemLocalization.shippingFromCountryCodeIso2 ||\n defaultCountryCodeIso2\n );\n\n if (isSwedenCountryCodeOrUndefined(memberCountryCode)) {\n return null;\n }\n\n const onSelectedDescriptionLanguageChange = (languageCodeIso2: string) => {\n webApiClient.put('/member/profile/selected-description-language', {\n languageCodeIso2\n });\n setSelectedDescriptionLanguageCodeIso2(languageCodeIso2);\n };\n\n const onShippingFromCountryChange = (countryCodeIso2: string) => {\n webApiClient.put('/member/profile/shipping-from-country', {\n countryCodeIso2\n });\n setShippingFromCountryCodeIso2(countryCodeIso2);\n };\n return (\n \n );\n};\n\nexport const getDefaultSelectedDescriptionLanguageCodeIso2 = (\n memberLanguageCodeIso2: string | null,\n memberCountryCodeIso2: string,\n isFrenchDutchSelectable: boolean\n) => {\n const countryLanguageCode = getLanguageFromCountryCode(\n memberCountryCodeIso2,\n isFrenchDutchSelectable\n );\n\n return memberLanguageCodeIso2 === countryLanguageCode\n ? countryLanguageCode\n : 'sv';\n};\n\nexport const getDefaultShippingFromCountryCodeIso2 = (\n memberCountryCodeCodeIso2: string\n) => {\n return ['DK', 'SE'].includes(memberCountryCodeCodeIso2)\n ? memberCountryCodeCodeIso2\n : null;\n};\n\nexport const useDefaultItemLocalizationSettingValues = (): {\n defaultCountryCodeIso2: string | null;\n defaultLanguageCodeIso2: string;\n} => {\n const countryCode = useSelector(selectMemberCountryCodeIso2);\n const { language } = useCurrentLanguage();\n const isFrenchDutchSelectable = useIsFeatureEnabled(\n 'french-dutch-selectable'\n );\n\n return {\n defaultCountryCodeIso2:\n getDefaultShippingFromCountryCodeIso2(countryCode),\n defaultLanguageCodeIso2: getDefaultSelectedDescriptionLanguageCodeIso2(\n language,\n countryCode,\n isFrenchDutchSelectable\n )\n };\n};\n\ntype ItemLocalizationSettingsProps = {\n selectedDescriptionLanguageCodeIso2: string;\n shippingFromCountryCodeIso2: string | null;\n onSelectedDescriptionLanguageChange: (languageCodeIso2: string) => void;\n onShippingFromCountryChange: (countryCodeIso2: string) => void;\n narrowSelector?: boolean;\n};\nexport const ItemLocalizationSettings = ({\n selectedDescriptionLanguageCodeIso2,\n shippingFromCountryCodeIso2,\n onSelectedDescriptionLanguageChange,\n onShippingFromCountryChange,\n narrowSelector = false\n}: ItemLocalizationSettingsProps) => {\n const { t } = useTranslator();\n const memberCountryCode = useSelector(selectMemberCountryCodeIso2);\n const isFrenchDutchSelectable = useIsFeatureEnabled(\n 'french-dutch-selectable'\n );\n\n const descriptionLanguages = [\n ...new Set([\n getLanguageFromCountryCode(\n memberCountryCode,\n isFrenchDutchSelectable\n ),\n 'sv',\n 'en'\n ])\n ].map((code) => getLanguageOption(code, t));\n\n const shippingFromCountries = [\n getCountryOption('SE', t),\n getCountryOption('DK', t)\n ];\n\n const labelClassName = classNames(\n 'col-12',\n narrowSelector ? 'col-md-8' : 'col-md-6'\n );\n const selectorClassName = classNames(\n 'col-12',\n narrowSelector ? 'col-md-4' : 'col-md-6'\n );\n\n const showShippingFrom = ['DK', 'SE'].includes(memberCountryCode);\n const topRowClassName = classNames('row', showShippingFrom && 'mb-4');\n\n return (\n
\n
\n
\n \n {t('myt_settings_selectedDescriptionLanguage')}\n \n
\n {t('myt_settings_selectedDescriptionLanguage_info')}\n
\n
\n
\n \n onSelectedDescriptionLanguageChange(e.target.value)\n }>\n {descriptionLanguages.map(({ value, text }) => (\n \n ))}\n \n
\n
\n {showShippingFrom && shippingFromCountryCodeIso2 && (\n
\n
\n \n {t('myt_settings_shippingFromCountry')}\n \n
\n {t('myt_settings_shippingFromCountry_info')}\n
\n
\n
\n \n onShippingFromCountryChange(e.target.value)\n }>\n {shippingFromCountries.map(({ value, text }) => (\n \n ))}\n \n
\n
\n )}\n
\n );\n};\n\ntype Option = { value: string; text: string };\n\nconst getLanguageOption = (code: string, t: TFunction): Option => ({\n value: code,\n text: t(mapLanguageCodeToLanguageKey(code))\n});\n\nconst getCountryOption = (code: string, t: TFunction): Option => ({\n value: code,\n text: t(mapCountryCodeToCountryKey(code))\n});\n","export const getDefaultImageData = () => ({\n isListingImage: false,\n imageId: null,\n rotationDegrees: null,\n imageUrl: null,\n firstEmpty: false,\n isUploading: false\n});\n","/* eslint-disable better-mutation/no-mutation */\nimport { createSlice } from '@reduxjs/toolkit';\nimport {\n mapItemDetails,\n translatedDescriptionStates\n} from '../view-item/reducer';\n\ntype TraderaShopSlice = {\n product: object;\n itemDetails: object;\n isLoading: boolean;\n sellerItems?: [];\n translatedDescription: object | null;\n translatedDescriptionState: string | null;\n currentDescriptionLanguageCodeIso2: string | null;\n};\n\nconst traderaShopSlice = createSlice({\n name: 'traderaShop',\n initialState: {} as Partial,\n reducers: {\n setIsLoading: (state, { payload }) => {\n state.isLoading = payload;\n },\n setItemDetails: (state, { payload }) => {\n state.itemDetails = mapItemDetails(payload);\n },\n setProduct: (state, { payload }) => {\n state.product = payload;\n },\n setSellerItems: (state, { payload }) => {\n state.sellerItems = payload;\n },\n setCurrentDescriptionLanguageCodeIso2: (state, { payload }) => {\n state.currentDescriptionLanguageCodeIso2 = payload;\n },\n setTranslationOnDemandDisabled: (state) => {\n state.translatedDescription = null;\n state.translatedDescriptionState =\n translatedDescriptionStates.TRANSLATION_ON_DEMAND_DISABLED;\n },\n setTranslatedDescription: (state, { payload }) => {\n state.translatedDescription = payload;\n state.translatedDescriptionState =\n translatedDescriptionStates.DEFAULT;\n },\n resetTranslatedDescription: (state) => {\n state.translatedDescription = null;\n state.translatedDescriptionState =\n translatedDescriptionStates.DEFAULT;\n },\n beginLoadingTranslatedDescription: (state) => {\n state.translatedDescription = null;\n state.translatedDescriptionState =\n translatedDescriptionStates.LOADING;\n },\n failedLoadingTranslatedDescription: (state) => {\n state.translatedDescriptionState =\n translatedDescriptionStates.SERVER_ERROR;\n }\n }\n});\n\nexport default traderaShopSlice.reducer;\n\nexport const {\n setIsLoading,\n setItemDetails,\n setProduct,\n setSellerItems,\n setCurrentDescriptionLanguageCodeIso2,\n setTranslationOnDemandDisabled,\n setTranslatedDescription,\n resetTranslatedDescription,\n beginLoadingTranslatedDescription,\n failedLoadingTranslatedDescription\n} = traderaShopSlice.actions;\n","import qs from 'qs';\nimport type {\n CartRequest,\n CartSummaryApiResponse\n} from 'tradera/state/services/types/webapi-shopping-generated';\nimport { baseQuery } from './utils/webapi-base-query';\nimport { createApi } from '@reduxjs/toolkit/query/react';\nimport { isServer } from 'tradera/utils/nextjs';\n\nexport const tagTypes = { CartSummary: 'CartSummary' } as const;\n\n/**\n * Creates a query params object for RTK Query.\n * The query parameters for RTK Query is used as key for caching hence\n * must always be the same for the same query on server and client.\n */\nexport const getCartSummaryParams = (cartId: string): CartRequest => {\n return { cartId };\n};\n\nexport const cartApi = createApi({\n reducerPath: 'cartApi',\n baseQuery,\n tagTypes: Object.values(tagTypes),\n endpoints: (builder) => ({\n getCartSummary: builder.query({\n providesTags: [tagTypes.CartSummary],\n query: ({ cartId }) => {\n const baseUrl = isServer ? '' : '/api/webapi';\n return `${baseUrl}/shopping/cart?${qs.stringify({ cartId })}`;\n }\n })\n })\n});\n\nexport const { useGetCartSummaryQuery, endpoints, util } = cartApi;\n","import { useCallback } from 'react';\nimport { useDayJs } from 'tradera/hooks/use-day-js';\nimport { formatUtcDateAsSwedishTimeZoneDate } from 'tradera/utils/date';\n\nexport const useFormatUtcDateInSwedishTimeZone = () => {\n const dayjs = useDayJs();\n\n const formatUtcDateInSwedishTimeZone = useCallback(\n (transactionDate) =>\n formatUtcDateAsSwedishTimeZoneDate(transactionDate, dayjs),\n [dayjs]\n );\n\n return formatUtcDateInSwedishTimeZone;\n};\n","export const PAGE_NAMES = {\n Overview: 'MyTradera',\n BuyerActiveItems: 'MyTradera_ActiveBids',\n BuyerItemsLost: 'MyTradera_LostBids',\n MyTraderaLeaveFeedback: 'MyTradera_LeaveFeedback',\n MyTraderaMyFeedback: 'MyTradera_MyFeedback',\n SellerActive: 'MyTradera_ActiveItems',\n SellerList: 'MyTradera_SellerList',\n SellerSold: 'MyTradera_SoldItems',\n SellerUnsold: 'MyTradera_UnsoldItems',\n BuyerPurchases: 'MyTradera_Purchases',\n SavedSearches: 'MyTradera_SavedSearches',\n Settings: 'MyTradera_Settings',\n SettingsAccount: 'MyTradera_SettingsAccount',\n SettingsEmail: 'MyTradera_SettingsEmail',\n SettingsNotifications: 'MyTradera_SettingsNotifications',\n SettingsSeller: 'MyTradera_SettingsSeller',\n SettingsSecurity: 'MyTradera_SettingsSecurity',\n SettingsPayouts: 'MyTradera_SettingsPayouts',\n Payouts: 'MyTradera_Payouts',\n Invoices: 'MyTradera_Invoices',\n WishList: 'MyTradera_WishList',\n Picklist: 'picklist'\n} as const;\n","import { selectFiltersState } from 'tradera/apps/my-tradera/app/state/selectors/filters';\n\nconst getDefaultFilters = (filtersState, checkModifiersExist) => {\n return {\n 'filters[paging][page]':\n checkModifiersExist && filtersState.modifiers.paging\n ? filtersState.modifiers.paging.page\n : '',\n 'filters[paging][size]':\n checkModifiersExist && filtersState.modifiers.paging\n ? filtersState.modifiers.paging.size\n : '',\n 'filters[selectedFilterBar]': checkModifiersExist\n ? filtersState.modifiers.selectedFilterBar\n : '',\n 'filters[sellerFilters][feedbackLeft]':\n checkModifiersExist && filtersState.modifiers.sellerFilters\n ? filtersState.modifiers.sellerFilters.feedbackLeft\n : '',\n 'filters[sellerFilters][paid]':\n checkModifiersExist && filtersState.modifiers.sellerFilters\n ? filtersState.modifiers.sellerFilters.paid\n : '',\n 'filters[sellerFilters][shipped]':\n checkModifiersExist && filtersState.modifiers.sellerFilters\n ? filtersState.modifiers.sellerFilters.shipped\n : '',\n 'filters[sellerFilters][hidden]':\n checkModifiersExist && filtersState.modifiers.sellerFilters\n ? filtersState.modifiers.sellerFilters.hidden\n : '',\n 'filters[buyerFilters][feedbackLeft]':\n checkModifiersExist && filtersState.modifiers.buyerFilters\n ? filtersState.modifiers.buyerFilters.feedbackLeft\n : '',\n 'filters[buyerFilters][paid]':\n checkModifiersExist && filtersState.modifiers.buyerFilters\n ? filtersState.modifiers.buyerFilters.paid\n : '',\n 'filters[buyerFilters][hidden]':\n checkModifiersExist && filtersState.modifiers.buyerFilters\n ? filtersState.modifiers.buyerFilters.hidden\n : ''\n };\n};\n\n/** This matches query parameters to state filters.\n * @param {object} state\n * @returns {object}\n */\nexport const getAvailableQueryParams = (state) => {\n const filtersState = selectFiltersState(state);\n\n const checkModifiersExist =\n !!state && filtersState && filtersState.modifiers;\n\n const defaultFilters = getDefaultFilters(filtersState, checkModifiersExist);\n\n return {\n ...defaultFilters,\n 'filters[datatype]': checkModifiersExist\n ? filtersState.modifiers.datatype\n : '',\n 'filters[dateRange][field]':\n checkModifiersExist && filtersState.modifiers.dateRange\n ? filtersState.modifiers.dateRange.field\n : '',\n 'filters[dateRange][from]':\n checkModifiersExist && filtersState.modifiers.dateRange\n ? filtersState.modifiers.dateRange.from\n : '',\n 'filters[dateRange][to]':\n checkModifiersExist && filtersState.modifiers.dateRange\n ? filtersState.modifiers.dateRange.to\n : '',\n 'filters[hasBids]': checkModifiersExist\n ? filtersState.modifiers.hasBids\n : '',\n 'filters[itemCondition]': checkModifiersExist\n ? filtersState.modifiers.itemCondition\n : '',\n 'filters[itemType]': checkModifiersExist\n ? filtersState.modifiers.itemType\n : '',\n 'filters[processState]': checkModifiersExist\n ? filtersState.modifiers.processState\n : '',\n 'filters[purchaseType]': checkModifiersExist\n ? filtersState.modifiers.purchaseType\n : '',\n 'filters[query][properties]':\n checkModifiersExist && filtersState.modifiers.query\n ? filtersState.modifiers.query.properties\n : '',\n 'filters[query][scope]':\n checkModifiersExist && filtersState.modifiers.query\n ? filtersState.modifiers.query.scope\n : '',\n 'filters[query][searchQuery]':\n checkModifiersExist && filtersState.modifiers.query\n ? filtersState.modifiers.query.searchQuery\n : '',\n 'filters[reservePriceReached]': checkModifiersExist\n ? filtersState.modifiers.reservePriceReached\n : '',\n 'filters[searchType]': checkModifiersExist\n ? filtersState.modifiers.searchType\n : '',\n 'filters[sellerFilters][shippingBooked]':\n checkModifiersExist && filtersState.modifiers.sellerFilters\n ? filtersState.modifiers.sellerFilters.shippingBooked\n : '',\n 'filters[sort][order]':\n checkModifiersExist && filtersState.modifiers.sort\n ? filtersState.modifiers.sort.order\n : '',\n 'filters[sort][sorting]':\n checkModifiersExist && filtersState.modifiers.sort\n ? filtersState.modifiers.sort.sorting\n : '',\n 'filters[userIs]': checkModifiersExist\n ? filtersState.modifiers.userIs\n : '',\n 'filters[selectedFilterBar]': checkModifiersExist\n ? filtersState.modifiers.selectedFilterBar\n : ''\n };\n};\n\n/**\n * Checks if a query parameter is in the available parameters.\n * @param {function} getState\n * @param {object} locationQuery\n */\nexport const checkStateOfQueryParams = (getState, locationQuery) => {\n const check = getAvailableQueryParams(getState());\n const checkItem = (item) =>\n !!check[item] &&\n check[item].toString() !== locationQuery[item].toString();\n return Object.keys(check).some((item) => {\n if (!check[item] || !locationQuery[item]) {\n return false;\n }\n return checkItem(item) ? true : false;\n });\n};\n","import type {\n MarkAsPaidBySellerApiRequest,\n PickListBuyerV2ApiDto,\n SetItemShippedApiRequest,\n SetTransactionVisibilityApiRequest\n} from 'tradera/state/services/types/webapi-member-generated';\n\ntype FieldUpdate =\n | {\n isMarkedAsShipped: boolean;\n }\n | {\n isMarkedAsPaidBySeller: boolean;\n }\n | {\n hiddenBySeller: boolean;\n };\n\nconst setBuyerItemProperty = (\n items: PickListBuyerV2ApiDto[],\n purchaseOrderId: string,\n update: FieldUpdate\n) => {\n return items.map((buyer) => ({\n ...buyer,\n items: buyer.items?.map((item) => {\n return purchaseOrderId === item.purchaseOrderId\n ? {\n ...item,\n ...update\n }\n : item;\n })\n }));\n};\n\nexport const updateShippingStatusForBuyerItems = (\n patch: SetItemShippedApiRequest,\n buyers?: PickListBuyerV2ApiDto[] | null\n) => {\n return setBuyerItemProperty(buyers ?? [], patch.purchaseOrderId, {\n isMarkedAsShipped: patch.shipped\n });\n};\n\nexport const updatePaidStatusForBuyerItems = (\n patch: MarkAsPaidBySellerApiRequest,\n buyers?: PickListBuyerV2ApiDto[] | null\n) => {\n return setBuyerItemProperty(buyers ?? [], patch.purchaseOrderId, {\n isMarkedAsPaidBySeller: patch.paidConfirmed\n });\n};\n\nexport const updateVisibilityStatusForBuyerItems = (\n patch: SetTransactionVisibilityApiRequest,\n buyers?: PickListBuyerV2ApiDto[] | null\n) => {\n return setBuyerItemProperty(buyers ?? [], patch.purchaseOrderId, {\n hiddenBySeller: patch.hidden\n })\n .map((buyer) => ({\n ...buyer,\n items: buyer.items?.filter(\n (item) => item.hiddenBySeller !== patch.hidden\n )\n }))\n .filter((buyer) => buyer.items?.length ?? 0 > 0);\n};\n","import qs from 'qs';\nimport { createApi } from '@reduxjs/toolkit/query/react';\nimport {\n PickListFilterShippedStatus,\n type MarkAsPaidBySellerApiRequest,\n type MarkAsPaidBySellerApiResponse,\n type MemberPickListV2ApiResponse,\n type PicklistV2Request,\n type SetItemShippedApiRequest,\n type SetItemShippedApiResponse,\n type SetTransactionVisibilityApiRequest,\n type SetTransactionVisibilityApiResponse,\n PickListFilterPaidStatus\n} from 'tradera/state/services/types/webapi-member-generated';\nimport { baseQuery } from 'tradera/state/services/utils/webapi-base-query';\nimport {\n updatePaidStatusForBuyerItems,\n updateShippingStatusForBuyerItems,\n updateVisibilityStatusForBuyerItems\n} from './pick-list-item-updater';\nimport type { AppDispatch } from 'tradera/state/configure-store';\n\nexport const PickListTagTypes = { PickListItems: 'PickListItems' } as const;\nconst getPickListItemsCacheKeys: Set = new Set();\n\nexport const pickListApi = createApi({\n reducerPath: 'pickListApi',\n baseQuery,\n tagTypes: Object.values(PickListTagTypes),\n endpoints: (builder) => ({\n markAsShipped: builder.mutation<\n SetItemShippedApiResponse,\n SetItemShippedApiRequest\n >({\n query: (payload) => {\n return {\n url: '/api/webapi/member/selling/item-shipped',\n method: 'POST',\n body: payload\n };\n },\n async onQueryStarted(patch, { dispatch, queryFulfilled }) {\n const patchResults = [];\n for (const cacheKey of getPickListItemsCacheKeys) {\n const patchResult = dispatch(\n pickListApi.util.updateQueryData(\n 'getPickListItems',\n cacheKey,\n (draft) => {\n const updatedItems =\n updateShippingStatusForBuyerItems(\n patch,\n draft.items\n );\n\n Object.assign(draft, {\n items: updatedItems\n });\n }\n )\n );\n\n patchResults.push(patchResult);\n }\n\n try {\n await queryFulfilled;\n } catch {\n for (const patch of patchResults) {\n patch.undo();\n }\n }\n }\n }),\n markAsPaidBySeller: builder.mutation<\n MarkAsPaidBySellerApiResponse,\n MarkAsPaidBySellerApiRequest\n >({\n query: (payload) => {\n return {\n url: '/api/webapi/member/selling/marked-as-paid-by-seller',\n method: 'POST',\n body: payload\n };\n },\n async onQueryStarted(patch, { dispatch, queryFulfilled }) {\n const patchResults = [];\n for (const cacheKey of getPickListItemsCacheKeys) {\n const patchResult = dispatch(\n pickListApi.util.updateQueryData(\n 'getPickListItems',\n cacheKey,\n (draft) => {\n const updatedItems =\n updatePaidStatusForBuyerItems(\n patch,\n draft.items\n );\n\n Object.assign(draft, {\n items: updatedItems\n });\n }\n )\n );\n\n patchResults.push(patchResult);\n }\n\n try {\n await queryFulfilled;\n } catch {\n for (const patch of patchResults) {\n patch.undo();\n }\n }\n }\n }),\n setItemVisibility: builder.mutation<\n SetTransactionVisibilityApiResponse,\n SetTransactionVisibilityApiRequest\n >({\n query: (payload) => {\n return {\n url: '/api/webapi/member/transaction-visibility',\n method: 'POST',\n body: payload\n };\n },\n transformResponse: (res: SetTransactionVisibilityApiResponse) => {\n if (res?.responseStatus?.errorCode) {\n throw new Error('Error occured');\n }\n\n return res;\n },\n async onQueryStarted(patch, { dispatch, queryFulfilled }) {\n /*\n * On each request to getPickListItems we store the request in a list.\n * The request is used as a key to the cache for a request. By storing all the\n * requests it allows us to go through the cache and update the items and\n * perform optimistic updates.\n *\n * So what we do here is go through the cache of all the requests that the user has\n * done to getPickListItems\n */\n const patchResults = [];\n for (const cacheKey of getPickListItemsCacheKeys) {\n /*\n * Here we are accessing the cache for getPickListItems and performing an update\n * on the items, simulating what the backend would do to them. draft is the items\n * and patch is the mutation arguments, in this case: purchaseOrderId and hidden.\n *\n * updateVisibilityStatusForBuyerItems will go through all the buyers and set\n * isHiddenBySeller to true or false depending on what the patch.hidden is,\n * then filter away all the items that is no longer matching the patch\n */\n const patchResult = dispatch(\n pickListApi.util.updateQueryData(\n 'getPickListItems',\n cacheKey,\n (draft) => {\n const updatedBuyers =\n updateVisibilityStatusForBuyerItems(\n patch,\n draft.items\n );\n\n Object.assign(draft, {\n items: updatedBuyers\n });\n }\n )\n );\n\n /*\n * We add every patch to a list of patches. If the request fails\n * then we will go through every patch and undo it.\n */\n patchResults.push(patchResult);\n }\n\n try {\n await queryFulfilled;\n } catch {\n for (const patch of patchResults) {\n patch.undo();\n }\n }\n },\n invalidatesTags: (resp, err, req) => {\n const cacheKeys = [...getPickListItemsCacheKeys];\n\n /*\n * If we have more than one page, then we want to invalidate all tags\n * since the items will shift around\n */\n const hasMoreThanOnePage = cacheKeys.some(\n (key) => key?.skip ?? 0 >= (key?.take ?? -1)\n );\n\n if (hasMoreThanOnePage) {\n return [\n {\n type: PickListTagTypes.PickListItems\n }\n ];\n }\n\n /*\n * If the request goes well, then we do want to invalidate some tags.\n * By invalidating the tags we are telling RTKQ that the cache of these requests is\n * no longer valid and we want to refetch that request the next time it is requested.\n * We decide which tags to be invalidated by going through all cacheKeys, which\n * conveniently has the same id as the ids to the tags.\n *\n * Since we can easily remove items from the cache, it is not as easy to add items.\n * Therefore we will invalidate those tags where an item has been added. When we\n * hide an item, that means that we added an item to the request that has the filter\n * retrieveHidden = false. So we can invalidate all the tags where this item would now\n * appear (key.retrieveHidden === req.hidden)\n */\n const tagsToInvalidate = cacheKeys\n .filter((key) => key.retrieveHidden === req.hidden)\n .map((key) => ({\n type: PickListTagTypes.PickListItems,\n id: JSON.stringify(key)\n }));\n\n return tagsToInvalidate;\n }\n }),\n getPickListItems: builder.query<\n MemberPickListV2ApiResponse,\n PicklistV2Request\n >({\n query: (query) => {\n getPickListItemsCacheKeys.add(query);\n\n const stringified = qs.stringify(query);\n return `/api/webapi/member/selling/picklist-v2?${stringified}`;\n },\n\n providesTags: (resp, err, req) => [\n {\n type: PickListTagTypes.PickListItems,\n id: JSON.stringify(req)\n }\n ]\n })\n })\n});\n\nexport const invalidateTagsOnShippedStatus = () => (dispatch: AppDispatch) => {\n const cacheKeys = [...getPickListItemsCacheKeys];\n const tagsToInvalidate = cacheKeys\n .filter((key) => key.shippedStatus !== PickListFilterShippedStatus.All)\n .map((key) => ({\n type: PickListTagTypes.PickListItems,\n id: JSON.stringify(key)\n }));\n\n dispatch(pickListApi.util.invalidateTags(tagsToInvalidate));\n};\n\nexport const invalidateTagsOnPaidStatus = () => (dispatch: AppDispatch) => {\n const cacheKeys = [...getPickListItemsCacheKeys];\n const tagsToInvalidate = cacheKeys\n .filter((key) => key.paidStatus !== PickListFilterPaidStatus.All)\n .map((key) => ({\n type: PickListTagTypes.PickListItems,\n id: JSON.stringify(key)\n }));\n\n dispatch(pickListApi.util.invalidateTags(tagsToInvalidate));\n};\n\nexport const {\n useMarkAsShippedMutation,\n useMarkAsPaidBySellerMutation,\n useSetItemVisibilityMutation,\n useGetPickListItemsQuery\n} = pickListApi;\n","import qs from 'qs';\nimport {\n utilizeCancelToken,\n checkResponseVersion,\n finalizeResponse,\n handleError\n} from 'tradera/utils/api';\nimport { touchWebClient } from 'tradera/utils/http';\n\n/**\n *\n * @param {string} endpoint\n * @param {object} params\n * @param {string} baseURL\n * @param version\n * @returns {Promise<*>}\n */\nexport const getSearchResults = async (\n endpoint,\n params,\n baseURL = '',\n version\n) => {\n if (!params) {\n if (process && process.env && process.env.NODE_ENV !== 'production') {\n console.warn(\n 'getSearchResults must have queryParams as the first argument'\n );\n }\n return;\n }\n\n const { cancel, cancelToken } = utilizeCancelToken('fetchCategoryList');\n if (cancel) cancel();\n const { next, ...filteredParams } = params;\n return touchWebClient\n .get(`${endpoint}.json`, {\n cancelToken,\n baseURL,\n params: filteredParams,\n paramsSerializer: function (params) {\n return qs.stringify(params, { arrayFormat: 'repeat' });\n }\n })\n .then(version ? checkResponseVersion(version) : (response) => response)\n .then(finalizeResponse())\n .catch(handleError());\n};\n","export default {\n ADD_RECENTLY_VIEWED: 'ITEMS/ADD_RECENTLY_VIEWED',\n SET_RECENTLY_VIEWED: 'ITEMS/SET_RECENTLY_VIEWED',\n INITIALIZE: 'ITEMS/INITIALIZE',\n WISHLIST: 'ITEMS/WISHLIST',\n WISHLIST_ADD_RANGE: 'ITEMS/WISHLIST_ADD_RANGE',\n WISHLIST_REMOVE_RANGE: 'ITEMS/WISHLIST_REMOVE_RANGE',\n SETTINGS: 'ITEMS/SETTINGS'\n};\n","/* eslint-disable better-mutation/no-mutation */\n\nimport { createSlice } from '@reduxjs/toolkit';\nimport getInitialState, { MODAL_STATUS } from './initial-state';\nimport utils from './utils';\nimport {\n deleteShipment,\n createShipmentCheckout,\n getShippingOptions,\n updateShipment,\n markAsBooked,\n markAsShipped,\n getItemWithoutShipment,\n getPaymentOptions,\n createShipment,\n getShippingConfirmation\n} from './actions';\n\nconst shippingCheckoutSlice = createSlice({\n name: 'shippingCheckout',\n initialState: getInitialState(),\n reducers: {\n openNonIntegratedModal: (state, { payload }) => {\n state.nonIntegrated.providerId = payload;\n state.nonIntegrated.open = true;\n },\n closeNonIntegratedModal: (state) => {\n state.nonIntegrated.providerId = null;\n state.nonIntegrated.open = false;\n state.nonIntegrated.markedAsBooked = false;\n state.nonIntegrated.markedAsShipped = false;\n state.nonIntegrated.hasError = false;\n state.nonIntegrated.isUpdating = false;\n },\n setSelectedPayment: (state, { payload }) => {\n state.payment.selectedPayment = payload;\n state.payment.paymentMethodData = null;\n state.checkoutSummary.hasError = false;\n },\n setPaymentMethodData: (state, { payload }) => {\n state.payment.paymentMethodData = payload;\n },\n setCheckoutSummaryFetching: (state, { payload }) => {\n state.checkoutSummary.isFetching = payload;\n state.checkoutSummary.hasError = false;\n state.isUpdating = payload;\n },\n setCheckoutSummaryHasError: (state, { payload }) => {\n state.checkoutSummary.hasError = payload;\n state.checkoutSummary.isFetching = false;\n state.isUpdating = false;\n state.payment.modal.status = MODAL_STATUS.ERROR;\n },\n openPaymentModal: (state, { payload }) => {\n const { open, status, paymentAttemptId } = payload;\n state.payment.modal = {\n open,\n status,\n paymentAttemptId\n };\n },\n closePaymentModal: (state) => {\n state.payment.modal = {\n open: '',\n status: MODAL_STATUS.START\n };\n },\n setTermsAccepted: (state, { payload }) => {\n state.checkoutSummary.termsAccepted = payload;\n },\n resetOngoingPaymentAttempt: (state) => {\n state.ongoingPaymentAttempt = {\n shipmentPaymentAttemptId: null,\n paymentMethod: null\n };\n }\n },\n extraReducers: (builder) => {\n // create\n builder.addCase(\n createShipmentCheckout.fulfilled,\n (state, { payload }) => {\n state.shipments = payload.shipments;\n state.payment = {\n ...state.payment,\n shipmentCheckoutId: payload.shipmentCheckoutId\n };\n state.sellerPhoneNumber = payload.sellerPhone;\n state.ongoingPaymentAttempt = {\n ...state.ongoingPaymentAttempt,\n ...payload.ongoingPaymentAttempt\n };\n\n state.isFetching = false;\n state.hasFetchError = false;\n\n const totalShippingCost = payload.shipments.reduce(\n (memo, item) => memo + item.shippingPrice,\n 0\n );\n\n state.checkoutSummary.totalCost = totalShippingCost;\n }\n );\n builder.addCase(createShipmentCheckout.pending, (state) => {\n state.isFetching = true;\n state.hasFetchError = false;\n });\n builder.addCase(createShipmentCheckout.rejected, (state) => {\n state.isFetching = false;\n state.hasFetchError = true;\n });\n\n // delete\n builder.addCase(deleteShipment.fulfilled, (state, { payload }) => {\n const { shipmentCheckoutId, shipmentId } = payload;\n\n state.payment = {\n ...state.payment,\n shipmentCheckoutId: shipmentCheckoutId\n };\n state.shipments = state.shipments.filter(\n (shipment) => shipment.shipmentId !== shipmentId\n );\n state.hasDeleteError = false;\n state.isDeleting = false;\n\n const totalShippingCost = state.shipments.reduce(\n (memo, item) => memo + item.shippingPrice,\n 0\n );\n\n state.checkoutSummary.totalCost = totalShippingCost;\n });\n builder.addCase(deleteShipment.pending, (state) => {\n state.hasDeleteError = false;\n state.isDeleting = true;\n });\n builder.addCase(deleteShipment.rejected, (state) => {\n state.hasDeleteError = true;\n state.isDeleting = false;\n });\n\n // update\n builder.addCase(\n updateShipment.fulfilled,\n (state, { meta, payload }) => {\n const { arg } = meta;\n const { streetName, ...cleanedBuyerAddress } = arg.buyerAddress;\n state.shipments = state.shipments.map((shipment) =>\n shipment.shipmentId === arg.shipmentId\n ? {\n ...shipment,\n receiver: {\n ...shipment.receiver,\n ...cleanedBuyerAddress,\n street: arg.buyerAddress.streetName\n },\n mostPreciseErrorKey: null,\n isUpdatingShipment: false\n }\n : shipment\n );\n\n state.createdShipmentCheckoutId = payload.shipmentCheckoutId;\n state.error = null;\n state.isUpdating = false;\n }\n );\n builder.addCase(updateShipment.pending, (state, { meta }) => {\n const { arg } = meta;\n state.shipments = state.shipments.map((shipment) =>\n shipment.shipmentId === arg.shipmentId\n ? {\n ...shipment,\n isUpdatingShipment: true,\n mostPreciseErrorKey: null\n }\n : shipment\n );\n\n state.isUpdating = true;\n });\n builder.addCase(updateShipment.rejected, (state, { meta, payload }) => {\n const { arg } = meta;\n state.shipments = state.shipments.map((shipment) =>\n shipment.shipmentId === arg.shipmentId\n ? {\n ...shipment,\n isUpdatingShipment: false,\n mostPreciseErrorKey: payload.mostPreciseErrorKey\n }\n : shipment\n );\n\n state.error = {\n translationKey: payload.mostPreciseErrorKey\n };\n state.isUpdating = false;\n });\n\n // create shipment\n builder.addCase(\n createShipment.fulfilled,\n (state, { meta, payload }) => {\n const { arg } = meta;\n\n const { item } = state.itemWithoutShipment;\n state.itemWithoutShipment = {\n ...state.itemWithoutShipment,\n item: {\n ...state.itemWithoutShipment.item,\n selectedShipping: {\n providerId:\n arg.providerId ||\n item?.selectedShipping.providerId,\n productId:\n arg.productId ||\n item?.selectedShipping.productId\n }\n }\n };\n\n state.createdShipmentCheckoutId = payload.shipmentCheckoutId;\n state.error = null;\n state.isCreating = false;\n }\n );\n\n builder.addCase(createShipment.pending, (state) => {\n state.isCreating = true;\n });\n\n builder.addCase(createShipment.rejected, (state, { meta, payload }) => {\n const { arg } = meta;\n\n const { item } = state.itemWithoutShipment;\n state.itemWithoutShipment = {\n ...state.itemWithoutShipment,\n item: {\n ...state.itemWithoutShipment.item,\n selectedShipping: {\n providerId:\n arg.providerId || item?.selectedShipping.providerId,\n productId:\n arg.productId || item?.selectedShipping.productId\n }\n }\n };\n\n state.error = {\n translationKey: payload?.mostPreciseErrorKey,\n hasUnSupportedProduct: payload?.hasUnSupportedProduct\n };\n state.isCreating = false;\n });\n\n // get shipping info\n builder.addCase(\n getItemWithoutShipment.fulfilled,\n (state, { payload }) => {\n state.itemWithoutShipment = {\n item: payload.item,\n buyerContactDetails: payload.buyerContactDetails,\n isQuickFlowPossible: payload.isQuickFlowPossible,\n isFetching: false,\n error: null\n };\n }\n );\n builder.addCase(getItemWithoutShipment.pending, (state) => {\n state.itemWithoutShipment = {\n isFetching: true,\n error: null\n };\n });\n builder.addCase(\n getItemWithoutShipment.rejected,\n (state, { payload }) => {\n state.itemWithoutShipment = {\n isFetching: false,\n error: {\n errorCode: payload?.errorCode\n }\n };\n }\n );\n\n // get shipping options\n builder.addCase(getShippingOptions.fulfilled, (state, { payload }) => {\n const {\n data,\n bringEnabled,\n postnordEnabled,\n dhlEnabled,\n schenkerEnabled\n } = payload;\n //Decorate products with cost & uuid for shipping dialog:\n const productsDecorated = data.productsPerWeightSpan.map(\n (weightClass) => {\n const productsWithDecoration = weightClass.products.map(\n (product) => {\n let outage = false;\n switch (product.providerId) {\n case 'BringDenmark':\n outage = !bringEnabled;\n break;\n case 'PostNordParcel':\n outage = !postnordEnabled;\n break;\n case 'SchenkerPrivpak':\n outage = !schenkerEnabled;\n break;\n case 'DHL':\n outage = !dhlEnabled;\n break;\n default:\n outage = false;\n break;\n }\n\n return {\n ...product,\n productId: product.id,\n cost: product.price,\n uuid: utils.getUuid(),\n outage: outage\n };\n }\n );\n\n const filteredProductsWithDecoration =\n productsWithDecoration.filter(\n (shippingProvider) =>\n shippingProvider.providerId !==\n 'BringDenmark' || bringEnabled\n );\n return {\n ...weightClass,\n products: filteredProductsWithDecoration\n };\n }\n );\n state.shipping.shippingOptions = productsDecorated;\n\n state.shipping.isShippingFetching = false;\n state.shipping.hasShippingError = false;\n });\n builder.addCase(getShippingOptions.pending, (state) => {\n state.shipping.isShippingFetching = true;\n state.shipping.hasShippingError = false;\n });\n builder.addCase(getShippingOptions.rejected, (state) => {\n state.shipping.isShippingFetching = false;\n state.shipping.hasShippingError = true;\n });\n\n // mark as booked\n builder.addCase(markAsBooked.fulfilled, (state) => {\n state.nonIntegrated.markedAsBooked = true;\n state.nonIntegrated.hasError = false;\n state.nonIntegrated.isUpdating = false;\n });\n builder.addCase(markAsBooked.pending, (state) => {\n state.nonIntegrated.markedAsBooked = true;\n state.nonIntegrated.hasError = false;\n state.nonIntegrated.isUpdating = true;\n });\n builder.addCase(markAsBooked.rejected, (state) => {\n state.nonIntegrated.markedAsBooked = false;\n state.nonIntegrated.hasError = true;\n state.nonIntegrated.isUpdating = false;\n });\n\n // mark as shipped\n builder.addCase(markAsShipped.fulfilled, (state) => {\n state.nonIntegrated.markedAsShipped = true;\n state.nonIntegrated.hasError = false;\n state.nonIntegrated.isUpdating = false;\n });\n builder.addCase(markAsShipped.pending, (state) => {\n state.nonIntegrated.markedAsShipped = true;\n state.nonIntegrated.hasError = false;\n state.nonIntegrated.isUpdating = true;\n });\n builder.addCase(markAsShipped.rejected, (state) => {\n state.nonIntegrated.markedAsShipped = false;\n state.nonIntegrated.hasError = true;\n state.nonIntegrated.isUpdating = false;\n });\n\n // get payment options\n builder.addCase(getPaymentOptions.fulfilled, (state, { payload }) => {\n const { paymentOptions } = payload;\n state.payment = {\n ...state.payment,\n paymentOptions: paymentOptions\n };\n });\n builder.addCase(getPaymentOptions.pending, (state) => {\n state.payment = {\n ...state.payment,\n isFetching: true,\n hasError: null\n };\n });\n builder.addCase(getPaymentOptions.rejected, (state) => {\n state.payment = {\n ...state.payment,\n isFetching: false,\n hasError: true\n };\n });\n // Get shipping confirmation\n builder.addCase(\n getShippingConfirmation.fulfilled,\n (state, { payload }) => {\n state.shippingConfirmation.data = payload;\n state.shippingConfirmation.isFetching = false;\n state.shippingConfirmation.hasError = false;\n }\n );\n builder.addCase(getShippingConfirmation.pending, (state) => {\n state.shippingConfirmation.isFetching = true;\n state.shippingConfirmation.hasError = false;\n });\n builder.addCase(\n getShippingConfirmation.rejected,\n (state, { payload }) => {\n state.shippingConfirmation.isFetching = false;\n\n if (payload.isLongPolling) {\n state.shippingConfirmation.isLongPolling =\n payload.isLongPolling;\n } else {\n state.shippingConfirmation.hasError = true;\n }\n }\n );\n }\n});\n\nexport const {\n openNonIntegratedModal,\n closeNonIntegratedModal,\n setSelectedPayment,\n setPaymentMethodData,\n setCheckoutSummaryFetching,\n setCheckoutSummaryHasError,\n openPaymentModal,\n closePaymentModal,\n setTermsAccepted,\n resetOngoingPaymentAttempt\n} = shippingCheckoutSlice.actions;\n\nexport default shippingCheckoutSlice.reducer;\n","import { getSyiSlice } from 'tradera/apps/syi/state/selectors/syi';\n\nexport const selectSyiShipping = (state) => getSyiSlice(state).shipping;\n\nexport const selectRecommendedWeight = (state) =>\n selectSyiShipping(state).recommendedWeight;\n\nexport const selectShippingRecommendations = (state) =>\n selectSyiShipping(state).shippingRecommendations;\n\nexport const selectShippingProviderIsAnOption = (providerId) => (state) =>\n selectSyiShipping(state)\n .shippingByWeight.flatMap((group) => group.products)\n .map((p) => p.providerId)\n .includes(providerId);\n","export enum PaidStatuses {\n UNCOMMITTED = 'Uncommitted',\n UNPAID = 'Unpaid',\n MARKED_AS_PAID_BY_BUYER = 'MarkedAsPaidByBuyer',\n MARKED_AS_PAID_BY_SELLER = 'MarkedAsPaidBySeller',\n PAYMENT_PENDING = 'PaymentPending',\n PAID = 'Paid',\n EXPIRED = 'Expired'\n}\n","import { v4 as uuidv4 } from 'uuid';\n\nexport const getUuid = () => uuidv4();\n\n// Export object for Sinon stubbing\nexport default {\n getUuid\n};\n","import React from 'react';\nimport {\n useLocalizedPriceFormatter,\n useLocalizedPriceFormatterRoundingUp\n} from 'tradera/localization/use-localized-price-formatter';\n\ntype LocalizedPriceProps = {\n className?: string;\n price?: number;\n renderZero?: boolean;\n roundUp?: boolean;\n};\n\nconst LocalizedPrice = ({\n className,\n price,\n renderZero,\n roundUp\n}: LocalizedPriceProps) => {\n const localizedPriceFormatter = useLocalizedPriceFormatter();\n const localizedPriceFormatterRoundingUp =\n useLocalizedPriceFormatterRoundingUp();\n\n if (!price && !(renderZero && price === 0)) {\n return null;\n }\n\n const formattedPrice = roundUp\n ? localizedPriceFormatterRoundingUp(price)\n : localizedPriceFormatter(price);\n\n return formattedPrice ? (\n {formattedPrice}\n ) : null;\n};\n\nexport default LocalizedPrice;\n","import React, { useEffect, useMemo } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { setSelectedPayment } from 'tradera/state/views/invoice-checkout/reducer';\nimport { LocalLoader } from 'tradera/components/loader/loader';\nimport { useCurrentLanguage, useTranslator } from 'tradera/lang/translate';\nimport { PAYMENT_OPTIONS } from 'tradera/state/views/invoice-checkout/initial-state';\nimport { selectInvoiceCheckout } from 'tradera/state/views/invoice-checkout/selector';\nimport PaymentMethodLogo from 'tradera/components/payment-method/payment-method-logo';\nimport api from 'tradera/state/views/invoice-checkout/api';\nimport qs from 'qs';\nimport { useFetchData } from 'tradera/hooks/use-fetch-data';\n\nimport './braintree-drop-in.scss';\nimport { Button } from 'tradera/components/atoms/button/button';\nimport { PaymentMethodName } from 'tradera/components/payment-method/payment-method-name';\n\n// Testing card number for dev environment: 4111111111111111\n\nexport var paymentInstance = null;\n\nconst BraintreeDropIn = ({\n paymentOptions,\n selected,\n onPaymentMethodRequestable\n}) => {\n const dispatch = useDispatch();\n const { t } = useTranslator();\n const isNativeAppWithApplyPaySupport = useSelector(\n (state) => state.environment.isNativeAppWithApplyPaySupport\n );\n\n const preselectedPaymentOption = qs.parse(window.location.search, {\n ignoreQueryPrefix: true\n })['payment-option'];\n\n useEffect(() => {\n if (!preselectedPaymentOption) return;\n\n dispatch(setSelectedPayment(preselectedPaymentOption));\n }, [preselectedPaymentOption, dispatch]);\n\n const { paymentOption } = paymentOptions;\n\n const handlePaymentSelected = () => {\n const url = new URL(window.location.href);\n if (!selected) {\n if (isNativeAppWithApplyPaySupport) {\n url.searchParams.set('payment-option', paymentOption);\n return (window.location = url.toString());\n }\n dispatch(setSelectedPayment(paymentOption));\n }\n };\n\n return (\n <>\n
\n \n \n
\n \n \n
\n
\n {paymentOption === PAYMENT_OPTIONS.VISA_MASTERCARD &&\n t('payment_method_info_visaMasterCard')}\n {paymentOption === PAYMENT_OPTIONS.APPLEPAY &&\n t('payment_method_info_applePay')}\n {paymentOption === PAYMENT_OPTIONS.GOOGLEPAY &&\n t('payment_method_info_googlePay')}\n
\n \n
\n {selected && (\n
\n \n
\n )}\n \n );\n};\n\nconst DropInSelected = ({ paymentOption, onPaymentMethodRequestable }) => {\n const { language } = useCurrentLanguage();\n const { t } = useTranslator();\n const { invoiceId, amountOwed: totalCost } = useSelector(\n selectInvoiceCheckout\n );\n\n const fetchParams = useMemo(() => {\n return {\n invoiceId: invoiceId,\n paymentOption: paymentOption\n };\n }, [invoiceId, paymentOption]);\n\n //Fetch Braintree Token\n const { data, isLoading, isRejected, isResolved, retryFetch } =\n useFetchData(\n api.getBraintreeToken,\n fetchParams,\n 'Invoice Checkout Braintree token'\n );\n\n useEffect(() => {\n const dropIn = async () => {\n if (isResolved && !paymentInstance) {\n const { clientToken } = data;\n await initDropIn(\n clientToken,\n language,\n paymentOption,\n totalCost,\n onPaymentMethodRequestable\n );\n }\n };\n dropIn();\n }, [\n data,\n isResolved,\n language,\n paymentOption,\n totalCost,\n onPaymentMethodRequestable\n ]);\n\n // Update amount in configuration for Apple Pay, Google Pay\n useEffect(() => {\n let paymentProvider = null;\n if (paymentInstance) {\n switch (paymentOption) {\n case PAYMENT_OPTIONS.APPLEPAY:\n paymentProvider = 'applepay';\n break;\n case PAYMENT_OPTIONS.GOOGLEPAY:\n paymentProvider = 'googlepay';\n break;\n default:\n paymentProvider = null;\n break;\n }\n }\n if (paymentProvider) {\n paymentInstance.updateConfiguration(\n paymentProvider,\n 'amount',\n totalCost\n );\n }\n }, [paymentOption, totalCost]);\n\n // Effect to reset paymentIntance when switching payment option\n useEffect(() => {\n return () => {\n // eslint-disable-next-line better-mutation/no-mutation\n paymentInstance = null; // Reset paymentInstance when unmounting\n };\n }, [paymentOption]);\n\n return (\n
\n {isRejected && (\n
\n
\n

{t('error_somethingWentWrong')}

\n
\n retryFetch()}>\n {t('error_reloadPage')}\n \n
\n )}\n {isLoading && (\n \n \n
\n )}\n \n
\n
\n \n );\n};\n\nconst initDropIn = async (\n clientToken,\n language,\n paymentOption,\n totalCost,\n onPaymentMethodRequestable\n) => {\n const callback = (err, dropinInstance) => {\n if (err) {\n return null;\n }\n\n if (dropinInstance.isPaymentMethodRequestable()) {\n onPaymentMethodRequestable(null, true);\n }\n\n dropinInstance.on(\n 'paymentMethodRequestable',\n function (paymentMethodRequestable) {\n onPaymentMethodRequestable(paymentMethodRequestable, true);\n }\n );\n\n dropinInstance.on('noPaymentMethodRequestable', function () {\n onPaymentMethodRequestable(null, false);\n });\n\n // eslint-disable-next-line better-mutation/no-mutation\n paymentInstance = dropinInstance;\n };\n\n const paymentOptions = getDropInOptions(paymentOption, totalCost);\n var options = {\n authorization: clientToken,\n container: '#dropin-container',\n locale: language,\n vaultManager: true,\n dataCollector: {\n kount: true // Required if Kount fraud data collection is enabled\n },\n card: {\n vault: {\n allowVaultCardOverride: true,\n vaultCard: false\n }\n },\n ...paymentOptions\n };\n\n const dropin = await import(\n /* webpackChunkName: \"braintree-web-drop-in\" */ 'braintree-web-drop-in'\n );\n await dropin.create(options, callback);\n};\n\nconst getDropInOptions = (paymentOption, totalCost) => {\n switch (paymentOption) {\n case PAYMENT_OPTIONS.VISA_MASTERCARD:\n return {\n threeDSecure: true\n };\n case PAYMENT_OPTIONS.APPLEPAY:\n return {\n card: false,\n paypal: false,\n googlePay: false,\n applePay: {\n displayName: 'Tradera',\n paymentRequest: {\n total: {\n label: 'Tradera',\n amount: totalCost.toString()\n },\n requiredBillingContactFields: ['postalAddress']\n }\n }\n };\n case PAYMENT_OPTIONS.GOOGLEPAY:\n return {\n card: false,\n paypal: false,\n applePay: false,\n threeDSecure: true,\n googlePay: {\n googlePayVersion: 2,\n merchantId: 'BCR2DN6TU7KPRDTQ',\n transactionInfo: {\n totalPriceStatus: 'FINAL',\n totalPrice: totalCost.toString(),\n currencyCode: 'SEK'\n },\n allowedPaymentMethods: [\n {\n type: 'CARD',\n parameters: {\n billingAddressRequired: true,\n billingAddressParameters: {\n format: 'FULL'\n }\n }\n }\n ]\n }\n };\n default:\n return {};\n }\n};\n\nexport default BraintreeDropIn;\n","import Analytics from 'packages/analytics';\nimport cookieUtil from 'tradera/utils/cookie';\nimport { setPreferredCurrency } from './reducer';\nimport { selectIsLoggedIn } from 'tradera/state/member/selectors';\nimport { touchWebClient } from 'tradera/utils/http';\nimport { selectPreferredLanguage } from 'tradera/state/language/selectors';\n\nexport const setPreferredCurrencyThunk =\n (currencyCode, triggerGa = true) =>\n async (dispatch, getState) => {\n if (triggerGa) {\n Analytics.trackEvent({\n category: 'Settings',\n action: 'Currency',\n label: currencyCode\n });\n }\n\n if (selectIsLoggedIn(getState())) {\n await touchWebClient.post('my/profile/save-currency-setting', {\n currencyCode\n });\n }\n\n createPreferredCurrencyCookie(currencyCode);\n dispatch(setPreferredCurrency({ currencyCode }));\n };\n\nexport const setCurrencyIfNotChosen =\n (currencyCode) => (dispatch, getState) => {\n if (\n cookieUtil.readCookie('preferred_currency') ||\n selectIsLoggedIn(getState())\n ) {\n return;\n }\n\n const { languageCodeIso2 } = selectPreferredLanguage(getState());\n\n const map = {\n sv: 'SEK',\n da: 'DKK',\n de: 'EUR'\n };\n\n if (Object.keys(map).includes(languageCodeIso2)) {\n dispatch(setPreferredCurrencyThunk(map[languageCodeIso2], false));\n } else {\n dispatch(setPreferredCurrencyThunk(currencyCode, false));\n }\n };\n\nconst yearInMilliseconds = 1000 * 60 * 60 * 24 * 365;\nconst createPreferredCurrencyCookie = (currencyCode) => {\n cookieUtil.createCookie(\n 'preferred_currency',\n currencyCode,\n new Date(new Date().getTime() + yearInMilliseconds)\n );\n};\n","import initData from 'init-data';\n\nconst isEnabled = (key) => {\n return (\n initData && initData.featureSwitches && initData.featureSwitches[key]\n );\n};\n\nexport const errors = {\n ELASTIC_MYTRADERA:\n 'Just nu har vi driftstörningar på delar av Mitt Tradera. Vi arbetar på att lösa problemet.'\n};\n\n// ATTENTION!\n// Do not any more dependencies to initData.featureSwitches!\n// Feature switches MUST be read from Redux.\n// The functions below must only be used in MyTradera and the only\n// reason they are still here is because it requires large changes\n// to MyTradera to get rid of them.\nexport default {\n isMyTraderaElasticEnabled: isEnabled('mytradera-elasticsearch'),\n isMessagingEnabled: isEnabled('messaging'),\n isPennybridgeCharitiesEnabled: isEnabled('pennybridge-charities'),\n isPostnordComplaintEnabled: isEnabled('postnord-complaint'),\n isDiscontinuedSaleEnabled: isEnabled('discontinued-sale'),\n isDiscontinuedSaleMessagingEnabled: isEnabled('discontinued-sale-messaging')\n};\n","export default (initData) => {\n return {\n breadcrumbs: '',\n canonicalLink: '',\n metaDescription: initData.description || '',\n metaRobots: '',\n metaTitle: initData.title || '',\n type: initData.pageName || null\n };\n};\n","//jshint module : true\nimport actionTypes from './action-types';\nimport getInitialState from './initial-state';\n\nconst initialize = (initData) => ({\n type: actionTypes.INITIALIZE,\n payload: getInitialState(initData)\n});\n\nconst setPageMeta = (meta) => {\n return {\n type: actionTypes.SET_PAGE_META,\n payload: meta\n };\n};\n\nexport default {\n initialize,\n setPageMeta\n};\n","/* eslint-disable better-mutation/no-mutation */\n\nimport config from './config';\nimport eventBroadcaster from './event-broadcaster';\nimport scribe from './scribe';\nimport { logger } from 'packages/logger';\nimport axios from 'axios';\n\nexport default new (function () {\n var allowedFileExtensions = ['.jpeg', '.jpg', '.png', '.gif'];\n var maxFileSize = 1024 * 1024 * 20;\n\n this.isMultifileSupported = function () {\n return typeof window.FormData !== 'undefined';\n };\n\n this.uploadFiles = function (files, maxNumberOfFiles, imageFlow) {\n for (let i = 0; i < files.length && i < maxNumberOfFiles; i++) {\n const file = files[i];\n var validationResult = validateFile(file);\n if (validationResult) {\n notifyImageValidationFailed(validationResult);\n return;\n }\n }\n for (let i = 0; i < files.length && i < maxNumberOfFiles; i++) {\n const file = files[i];\n uploadFileWithFormData(file, imageFlow);\n }\n };\n\n this.uploadFromFileInput = function (\n fileInput,\n maxNumberOfFiles,\n imageFlow\n ) {\n if (typeof window.FormData === 'undefined') {\n uploadFileWithDom(fileInput, imageFlow);\n fileInput.value = '';\n } else {\n for (\n var i = 0;\n i < fileInput.files.length && i < maxNumberOfFiles;\n i++\n ) {\n var file = fileInput.files[i];\n var validationResult = validateFile(file);\n if (validationResult) {\n fileInput.value = '';\n notifyImageValidationFailed(validationResult);\n return;\n }\n }\n for (\n let i = 0;\n i < fileInput.files.length && i < maxNumberOfFiles;\n i++\n ) {\n const file = fileInput.files[i];\n uploadFileWithFormData(file, imageFlow);\n }\n fileInput.value = '';\n }\n };\n\n this.uploadCroppedImageFile = async function (\n imageFile,\n imageFlow,\n slotIndex\n ) {\n if (imageFile.type && imageFile.type.startsWith('image/')) {\n var validationResult = validateFile(imageFile);\n if (validationResult) {\n notifyImageValidationFailed(validationResult);\n return;\n }\n return uploadFileWithFormData(imageFile, imageFlow, slotIndex);\n }\n };\n\n async function uploadFileWithFormData(file, imageFlow, replaceIndex) {\n const startTime = new Date().getTime();\n var formData = new FormData();\n formData.append('imageFile', file);\n\n const url = config[imageFlow + 'ImagesUrl'];\n try {\n const response = await axios.post(url, formData);\n if (response.data.errorCode) {\n handleErrorCode(response.data.errorCode);\n return;\n }\n notifyImageUploaded(\n response.data.imageId,\n response.data.imageUrl,\n replaceIndex\n );\n const endTime = new Date().getTime();\n scribe.sendDuration(\n 'image_upload_client_time',\n endTime - startTime\n );\n } catch (error) {\n if (error.response) {\n notifyImageUploadFailed(file);\n } else if (error.request) {\n // The request was made but no response was received\n notifyImageUploadFailed(file);\n logger('Image upload failed. Reason: No response');\n } else {\n // Something happened in setting up the request that triggered an Error\n notifyImageUploadFailed(file);\n logger('Image upload failed. Reason: ' + error.message);\n }\n }\n }\n\n function handleErrorCode(errorCode) {\n if (errorCode === 'ImageMinimumDimensionsNotReached') {\n notifyImageValidationFailed(\n 'syi_validation_images_upload_too_small'\n );\n }\n }\n\n function uploadFileWithDom(fileInput, imageFlow) {\n var iframe_name = 'iframe_' + new Date().getTime();\n var iframe = document.createElement('iframe');\n var form = document.createElement('form');\n var input = document.createElement('input');\n form.setAttribute('name', 'upload_form');\n form.setAttribute('id', 'upload_form');\n form.setAttribute('style', 'height: 0px;');\n form.setAttribute('method', 'post');\n form.setAttribute('action', config[imageFlow + 'ImagesUrl']); // e.g. \"draft\" + \"ImagesUrl\"\n form.setAttribute('enctype', 'multipart/form-data');\n form.setAttribute('target', iframe_name);\n input.setAttribute('type', 'hidden');\n input.setAttribute('name', 'iframe');\n input.setAttribute('value', 'true');\n iframe.setAttribute('name', iframe_name);\n iframe.setAttribute('style', 'height: 0px;');\n iframe.setAttribute('id', iframe_name);\n\n form.appendChild(input);\n\n var fileInputParent = fileInput.parentNode;\n form.appendChild(fileInput);\n\n document.body.appendChild(iframe);\n document.body.appendChild(form);\n form.submit();\n\n fileInputParent.appendChild(fileInput); // Restore input node\n document.body.removeChild(form);\n\n // Only one file is supported using this method.\n var theFile = fileInput.value;\n\n iframe.onload = function (e) {\n try {\n var responseText = $(\n e.target.contentDocument.body.innerHTML\n ).text();\n var response = $.parseJSON(responseText);\n notifyImageUploaded(response.imageId, response.imageUrl);\n } catch (err) {\n notifyImageUploadFailed(theFile);\n logger('Image upload with DOM failed.');\n fileInput.value = '';\n }\n\n document.body.removeChild(iframe);\n };\n }\n\n function endsWith(str, suffix) {\n return str.indexOf(suffix, str.length - suffix.length) !== -1;\n }\n\n function hasValidFileExtension(filename) {\n return allowedFileExtensions.some((fileExt) =>\n endsWith(filename.toUpperCase(), fileExt.toUpperCase())\n );\n }\n\n function hasValidFileSize(fileSize) {\n return fileSize < maxFileSize;\n }\n\n function validateFile(file) {\n if (file === undefined) {\n return 'syi_validation_images_upload_error'; //'Något blev fel vid uppladdningen av filen';\n }\n if (!hasValidFileExtension(file.name)) {\n return 'syi_validation_images_upload_wrong_type'; //'Filen du laddade upp är av fel typ.';\n }\n if (!hasValidFileSize(file.size)) {\n return 'syi_validation_images_upload_too_large'; //'Filen du laddade upp är för stor.';\n }\n return false;\n }\n\n function notifyImageUploaded(imageId, imageUrl, replaceIndex) {\n eventBroadcaster.trigger(\n 'imageUploaded',\n imageId,\n imageUrl,\n replaceIndex\n );\n }\n\n function notifyImageUploadFailed(file) {\n eventBroadcaster.trigger('imageUploadFailed', file);\n }\n\n function notifyImageValidationFailed(displayMessage) {\n eventBroadcaster.trigger('imageValidationFailed', displayMessage);\n }\n})();\n","import { setReportItem, setViewState } from './reducer';\nimport { getReportItemModel, postReport } from './api';\nimport { VIEW_STATES } from './constants';\nimport { logger } from 'packages/logger';\nimport { API_ERRORS } from 'tradera/utils/api';\nimport { getBackToHereRedirectUrl } from 'tradera/utils/url';\nimport { getReturnUrl } from 'tradera/utils/login';\n\nconst onLoggedOut = () => {\n window.location = `/login${getReturnUrl(getBackToHereRedirectUrl())}`;\n};\n\nexport const loadReportItemModel = (itemId) => async (dispatch, getState) => {\n const reportItem = getState().views.reportItem;\n const isLoaded = reportItem.itemId === itemId;\n if (isLoaded) {\n dispatch(\n setViewState(\n reportItem.hasEnded ? VIEW_STATES.ITEM_ENDED : VIEW_STATES.FORM\n )\n );\n return;\n }\n try {\n dispatch(setViewState(VIEW_STATES.LOADING));\n const { data } = await getReportItemModel(itemId);\n\n dispatch(handleReportItemModel(data));\n } catch (error) {\n if (error.message === API_ERRORS.LOGGED_OUT) {\n onLoggedOut();\n } else {\n logger(error);\n }\n }\n};\n\nexport const handleReportItemModel = (reportItemModel) => (dispatch) => {\n dispatch(setReportItem(reportItemModel));\n};\n\nexport const submitReport =\n (itemId, reason, message, categoryId) => async (dispatch) => {\n dispatch(setViewState(VIEW_STATES.SUBMITTING));\n try {\n await postReport(itemId, reason, message, categoryId);\n dispatch(setViewState(VIEW_STATES.SUBMIT_SUCCESS));\n } catch (error) {\n logger(error);\n dispatch(setViewState(VIEW_STATES.SUBMIT_FAILED));\n }\n };\n","import { touchWebClient } from 'tradera/utils/http';\n\nexport const getReportItemModel = (itemId) => {\n return touchWebClient.get(`report-item/${itemId}.json`);\n};\n\nexport const postReport = (itemId, reason, message, categoryId) => {\n const payload = { reason, message, categoryId };\n return touchWebClient.post(`report-item/${itemId}`, payload);\n};\n","import StorageService from 'tradera/services/storage-service';\nimport { STORAGE_KEYS } from 'tradera/constants/storage';\n\nconst storageService = new StorageService(STORAGE_KEYS.SAVED_SEARCHES);\n\nexport const getSavedSearch = (id) => storageService.get(id);\n\nexport const storeSavedSearch = (id, data) => storageService.set(id, data);\n\nexport const removeSavedSearch = (id) => storageService.remove(id);\n","import draftActions from './draft-actions';\n\nexport default {\n setLongDescription: (longDescription) => (dispatch) => {\n dispatch({\n type: 'SET_LONG_DESCRIPTION',\n payload: longDescription\n });\n dispatch(draftActions.updateDraftCanBeResumed());\n },\n setLongDescriptionFromDraft: (longDescription) => (dispatch) => {\n dispatch({\n type: 'SET_LONG_DESCRIPTION_FROM_DRAFT',\n payload: longDescription\n });\n dispatch(draftActions.updateDraftCanBeResumed());\n },\n reset: () => (dispatch) => {\n dispatch({\n type: 'RESET_LONG_DESCRIPTION'\n });\n dispatch(draftActions.updateDraftCanBeResumed());\n }\n};\n","export const MODAL_TYPE = {\n BANK_ID: 'BANK_ID',\n SWISH_APP_2_APP: 'SWISH_APP_2_APP',\n SWISH_HANDEL: 'SWISH_HANDEL'\n};\n\nexport const MODAL_STATUS = {\n START: 'START',\n COMPLETE: 'COMPLETE',\n ERROR: 'ERROR'\n};\n\nexport const PAYMENT_OPTIONS = {\n CARD: 'Card',\n PAYNOVA: 'Paynova',\n PAYPAL: 'PayPal',\n APPLEPAY: 'ApplePay',\n GOOGLEPAY: 'GooglePay',\n SWISH_APP_2_APP: 'SwishApp2App',\n SWISH_HANDEL: 'SwishHandel',\n VISA_MASTERCARD: 'VisaMasterCard',\n PAYNOVA_DIRECT_INVOICE: 'PaynovaDirectInvoice',\n PAYNOVA_INSTALLMENTS: 'PaynovaInstallments',\n KLARNA: 'Klarna'\n};\n\nexport const PAYMENT_OPTION_STATUS = {\n AVAILABLE: 'Available',\n UNAVAILABLE_DUE_TO_AMOUNT: 'UnavailableDueToAmount',\n UNAVAILABLE_DUE_TO_SHIPPING_NOT_TRACEABLE:\n 'UnavailableDueToShippingNotTraceable',\n UNAVAILABLE_DUE_TO_SHIPPING_NOT_TRACEABLE_TO_SERVICEPOINT:\n 'UnavailableDueToShippingNotTraceableToServicePoint'\n};\n\nexport default () => {\n return {\n buyerMember: null,\n checkoutSummary: {\n hasError: false,\n isFetching: false\n },\n hasError: false,\n isFetching: false,\n payment: {\n hasError: false,\n isFetching: false,\n paymentOptions: null,\n selectedPayment: null,\n buyerProtection: false,\n orderCalculation: null,\n paymentMethodData: null,\n isValid: false\n },\n sellerMember: null,\n modal: {\n open: '',\n status: MODAL_STATUS.START\n },\n ongoingPaymentAttempt: null,\n shippingInfo: {\n shippingOptions: null,\n shippingPriceRange: null,\n shippingDiscount: null,\n collectionPoints: null,\n selectedCollectionPoint: null,\n isFetching: false\n },\n combinedShippingInfo: null,\n purchaseOrder: {},\n shippingOptionsLoading: false\n };\n};\n","import qs from 'qs';\nimport { createApi } from '@reduxjs/toolkit/query/react';\nimport type {\n GetSavedSearchesWithItemsApiResponse,\n SavedsearchesitemsRequest,\n RemoveSavedSearchesApiResponse,\n RemoveSavedSearchesApiRequest,\n SavedSearchEmailNotificationApiRequest,\n SavedSearchEmailNotificationApiResponse\n} from 'tradera/state/services/types/webapi-discover-generated';\nimport { baseQuery } from 'tradera/state/services/utils/webapi-base-query';\nimport { isServer } from 'tradera/utils/nextjs';\n\nenum Tags {\n SAVED_SEARCHES_LIST = 'SAVED_SEARCHES_LIST'\n}\n\nlet cacheKey: SavedsearchesitemsRequest = {};\nexport const savedSearchesApi = createApi({\n reducerPath: 'savedSearchesApi',\n baseQuery,\n tagTypes: Object.keys(Tags),\n endpoints: (builder) => ({\n getSavedSearches: builder.query<\n GetSavedSearchesWithItemsApiResponse,\n SavedsearchesitemsRequest\n >({\n query: (params) => {\n // eslint-disable-next-line better-mutation/no-mutation\n cacheKey = params;\n const baseUrl = isServer ? '' : '/api/webapi';\n return `${baseUrl}/discover/savedsearchesitems?${qs.stringify({\n ...params,\n sortBy: 'Alphabetical'\n })}`;\n },\n providesTags: [Tags.SAVED_SEARCHES_LIST]\n }),\n\n removeSavedSearches: builder.mutation<\n RemoveSavedSearchesApiResponse,\n RemoveSavedSearchesApiRequest\n >({\n query: (params) => {\n const baseUrl = isServer ? '' : '/api/webapi';\n return {\n url: `${baseUrl}/discover/removesavedsearches`,\n method: 'DELETE',\n body: params\n };\n },\n async onQueryStarted(params, { dispatch, queryFulfilled }) {\n const patchResult = dispatch(\n savedSearchesApi.util.updateQueryData(\n 'getSavedSearches',\n cacheKey,\n (draft) => {\n // eslint-disable-next-line better-mutation/no-mutation\n draft.savedSearches = draft.savedSearches?.filter(\n (item) => !params?.ids?.includes(item.id)\n );\n }\n )\n );\n try {\n await queryFulfilled;\n } catch {\n patchResult.undo();\n }\n },\n invalidatesTags: [Tags.SAVED_SEARCHES_LIST]\n }),\n\n toggleEmailNotification: builder.mutation<\n SavedSearchEmailNotificationApiResponse,\n SavedSearchEmailNotificationApiRequest\n >({\n query: (params) => {\n const baseUrl = isServer ? '' : '/api/webapi';\n return {\n url: `${baseUrl}/discover/savedsearchemailnotification`,\n method: 'POST',\n body: { ...params }\n };\n },\n async onQueryStarted(params, { dispatch, queryFulfilled }) {\n const patchResult = dispatch(\n savedSearchesApi.util.updateQueryData(\n 'getSavedSearches',\n cacheKey,\n (draft) => {\n draft.savedSearches?.forEach((item) => {\n if (item.id === params.savedSearchDto?.id) {\n Object.assign(item, {\n hasEnabledEmailNotifications:\n params.savedSearchDto.sendMail\n });\n }\n });\n }\n )\n );\n try {\n await queryFulfilled;\n } catch {\n patchResult.undo();\n }\n }\n })\n })\n});\n\nexport const {\n useGetSavedSearchesQuery,\n useRemoveSavedSearchesMutation,\n useToggleEmailNotificationMutation\n} = savedSearchesApi;\n","import { createBrowserHistory } from 'history';\nimport { isServer } from 'tradera/utils/nextjs';\nimport type { History } from 'history';\n\nconst history = isServer ? null : createBrowserHistory();\n\nexport const getHistory = () => {\n if (isServer) {\n throw new Error('Do not use history on server');\n }\n return history as History;\n};\n","import { createApi } from '@reduxjs/toolkit/query/react';\nimport qs from 'qs';\nimport type { ItemDto } from './types/touchweb-search-api.types';\nimport * as searchGtm from 'tradera/apps/tradera/components/discover/helpers/search-gtm';\nimport { httpClientBaseQuery } from './utils/http-client-base-query';\nimport { touchWebClient } from 'tradera/utils/http';\nimport { toSearchString } from 'tradera/utils/url';\n\nexport enum SortBy {\n Relevance = 'Relevance',\n AddedOn = 'AddedOn'\n}\n\ntype TouchwebSearchResponse = {\n totalItems: number;\n items: ItemDto[];\n // Didn't include all props here for brevity, let's add if needed\n};\ntype TouchwebSearchRequest = {\n itemIds?: string;\n sortBy?: SortBy;\n};\n\ntype TouchwebSaveSearchRequest = {\n savedQueryName: string;\n categoryId?: number;\n};\n\ntype TouchwebSaveSearchResponse = {\n id: number;\n message?: string;\n};\n\nexport const touchwebSearchApi = createApi({\n reducerPath: 'touchwebSearchApi',\n baseQuery: httpClientBaseQuery({ client: touchWebClient }),\n endpoints: (builder) => ({\n search: builder.query({\n query: (params) => `/search.json?${qs.stringify(params)}`\n }),\n saveSearch: builder.mutation<\n TouchwebSaveSearchResponse,\n TouchwebSaveSearchRequest\n >({\n query: (parameters) => {\n const payload = toSearchString(parameters, {\n addQueryPrefix: false\n });\n return {\n url: '/my/savedsearches/add',\n method: 'POST',\n body: payload,\n headers: {\n 'content-type': 'application/x-www-form-urlencoded'\n }\n };\n },\n async onQueryStarted() {\n searchGtm.trackAction(\n searchGtm.GA_EVENT_SAVE_SEARCH,\n 'Save POST Request'\n );\n }\n })\n })\n});\n\nexport const { useSearchQuery, useSaveSearchMutation } = touchwebSearchApi;\n","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 124 33\"\n}, props), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#253B80\",\n d: \"M46.21 6.75h-6.84a.95.95 0 00-.94.8L35.67 25.1a.57.57 0 00.56.66h3.27a.95.95 0 00.94-.8l.74-4.74a.95.95 0 01.94-.8h2.16c4.5 0 7.1-2.18 7.79-6.5.3-1.89.01-3.38-.87-4.42-.98-1.14-2.7-1.74-4.99-1.74zm.79 6.4c-.37 2.46-2.25 2.46-4.06 2.46H41.9l.72-4.58a.57.57 0 01.56-.49h.48c1.23 0 2.4 0 3 .7.36.43.47 1.05.33 1.91zm19.65-.08h-3.27a.57.57 0 00-.56.49l-.15.91-.23-.33c-.7-1.03-2.29-1.37-3.87-1.37-3.62 0-6.7 2.74-7.3 6.58a6.18 6.18 0 001.21 5.03c1 1.18 2.43 1.67 4.13 1.67 2.91 0 4.53-1.88 4.53-1.88l-.15.91a.57.57 0 00.57.67h2.95a.95.95 0 00.93-.8l1.77-11.22a.57.57 0 00-.56-.65zm-4.56 6.38a3.65 3.65 0 01-3.7 3.13c-.95 0-1.7-.3-2.2-.89a2.78 2.78 0 01-.5-2.3 3.67 3.67 0 013.66-3.15c.93 0 1.69.3 2.18.9.5.58.7 1.4.56 2.3zm22-6.38h-3.28a.95.95 0 00-.8.42l-4.53 6.69-1.93-6.43a.95.95 0 00-.9-.68H69.4a.57.57 0 00-.54.76l3.62 10.64-3.4 4.8a.57.57 0 00.46.9h3.29a.95.95 0 00.78-.4l10.94-15.8a.57.57 0 00-.46-.9z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#179BD7\",\n d: \"M95 6.75h-6.85a.95.95 0 00-.94.8L84.45 25.1a.57.57 0 00.56.66h3.51a.67.67 0 00.66-.57l.78-4.97a.95.95 0 01.94-.8h2.16c4.5 0 7.1-2.18 7.79-6.5.3-1.89.01-3.38-.87-4.42-.98-1.14-2.7-1.74-4.99-1.74zm.78 6.4c-.37 2.46-2.25 2.46-4.06 2.46h-1.03l.72-4.58a.57.57 0 01.57-.49h.47c1.23 0 2.4 0 3 .7.36.43.47 1.05.33 1.91zm19.65-.08h-3.27a.57.57 0 00-.56.49l-.15.91-.23-.33c-.7-1.03-2.28-1.37-3.86-1.37-3.62 0-6.71 2.74-7.31 6.58a6.18 6.18 0 001.21 5.03c1 1.18 2.43 1.67 4.13 1.67 2.92 0 4.53-1.88 4.53-1.88l-.14.91a.57.57 0 00.56.67h2.95a.95.95 0 00.94-.8L116 13.72a.57.57 0 00-.57-.65zm-4.56 6.38a3.65 3.65 0 01-3.7 3.13c-.94 0-1.7-.3-2.2-.89a2.8 2.8 0 01-.5-2.3 3.67 3.67 0 013.66-3.15c.93 0 1.69.3 2.19.9.5.58.7 1.4.55 2.3zm8.42-12.22l-2.8 17.86a.57.57 0 00.56.66h2.82c.47 0 .87-.34.94-.8l2.77-17.54a.57.57 0 00-.56-.66h-3.16a.57.57 0 00-.57.48z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#253B80\",\n d: \"M7.27 29.15l.52-3.32-1.17-.02H1.06L4.93 1.29a.32.32 0 01.31-.27h9.38c3.12 0 5.26.65 6.39 1.93.52.6.86 1.23 1.02 1.92.17.72.17 1.59 0 2.64v.76l.52.3a3.69 3.69 0 011.06.8c.46.52.75 1.17.87 1.94.13.8.08 1.74-.12 2.81a9.9 9.9 0 01-1.16 3.19 6.55 6.55 0 01-1.82 2c-.7.5-1.52.87-2.46 1.1-.9.24-1.94.36-3.07.36h-.73c-.52 0-1.03.19-1.43.53a2.21 2.21 0 00-.74 1.32l-.06.3-.92 5.86-.04.21c-.01.07-.03.1-.06.13a.15.15 0 01-.1.03h-4.5z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#179BD7\",\n d: \"M23.05 7.67l-.1.55c-1.24 6.35-5.47 8.54-10.87 8.54H9.33c-.66 0-1.22.48-1.32 1.13L6.6 26.83l-.4 2.53a.7.7 0 00.7.82h4.87c.58 0 1.07-.42 1.16-1l.05-.24.92-5.83.06-.32c.09-.58.58-1 1.16-1h.73c4.73 0 8.43-1.92 9.51-7.47.45-2.32.22-4.26-.98-5.62a4.67 4.67 0 00-1.33-1.03z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#222D65\",\n d: \"M21.75 7.15a9.76 9.76 0 00-1.2-.27 15.28 15.28 0 00-2.42-.17h-7.36a1.17 1.17 0 00-1.16.99l-1.56 9.9-.04.3a1.34 1.34 0 011.32-1.14h2.75c5.4 0 9.63-2.2 10.87-8.54l.1-.55a6.6 6.6 0 00-1.02-.43 9.04 9.04 0 00-.28-.09z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#253B80\",\n d: \"M9.61 7.7a1.17 1.17 0 011.16-1h7.36c.87 0 1.68.07 2.42.18a9.76 9.76 0 011.48.36c.37.12.7.26 1.02.43.37-2.35 0-3.95-1.27-5.4C20.38.68 17.85 0 14.62 0H5.24c-.66 0-1.22.48-1.32 1.13L0 25.9a.8.8 0 00.8.93H6.6l1.45-9.22L9.61 7.7z\"\n})));","import myTraderaItemActions from '../state/actions/my-tradera-items';\nimport dayjs from 'dayjs';\nimport featureToggles from '../utils/feature-toggles';\nimport { getMessagingThreadLink } from './messaging-helpers';\nimport purchaseOrderActions from '../state/actions/purchase-order';\nimport {\n openMessagingModal,\n openModal,\n openShareModal\n} from 'tradera/state/ui/reducer';\nimport { types } from './item-actions-helper';\nimport { isNormalListViewType } from './item-helper';\nimport { SINGLE_FEEDBACK_DIALOG_ID } from 'tradera/apps/my-tradera/app/components/leave-feedback/constants';\nimport { toLocalizedUrl } from 'tradera/utils/url';\nimport {\n openChangeShipping,\n openSetDiscount\n} from 'tradera/apps/my-tradera/app/state/reducers/my-tradera';\nimport { SHIPPING_OPTIONS, isStampProvider } from '../data/shipping-providers';\nimport { PaidStatuses } from 'tradera/constants/paid-statuses';\n\nconst getId = (item) => item.key;\nconst getIds = (item) => [item.itemId];\n\nconst isTakeAway = (item) => {\n return (\n (item.transaction.selectedShipping &&\n item.transaction.selectedShipping.isTakeaway) ||\n (item.transaction.shippingDiscount &&\n item.transaction.shippingDiscount.isTakeaway)\n );\n};\n\nconst hasStampsAsSelectedShippingType = (item) => {\n return (\n item.transaction.selectedShipping &&\n isStampProvider(item.transaction.selectedShipping.type)\n );\n};\n\nconst shouldReplaceBookShippingWithBuyStampAsPrimary = (item) => {\n return (\n item.listing.shippingOptions.filter(\n (o) => o.shippingType === SHIPPING_OPTIONS.POSTNORD_STAMP\n ).length > 0 &&\n item.transaction?.buyer?.address?.countryCodeIso2 === 'SE'\n );\n};\n\n// isPrimaryAction = will be primary action unless one before has not already been set as primary action\n// Hence, the order of the actions matter.\nconst commonActions = (item) => ({\n sellSimilar: () => ({\n id: getId(item),\n type: types.LINK,\n label: 'Sälj liknande',\n getTranslatedLabel: (t) => t('myt_itemCard_actions_sellSimilar'),\n url: `/selling/sell-similar/${item.itemId}`,\n gaLabel: 'SellSimilar',\n isVisible: () => true,\n isPrimaryAction: () => true\n })\n});\n\nconst hasTransactionDateNewerThen60Days = (item) => {\n const dateLimit = dayjs().subtract(60, 'day');\n return dayjs(item.transaction?.transactionDate?.date).isAfter(dateLimit);\n};\n\nexport const soldActions = (\n item,\n listViewType,\n memberId,\n memberMessagingParticipation\n) => {\n const common = commonActions(item);\n const actions = [\n () => ({\n id: getId(item),\n type: types.DISPATCH,\n label: 'Ändra fraktpris',\n getTranslatedLabel: (t) =>\n item.haveCombinedShipping && item.haveMultipleRows\n ? item.transaction.shippingDiscount\n ? t(\n 'myt_itemCard_actions_update_combinedshipping_change'\n )\n : t('myt_itemCard_actions_update_combinedshipping')\n : t('myt_itemCard_actions_update_shipping'),\n dispatch: (dispatch) => {\n dispatch(\n openChangeShipping({\n purchaseOrderId: item?.transaction?.purchaseOrderId,\n receiverCountry:\n item?.transaction?.buyer.address.countryCodeIso2\n })\n );\n },\n gaLabel: 'ChangeShippingPriceSold',\n isVisible: () =>\n isNormalListViewType(listViewType) &&\n !item.haveMultipleRows &&\n !item.transaction.sellerState.paid,\n isPrimaryAction: () => false\n }),\n () => ({\n id: getId(item),\n type: types.LINK,\n label: 'Orderinformation',\n getTranslatedLabel: (t) =>\n t('myt_itemCard_actions_orderInformation'),\n url: `/my/sold/buyer-info?purchaseOrderId=${item.transaction.purchaseOrderId}`,\n gaLabel: 'BuyerInfo',\n isVisible: () =>\n !!item.transaction.purchaseOrderId && !item.haveMultipleRows,\n isPrimaryAction: () => false\n }),\n () => ({\n id: getId(item),\n type: types.DISPATCH,\n label: 'Kontakta köpare',\n getTranslatedLabel: (t) => t('myt_itemCard_actions_contactBuyer'),\n dispatch: (dispatch) => {\n const recipientId = item.seller.id;\n const src = getMessagingThreadLink(\n recipientId,\n item.transaction.buyer.id,\n item.itemId,\n {\n traderaUserId: recipientId,\n singleThread: true,\n openForm: true,\n source: 'contact_buyer'\n }\n );\n const title = 'Kontakta köpare';\n dispatch(\n openMessagingModal({\n title,\n src,\n recipientId,\n item\n })\n );\n },\n gaLabel: 'ContactBuyer',\n isVisible: () => {\n return (\n !item.haveMultipleRows &&\n featureToggles.isMessagingEnabled &&\n memberMessagingParticipation &&\n item.transaction.purchaseOrderId &&\n item.transaction.buyer\n );\n },\n isPrimaryAction: () => false\n }),\n () => ({\n id: getId(item),\n type: types.DISPATCH,\n label: 'Markera som betald',\n getTranslatedLabel: (t) => t('myt_itemCard_actions_markAsPaid'),\n dispatch: (dispatch) =>\n dispatch(\n myTraderaItemActions.markPurchaseOrdersAsPaidBySeller(\n [item.transaction.purchaseOrderId],\n listViewType,\n memberMessagingParticipation\n )\n ),\n gaLabel: 'MarkAsPaid',\n isVisible: () => {\n return [\n PaidStatuses.UNPAID,\n PaidStatuses.MARKED_AS_PAID_BY_BUYER\n ].includes(item.transaction.paidStatus);\n },\n isPrimaryAction: () => true\n }),\n () => ({\n id: getId(item),\n type: types.LINK,\n label: 'Köp frimärke',\n getTranslatedLabel: (t) => t('myt_itemCard_actions_buyStamp'),\n url: `/my/shipping?purchaseOrderId=${item.transaction.purchaseOrderId}&originUrl=%2fmy%2fsold`,\n /*\n * @todo\n */\n gaLabel: 'BookShipping',\n isVisible: () => {\n if (\n !shouldReplaceBookShippingWithBuyStampAsPrimary(item) ||\n item.haveMultipleRows ||\n item.transaction.sellerState.shippingBooked ||\n item.transaction.sellerState.shipped ||\n item.transaction.hasUnpaidShipping ||\n item.isArchived\n ) {\n return false;\n }\n return true;\n },\n isPrimaryAction: () => {\n return (\n !item.transaction.hasUnpaidShipping &&\n !isTakeAway(item) &&\n !hasStampsAsSelectedShippingType(item) &&\n !item.isArchived\n );\n }\n }),\n () => ({\n id: getId(item),\n type: types.LINK,\n label: 'Boka frakt',\n getTranslatedLabel: (t) => t('myt_itemCard_actions_bookShipping'),\n url: `/my/shipping?purchaseOrderId=${item.transaction.purchaseOrderId}&originUrl=%2fmy%2fsold`,\n /*\n * @todo\n */\n gaLabel: 'BookShipping',\n isVisible: () => {\n if (\n item.haveMultipleRows ||\n item.transaction.sellerState.shippingBooked ||\n item.transaction.sellerState.shipped ||\n item.transaction.hasUnpaidShipping ||\n item.isArchived\n ) {\n return false;\n }\n return true;\n },\n isPrimaryAction: () => {\n return (\n !item.transaction.hasUnpaidShipping &&\n !isTakeAway(item) &&\n !hasStampsAsSelectedShippingType(item) &&\n !item.isArchived\n );\n }\n }),\n () => ({\n id: getId(item),\n type: types.LINK,\n label: 'Betala frakt',\n getTranslatedLabel: (t) => t('myt_itemCard_actions_payShipping'),\n url: item.transaction.unpaidShippingUrl || `/my/shipping/checkout`,\n gaLabel: 'PayShipping',\n isVisible: () => item.transaction.hasUnpaidShipping,\n isPrimaryAction: () => item.transaction.hasUnpaidShipping\n }),\n () => ({\n id: getId(item),\n type: types.DISPATCH,\n label: 'Avbryt fraktbokning',\n getTranslatedLabel: (t) => t('myt_itemCard_actions_deleteShipping'),\n dispatch: (dispatch) => {\n dispatch(\n myTraderaItemActions.sellingDeleteShipment(\n item.transaction.unpaidShippingId,\n item.transaction.purchaseOrderId,\n listViewType\n )\n );\n },\n gaLabel: 'DeleteShipping',\n isVisible: () =>\n item.transaction.hasUnpaidShipping && !item.haveMultipleRows,\n isPrimaryAction: () => false\n }),\n () => ({\n id: getId(item),\n type: types.DISPATCH,\n label: 'Avmarkera som bokad',\n getTranslatedLabel: (t) =>\n t('myt_itemCard_actions_unmarkAsShippingBooked'),\n dispatch: (dispatch) => {\n dispatch(\n myTraderaItemActions.sellingUnmarkAsShippingBooked(\n [item.transaction.purchaseOrderId],\n listViewType,\n [item.transaction.transactionId]\n )\n );\n },\n gaLabel: 'UnmarkAsShippingBooked',\n isVisible: () => {\n return (\n !item.transaction.trackingLink &&\n !item.haveMultipleRows &&\n item.transaction.sellerState.shippingBooked &&\n !item.transaction.sellerState.shipped\n );\n },\n isPrimaryAction: () => false\n }),\n () => ({\n id: getId(item),\n type: types.DISPATCH,\n label: 'Markera som bokad',\n getTranslatedLabel: (t) =>\n t('myt_itemCard_actions_markAsShippingBooked'),\n dispatch: (dispatch) => {\n dispatch(\n myTraderaItemActions.sellingMarkAsShippingBooked(\n item.transaction.purchaseOrderId,\n listViewType,\n [item.transaction.transactionId]\n )\n );\n },\n gaLabel: 'MarkAsShippingBooked',\n isVisible: () => {\n return (\n !item.transaction.trackingLink &&\n !item.haveMultipleRows &&\n !item.transaction.sellerState.shippingBooked &&\n !item.transaction.sellerState.shipped\n );\n },\n isPrimaryAction: () => false\n }),\n () => ({\n id: getId(item),\n type: types.LINK,\n label: 'Spåra paket',\n getTranslatedLabel: (t) => t('myt_itemCard_actions_trackShipment'),\n url: `/my/sold/buyer-info?purchaseOrderId=${item.transaction.purchaseOrderId}#shipping`,\n gaLabel: 'TrackShipment',\n isVisible: () =>\n !item.haveMultipleRows && !!item.transaction.trackingLink,\n isPrimaryAction: () => false\n }),\n () => ({\n id: getId(item),\n type: types.EXTERNAL_LINK,\n label: 'Kvitto för frakt',\n getTranslatedLabel: (t) =>\n t('myt_itemCard_actions_shippingReceipt'),\n url: `/my/shipping/receipt/${item.transaction.paidShipmentCheckoutId}`,\n gaLabel: 'ShippingReceipt',\n isVisible: () =>\n item.transaction.bookedShipment &&\n !item.haveMultipleRows &&\n item.transaction.bookedShipment.hasShipmentReceipt,\n isPrimaryAction: () => false\n }),\n () => ({\n id: getId(item),\n type: types.EXTERNAL_LINK,\n label: 'Ladda ner fraktsedel',\n getTranslatedLabel: (t) => t('myt_itemCard_actions_shippingLabel'),\n url: `/my/shipping/label/${item.transaction.shipmentId}`,\n gaLabel: 'ShippingLabel',\n isVisible: () =>\n item.transaction.bookedShipment &&\n !item.haveMultipleRows &&\n item.transaction.bookedShipment.hasShipmentLabel,\n isPrimaryAction: () => false\n }),\n () => ({\n id: getId(item),\n type: item.transaction.bookedShipment?.isSoldByTradera\n ? types.LINK\n : types.EXTERNAL_LINK_ICON,\n label: 'Reklamera frakt',\n getTranslatedLabel: (t) =>\n t('myt_itemCard_actions_shippingComplaint'),\n url: item.transaction.bookedShipment?.isSoldByTradera\n ? `/my/shipping/complaint/${item.transaction.shipmentId}`\n : 'https://portal.postnord.com/claimspublic/sv-SE.html',\n gaLabel: 'ShippingComplaint',\n isVisible: () =>\n featureToggles.isPostnordComplaintEnabled &&\n item.transaction.bookedShipment &&\n item.transaction.bookedShipment.hasShipmentLabel &&\n !item.haveMultipleRows &&\n item.transaction.bookedShipment.shippingProvider ===\n SHIPPING_OPTIONS.POSTNORD_PARCEL,\n isPrimaryAction: () => false\n }),\n () => ({\n id: getId(item),\n type: types.DISPATCH,\n label: isTakeAway(item)\n ? 'Avmarkera som hämtad'\n : 'Avmarkera som skickad',\n getTranslatedLabel: (t) =>\n isTakeAway(item)\n ? t('myt_itemCard_actions_unmarkAsCollected')\n : t('myt_itemCard_actions_unmarkAsSent'),\n dispatch: (dispatch) => {\n dispatch(\n myTraderaItemActions.sellingUnmarkAsShipped(\n [item.transaction.transactionId],\n listViewType\n )\n );\n },\n gaLabel: 'UnmarkAsShipped',\n isVisible: () =>\n item.transaction.sellerState.shipped && !item.haveMultipleRows,\n isPrimaryAction: () => false\n }),\n () => ({\n id: getId(item),\n type: types.DISPATCH,\n label: isTakeAway(item)\n ? 'Markera som hämtad'\n : 'Markera som skickad',\n getTranslatedLabel: (t) =>\n isTakeAway(item)\n ? t('myt_itemCard_actions_markAsCollected')\n : t('myt_itemCard_actions_markAsSent'),\n dispatch: (dispatch) => {\n dispatch(\n myTraderaItemActions.sellingMarkAsShipped(\n [item.transaction.transactionId],\n listViewType\n )\n );\n },\n gaLabel: 'MarkAsShipped',\n isVisible: () =>\n !item.transaction.sellerState.shipped && !item.haveMultipleRows,\n isPromotedSecondaryAction: () =>\n isPaidShippingSetWithPostNordStamp(item) ||\n isPaidSingleItemWithOnlyPostNordStamp(item),\n isPrimaryAction: () => !item.transaction.hasUnpaidShipping\n }),\n () => ({\n id: getId(item),\n type: types.DISPATCH,\n label: 'Lämna omdöme',\n getTranslatedLabel: (t) => t('myt_itemCard_actions_leaveFeedback'),\n dispatch: (dispatch) => {\n dispatch(\n openModal({\n modalId: SINGLE_FEEDBACK_DIALOG_ID,\n data: {\n transactionId: item.transaction.transactionId\n }\n })\n );\n },\n gaLabel: 'LeaveFeedbackOnBuyer',\n isVisible: () =>\n !item.transaction.sellerState.feedbackLeft &&\n !item.haveMultipleRows &&\n item.transaction.paidStatus !== PaidStatuses.PAYMENT_PENDING,\n isPrimaryAction: () => !item.haveMultipleRows\n }),\n () => ({\n id: getId(item),\n type: types.DISPATCH,\n label: 'Återbetala',\n getTranslatedLabel: (t) => t('myt_itemCard_actions_refund'),\n dispatch: (dispatch) =>\n dispatch(openSetDiscount(item.transaction.purchaseOrderId)),\n gaLabel: 'Refund',\n isVisible: () =>\n !item.haveMultipleRows &&\n (item.transaction.isDiscountAfterPaymentSupported ||\n item.transaction.isRefundAllowed),\n isPrimaryAction: () => false\n }),\n () => ({\n id: getId(item),\n type: types.LINK,\n label: 'Köparens omdömen',\n getTranslatedLabel: (t) => t('myt_itemCard_actions_buyerFeedback'),\n url: `/profile/feedback/${item.transaction.buyer.id}`,\n gaLabel: 'BuyerProfile',\n isVisible: () => !item.haveMultipleRows,\n isPrimaryAction: () => true\n }),\n () => ({\n id: getId(item),\n type: types.LINK,\n label: 'Se köphistorik',\n getTranslatedLabel: (t) =>\n t('myt_itemCard_actions_purchaseHistory'),\n url: `/my/item/${item.itemId}/purchasehistory`,\n gaLabel: 'PurchaseHistory',\n isVisible: () =>\n !(\n item.listing.itemType === 'Auction' ||\n item.listing.itemType === 'AuctionBin' ||\n item.haveMultipleRows\n ),\n isPrimaryAction: () => true\n }),\n () => ({\n id: getId(item),\n type: types.DISPATCH,\n label: 'Avmarkera som betald',\n getTranslatedLabel: (t) => t('myt_itemCard_actions_unmarkAsPaid'),\n dispatch: (dispatch) =>\n dispatch(\n myTraderaItemActions.unmarkPurchaseOrdersAsPaidBySeller(\n [item.transaction.purchaseOrderId],\n listViewType,\n memberMessagingParticipation\n )\n ),\n gaLabel: 'UnmarkAsPaid',\n isVisible: () => {\n return (\n item.transaction.paidStatus ===\n PaidStatuses.MARKED_AS_PAID_BY_SELLER &&\n !item.haveMultipleRows\n );\n },\n isPrimaryAction: () => true\n }),\n () => ({\n // \"UPI\" = \"Unpaid Item\"\n id: getId(item),\n type: types.LINK,\n label: 'Anmäl utebliven betalning',\n getTranslatedLabel: (t) =>\n t('myt_itemCard_actions_reportUnpaidItem'),\n url: isNormalListViewType(listViewType)\n ? `/resolution/UPI2/${item.transaction.purchaseOrderId}`\n : `/resolution/UPI/${item.transaction.transactionId}`,\n gaLabel: 'ReportUnpaidItem',\n isVisible: () =>\n !item.haveMultipleRows &&\n item.transaction.sellerState.state === 'NotPaid' &&\n !item.transaction.sellerState.upiSubmitted &&\n !featureToggles.isDiscontinuedSaleEnabled &&\n hasTransactionDateNewerThen60Days(item) &&\n item.transaction.paidStatus !== PaidStatuses.PAYMENT_PENDING,\n isPrimaryAction: () => true\n }),\n () => ({\n // \"DCS\" = \"Discontinued Sale\"\n id: getId(item),\n type: types.LINK,\n label: 'Utebliven försäljning',\n getTranslatedLabel: (t) =>\n t('myt_itemCard_actions_reportDiscontinuedSale'),\n url: `/resolution/DCS/${item.transaction.purchaseOrderId}`,\n gaLabel: 'ReportDiscontinuedSale',\n isVisible: () =>\n !item.haveMultipleRows &&\n featureToggles.isDiscontinuedSaleEnabled &&\n item.transaction.sellerState.state === 'NotPaid' &&\n !item.transaction.sellerState.isMcpSubmitted &&\n !item.transaction.sellerState.isUpiSubmitted &&\n hasTransactionDateNewerThen60Days(item) &&\n item.transaction.paidStatus !== PaidStatuses.PAYMENT_PENDING,\n isPrimaryAction: () => true\n }),\n common.sellSimilar,\n () => ({\n id: getId(item),\n type: types.DISPATCH,\n label: 'Lämna rabatt',\n getTranslatedLabel: (t) => t('myt_itemCard_actions_giveDiscount'),\n dispatch: (dispatch) =>\n dispatch(openSetDiscount(item.transaction.purchaseOrderId)),\n gaLabel: 'Discount',\n isVisible: () =>\n !item.haveMultipleRows &&\n (item.transaction.isDiscountBeforePaymentSupported ||\n item.transaction.isDiscountAllowed),\n isPrimaryAction: () => false\n }),\n () => ({\n id: getId(item),\n type: types.DISPATCH,\n label: 'Ångra dölj',\n getTranslatedLabel: (t) => t('myt_itemCard_actions_unhide'),\n dispatch: (dispatch) => {\n dispatch(\n isNormalListViewType(listViewType)\n ? purchaseOrderActions.updatePurchaseOrderHiddenForSeller(\n item.transaction.purchaseOrderId,\n false,\n listViewType\n )\n : myTraderaItemActions.sellerUnhideTransaction(\n [item.transaction.purchaseOrderId],\n listViewType\n )\n );\n },\n gaLabel: 'UnhideSold',\n isVisible: () =>\n isNormalListViewType(listViewType)\n ? !item.haveMultipleRows &&\n item.transaction?.sellerState.hidden\n : item.transaction && item.transaction.sellerState.hidden,\n isPrimaryAction: () => true\n })\n ];\n\n const hide = () => ({\n id: getId(item),\n type: types.DISPATCH,\n label: 'Dölj',\n getTranslatedLabel: (t) => t('myt_itemCard_actions_hide'),\n dispatch: (dispatch) => {\n dispatch(\n isNormalListViewType(listViewType)\n ? purchaseOrderActions.updatePurchaseOrderHiddenForSeller(\n item.transaction.purchaseOrderId,\n true,\n listViewType\n )\n : myTraderaItemActions.sellerHideTransaction(\n [item.transaction.purchaseOrderId],\n listViewType\n )\n );\n },\n gaLabel: 'HideSold',\n isVisible: () =>\n isNormalListViewType(listViewType)\n ? !item.haveMultipleRows &&\n !item.transaction?.sellerState.hidden\n : item.transaction && !item.transaction.sellerState.hidden,\n isPrimaryAction: () => true\n });\n\n if (item.transaction && item.transaction.sellerState.state === 'Done') {\n // Make \"hide\" the primary action by setting it as the first element in the array\n actions.unshift(hide);\n } else {\n actions.push(hide);\n }\n\n return actions;\n};\n\nexport const activeSellerActions = (item) => {\n const isShopItem = item.listing.itemType === 'Shopitem';\n const common = commonActions(item);\n\n const translationKeys = {\n shareHeader: 'myt_shareHeader',\n shareMailSubject: 'myt_shareViaMailSubject',\n shareMailBody: 'myt_shareViaMailBody',\n sharePinterestDescription: 'myt_shareViaPinterestDescription',\n shareLinkText: 'myt_shareLink'\n };\n\n const actions = [\n () => ({\n id: getId(item),\n type: isShopItem ? types.DISABLED : types.LINK,\n tooltip: isShopItem\n ? 'Använd Sello för att ändra butiksannonser'\n : null,\n label: 'Ändra',\n getTranslatedLabel: (t) => t('myt_itemCard_actions_update'),\n url: `/selling/edit/${item.itemId}`,\n gaLabel: isShopItem\n ? 'EditShopItem'\n : item.bidInformation.bidCount === 0\n ? 'EditItem'\n : 'AddText',\n isVisible: () => true,\n isPrimaryAction: () => true\n }),\n () => ({\n id: getId(item),\n type: types.DISPATCH,\n label: 'Dela',\n getTranslatedLabel: (t) => t('myt_itemCard_actions_share'),\n gaLabel: 'ShareActiveSellingItem',\n isVisible: () => true,\n isPrimaryAction: () => false,\n dispatch: (dispatch, _props, preferredLanguageCode) => {\n const shareLinkHref = toLocalizedUrl(\n new URL(item.itemUrl, window.location.origin).href,\n preferredLanguageCode\n );\n dispatch(\n openShareModal({\n shareLinkHref,\n translationKeys,\n shareTitle: item.listing.shortDescription,\n shareImageUrl: item.listing.images.main.full\n })\n );\n }\n }),\n common.sellSimilar,\n () => ({\n id: getId(item),\n type: types.DISPATCH,\n label: 'Kontakta högstbjudande',\n getTranslatedLabel: (t) =>\n t('myt_itemCard_actions_contactHighestBidder'),\n dispatch: (dispatch) => {\n const recipientId = item.seller.id;\n const src = getMessagingThreadLink(\n recipientId,\n item.bidInformation.leadingBidder &&\n item.bidInformation.leadingBidder.id,\n item.itemId,\n {\n traderaUserId: recipientId,\n singleThread: true,\n openForm: true,\n source: 'contact_highest_bidder'\n }\n );\n const title = 'Kontakta högstbjudande';\n dispatch(\n openMessagingModal({\n title,\n src,\n recipientId,\n item,\n isContactHighestBidder: true\n })\n );\n },\n gaLabel: 'ContactHighestBidder',\n isVisible: () => {\n return (\n featureToggles.isMessagingEnabled &&\n item.bidInformation.bidCount > 0\n );\n },\n isPrimaryAction: () => false\n }),\n () => ({\n id: getId(item),\n type: types.DISPATCH,\n label: 'Avbryt annons',\n getTranslatedLabel: (t) => t('myt_itemCard_actions_cancelItem'),\n dispatch: (dispatch) => {\n dispatch(myTraderaItemActions.cancelItem(item));\n },\n gaLabel: 'EndItem',\n isVisible: () => item.bidInformation.bidCount === 0,\n isPrimaryAction: () => true\n }),\n () => ({\n id: getId(item),\n type: types.LINK,\n label: 'Marknadsför',\n getTranslatedLabel: (t) => t('upsell_extras_button'),\n url: `/selling/features/${item.itemId}`,\n isVisible: () => true,\n isPromotedSecondaryAction: () => true\n })\n ];\n return actions;\n};\n\nexport const unsoldActions = (item, listViewType, memberId) => {\n const actions = [\n () => ({\n id: getId(item),\n type: types.LINK,\n label: item.listing.restart.hasRestartedChild\n ? 'Sälj liknande'\n : 'Lägg upp igen',\n getTranslatedLabel: (t) =>\n item.listing.restart.hasRestartedChild\n ? t('myt_itemCard_actions_sellSimilar')\n : t('myt_itemCard_actions_restart'),\n url: item.listing.restart.hasRestartedChild\n ? `/selling/sell-similar/${item.itemId}`\n : `/selling/restart/${item.itemId}`,\n gaLabel: 'Restart',\n isVisible: () => true,\n isPrimaryAction: () => true\n }),\n () => ({\n id: getId(item),\n type: types.DISPATCH,\n label: 'Dölj',\n getTranslatedLabel: (t) => t('myt_itemCard_actions_hide'),\n dispatch: (dispatch) => {\n dispatch(\n myTraderaItemActions.sellerHideUnsold(\n getIds(item),\n listViewType\n )\n );\n },\n gaLabel: 'HideUnsold',\n isVisible: () =>\n !item.transaction && !item.hiddenByMember?.includes(memberId),\n isPrimaryAction: () => true\n }),\n () => ({\n id: getId(item),\n type: types.DISPATCH,\n label: 'Visa',\n getTranslatedLabel: (t) => t('myt_itemCard_actions_show'),\n dispatch: (dispatch) => {\n dispatch(\n myTraderaItemActions.sellerUnhideUnsold(\n getIds(item),\n listViewType\n )\n );\n },\n gaLabel: 'UnhideUnsold',\n isVisible: () =>\n !item.transaction && item.hiddenByMember?.includes(memberId),\n isPrimaryAction: () => true\n })\n ];\n return actions;\n};\n\nconst isPaidShippingSetWithPostNordStamp = (item) =>\n item.transaction.sellerState.paid &&\n isStampProvider(item.transaction.selectedShipping?.shippingType);\n\nconst isPaidSingleItemWithOnlyPostNordStamp = (item) => {\n return (\n item.transaction.sellerState.paid &&\n item.listing.shippingOptions?.length &&\n item.listing.shippingOptions.every(\n (x) =>\n isStampProvider(x.shippingType) ||\n x.shippingType === SHIPPING_OPTIONS.TAKE_AWAY\n )\n );\n};\n","import myTraderaItemActions from '../state/actions/my-tradera-items';\nimport { openModal as openMyTraderaModal } from 'tradera/apps/my-tradera/app/state/reducers/my-tradera';\nimport purchaseOrderActions from '../state/actions/purchase-order';\nimport featureToggles from '../utils/feature-toggles';\nimport { getMessagingThreadLink } from './messaging-helpers';\nimport { openMessagingModal, openModal } from 'tradera/state/ui/reducer';\nimport { SINGLE_FEEDBACK_DIALOG_ID } from 'tradera/apps/my-tradera/app/components/leave-feedback/constants';\nimport { isNormalListViewType } from './item-helper';\nimport { showSuccessToast } from 'tradera/services/toasts';\nimport { PaidStatuses } from 'tradera/constants/paid-statuses';\n\nexport const types = {\n LINK: 'LINK',\n EXTERNAL_LINK: 'EXTERNAL_LINK',\n DISPATCH: 'DISPATCH'\n};\n\nconst getId = (item) => item.key;\nconst getIds = (item) => [item.itemId];\n\nconst fixItemUrlIfNeeded = (item = {}) => {\n // Fix this at backend?\n return item.itemUrl && item.itemUrl[0] !== '/'\n ? `/${item.itemUrl}`\n : item.itemUrl;\n};\n\nconst showModal = (translationKey) => {\n return openMyTraderaModal({\n bulkAction: 'MytListInfo',\n modal: {\n cssClass: 'fixed',\n icon: 'check',\n isSingleButton: true,\n getTranslatedMessage: (t) => t(translationKey)\n }\n });\n};\n\n// isPrimaryAction = will be primary action unless one before has not already been set as primary action\n// Hence, the order of the actions matter.\nconst commonActions = (item) => {\n const actions = {\n itemsFromSeller: () => ({\n id: getId(item),\n type: types.LINK,\n label: 'Säljarens annonser',\n getTranslatedLabel: (t) =>\n t('myt_itemCard_actions_itemsFromSeller'),\n url: `/profile/items/${item.seller.id}/${item.seller.cleanedAlias}`,\n gaLabel: 'SellerOtherItems',\n isVisible: () => !item.haveMultipleRows,\n isPrimaryAction: () => true\n })\n };\n return actions;\n};\n\nexport const activeBuyerActions = (item, listViewType, memberId) => {\n const common = commonActions(item);\n const actions = [\n () => {\n const isLeading =\n item.bidInformation &&\n item.bidInformation.leadingBidder &&\n item.bidInformation.leadingBidder.id === memberId;\n const fixedItemUrl = fixItemUrlIfNeeded(item);\n return {\n id: getId(item),\n type: types.LINK,\n label: isLeading ? 'Öka maxbud' : 'Lägg bud',\n getTranslatedLabel: (t) =>\n isLeading\n ? t('myt_itemCard_actions_raiseMaxBid')\n : t('myt_itemCard_actions_placeBid'),\n url: fixedItemUrl,\n gaLabel: isLeading ? 'RaiseMaxBid' : 'PlaceBid',\n buttonTheme: 'success',\n isVisible: () => true,\n isPrimaryAction: () => true\n };\n },\n common.itemsFromSeller,\n () => ({\n id: getId(item),\n type: types.DISPATCH,\n label: 'Dölj',\n getTranslatedLabel: (t) => t('myt_itemCard_actions_hide'),\n dispatch: (dispatch) => {\n dispatch(\n myTraderaItemActions.buyerActiveItemsHideItems(\n getIds(item),\n listViewType\n )\n );\n },\n gaLabel: 'HideBuyerActiveItem',\n isVisible: () =>\n (item.caller.leadingBidRemoved ||\n (item.bidInformation.leadingBidder &&\n item.bidInformation.leadingBidder.id !== memberId)) &&\n item.caller.hidden === false,\n isPrimaryAction: () => true\n }),\n () => ({\n id: getId(item),\n type: types.DISPATCH,\n label: 'Visa',\n getTranslatedLabel: (t) => t('myt_itemCard_actions_show'),\n dispatch: (dispatch) => {\n dispatch(\n myTraderaItemActions.buyerActiveItemsShowItems(\n getIds(item),\n listViewType\n )\n );\n },\n gaLabel: 'ShowBuyerActiveItem',\n isVisible: () => item.caller.hidden === true, // User should always be able to Show a hidden item, no matter if leading or not\n isPrimaryAction: () => true\n })\n ];\n return actions;\n};\n\nexport const boughtActions = (item, listViewType, memberId) => {\n const common = commonActions(item);\n const actions = [\n () => ({\n id: getId(item),\n type:\n item.transaction.paidStatus === PaidStatuses.EXPIRED\n ? types.DISPATCH\n : types.LINK,\n label: 'Betala',\n getTranslatedLabel: (t) => t('myt_itemCard_actions_pay'),\n dispatch: (dispatch) => {\n dispatch(showModal('myt_orderinfo_paymentExpired'));\n },\n url: `/Shopping/Checkout/SelectPayment?purchaseOrderId=${item.transaction.purchaseOrderId}`,\n gaLabel: 'Pay',\n buttonTheme: 'success',\n isVisible: () =>\n !item.transaction.buyerState.paid && !item.haveMultipleRows,\n isPrimaryAction: () => true\n }),\n () => ({\n id: getId(item),\n type: types.DISPATCH,\n label: 'Markera som betald',\n getTranslatedLabel: (t) => t('myt_itemCard_actions_markAsPaid'),\n dispatch: (dispatch) => {\n if (item.transaction.paidStatus === PaidStatuses.EXPIRED) {\n return dispatch(showModal('myt_orderinfo_paymentExpired'));\n }\n showSuccessToast('siteWideNotifications_orderMarkedAsPaid');\n dispatch(\n myTraderaItemActions.markPurchaseOrdersAsPaidByBuyer(\n [item.transaction.purchaseOrderId],\n listViewType\n )\n );\n },\n gaLabel: 'MarkAsPaid',\n isVisible: () =>\n item.transaction.paidStatus === PaidStatuses.UNPAID &&\n !item.haveMultipleRows,\n isPrimaryAction: () => true\n }),\n () => ({\n id: getId(item),\n type: types.DISPATCH,\n label: 'Avmarkera som betald',\n getTranslatedLabel: (t) => t('myt_itemCard_actions_unmarkAsPaid'),\n dispatch: (dispatch) =>\n dispatch(\n myTraderaItemActions.unmarkPurchaseOrdersAsPaidByBuyer(\n [item.transaction.purchaseOrderId],\n listViewType\n )\n ),\n gaLabel: 'UnmarkAsPaid',\n isVisible: () =>\n item.transaction.paidStatus ===\n PaidStatuses.MARKED_AS_PAID_BY_BUYER &&\n !item.haveMultipleRows,\n isPrimaryAction: () => false\n }),\n () => ({\n id: getId(item),\n type: types.DISPATCH,\n label: 'Lämna omdöme',\n getTranslatedLabel: (t) => t('myt_itemCard_actions_leaveFeedback'),\n dispatch: (dispatch) => {\n dispatch(\n openModal({\n modalId: SINGLE_FEEDBACK_DIALOG_ID,\n data: {\n transactionId: item.transaction.transactionId\n }\n })\n );\n },\n gaLabel: 'LeaveFeedbackOnSeller',\n isVisible: () =>\n !item.transaction.buyerState.feedbackLeft &&\n !item.haveMultipleRows &&\n item.transaction.paidStatus !== PaidStatuses.PAYMENT_PENDING,\n isPrimaryAction: () => !item.haveMultipleRows\n }),\n () => ({\n id: getId(item),\n type: types.LINK,\n label: 'Orderinformation',\n getTranslatedLabel: (t) =>\n t('myt_itemCard_actions_orderInformation'),\n url: `/my/order/${item.transaction.purchaseOrderId}`,\n gaLabel: 'OrderInformation',\n isVisible: () => !item.haveMultipleRows,\n isPrimaryAction: () => true\n }),\n () => ({\n id: getId(item),\n type: types.DISPATCH,\n label: 'Kontakta säljare',\n getTranslatedLabel: (t) => t('myt_itemCard_actions_contactSeller'),\n dispatch: (dispatch) => {\n const src = getMessagingThreadLink(\n item.seller.id,\n memberId,\n item.itemId,\n {\n traderaUserId: item.seller.id,\n singleThread: true,\n openForm: true,\n source: 'contact_seller'\n }\n );\n const title = 'Kontakta säljare';\n const recipientId = item.seller.id;\n dispatch(\n openMessagingModal({\n title,\n src,\n recipientId,\n item\n })\n );\n },\n gaLabel: 'ContactSeller',\n isVisible: () =>\n featureToggles.isMessagingEnabled && !item.haveMultipleRows,\n isPrimaryAction: () => false\n }),\n () => ({\n id: getId(item),\n type: types.LINK,\n label: 'Spåra paket',\n getTranslatedLabel: (t) => t('myt_itemCard_actions_trackShipment'),\n url: `/my/order/${item.transaction.purchaseOrderId}#shipping`,\n gaLabel: 'BuyerTrackShipment',\n isVisible: () =>\n !item.haveMultipleRows && !!item.transaction.trackingLink,\n isPrimaryAction: () => true\n }),\n common.itemsFromSeller,\n () => ({\n // \"INR\" = \"Item Not Received\"\n id: getId(item),\n type: types.LINK,\n label: 'Anmäl utebliven vara',\n getTranslatedLabel: (t) =>\n t('myt_itemCard_actions_reportItemNotReceived'),\n url: `/resolution/INR2/${item.transaction.purchaseOrderId}`,\n gaLabel: 'ReportItemNotReceived',\n isVisible: () =>\n !item.transaction.hasBuyerProtection &&\n !item.transaction.buyerState.inr &&\n [\n PaidStatuses.MARKED_AS_PAID_BY_BUYER,\n PaidStatuses.MARKED_AS_PAID_BY_SELLER,\n PaidStatuses.PAID\n ].includes(item.transaction.paidStatus),\n isPrimaryAction: () => !item.haveMultipleRows\n }),\n () => ({\n id: getId(item),\n type: types.LINK,\n label: 'Anmäl utebliven vara',\n getTranslatedLabel: (t) => t('myt_itemCard_actions_createDispute'),\n url: `/resolution/disputes/${item.transaction.transactionId}`,\n gaLabel: 'CreateDispute',\n isVisible: () =>\n item.transaction.hasBuyerProtection &&\n !item.transaction.dispute &&\n [\n PaidStatuses.MARKED_AS_PAID_BY_BUYER,\n PaidStatuses.MARKED_AS_PAID_BY_SELLER,\n PaidStatuses.PAID\n ].includes(item.transaction.paidStatus),\n isPrimaryAction: () => !item.haveMultipleRows\n }),\n () => ({\n id: getId(item),\n type: types.DISPATCH,\n label: 'Ångra dölj',\n getTranslatedLabel: (t) => t('myt_itemCard_actions_unhide'),\n dispatch: (dispatch) => {\n dispatch(\n isNormalListViewType(listViewType)\n ? purchaseOrderActions.updatePurchaseOrderHiddenForBuyer(\n item.transaction.purchaseOrderId,\n [item.transaction.transactionId],\n false,\n listViewType\n )\n : myTraderaItemActions.buyerUnhideTransaction(\n [item.transaction.transactionId],\n listViewType\n )\n );\n },\n gaLabel: 'UnhideSold',\n isVisible: () =>\n isNormalListViewType(listViewType)\n ? !item.haveMultipleRows &&\n item.transaction?.buyerState.hidden\n : item.transaction.buyerState.hidden,\n isPrimaryAction: () => true\n }),\n () => ({\n id: getId(item),\n type: types.DISPATCH,\n label: 'Dölj',\n getTranslatedLabel: (t) => t('myt_itemCard_actions_hide'),\n dispatch: (dispatch) => {\n dispatch(\n isNormalListViewType(listViewType)\n ? purchaseOrderActions.updatePurchaseOrderHiddenForBuyer(\n item.transaction.purchaseOrderId,\n [item.transaction.transactionId],\n true,\n listViewType\n )\n : myTraderaItemActions.buyerHideTransaction(\n [item.transaction.transactionId],\n listViewType\n )\n );\n },\n gaLabel: 'HideSold',\n isVisible: () =>\n isNormalListViewType(listViewType)\n ? !item.haveMultipleRows &&\n !item.transaction?.buyerState.hidden\n : !item.transaction.buyerState.hidden,\n isPrimaryAction: () => true\n })\n ];\n return actions;\n};\n\nexport const lostActions = (item, listViewType) => {\n const common = commonActions(item);\n const actions = [\n common.itemsFromSeller,\n () => ({\n id: getId(item),\n type: types.DISPATCH,\n label: 'Dölj',\n getTranslatedLabel: (t) => t('myt_itemCard_actions_hide'),\n dispatch: (dispatch) => {\n dispatch(\n myTraderaItemActions.buyerActiveItemsHideItems(\n getIds(item),\n listViewType\n )\n );\n },\n gaLabel: 'HideBuyerLostItem',\n isVisible: () => true,\n isPrimaryAction: () => true\n })\n ];\n return actions;\n};\n","import {\n activeSellerActions,\n soldActions,\n unsoldActions\n} from '../../helpers/item-actions-helper-seller';\nimport {\n activeBuyerActions,\n boughtActions,\n lostActions\n} from '../../helpers/item-actions-helper-buyer';\nimport { PAGE_NAMES } from '../../constants/page';\nimport { logger } from 'packages/logger';\n\nexport const getActionsForItem = (\n item,\n listViewType,\n memberId,\n memberMessagingParticipation,\n pageName\n) => {\n const secondaryActions = [];\n let primaryAction = null;\n let promotedSecondaryAction = null;\n\n const checkAndAdd = (action) => {\n try {\n if (!action.isVisible) {\n throw 'Action is not compatible: ' + action.label;\n }\n if (!action.isVisible()) {\n return;\n }\n if (primaryAction === null && action.isPrimaryAction()) {\n // eslint-disable-next-line better-mutation/no-mutation\n primaryAction = action;\n } else if (\n promotedSecondaryAction === null &&\n action.isPromotedSecondaryAction &&\n action.isPromotedSecondaryAction()\n ) {\n // eslint-disable-next-line better-mutation/no-mutation\n promotedSecondaryAction = action;\n\n // Keep it in secondary actions list for views where promoted secondary is not displayed,\n // and in case user misses promoted secondary button\n secondaryActions.push(action);\n } else {\n secondaryActions.push(action);\n }\n } catch (error) {\n logger(error);\n }\n };\n\n const resolveActions = (potentialActions) => {\n potentialActions.forEach((actionCreator) => {\n const action = actionCreator();\n checkAndAdd(action);\n });\n return {\n primaryAction,\n secondaryActions,\n promotedSecondaryAction\n };\n };\n\n let actionsForItem = [];\n switch (pageName) {\n case PAGE_NAMES.BuyerActiveItems:\n actionsForItem = resolveActions(\n activeBuyerActions(item, listViewType, memberId)\n );\n break;\n case PAGE_NAMES.BuyerPurchases:\n actionsForItem = resolveActions(\n boughtActions(item, listViewType, memberId)\n );\n break;\n case PAGE_NAMES.BuyerItemsLost:\n actionsForItem = resolveActions(lostActions(item, listViewType));\n break;\n case PAGE_NAMES.SellerSold:\n actionsForItem = resolveActions(\n soldActions(\n item,\n listViewType,\n memberId,\n memberMessagingParticipation\n )\n );\n break;\n case PAGE_NAMES.SellerUnsold:\n actionsForItem = resolveActions(\n unsoldActions(item, listViewType, memberId)\n );\n break;\n case PAGE_NAMES.SellerActive:\n actionsForItem = resolveActions(activeSellerActions(item));\n break;\n default:\n throw (\n 'Actions for item and pageName ' + pageName + ' is not defined'\n );\n }\n return actionsForItem;\n};\n","import {\n getBuyerActiveItemsLabel,\n getBuyerItemsLostLabel,\n getActiveLabel,\n getSoldLabel,\n getUnsoldLabel,\n getPurchasesLabel\n} from './item-labels';\nimport { getActionsForItem } from './item-actions';\n\nimport { getColumns } from './item-columns';\nimport {\n buyerActiveItemsColumns,\n buyerPurchasesColumns,\n buyerItemsLostColumns,\n sellerActiveColumns,\n sellerSoldColumns,\n sellerUnsoldColumns\n} from './../../constants/column-definitions';\nimport { logger } from 'packages/logger';\nimport { PAGE_NAMES } from '../../constants/page';\n\n/**\n * @param {boolean} declares if response is incorrect;\n */\nconst hasIncorrectResponse = (response) =>\n !response ||\n response === null ||\n response === undefined ||\n typeof response === 'string';\n\n/**\n * @param {object} response - copy of the response with empty values;\n */\nconst createReturnObject = (response) => ({\n paging: response.paging,\n itemsOrderedByID: [],\n itemsByID: {},\n statistics: response.statistics,\n currentTime: response.currentTime,\n currentMemberId: response.currentMemberId,\n sellerEmail: response.sellerEmail || ''\n});\n\n/**\n * TODO\n * Describe the relationship of transactionID / PurchaseID for future developers;\n *\n * @param {object} item - the item from webApi\n * @returns {object} The single item transformed with all properties set as expected for the front end.\n * @desc - the purchase\n */\nconst getItem = (\n item,\n labelFunc,\n columnFunc,\n listType,\n listViewType,\n memberId,\n memberMessagingParticipation,\n pageName\n) => ({\n ...item,\n key: item.transaction ? item.transaction.transactionId : item.itemId,\n bidInformation: {\n ...item.bidInformation,\n hasBids: item.bidInformation.bidCount > 0\n },\n label: labelFunc(item, memberId),\n actions: getActionsForItem(\n item,\n listViewType,\n memberId,\n memberMessagingParticipation,\n pageName\n ),\n columns: columnFunc(item, listType),\n shippingPrice: getCheapestShippingPrice(item),\n leadingBidder:\n item.bidInformation.leadingBidder && item.isActive\n ? item.bidInformation.leadingBidder\n : null,\n buyer:\n item.transaction && item.transaction.buyer\n ? item.transaction.buyer\n : null,\n itemUrl:\n item.itemUrl.substring(0, 1) === '/' ? item.itemUrl : `/${item.itemUrl}`\n});\n\nconst getCheapestShippingPrice = (item) => {\n const shippingOptions = (item.listing.shippingOptions || [])\n .filter(\n (option) =>\n option.shippingType !== 'Takeaway' &&\n option.shippingType !== 'TakeawayOnly'\n )\n .map(({ shippingCost }) => shippingCost);\n\n return shippingOptions.length > 0\n ? shippingOptions.reduce((prev, current) =>\n prev < current ? prev : current\n )\n : 0;\n};\n\n/**\n * @returns {Object} : Defines which labels and actions are used for each page\n */\nconst actionLabelMap = {\n [PAGE_NAMES.BuyerActiveItems]: {\n label: getBuyerActiveItemsLabel,\n columns: buyerActiveItemsColumns,\n pageName: PAGE_NAMES.BuyerActiveItems\n },\n [PAGE_NAMES.BuyerPurchases]: {\n label: getPurchasesLabel,\n columns: buyerPurchasesColumns,\n pageName: PAGE_NAMES.BuyerPurchases\n },\n [PAGE_NAMES.BuyerItemsLost]: {\n label: getBuyerItemsLostLabel,\n columns: buyerItemsLostColumns,\n pageName: PAGE_NAMES.BuyerItemsLost\n },\n [PAGE_NAMES.SellerActive]: {\n label: getActiveLabel,\n columns: sellerActiveColumns,\n pageName: PAGE_NAMES.SellerActive\n },\n [PAGE_NAMES.SellerSold]: {\n label: getSoldLabel,\n columns: sellerSoldColumns,\n pageName: PAGE_NAMES.SellerSold\n },\n [PAGE_NAMES.SellerUnsold]: {\n label: getUnsoldLabel,\n columns: sellerUnsoldColumns,\n pageName: PAGE_NAMES.SellerUnsold\n }\n};\n\nconst getSoldItem = (item, listViewType, messagingParticipation = false) =>\n getItem(\n item,\n getSoldLabel,\n getColumns(sellerSoldColumns[listViewType], listViewType),\n actionLabelMap[PAGE_NAMES.SellerSold].columns[listViewType],\n listViewType,\n '',\n messagingParticipation,\n PAGE_NAMES.SellerSold\n );\nconst getUnsoldItem = (item, listViewType) =>\n getItem(\n item,\n getUnsoldLabel,\n getColumns(sellerUnsoldColumns[listViewType], listViewType),\n actionLabelMap[PAGE_NAMES.SellerUnsold].columns[listViewType],\n listViewType,\n '',\n false,\n PAGE_NAMES.SellerUnsold\n );\nconst getPurchasedItem = (item, listViewType) =>\n getItem(\n item,\n getPurchasesLabel,\n getColumns(buyerPurchasesColumns[listViewType], listViewType),\n actionLabelMap[PAGE_NAMES.BuyerPurchases].columns[listViewType],\n listViewType,\n '',\n true,\n PAGE_NAMES.BuyerPurchases\n );\n\n/**\n * @param {object} response - from webApi\n * @param {string} listViewType\n * @param {string} memberId\n * @param {boolean} memberMessagingParticipation\n * @param {string} pageName\n * @description creates an ordered list of items, with ui state set for frontend;\n */\nconst getItemsInOrder = (\n response,\n listViewType,\n memberId,\n memberMessagingParticipation,\n pageName\n) => {\n if (!actionLabelMap[pageName]) {\n try {\n throw actionLabelMap[pageName];\n } catch (e) {\n logger(e);\n }\n }\n const newItems = createReturnObject(response);\n if (hasIncorrectResponse(response)) {\n return newItems;\n }\n\n Object.keys(response.items).forEach((key) => {\n const item = response.items[key];\n let id = 1;\n switch (pageName) {\n case PAGE_NAMES.BuyerActiveItems:\n case PAGE_NAMES.BuyerItemsLost:\n case PAGE_NAMES.SellerUnsold:\n case PAGE_NAMES.SellerActive:\n id = item.itemId.toString();\n break;\n case PAGE_NAMES.BuyerPurchases:\n case PAGE_NAMES.SellerSold:\n id = item.transaction.transactionId.toString();\n break;\n default:\n try {\n throw `trying to update state on undefined (${pageName}) pageName`;\n } catch (e) {\n logger(e);\n }\n }\n newItems.itemsOrderedByID.push(id);\n // eslint-disable-next-line better-mutation/no-mutation\n newItems.itemsByID[id] = getItem(\n item, //item,\n actionLabelMap[pageName].label, //labelFunc,\n getColumns(\n actionLabelMap[pageName].columns[listViewType],\n listViewType\n ), //columnFunc,\n actionLabelMap[pageName].columns[listViewType], //listType,\n listViewType, //listViewType,\n memberId, //memberId,\n memberMessagingParticipation, // memberMessagingParticipation\n actionLabelMap[pageName].pageName //pageName\n );\n });\n\n return newItems;\n};\n\nexport const getItemFromPurchaseOrderId = (items, purchaseOrderId) => {\n const { itemsByID } = items;\n const item = Object.keys(itemsByID).find((key) => {\n const item = itemsByID[key];\n return item.transaction.purchaseOrderId === purchaseOrderId;\n });\n\n return item ? itemsByID[item] : null;\n};\n\nexport default {\n getSoldItem,\n getUnsoldItem,\n getItemsInOrder,\n getPurchasedItem,\n getItemFromPurchaseOrderId\n};\n","import type { RootState } from 'tradera/state/configure-store';\n\nexport const selectTraderaShop = (state: RootState) => state.views.traderaShop;\n\nexport const selectTranslatedDescriptionState = (state: RootState) =>\n selectTraderaShop(state).translatedDescriptionState;\n\nexport const selectTranslatedDescription = (state: RootState) =>\n selectTraderaShop(state).translatedDescription || null;\n\nexport const selectCurrentDescriptionLanguageCodeIso2 = (state: RootState) =>\n selectTraderaShop(state).currentDescriptionLanguageCodeIso2 || null;\n","// extracted by mini-css-extract-plugin\nexport default {\"theme\":\"theme--xncDt\",\"theme-highlight\":\"theme-highlight--CluvJ\",\"themeHighlight\":\"theme-highlight--CluvJ\",\"theme-primary\":\"theme-primary--Kapq9\",\"themePrimary\":\"theme-primary--Kapq9\",\"outline\":\"outline--YaWtz\",\"theme-search\":\"theme-search--jN-zQ\",\"themeSearch\":\"theme-search--jN-zQ\",\"theme-danger\":\"theme-danger--as+8m\",\"themeDanger\":\"theme-danger--as+8m\",\"theme-action\":\"theme-action--fMXFR\",\"themeAction\":\"theme-action--fMXFR\",\"theme-tag\":\"theme-tag--9Io3l\",\"themeTag\":\"theme-tag--9Io3l\",\"theme-dropdown\":\"theme-dropdown--3X9Gq\",\"themeDropdown\":\"theme-dropdown--3X9Gq\",\"theme-light\":\"theme-light--EgZNn\",\"themeLight\":\"theme-light--EgZNn\",\"theme-translucent\":\"theme-translucent--1oJ-z\",\"themeTranslucent\":\"theme-translucent--1oJ-z\",\"theme-text\":\"theme-text--v9mh-\",\"themeText\":\"theme-text--v9mh-\",\"inverted\":\"inverted--z8i4t\",\"theme-link\":\"theme-link--lByR2\",\"themeLink\":\"theme-link--lByR2\",\"theme-unbutton\":\"theme-unbutton---dfNg\",\"themeUnbutton\":\"theme-unbutton---dfNg\",\"theme-mainMenu\":\"theme-mainMenu--qVtls\",\"themeMainMenu\":\"theme-mainMenu--qVtls\",\"size-xs\":\"size-xs--7jPDj\",\"sizeXs\":\"size-xs--7jPDj\",\"size-md\":\"size-md--aje5a\",\"sizeMd\":\"size-md--aje5a\",\"size-lg\":\"size-lg--C3rwd\",\"sizeLg\":\"size-lg--C3rwd\",\"button\":\"button--pUSnX\",\"disabled\":\"disabled--Bpbab\",\"loading\":\"loading--6awyB\",\"ghost\":\"ghost--w6Zdm\",\"branded-text\":\"branded-text--zM1hZ\",\"brandedText\":\"branded-text--zM1hZ\",\"wide\":\"wide--3qIV9\",\"fluid\":\"fluid--uUu7r\",\"round\":\"round--XlCU2\",\"loadingIcon\":\"loadingIcon--qh8yC\"};","import type { AriaAttributes } from 'react';\nimport { useCallback, cloneElement, forwardRef, isValidElement } from 'react';\nimport ALink from 'tradera/components/alink/alink';\nimport LoadingIcon from '@tradera/blueprint/theme/icons2/loading.svg?jsx';\n\nimport css from './button.module.scss';\nimport classNames from 'classnames';\nimport type { OnlyAs, PolyRefFunction } from 'react-polymorphed';\n\nexport type ButtonTheme =\n | 'primary'\n | 'highlight'\n | 'action'\n | 'search'\n | 'warning'\n | 'danger'\n | 'light'\n | 'link'\n | 'translucent'\n | 'unbutton'\n | 'text'\n | 'tag'\n | 'mainMenu'\n | 'dropdown';\n\nexport type ButtonVariant = 'filled' | 'outline' | 'ghost' | 'inverted';\n\ntype ButtonSize = 'xs' | 'sm' | 'md' | 'lg';\n\nexport type ButtonProps = AriaAttributes &\n React.PropsWithChildren<{\n theme?: ButtonTheme;\n variant?: ButtonVariant;\n /**\n * Default is 'sm'\n */\n size?: ButtonSize;\n disabled?: boolean;\n className?: string;\n wide?: boolean;\n round?: boolean;\n brandedText?: boolean;\n fluid?: boolean;\n onClick?: (event?: React.MouseEvent) => void;\n onKeyDown?: (event?: React.KeyboardEvent) => void;\n /**\n * NOTE: If not passing any `className` to the icon it will be set automatically depending on button size and color.\n */\n icon?: React.ReactNode;\n /**\n * Place an icon on the left side of the button. Same as using `icon`.\n */\n iconLeft?: React.ReactNode;\n /**\n * Place an icon on the right side of the button.\n */\n iconRight?: React.ReactNode;\n /**\n * @deprecated Use `iconLeft` or `iconRight` instead to place icons, and `fixedIcon` to fix the icon in place.\n * `position` defaults to `left`\n *\n * { position: 'left' | 'right', variant: 'fixed'}\n */\n iconConfig?: {\n position?: 'left' | 'right';\n variant?: 'fixed';\n };\n /**\n * Place an icon to the outer left or right of the button\n */\n fixedIcon?: boolean;\n href?: string;\n target?: '_blank' | '_self' | '_parent' | '_top';\n\n loading?: boolean;\n input?: boolean;\n nowrap?: boolean;\n /**\n * Default is 'center'\n */\n align?: 'left' | 'center' | 'right';\n type?: 'submit' | 'button';\n title?: string;\n alt?: string;\n }>;\n\nconst polyRef = forwardRef as PolyRefFunction;\n\nconst getClassNameFromReactElement = (element: React.ReactNode) => {\n const props = isValidElement(element) ? element?.props : undefined;\n return typeof props === 'object' &&\n props &&\n 'className' in props &&\n props.className\n ? (props?.className as string)\n : '';\n};\n\nconst ButtonIcon = ({\n icon: IconComponent,\n size,\n round,\n className\n}: {\n icon?: React.ReactNode;\n size: ButtonProps['size'];\n round: ButtonProps['round'];\n className?: string;\n}) => {\n if (!IconComponent) return null;\n if (!isValidElement(IconComponent)) return null;\n\n const iconClasses = getClassNameFromReactElement(IconComponent);\n\n return (\n <>\n {cloneElement(IconComponent, {\n ...IconComponent?.props,\n // Set default classes if none are provided\n className: iconClasses\n ? iconClasses\n : classNames(\n 'icon',\n {\n 'icon-xs': size === 'xs',\n 'icon-sm': size === 'sm',\n 'icon-md': size === 'md' || size === 'lg',\n 'icon-lg': round && size === 'lg'\n },\n className\n )\n })}\n \n );\n};\n\nexport const Button = polyRef<\n 'button',\n ButtonProps,\n OnlyAs<'button' | 'input' | 'a'>\n>(\n (\n {\n theme = 'primary',\n variant = 'filled',\n size = 'sm',\n children,\n disabled,\n wide,\n round,\n className,\n brandedText,\n fluid,\n onClick,\n icon: iconProp,\n iconLeft: iconLeftProp,\n iconRight: iconRightProp,\n iconConfig: iconConfigProp,\n href,\n loading,\n input,\n align = 'center',\n nowrap,\n fixedIcon,\n ...otherProps\n },\n forwardedRef\n ) => {\n const iconConfig = { position: 'left', ...iconConfigProp };\n\n const isIconOnRight = iconConfig?.position === 'right';\n const isIconOnLeft = iconConfig?.position === 'left';\n const iconLeft = iconLeftProp ?? (isIconOnLeft ? iconProp : null);\n const iconRight = iconRightProp ?? (isIconOnRight ? iconProp : null);\n const isFixedIcon = fixedIcon ?? iconConfig?.variant === 'fixed';\n\n const ariaDisabled = otherProps['aria-disabled'];\n\n const buttonClasses = classNames(\n css.button,\n css.theme,\n css[`theme-${theme}`],\n {\n [css.filled]: variant === 'filled',\n [css.outline]: variant === 'outline',\n [css.ghost]: variant === 'ghost',\n [css.inverted]: variant === 'inverted',\n [css.brandedText]: brandedText,\n [css[`size-${size}`]]: !!size && size !== 'sm',\n [css.wide]: wide,\n [css.round]: round,\n [css.fluid]: fluid,\n [css.loading]: loading,\n 'text-nowrap text-truncate': nowrap,\n [css.fixed]: iconConfig.variant === 'fixed',\n ['text-left']: align === 'left',\n ['text-right']: align === 'right',\n // otherwise icons won't be out to the edge on larger sizes when using fixed icons since we pad them a lot.\n 'px-2': fluid && isFixedIcon\n },\n className\n );\n\n const onBtnClick = useCallback(\n (\n event: React.MouseEvent<\n HTMLAnchorElement | HTMLButtonElement,\n MouseEvent\n >\n ) => {\n if (ariaDisabled === true || ariaDisabled === 'true') return;\n\n if (typeof onClick === 'function' && !loading) {\n onClick(event);\n }\n },\n [onClick, loading, ariaDisabled]\n );\n\n if (input) {\n return ;\n }\n\n const loadingContent = loading ? (\n \n \n \n Loading\n \n \n ) : null;\n\n /**\n * Queue some complexity for handling all different positionings of icons.\n *\n * Since we want to be able to both have icons on the left and right side of\n * the inner content, AND be able to align the text to the left, center or\n * right, AND be able to have icons fixed, we need to do some codez to make\n * things predictable. Sure, we could absolutely position the icons, but\n * that could bring some unexpected behaviour, so let's use flexbox instead.\n *\n * We solve this by having a wrapper around the icon(s) and the content. And\n * then we place elements on both sides of the content, no matter where\n * the icon(s) are. We then flex-grow each element to be able to center the\n * content if we want to.\n */\n const fixedToLeft = isFixedIcon && align !== 'left';\n const fixedToRight = isFixedIcon && align !== 'right';\n const content =\n !!iconLeft || !!iconRight ? (\n \n \n \n \n {children}\n {loadingContent}\n \n \n \n \n ) : (\n <>\n {children}\n {loadingContent}\n \n );\n\n // An element cannot be disabled, therefore we cannot easily get a disabled behavior for it without modifying a lot of props,\n // so easiest way to solve this is perhaps to just render a disabled \n );\n }\n);\n\nButton.displayName = 'Button';\n","const BID_VALIDATION_RESULTS = {\n AUCTION_HAS_ENDED: 'AuctionHasEnded',\n AUCTION_HAS_NOT_STARTED: 'AuctionHasNotStarted',\n BELOW_MINIMUM: 'BelowMinimum',\n BELOW_OWN_LEADING_BID: 'BelowOwnLeadingBid',\n BELOW_RESERVE_PRICE: 'BelowReservePrice',\n BID_NOT_FOUND: 'BidNotFound',\n BIDDER_IS_BLOCKED: 'BidderIsBlocked',\n BIDDING_OR_BUYING_OWN_ITEM: 'BiddingOrBuyingOwnItem',\n BUYING_LIMIT_REACHED: 'BuyingLimitReached',\n EQUAL_OR_HIGHER_THAN_BUY_IT_NOW: 'EqualOrHigherThanBuyItNow',\n HIGHER_BIDDER_EXISTS: 'HigherBidderExists',\n ITEM_NO_LONGER_AVAILABLE: 'ItemNoLongerAvailable',\n ITEM_NOT_FOUND: 'ItemNotFound',\n LEADING_BIDDER: 'LeadingBidder',\n NO_LONGER_VALID: 'NoLongerValid',\n ONLY_EU_BUYERS_ACCEPTED: 'OnlyEUBuyersAccepted',\n ONLY_NORDIC_BUYERS_ACCEPTED: 'OnlyNordicBuyersAccepted',\n ONLY_SWEDISH_BUYERS_ACCEPTED: 'OnlySwedishBuyersAccepted',\n SUCCESSFULLY_CHANGED_AUTOBID: 'SuccessfullyChangedAutoBid',\n USER_IS_SUSPENDED: 'UserIsSuspended',\n MAX_PLACED_BIDS_LIMIT: 'MaxPlacedBidsLimit',\n BID_AMOUNT_LIMIT: 'BidAmountLimit',\n OFFLINE: 'Offline'\n};\n\nconst BID_VALIDATION_SUCCESSES: string[] = [\n BID_VALIDATION_RESULTS.LEADING_BIDDER,\n BID_VALIDATION_RESULTS.SUCCESSFULLY_CHANGED_AUTOBID\n];\n\nconst BID_VALIDATION_RETRY: string[] = [\n BID_VALIDATION_RESULTS.BELOW_MINIMUM,\n BID_VALIDATION_RESULTS.BELOW_RESERVE_PRICE,\n BID_VALIDATION_RESULTS.BELOW_OWN_LEADING_BID,\n BID_VALIDATION_RESULTS.HIGHER_BIDDER_EXISTS,\n BID_VALIDATION_RESULTS.OFFLINE\n];\n\nconst BIN_VALIDATION_RESULTS = {\n ITEM_NOT_FOUND: 'ItemNotFound',\n ONLY_EU_BUYERS_ACCEPTED: 'OnlyEUBuyersAccepted',\n ONLY_NORDIC_BUYERS_ACCEPTED: 'OnlyNordicBuyersAccepted',\n ONLY_SWEDISH_BUYERS_ACCEPTED: 'OnlySwedishBuyersAccepted',\n USER_IS_SUSPENDED: 'UserIsSuspended',\n BIDDER_IS_BLOCKED: 'BidderIsBlocked',\n ITEM_HAS_ENDED: 'ItemHasEnded',\n BUYING_OWN_ITEM: 'BuyingOwnItem',\n ITEM_ALREADY_PURCHASED_BY_OTHER_USER: 'ItemAlreadyPurchasedByOtherUser',\n PURCHASE_DID_NOT_SUCCEED: 'PurchaseDidNotSucceed'\n};\n\nexport {\n BID_VALIDATION_RESULTS,\n BID_VALIDATION_SUCCESSES,\n BID_VALIDATION_RETRY,\n BIN_VALIDATION_RESULTS\n};\n","import { createApi } from '@reduxjs/toolkit/query/react';\nimport { DEFAULT_LANGUAGE } from 'tradera/lang/constants.mjs';\nimport { touchWebClient } from 'tradera/utils/http';\nimport { httpClientBaseQuery } from './utils/http-client-base-query';\nimport qs from 'qs';\nimport type {\n CategorySearchApiResponse,\n CategorySearchRequest\n} from './types/webapi-discover-generated';\n\nimport { z } from 'zod';\n\nconst CategorySchema = z.object({\n name: z.string(),\n categoryId: z.number(),\n isLeaf: z.boolean()\n});\n\nconst CategorySuggestionSchema = z.object({\n matchedItemCount: z.number(),\n name: z.string(),\n categoryId: z.number(),\n isLeaf: z.boolean()\n});\n\nconst CategoriesAndSuggestionsSchema = z.object({\n categories: z.array(CategorySchema),\n // FYI: we don't get these currently in DEV\n suggestions: z.array(CategorySuggestionSchema).optional()\n});\n\ntype GetCategoriesResponse = z.infer;\n\ntype GetCategoriesParams = {\n categoryId: number;\n shortDescription?: string;\n locale?: string;\n currentLevel?: number;\n};\n\nexport const touchwebSyiApi = createApi({\n reducerPath: 'touchwebSyiApi',\n baseQuery: httpClientBaseQuery({ client: touchWebClient }),\n endpoints: (builder) => ({\n getCategories: builder.query<\n GetCategoriesResponse,\n GetCategoriesParams\n >({\n query: ({\n categoryId = -1,\n shortDescription,\n currentLevel = 0\n }) => {\n if (categoryId > 0 && currentLevel > 0) {\n return {\n url: `/selling/categorysuggestions`,\n method: 'POST',\n data: {\n categoryId: categoryId,\n levelToSearch: currentLevel + 1,\n title: shortDescription\n }\n };\n }\n\n return {\n url: '/selling/toplevelcategorysuggestions',\n method: 'POST',\n data: {\n title: shortDescription\n }\n };\n },\n\n transformResponse: (response: unknown, _meta, arg) => {\n const data = CategoriesAndSuggestionsSchema.parse(response);\n\n const suggestions = data?.suggestions || [];\n\n return {\n ...data,\n // just use the first 3 suggestions and merge the rest as regular categories\n suggestions: suggestions.slice(0, 3),\n categories: [...data.categories, ...suggestions.slice(3)]\n ?.slice()\n .sort((a, b) =>\n new Intl.Collator(\n arg.locale ?? DEFAULT_LANGUAGE\n ).compare(a.name, b.name)\n )\n };\n }\n }),\n categorySearch: builder.query<\n CategorySearchApiResponse,\n CategorySearchRequest\n >({\n query: (request) =>\n `/api/webapi/discover/category-search?${qs.stringify(request)}`\n })\n })\n});\n\nexport type Category = z.infer;\n\nexport const { useCategorySearchQuery, useGetCategoriesQuery, usePrefetch } =\n touchwebSyiApi;\n","const THROW_ERROR = false;\n\nexport const assertNoUndefinedProperties = (obj) => {\n for (const [key, value] of Object.entries(obj)) {\n if (value === undefined) {\n const message = `${key} is undefined`;\n if (THROW_ERROR) {\n throw new Error(message);\n }\n console.error(message);\n }\n }\n};\n","const initialState = {\n chosenExtraFeatures: [],\n hasChosenExtraFeatures: false\n};\n\nexport const PossibleFeatures = {\n reservePrice: 'reservePrice',\n highlight: 'highlight',\n rankUp: 'rankUp'\n};\n\nexport default (state = initialState, action) => {\n switch (action.type) {\n case 'SET_CHOSEN_EXTRA_FEATURES': {\n const hasChosenExtraFeatures =\n action.payload && action.payload.length > 0;\n return {\n ...state,\n chosenExtraFeatures: action.payload,\n hasChosenExtraFeatures\n };\n }\n }\n\n return state;\n};\n","export const selectExistsInWishList = (itemId) => (state) =>\n state.items?.wishListItemIds.includes(itemId);\n","import { formatUtcDateAsSwedishTimeZoneDate } from 'tradera/utils/date';\nimport { PAGE_LIST_TYPES } from '../../constants/list-types';\nimport { PaidStatuses } from 'tradera/constants/paid-statuses';\n\nconst isTakeaway = (shippingType) => {\n return shippingType === 'Takeaway' || shippingType === 'TakeawayOnly';\n};\n\nconst getSoldItemStateFor = (sellerState) => {\n if (sellerState.shipped && sellerState.feedbackLeft) {\n return 'Done';\n }\n if (sellerState.shipped) {\n return 'Shipped';\n }\n return sellerState.paid ? 'Paid' : 'NotPaid';\n};\n\nexport const initialPayloadItems = (data, listType, dayjs) => {\n return data.purchaseOrders\n .map((purchaseOrder) =>\n purchaseOrder.rows.map((row) => ({\n ...row,\n caller: {},\n haveMultipleRows: purchaseOrder.rows.length > 1,\n haveCombinedShipping:\n !!purchaseOrder.combinedShippingInformation,\n isArchived: purchaseOrder.state.isArchived,\n key: row.listing.itemId,\n itemId: row.listing.itemId,\n itemUrl: row.listing.itemUrl,\n listing: {\n ...row.listing,\n restart: {},\n endDate: {\n formatted: formatUtcDateAsSwedishTimeZoneDate(\n row.listing.endDate,\n dayjs\n )\n }\n },\n bidInformation: {\n bidCount: row.buying.bidCount\n },\n seller: {\n ...purchaseOrder.sellerMember,\n id: purchaseOrder.sellerMember.memberId\n },\n transaction: {\n ...row.transaction,\n ...(purchaseOrder.shipping.selectedShipping\n ? {\n selectedShipping: {\n ...purchaseOrder.shipping.selectedShipping,\n isTakeaway: isTakeaway(\n purchaseOrder.shipping.selectedShipping\n .shippingType\n )\n }\n }\n : null),\n ...(purchaseOrder.shipping.shippingDiscount\n ? {\n shippingDiscount: {\n ...purchaseOrder.shipping.shippingDiscount,\n isTakeaway: isTakeaway(\n purchaseOrder.shipping.shippingDiscount\n .shippingType\n )\n }\n }\n : null),\n ...(purchaseOrder.shipping.shipping?.url\n ? {\n trackingLink: purchaseOrder.shipping.shipping?.url\n }\n : null),\n bookedShipment: {\n ...purchaseOrder.shipping.shipping\n },\n paidShipmentCheckoutId:\n purchaseOrder.shipping.shipping?.shipmentCheckoutId,\n shipmentId: purchaseOrder.shipping.shipping?.shipmentId,\n hasUnpaidShipping: purchaseOrder.state.hasUnpaidShipping,\n isRefundAllowed: purchaseOrder.state.isRefundAllowed,\n isDiscountAllowed: purchaseOrder.state.isDiscountAllowed,\n paidStatus: purchaseOrder.state.paidStatus,\n purchaseOrderId: purchaseOrder.purchaseOrderId,\n hasBuyerProtection:\n purchaseOrder.payment.hasBuyerProtection,\n ...(listType === PAGE_LIST_TYPES.BUYER_PURCHASES\n ? {\n buyerState: {\n ...row.transaction.sellerState,\n ...row.transaction.buyerState,\n paid: [\n PaidStatuses.PAID,\n PaidStatuses.MARKED_AS_PAID_BY_BUYER,\n PaidStatuses.MARKED_AS_PAID_BY_SELLER,\n PaidStatuses.PAYMENT_PENDING\n ].includes(purchaseOrder.state.paidStatus),\n shippingBooked:\n purchaseOrder.state.isShippingBooked,\n shipped: purchaseOrder.state.isShipped,\n hidden: purchaseOrder.state.isHiddenForBuyer,\n inr: row.transaction.buyerState.isInrSubmitted\n }\n }\n : {\n sellerState: {\n upiSubmitted:\n purchaseOrder.state.isUpiSubmitted,\n dcsSubmitted:\n purchaseOrder.state.isDcsSubmitted,\n state: getSoldItemStateFor({\n ...row.transaction.sellerState,\n shipped: purchaseOrder.state.isShipped,\n paid: [\n PaidStatuses.PAID,\n PaidStatuses.MARKED_AS_PAID_BY_SELLER,\n PaidStatuses.PAYMENT_PENDING\n ].includes(purchaseOrder.state.paidStatus)\n }),\n ...row.transaction.sellerState,\n paid: [\n PaidStatuses.PAID,\n PaidStatuses.MARKED_AS_PAID_BY_SELLER,\n PaidStatuses.PAYMENT_PENDING\n ].includes(purchaseOrder.state.paidStatus),\n shippingBooked:\n purchaseOrder.state.isShippingBooked,\n shipped: purchaseOrder.state.isShipped,\n hidden: purchaseOrder.state.isHiddenForSeller\n }\n }),\n transactionDate: {\n formatted: formatUtcDateAsSwedishTimeZoneDate(\n row.transaction.transactionDate,\n dayjs\n )\n },\n buyer: {\n ...purchaseOrder.buyerMember,\n id: purchaseOrder.buyerMember.memberId\n }\n }\n }))\n )\n .flatMap((row) => row);\n};\n\nexport const initialPayloadPurchaseOrders = (data, page) => {\n return data.purchaseOrders.map((purchaseOrder) => {\n return {\n ...purchaseOrder,\n shipping: {\n ...purchaseOrder.shipping,\n ...(purchaseOrder.shipping.selectedShipping\n ? {\n selectedShipping: {\n ...purchaseOrder.shipping.selectedShipping,\n isTakeaway: isTakeaway(\n purchaseOrder.shipping.selectedShipping\n .shippingType\n )\n }\n }\n : null),\n ...(purchaseOrder.shipping.shippingDiscount\n ? {\n shippingDiscount: {\n ...purchaseOrder.shipping.shippingDiscount,\n isTakeaway: isTakeaway(\n purchaseOrder.shipping.shippingDiscount\n .shippingType\n )\n }\n }\n : null)\n },\n transactionIds: purchaseOrder.rows.map((row) => {\n return row.transaction.transactionId;\n }),\n itemsToGiveFeedBackTo: purchaseOrder.rows\n .map((row) => {\n if (\n row.transaction[\n page.listType === PAGE_LIST_TYPES.BUYER_PURCHASES\n ? 'buyerState'\n : 'sellerState'\n ].feedbackLeft !== true\n ) {\n return row.transaction.transactionId;\n }\n return null;\n })\n .filter(Boolean)\n };\n });\n};\n","import {\n selectMyTraderaState,\n searching,\n error\n} from 'tradera/apps/my-tradera/app/state/reducers/my-tradera';\nimport { selectFiltersState } from 'tradera/apps/my-tradera/app/state/selectors/filters';\nimport fetch from '../../utils/fetch';\nimport myTraderaItemsActions from './my-tradera-items';\nimport URLS from '../../constants/urls';\nimport { actionTypes } from '../action-types/purchase-order';\nimport {\n initialPayloadItems,\n initialPayloadPurchaseOrders\n} from '../../helpers/payloads/purchase-order';\nimport { showSuccessToast } from 'tradera/services/toasts';\nimport { scrollToInitialScroll } from 'tradera/apps/my-tradera/app/state/actions/scroll-to-initial-scroll';\nimport { webApiClient } from 'tradera/utils/http';\nimport { PaidStatuses } from 'tradera/constants/paid-statuses';\n\nconst resetPurchaseOrder = () => ({\n type: actionTypes.PURCHASE_ORDER_RESET\n});\n\nconst runPurchaseOrders =\n ({\n page,\n shouldScrollToInitialScroll = false,\n listViewType,\n waitForBackend = false,\n dontModifyHistory = true,\n dayjs\n }) =>\n async (dispatch, getState) => {\n const endPoint = page.searchUrlNormalView;\n\n if (!endPoint) {\n return;\n }\n\n const state = getState();\n\n const currentMemberId = state.member.memberId;\n\n dispatch(searching(true));\n dispatch(error(false));\n dispatch(resetPurchaseOrder());\n dispatch(myTraderaItemsActions.resetMyTraderaItems());\n\n const search = async () => {\n try {\n const modifiersFromState = selectFiltersState(state).modifiers;\n const modifiers = {\n ...modifiersFromState,\n PageNumber: modifiersFromState.paging.page,\n PageSize: modifiersFromState.paging.size\n };\n\n const routeBefore = getState().router.location.pathname;\n\n const data = await fetch(endPoint, {\n body: JSON.stringify(\n myTraderaItemsActions.changeParamsForBackend(modifiers)\n )\n });\n\n const routeAfter = getState().router.location.pathname;\n const routeHasChanged = routeAfter !== routeBefore;\n\n if (!routeHasChanged) {\n dispatch({\n type: myTraderaItemsActions.actionTypes.UPDATE_ITEMS,\n payload: {\n value: {\n currentMemberId,\n items: initialPayloadItems(\n data,\n page.listType,\n dayjs\n )\n },\n page: page.pageName,\n listViewType,\n memberMessagingParticipation:\n selectMyTraderaState(state)\n .memberMessagingParticipation\n }\n });\n dispatch({\n type: actionTypes.PURCHASE_ORDER_LIST,\n payload: {\n paging: {\n from:\n modifiers.paging.size *\n (modifiers.paging.page - 1),\n page: modifiers.paging.page,\n size: modifiers.paging.size,\n totalPages: data.totalNumberOfPages,\n totalItems: data.totalNumberOfPurchaseOrders\n },\n purchaseOrders: initialPayloadPurchaseOrders(\n data,\n page\n ),\n statistics: data.statistics\n }\n });\n }\n\n if (shouldScrollToInitialScroll === true) {\n scrollToInitialScroll();\n }\n\n dispatch(error(false));\n return dispatch(searching(false));\n } catch (error) {\n dispatch(searching(false));\n if (dontModifyHistory === false) {\n myTraderaItemsActions.updateURL(\n dispatch,\n page.url,\n selectFiltersState(state).modifiers\n );\n }\n return myTraderaItemsActions.handleError(dispatch, error);\n }\n };\n\n // This is a hack to enable delay of searches since sometimes when modifying an item\n // outside of the SPA world, it could take some time for the backend to catch up\n if (waitForBackend === true) {\n setTimeout(search, 3000);\n } else {\n search();\n }\n };\n\nconst updatePurchaseOrderShipped =\n (purchaseOrderId, listViewType, transactionIds, isShipped) =>\n async (dispatch) => {\n dispatch(searching(true));\n try {\n dispatch(error(false));\n if (isShipped) {\n await fetch(URLS.MARK_SHIPPED, {\n body: JSON.stringify({ ids: transactionIds })\n });\n dispatch(\n myTraderaItemsActions.transactionsMarkAsShippedBySeller(\n transactionIds,\n listViewType\n )\n );\n } else {\n await fetch(URLS.UNMARK_SHIPPED, {\n body: JSON.stringify({ ids: transactionIds })\n });\n dispatch(\n myTraderaItemsActions.transactionsUnmarkAsShippedBySeller(\n transactionIds,\n listViewType\n )\n );\n }\n dispatch({\n type: actionTypes.PURCHASE_ORDER_SHIPPED,\n payload: {\n isShipped,\n purchaseOrderId\n }\n });\n return dispatch(searching(false));\n } catch (error) {\n return myTraderaItemsActions.handleError(dispatch, error);\n }\n };\n\nconst requestCombinedShippingPrice =\n (purchaseOrderId, hasBuyerRequestedCombinedShippingPrice) =>\n async (dispatch) => {\n dispatch(searching(true));\n try {\n dispatch(error(false));\n\n await fetch(URLS.REQUEST_COMBINED_SHIPPING_PRICE, {\n body: JSON.stringify({\n purchaseOrderId,\n hasRequested: hasBuyerRequestedCombinedShippingPrice\n })\n });\n\n dispatch({\n type: actionTypes.PURCHASE_ORDER_REQUEST_COMBINED_SHIPPING,\n payload: {\n purchaseOrderId,\n hasBuyerRequestedCombinedShippingPrice\n }\n });\n\n return dispatch(searching(false));\n } catch (error) {\n return myTraderaItemsActions.handleError(dispatch, error);\n }\n };\n\nconst updatePurchaseOrderPaidByBuyer =\n (purchaseOrderId, listViewType, isMarkedAsPaidByBuyer) =>\n async (dispatch) => {\n dispatch(searching(true));\n try {\n dispatch(error(false));\n if (isMarkedAsPaidByBuyer) {\n await fetch(URLS.BUYER_MARK_PAID, {\n body: JSON.stringify({ ids: [purchaseOrderId] })\n });\n dispatch(\n myTraderaItemsActions.purchaseOrdersMarkAsPaidByBuyer(\n [purchaseOrderId],\n listViewType\n )\n );\n } else {\n await fetch(URLS.BUYER_UNMARK_PAID, {\n body: JSON.stringify({ ids: [purchaseOrderId] })\n });\n dispatch(\n myTraderaItemsActions.purchaseOrdersUnmarkAsPaidByBuyer(\n [purchaseOrderId],\n listViewType\n )\n );\n }\n dispatch({\n type: actionTypes.PURCHASE_ORDER_PAID_STATUS,\n payload: {\n purchaseOrderId,\n paidStatus: isMarkedAsPaidByBuyer\n ? PaidStatuses.MARKED_AS_PAID_BY_BUYER\n : PaidStatuses.UNPAID\n }\n });\n return dispatch(searching(false));\n } catch (error) {\n return myTraderaItemsActions.handleError(dispatch, error);\n }\n };\n\nconst updatePurchaseOrderPaidBySeller =\n (purchaseOrderId, listViewType, memberMessagingParticipation, isPaid) =>\n async (dispatch) => {\n dispatch(searching(true));\n try {\n dispatch(error(false));\n if (isPaid) {\n await fetch(URLS.SELLER_MARK_PAID, {\n body: JSON.stringify({ ids: [purchaseOrderId] })\n });\n dispatch(\n myTraderaItemsActions.purchaseOrdersMarkAsPaidBySeller(\n [purchaseOrderId],\n listViewType,\n memberMessagingParticipation\n )\n );\n showSuccessToast('siteWideNotifications_orderMarkedAsPaid');\n } else {\n await fetch(URLS.SELLER_UNMARK_PAID, {\n body: JSON.stringify({ ids: [purchaseOrderId] })\n });\n dispatch(\n myTraderaItemsActions.purchaseOrdersUnmarkAsPaidBySeller(\n [purchaseOrderId],\n listViewType,\n memberMessagingParticipation\n )\n );\n }\n dispatch({\n type: actionTypes.PURCHASE_ORDER_PAID_STATUS,\n payload: {\n purchaseOrderId,\n paidStatus: isPaid\n ? PaidStatuses.MARKED_AS_PAID_BY_SELLER\n : PaidStatuses.UNPAID\n }\n });\n return dispatch(searching(false));\n } catch (error) {\n return myTraderaItemsActions.handleError(dispatch, error);\n }\n };\n\nconst deleteShipment =\n (shipmentId, purchaseOrderId, listViewType) => async (dispatch) => {\n dispatch(searching(true));\n try {\n await fetch(URLS.DELETE_SHIPMENT, {\n body: JSON.stringify({ shipmentId: shipmentId })\n });\n dispatch(error(false));\n dispatch({\n type: actionTypes.PURCHASE_ORDER_DELETE_SHIPMENT,\n payload: {\n purchaseOrderId,\n listViewType\n }\n });\n return dispatch(searching(false));\n } catch (error) {\n return myTraderaItemsActions.handleError(dispatch, error);\n }\n };\n\nconst markAsShippingBooked =\n (purchaseOrderId, listViewType) => async (dispatch) => {\n dispatch(searching(true));\n webApiClient\n .post('/member/selling/item-shipping-booked', {\n purchaseOrderId,\n booked: true\n })\n .then(() => {\n dispatch(error(false));\n dispatch({\n type: actionTypes.PURCHASE_ORDERS_SHIPPING_BOOKED,\n payload: {\n purchaseOrderId,\n listViewType,\n isBooked: true\n }\n });\n dispatch(searching(false));\n return;\n })\n .catch((error) =>\n myTraderaItemsActions.handleError(dispatch, error)\n );\n };\n\nconst updateShippingBooked =\n (purchaseOrderId, listViewType) => async (dispatch) => {\n dispatch(searching(true));\n try {\n await fetch(URLS.UNMARK_BOOKED, {\n body: JSON.stringify({ ids: [purchaseOrderId] })\n });\n dispatch(error(false));\n dispatch({\n type: actionTypes.PURCHASE_ORDERS_SHIPPING_BOOKED,\n payload: {\n purchaseOrderId,\n listViewType,\n isBooked: false\n }\n });\n dispatch(searching(false));\n } catch (error) {\n myTraderaItemsActions.handleError(dispatch, error);\n }\n };\n\nconst feedbackLeftBySeller = (purchaseOrderId, submittables, listViewType) => {\n return {\n type: actionTypes.PURCHASE_ORDERS_FEEDBACK_LEFT_BY_SELLER,\n payload: {\n submittables,\n purchaseOrderId,\n listViewType\n }\n };\n};\n\nconst feedbackLeftByBuyer = (purchaseOrderId, submittables, listViewType) => {\n return {\n type: actionTypes.PURCHASE_ORDERS_FEEDBACK_LEFT_BY_BUYER,\n payload: {\n purchaseOrderId,\n submittables,\n listViewType\n }\n };\n};\n\nconst updatePurchaseOrderHiddenForSeller =\n (purchaseOrderId, isHidden, listViewType) => async (dispatch) => {\n try {\n dispatch(searching(true));\n\n const action = isHidden\n ? myTraderaItemsActions.sellerHideTransaction\n : myTraderaItemsActions.sellerUnhideTransaction;\n\n dispatch(action([purchaseOrderId], listViewType));\n dispatch({\n type: actionTypes.PURCHASE_ORDER_HIDDEN,\n payload: {\n purchaseOrderId,\n listViewType\n }\n });\n return dispatch(searching(false));\n } catch (error) {\n return myTraderaItemsActions.handleError(dispatch, error);\n }\n };\n\nconst updatePurchaseOrderHiddenForBuyer =\n (purchaseOrderId, transactionIds, isHidden, listViewType) =>\n async (dispatch) => {\n try {\n dispatch(searching(true));\n\n const action = isHidden\n ? myTraderaItemsActions.buyerHideTransaction\n : myTraderaItemsActions.buyerUnhideTransaction;\n\n dispatch(action(transactionIds, listViewType));\n dispatch({\n type: actionTypes.PURCHASE_ORDER_HIDDEN,\n payload: {\n purchaseOrderId,\n listViewType\n }\n });\n return dispatch(searching(false));\n } catch (error) {\n return myTraderaItemsActions.handleError(dispatch, error);\n }\n };\n\nexport default {\n feedbackLeftBySeller,\n feedbackLeftByBuyer,\n markAsShippingBooked,\n updateShippingBooked,\n deleteShipment,\n requestCombinedShippingPrice,\n updatePurchaseOrderShipped,\n updatePurchaseOrderPaidBySeller,\n updatePurchaseOrderPaidByBuyer,\n resetPurchaseOrder,\n runPurchaseOrders,\n updatePurchaseOrderHiddenForSeller,\n updatePurchaseOrderHiddenForBuyer\n};\n","/* eslint-disable better-mutation/no-mutation */\n\nimport { createSlice } from '@reduxjs/toolkit';\nimport getPayoutState from './initial-state';\n\nconst payoutSlice = createSlice({\n name: 'payout',\n initialState: getPayoutState(),\n reducers: {\n receivePayouts: (state, { payload }) => {\n const { member, traderaPay } = payload;\n state.member = member;\n state.traderaPay = traderaPay;\n state.isFetching = false;\n },\n removePayout: (state) => {\n state.traderaPay.payoutDestination = null;\n },\n setFetching: (state, { payload }) => {\n state.isFetching = payload;\n }\n }\n});\n\nexport const { receivePayouts, removePayout, setFetching } =\n payoutSlice.actions;\n\nexport default payoutSlice.reducer;\n\nexport const selectPayoutState = (state) => state.views.myTradera.payout;\n","export default () => {\n return {\n member: null,\n traderaPay: {},\n isFetching: false\n };\n};\n","import { logger } from 'packages/logger';\nimport TRANSACTION_TYPES from 'tradera/constants/transaction-types';\nimport ITEM_TYPES from 'tradera/constants/item-types';\nimport { ITEM_STATES } from './constants';\n\nconst getEndedItemState = (\n itemType: ITEM_TYPES,\n bidCount: number,\n reservePriceReached: boolean,\n nextValidBidAmount: number,\n transactionType?: TRANSACTION_TYPES,\n leadingBidMemberId?: number,\n isCancelled?: boolean\n): ITEM_STATES => {\n if (isCancelled) {\n return ITEM_STATES.ENDED_CANCELLED;\n }\n\n const isAuction = itemType === ITEM_TYPES.AUCTION;\n const isAuctionBin = itemType === ITEM_TYPES.AUCTION_BIN;\n const isPureBin = itemType === ITEM_TYPES.PURE_BIN;\n const isShopItem = itemType === ITEM_TYPES.SHOP_ITEM;\n\n // transactionType may not be set if feature-toggle 'always-enrich-with-transactiontype' is off in WebApi.\n if (isAuctionBin && transactionType === TRANSACTION_TYPES.BIN) {\n return ITEM_STATES.ENDED_AUCTION_BIN_BOUGHT_AS_BIN;\n }\n if (\n isAuctionBin &&\n transactionType === TRANSACTION_TYPES.PURCHASE_OFFER_ON_ENDED\n ) {\n return ITEM_STATES.ENDED_AUCTION_BIN_SOLD_THROUGH_PURCHASE_OFFER;\n }\n if (transactionType === TRANSACTION_TYPES.AUCTION) {\n return ITEM_STATES.ENDED_AUCTION_WITH_WINNING_BID;\n }\n if (\n isPureBin &&\n transactionType === TRANSACTION_TYPES.PURCHASE_OFFER_ON_ACTIVE\n ) {\n return ITEM_STATES.ENDED_PURE_BIN_SOLD_THROUGH_PURCHASE_OFFER;\n }\n if (\n isPureBin &&\n transactionType === TRANSACTION_TYPES.PURCHASE_OFFER_ON_ENDED\n ) {\n return ITEM_STATES.ENDED_PURE_BIN_SOLD_THROUGH_PURCHASE_OFFER;\n }\n if (\n isAuction &&\n transactionType === TRANSACTION_TYPES.PURCHASE_OFFER_ON_ENDED\n ) {\n return ITEM_STATES.ENDED_AUCTION_SOLD_THROUGH_PURCHASE_OFFER;\n }\n\n // When transactionType is not available (feature toggle is off), we can still figure out\n // that the item was bought with buy-it-now price if there are no bids and a leading bidder exist.\n if (\n !transactionType &&\n isAuctionBin &&\n bidCount === 0 &&\n reservePriceReached &&\n leadingBidMemberId\n ) {\n return ITEM_STATES.ENDED_AUCTION_BIN_BOUGHT_AS_BIN;\n }\n\n if ((isAuction || isAuctionBin) && bidCount === 0) {\n return ITEM_STATES.ENDED_AUCTION_WITHOUT_BID;\n }\n if (bidCount > 0 && !reservePriceReached) {\n return ITEM_STATES.ENDED_AUCTION_WITHOUT_WINNING_BID;\n }\n if (bidCount > 0 && reservePriceReached) {\n return ITEM_STATES.ENDED_AUCTION_WITH_WINNING_BID;\n }\n if (isPureBin || isShopItem) {\n return ITEM_STATES.ENDED_FIXED_PRICE;\n }\n logger(\n `Unknown ended state for parameters: ${JSON.stringify({\n itemType,\n bidCount,\n reservePriceReached,\n nextValidBidAmount\n })}`\n );\n return ITEM_STATES.UNKNOWN;\n};\n\nconst getOngoingItemState = (itemType: ITEM_TYPES): ITEM_STATES => {\n if (itemType === ITEM_TYPES.AUCTION) {\n return ITEM_STATES.ONGOING_AUCTION;\n }\n if (itemType === ITEM_TYPES.AUCTION_BIN) {\n return ITEM_STATES.ONGOING_AUCTION_BIN;\n }\n if (itemType === ITEM_TYPES.PURE_BIN || itemType === ITEM_TYPES.SHOP_ITEM) {\n return ITEM_STATES.ONGOING_FIXED_PRICE;\n }\n logger(\n `Unknown ongoing state for parameters: ${JSON.stringify({\n itemType\n })}`\n );\n return ITEM_STATES.UNKNOWN;\n};\n\nconst getNotStartedItemState = (itemType: ITEM_TYPES): ITEM_STATES => {\n if (itemType === ITEM_TYPES.AUCTION) {\n return ITEM_STATES.NOT_STARTED_AUCTION;\n }\n if (itemType === ITEM_TYPES.AUCTION_BIN) {\n return ITEM_STATES.NOT_STARTED_AUCTION_BIN;\n }\n if (itemType === ITEM_TYPES.PURE_BIN || itemType === ITEM_TYPES.SHOP_ITEM) {\n return ITEM_STATES.NOT_STARTED_FIXED_PRICE;\n }\n logger(\n `Unknown not started state for parameters: ${JSON.stringify({\n itemType\n })}`\n );\n return ITEM_STATES.UNKNOWN;\n};\n\nexport const getItemState = (\n hasEnded: boolean,\n hasStarted: boolean,\n itemType: ITEM_TYPES,\n bidCount: number,\n reservePriceReached: boolean,\n nextValidBidAmount: number,\n transactionType?: TRANSACTION_TYPES,\n leadingBidMemberId?: number,\n isCancelled?: boolean\n) => {\n if (hasEnded) {\n return getEndedItemState(\n itemType,\n bidCount,\n reservePriceReached,\n nextValidBidAmount,\n transactionType,\n leadingBidMemberId,\n isCancelled\n );\n }\n\n if (!hasStarted) {\n return getNotStartedItemState(itemType);\n }\n\n return getOngoingItemState(itemType);\n};\n","import { Component } from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\n\nexport default class LoadingPortal extends Component {\n static propTypes = {\n children: PropTypes.node,\n className: PropTypes.string\n };\n\n constructor() {\n super();\n this.el = document.createElement('div');\n this.loadingPortalRoot = document.getElementById('loading-portal');\n }\n\n componentDidMount() {\n if (this.loadingPortalRoot) {\n this.loadingPortalRoot.appendChild(this.el);\n setTimeout(() => {\n this.el.classList.add('loading-portal-visible');\n }, 0);\n }\n }\n\n componentWillUnmount() {\n if (this.loadingPortalRoot) {\n this.loadingPortalRoot.removeChild(this.el);\n }\n }\n\n render() {\n const { children, className = 'loading-portal' } = this.props;\n this.el.className = className;\n return ReactDOM.createPortal(children, this.el);\n }\n}\n","export const MODAL_TYPES = {\n default: 'default',\n wishlistReminders: 'wishlistReminders',\n selling: 'selling'\n} as const;\n\nexport const CHANNEL_TAG_GROUPS = {\n wishlistReminders: [\n 'wishlist_reminder_3_min_optin',\n 'wishlist_reminder_15_min_optin'\n ],\n buyingListingOutbid: ['member_outbid_optin'],\n buyingListingWon: ['member_won_optin'],\n sellingListingFirstBid: ['selling_first_bid_optin'],\n sellingListingAllBids: ['selling_new_bid_optin'],\n sellingListingSold: ['selling_sold_optin'],\n sellingPaymentReceived: ['selling_payment_received_optin']\n} as const;\n","export default {\n INITIALIZE: 'PAGE/INITIALIZE',\n SET_PAGE_TYPE: 'PAGE/SET_PAGE_TYPE',\n SET_PAGE_META_FROM_SEARCH_RESULT: 'PAGE/SET_PAGE_META_FROM_SEARCH_RESULT',\n SET_PAGE_META: 'PAGE/SET_PAGE_META'\n};\n","import { createApi } from '@reduxjs/toolkit/query/react';\nimport type { BidHistoryApiResponse } from 'tradera/state/services/types/webapi-shopping-generated';\nimport { baseQuery } from 'tradera/state/services/utils/webapi-base-query';\nimport { isServer } from 'tradera/utils/nextjs';\n\nexport const bidHistoryApi = createApi({\n reducerPath: 'bidHistoryApi',\n baseQuery,\n endpoints: (builder) => ({\n getBidHistory: builder.query({\n query: (itemId) => {\n const baseUrl = isServer ? '' : '/api/webapi';\n return `${baseUrl}/shopping/bidhistory/${itemId}`;\n }\n })\n })\n});\n\nexport const { useGetBidHistoryQuery } = bidHistoryApi;\n","import type { CategoryLinksData } from 'tradera/apps/tradera/components/start-page/category-links/category-links';\nimport type { ItemCardViewModel } from 'tradera/state/services/types/webapi-discover-generated';\nimport type { ItemListType } from './item-queries';\n\nexport type StartPageInitData = {\n isLoggedIn?: boolean;\n startPageResponse?: { config: string };\n lastChance?: object;\n trendingBrands?: object;\n trendingSearches?: object;\n wishList?: object;\n favouriteSellers?: object;\n};\n\nexport enum STATUS {\n FETCH_FAILED = 'FETCH_FAILED',\n HAS_DATA = 'HAS_DATA',\n NOT_FETCHED = 'NOT_FETCHED'\n}\n\nexport type StartpageContentDataHiddenOn = { hiddenOn: string[] };\n\nexport type StartPageContent = {\n type: string;\n data: StartpageContentDataHiddenOn | CategoryLinksData;\n};\n\nexport type BannerLinkIcon = {\n baseUrl: string;\n};\n\ntype BannerLink = {\n text: string;\n url: string;\n icon?: BannerLinkIcon;\n};\n\ntype StartPageHeader = {\n isCampaignMode: boolean;\n displayRecentSearches: boolean;\n displayTrendingSearches: boolean;\n bannerLinks?: BannerLink[];\n backgroundVideo?: {\n largeUrl: string;\n mediumUrl: string;\n smallUrl: string;\n };\n backgroundImage?: {\n baseUrl: string;\n };\n trackingId: string;\n webpageUrl: string;\n taglineDesktop?: string;\n taglineMobile?: string;\n};\n\nexport type StartPageConfig = {\n content: StartPageContent[];\n header: StartPageHeader;\n};\n\nexport type StartPageConfigInitData = {\n contentLoggedIn: StartPageContent[];\n contentLoggedOut: StartPageContent[];\n header: StartPageHeader;\n};\n\ntype StartPageInitialStateConfigPart =\n | {\n status: STATUS.FETCH_FAILED | STATUS.NOT_FETCHED;\n config: never;\n }\n | {\n status: STATUS.HAS_DATA;\n config: StartPageConfig;\n };\n\nexport type StartPageInitialState = StartPageInitialStateConfigPart & {\n lastChance: { items: ItemCardViewModel[]; status: STATUS };\n trendingBrands: { items: object[]; status: STATUS };\n trendingSearches: { items: object[]; status: STATUS };\n wishList: { items: object[]; status: STATUS };\n favouriteSellers: {\n sellers: object[];\n sellerSuggestions: object[];\n items: object[];\n totalItems: number;\n status: STATUS;\n };\n itemQueries: ItemListType[];\n};\n","import { logger } from 'packages/logger';\nimport { nullifyUndefinedProperties } from 'tradera/utils/object';\nimport { mapConfig } from './configuration-mapper';\nimport { STATUS } from './types';\nimport { itemQueries } from './item-queries';\nimport type { StartPageInitData, StartPageInitialState } from './types';\n\nexport default (initData: StartPageInitData = {}) => {\n const {\n isLoggedIn,\n startPageResponse,\n lastChance = { items: [], status: STATUS.NOT_FETCHED },\n trendingBrands = { items: [], status: STATUS.NOT_FETCHED },\n wishList = { items: [], status: STATUS.NOT_FETCHED },\n favouriteSellers = {\n sellers: [],\n sellerSuggestions: [],\n items: [],\n totalItems: 0,\n status: STATUS.NOT_FETCHED\n }\n } = initData;\n\n let config;\n if (startPageResponse?.config) {\n try {\n config = JSON.parse(startPageResponse.config);\n } catch (error) {\n logger(error);\n }\n }\n\n return nullifyUndefinedProperties({\n status: config ? STATUS.HAS_DATA : STATUS.NOT_FETCHED,\n config: mapConfig(config, isLoggedIn),\n lastChance,\n trendingBrands,\n wishList,\n favouriteSellers,\n itemQueries\n }) as StartPageInitialState;\n};\n","/* eslint-disable better-mutation/no-mutation */\n\nimport { createSlice } from '@reduxjs/toolkit';\nimport initialState from './initial-state';\n\nconst startPageSlice = createSlice({\n name: 'startPage',\n initialState: initialState(),\n reducers: {\n initialize: (_state, { payload }) => {\n return initialState(payload);\n },\n setStartPageConfigAction: (state, { payload }) => {\n state.config = payload.config;\n state.status = payload.status;\n },\n setStartPageConfigStatusAction: (state, { payload }) => {\n state.status = payload.status;\n },\n setWishListAction: (state, { payload }) => {\n state.wishList = payload;\n },\n setWishListStatusAction: (state, { payload }) => {\n state.wishList.status = payload.status;\n },\n setFavouriteSellersAction: (state, { payload }) => {\n state.favouriteSellers = {\n ...state.favouriteSellers,\n ...payload\n };\n },\n setFavouriteSellersStatusAction: (state, { payload }) => {\n state.favouriteSellers.status = payload.status;\n },\n setItemQueryUsed: (state, { payload }) => {\n const itemQueryIndex = state.itemQueries.findIndex(\n (query) => query.id === payload.id\n );\n if (state.itemQueries[itemQueryIndex]) {\n state.itemQueries[itemQueryIndex].used = true;\n }\n }\n }\n});\n\nexport const {\n initialize,\n setStartPageConfigAction,\n setStartPageConfigStatusAction,\n setWishListAction,\n setWishListStatusAction,\n setFavouriteSellersAction,\n setFavouriteSellersStatusAction,\n setItemQueryUsed\n} = startPageSlice.actions;\n\nexport default startPageSlice.reducer;\n","/* eslint-disable better-mutation/no-mutation */\nimport { createSlice } from '@reduxjs/toolkit';\nimport { MODAL_STATE, ITEM_LAYOUT } from 'tradera/constants/ui';\nimport { cache, CACHE_KEYS } from 'tradera/utils/cache';\nimport { getSystemMessageAlertCount } from './helpers';\nimport { getInitialBadges, type UiState } from './initial-state';\n\nconst MESSAGING_NOTIFICATIONS_CACHE_TTL = 30 * 1000;\n\nconst uiSlice = createSlice({\n name: 'ui',\n initialState: {\n itemLayout: ITEM_LAYOUT.LIST\n } as UiState,\n reducers: {\n initialize: (_state, { payload }) => {\n return {\n ...payload\n };\n },\n toggleHeaderSearch: (state, { payload }) => {\n state.showHeaderSearch = payload;\n },\n openQuickView: (state, { payload }) => {\n const {\n items = state.quickView.items,\n item = state.quickView.item\n } = payload;\n\n state.quickView = {\n ...state.quickView,\n open: MODAL_STATE.OPEN,\n items: items,\n item: item\n };\n },\n closeQuickView: (state) => {\n state.quickView.open = MODAL_STATE.CLOSED;\n },\n loadingQuickView: (state, { payload }) => {\n state.quickView.loading = payload;\n },\n openVideoModal: (state, { payload }) => {\n const { videoUrl, title, pageType, buttonLink, buttonText } =\n payload;\n state.videoModal = {\n ...state.videoModal,\n open: MODAL_STATE.OPEN,\n videoUrl,\n title,\n pageType,\n buttonLink,\n buttonText\n };\n },\n closeVideoModal: (state) => {\n state.videoModal.open = MODAL_STATE.CLOSED;\n },\n openYoutubeVideoModal: (state, { payload }) => {\n const { videoId, title, pageType } = payload;\n state.youtubeVideoModal = {\n ...state.youtubeVideoModal,\n open: MODAL_STATE.OPEN,\n videoId: videoId,\n title: title,\n pageType: pageType\n };\n },\n closeYoutubeVideoModal: (state) => {\n state.youtubeVideoModal.open = MODAL_STATE.CLOSED;\n },\n /*\n Changes made to messaging modal will affect My Tradera as well!\n TODO - test this!\n */\n openMessagingModal: (state, { payload }) => {\n const {\n title = state.messagingModal.title,\n src = state.messagingModal.src,\n participating = state.messagingModal.participating,\n recipientId = state.messagingModal.recipientId,\n item = state.messagingModal.item\n } = payload;\n state.messagingModal = {\n ...state.messagingModal,\n open: MODAL_STATE.OPEN,\n title: title,\n src: src,\n participating: participating,\n recipientId: recipientId,\n item: item,\n isContactHighestBidder: payload.isContactHighestBidder\n };\n },\n closeMessagingModal: (state) => {\n state.messagingModal.open = MODAL_STATE.CLOSED;\n },\n openNotificationOptinModal: (state, { payload }) => {\n const { modalType, gaLabel, title, description, tagGroups } =\n payload;\n state.notificationOptinModal = {\n ...state.notificationOptinModal,\n open: MODAL_STATE.OPEN,\n modalType,\n gaLabel,\n title,\n description,\n tagGroups\n };\n },\n closeNotificationOptinModal: (state) => {\n state.notificationOptinModal.open = MODAL_STATE.CLOSED;\n },\n openModal: (state, { payload }) => {\n const { modalId, data } = payload;\n state.modals = {\n currentModal: modalId,\n currentModalData: data\n };\n },\n closeModal: (state) => {\n state.modals = {\n currentModal: null,\n currentModalData: null\n };\n },\n itemLayout: (state, { payload }) => {\n state.itemLayout = payload;\n },\n siteLayout: (state, { payload }) => {\n state.siteLayout = payload;\n },\n setSystemMessages: (state, { payload }) => {\n state.systemMessages = payload;\n state.badges.system = getSystemMessageAlertCount(payload);\n },\n updateSystemMessages: (state, { payload }) => {\n state.systemMessages = {\n ...state.systemMessages,\n ...payload\n };\n state.badges.system = getSystemMessageAlertCount(payload);\n },\n updateMessagingNotifications: (state, { payload }) => {\n cache.write(\n CACHE_KEYS.MESSAGING_BADGES,\n payload,\n MESSAGING_NOTIFICATIONS_CACHE_TTL\n );\n state.badges.messaging = payload;\n },\n openProfileMenu: (state, { payload }) => {\n state.profileMenu = {\n open: MODAL_STATE.OPEN,\n redirectUrl: payload || false\n };\n },\n closeProfileMenu: (state) => {\n state.profileMenu.open = MODAL_STATE.CLOSED;\n },\n openCategoryDropdownMenu: (state) => {\n state.categoryDropdownMenu.open = MODAL_STATE.OPEN;\n },\n closeCategoryDropdownMenu: (state) => {\n state.categoryDropdownMenu.open = MODAL_STATE.CLOSED;\n },\n openSearchForm: (state) => {\n state.showSearchForm = true;\n },\n closeSearchForm: (state) => {\n state.showSearchForm = false;\n },\n logOut: (state) => {\n state.badges = getInitialBadges();\n },\n openItemSettings: (state, { payload }) => {\n state.itemSettings = {\n open: MODAL_STATE.OPEN,\n item: payload\n };\n },\n closeItemSettings: (state) => {\n state.itemSettings = {\n open: MODAL_STATE.CLOSED,\n item: {}\n };\n },\n openShareModal: (state, { payload }) => {\n state.shareModal = {\n isOpen: true,\n settings: payload\n };\n },\n closeShareModal: (state) => {\n state.shareModal = {\n isOpen: false,\n settings: null\n };\n },\n openHelpSection: (state, { payload }) => {\n state.helpSection = {\n isOpen: true,\n settings: payload\n };\n },\n closeHelpSection: (state) => {\n state.helpSection = {\n isOpen: false,\n settings: null\n };\n },\n openWishListSideSheet: (state) => {\n state.wishListSideSheet.isOpen = true;\n },\n closeWishListSideSheet: (state) => {\n state.wishListSideSheet.isOpen = false;\n },\n updateProductCommunications: (state, { payload }) => {\n state.productCommunications = payload;\n },\n showSaveSearchBanner: (state, { payload = true }) => {\n state.showSaveSearchBanner = payload;\n },\n openCollectSsnModal: (state) => {\n state.collectSsnModal.isOpen = true;\n },\n closeCollectSsnModal: (state) => {\n state.collectSsnModal.isOpen = false;\n }\n }\n});\n\nexport const {\n initialize,\n toggleHeaderSearch,\n openQuickView,\n closeQuickView,\n loadingQuickView,\n openVideoModal,\n closeVideoModal,\n openYoutubeVideoModal,\n closeYoutubeVideoModal,\n openMessagingModal,\n closeMessagingModal,\n openNotificationOptinModal,\n closeNotificationOptinModal,\n itemLayout,\n setSystemMessages,\n updateSystemMessages,\n updateMessagingNotifications,\n openProfileMenu,\n closeProfileMenu,\n openCategoryDropdownMenu,\n closeCategoryDropdownMenu,\n openSearchForm,\n closeSearchForm,\n openItemSettings,\n closeItemSettings,\n siteLayout,\n logOut,\n openModal,\n closeModal,\n openShareModal,\n closeShareModal,\n openHelpSection,\n closeHelpSection,\n openWishListSideSheet,\n closeWishListSideSheet,\n updateProductCommunications,\n showSaveSearchBanner,\n openCollectSsnModal,\n closeCollectSsnModal\n} = uiSlice.actions;\n\nexport const reducer = uiSlice.reducer;\n","import { CHANNEL_TAG_GROUPS } from 'tradera/state/push-notifications/constants';\nimport GdprSettings from 'tradera/utils/gdpr-settings';\nimport { logger } from 'packages/logger';\n\n/**\n * get the urban airship sdk.\n * @returns obj if null then no sdk object available\n */\nexport const getUrbanSdk = () => {\n return new Promise((resolve) => {\n // script from urban airship not loaded\n if (!window.UA) {\n return resolve(null);\n }\n\n // is already loaded?\n if (window.UACache) {\n return resolve(window.UACache);\n }\n\n UA.then(async (sdk) => {\n if (sdk !== null && !sdk.isSupported) {\n // eslint-disable-next-line better-mutation/no-mutation\n sdk = null;\n }\n window.UACache = sdk;\n return resolve(window.UACache);\n }).catch(() => {\n // browser is most likely not supported, return null\n window.UACache = null;\n return resolve(null);\n });\n });\n};\n\nexport const getTagGroupsFromUrbanAirship = async () => {\n try {\n const sdk = await getUrbanSdk();\n if (sdk.channel === null) {\n return null;\n }\n\n // check what tag groups are active\n const tagGroups = {};\n for (const [group, groupTags] of Object.entries(CHANNEL_TAG_GROUPS)) {\n for (const tag of groupTags) {\n tagGroups[group] = sdk.channel.tags.has(tag) === true;\n if (tagGroups[group] === true) {\n break;\n }\n }\n }\n return tagGroups;\n } catch (error) {\n logger(error);\n }\n};\n\nexport const isPushEnabled = (getState) => {\n const {\n member,\n environment: { featureSwitches }\n } = getState();\n\n // something blocking notifications modal from being shown?\n if (\n !GdprSettings.isFunctionalEnabled() ||\n !member.isLoggedIn ||\n featureSwitches['web-push-notifications'] !== true\n ) {\n return false;\n }\n return true;\n};\n","/* eslint-disable better-mutation/no-mutation */\n\n/**\n * HOW IT WORKS\n *\n * urban airship has something called channels. A tradera member subscribes to a channel to get push notifications.\n * each channel has tags that indicate what kind of push notifications the member wants to receive. In the case of the wish list\n * reminder that particular setting subscribes the user to 2 different notifications: reminder 15 minutes before auction ends\n * and reminder 3 minutes before the auction ends. In order to be able to have 1 push notification setting that subscribes\n * to multiple push notifications at tradera we call these tag groups.\n *\n *\n * Urban airship docs:\n * https://docs.airship.com/reference/libraries/web-notify-sdk/latest/index.html\n *\n * web_version_2:\n * Version 1 of push notifications was just targetted at wish list reminders, 3 min and 15 min. When this release was done\n * the code did subscribe the user to all notifications even though the user only wanted to signup for wish list reminders.\n * Since the app push notifier only sent wishlist reminders for web push it was not a problem that the user was subscribed to all\n * kinds of notifications. In the next release when tradera wanted to offer all sorts of push notifications but wanted the users\n * to on their own sign up then we had to update all the current subscriptions. Since this is not possible via the urban airship\n * to update channels via the REST API and then see the updated reflected in the Web SDK we had to introduce the tag web_version_2\n * that indicates if the user has updated their push notification settings.\n *\n * opt-in dialog sample usage:\n * import uiActions from 'tradera/state/ui/actions';\n * import { MODAL_TYPES } from 'tradera/constants/push-notifications';\n *\n * uiActions.openNotificationOptinModalAction(\n * MODAL_TYPES.wishlistReminders\n * )\n *\n */\n\nimport { createSlice } from '@reduxjs/toolkit';\nimport { logger } from 'packages/logger';\nimport {\n CHANNEL_TAG_GROUPS,\n MODAL_TYPES\n} from 'tradera/state/push-notifications/constants';\nimport { localStore } from 'tradera/utils/storage';\nimport { STORAGE_KEYS } from 'tradera/constants/storage';\nimport {\n getUrbanSdk,\n getTagGroupsFromUrbanAirship,\n isPushEnabled\n} from './helpers';\n\nconst pushNotificationsSlice = createSlice({\n name: 'pushNotifications',\n initialState: {\n enabled: false,\n initDone: false,\n pushSupported: false,\n optedIn: false,\n tagGroups: {\n wishlistReminders: false,\n buyingListingOutbid: false,\n buyingListingWon: false,\n sellingListingFirstBid: false,\n sellingListingAllBids: false,\n sellingListingSold: false,\n sellingPaymentReceived: false\n },\n shownModals: {\n [MODAL_TYPES.wishlistReminders]: false,\n [MODAL_TYPES.default]: false,\n [MODAL_TYPES.selling]: false\n }\n },\n reducers: {\n setInitDone(state) {\n state.initDone = true;\n },\n setPushSupported(state, actions) {\n state.pushSupported = actions.payload;\n if (!state.pushSupported) {\n state.optedIn = false;\n }\n },\n setOptedInValue(state, action) {\n state.optedIn = action.payload;\n },\n setTagGroupsValue(state, action) {\n const tagGroups = action.payload;\n state.tagGroups = { ...state.tagGroups, ...tagGroups };\n },\n setShownModalTrue(state, action) {\n const modalType = action.payload;\n state.shownModals[modalType] = true;\n localStore.setItem(\n STORAGE_KEYS.WEB_PUSH_SHOWN_MODALS,\n state.shownModals\n );\n },\n setAllShownModals(state, action) {\n const shownModals = action.payload;\n state.shownModals = shownModals;\n localStore.setItem(\n STORAGE_KEYS.WEB_PUSH_SHOWN_MODALS,\n state.shownModals\n );\n },\n setEnabled(state, action) {\n const enabled = action.payload;\n state.enabled = enabled;\n }\n }\n});\n\nconst actions = pushNotificationsSlice.actions;\nexport const { setShownModalTrue } = actions;\nexport default pushNotificationsSlice.reducer;\n\n/**\n * this should be called as soon as the store is mounted\n */\nexport const init = () => async (dispatch, getState) => {\n let sdk = null;\n try {\n sdk = await getUrbanSdk();\n } catch (error) {\n // not able to init sdk\n }\n dispatch(\n actions.setPushSupported(\n sdk !== null && sdk.canRegister && sdk.isSupported\n )\n );\n\n if (sdk !== null && sdk.channel !== null) {\n dispatch(actions.setOptedInValue(sdk.channel.optedIn));\n\n // has this user been upgraded to version 2?\n if (!sdk.channel.tags.has('web_version_2')) {\n await sdk.channel.tags.set([\n 'wishlist_reminder_3_min_optin',\n 'wishlist_reminder_15_min_optin',\n 'web_version_2'\n ]);\n }\n const tagGroups = await getTagGroupsFromUrbanAirship();\n dispatch(actions.setTagGroupsValue(tagGroups));\n }\n dispatch(actions.setEnabled(sdk !== null && isPushEnabled(getState)));\n\n // load modal shown settings from local store\n const shownModals = localStore.getItem(STORAGE_KEYS.WEB_PUSH_SHOWN_MODALS);\n if (shownModals !== null) {\n dispatch(actions.setAllShownModals(shownModals));\n }\n dispatch(actions.setInitDone());\n};\n\nexport const optIn = () => async (dispatch, getState) => {\n try {\n dispatch(actions.setOptedInValue(true));\n const memberId = getState().member.memberId;\n const sdk = await getUrbanSdk();\n const channel = await sdk.register();\n await channel.namedUser.set(memberId.toString());\n return channel;\n } catch (error) {\n dispatch(actions.setOptedInValue(false));\n return null;\n }\n};\n\nexport const optOut = () => async (dispatch) => {\n try {\n dispatch(actions.setOptedInValue(false));\n const sdk = await getUrbanSdk();\n if (sdk !== null && sdk.channel !== null) {\n await sdk.channel.optOut();\n }\n } catch (error) {\n dispatch(actions.setOptedInValue(true));\n return null;\n }\n};\n\nconst saveTagsToUrbanAirshipAndUpdateState = async (\n channel,\n tagGroups,\n tagGroupValue,\n dispatch,\n getState\n) => {\n // check what tag groups to set and not set\n const tagGroupsToSet = { ...getState().pushNotifications.tagGroups };\n for (const t of tagGroups) {\n tagGroupsToSet[t] = tagGroupValue;\n }\n\n // get the actual tags that we want to get push notifications for and\n // register these tags in urban airship\n let channelTags = ['web_version_2'];\n for (const [group, enabled] of Object.entries(tagGroupsToSet)) {\n if (enabled) {\n channelTags = [...channelTags, ...CHANNEL_TAG_GROUPS[group]];\n }\n }\n\n dispatch(actions.setTagGroupsValue(tagGroupsToSet));\n await channel.tags.set(channelTags);\n};\n\nexport const addTagGroups = (tagGroupsToAdd) => async (dispatch, getState) => {\n try {\n // no sdk? then do nothing\n const sdk = await getUrbanSdk();\n if (sdk === null) {\n return;\n }\n\n let channel = sdk.channel;\n if (channel === null) {\n channel = await dispatch(optIn());\n if (channel === null) {\n dispatch(actions.setPushSupported(false));\n // seems user clicked on block notifications in the browser, abort\n return;\n }\n }\n\n saveTagsToUrbanAirshipAndUpdateState(\n channel,\n tagGroupsToAdd,\n true,\n dispatch,\n getState\n );\n } catch (error) {\n logger(error);\n }\n};\n\nexport const removeTagGroups =\n (tagGroupsToRemove) => async (dispatch, getState) => {\n try {\n // no sdk and no subscription? then do nothing\n const sdk = await getUrbanSdk();\n if (sdk === null || sdk.channel === null) {\n return;\n }\n saveTagsToUrbanAirshipAndUpdateState(\n sdk.channel,\n tagGroupsToRemove,\n false,\n dispatch,\n getState\n );\n } catch (error) {\n logger(error);\n }\n };\n","import React from 'react';\nimport { configureStore } from '@reduxjs/toolkit';\nimport type { Store } from '@reduxjs/toolkit';\nimport { Provider } from 'react-redux';\nimport rootReducer from './root-reducer';\nimport { routerMiddleware } from 'connected-react-router';\nimport { getHistory } from 'tradera/utils/history';\nimport { sentryReduxEnhancer } from 'tradera/utils/sentry/redux';\nimport { initializeState } from './state-initializer';\nimport initData from 'tradera/legacy/static/packages/init-data';\nimport { isServer } from 'tradera/utils/nextjs';\nimport { discoverApi } from './services/discover-api';\nimport { feesApi } from './services/fees-api';\nimport { touchwebSearchApi } from './services/touchweb-search-api';\nimport { touchwebSyiApi } from './services/touchweb-syi-api';\nimport { shoppingApi } from './services/shopping-api';\nimport { cartApi } from './services/cart-api';\nimport type { History } from 'history';\nimport { bidHistoryApi } from 'tradera/components/bid-history/bid-history-api';\nimport { draftsApi } from 'tradera/apps/syi/state/drafts-api';\nimport { templatesApi } from 'tradera/apps/syi/state/templates-api';\nimport { shippingComplaintApi } from './services/shipping-complaint-api';\nimport { savedSearchesApi } from 'tradera/apps/my-tradera/saved-searches/saved-searches-api';\nimport { pickListApi } from 'tradera/apps/my-tradera/pick-list2/services/pick-list-api';\n\nif (isServer) {\n // Do not remove this without also removing the disable of eslint better-mutation/no-mutation at top of file.\n throw new Error(\n 'This implementation is not compatible with SSR as global properties are shared between server instances'\n );\n}\n\n// Hot reloading\nconst enableWebPackHotModuleReplacementForReducers = (\n // webpack modules are not typed\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n module: any,\n store: Store\n) => {\n if (!module.hot) {\n return;\n }\n module.hot.accept('./root-reducer', () => {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const nextRootReducer = require('./root-reducer');\n store.replaceReducer(nextRootReducer);\n });\n};\n\nconst initializeStore = (browserHistory: History) => {\n const reduxStore = configureStore({\n reducer: rootReducer(browserHistory),\n middleware: (getDefaultMiddleware) => {\n const middlewares = [\n discoverApi.middleware,\n feesApi.middleware,\n pickListApi.middleware,\n touchwebSearchApi.middleware,\n touchwebSyiApi.middleware,\n shoppingApi.middleware,\n bidHistoryApi.middleware,\n cartApi.middleware,\n draftsApi.middleware,\n templatesApi.middleware,\n shippingComplaintApi.middleware,\n savedSearchesApi.middleware,\n cartApi.middleware\n ];\n if (browserHistory) {\n middlewares.push(routerMiddleware(browserHistory));\n }\n return getDefaultMiddleware().concat(middlewares);\n },\n // If url contains ?debug-redux devtools will be enabled in production;\n devTools:\n (process && process.env && process.env.NODE_ENV !== 'production') ||\n window.location.search.includes('debug-redux'),\n enhancers: [sentryReduxEnhancer]\n });\n\n enableWebPackHotModuleReplacementForReducers(module, reduxStore);\n return reduxStore;\n};\n\ntype SelectFn = (state: ReturnType) => RootState;\ntype OnChangeFn = (previousState: RootState, currentState: RootState) => void;\n\n// make it possible to observe state changes. used by syi\nexport const observeStore = function (select: SelectFn, onChange: OnChangeFn) {\n let currentState: RootState;\n function handleChange() {\n const nextState = select(store.getState());\n if (nextState !== currentState) {\n const previousState = currentState;\n // eslint-disable-next-line better-mutation/no-mutation\n currentState = nextState;\n onChange(previousState, currentState);\n }\n }\n\n const unsubscribe = store.subscribe(handleChange);\n handleChange();\n return unsubscribe;\n};\n\nconst store = initializeStore(getHistory());\n\ninitializeState(initData)(store.dispatch);\n\nexport default store;\n\n// Ref: https://redux-toolkit.js.org/tutorials/typescript\n// Infer the `RootState` and `AppDispatch` types from the store itself\nexport type RootState = ReturnType;\n// Inferred type: {posts: PostsState, comments: CommentsState, users: UsersState}\nexport type AppDispatch = typeof store.dispatch;\nexport type GetState = () => RootState;\n\n// Don't know how to type this properly...\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const ProviderWithGlobalStore = (props: any) => (\n \n);\n","export enum MODAL_STATE {\n OPEN = 'OPEN',\n CLOSED = 'CLOSED'\n}\n\nexport enum ITEM_LAYOUT {\n GRID = 'layout-grid',\n LIST = 'layout-list',\n GRID_MEDIUM = 'layout-grid-medium',\n GRID_LARGE = 'layout-grid-large'\n}\n\nexport enum SITE_LAYOUT {\n DEFAULT = 'site-width-default',\n FULL_WIDTH = 'site-width-full'\n}\n","import actionTypes from './action-types';\n\nexport default (\n state = {\n isTcfLoaded: false\n },\n action\n) => {\n switch (action.type) {\n case actionTypes.INITIALIZE:\n return {\n ...action.payload\n };\n case actionTypes.SET_TCF_LOADED:\n return {\n ...state,\n isTcfLoaded: true\n };\n\n default:\n return state;\n }\n};\n","import actionTypes from './action-types';\n\nexport default (state = {}, action) => {\n switch (action.type) {\n case actionTypes.INITIALIZE:\n return {\n ...action.payload\n };\n case actionTypes.DEFAULT_ACTION:\n return {\n ...state,\n default: action.payload\n };\n default:\n return state;\n }\n};\n","import actionTypes from './action-types';\n\n// The max size of the item cache\nconst RECENTLY_VIEWED_MAX_LENGTH = 20;\n\nexport const initialState = {\n recentItemIds: [],\n wishListItemIds: []\n};\n\nexport default (\n state = {\n ...initialState\n },\n action\n) => {\n const addRecentlyViewed = () => {\n const { payload: itemId } = action;\n const { recentItemIds = [] } = state;\n\n // Remove item if already present\n let updatedRecentItemIds = recentItemIds.filter((x) => x !== itemId);\n // Add to front of list\n updatedRecentItemIds.unshift(itemId);\n // Limit list length\n updatedRecentItemIds = updatedRecentItemIds.slice(\n 0,\n RECENTLY_VIEWED_MAX_LENGTH\n );\n return {\n ...state,\n recentItemIds: updatedRecentItemIds\n };\n };\n\n const setRecentlyViewed = () => {\n const { payload } = action;\n return {\n ...state,\n recentItemIds: payload.slice(0, RECENTLY_VIEWED_MAX_LENGTH)\n };\n };\n\n const wishlist = () => {\n const {\n payload: { itemId, exists }\n } = action;\n\n const wishListItemIds = new Set(state.wishListItemIds || []);\n if (exists) {\n wishListItemIds.add(itemId);\n } else {\n wishListItemIds.delete(itemId);\n }\n return {\n ...state,\n wishListItemIds: Array.from(wishListItemIds)\n };\n };\n\n const wishlistAddRange = () => {\n const {\n payload: { itemIds }\n } = action;\n const wishListItemIds = new Set(state.wishListItemIds || []);\n itemIds?.forEach((itemId) => wishListItemIds.add(itemId));\n return {\n ...state,\n wishListItemIds: Array.from(wishListItemIds)\n };\n };\n\n const wishlistRemoveRange = () => {\n const {\n payload: { itemIds }\n } = action;\n const wishListItemIds = new Set(state.wishListItemIds || []);\n itemIds?.forEach((itemId) => wishListItemIds.delete(itemId));\n return {\n ...state,\n wishListItemIds: Array.from(wishListItemIds)\n };\n };\n\n const initialize = () => {\n return {\n ...action.payload\n };\n };\n\n const def = () => state;\n\n const reducers = {\n [actionTypes.ADD_RECENTLY_VIEWED]: addRecentlyViewed,\n [actionTypes.SET_RECENTLY_VIEWED]: setRecentlyViewed,\n [actionTypes.INITIALIZE]: initialize,\n [actionTypes.WISHLIST]: wishlist,\n [actionTypes.WISHLIST_ADD_RANGE]: wishlistAddRange,\n [actionTypes.WISHLIST_REMOVE_RANGE]: wishlistRemoveRange\n };\n\n return !action || !action.type || !reducers[action.type]\n ? def()\n : reducers[action.type]();\n};\n","import actionTypes from './action-types';\n\nexport default (state = { isLoggedIn: false }, action) => {\n switch (action.type) {\n case actionTypes.INITIALIZE:\n return {\n ...action.payload\n };\n case actionTypes.DEFAULT_ACTION:\n return {\n ...state,\n default: action.payload\n };\n case actionTypes.SET_IS_FETCHING_GEOLOCATION: {\n const { payload } = action;\n return {\n ...state,\n isFetchingGeolocation: payload.isFetchingGeolocation\n };\n }\n case actionTypes.SET_GEOLOCATION: {\n const { payload } = action;\n return {\n ...state,\n geolocation: payload\n };\n }\n case actionTypes.FAILED_LOADING_GEOLOCATION: {\n return {\n ...state,\n geolocation: null,\n isFetchingGeolocation: false\n };\n }\n case actionTypes.SET_MEMBER_HERO_IMAGE: {\n return {\n ...state,\n memberHeroImage: {\n max: action.payload,\n med: action.payload,\n min: action.payload\n }\n };\n }\n default:\n return state;\n }\n};\n","import actionTypes from './action-types';\n\nexport default (state = {}, action) => {\n if (!action || !action.type) return state;\n const { payload } = action;\n switch (action.type) {\n case actionTypes.INITIALIZE:\n return {\n ...payload\n };\n case actionTypes.SET_PAGE_TYPE:\n return {\n ...state,\n type: payload\n };\n case actionTypes.SET_PAGE_META: {\n const newState = {\n ...state,\n ...payload\n };\n return newState;\n }\n default:\n return state;\n }\n};\n","import dayjs from 'dayjs';\n\nconst initialState = {\n isLoading: false\n};\n\nexport default (state = initialState, action) => {\n var newDraft = null;\n switch (action.type) {\n case 'SET_DRAFT_PROPERTIES': {\n const referenceIsReadonly =\n action.draft.reference &&\n action.draft.reference.indexOf('Sello artnr') >= 0;\n newDraft = {\n ...initialState,\n ...action.payload,\n draftId: action.draft.draftId,\n draftReason: action.draft.draftReason,\n memberId: action.draft.memberId,\n itemId: action.draft.itemId,\n restart: action.draft.restart,\n publishedPromoted: action.draft.publishedPromoted,\n publishedHighlighted: action.draft.publishedHighlighted,\n createdDate: action.draft.createdDate,\n lastModifiedDate: action.draft.lastModifiedDate,\n publishedDate: action.draft.publishedDate,\n publishedAsItemType: action.draft.publishedAsItemType,\n reference: action.draft.reference,\n referenceIsReadonly: referenceIsReadonly,\n additionalDescriptions: action.draft.additionalDescriptions,\n metadata: action.draft.metadata,\n templateId: action.draft.templateId,\n templateName: action.draft.templateName,\n version: action.draft.version,\n isNewDraft: !action.draft.draftId\n };\n break;\n }\n case 'SET_DRAFT_ID':\n newDraft = { ...state, draftId: action.payload };\n break;\n case 'SET_RESTART':\n newDraft = { ...state, restart: action.payload };\n break;\n case 'DISABLE_RESTART':\n newDraft = { ...state, restart: false };\n break;\n case 'SET_REFERENCE':\n newDraft = { ...state, reference: action.payload };\n break;\n case 'ADD_ADDITIONAL_DESCRIPTION':\n var newAdditionalDescriptions = state.additionalDescriptions\n ? [...state.additionalDescriptions]\n : [];\n newAdditionalDescriptions.push({ message: action.payload });\n newDraft = {\n ...state,\n additionalDescriptions: newAdditionalDescriptions\n };\n break;\n case 'SET_DRAFT_REASON':\n newDraft = { ...state, draftReason: action.payload };\n break;\n case 'SET_DRAFT_VERSION':\n newDraft = { ...state, version: action.payload };\n break;\n case 'RESET_DRAFT':\n newDraft = { ...initialState };\n break;\n case 'SET_DRAFT_IS_LOADING':\n newDraft = { ...state, isLoading: action.payload };\n break;\n case 'SET_DESCRIPTION_LANGUAGECODE':\n newDraft = {\n ...state,\n descriptionLanguageCodeIso2:\n action.payload.descriptionLanguageCodeIso2\n };\n break;\n case 'SET_CURRENCY':\n newDraft = {\n ...state,\n currency: action.payload.currency\n };\n break;\n case 'SET_RESELL_PARTNER':\n newDraft = {\n ...state,\n resellPartner: action.payload.resellPartner\n };\n break;\n default:\n return state;\n }\n if (JSON.stringify(state) != JSON.stringify(newDraft)) {\n newDraft.lastModifiedDate = dayjs().toISOString();\n }\n return newDraft;\n};\n","function createInitialState() {\n const initialState = {\n draftCategoryId: 0,\n draftCategoryPath: [],\n validationError: null\n };\n return initialState;\n}\n\nconst initialState = createInitialState();\n\nfunction validate(state) {\n if (!state.draftCategoryId || state.draftCategoryId === 0) {\n return {\n ...state,\n validationError: 'syi_validation_missing_category'\n };\n } else {\n return { ...state, validationError: null };\n }\n}\n\nexport default (state = initialState, action) => {\n switch (action.type) {\n case 'RESET_CATEGORY': {\n return validate(createInitialState());\n }\n case 'SET_DRAFT_CATEGORY': {\n const newState = {\n ...state,\n draftCategoryId: action.categoryId,\n draftCategoryPath: action.categoryPath\n };\n return validate(newState);\n }\n default:\n return state;\n }\n};\n","const initialState = {\n isPropertyEditMode: false,\n creationType: 'new',\n creationStart: null,\n allErrorsVisible: false,\n isEditOfPublishedItem: false,\n publishPending: false,\n publishFailed: false,\n publishFailedReasonDisplayText: null,\n publishedItemPendingVip: false,\n publishedItem: null,\n openModal: null,\n openModalData: null,\n autoSaveEnabled: false,\n draftCanBeResumed: false,\n itemUpdating: false,\n itemUpdated: false\n};\nexport default (state = initialState, action) => {\n switch (action.type) {\n case 'RESET_SYI':\n return { ...initialState };\n case 'SET_IS_PROPERTY_EDIT_MODE':\n return { ...state, isPropertyEditMode: action.payload };\n case 'SET_CREATION_TYPE':\n return { ...state, creationType: action.payload };\n case 'SET_CREATION_START':\n return { ...state, creationStart: action.payload };\n case 'SHOW_ALL_ERRORS':\n return { ...state, allErrorsVisible: true };\n case 'HIDE_ALL_ERRORS':\n return { ...state, allErrorsVisible: false };\n case 'SET_IS_EDIT_OF_PUBLISHED_ITEM':\n return { ...state, isEditOfPublishedItem: action.payload };\n case 'SET_PUBLISHED_ITEM_PENDING_VIP':\n return {\n ...state,\n publishedItemPendingVip: action.payload,\n publishedItem: null,\n publishFailed: false,\n publishFailedReasonDisplayText: null,\n publishPending: false,\n publishDelayed: false\n };\n case 'SET_PUBLISHED_ITEM_DELAYED':\n return {\n ...state,\n publishedItemPendingVip: action.payload,\n publishedItem: null,\n publishFailed: false,\n publishFailedReasonDisplayText: null,\n publishPending: false,\n publishDelayed: true\n };\n case 'SET_PUBLISHED_ITEM':\n return {\n ...state,\n publishedItem: action.payload,\n publishedItemPendingVip: null,\n publishFailed: false,\n publishFailedReasonDisplayText: null,\n publishPending: false,\n publishDelayed: false\n };\n case 'SET_PUBLISH_FAILED':\n return {\n ...state,\n publishedItem: null,\n publishedItemPendingVip: null,\n publishFailed: true,\n publishFailedReasonDisplayText: action.reasonDisplayText,\n publishPending: false,\n publishDelayed: false\n };\n case 'SET_PUBLISH_PENDING':\n return {\n ...state,\n publishedItem: null,\n publishedItemPendingVip: null,\n publishFailed: false,\n publishFailedReasonDisplayText: null,\n publishPending: true,\n publishDelayed: false\n };\n case 'SET_CATEGORY_RESTRICTION':\n return { ...state, categoryRestriction: action.payload };\n case 'TOGGLE_MODAL':\n var newValue =\n state.openModal === action.payload ? null : action.payload;\n return { ...state, openModal: newValue };\n case 'SHOW_MODAL':\n return {\n ...state,\n openModal: action.modalId,\n openModalData: action.modalData\n };\n case 'HIDE_MODAL':\n return { ...state, openModal: null };\n case 'ENABLE_AUTOSAVE':\n return { ...state, autoSaveEnabled: true };\n case 'DISABLE_AUTOSAVE':\n return { ...state, autoSaveEnabled: false };\n case 'SET_DRAFT_CAN_BE_RESUMED':\n return { ...state, draftCanBeResumed: action.payload };\n case 'SET_ITEM_UPDATING':\n return { ...state, itemUpdating: action.payload };\n case 'SET_ITEM_UPDATED':\n return { ...state, itemUpdated: action.payload };\n default:\n return state;\n }\n};\n","const initialState = {\n shortDescription: null,\n longDescription: null,\n categoryId: null,\n images: null,\n openingBid: null,\n reservePrice: null,\n fixedPrice: null,\n durationDays: null,\n customEndTime: null,\n shippingOptions: null,\n itemCondition: null,\n memberConsent: null,\n step1: true,\n step2: true,\n step3: true,\n step4: true\n};\n\nexport default (state = initialState, action) => {\n const step1Errors = function (state) {\n return (\n !!state.shortDescription ||\n !!state.categoryId ||\n !!state.images ||\n !!state.longDescription ||\n !!state.itemCondition\n );\n };\n\n const step2Errors = function (state) {\n return (\n !!state.openingBid ||\n !!state.reservePrice ||\n !!state.fixedPrice ||\n !!state.durationDays ||\n !!state.customEndTime\n );\n };\n\n const step3Errors = function (state) {\n return !!state.shippingOptions;\n };\n\n const step4Errors = function (state) {\n return !!state.memberConsent;\n };\n\n switch (action.type) {\n case 'SET_ERROR':\n // eslint-disable-next-line better-mutation/no-mutation\n state = { ...state };\n // eslint-disable-next-line better-mutation/no-mutation\n state[action.propertyName] = action.error;\n break;\n default:\n return state;\n }\n\n const e1 = step1Errors(state);\n const e2 = step2Errors(state);\n const e3 = step3Errors(state);\n const e4 = step4Errors(state);\n // eslint-disable-next-line better-mutation/no-mutation\n state = {\n ...state,\n step1: e1 || undefined,\n step2: e2 || undefined,\n step3: e3 || undefined,\n step4: e4 || undefined\n };\n\n return state;\n};\n","/* eslint-disable better-mutation/no-mutation */\nconst errors = {\n noShipping: 'syi_validation_shipping_no_shipping',\n empty: 'syi_validation_shipping_enter_method_and_cost',\n invalid: 'syi_validation_shipping_method_invalid',\n duplicate: 'syi_validation_shipping_method_identical',\n weight: 'syi_validation_shipping_enter_weight'\n};\n\nexport function validate(newState) {\n if (!newState.offerTakeaway && !newState.offerShipping) {\n newState.globalValidationError = errors.noShipping;\n newState.validationErrors = {\n global: errors.noShipping\n };\n return newState;\n }\n\n newState.globalValidationError = null;\n newState.validationErrors = {};\n\n return newState;\n}\n","/* eslint-disable better-mutation/no-mutation */\n\nimport { createReducer } from '@reduxjs/toolkit';\nimport { getSelectedShippingProducts } from './shipping-selectors';\nimport { validate } from './validate';\nimport { v4 as uuidv4 } from 'uuid';\n\nconst getUuid = () => uuidv4();\n\nconst initialState = validate({\n validationErrors: {},\n globalValidationError: null,\n shippingByWeight: [],\n shippingRecommendations: [],\n recommendedWeight: null,\n selectedShippingOptions: [],\n shippingOptionsLoading: false,\n shippingOptionsError: false,\n offerTakeaway: false,\n offerShipping: false,\n fromCountry: null\n});\n\nconst shippingContainsTakeaway = (shippingOptions) =>\n shippingOptions.some(\n (shippingOption) =>\n shippingOption.type === 'Takeaway' ||\n shippingOption.type === 'TakeawayOnly'\n );\n\nconst shippingContainsProduct = (shippingOptions) =>\n shippingOptions.some(\n (shippingOption) =>\n shippingOption.type !== 'Takeaway' &&\n shippingOption.type !== 'TakeawayOnly'\n );\n\nexport default createReducer(initialState, {\n RESET_SHIPPING_OPTIONS: (state) => {\n state.selectedShippingOptions = [];\n state.offerShipping = false;\n return validate(state);\n },\n SET_SHIPPING_OPTIONS_BY_WEIGHT: (state, action) => {\n const { productsPerWeightSpan, shippingOptions } = action.payload;\n\n state.offerShipping = shippingContainsProduct(shippingOptions);\n state.offerTakeaway = shippingContainsTakeaway(shippingOptions);\n\n //Decorate products with cost, type & productId for draft api:\n const productsDecorated = productsPerWeightSpan.map((weightClass) => {\n const productsWithDecoration = weightClass.products.map(\n (product) => ({\n ...product,\n cost: product.price,\n productId: product.id,\n type: product.providerId,\n uuid: getUuid()\n })\n );\n return { ...weightClass, products: productsWithDecoration };\n });\n\n state.shippingByWeight = productsDecorated;\n state.selectedShippingOptions = getSelectedShippingProducts(\n productsDecorated,\n shippingOptions,\n state.offerTakeaway\n );\n state.shippingOptionsLoading = false;\n state.shippingOptionsError = false;\n return validate(state);\n },\n\n SET_SHIPPING_OPTION_SELECTED: (state, action) => {\n const { payload } = action;\n\n const selectedOptions = getSelectedShippingProducts(\n state.shippingByWeight,\n payload,\n state.offerTakeaway\n );\n\n if (shippingContainsProduct(selectedOptions)) {\n state.offerShipping = true;\n } else {\n state.offerShipping = false;\n }\n\n state.selectedShippingOptions = selectedOptions;\n\n return validate(state);\n },\n SET_TAKEAWAY_SELECTED: (state, action) => {\n state.offerTakeaway = action.payload.offerTakeaway;\n state.selectedShippingOptions = getSelectedShippingProducts(\n state.shippingByWeight,\n state.selectedShippingOptions,\n state.offerTakeaway\n );\n\n return validate(state);\n },\n SET_SHIPPING_OPTIONS_ERROR: (state) => {\n state.shippingOptionsLoading = false;\n state.shippingOptionsError = true;\n\n return validate(state);\n },\n SET_SHIPPING_FROMCOUNTRY: (state, action) => {\n state.fromCountry = action.payload.fromCountry;\n },\n CLEAR_SHIPPING_RECOMMENDATIONS: (state) => {\n state.recommendedWeight = initialState.recommendedWeight;\n state.shippingRecommendations = initialState.shippingRecommendations;\n },\n SET_SHIPPING_RECOMMENDATIONS: (state, action) => {\n const { recommendedWeight, shippingRecommendations } = action.payload;\n\n state.recommendedWeight = recommendedWeight;\n state.shippingRecommendations = shippingRecommendations;\n return validate(state);\n }\n});\n","/* eslint-disable better-mutation/no-mutation */\n\nimport { createReducer } from '@reduxjs/toolkit';\n\nconst initialState = {\n saveAsDialogOpen: false,\n templatesLimitReachedDialogOpen: false,\n ignoreProperties: []\n};\n\nexport default createReducer(initialState, {\n SET_SAVE_AS_DIALOG_OPEN: (state, action) => {\n state.saveAsDialogOpen = action.payload;\n },\n SET_TEMPLATES_LIMIT_REACHED_DIALOG_OPEN: (state, action) => {\n state.templatesLimitReachedDialogOpen = action.payload;\n },\n RESET_IGNORE_PROPERTIES: (state) => {\n state.ignoreProperties = [];\n },\n ADD_IGNORE_PROPERTIES: (state, action) => {\n state.ignoreProperties = [\n ...new Set([...state.ignoreProperties, ...action.payload])\n ];\n },\n REMOVE_IGNORE_PROPERTIES: (state, action) => {\n state.ignoreProperties = state.ignoreProperties.filter(\n (prop) => !action.payload.includes(prop)\n );\n }\n});\n","var initialState = {\n itemCondition: null,\n validationError: null,\n selectionError: null\n};\n\nfunction validate(newState) {\n return {\n ...newState,\n validationError:\n newState.itemCondition == null ||\n newState.itemCondition.trim() == '' ||\n newState.itemCondition === 'Undefined'\n ? 'syi_validation_missing_condition'\n : newState.selectionError\n };\n}\n\nexport default (state = initialState, action) => {\n switch (action.type) {\n case 'SET_ITEM_CONDITION':\n return validate({ ...state, itemCondition: action.payload });\n case 'RESET_ITEM_CONDITION':\n return validate({ ...initialState });\n case 'SET_ITEM_CONDITION_SELECTION_ERROR':\n return validate({ ...state, selectionError: action.payload });\n default:\n return state;\n }\n};\n","const defaultCampaignProperties = {\n campaignCode: '',\n campaignCodeId: null,\n campaignCodeDescription: null,\n maxFeeCap: null,\n commissionPercent: null\n};\n\nconst initialState = {\n ...defaultCampaignProperties,\n campaignCodeChecked: false,\n firstTimeSubscribe: true,\n validCampaign: false,\n timeoutId: null,\n loading: false,\n searching: false,\n campaignCodeValid: false,\n searchingDelayed: false,\n validationError: null,\n searchingDelayedTimeoutId: null,\n isReadOnly: false,\n bannerMobileImageUrl: null,\n bannerTabletImageUrl: null,\n bannerDesktopImageUrl: null,\n hasEnded: false\n};\n\nfunction nullIfFalsy(val) {\n return val ? val : null;\n}\n\nfunction ensureValidCampaignCodeId(campaignCodeId) {\n // Cannot publish when campaignCodeId is zero.\n // Fix server side when Riot SYI is used by 100% of members.\n if (campaignCodeId === 0) {\n return null;\n }\n return nullIfFalsy(campaignCodeId);\n}\n\nfunction validate(state) {\n if (state.campaignCodeChecked) {\n return {\n ...state,\n validationError: state.campaignCodeValid\n ? null\n : 'syi_campaign_code_invalid'\n };\n }\n\n return { ...state, validationError: null };\n}\n\nexport default (state = initialState, action) => {\n switch (action.type) {\n case 'INITIALIZE_CAMPAIGN_CODE_STATE': {\n return validate({\n ...state,\n ...defaultCampaignProperties,\n campaignCode: action.campaignCode,\n campaignCodeId: ensureValidCampaignCodeId(\n action.campaignCodeId\n ),\n campaignCodeDescription: nullIfFalsy(\n action.campaignCodeDescription\n ),\n campaignCodeValid:\n !!action.campaignCodeId || !action.campaignCode,\n campaignCodeChecked: !!action.campaignCode,\n isReadOnly: action.isReadOnly,\n hasEnded: action.hasEnded\n });\n }\n\n case 'SET_UNVERIFIED_CAMPAIGN_CODE': {\n return validate({\n ...state,\n ...defaultCampaignProperties,\n campaignCode: action.campaignCode,\n campaignCodeId: null,\n campaignCodeDescription: null,\n campaignCodeValid: !action.campaignCode,\n bannerMobileImageUrl: null,\n bannerTabletImageUrl: null,\n bannerDesktopImageUrl: null\n });\n }\n\n case 'SET_CAMPAIGN_VALIDATION_RESULT': {\n if (state.campaignCode === action.campaignCode) {\n return validate({\n ...state,\n ...defaultCampaignProperties,\n campaignCode: action.campaignCode,\n campaignCodeId: ensureValidCampaignCodeId(\n action.campaignCodeId\n ),\n campaignCodeDescription: nullIfFalsy(\n action.campaignCodeDescription\n ),\n campaignCodeValid: action.campaignCodeValid,\n maxFeeCap: action.maxFeeCap,\n bannerMobileImageUrl: action.bannerMobileImageUrl,\n bannerTabletImageUrl: action.bannerTabletImageUrl,\n bannerDesktopImageUrl: action.bannerDesktopImageUrl,\n hasEnded: action.hasEnded,\n searching: false,\n searchingDelayed: false,\n commissionPercent: action.commissionPercent\n });\n }\n break;\n }\n case 'RESET_FEES': {\n return validate({\n ...state,\n maxFeeCap: initialState.maxFeeCap,\n commissionPercent: initialState.commissionPercent\n });\n }\n\n case 'RESET_CAMPAIGN_BANNER': {\n return validate({\n ...state,\n bannerMobileImageUrl: initialState.bannerMobileImageUrl,\n bannerTabletImageUrl: action.bannerTabletImageUrl,\n bannerDesktopImageUrl: action.bannerDesktopImageUrl\n });\n }\n\n case 'TOGGLE_CAMPAIGN_CODE_CHECKBOX': {\n if (action.isChecked) {\n return validate({\n ...state,\n campaignCodeChecked: true,\n searching: false,\n searchingDelayed: false\n });\n } else {\n return validate({\n ...state,\n campaignCodeChecked: false,\n campaignCode: initialState.campaignCode,\n campaignCodeId: initialState.campaignCodeId,\n campaignCodeDescription: null,\n searching: false,\n searchingDelayed: false,\n hasEnded: false\n });\n }\n }\n\n case 'VALIDATING_CAMPAIGN_CODE_BY_SEARCHING': {\n return validate({ ...state, searching: true });\n }\n\n case 'SEARCHING_FOR_CAMPAIGN_CODE_IS_DELAYED': {\n return validate({ ...state, searchingDelayed: true });\n }\n }\n return validate(state);\n};\n","var initialState = {\n displayPromoted: false,\n displayHighlighted: false\n};\n\nexport default (state = initialState, action) => {\n switch (action.type) {\n case 'SET_DISPLAY_PROMOTED':\n return { ...state, displayPromoted: action.payload };\n case 'SET_DISPLAY_HIGHLIGHTED':\n return { ...state, displayHighlighted: action.payload };\n default:\n return state;\n }\n};\n","/* eslint-disable better-mutation/no-mutation */\nimport { getDefaultImageData } from '../helpers/image-helpers';\n\nconst initialState = {\n slots: [{}, {}, {}, {}, {}],\n validationError: null,\n uploadError: null,\n isUploadingWithApp: false,\n imageCount: 0\n};\n\nexport function validate(newState) {\n let validationError = null;\n if (newState.slots.some((slot) => slot.isUploading)) {\n validationError = 'syi_validation_images_uploading';\n } else if (newState.slots.every((slot) => !slot.imageUrl)) {\n validationError = 'syi_validation_images';\n } else if (\n newState.slots\n .filter((slot) => slot.imageUrl)\n .every((slot) => slot.isUploadedBySystem === true)\n ) {\n // If there isn't at least one image uploaded by the user (can be uploaded by Klarna for example)\n validationError = 'syi_validation_images_not_uploaded_by_user';\n }\n return {\n ...newState,\n validationError\n };\n}\n\nfunction resolveFirstEmpty(slots) {\n let foundFirst = false;\n for (var i = 0; i < slots.length; i++) {\n if (slots[i].imageUrl || foundFirst) {\n slots[i].firstEmpty = false;\n } else {\n slots[i].firstEmpty = true;\n foundFirst = true;\n }\n }\n}\n\nfunction resetUploadError(newState) {\n newState.uploadError = null;\n}\n\nfunction removeLastLoading(newState) {\n const slots = newState.slots;\n const updatedSlots = slots.map((slot) => {\n if (slot.isUploading) {\n return { ...slot, isUploading: false };\n } else {\n return slot;\n }\n });\n\n return updatedSlots;\n}\n\nfunction setLoadingOnFreeSlots(newState, numberOfLoading) {\n const slots = newState.slots;\n for (var i = 0; i < slots.length; i++) {\n if (!slots[i].imageId) {\n slots[i].isUploading = true;\n if (--numberOfLoading <= 0) {\n return;\n }\n }\n }\n}\n\nfunction setImageCount(newState) {\n const withUrl = newState.slots.filter((slot) => !!slot.imageUrl);\n newState.imageCount = withUrl.length;\n}\n\nexport default (state = initialState, action) => {\n switch (action.type) {\n case 'SET_DRAFT_IMAGES': {\n const slots = [...new Array(5)].map(() => getDefaultImageData());\n\n var images = action.payload;\n for (let i = 0; i < images.length && i < slots.length; i++) {\n if (images[i].draftImage) {\n slots[i].isListingImage = false;\n slots[i].imageId = images[i].draftImage.imageId;\n slots[i].rotationDegrees =\n images[i].draftImage.rotationDegrees;\n slots[i].isUploadedBySystem =\n images[i].draftImage.isUploadedBySystem;\n } else if (images[i].listingImage) {\n slots[i].isListingImage = true;\n slots[i].filename = images[i].listingImage.filename;\n slots[i].imageGroupId = images[i].listingImage.imageGroupId;\n slots[i].imageId = images[i].listingImage.imageId;\n slots[i].rotationDegrees =\n images[i].listingImage.rotationDegrees;\n slots[i].isUploadedBySystem =\n images[i].listingImage.isUploadedBySystem;\n } else {\n slots[i].isListingImage = false;\n slots[i].imageId = images[i].imageId;\n slots[i].rotationDegrees = images[i].rotationDegrees;\n }\n slots[i].imageUrl = images[i].imageUrl;\n }\n\n resolveFirstEmpty(slots);\n const newState = { ...state, slots };\n setImageCount(newState);\n resetUploadError(newState);\n return validate(newState);\n }\n case 'SET_UPLOADED_IMAGE_IN_SLOT': {\n const slots = state.slots.map((slot) => ({ ...slot }));\n const slot = slots[action.slotIndex];\n slot.imageUrl = action.imageUrl;\n slot.imageId = action.imageId;\n slot.isListingImage = false;\n slot.isUploading = false;\n slot.rotationDegrees = null;\n slot.isUploadedBySystem = slot.isUploadedBySystem ?? false;\n resolveFirstEmpty(slots);\n const newState = { ...state, slots };\n setImageCount(newState);\n resetUploadError(newState);\n return validate(newState);\n }\n case 'SET_IMAGE_SLOTS': {\n const slots = action.slots.map((slot) => ({ ...slot }));\n resolveFirstEmpty(slots);\n const newState = { ...state, slots };\n setImageCount(newState);\n resetUploadError(newState);\n return validate(newState);\n }\n case 'SET_IMAGE_ROTATION': {\n const slots = state.slots.map((slot) => ({ ...slot }));\n slots[action.slotIndex].rotationDegrees = action.rotationDegrees;\n const newState = { ...state, slots };\n resetUploadError(newState);\n return validate(newState);\n }\n case 'SET_IMAGE_UPLOAD_FAILED': {\n const newState = {\n ...state,\n uploadError: action.payload,\n imageCount: state.slots.filter((slot) => !!slot.imageUrl)\n .length,\n slots: removeLastLoading(state)\n };\n\n return validate(newState);\n }\n case 'SET_IMAGES_UPLOADING': {\n const slots = state.slots.map((slot) => ({ ...slot }));\n const newState = { ...state, slots: slots, uploadError: null };\n setLoadingOnFreeSlots(newState, action.numberOfSlots);\n return validate(newState);\n }\n case 'SET_MOBILE_UPLOAD': {\n const newState = {\n ...state,\n isUploadingWithApp: action.isUploadingWithApp\n };\n if (action.isUploadingWithApp) {\n resetUploadError(newState);\n }\n return newState;\n }\n case 'HIDE_ALL_ERRORS': {\n const newState = { ...state, uploadError: null };\n return newState;\n }\n default:\n return state;\n }\n};\n","import config from 'tradera/apps/syi/services/config';\n\nfunction isValidPrice(number) {\n var str = new String(number);\n if (!Number.isFinite(parseInt(str))) {\n return false;\n } else if (str.indexOf('.') > -1) {\n return false;\n } else if (str.indexOf(',') > -1) {\n return false;\n }\n return true;\n}\n\nfunction isInt(number) {\n return number % 1 === 0;\n}\n\nfunction validateOpeningBid({ isPureBinSelected, openingBid }) {\n if (isPureBinSelected) {\n return null;\n }\n\n if (openingBid && !isInt(openingBid)) {\n return 'syi_validation_amount_must_be_whole_number';\n }\n\n var maxPrice = 10000000;\n var minPrice = 1;\n\n if (!isValidPrice(openingBid)) {\n return 'syi_validation_opening_bid_missing';\n }\n\n if (openingBid > maxPrice) {\n return 'syi_validation_max_opening_bid';\n }\n\n if (openingBid < minPrice) {\n return 'syi_validation_minimum_opening_bid';\n }\n\n return null;\n}\n\nfunction validateReservePrice({\n isPureBinSelected,\n showReservePrice,\n openingBid,\n reservePrice,\n auctionBinPrice\n}) {\n if (isPureBinSelected) {\n return null;\n }\n\n if (showReservePrice && !reservePrice) {\n return 'syi_validation_amount_missing';\n }\n\n if (reservePrice && !isInt(reservePrice)) {\n return 'syi_validation_amount_must_be_whole_number';\n }\n\n var maxPrice = 10000000;\n\n if (reservePrice && !isValidPrice(reservePrice)) {\n return 'syi_validation_invalid_reservation_price';\n }\n\n const reservePriceIsLessThanOpeningBid =\n reservePrice && reservePrice <= openingBid;\n if (reservePriceIsLessThanOpeningBid) {\n return 'syi_validation_reservation_must_be_larger_than_starting';\n }\n\n const reservePriceIsGreaterThanAuctionBinPrice =\n reservePrice && auctionBinPrice && reservePrice >= auctionBinPrice;\n if (reservePriceIsGreaterThanAuctionBinPrice) {\n return 'syi_validation_reservation_must_be_less_than_buy_now';\n }\n\n if (reservePrice > maxPrice) {\n return 'syi_validation_max_reservation_price';\n }\n\n return null;\n}\n\nfunction validateAuctionBinPrice({\n isPureBinSelected,\n openingBid,\n reservePrice,\n auctionBinPrice\n}) {\n if (isPureBinSelected) {\n return null;\n }\n\n if (auctionBinPrice && !isInt(auctionBinPrice)) {\n return 'syi_validation_amount_must_be_whole_number';\n }\n const auctionBinPriceIsLessThanOpeningBid =\n auctionBinPrice && auctionBinPrice <= openingBid;\n if (auctionBinPriceIsLessThanOpeningBid) {\n return 'syi_validation_buy_now_must_be_larger_than_starting';\n }\n\n const reservePriceIsGreaterThanAuctionBinPrice =\n reservePrice && auctionBinPrice && reservePrice >= auctionBinPrice;\n if (reservePriceIsGreaterThanAuctionBinPrice) {\n return 'syi_validation_buy_now_must_be_larger_than_reservation';\n }\n return null;\n}\n\nfunction validateFixedPrice({ isPureBinSelected, fixedPrice }) {\n if (!isPureBinSelected) {\n return null;\n }\n\n if (fixedPrice && !isInt(fixedPrice)) {\n return 'syi_validation_amount_must_be_whole_number';\n }\n\n var maxPrice = 10000000;\n var minPrice = 1;\n\n if (!isValidPrice(fixedPrice)) {\n return 'syi_validation_enter_fixed_price';\n }\n if (!isNaN(fixedPrice)) {\n if (parseInt(fixedPrice) > maxPrice) {\n return 'syi_validation_fixed_price_max_value';\n }\n\n if (parseInt(fixedPrice) < minPrice) {\n return 'syi_validation_fixed_price_min_value';\n }\n }\n return null;\n}\n\nfunction validate(newState) {\n const validationErrors = {};\n\n validationErrors.fixedPrice = validateFixedPrice(newState);\n validationErrors.openingBid = validateOpeningBid(newState);\n validationErrors.auctionBinPrice = validateAuctionBinPrice(newState);\n validationErrors.reservePrice = validateReservePrice(newState);\n\n for (const errorKey in validationErrors) {\n if (!validationErrors[errorKey]) delete validationErrors[errorKey];\n }\n\n return { ...newState, validationErrors };\n}\n\nconst queryParams = new URLSearchParams(\n typeof window !== 'undefined' ? window?.location?.search : ''\n);\nconst initialState = {\n openingBid: null,\n auctionBinPrice: null,\n fixedPrice: null,\n reservePrice: null,\n showReservePrice: false,\n showCharityDonation: Boolean(queryParams.get('charityId')),\n editCharity: false,\n isPureBinSelected: null,\n validationErrors: {},\n selectableVats: config.selectableVatValues,\n reservePriceCanChangeButNotBeRemoved: false,\n vat: null,\n reservePriceCost: 40\n};\n\nexport default (state = initialState, action) => {\n switch (action.type) {\n case 'SET_OPENING_BID':\n return validate({ ...state, openingBid: action.payload });\n case 'SET_AUCTION_BIN_PRICE':\n return validate({ ...state, auctionBinPrice: action.payload });\n case 'SET_FIXED_PRICE':\n return validate({ ...state, fixedPrice: action.payload });\n case 'SET_RESERVE_PRICE':\n return validate({ ...state, reservePrice: action.payload });\n case 'SET_RESERVE_PRICE_VISIBILITY':\n return validate({ ...state, showReservePrice: action.payload });\n case 'SET_CHARITY_DONATION_VISIBILITY':\n return validate({ ...state, showCharityDonation: action.payload });\n case 'SET_EDIT_CHARITY':\n return validate({ ...state, editCharity: action.payload });\n case 'SET_IS_PURE_BIN_SELECTED':\n return validate({\n ...state,\n isPureBinSelected: action.isPureBinSelected\n });\n case 'SET_VAT':\n return validate({ ...state, vat: action.payload });\n case 'RESET_PRICES_AND_VAT':\n return validate({\n ...state,\n openingBid: null,\n auctionBinPrice: null,\n fixedPrice: null,\n vat: null\n });\n case 'SHOW_AUCTION_INFO_MODAL':\n return validate({\n ...state,\n shouldShowAuctionInfoModal: action.payload\n });\n case 'SET_RESERVE_PRICE_CAN_CHANGE_BUT_NOT_BE_REMOVED':\n return validate({\n ...state,\n reservePriceCanChangeButNotBeRemoved: action.payload\n });\n default:\n return state;\n }\n};\n","const initialState = {\n draftBeforeChange: null\n};\n\nexport default (state = initialState, action) => {\n switch (action.type) {\n case 'SET_DRAFT_BEFORE_CHANGE':\n return { ...state, draftBeforeChange: action.payload };\n default:\n return state;\n }\n};\n","const MAX_DESCRIPTION_LENGTH = 7000;\n\nfunction validate(textWithHtml) {\n if (textWithHtml && textWithHtml.length > MAX_DESCRIPTION_LENGTH) {\n return 'syi_validation_description_to_long';\n }\n\n var elm = document.createElement('div');\n // eslint-disable-next-line better-mutation/no-mutation\n elm.innerHTML = textWithHtml || '';\n\n if (elm.textContent) {\n return elm.textContent.trim() !== ''\n ? null\n : 'syi_validation_missing_description';\n } else if (elm.innerText) {\n return elm.innerText.trim() !== ''\n ? null\n : 'syi_validation_missing_description';\n }\n return 'syi_validation_missing_description';\n}\n\n// By ensuring that shortDescription is always a string makes\n// it easy to know when it has really changed to something significant.\nfunction ensureString(s) {\n return !s ? '' : s;\n}\n\nvar initialState = {\n longDescription: null,\n validationError: null,\n isCurrentDescriptionFromDraft: false,\n fromDraftCounter: 0\n};\n\nexport default (state = initialState, action) => {\n switch (action.type) {\n case 'SET_LONG_DESCRIPTION_FROM_DRAFT':\n return {\n ...state,\n isCurrentDescriptionFromDraft: true,\n longDescription: ensureString(action.payload),\n validationError: validate(action.payload),\n fromDraftCounter: state.fromDraftCounter + 1\n };\n case 'SET_LONG_DESCRIPTION':\n return {\n ...state,\n isCurrentDescriptionFromDraft: false,\n longDescription: ensureString(action.payload),\n validationError: validate(action.payload)\n };\n case 'RESET_LONG_DESCRIPTION': {\n const defaultValue = null;\n return {\n ...state,\n isCurrentDescriptionFromDraft: false,\n longDescription: defaultValue,\n validationError: validate(defaultValue)\n };\n }\n default:\n return state;\n }\n};\n","var initialState = {\n scrollY: {}\n};\n\nexport default (state = initialState, action) => {\n switch (action.type) {\n case 'SET_SCROLL_Y': {\n const scrollY = { ...state.scrollY };\n scrollY[action.key] = action.value;\n return { ...initialState, scrollY };\n }\n default:\n return state;\n }\n};\n","const initialState = {\n charityId: null,\n forceFreeShipping: false,\n name: null,\n description: null,\n isSchenkerPaidBySchenker: false\n};\n\nfunction isSchenkerPaying(campaignCode) {\n const code = campaignCode.toUpperCase();\n return (\n code == 'MHO20' ||\n code == 'MHF20' ||\n code == 'MH20' ||\n code == 'MHTEST' ||\n code == 'MHTESTF'\n );\n}\n\nexport default (state = initialState, action) => {\n switch (action.type) {\n case 'RESET_CHARITY_CAMPAIGN':\n return { ...initialState };\n case 'SET_CHARITY_CAMPAIGN':\n return {\n ...state,\n charityId: action.charityCampaign.charityId,\n forceFreeShipping: action.charityCampaign.forceFreeShipping,\n name: action.charityCampaign.name,\n description: action.charityCampaign.description,\n isSchenkerPaidBySchenker: isSchenkerPaying(action.campaignCode),\n allowZeroDayAuctions:\n action.charityCampaign.allowZeroDayAuctions\n };\n\n default:\n return state;\n }\n};\n","export const filterSelectableSuggestions = (\n incomingSuggestedAttributes,\n categoryAttributes\n) => {\n const selectableSuggestions = [];\n incomingSuggestedAttributes.forEach((sa) => {\n const categoryAttribute = categoryAttributes.find(\n (a) => a.id === sa.id\n );\n if (categoryAttribute) {\n const suggestedAttribute = { id: sa.id, values: [] };\n sa.values.forEach((v) => {\n const isSelectableSuggestion = categoryAttribute.options.some(\n (o) => o.value === v\n );\n const isMaxReached =\n suggestedAttribute.values.length >=\n categoryAttribute.maxNumberOfValues;\n if (isSelectableSuggestion && !isMaxReached) {\n suggestedAttribute.values.push(v);\n }\n });\n selectableSuggestions.push(suggestedAttribute);\n }\n });\n return selectableSuggestions;\n};\n\nexport const filterCombinedSelectableSuggestions = (\n primarySuggestedAttributes,\n secondarySuggestedAttributes,\n categoryAttributes\n) => {\n const selectableSuggestions = [];\n categoryAttributes.forEach((categoryAttribute) => {\n const primarySuggestedAttribute = primarySuggestedAttributes.find(\n (psa) => psa.id == categoryAttribute.id\n );\n const secondarySuggestedAttribute = secondarySuggestedAttributes.find(\n (ssa) => ssa.id == categoryAttribute.id\n );\n const suggestedAttributeValues = [];\n if (primarySuggestedAttribute) {\n primarySuggestedAttribute.values.forEach((v) => {\n const isSelectableSuggestion = categoryAttribute.options.some(\n (o) => o.value === v\n );\n const isMaxReached =\n suggestedAttributeValues.length >=\n categoryAttribute.maxNumberOfValues;\n if (isSelectableSuggestion && !isMaxReached) {\n suggestedAttributeValues.push(v);\n }\n });\n }\n if (secondarySuggestedAttribute) {\n secondarySuggestedAttribute.values.forEach((v) => {\n const isSelectableSuggestion = categoryAttribute.options.some(\n (o) => o.value === v\n );\n const isAlreadySuggested = suggestedAttributeValues.some(\n (o) => o === v\n );\n const isMaxReached =\n suggestedAttributeValues.length >=\n categoryAttribute.maxNumberOfValues;\n if (\n isSelectableSuggestion &&\n !isMaxReached &&\n !isAlreadySuggested\n ) {\n suggestedAttributeValues.push(v);\n }\n });\n }\n if (suggestedAttributeValues.length > 0) {\n selectableSuggestions.push({\n id: categoryAttribute.id,\n values: suggestedAttributeValues\n });\n }\n });\n return selectableSuggestions;\n};\n","import {\n filterSelectableSuggestions,\n filterCombinedSelectableSuggestions\n} from './attributes-helpers';\n\nconst initialState = {\n // The attributes for the current category\n categoryAttributes: [],\n // The attributes of the draft.\n /**\n draftAttributes: {\n termAttributeValues: [\n {\n id: 1,\n backingField: 'clothes_size',\n userGenerated: true,\n values: [\n 'b'\n ]\n }\n ],\n numberAttributeValues: []\n }\n */\n draftAttributes: {},\n // A list of the selected attributes (draftAttributes) for display on the page.\n // Exists for ease of use in views.\n // Format:\n /**\n {\n title: 'Klädstorlek',\n value: 'L'\n }\n */\n selectableSuggestedAttributes: [],\n selectableCategorySuggestedAttributes: [],\n selectableImageToColorSuggestedAttributes: [],\n // Attribute suggestions from the image-to-color service.\n imageToColorSuggestedAttributes: [],\n validationErrors: {}\n};\n\nconst setCategoryAttributesSuggestions = (state, action) => {\n const { payload } = action;\n const newState = {\n ...state,\n categorySuggestedAttributes: payload.suggestedAttributes,\n selectableCategorySuggestedAttributes: filterSelectableSuggestions(\n payload.suggestedAttributes,\n state.categoryAttributes\n ),\n suggestionsExtractorType: payload.suggestionsExtractorType\n };\n updateSelectableSuggestedAttributes(newState);\n return newState;\n};\n\nconst setImageToColorSuggestions = (state, action) => {\n const { payload } = action;\n const newState = {\n ...state,\n imageToColorSuggestedAttributes: payload.suggestedAttributes\n };\n updateSelectableImageToColorSuggestedAttributes(newState);\n return newState;\n};\n\nconst updateSelectableSuggestedAttributes = (newState) => {\n // eslint-disable-next-line better-mutation/no-mutation\n newState.selectableSuggestedAttributes =\n filterCombinedSelectableSuggestions(\n newState.selectableCategorySuggestedAttributes,\n newState.selectableImageToColorSuggestedAttributes,\n newState.categoryAttributes\n );\n};\n\nconst updateSelectableImageToColorSuggestedAttributes = (newState) => {\n // eslint-disable-next-line better-mutation/no-mutation\n newState.selectableImageToColorSuggestedAttributes =\n filterSelectableSuggestions(\n newState.imageToColorSuggestedAttributes,\n newState.categoryAttributes\n );\n updateSelectableSuggestedAttributes(newState);\n};\n\nconst setCategoryAttributeOption = (state, action) => {\n const { payload } = action;\n const attribute = state.categoryAttributes.find(\n (a) => a.id === payload.attributeId\n );\n let options = attribute.options;\n if (\n !attribute.isMultiSelect ||\n (!payload.optionValue && !payload.activate)\n ) {\n options = options.map((o) =>\n !o.isActive ? o : { ...o, isActive: false }\n );\n }\n if (payload.optionValue) {\n options = options.map((o) =>\n o.value !== payload.optionValue\n ? o\n : { ...o, isActive: payload.activate }\n );\n }\n const numberOfValuesSelected = options.filter((o) => o.isActive).length;\n return {\n ...state,\n categoryAttributes: state.categoryAttributes.map((a) =>\n a.id !== payload.attributeId\n ? a\n : { ...attribute, options, numberOfValuesSelected }\n )\n };\n};\n\nconst updateCategoryAttributesOptionsStatuses = (state) => {\n const categoryAttributes = state.categoryAttributes.map((a) => {\n const draftAttributeValues =\n state.draftAttributes.termAttributeValues?.find(\n (tav) => a.id === tav.id\n )?.values || [];\n const options = a.options.map((o) => {\n const isActive = draftAttributeValues.includes(o.value);\n return o.isActive === isActive ? o : { ...o, isActive };\n });\n const numberOfValuesSelected = options.filter((o) => o.isActive).length;\n return { ...a, options, numberOfValuesSelected };\n });\n return { ...state, categoryAttributes };\n};\n\nconst setDraftAttributes = (state, action) => {\n const newState = {\n ...state,\n draftAttributes: {\n ...action.payload\n }\n };\n return newState;\n};\n\nconst setCategoryAttributes = (state, action) => {\n const newState = {\n ...state,\n categoryAttributes: [...action.payload]\n };\n updateSelectableImageToColorSuggestedAttributes(newState);\n return newState;\n};\n\nconst resetAttributes = (state) => {\n return {\n ...initialState,\n // Resetting image-to-color suggested attributes is done separately\n imageToColorSuggestedAttributes: state.imageToColorSuggestedAttributes,\n selectableImageToColorSuggestedAttributes:\n state.selectableImageToColorSuggestedAttributes\n };\n};\n\nconst resetSelectedAttributes = (state) => {\n return updateCategoryAttributesOptionsStatuses({\n ...state,\n draftAttributes: {}\n });\n};\n\nconst resetImageAttributeSuggestions = (state) => {\n const newState = {\n ...state,\n imageToColorSuggestedAttributes:\n initialState.imageToColorSuggestedAttributes\n };\n updateSelectableImageToColorSuggestedAttributes(newState);\n return newState;\n};\n\nconst validate = (state) => {\n const validationErrors = {};\n state.categoryAttributes.forEach((attribute) => {\n if (attribute.minNumberOfValues === 0) {\n return;\n }\n if (attribute.options.length === 0) {\n // There were no options to choose from.\n // May not happen when backend implementation is done,\n // we should not get an empty list of options.\n return;\n }\n const values = attribute.options.reduce((acc, option) => {\n if (option.isActive) {\n acc.push(option.value);\n }\n return acc;\n }, []);\n if (values.length === 0) {\n // eslint-disable-next-line better-mutation/no-mutation\n validationErrors[\n attribute.backingField\n ] = `attributes:::syi_validation_missing_attribute_${attribute.backingField}`;\n }\n });\n\n return { ...state, validationErrors };\n};\n\nconst reducers = {\n RESET_ATTRIBUTES: resetAttributes,\n RESET_SELECTED_ATTRIBUTES: resetSelectedAttributes,\n RESET_IMAGE_ATTRIBUTES_SUGGESTIONS: resetImageAttributeSuggestions,\n SET_CATEGORY_ATTRIBUTES: setCategoryAttributes,\n SET_DRAFT_ATTRIBUTES: setDraftAttributes,\n SET_CATEGORY_ATTRIBUTE_OPTION: setCategoryAttributeOption,\n UPDATE_CATEGORY_ATTRIBUTES_OPTIONS_STATUSES:\n updateCategoryAttributesOptionsStatuses,\n SET_CATEGORY_ATTRIBUTES_SUGGESTIONS: setCategoryAttributesSuggestions,\n SET_IMAGE_ATTRIBUTES_SUGGESTIONS: setImageToColorSuggestions\n};\n\nexport default (state = initialState, action) => {\n const reducer = reducers[action.type];\n if (reducer) {\n return validate(reducer(state, action));\n }\n return state;\n};\n","import { createReducer } from '@reduxjs/toolkit';\nimport userData from 'tradera/apps/syi/services/user-data';\nimport config from 'tradera/apps/syi/services/config';\n\nconst setValidationError = (condition) =>\n condition ? 'syi_summary_terms_active_consent_missing_error' : null;\n\nconst validate = (state) => {\n return {\n ...state,\n validationError: setValidationError(!state.hasTraderaPayConsent)\n };\n};\n\nconst createInitalState = () => {\n if (!userData || !userData.consent || !userData.braintree) {\n // seems syi is not loaded, return empty object\n return {};\n }\n const shouldGiveConsent =\n config.isSyiMemberConsentEnabled && userData.braintree.isBraintreeOnly;\n const hasTraderaPayConsent = !!userData.consent.hasTraderaPayConsent;\n const needsConsentOfTraderaPayAgreement =\n userData.consent.needsConsentOfTraderaPayAgreement;\n const hasValidationError =\n shouldGiveConsent && !userData.consent.hasTraderaPayConsent;\n\n return {\n hasTraderaPayConsent,\n initalConsentGiven: hasTraderaPayConsent,\n shouldGiveConsent,\n needsConsentOfTraderaPayAgreement,\n validationError: setValidationError(hasValidationError)\n };\n};\n\nconst initialState = createInitalState();\n\nexport default createReducer(initialState, {\n SET_TRADERAPAY_CONSENT: (state, action) =>\n validate({\n ...state,\n hasTraderaPayConsent: action.payload\n })\n});\n","import { mapItemDetails } from 'tradera/state/views/view-item/reducer';\n\nvar initialState = {\n itemDetails: null,\n bidInfo: null,\n isLoading: false,\n errorLoading: false,\n viewItemState: null,\n isBidding: false,\n itemState: null,\n placeBidResponse: {\n info: null,\n isSuccessful: null,\n validationResult: null,\n error: null\n },\n myMaxBidAmount: null,\n initialBidFormValue: null,\n serverSecondsLeft: null\n};\n\nexport default (state = initialState, action) => {\n switch (action.type) {\n case 'SET_PREVIEW_ITEM_DETAILS': {\n return {\n ...state,\n itemDetails: mapItemDetails(action.payload),\n errorLoading: false\n };\n }\n case 'SET_PREVIEW_BID_INFO': {\n const { bidInfo, memberId } = action.payload;\n\n return {\n ...state,\n bidInfo: {\n bidId: bidInfo.bidId || 0,\n leadingBidAmount: bidInfo.leadingBidAmount || 0,\n leadingBidderMemberId:\n bidInfo.leadingBidderMemberId || null,\n leadingBidMemberAlias:\n bidInfo.leadingBidMemberAlias || null,\n nextValidBidAmount: bidInfo.nextValidBidAmount,\n transactionType: bidInfo.transactionType || null,\n bidCount: bidInfo.bidCount,\n reservePriceReached: bidInfo.reservePriceReached || false,\n hasLeadingBid:\n !!memberId &&\n memberId === bidInfo.leadingBidderMemberId,\n hasLostLeadingBid: false\n }\n };\n }\n case 'SET_PREVIEW_ITEM_STATE':\n return { ...state, itemState: action.payload };\n case 'SET_PREVIEW_SERVER_SECONDS_LEFT':\n return { ...state, serverSecondsLeft: action.payload };\n case 'SET_PREVIEW_IS_LOADING':\n return { ...state, isLoading: action.payload };\n case 'SET_PREVIEW_ERROR':\n return { ...state, errorLoading: action.payload };\n default:\n return state;\n }\n};\n","import { combineReducers } from 'redux';\nimport draft from './reducers/draft';\nimport category from './reducers/category';\nimport syi from './reducers/syi';\nimport errors from './reducers/errors';\nimport shipping from './reducers/shipping/shipping-reducer';\nimport template from './reducers/template';\nimport buyerRegion from './reducers/buyer-region';\nimport itemCondition from './reducers/item-condition';\nimport campaignCode from './reducers/campaign-code';\nimport fees from './reducers/fees';\nimport itemDuration from './reducers/item-duration';\nimport shortDescription from './reducers/short-description';\nimport extraFeatures from './reducers/extra-features';\nimport images from './reducers/images';\nimport price from './reducers/price';\nimport edit from './reducers/edit';\nimport longDescription from './reducers/long-description';\nimport scroll from './reducers/scroll';\nimport charityCampaign from './reducers/charity-campaign';\nimport attributes from './reducers/attributes';\nimport language from './reducers/language';\nimport traderaStateBankId from 'tradera/state/bank-id/reducer';\nimport memberConsent from './reducers/member-consent';\nimport preview from './reducers/preview';\nimport charity from './reducers/charity';\n\nexport default combineReducers({\n attributes,\n bankId: traderaStateBankId,\n buyerRegion,\n campaignCode,\n category,\n charity,\n charityCampaign,\n draft,\n edit,\n errors,\n extraFeatures,\n fees,\n images,\n itemCondition,\n itemDuration,\n language,\n longDescription,\n memberConsent,\n preview,\n price,\n scroll,\n shipping,\n shortDescription,\n syi,\n template\n});\n","import { getLanguage } from 'tradera/utils/language';\n\nexport default (state) =>\n state\n ? state\n : {\n preferredLanguage: getLanguage()\n };\n","import { PaidStatuses } from 'tradera/constants/paid-statuses';\nimport { actionTypes as purchaseOrderActionTypes } from '../action-types/purchase-order';\nimport myTraderaItemActions from '../actions/my-tradera-items';\n\nconst initialState = {\n purchaseOrders: []\n};\n\nconst updatePurchaseOrderPaidStatus = (state, action) => {\n return {\n ...state,\n purchaseOrders: state.purchaseOrders.map((purchaseOrder) =>\n purchaseOrder.purchaseOrderId === action.payload.purchaseOrderId\n ? {\n ...purchaseOrder,\n state: {\n ...purchaseOrder.state,\n paidStatus: action.payload.paidStatus\n }\n }\n : purchaseOrder\n )\n };\n};\n\nconst updatePurchaseOrderShipped = (state, action) => {\n return {\n ...state,\n purchaseOrders: state.purchaseOrders.map((purchaseOrder) =>\n purchaseOrder.purchaseOrderId === action.payload.purchaseOrderId\n ? {\n ...purchaseOrder,\n state: {\n ...purchaseOrder.state,\n isShipped: action.payload.isShipped\n }\n }\n : purchaseOrder\n )\n };\n};\n\nconst updatePurchaseOrderRequestCombinedShipping = (state, action) => {\n return {\n ...state,\n purchaseOrders: state.purchaseOrders.map((purchaseOrder) =>\n purchaseOrder.purchaseOrderId === action.payload.purchaseOrderId\n ? {\n ...purchaseOrder,\n combinedShippingInformation: {\n ...purchaseOrder.combinedShippingInformation,\n buyerRequestedCombinedShippingPriceDate: Date.now(),\n hasBuyerRequestedCombinedShippingPrice:\n action.payload\n .hasBuyerRequestedCombinedShippingPrice\n }\n }\n : purchaseOrder\n )\n };\n};\n\nconst updatePurchaseOrderShippingPrice = (state, action) => {\n return {\n ...state,\n purchaseOrders: state.purchaseOrders.map((purchaseOrder) =>\n purchaseOrder.purchaseOrderId === action.purchaseOrderId\n ? {\n ...purchaseOrder,\n ...(purchaseOrder.combinedShippingInformation\n ? {\n combinedShippingInformation: {\n ...purchaseOrder.combinedShippingInformation,\n sellerSetCombinedShippingPriceDate:\n Date.now()\n }\n }\n : null),\n shippingAmount: action.newPrice,\n totalAmount:\n parseInt(action.newPrice) +\n parseInt(purchaseOrder.totalItemAmount),\n shipping: {\n ...purchaseOrder.shipping,\n shippingDiscount: {\n shippingCost: action.newPrice,\n shippingType: action.shippingProvider\n }\n }\n }\n : purchaseOrder\n )\n };\n};\n\nconst updatePurchaseOrderShipment = (state, action) => {\n return {\n ...state,\n purchaseOrders: state.purchaseOrders.map((purchaseOrder) =>\n purchaseOrder.purchaseOrderId === action.payload.purchaseOrderId\n ? {\n ...purchaseOrder,\n state: {\n ...purchaseOrder.state,\n hasUnpaidShipping: false\n }\n }\n : purchaseOrder\n )\n };\n};\n\nconst updatePurchaseOrderShippedBooked = (state, action) => {\n return {\n ...state,\n purchaseOrders: state.purchaseOrders.map((purchaseOrder) =>\n purchaseOrder.purchaseOrderId === action.payload.purchaseOrderId\n ? {\n ...purchaseOrder,\n state: {\n ...purchaseOrder.state,\n isShippingBooked: action.payload.isBooked\n }\n }\n : purchaseOrder\n )\n };\n};\n\nconst updatePurchaseOrders = (state, action) => {\n return {\n ...state,\n paging: {\n ...action.payload.paging\n },\n statistics: action.payload.statistics,\n purchaseOrders: action.payload.purchaseOrders.map((purchaseOrder) => {\n const { rows, ...filteredPurchaseOrder } = purchaseOrder;\n return {\n ...filteredPurchaseOrder\n };\n })\n };\n};\n\nconst checkHaveGivenFeedBackTo = (action, purchaseOrder) => {\n const itemsToGiveFeedBackTo = purchaseOrder.itemsToGiveFeedBackTo\n .map((itemToGiveFeedBackTo) => {\n const haveGivenFeedBackTo = action.payload.submittables.filter(\n (submittable) => {\n return submittable.transactionId === itemToGiveFeedBackTo;\n }\n ).length;\n if (haveGivenFeedBackTo) {\n return null;\n }\n return itemToGiveFeedBackTo;\n })\n .filter(Boolean);\n return itemsToGiveFeedBackTo;\n};\n\nconst updatePurchaseOrderFeedback = (state, action) => {\n return {\n ...state,\n purchaseOrders: state.purchaseOrders.map((purchaseOrder) =>\n purchaseOrder.purchaseOrderId === action.payload.purchaseOrderId\n ? {\n ...purchaseOrder,\n itemsToGiveFeedBackTo: checkHaveGivenFeedBackTo(\n action,\n purchaseOrder\n )\n }\n : purchaseOrder\n )\n };\n};\n\n// Updating hidden always hides the order from the current list\nconst updatePurchaseOrderHidden = (state, action) => {\n return {\n ...state,\n purchaseOrders: state.purchaseOrders.filter(\n (purchaseOrder) =>\n purchaseOrder.purchaseOrderId !== action.payload.purchaseOrderId\n )\n };\n};\n\nexport default (state = initialState, action) => {\n switch (action.type) {\n case myTraderaItemActions.actionTypes\n .PURCHASE_ORDERS_MARKED_AS_PAID_BY_SELLER:\n return updatePurchaseOrderPaidStatus(state, {\n payload: {\n purchaseOrderId: action.payload.ids[0],\n paidStatus: PaidStatuses.MARKED_AS_PAID_BY_SELLER\n }\n });\n case myTraderaItemActions.actionTypes\n .PURCHASE_ORDERS_UNMARKED_AS_PAID_BY_SELLER:\n return updatePurchaseOrderPaidStatus(state, {\n payload: {\n purchaseOrderId: action.payload.ids[0],\n paidStatus: PaidStatuses.UNPAID\n }\n });\n case myTraderaItemActions.actionTypes\n .PURCHASE_ORDERS_MARKED_AS_PAID_BY_BUYER:\n return updatePurchaseOrderPaidStatus(state, {\n payload: {\n purchaseOrderId: action.payload.ids[0],\n paidStatus: PaidStatuses.MARKED_AS_PAID_BY_BUYER\n }\n });\n case myTraderaItemActions.actionTypes\n .PURCHASE_ORDERS_UNMARKED_AS_PAID_BY_BUYER:\n return updatePurchaseOrderPaidStatus(state, {\n payload: {\n purchaseOrderId: action.payload.ids[0],\n paidStatus: PaidStatuses.UNPAID\n }\n });\n case purchaseOrderActionTypes.PURCHASE_ORDER_RESET:\n return initialState;\n case purchaseOrderActionTypes.PURCHASE_ORDERS_SHIPPING_BOOKED:\n return updatePurchaseOrderShippedBooked(state, action);\n case purchaseOrderActionTypes.PURCHASE_ORDER_REQUEST_COMBINED_SHIPPING:\n return updatePurchaseOrderRequestCombinedShipping(state, action);\n case purchaseOrderActionTypes.PURCHASE_ORDER_SHIPPED:\n return updatePurchaseOrderShipped(state, action);\n case purchaseOrderActionTypes.PURCHASE_ORDER_PAID_STATUS:\n return updatePurchaseOrderPaidStatus(state, action);\n case myTraderaItemActions.actionTypes.SET_NEW_SHIPPING_PRICE:\n return updatePurchaseOrderShippingPrice(state, action);\n case purchaseOrderActionTypes.PURCHASE_ORDER_LIST:\n return updatePurchaseOrders(state, action);\n case purchaseOrderActionTypes.PURCHASE_ORDER_DELETE_SHIPMENT:\n return updatePurchaseOrderShipment(state, action);\n case purchaseOrderActionTypes.PURCHASE_ORDERS_FEEDBACK_LEFT_BY_BUYER:\n case purchaseOrderActionTypes.PURCHASE_ORDERS_FEEDBACK_LEFT_BY_SELLER:\n return updatePurchaseOrderFeedback(state, action);\n case purchaseOrderActionTypes.PURCHASE_ORDER_HIDDEN:\n return updatePurchaseOrderHidden(state, action);\n default:\n return state;\n }\n};\n","import { combineReducers } from 'redux';\nimport cookies from 'tradera/apps/my-tradera/app/state/reducers/cookies';\nimport filters from 'tradera/apps/my-tradera/app/state/reducers/filters';\nimport myTradera from 'tradera/apps/my-tradera/app/state/reducers/my-tradera';\nimport myTraderaItems from 'tradera/apps/my-tradera/app/state/reducers/my-tradera-items';\nimport payments from 'tradera/apps/my-tradera/app/state/payments/reducer';\nimport payout from 'tradera/apps/my-tradera/app/state/payouts/reducer';\nimport purchaseOrder from 'tradera/apps/my-tradera/app/state/reducers/purchase-order';\n\nexport default combineReducers({\n cookies,\n filters,\n myTradera,\n myTraderaItems,\n payments,\n payout,\n purchaseOrder\n});\n","import { combineReducers } from 'redux';\nimport viewItem from './view-item/reducer';\nimport { reducer as reportItem } from './report-item/reducer';\nimport profile from './profile/reducer';\nimport startPage from './start-page/reducer';\nimport checkout from './checkout/reducer';\nimport syi from '../../apps/syi/state/reducer';\nimport myTradera from './my-tradera/reducer';\nimport shippingCalculator from './shipping-calculator/reducer';\nimport cart from './cart/reducer';\nimport traderaShop from './tradera-shop/reducer';\nimport shippingCheckout from './shipping-checkout/reducer';\nimport invoiceCheckout from './invoice-checkout/reducer';\nimport initData from 'init-data';\n\nconst reducers = {\n checkout,\n myTradera,\n profile,\n cart,\n reportItem,\n shippingCalculator,\n startPage,\n viewItem,\n traderaShop,\n shippingCheckout,\n invoiceCheckout\n};\nif (initData.pageName === 'SellItem') {\n reducers.syi = syi;\n}\n\nexport default combineReducers(reducers);\n","/* eslint-disable better-mutation/no-mutation */\n\nimport { createSlice } from '@reduxjs/toolkit';\n\nexport const initialState = {\n isActionsPerFullPageLoadDone: false,\n hasLoadedAllTranslations: false\n};\n\nconst slice = createSlice({\n name: 'status',\n initialState,\n reducers: {\n setIsActionsPerFullPageLoadDone: (state, { payload }) => {\n state.isActionsPerFullPageLoadDone = payload;\n },\n setAllTranslationsLoaded: (state, { payload }) => {\n state.hasLoadedAllTranslations = payload;\n }\n }\n});\n\nexport const { setIsActionsPerFullPageLoadDone, setAllTranslationsLoaded } =\n slice.actions;\n\nexport const reducer = slice.reducer;\n","/* eslint-disable better-mutation/no-mutation */\n\nimport { createSlice } from '@reduxjs/toolkit';\n\ntype RequestState = {\n cookies: NodeJS.Dict | null;\n location: string | null;\n userAgent: string | null;\n request?: unknown;\n response?: unknown;\n};\n\nexport const initialState: RequestState = {\n cookies: null,\n location: null,\n userAgent: null\n};\n\nconst slice = createSlice({\n name: 'request',\n initialState,\n reducers: {\n setCookies: (state, { payload }) => {\n state.cookies = payload;\n },\n setLocation: (state, { payload }) => {\n state.location = payload;\n },\n setUserAgent: (state, { payload }) => {\n state.userAgent = payload;\n },\n setRequestAndResponse: (state, { payload }) => {\n state.request = payload.request;\n state.response = payload.response;\n }\n }\n});\n\nexport const { setCookies, setLocation, setUserAgent, setRequestAndResponse } =\n slice.actions;\nexport const reducer = slice.reducer;\n","import { combineReducers } from 'redux';\n\nimport ads from './ads/reducer';\nimport bankId from './bank-id/reducer';\nimport { reducer as categories } from './categories/reducer';\nimport { reducer as discover } from './discover/reducer';\nimport { reducer as environment } from './environment/reducer';\nimport initData from './init-data/reducer';\nimport items from './items/reducer';\nimport language from './language/reducer';\nimport member from './member/reducer';\nimport multiCurrency from './multi-currency/reducer';\nimport page from './page/reducer';\nimport { reducer as personalisation } from './personalisation/reducer';\nimport pushNotifications from './push-notifications/push-notifications-slice';\nimport shippingRegion from './shipping-region/reducer';\nimport { reducer as ui } from './ui/reducer';\nimport views from './views/reducer';\nimport { connectRouter } from 'connected-react-router';\nimport { reducer as status } from './status/reducer';\nimport { discoverApi } from './services/discover-api';\nimport { feesApi } from './services/fees-api';\nimport { touchwebSearchApi } from './services/touchweb-search-api';\nimport { touchwebSyiApi } from './services/touchweb-syi-api';\nimport { wishListNudge } from './wish-list-nudge/reducer';\nimport { shoppingApi } from './services/shopping-api';\nimport type { History } from 'history';\nimport { bidHistoryApi } from 'tradera/components/bid-history/bid-history-api';\nimport { cartApi } from './services/cart-api';\nimport { draftsApi } from 'tradera/apps/syi/state/drafts-api';\nimport { templatesApi } from 'tradera/apps/syi/state/templates-api';\nimport { shippingComplaintApi } from './services/shipping-complaint-api';\nimport { savedSearchesApi } from 'tradera/apps/my-tradera/saved-searches/saved-searches-api';\nimport { pickListApi } from 'tradera/apps/my-tradera/pick-list2/services/pick-list-api';\nimport { reducer as request } from './request/reducer';\nimport { reducer as random } from './random/reducer';\n\nconst rootReducer = (history: History) =>\n combineReducers({\n ads,\n bankId,\n categories,\n discover,\n environment,\n initData,\n items,\n language,\n member,\n multiCurrency,\n page,\n personalisation,\n pushNotifications,\n random,\n request,\n shippingRegion,\n ui,\n views,\n wishListNudge,\n router: connectRouter(history),\n status,\n [discoverApi.reducerPath]: discoverApi.reducer,\n [feesApi.reducerPath]: feesApi.reducer,\n [pickListApi.reducerPath]: pickListApi.reducer,\n [touchwebSearchApi.reducerPath]: touchwebSearchApi.reducer,\n [touchwebSyiApi.reducerPath]: touchwebSyiApi.reducer,\n [shoppingApi.reducerPath]: shoppingApi.reducer,\n [bidHistoryApi.reducerPath]: bidHistoryApi.reducer,\n [cartApi.reducerPath]: cartApi.reducer,\n [draftsApi.reducerPath]: draftsApi.reducer,\n [templatesApi.reducerPath]: templatesApi.reducer,\n [shippingComplaintApi.reducerPath]: shippingComplaintApi.reducer,\n [savedSearchesApi.reducerPath]: savedSearchesApi.reducer\n });\n\nexport default rootReducer;\n","import { useCallback } from 'react';\nimport { useSelector } from 'react-redux';\nimport { localizedDayjs } from 'tradera/utils/date';\n\nexport const useDayJs = () => {\n const preferredLanguageCodeIso2 = useSelector(\n (state) => state.language.preferred.languageCodeIso2\n );\n const localizedDayjsCallback = useCallback(\n (...args) => localizedDayjs(preferredLanguageCodeIso2)(...args),\n [preferredLanguageCodeIso2]\n );\n return localizedDayjsCallback;\n};\n","enum ItemTypes {\n AUCTION = 'Auction',\n AUCTION_BIN = 'AuctionBin',\n PURE_BIN = 'PureBin',\n SHOP_ITEM = 'ShopItem'\n}\n\nexport default ItemTypes;\n","import {\n selectAutomaticTranslationPreference,\n selectPreferredLanguageCode\n} from 'tradera/state/language/selectors';\nimport { getTraderaShopProductData } from './api';\nimport { logger } from 'packages/logger';\nimport { fetchDescription, getItemsFromSeller } from '../view-item/api';\nimport {\n beginLoadingTranslatedDescription,\n failedLoadingTranslatedDescription,\n setCurrentDescriptionLanguageCodeIso2,\n setIsLoading,\n setItemDetails,\n setProduct,\n setSellerItems,\n setTranslatedDescription,\n setTranslationOnDemandDisabled\n} from './reducer';\nimport { translatedDescriptionStates } from '../view-item/reducer';\nimport {\n selectTranslatedDescription,\n selectTranslatedDescriptionState\n} from './selectors';\nimport { selectShippingRegionCountryCodeIso2 } from 'tradera/state/shipping-region/selectors';\nimport { isSwedenCountryCodeOrUndefined } from 'tradera/localization/countrycode';\nimport { areLanguageCodesIso2Equal } from 'tradera/localization/languagecode';\nimport { selectIsFeatureEnabled } from 'tradera/state/environment/selectors';\n\nexport const fetchTraderaShopProductData =\n (urlSlug) => async (dispatch, getState) => {\n const preferredLanguageCode = selectPreferredLanguageCode(getState());\n dispatch(setIsLoading(true));\n try {\n const traderaShopProduct = await getTraderaShopProductData(\n urlSlug,\n preferredLanguageCode\n );\n dispatch(handleTraderaShopProduct(traderaShopProduct));\n dispatch(setIsLoading(false));\n } catch (error) {\n const status = error.response && error.response.status;\n if (status === 404) {\n // Handle server side.\n window.location.reload();\n } else {\n logger(error);\n }\n }\n };\n\nexport const handleTraderaShopProduct = (traderaShopProduct) => (dispatch) => {\n const { product, item } = traderaShopProduct;\n dispatch(setProduct(product));\n dispatch(setItemDetails(item.itemDetails));\n dispatch(setTranslation(item));\n};\n\nconst setTranslation = (itemModel) => (dispatch, getState) => {\n const state = getState();\n const shippingRegion = selectShippingRegionCountryCodeIso2(state);\n const preferredLanguageCodeIso2 = selectPreferredLanguageCode(state);\n const disabledForEnglishLangSwedes =\n isSwedenCountryCodeOrUndefined(shippingRegion) &&\n areLanguageCodesIso2Equal(preferredLanguageCodeIso2, 'en');\n const automaticTranslationPreferred =\n selectAutomaticTranslationPreference(state);\n const descriptionLanguageCodeIso2 =\n itemModel.itemDetails.descriptionLanguageCodeIso2;\n const shouldTranslateDescriptionOnLoad =\n automaticTranslationPreferred &&\n preferredLanguageCodeIso2 !== descriptionLanguageCodeIso2 &&\n !disabledForEnglishLangSwedes;\n dispatch(\n setCurrentDescriptionLanguageCodeIso2(\n shouldTranslateDescriptionOnLoad\n ? preferredLanguageCodeIso2\n : descriptionLanguageCodeIso2\n )\n );\n};\n\nexport const loadTranslatedDescription =\n (itemId, languageCodeIso2, descriptionLanguageCodeIso2) =>\n async (dispatch, getState) => {\n const isOnDemandItemDescriptionTranslation = selectIsFeatureEnabled(\n 'on-demand-item-description-translation'\n )(getState());\n\n if (!languageCodeIso2 || !isOnDemandItemDescriptionTranslation) {\n return;\n }\n\n if (\n languageCodeIso2.toLowerCase() ===\n descriptionLanguageCodeIso2.toLowerCase()\n ) {\n return;\n }\n\n if (\n selectTranslatedDescriptionState(getState()) ===\n translatedDescriptionStates.LOADING ||\n selectTranslatedDescription(getState())?.languageCodeIso2 ===\n languageCodeIso2\n ) {\n return;\n }\n\n dispatch(beginLoadingTranslatedDescription());\n\n try {\n const result = await fetchDescription(itemId, languageCodeIso2);\n if (result.data.translations.isTranslationOnDemandDisabled) {\n dispatch(setTranslationOnDemandDisabled());\n return;\n }\n\n dispatch(\n setTranslatedDescription({\n title: result.data.translations.title,\n description: result.data.translations.description,\n additionalDescriptions:\n result.data.translations.additionalDescriptions,\n languageCodeIso2: result.data.translations.languageCodeIso2,\n providerName: 'Google Translate',\n shippingTerms: result.data.translations.shippingTerms\n })\n );\n } catch (e) {\n dispatch(failedLoadingTranslatedDescription());\n }\n };\n\nexport const fetchItemsFromSeller =\n ({ SellerMemberId, Size }) =>\n async (dispatch, getState) => {\n try {\n const preferredLanguageCode = selectPreferredLanguageCode(\n getState()\n );\n const params = {\n SellerMemberId,\n Size,\n SearchResultLanguageCodeIso2: preferredLanguageCode\n };\n const result = await getItemsFromSeller(\n params,\n preferredLanguageCode\n );\n const { items, itemsMatched } = result.data.result;\n dispatch(setSellerItems({ items, itemsMatched }));\n } catch (e) {\n dispatch(setSellerItems(null));\n }\n };\n","import {\n axiosWithTokenRefresh,\n finalizeResponse,\n handleError,\n API_ERRORS\n} from 'tradera/utils/api';\nimport { toLocalizedUrl } from 'tradera/utils/url';\n\nexport const getTraderaShopProductData = async (id, preferredLanguageCode) => {\n return axiosWithTokenRefresh()\n .get(toLocalizedUrl(`/tradera-shop/${id}.json`, preferredLanguageCode))\n .then(finalizeResponse())\n .then((response) => response.data)\n .catch(\n handleError({\n // Ignore 400 & 401 errors that slip through token refresh\n 400: API_ERRORS.IGNORE_ME,\n 401: API_ERRORS.IGNORE_ME\n })\n );\n};\n"],"sourceRoot":""}