{"version":3,"file":"static/js/generic.c6480752.chunk.js","mappings":"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","sources":["components/GameNameRedirection/index.tsx","components/Generic/__partials/BetBuilderModalGeneric/actions.ts","components/Generic/__partials/KYCVerificationStatusBar/constants.ts","components/Generic/__partials/SignicatVerificationBeforeActions/types.ts","components/Generic/__partials/AddToBetslipLinkCheck.tsx","components/Generic/__partials/CheckDeRealityCheck.tsx","components/Generic/__partials/CommunityChat/index.tsx","hooks/useGetCurrencyConfigs.ts","components/Generic/__partials/CurrencyRelatedLogic.tsx","components/Generic/__partials/FetchGenericSettings/index.tsx","components/Generic/__partials/IconsPrefetcher/index.tsx","components/Generic/__partials/InitializeFirebase.tsx","components/Generic/__partials/LoginRelatedLogic.tsx","newhooks/generic/useOpenGameCustomCode.ts","components/Generic/__partials/PopupPortal.tsx","components/Generic/__partials/PostMessageRelatedLogic.tsx","components/Generic/__partials/RedirectFromStatistics.tsx","components/Generic/__partials/RedirectToSingleGameView/index.tsx","components/Generic/__partials/SumSubKYCVerificationCheck.tsx","components/Generic/__partials/TourWrapper.tsx","newhooks/generic/useTour.ts","components/Generic/__partials/TurnstileCheck.tsx","newcomponents/Shared/sportsbook/BetBuilderModal/index.tsx","components/Generic/__partials/BetBuilderModalGeneric/index.tsx","components/Generic/__partials/DoBetRecaptcha/index.tsx","components/Generic/__partials/GeolocationFailedPopup/index.tsx","components/Generic/__partials/KYCVerificationStatusBar/index.tsx","components/Generic/__partials/LoyaltyDataFetcherWrapper/index.tsx","components/Generic/__partials/SignicatVerificationBeforeActions/index.tsx","components/Generic/__partials/WrongLoginAttemptsUnlockPopup/index.tsx","newcomponents/Shared/account/NewDepositPopup/index.tsx","newcomponents/Shared/agePopup/index.tsx","components/Generic/index.tsx","components/Loading/index.tsx","components/Login/hooks/useLoginCallback.ts","components/Modal/WithInput.tsx","components/Modal/CustomHeader/index.tsx","components/Modal/index.tsx","deviceactionmanager/DeviceActionManager.ts","hooks/auth/useAccountLogout.ts","hooks/auth/useUpdateUser.ts","hooks/auth/useUserNotifications.ts","hooks/betslip/useBetlsipNotEmptyPopup.ts","hooks/betslip/useChangeOddFormat.ts","hooks/useBalance.ts","hooks/useCheckIsAccountBalanceAvailable.ts","hooks/useCheckStakeBalance.ts","hooks/useDebounce.ts","hooks/usePopup.tsx","hooks/usePopupScrollDisable.ts","interfaces/new-casino.ts","newcomponents/Shared/account/PlayerActivityChecker/types.ts","newcomponents/Shared/sportsbook/BetBuilderModal/components/BetBuilderStakeInput/index.tsx","hooks/sportsbook/useGenerateBetBuilderUrl.ts","newcomponents/Shared/sportsbook/BetBuilderModal/components/BetBuilderContent/index.tsx","newcomponents/Shared/sportsbook/BetBuilderModal/hooks/useGenerateBetBuilderFooterFields.ts","newcomponents/UI/CustomModal/index.tsx","newcomponents/UI/Divider/index.tsx","newcomponents/UI/Input/index.tsx","newelements/Casino/GameSingleViewRenderer/__partials/GameViewContainer/utils/construct-view-url.ts","newelements/Casino/GameSingleViewRenderer/__partials/GameViewContainer/utils/index.ts","newelements/Casino/GameSingleViewRenderer/__partials/GameViewContainer/utils/check-is-game-already-cached.ts","newelements/Casino/GameSingleViewRenderer/__partials/GameViewContainer/utils/reconstruct-and-redirect-to-game-view.ts","newelements/Casino/GameSingleViewRenderer/__partials/GameViewContainer/utils/extract-game-info-from-search-query.ts","newelements/Casino/GameSingleViewRenderer/__partials/GameViewContainer/utils/encode-game-id-with-prefix.ts","newelements/Casino/GameSingleViewRenderer/__partials/GameViewContainer/utils/normalize-stringified-query.ts","newelements/Casino/GameSingleViewRenderer/__partials/GameViewContainer/utils/get-route-length.ts","newelements/_Betslip/components/BetslipCalculationResult/index.tsx","newelements/_Betslip/hooks/generateFieldsMapping/classes.ts","newelements/_Betslip/hooks/generateFieldsMapping/hooks/shared/useFormatAmount.tsx","newelements/_Betslip/hooks/generateFieldsMapping/utils.ts","newelements/_Betslip/hooks/useBookBet.ts","newhooks/account/useFetchAccountParams.ts","newhooks/casino/useOpenCasinoGame.ts","providers/casino/openGameConfigsProvider.tsx","services/afterSignIn.ts","services/bet-slip.ts","services/casino/casino-fetch-games-by-id.ts","services/sportsbook/notifications.ts","store/actions/new-casino.ts","store/selectors/new-casino.ts","store/selectors/socket.ts","store/selectors/spec-elems.ts","utils/account/open-login-view.ts","utils/account/index.ts","utils/account/check-is-user-logged-in.ts","utils/account/push-notifications.ts","utils/account/user-info.ts","services/get-permissible-odds.ts","utils/betslip/odd-formats-helper.ts","utils/casino/casino.ts","utils/constants/account/crypto-currencies.ts","utils/constants/account/payment.ts","utils/constants/account/user-status.ts","utils/constants/app/app-routes.ts","utils/constants/app/rtl.ts","utils/constants/casino/casino-command-names.ts","utils/constants/casino/casino_categories.ts","utils/constants/casino/url-queries.ts","utils/generic/game-url.ts","utils/generic/get-domain.ts","utils/bom-dom-manipulation/is-subdomain.ts","utils/generic/show-toast-warning.ts","utils/generic/tour-settings.ts","utils/helpers/debounce.ts"],"sourcesContent":["import { FC, ReactElement, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useHistory } from 'react-router-dom';\nimport styled from 'styled-components';\nimport { EIconSize } from 'utils/constants/app/ui';\nimport {\n  competitions,\n  regions,\n  sports\n} from 'utils/constants/sportsbook/data-fields';\nimport {\n  RACING_SPORT_ALIAS,\n  RACING_SPORT_IDS\n} from 'utils/constants/sportsbook/racing-sport';\nimport SpringConfigs from 'utils/constants/swarm/spring-configs';\nimport { sbRedirect, shouldRedirect } from 'utils/generic/route-manipulation';\nimport { showToastError } from 'utils/generic/show-toast-error';\nimport { isMobile } from 'utils/is-mobile';\nimport RidGenerator from 'utils/swarm/rid-generator';\nimport { serializeSwarmData } from 'utils/swarm/serialize-swarm-data';\nimport { ERacingPageTypes } from 'interfaces/racing';\nimport { Sport } from 'interfaces/sportsbook-data-levels';\nimport { executeCommand } from 'services/get-data-level';\nimport { Loading } from 'components/Loading';\nimport { setTimeFilterData, setTournamentSportIds } from 'store/actions';\nimport { setMustClose } from 'store/actions/betslip';\nimport { setGames, setRegionCompData } from 'store/actions/new-sportsbook';\nimport {\n  getTimeFiltersData,\n  getTournamentSportIds\n} from 'store/selectors/sport-data';\nimport './index.less';\n\nexport const Container = styled.span`\n  position: relative;\n  overflow: hidden;\n  min-height: 10px;\n  display: flex;\n  align-items: center;\n  cursor: pointer;\n\n  & > span {\n    overflow: hidden;\n    white-space: nowrap;\n    text-overflow: ellipsis;\n    line-height: 16px;\n  }\n`;\n\ntype Props = {\n  gameName: string | ReactElement[];\n  gameId: string;\n};\n\nexport const GameNameRedirection: FC<Props> = ({ gameId, gameName }) => {\n  const [isLoading, setIsLoading] = useState(false);\n  const { t } = useTranslation();\n  const history = useHistory();\n  const dispatch = useDispatch();\n\n  const timeStamp = useSelector(getTimeFiltersData);\n  const tournamentSportIds = useSelector(getTournamentSportIds);\n\n  const getGameData = () => {\n    if (gameId) {\n      setIsLoading(true);\n      executeCommand(\n        RidGenerator.gForCommand('CheckGameForRedirect'),\n        {\n          ...sports,\n          ...regions,\n          ...competitions,\n          game: ['type']\n        },\n        { game: { id: Number(gameId) } },\n        (data: { data: { sport: Record<string, Sport> } }) => {\n          setIsLoading(false);\n          const serializedData = serializeSwarmData(data.data);\n\n          if (serializedData?.games?.length) {\n            const isEsport =\n              serializedData.sports[0].type === 0 &&\n              SpringConfigs.PAGE_URLS.esport;\n\n            const isLive = serializedData.games[0].type === 1;\n            const isRacing = RACING_SPORT_IDS.includes(\n              Number(serializedData.sports[0].id)\n            );\n\n            const redirectBase = isEsport\n              ? SpringConfigs.PAGE_URLS.esport\n              : isLive\n              ? SpringConfigs.PAGE_URLS.live\n              : isRacing\n              ? SpringConfigs.PAGE_URLS.racing\n              : SpringConfigs.PAGE_URLS.prematch;\n\n            const isLongPath = !isEsport || !isMobile();\n            const alias = `/${`${SpringConfigs.SPORTSBOOK_MOUNT_PATH}/`}${\n              isRacing\n                ? `${ERacingPageTypes.UPCOMING}/${Object.keys(\n                    RACING_SPORT_ALIAS\n                  ).find(\n                    key =>\n                      RACING_SPORT_ALIAS[key] === serializedData.sports[0].id\n                  )}`\n                : serializedData.sports[0]['alias']\n            }/${\n              isLongPath\n                ? isRacing\n                  ? ''\n                  : `${serializedData.regions[0].alias}/`\n                : ''\n            }${\n              isLongPath ? `${serializedData.competitions[0].id}/` : ''\n            }${gameId}${\n              isEsport ? `?type=${isLive ? 'live' : 'prematch'}` : ''\n            }`;\n\n            const finalPath = `${redirectBase}${alias}`.replace(\n              /([^:]\\/)\\/+/g,\n              '$1'\n            );\n\n            if (\n              finalPath === window.location.href ||\n              finalPath === window.location.pathname + window.location.search\n            ) {\n              dispatch(setMustClose(true));\n            } else {\n              if (!shouldRedirect(redirectBase)) {\n                const pathnameBase =\n                  redirectBase.split(`${window.location.origin}`)[1] || '';\n\n                if (timeStamp && Object.keys(timeStamp).length) {\n                  dispatch(\n                    setTimeFilterData({\n                      option: 'All',\n                      date: false,\n                      count: undefined,\n                      name: t('sportsbook.allEvents')\n                    })\n                  );\n\n                  if (!isMobile()) {\n                    dispatch(setRegionCompData(null, true));\n                    dispatch(setGames(null));\n                  }\n                }\n\n                if (\n                  !tournamentSportIds?.includes(\n                    serializedData.sports[0]?.id || null\n                  )\n                ) {\n                  dispatch(setTournamentSportIds(null));\n                }\n\n                history.push(pathnameBase + alias);\n                dispatch(setMustClose(true));\n              } else {\n                sbRedirect(finalPath, false, true);\n              }\n            }\n          } else {\n            const errorKey = t('account.gameIsNotAvailable');\n            showToastError(errorKey);\n          }\n        },\n        false\n      );\n    }\n  };\n\n  if (!gameName) {\n    return null;\n  }\n\n  return (\n    <Container\n      onClick={getGameData}\n      title={typeof gameName === 'string' ? gameName : ''}\n    >\n      <span data-testid=\"betslip-game-teams\">\n        {typeof gameName === 'string' ? (\n          gameName\n        ) : (\n          <>\n            {gameName.map(elem => {\n              return elem;\n            })}\n          </>\n        )}\n      </span>\n      {isLoading && (\n        <Loading\n          size={EIconSize._16}\n          className=\"gameNameRedirection__loading\"\n        />\n      )}\n    </Container>\n  );\n};\n","import { fireEvent } from 'utils/generic/event-bus';\nimport { TBetBuilderModalProps } from 'newcomponents/Shared/sportsbook/BetBuilderModal/types';\n\nexport enum EBetBuilderModalActions {\n  OPEN_BET_BUILDER_MODAL = 'OPEN_BET_BUILDER_MODAL',\n  CLOSE_BET_BUILDER_MODAL = 'CLOSE_BET_BUILDER_MODAL',\n  UPDATE_BET_BUILDER_MODAL_PROPS = 'UPDATE_BET_BUILDER_MODAL_PROPS'\n}\n\nexport const BetBuilderModalActions = {\n  open(payload: TBetBuilderModalProps) {\n    fireEvent({ key: EBetBuilderModalActions.OPEN_BET_BUILDER_MODAL, payload });\n  },\n\n  updateProps(payload: TBetBuilderModalProps) {\n    fireEvent({\n      key: EBetBuilderModalActions.UPDATE_BET_BUILDER_MODAL_PROPS,\n      payload\n    });\n  },\n\n  close() {\n    fireEvent({ key: EBetBuilderModalActions.CLOSE_BET_BUILDER_MODAL });\n  }\n};\n","import { userActiveStep } from 'utils/constants/account/user-status';\n\nexport const BUTTON_TEXT_MAPPING = {\n  [userActiveStep.USER_ACTIVE_STEP_STATE_VALUE_0]:\n    'account.KYCDataProcessingButtonText',\n  [userActiveStep.USER_ACTIVE_STEP_STATE_VALUE_5]:\n    'account.KYCClientActionButtonText'\n};\n\nexport const MESSAGE_MAPPING = {\n  [userActiveStep.USER_ACTIVE_STEP_STATE_VALUE_0]:\n    'account.KYCDataProcessingMessage',\n  [userActiveStep.USER_ACTIVE_STEP_STATE_VALUE_3]:\n    'account.KYCVerificationFailedMessage',\n  [userActiveStep.USER_ACTIVE_STEP_STATE_VALUE_4]:\n    'account.KYCVerificationExpiredMessage',\n  [userActiveStep.USER_ACTIVE_STEP_STATE_VALUE_5]:\n    'account.KYCClientActionMessage',\n  [userActiveStep.USER_ACTIVE_STEP_STATE_VALUE_7]:\n    'account.KYCProviderWaitingMessage'\n};\n\nexport const USER_ACTIVE_STEP_STATES_TO_SHOW_STATUS_BAR = Object.keys(\n  MESSAGE_MAPPING\n).map(k => +k);\n","export enum ESignicatVerificationActions {\n  Verify = 'SignicatVerify',\n  Verified = 'SignicatVerified',\n  Failed = 'SignicatFailed'\n}\n","import { Suspense, useEffect, useState } from 'react';\nimport { useLocation } from 'react-router-dom';\nimport LocalStorage from 'utils/bom-dom-manipulation/local-storage';\nimport { arrayFindBy } from 'utils/collection-manipulation/array-find-by';\nimport { ReservedRoutes } from 'utils/constants/app/app-routes';\nimport { ODD_FORMATS } from 'utils/constants/betslip/odd-formats';\nimport SpringConfigs from 'utils/constants/swarm/spring-configs';\nimport { lazy as lazyImport } from 'utils/generic/lazy';\nimport { storageKeyName } from 'utils/generic/storage-key-name';\nimport { useChangeOddFormat } from 'hooks/betslip/useChangeOddFormat';\nimport { useSearchParams } from 'hooks/useSearchParams';\n\nconst { AddToBetslipLink } = lazyImport(\n  () =>\n    import(\n      /* webpackChunkName: \"add-to-betslip-link\" */ 'components/AddToBetslipLink'\n    )\n);\n\nexport const AddToBetslipLinkCheck = () => {\n  const queries = useSearchParams();\n  const location = useLocation();\n  const changeOddFormat = useChangeOddFormat();\n\n  const [isAddToBetslip, setIsAddToBetslip] = useState(false);\n\n  useEffect(() => {\n    if (SpringConfigs.IFRAME_SPORTSBOOK && queries.odds_type) {\n      const format = {\n        ...arrayFindBy(ODD_FORMATS, 'value', queries.odds_type, false)\n      };\n\n      const { id, value } = format;\n      changeOddFormat(id, value);\n    }\n\n    if (\n      location.pathname === ReservedRoutes.addToBetslip ||\n      LocalStorage.getItem(storageKeyName('betslip', 'ADD_TO_BETSLIP_DATA'))\n    ) {\n      setIsAddToBetslip(true);\n    }\n\n    if (location.pathname.includes(ReservedRoutes.deposit)) {\n      const path = location.pathname.replace(ReservedRoutes.deposit, '');\n      window.location.href = `${window.location.origin}${path}?accounts=%2A&wallet=%2A&deposit=%2A`;\n    }\n  }, []);\n\n  if (!isAddToBetslip) {\n    return null;\n  }\n\n  return (\n    <Suspense fallback={null}>\n      <AddToBetslipLink />\n    </Suspense>\n  );\n};\n","import { Suspense } from 'react';\nimport { useSelector } from 'react-redux';\nimport SpringConfigs from 'utils/constants/swarm/spring-configs';\nimport { lazy } from 'utils/generic/lazy';\nimport { getIsLoggedIn } from 'store/selectors/user-data';\n\nconst { DeRealityCheck } = lazy(\n  () =>\n    import(\n      /* webpackChunkName: \"de-reality-check\" */ 'newcomponents/Shared/account/DeRealityCheck'\n    )\n);\n\nexport const CheckDeRealityCheck = () => {\n  const isLoggedIn = useSelector(getIsLoggedIn);\n\n  if (!(SpringConfigs.SHOW_REALITY_CHECK && isLoggedIn)) {\n    return null;\n  }\n\n  return (\n    <Suspense fallback={null}>\n      <DeRealityCheck />\n    </Suspense>\n  );\n};\n","import { Suspense, useState } from 'react';\nimport SpringConfigs from 'utils/constants/swarm/spring-configs';\nimport { lazy } from 'utils/generic/lazy';\nimport { Portal } from 'components/Shared/Portal';\n\nconst { CommunityChatContent } = lazy(\n  () => import(/* webpackChunkName: \"CommunityChat\" */ './Content')\n);\n\nexport const CommunityChat = () => {\n  const [communityChatAvailable] = useState(\n    () => !document.querySelector('.popup-body') // Check if project is mounted through iframe\n  );\n\n  if (!SpringConfigs.COMMUNITY_CHAT_ENABLED || !communityChatAvailable) {\n    return null;\n  }\n\n  return (\n    <Suspense>\n      <Portal>\n        <CommunityChatContent />\n      </Portal>\n    </Suspense>\n  );\n};\n","import { useLayoutEffect } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { getCurrencyConfigs } from 'services/bet-slip';\nimport { useCurrency } from 'hooks/useCurrency';\nimport { setRounding, setRoundingLoading } from 'store/actions/app-data';\n\nexport const useGetCurrencyConfigs = (): void => {\n  const { currencyId } = useCurrency();\n  const dispatch = useDispatch();\n\n  useLayoutEffect(() => {\n    if (currencyId) {\n      dispatch(setRoundingLoading(true));\n      getCurrencyConfigs(\n        currencyId,\n        dataObj => {\n          if (dataObj?.data) {\n            const currency = dataObj.data.currency;\n\n            if (currency) {\n              const rounding = currency[Object.keys(currency)[0]]?.rounding;\n\n              dispatch(setRounding(rounding));\n            }\n          }\n\n          dispatch(setRoundingLoading(false));\n        },\n        () => {\n          dispatch(setRoundingLoading(false));\n        }\n      );\n    }\n  }, [currencyId]);\n};\n","import { useEffect } from 'react';\nimport { useSelector } from 'react-redux';\nimport { useHistory } from 'react-router-dom';\nimport { CRYPTO_CURRENCIES_MAPPING } from 'utils/constants/account/crypto-currencies';\nimport { addQuery, saveCurrentLocation } from 'components/QueryRoute';\nimport { useGetCurrencyConfigs } from 'hooks/useGetCurrencyConfigs';\nimport { getIsLoggedIn, getUser } from 'store/selectors/user-data';\n\nexport const CurrencyRelatedLogic = () => {\n  useGetCurrencyConfigs();\n  const history = useHistory();\n  const isLoggedIn = useSelector(getIsLoggedIn);\n  const user = useSelector(getUser);\n\n  useEffect(() => {\n    if (!user.pending) {\n      const switchCurrency = (event: MessageEvent) => {\n        if (\n          event.data &&\n          event.data.action === 'switchCurrency' &&\n          event.data.currencyId === CRYPTO_CURRENCIES_MAPPING.FTNF.currency\n        ) {\n          if (isLoggedIn) {\n            history.push(\n              addQuery({\n                selected_wallet: CRYPTO_CURRENCIES_MAPPING.FTNF.currency\n              })\n            );\n          } else {\n            history.push(\n              addQuery({\n                selected_wallet: CRYPTO_CURRENCIES_MAPPING.FTNF.currency\n              })\n            );\n            saveCurrentLocation(\n              'login',\n              `${window.getPathname()}?selected_wallet=${\n                CRYPTO_CURRENCIES_MAPPING.FTNF.currency\n              }`\n            );\n            history.push(addQuery({ accounts: '*', login: '*' }));\n          }\n        }\n      };\n\n      window.addEventListener('message', switchCurrency, false);\n\n      return () => {\n        window.removeEventListener('message', switchCurrency);\n      };\n    }\n  }, [user.pending, isLoggedIn]);\n\n  return null;\n};\n","import { useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { deepMerge } from 'utils/collection-manipulation/deep-merge';\nimport { FavoritePersonalization } from 'services/favorite-personalization';\nimport { setPersonalizedGenericSettings } from 'store/actions/app-data';\nimport { getIsLoggedIn } from 'store/selectors/user-data';\n\nexport const FetchGenericSettings = () => {\n  const isLoggedIn = useSelector(getIsLoggedIn);\n\n  const dispatch = useDispatch();\n  const { prepareFavoritesInitialData } = FavoritePersonalization();\n\n  useEffect(() => {\n    if (isLoggedIn) {\n      prepareFavoritesInitialData(preparedData => {\n        const newData = deepMerge(\n          { accountSettings: {} },\n          preparedData.personalizationGenericSettings || {},\n          { shouldMergeInFirst: false, applyEmptyArraysAndObjects: true }\n        );\n\n        dispatch(setPersonalizedGenericSettings(newData));\n      }, true);\n    }\n  }, [isLoggedIn]);\n\n  useEffect(() => {\n    if (!isLoggedIn) {\n      dispatch(setPersonalizedGenericSettings({}));\n    }\n  }, [isLoggedIn]);\n\n  return null;\n};\n","import { UtilsIcons } from 'utils/icons';\n\nlet prefetcherCalled = false;\n\nexport const IconsPrefetcher = () => {\n  const prefetchIcons = () => {\n    const iconUrl = UtilsIcons.createUrl({\n      lib: 'generic',\n      theme: 'default',\n      name: 'spin'\n    });\n\n    const iconRemoveUrl = UtilsIcons.createUrl({\n      lib: 'generic',\n      theme: 'colored',\n      name: 'remove'\n    });\n\n    void UtilsIcons.prefetch(iconUrl);\n    void UtilsIcons.prefetch(iconRemoveUrl);\n    prefetcherCalled = true;\n  };\n\n  !prefetcherCalled && prefetchIcons();\n\n  return null;\n};\n","import { useEffect } from 'react';\nimport { getCookie } from 'utils/bom-dom-manipulation/cookies';\nimport SpringConfigs from 'utils/constants/swarm/spring-configs';\nimport store from 'store';\nimport { setFirebaseToken } from 'store/actions';\n\nexport const InitializeFirebase = () => {\n  useEffect(() => {\n    try {\n      if (SpringConfigs.WRAPPER_APP) {\n        const token = getCookie('X_FCM_TOKEN');\n\n        if (token && typeof token === 'string') {\n          store.dispatch(setFirebaseToken(token));\n        }\n      } else {\n        import(\n          /* webpackChunkName: \"get-firebase-token\" */\n          'utils/helpers/push-notification'\n        ).then(async data => {\n          const { initAndGetFirebaseToken } = data;\n          const token = await initAndGetFirebaseToken();\n\n          if (token) {\n            store.dispatch(setFirebaseToken(token));\n          }\n        });\n      }\n    } catch (error) {\n      console.error(error);\n    }\n  }, []);\n\n  return null;\n};\n","import { useEffect, useState } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport { login } from 'services/authentication';\nimport { markAsReadNotification } from 'hooks/auth/useUserNotifications';\nimport { useOpenGameCustomCode } from 'newhooks/generic/useOpenGameCustomCode';\nimport { useLoginCallback } from '../../Login/hooks/useLoginCallback';\n\nexport const LoginRelatedLogic = () => {\n  const history = useHistory();\n  const [username, setUsername] = useState('');\n  const [password, setPassword] = useState('');\n  const openCasinoGame = useOpenGameCustomCode();\n\n  const { loginCallback } = useLoginCallback({\n    rememberMe: true,\n    username,\n    password\n  });\n\n  const sbLogin = (user: string, pass: string) => {\n    setUsername(user);\n    setPassword(pass);\n  };\n\n  window.SB = {\n    openCasinoGame,\n    historyPush: (path: string) => {\n      history.push(path);\n    },\n    login: sbLogin,\n    markAsReadNotification: markAsReadNotification\n  };\n\n  useEffect(() => {\n    if (username && password) {\n      login({ username, password }, loginCallback);\n    }\n  }, [username, password]);\n\n  return null;\n};\n","import { ECasinoGameMode } from 'interfaces/casino-data';\nimport { fetchGamesByIds } from 'services/casino/casino-fetch-games-by-id';\nimport { useOpenCasinoGame } from 'newhooks/casino/useOpenCasinoGame';\n\nexport const useOpenGameCustomCode = () => {\n  const openGame = useOpenCasinoGame();\n\n  return (gameId: string, mode: ECasinoGameMode) => {\n    fetchGamesByIds([gameId], true, true).then(data => {\n      if (data.length) {\n        const game = data[0];\n\n        openGame(mode, game);\n      }\n    });\n  };\n};\n","import { Portal } from 'components/Shared/Portal';\nimport { usePopup } from 'hooks/usePopup';\n\nexport const PopupPortal = () => {\n  const modals = usePopup();\n\n  return modals?.length ? (\n    <Portal>\n      <div>{modals.map(modal => modal.modal)}</div>\n    </Portal>\n  ) : null;\n};\n","import { useEffect } from 'react';\nimport qs from 'qs';\n\nexport const PostMessageRelatedLogic = () => {\n  useEffect(() => {\n    const searchObject = qs.parse(window.location.search, {\n      ignoreQueryPrefix: true\n    });\n\n    if (\n      searchObject &&\n      searchObject.message &&\n      searchObject.mode === 'external' &&\n      window.opener\n    ) {\n      window.opener.postMessage({ status: searchObject.message }, '*');\n    }\n  }, []);\n\n  return null;\n};\n","import { useEffect } from 'react';\nimport qs from 'qs';\nimport LocalStorage from 'utils/bom-dom-manipulation/local-storage';\nimport { StatisticsRedirectPath } from 'utils/constants/app/general';\nimport { STATISTICS_LANG } from 'utils/constants/languages/language-format';\nimport SpringConfigs from 'utils/constants/swarm/spring-configs';\nimport { getWithLangMountPath } from 'utils/generic/route-manipulation';\nimport { storageKeyName } from 'utils/generic/storage-key-name';\n\nexport const RedirectFromStatistics = () => {\n  useEffect(() => {\n    if (window.location.hash.includes(StatisticsRedirectPath)) {\n      const searchParams = qs.parse(\n        window.location.hash.slice(window.location.hash.indexOf('?')),\n        {\n          ignoreQueryPrefix: true\n        }\n      );\n\n      LocalStorage.setItem(\n        storageKeyName('sportsbook', 'FROM_STATISTICS'),\n        JSON.stringify(searchParams)\n      );\n\n      if (searchParams) {\n        const lang =\n          Object.keys(STATISTICS_LANG).find(\n            key => STATISTICS_LANG[key] === searchParams.language\n          ) || '';\n\n        if (searchParams?.type && +searchParams?.type === 1) {\n          window.location.href = getWithLangMountPath(\n            `${SpringConfigs.PAGE_URLS.live}`,\n            lang\n          );\n        } else {\n          window.location.href = getWithLangMountPath(\n            `${SpringConfigs.PAGE_URLS.prematch}`,\n            lang\n          );\n        }\n      }\n    }\n  }, []);\n\n  return null;\n};\n","import { Suspense } from 'react';\nimport { Route } from 'react-router-dom';\nimport { RedirectToSingleViewRoute } from 'utils/constants/app/general';\nimport { lazy as lazyImport } from 'utils/generic/lazy';\nimport { getMountPath } from 'utils/generic/route-manipulation';\nimport { useSbRouteMatch } from 'newhooks/generic/useSbRouteMatch';\n\nconst { RedirectToSingleGameViewContent } = lazyImport(\n  () =>\n    import(\n      /* webpackChunkName: \"redirection-to-single-game-view\" */ './RedirectToSingleGameView'\n    )\n);\n\nexport const RedirectToSingleGameView = () => {\n  const { path } = useSbRouteMatch();\n\n  return (\n    <Route\n      path={`${getMountPath(path)}${`/(${RedirectToSingleViewRoute})/:game`}`}\n    >\n      <Suspense fallback={null}>\n        <RedirectToSingleGameViewContent />\n      </Suspense>\n    </Route>\n  );\n};\n","import { Suspense } from 'react';\nimport { useSelector } from 'react-redux';\nimport { userActiveStep } from 'utils/constants/account/user-status';\nimport { lazy } from 'utils/generic/lazy';\nimport { useFetchAccountParams } from 'newhooks/account/useFetchAccountParams';\nimport { getSumSubModalOpen, getUser } from 'store/selectors/user-data';\n\nconst { SumSubKYCVerification } = lazy(\n  () =>\n    import(\n      /* webpackChunkName: \"sum-sub-KYC-verification\" */ 'newcomponents/Shared/account/SumSubKYCVerification'\n    )\n);\n\nexport const SumSubKYCVerificationCheck = () => {\n  const sumSubModalOpen = useSelector(getSumSubModalOpen);\n  const { accountParams } = useFetchAccountParams();\n  const user = useSelector(getUser);\n\n  const checkSumSubKYCVerification =\n    (!Number(accountParams?.sumSubWithdrawalAction) &&\n      user.active_step === userActiveStep.USER_ACTIVE_STEP_VALUE_37 &&\n      user.active_step_state ===\n        userActiveStep.USER_ACTIVE_STEP_STATE_VALUE_5) ||\n    sumSubModalOpen;\n\n  if (!checkSumSubKYCVerification) {\n    return null;\n  }\n\n  return (\n    <Suspense>\n      <SumSubKYCVerification />\n    </Suspense>\n  );\n};\n","import { Suspense } from 'react';\nimport { lazy } from 'utils/generic/lazy';\nimport { Portal } from 'components/Shared/Portal';\nimport { useTour } from 'newhooks/generic/useTour';\n\nconst { Tour } = lazy(\n  () =>\n    import(/* webpackChunkName: \"tour\" */ 'newcomponents/Shared/generic/Tour')\n);\n\nexport const TourWrapper = () => {\n  const { tourWrapperActive } = useTour();\n\n  return tourWrapperActive ? (\n    <Suspense fallback={null}>\n      <Portal>\n        <Tour />\n      </Portal>\n    </Suspense>\n  ) : null;\n};\n","import { useEffect, useMemo, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { DEBOUNCE_DELAY } from 'utils/constants/app/magic-numbers-app';\nimport SpringConfigs from 'utils/constants/swarm/spring-configs';\nimport { TOUR_STEPS_TYPES } from 'utils/constants/tour';\nimport {\n  detectTourMethod,\n  TOUR_PATH_NAMESPACE\n} from 'utils/generic/tour-settings';\nimport { isMobile } from 'utils/is-mobile';\nimport { TTourSteps } from 'interfaces/tour';\nimport { useDebounce } from 'hooks/useDebounce';\nimport { setTourSteps } from 'store/actions';\nimport {\n  getTourModalVisible,\n  getTourSteps,\n  gettourStepsInitialData\n} from 'store/selectors/app-data';\nimport { getIsLoggedIn, getUser } from 'store/selectors/user-data';\n\ntype TUseTourProps = {\n  tourSteps: TTourSteps;\n  tourWrapperActive: boolean;\n};\n\nexport function useTour(): TUseTourProps {\n  const [tourMethods, setTourMethods] = useState<TOUR_STEPS_TYPES[]>([]);\n\n  const user = useSelector(getUser);\n  const tourSteps = useSelector(getTourSteps);\n  const isLoggedIn = useSelector(getIsLoggedIn);\n  const tourModalVisible = useSelector(getTourModalVisible);\n  const tourStepsInitialData = useSelector(gettourStepsInitialData);\n\n  const dispatch = useDispatch();\n  const resource = TOUR_PATH_NAMESPACE();\n\n  const tourWrapperActive =\n    isLoggedIn &&\n    !!resource &&\n    !isMobile() &&\n    !user.pending &&\n    Boolean(Object.values(tourSteps || {}).find(step => step.active));\n\n  const isActiveTour =\n    resource &&\n    isLoggedIn &&\n    !isMobile() &&\n    !user.pending &&\n    SpringConfigs.USER_PERSONALIZATION_ENABLED &&\n    Object.keys(tourStepsInitialData[resource] || {}).length;\n\n  const resources = useMemo((): TTourSteps => {\n    if (!resource || !tourMethods.length) {\n      return {};\n    }\n\n    let currentActiveTourStep = -1;\n\n    if (\n      !tourStepsInitialData?.[resource]?.finished &&\n      !tourStepsInitialData?.[resource]?.skipped\n    ) {\n      currentActiveTourStep = Number(\n        Object.keys(tourStepsInitialData[resource] || {}).find(\n          step => +step >= 0\n        )\n      );\n    }\n\n    return tourMethods.reduce<TTourSteps>(\n      (list, selector, index) => ({\n        ...list,\n        [index]: detectTourMethod(selector, index, currentActiveTourStep)\n      }),\n      {}\n    );\n  }, [tourStepsInitialData, resource, tourMethods]);\n\n  useEffect(() => {\n    if (isActiveTour) {\n      dispatch(setTourSteps(resources || {}));\n    }\n\n    return () => {\n      dispatch(setTourSteps({}));\n    };\n  }, [isLoggedIn, user.pending, resources]);\n\n  useDebounce(\n    () => {\n      if (isActiveTour && tourModalVisible) {\n        let tours: TOUR_STEPS_TYPES[] = [];\n\n        document.querySelectorAll('[data-tour]').forEach(tour => {\n          const tourStepType = tour.getAttribute(\n            'data-tour'\n          ) as TOUR_STEPS_TYPES | null;\n\n          tourStepType && tours.push(tourStepType);\n        });\n\n        tours = [...new Set(tours)];\n\n        if (tours.includes(TOUR_STEPS_TYPES.addCompetitions)) {\n          tours = tours.filter(\n            tour => tour !== TOUR_STEPS_TYPES.addCompetitionsTopMatches\n          );\n        }\n\n        setTourMethods(tours);\n      }\n    },\n    DEBOUNCE_DELAY._3000,\n    [isActiveTour, tourModalVisible]\n  );\n\n  return {\n    tourSteps,\n    tourWrapperActive\n  };\n}\n","import { LegacyRef, useRef } from 'react';\nimport { useSelector } from 'react-redux';\nimport { EIconSize } from 'utils/constants/app/ui';\nimport { GlobalIcon } from 'components/GlobalIcon';\nimport { Portal } from 'components/Shared/Portal';\nimport { getTurnstileEnabled } from 'store/selectors/app-data';\n\nexport const TurnstileCheck = () => {\n  const turnstileEnabled = useSelector(getTurnstileEnabled);\n  const container: LegacyRef<HTMLDivElement> = useRef(null);\n  const wrapper: LegacyRef<HTMLDivElement> = useRef(null);\n\n  return turnstileEnabled ? (\n    <Portal>\n      <div className=\"turnstile-container\" ref={container}>\n        <div className=\"turnstile-container__icon\">\n          <GlobalIcon\n            lib=\"generic\"\n            name=\"close\"\n            theme=\"default\"\n            size={EIconSize._16}\n            onClick={() => {\n              if (container.current) {\n                container.current.style.display = 'none';\n              }\n\n              if (wrapper.current) {\n                wrapper.current.innerHTML = '';\n              }\n            }}\n          />\n        </div>\n\n        <div\n          id=\"turnstileWrapper\"\n          className=\"turnstile-wrapper\"\n          ref={wrapper}\n        />\n      </div>\n    </Portal>\n  ) : null;\n};\n","import {\n  memo,\n  ReactElement,\n  SyntheticEvent,\n  useCallback,\n  useEffect\n} from 'react';\nimport { useSelector } from 'react-redux';\nimport {\n  EIconSize,\n  ZINDEX_HIGH_5,\n  ZINDEX_HIGH_6\n} from 'utils/constants/app/ui';\nimport SpringConfigs from 'utils/constants/swarm/spring-configs';\nimport { GlobalIcon } from 'components/GlobalIcon';\nimport { Modal } from 'components/Modal';\nimport { BetBuilderContent } from 'newcomponents/Shared/sportsbook/BetBuilderModal/components/BetBuilderContent';\nimport { TBetBuilderModalProps } from 'newcomponents/Shared/sportsbook/BetBuilderModal/types';\nimport { getIsLoggedIn } from 'store/selectors/user-data';\nimport './index.less';\n\nif (SpringConfigs.IS_RTL) {\n  import('./rtl.less');\n}\n\nexport const BetBuilderModal = memo(\n  ({\n    betBuilderModalVisible,\n    fixtureId,\n    toggleBetBuilderModal,\n    gameTitle,\n    sportId\n  }: TBetBuilderModalProps): ReactElement => {\n    const isLoggedIn = useSelector(getIsLoggedIn);\n\n    const closeBetBuilderModal = useCallback(\n      (e?: SyntheticEvent) => {\n        e && e.stopPropagation();\n        toggleBetBuilderModal(false);\n      },\n      [toggleBetBuilderModal]\n    );\n\n    useEffect(() => {\n      if (!isLoggedIn) {\n        closeBetBuilderModal();\n      }\n    }, [isLoggedIn, closeBetBuilderModal]);\n\n    return (\n      <Modal\n        maxWidth={1200}\n        width={1200}\n        zIndex={ZINDEX_HIGH_5}\n        align=\"center\"\n        renderInBody\n        padding={20}\n        wrapperContainerPadding=\"0\"\n        centered\n        closeIcon={\n          <GlobalIcon\n            lib=\"generic\"\n            name=\"close\"\n            theme=\"default\"\n            size={EIconSize._16}\n            color=\"var(--v3-text-color)\"\n          />\n        }\n        visible={betBuilderModalVisible}\n        onCancel={closeBetBuilderModal}\n        className=\"bbModal\"\n        maskStyle={{ zIndex: ZINDEX_HIGH_6 }}\n        style={{\n          borderRadius: '12px',\n          padding: 0\n        }}\n        bodyStyle={{\n          padding: 0,\n          textAlign: 'left'\n        }}\n        image={false}\n      >\n        {betBuilderModalVisible && (\n          <BetBuilderContent\n            fixtureId={fixtureId}\n            gameTitle={gameTitle}\n            sportId={sportId}\n          />\n        )}\n      </Modal>\n    );\n  }\n);\n","import { useState } from 'react';\nimport { EBetBuilderModalActions } from 'components/Generic/__partials/BetBuilderModalGeneric/actions';\nimport { BetBuilderModal } from 'newcomponents/Shared/sportsbook/BetBuilderModal';\nimport { TBetBuilderModalProps } from 'newcomponents/Shared/sportsbook/BetBuilderModal/types';\nimport { useEventbus } from 'newhooks/generic/useEventbus';\n\n// @TODO need to move BetBuilder modal in generic instead of mounting for each game card\n\nexport const BetBuilderModalGeneric = () => {\n  const [modalProps, setModalProps] = useState<TBetBuilderModalProps | null>(\n    null\n  );\n\n  useEventbus({\n    [EBetBuilderModalActions.OPEN_BET_BUILDER_MODAL]: ({\n      payload\n    }: {\n      payload: TBetBuilderModalProps;\n    }) => {\n      setModalProps(payload);\n    },\n\n    [EBetBuilderModalActions.UPDATE_BET_BUILDER_MODAL_PROPS]: ({\n      payload\n    }: {\n      payload: TBetBuilderModalProps;\n    }) => {\n      setModalProps(prevProps => ({ ...prevProps, ...payload }));\n    },\n\n    [EBetBuilderModalActions.CLOSE_BET_BUILDER_MODAL]: () => {\n      setModalProps(null);\n    }\n  });\n\n  return modalProps && <BetBuilderModal {...modalProps} />;\n};\n","import { Suspense } from 'react';\nimport { useSelector } from 'react-redux';\nimport { lazy } from 'utils/generic/lazy';\nimport { getRecaptchaEnabled } from 'store/selectors/app-data';\n\nconst { DoBetRecaptchaComponent } = lazy(\n  () => import(/* webpackChunkName: \"recaptcha\" */ './Component')\n);\n\nexport const DoBetRecaptcha = () => {\n  const recaptchaEnabled = useSelector(getRecaptchaEnabled);\n\n  return recaptchaEnabled ? (\n    <Suspense>\n      <DoBetRecaptchaComponent />\n    </Suspense>\n  ) : null;\n};\n","import { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { ModalWidth, ZINDEX_MODAL } from 'utils/constants/app/ui';\nimport { isMobile } from 'utils/is-mobile';\nimport { EGeolocationFailedPopup } from 'components/Generic/__partials/GeolocationFailedPopup/types';\nimport { Modal, ModalButtons } from 'components/Modal';\nimport { Button } from 'newcomponents/UI/Button';\nimport { useEventbus } from 'newhooks/generic/useEventbus';\nimport './index.less';\n\nexport const GeolocationFailedPopup = () => {\n  const { t } = useTranslation();\n  const [modalVisible, setModalVisible] = useState(false);\n\n  useEventbus({\n    [EGeolocationFailedPopup.ShowPopup]: () => {\n      setModalVisible(true);\n    }\n  });\n\n  return (\n    <Modal\n      centered\n      visible={modalVisible}\n      closable={false}\n      zIndex={ZINDEX_MODAL + 1}\n      maskStyle={{ zIndex: ZINDEX_MODAL, backgroundColor: 'var(--v3-black-2)' }}\n      width={isMobile() ? ModalWidth.MOBILE_350 : ModalWidth.DESKTOP_420}\n      title={t('account.geolocationFailedPopupTitle')}\n      image={{\n        lib: 'generic',\n        name: 'attentionGeneric',\n        theme: 'colored'\n      }}\n      className=\"geolocationFailedPopup\"\n    >\n      <div\n        className=\"geolocationFailedPopup__info\"\n        dangerouslySetInnerHTML={{\n          __html: t('account.geolocationFailedPopupInfo')\n        }}\n      />\n\n      <ModalButtons>\n        <Button\n          fullwidth\n          type=\"primary\"\n          onClick={() => {\n            setModalVisible(false);\n          }}\n        >\n          {t('account.ok')}\n        </Button>\n      </ModalButtons>\n    </Modal>\n  );\n};\n","import { FC, Suspense } from 'react';\nimport { useSelector } from 'react-redux';\nimport SpringConfigs from 'utils/constants/swarm/spring-configs';\nimport { lazy } from 'utils/generic/lazy';\nimport { USER_ACTIVE_STEP_STATES_TO_SHOW_STATUS_BAR } from 'components/Generic/__partials/KYCVerificationStatusBar/constants';\nimport { useFetchAccountParams } from 'newhooks/account/useFetchAccountParams';\nimport { getIsLoggedIn, getUser } from 'store/selectors/user-data';\n\nconst { KYCVerificationStatusBarComponent } = lazy(\n  () =>\n    import(\n      /* webpackChunkName: \"KYCVerificationStatusBarComponent\" */ './Component'\n    )\n);\n\nexport const KYCVerificationStatusBar: FC = () => {\n  const user = useSelector(getUser);\n\n  const isLoggedIn = useSelector(getIsLoggedIn);\n  const { accountParams } = useFetchAccountParams();\n\n  if (user.pending || !isLoggedIn) {\n    return;\n  }\n\n  const shouldShowKycVerificationStatusBar =\n    user.active_step_state !== null &&\n    (SpringConfigs.SHOW_KYC_STATUS_BAR ||\n      Boolean(+accountParams?.verificationKYCStatus)) &&\n    USER_ACTIVE_STEP_STATES_TO_SHOW_STATUS_BAR.includes(user.active_step_state);\n\n  return shouldShowKycVerificationStatusBar ? (\n    <Suspense>\n      <KYCVerificationStatusBarComponent />\n    </Suspense>\n  ) : null;\n};\n","import { Suspense } from 'react';\nimport { useSelector } from 'react-redux';\nimport { lazy } from 'utils/generic/lazy';\nimport { PartnerConfig } from 'interfaces/partner-config';\nimport { getPartnerConfigs } from 'store/selectors/socket';\nimport { getIsLoggedIn } from 'store/selectors/user-data';\n\nconst { LoyaltyDataFetcher } = lazy(\n  () =>\n    import(/* webpackChunkName: \"LoyaltyDataFetcher\" */ './LoyaltyDataFetcher')\n);\n\nexport const LoyaltyDataFetcherWrapper = () => {\n  const partnerConfigs = useSelector(getPartnerConfigs) as PartnerConfig;\n  const isLoggedIn = useSelector(getIsLoggedIn);\n\n  const isLoyaltyV2 =\n    partnerConfigs?.is_using_loyalty_program && !!partnerConfigs?.is_loyalty_v2;\n\n  const shouldFetch = isLoggedIn && isLoyaltyV2;\n\n  return shouldFetch ? (\n    <Suspense>\n      <LoyaltyDataFetcher />\n    </Suspense>\n  ) : null;\n};\n","import { useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { ModalWidth, ZINDEX_MODAL } from 'utils/constants/app/ui';\nimport SpringConfigs from 'utils/constants/swarm/spring-configs';\nimport { CommandNames } from 'utils/constants/swarm/swarm-command-names';\nimport { fireEvent } from 'utils/generic/event-bus';\nimport { showToastError } from 'utils/generic/show-toast-error';\nimport { isMobile } from 'utils/is-mobile';\nimport { EKycType } from 'interfaces/generic';\nimport { TSwarmError } from 'interfaces/spring-websocket-interfaces';\nimport { swarmCommand } from 'services/get-swarm-data';\nimport { ESignicatVerificationActions } from './types';\nimport { Modal, ModalButtons } from 'components/Modal';\nimport { Button } from 'newcomponents/UI/Button';\nimport { useEventbus } from 'newhooks/generic/useEventbus';\nimport './index.less';\n\nconst REQUEST_INTERVAL = 30000;\n\ntype TGetConfirmActionResponse = {\n  ConfirmationUrl: string;\n  IsConfirmed: null | boolean;\n  ConfirmationUrlQr?: string;\n};\n\nconst isLegitimuzVerificationType =\n  SpringConfigs.KYC_VERIFICATION_TYPE === EKycType.Legitimuz;\n\nexport const SignicatVerificationBeforeActions = () => {\n  const { t } = useTranslation();\n  const [verificationParams, setVerificationParams] = useState<{\n    shouldVerify: true;\n    email?: string;\n    callbackActionParams?: Record<string, any>;\n  } | null>(null);\n\n  const [confirmUrl, setConfirmUrl] = useState<string | null>(null);\n\n  useEventbus({\n    [ESignicatVerificationActions.Verify]: ({\n      payload\n    }: {\n      payload: {\n        email?: string;\n        callbackActionParams?: Record<string, any>;\n      };\n    }) => {\n      setVerificationParams({ shouldVerify: true, ...payload });\n    }\n  });\n\n  useEffect(() => {\n    if (verificationParams) {\n      const shouldVerifyByEmail = verificationParams.email;\n\n      const commandName = isLegitimuzVerificationType\n        ? CommandNames.GET_LEGITIMUZ_ACTION_CONFIRMATION_URL\n        : shouldVerifyByEmail\n        ? CommandNames.GET_SIGNICAT_ACTION_CONFIRMATION_URL_BY_EMAIL\n        : CommandNames.GET_SIGNICAT_ACTION_CONFIRMATION_URL;\n\n      const requestParams = shouldVerifyByEmail\n        ? { email: verificationParams.email }\n        : {};\n\n      swarmCommand(\n        commandName,\n        requestParams,\n        ({ details }: { details: TGetConfirmActionResponse }) => {\n          if (details.IsConfirmed === null && details?.ConfirmationUrl) {\n            if (details.ConfirmationUrl === 'None') {\n              showToastError(\"ConfirmationUrl is 'None'\");\n              setVerificationParams(null);\n              fireEvent({ key: ESignicatVerificationActions.Failed });\n            } else {\n              if (!isMobile() && details.ConfirmationUrlQr) {\n                setConfirmUrl(details.ConfirmationUrlQr);\n              } else {\n                setConfirmUrl(details.ConfirmationUrl);\n              }\n            }\n          } else if (details.IsConfirmed) {\n            fireEvent({\n              key: ESignicatVerificationActions.Verified,\n              payload: verificationParams.callbackActionParams\n            });\n            setVerificationParams(null);\n          }\n        },\n        null,\n        (err: TSwarmError) => {\n          setVerificationParams(null);\n          fireEvent({\n            key: ESignicatVerificationActions.Failed,\n            payload: { errMessage: err.data.result_text }\n          });\n        }\n      );\n\n      const interval = setInterval(() => {\n        swarmCommand(\n          commandName,\n          requestParams,\n          ({ details }: { details: TGetConfirmActionResponse }) => {\n            if (details.IsConfirmed) {\n              fireEvent({\n                key: ESignicatVerificationActions.Verified,\n                payload: verificationParams.callbackActionParams\n              });\n              setVerificationParams(null);\n            }\n          }\n        );\n      }, REQUEST_INTERVAL);\n\n      return () => {\n        clearInterval(interval);\n      };\n    }\n  }, [verificationParams]);\n\n  return (\n    <Modal\n      visible={!!verificationParams}\n      centered\n      closable={false}\n      zIndex={ZINDEX_MODAL}\n      maskStyle={{ zIndex: ZINDEX_MODAL - 1 }}\n      width={isMobile() ? ModalWidth.MOBILE_350 : ModalWidth.DESKTOP_420}\n      title={t('account.pendingVerificationModalTitle')}\n      image={{\n        lib: 'generic',\n        name: 'socialLoading',\n        theme: 'default',\n        color: 'var(--v3-primary-color)'\n      }}\n      className=\"signicatVerificationModal\"\n    >\n      <div className=\"signicatVerificationModal__info\">\n        <p>{t('account.pendingVerificationModalDesc')}</p>\n      </div>\n      <ModalButtons>\n        <Button\n          fullwidth\n          loading={!confirmUrl}\n          disabled={!confirmUrl}\n          type=\"primary\"\n          onClick={() => {\n            confirmUrl && window.open(confirmUrl, '_blank');\n          }}\n        >\n          {t('account.verify')}\n        </Button>\n      </ModalButtons>\n    </Modal>\n  );\n};\n","import { useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useHistory } from 'react-router-dom';\nimport { Form } from 'antd';\nimport { ModalWidth, ZINDEX_MODAL } from 'utils/constants/app/ui';\nimport SpringConfigs from 'utils/constants/swarm/spring-configs';\nimport { CommandNames } from 'utils/constants/swarm/swarm-command-names';\nimport { fireEvent } from 'utils/generic/event-bus';\nimport { isMobile } from 'utils/is-mobile';\nimport { showToastSuccess } from 'utils/swarm/swarm-success-handler';\nimport { swarmCommand } from 'services/get-swarm-data';\nimport { ESignicatVerificationActions } from 'components/Generic/__partials/SignicatVerificationBeforeActions/types';\nimport { EWrongLoginAttempts } from 'components/Generic/__partials/WrongLoginAttemptsUnlockPopup/types';\nimport { Modal, ModalButtons } from 'components/Modal';\nimport { ModalWithInput } from 'components/Modal/WithInput';\nimport { addQuery } from 'components/QueryRoute';\nimport { SolidFormItem } from 'components/SolidFormItem';\nimport { Button } from 'newcomponents/UI/Button';\nimport { Input } from 'newcomponents/UI/Input';\nimport { useSearchParams } from 'hooks/useSearchParams';\nimport { useEventbus } from 'newhooks/generic/useEventbus';\nimport './index.less';\n\nconst QUERY_PARAM_FOR_RESET_ACTION = 'wrong_login_attempts_reset';\n\nexport const WrongLoginAttemptsUnlockPopup = () => {\n  const { t } = useTranslation();\n  const history = useHistory();\n  const [form] = Form.useForm();\n\n  const { action, code } = useSearchParams();\n\n  const [successResetModalOpen, setSuccessResetModalOpen] = useState(false);\n  const [modalVisible, setModalVisible] = useState(false);\n  const [signicatVerificationErrKey, setSignicatVerificationErrKey] = useState<\n    string | null\n  >(null);\n\n  const onSubmit = (\n    params: { email: string },\n    avoidVerificationCHeck?: boolean\n  ) => {\n    if (params.email) {\n      if (\n        SpringConfigs.FACIAL_VERIFICATION_BEFORE_ACTIONS &&\n        !avoidVerificationCHeck\n      ) {\n        fireEvent({\n          key: ESignicatVerificationActions.Verify,\n          payload: {\n            email: params.email,\n            callbackActionParams: { email: params.email }\n          }\n        });\n\n        return;\n      }\n\n      swarmCommand(\n        CommandNames.SEND_WRONG_LOGIN_ATTEMPTS_RESET_CODE,\n        { email: params.email },\n        () => {\n          showToastSuccess(t('account.success'));\n          setModalVisible(false);\n          form.resetFields();\n        }\n      );\n    }\n  };\n\n  useEventbus({\n    [EWrongLoginAttempts.ShowPopup]: () => {\n      history.push(addQuery({ accounts: undefined, login: undefined }));\n      setModalVisible(true);\n    },\n    [ESignicatVerificationActions.Verified]: ({\n      payload\n    }: {\n      payload: { email: string };\n    }) => {\n      onSubmit(payload, true);\n    },\n    // @ts-ignore\n    [ESignicatVerificationActions.Failed]: ({\n      payload\n    }: {\n      payload: { errMessage: string };\n    }) => {\n      setSignicatVerificationErrKey(payload.errMessage as unknown as string);\n    }\n  });\n\n  useEffect(() => {\n    if (action === QUERY_PARAM_FOR_RESET_ACTION && code) {\n      swarmCommand(\n        CommandNames.VERIFY_WRONG_LOGIN_ATTEMPTS_RESET,\n        { confirmation_code: code },\n        () => {\n          history.push(addQuery({ code: undefined, action: undefined }));\n          setSuccessResetModalOpen(true);\n        }\n      );\n    }\n  }, [action, code]);\n\n  useEffect(() => {\n    if (signicatVerificationErrKey) {\n      form.validateFields(['email']);\n    }\n  }, [signicatVerificationErrKey]);\n\n  return (\n    <>\n      <ModalWithInput\n        singleButton\n        width={isMobile() ? ModalWidth.MOBILE_350 : ModalWidth.DESKTOP_420}\n        title={t('account.wrongLoginAttempts')}\n        description={t('account.wrongLoginAttemptsSubtitle')}\n        Image={{ lib: 'generic', name: 'attentionGeneric', theme: 'colored' }}\n        visible={modalVisible}\n        onCancel={() => {\n          setModalVisible(false);\n          form.resetFields();\n        }}\n        Input={\n          <SolidFormItem\n            name=\"email\"\n            hasFeedback\n            rules={[\n              {\n                required: true,\n                type: 'email',\n                message: t('account.emailInput')\n              },\n              {\n                validator: () => {\n                  if (signicatVerificationErrKey) {\n                    return Promise.reject(\n                      t(`swarm.${signicatVerificationErrKey}`)\n                    );\n                  } else {\n                    return Promise.resolve();\n                  }\n                }\n              }\n            ]}\n          >\n            <Input\n              placeholder={t('account.emailPlaceholder')}\n              onChange={() => {\n                if (signicatVerificationErrKey) {\n                  setSignicatVerificationErrKey(null);\n                }\n              }}\n            />\n          </SolidFormItem>\n        }\n        onFinish={onSubmit}\n        form={form}\n      />\n\n      <Modal\n        centered\n        zIndex={ZINDEX_MODAL}\n        maskStyle={{ zIndex: ZINDEX_MODAL - 1 }}\n        width={isMobile() ? ModalWidth.MOBILE_350 : ModalWidth.DESKTOP_420}\n        maskClosable\n        align=\"center\"\n        title={t('account.successMessage')}\n        visible={successResetModalOpen}\n        renderInBody\n        onCancel={() => {\n          setSuccessResetModalOpen(false);\n        }}\n        image={{\n          lib: 'generic',\n          name: 'Success',\n          theme: 'colored'\n        }}\n      >\n        <ModalButtons direction=\"column\">\n          <p className=\"loginResetSuccessDesc\">\n            {t('account.loginResetSuccess')}\n          </p>\n          <Button\n            size=\"large\"\n            type=\"primary\"\n            onClick={() => {\n              setSuccessResetModalOpen(false);\n              history.push(addQuery({ accounts: '*', login: '*' }));\n            }}\n          >\n            {t('account.login')}\n          </Button>\n        </ModalButtons>\n      </Modal>\n    </>\n  );\n};\n","import { useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useSelector } from 'react-redux';\nimport LocalStorage from 'utils/bom-dom-manipulation/local-storage';\nimport { ZINDEX_HIGH_2 } from 'utils/constants/app/ui';\nimport SpringConfigs from 'utils/constants/swarm/spring-configs';\nimport { formatAmountWithCurrency } from 'utils/generic/currency-format';\nimport { storageKeyName } from 'utils/generic/storage-key-name';\nimport { isMobile } from 'utils/is-mobile';\nimport { showToastSuccess } from 'utils/swarm/swarm-success-handler';\nimport { ICasinoCachedGames } from 'interfaces/casino-data';\nimport { Modal } from 'components/Modal';\nimport { Button } from 'newcomponents/UI/Button';\nimport { getActiveGames } from 'store/selectors/new-casino';\nimport { getUser } from 'store/selectors/user-data';\nimport './index.less';\n\nif (SpringConfigs.IS_RTL) {\n  import('./rtl.less');\n}\n\nexport const NewDepositPopup = () => {\n  const { t } = useTranslation();\n  const user = useSelector(getUser);\n  const [depositPopupVisible, setDepositPopupVisible] = useState(false);\n  const [paymentData, setPaymentData] = useState<{ amount: string } | null>(\n    null\n  );\n\n  const activeGames = useSelector(getActiveGames) as ICasinoCachedGames;\n  const isThereAnyActiveGame = Object.keys(activeGames).length > 0;\n  const location = window.location.search;\n\n  useEffect(() => {\n    const shouldDisplay = JSON.parse(\n      LocalStorage.getItem(storageKeyName('account', 'DEPOSIT_AMOUNT'))\n    );\n\n    const paymentDataStorage = JSON.parse(\n      LocalStorage.getItem(storageKeyName('account', 'PAYMENT_DATA'))\n    );\n\n    setPaymentData(paymentDataStorage);\n\n    setDepositPopupVisible(shouldDisplay);\n  }, []);\n\n  useEffect(() => {\n    if (\n      !location.includes('message=') ||\n      !isThereAnyActiveGame ||\n      !user.currency\n    ) {\n      return;\n    }\n\n    showToastSuccess(\n      `${paymentData?.amount} ${user.currency} ${t(\n        'account.successAddedToYourBallanceMessage'\n      )} `\n    );\n    LocalStorage.removeItem(storageKeyName('account', 'DEPOSIT_AMOUNT'));\n    LocalStorage.removeItem(storageKeyName('account', 'PAYMENT_DATA'));\n    setDepositPopupVisible(false);\n  }, [isThereAnyActiveGame, user]);\n\n  if (!location.includes('accounts=') || !paymentData) {\n    return null;\n  }\n\n  return (\n    <Modal\n      zIndex={ZINDEX_HIGH_2}\n      align=\"center\"\n      centered\n      title={t('account.successDepositMessage')}\n      visible={depositPopupVisible && !!user.currency}\n      className=\"paymentSuccessModal\"\n      bodyStyle={{ padding: isMobile() ? '12px' : 0 }}\n      onCancel={() => {\n        LocalStorage.removeItem(storageKeyName('account', 'DEPOSIT_AMOUNT'));\n        setDepositPopupVisible(false);\n\n        document.body.classList.remove('no-scroll');\n      }}\n      image={{ lib: 'generic', name: 'success', theme: 'colored' }}\n      renderInBody\n    >\n      <span\n        className=\"paymentSuccessModal--message\"\n        dangerouslySetInnerHTML={{\n          __html: `<span dir='ltr'>${formatAmountWithCurrency(\n            user.currency,\n            paymentData?.amount\n          )}</span>  ${t('account.successAddedToYourBallanceMessage')}`\n        }}\n      />\n\n      <div className=\"paymentSuccessModal--button\">\n        <Button\n          size=\"large\"\n          type=\"primary\"\n          block\n          onClick={() => {\n            document.body.classList.remove('no-scroll');\n            setDepositPopupVisible(false);\n            LocalStorage.removeItem(\n              storageKeyName('account', 'DEPOSIT_AMOUNT')\n            );\n            LocalStorage.removeItem(storageKeyName('account', 'PAYMENT_DATA'));\n          }}\n        >\n          {t('account.ok')}\n        </Button>\n      </div>\n    </Modal>\n  );\n};\n","import { ReactElement, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport localStorage from 'utils/bom-dom-manipulation/local-storage';\nimport {\n  CONFIRM_MODAL_PADDING,\n  CONFIRM_MODAL_WIDTH\n} from 'utils/constants/account/payment';\nimport { ZINDEX_TOOLTIP } from 'utils/constants/app/ui';\nimport SpringConfigs from 'utils/constants/swarm/spring-configs';\nimport { storageKeyName } from 'utils/generic/storage-key-name';\nimport { Modal, ModalButtons } from 'components/Modal';\nimport { Button } from 'newcomponents/UI/Button';\nimport './index.less';\n\nexport const AgePopup = (): ReactElement => {\n  const { t } = useTranslation();\n  const ENOUGH_OLD = localStorage.getItem(storageKeyName('app', 'ENOUGH_OLD'));\n  const [visible, setVisible] = useState(!JSON.parse(ENOUGH_OLD));\n\n  const [visibleNotEnoughOld, setVisibleNotEnoughOld] = useState(false);\n\n  return (\n    <Modal\n      visible={visible}\n      title={\n        visibleNotEnoughOld\n          ? t('generic.notEnoughOldTitle')\n          : t('generic.verifyAge')\n      }\n      align=\"center\"\n      image={{\n        lib: 'generic',\n        name: 'attentiongeneric',\n        theme: 'colored'\n      }}\n      padding={CONFIRM_MODAL_PADDING._0}\n      width={CONFIRM_MODAL_WIDTH._420}\n      centered\n      renderInBody\n      onCancel={() => setVisible(false)}\n      zIndex={ZINDEX_TOOLTIP}\n      closable={false}\n      maskStyle={{ backgroundColor: 'rgba(0, 0, 0, 0.88)', zIndex: 10000 }}\n    >\n      <span\n        className={\n          visibleNotEnoughOld ? 'notEnoughOldInfo__text' : 'verifyAge__text'\n        }\n        dangerouslySetInnerHTML={{\n          __html: visibleNotEnoughOld\n            ? t('generic.notEnoughOld')\n            : t('generic.minAgeInfo')\n        }}\n      />\n      {!visibleNotEnoughOld && (\n        <ModalButtons>\n          <Button\n            type=\"cancel\"\n            size=\"large\"\n            onClick={() => {\n              setVisibleNotEnoughOld(true);\n            }}\n          >\n            {t('account.no')}\n          </Button>\n          <Button\n            style={{\n              [`margin${SpringConfigs.IS_RTL ? 'Right' : 'Left'}`]: '8px'\n            }}\n            type=\"primary\"\n            size=\"large\"\n            onClick={() => {\n              localStorage.setItem(storageKeyName('app', 'ENOUGH_OLD'), 'true');\n              setVisible(false);\n            }}\n          >\n            {t('account.yes')}\n          </Button>\n        </ModalButtons>\n      )}\n    </Modal>\n  );\n};\n","import { ReactElement, Suspense, useEffect, useMemo } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useHistory } from 'react-router-dom';\nimport localStorage from 'utils/bom-dom-manipulation/local-storage';\nimport SpringConfigs from 'utils/constants/swarm/spring-configs';\nimport { lazy } from 'utils/generic/lazy';\nimport { storageKeyName } from 'utils/generic/storage-key-name';\nimport { TThemeColors } from 'interfaces/data-spot';\nimport { AddToBetslipLinkCheck } from './__partials/AddToBetslipLinkCheck';\nimport { CheckDeRealityCheck } from './__partials/CheckDeRealityCheck';\nimport { CommunityChat } from './__partials/CommunityChat';\nimport { CurrencyRelatedLogic } from './__partials/CurrencyRelatedLogic';\nimport { FetchGenericSettings } from './__partials/FetchGenericSettings';\nimport { IconsPrefetcher } from './__partials/IconsPrefetcher';\nimport { InitializeFirebase } from './__partials/InitializeFirebase';\nimport { LoginRelatedLogic } from './__partials/LoginRelatedLogic';\nimport { PopupPortal } from './__partials/PopupPortal';\nimport { PostMessageRelatedLogic } from './__partials/PostMessageRelatedLogic';\nimport { RedirectFromStatistics } from './__partials/RedirectFromStatistics';\nimport { RedirectToSingleGameView } from './__partials/RedirectToSingleGameView';\nimport { SumSubKYCVerificationCheck } from './__partials/SumSubKYCVerificationCheck';\nimport { TourWrapper } from './__partials/TourWrapper';\nimport { TurnstileCheck } from './__partials/TurnstileCheck';\nimport { BetBuilderModalGeneric } from 'components/Generic/__partials/BetBuilderModalGeneric';\nimport { DoBetRecaptcha } from 'components/Generic/__partials/DoBetRecaptcha';\nimport { GeolocationFailedPopup } from 'components/Generic/__partials/GeolocationFailedPopup';\nimport { KYCVerificationStatusBar } from 'components/Generic/__partials/KYCVerificationStatusBar';\nimport { LoyaltyDataFetcherWrapper } from 'components/Generic/__partials/LoyaltyDataFetcherWrapper';\nimport { SignicatVerificationBeforeActions } from 'components/Generic/__partials/SignicatVerificationBeforeActions';\nimport { WrongLoginAttemptsUnlockPopup } from 'components/Generic/__partials/WrongLoginAttemptsUnlockPopup';\nimport { QueryRoute } from 'components/QueryRoute';\nimport { NewDepositPopup } from 'newcomponents/Shared/account/NewDepositPopup';\nimport { AgePopup } from 'newcomponents/Shared/agePopup';\nimport { setIsDarkMode } from 'store/actions';\nimport { getIsDarkMode } from 'store/selectors/app-data';\nimport './index.less';\n\nconst { InitializeOneSignal } = lazy(\n  () =>\n    import(\n      /* webpackChunkName: \"initialize-one-signal\" */ './__partials/InitializeOneSignal'\n    )\n);\n\nconst { InitializeFastTrack } = lazy(\n  () =>\n    import(\n      /* webpackChunkName: \"initialize-fast-track\" */ './__partials/InitializeFastTrack'\n    )\n);\n\nconst { NotificationsRedirectionsHandler } = lazy(\n  () =>\n    import(\n      /* webpackChunkName: \"notifications-redirections-handler\" */ './__partials/NotificationsRedirectionsHandler'\n    )\n);\n\nconst { HooryRelatedLogic } = lazy(\n  () =>\n    import(\n      /* webpackChunkName: \"hoory-features\" */ './__partials/HooryRelatedLogic'\n    )\n);\n\nconst { BetModalCheck } = lazy(\n  () =>\n    import(\n      /* webpackChunkName: \"BetModal-Check\" */ './__partials/BetModalCheck'\n    )\n);\n\nconst { Iovation } = lazy(\n  () => import(/* webpackChunkName: \"iovation\" */ 'components/Iovation')\n);\n\nconst { GamblingAreas } = lazy(\n  () =>\n    import(/* webpackChunkName: \"gambling-areas\" */ 'components/GambleingAreas')\n);\n\nconst { CheckHomeworkData } = lazy(\n  () =>\n    import(\n      /* webpackChunkName: \"check-homework-data\" */ 'newelements/Generics/homework/checkHomeworkData'\n    )\n);\n\nconst { LogoutRelatedLogic } = lazy(\n  () =>\n    import(\n      /* webpackChunkName: \"LogoutRelatedLogic\" */ './__partials/LogoutRelatedLogic'\n    )\n);\n\nconst { IframeSportsbookLogic } = lazy(\n  () =>\n    import(\n      /* webpackChunkName: \"IframeSportsbookLogic\" */ './__partials/IframeSportsbookLogic'\n    )\n);\n\nconst { CheckUserPersonalization } = lazy(\n  () =>\n    import(\n      /* webpackChunkName: \"Check-User-Personalization\" */ './__partials/CheckUserPersonalization'\n    )\n);\n\nconst { CheckGeoComply } = lazy(\n  () =>\n    import(\n      /* webpackChunkName: \"Check-Geo-Comply\" */ './__partials/CheckGeoComply'\n    )\n);\n\nconst { BrazilMigrateKYC } = lazy(\n  () =>\n    import(\n      /* webpackChunkName: \"BrazilMigrateKYC\" */ './__partials/BrazilMigrateKYC'\n    )\n);\n\nconst { PagcorPopup } = lazy(\n  () => import(/* webpackChunkName: \"PagcorPopup\" */ './__partials/PagcorPopup')\n);\n\nconst COLOR_SET = {\n  buttonsColor: '',\n  buttonsTextColor: '',\n  themeColor: '',\n  themeTextColor: '',\n  pinnedWidgetColor: '',\n  pinnedWidgetTextColor: ''\n};\n\ntype TColorsKeys =\n  | 'buttonsColor'\n  | 'buttonsTextColor'\n  | 'themeColor'\n  | 'themeTextColor'\n  | 'pinnedWidgetColor'\n  | 'pinnedWidgetTextColor';\n\nexport const Generic = (): ReactElement | null => {\n  const location = window.location.search;\n  const dispatch = useDispatch();\n  const isDarkMode = useSelector(getIsDarkMode);\n\n  useEffect(() => {\n    const theme = localStorage.getItem(storageKeyName('app', 'THEME'));\n\n    dispatch(setIsDarkMode(theme === 'dark'));\n  }, []);\n\n  const _history = useHistory();\n\n  useEffect(() => {\n    window.fromNext && _history.replace(window.location.pathname);\n  }, [_history]);\n\n  const themingChangeColors = useMemo(() => {\n    const styleElem = getComputedStyle(document.body);\n    const colorsArray: TThemeColors = COLOR_SET;\n\n    const colorSet: TThemeColors = {\n      buttonsColor: '--v3-primary-color',\n      buttonsTextColor: '--v3-text-color',\n      themeColor: '--v3-black-0',\n      themeTextColor: '--v3-text-color',\n      pinnedWidgetColor: '--v3-primary-color',\n      pinnedWidgetTextColor: '--v3-color-on-primary'\n    };\n\n    Object.keys(colorSet).forEach(elem => {\n      colorsArray[elem as TColorsKeys] = styleElem.getPropertyValue(\n        colorSet[elem as TColorsKeys]\n      );\n    });\n\n    return { ...colorsArray };\n  }, [isDarkMode]);\n\n  useEffect(() => {\n    window.__dataspot__?.trackThemingChange?.({\n      themeColors: themingChangeColors\n    });\n  }, [themingChangeColors]);\n\n  return (\n    <>\n      {location.includes('message=') && <NewDepositPopup />}\n      {SpringConfigs.PUSH_NOTIFICATIONS_ENABLED && (\n        <Suspense>\n          <QueryRoute\n            includes={['notificationRoute']}\n            component={NotificationsRedirectionsHandler}\n          />\n        </Suspense>\n      )}\n      {SpringConfigs.GAMBLING_AREAS && !SpringConfigs.MOCKED_DATA && (\n        <Suspense>\n          <GamblingAreas />\n        </Suspense>\n      )}\n      {SpringConfigs.VERIFY_AGE_POPUP ? <AgePopup /> : null}\n      {SpringConfigs.IFRAME_SPORTSBOOK && (\n        <Suspense>\n          <IframeSportsbookLogic />\n        </Suspense>\n      )}\n      {SpringConfigs.IS_BET_SHARING_AVAILABLE && (\n        <Suspense>\n          <BetModalCheck />\n        </Suspense>\n      )}\n      {(!!SpringConfigs.SESSION_LIFE_TIME ||\n        SpringConfigs.INACTIVITY_LOGOUT_ENABLED) && (\n        <Suspense>\n          <LogoutRelatedLogic />\n        </Suspense>\n      )}\n      {SpringConfigs.FIREBASE_ENABLED && (\n        <Suspense>\n          <InitializeFirebase />\n        </Suspense>\n      )}\n      {SpringConfigs.HOMEWORK_ENABLED && (\n        <Suspense>\n          <CheckHomeworkData />\n        </Suspense>\n      )}\n      {SpringConfigs.HOORY_ENABLED && (\n        <Suspense>\n          <HooryRelatedLogic />\n        </Suspense>\n      )}\n      {SpringConfigs.IOVATION_ENABLED && (\n        <Suspense>\n          <Iovation />\n        </Suspense>\n      )}\n      {SpringConfigs.ONE_SIGNAL_APP_ID && (\n        <Suspense>\n          <InitializeOneSignal />\n        </Suspense>\n      )}\n      {SpringConfigs.USER_PERSONALIZATION_ENABLED &&\n        !SpringConfigs.MOCKED_DATA && (\n          <Suspense>\n            <CheckUserPersonalization />\n          </Suspense>\n        )}\n      {SpringConfigs.FAST_TRACK_BRAND && (\n        <Suspense>\n          <InitializeFastTrack />\n        </Suspense>\n      )}\n      {SpringConfigs.GEO_COMPLY_ENABLED && (\n        <Suspense>\n          <CheckGeoComply />\n        </Suspense>\n      )}\n      {SpringConfigs.SHOW_ADDITIONAL_CHECKBOX_FOR_LOGIN &&\n        SpringConfigs.VERIFICATION_TYPE === 1 && (\n          <Suspense>\n            <BrazilMigrateKYC />\n          </Suspense>\n        )}\n\n      {SpringConfigs.FACIAL_VERIFICATION_BEFORE_ACTIONS && (\n        <Suspense>\n          <SignicatVerificationBeforeActions />\n        </Suspense>\n      )}\n\n      {SpringConfigs.PAGCOR_POPUP && (\n        <Suspense>\n          <PagcorPopup />\n        </Suspense>\n      )}\n\n      <WrongLoginAttemptsUnlockPopup />\n      <SumSubKYCVerificationCheck />\n      <LoyaltyDataFetcherWrapper />\n      <RedirectToSingleGameView />\n      <KYCVerificationStatusBar />\n      <PostMessageRelatedLogic />\n      <GeolocationFailedPopup />\n      <RedirectFromStatistics />\n      <BetBuilderModalGeneric />\n      <AddToBetslipLinkCheck />\n      <CurrencyRelatedLogic />\n      <FetchGenericSettings />\n      <CheckDeRealityCheck />\n      <LoginRelatedLogic />\n      <DoBetRecaptcha />\n      <IconsPrefetcher />\n      <CommunityChat />\n      <PopupPortal />\n      <TurnstileCheck />\n      <TourWrapper />\n    </>\n  );\n};\n","import { ReactElement, useEffect, useLayoutEffect } from 'react';\nimport { EIconSize } from 'utils/constants/app/ui';\nimport { GlobalIcon } from 'components/GlobalIcon';\nimport './index.less';\n\n/**\n * @prop onAfterLoad: You can use this event with lazy component to track loading state.\n * @prop onBeforeLoad: This is to capture loading end state\n */\ntype Props = {\n  size?: EIconSize._16 | EIconSize._24 | EIconSize._32 | EIconSize._48;\n  className?: string;\n  onAfterLoad?: () => void;\n  onBeforeLoad?: () => void;\n  color?: string;\n};\n\nexport const Loading = ({\n  size,\n  className = '',\n  onAfterLoad,\n  onBeforeLoad,\n  color = 'var(--v3-primary-color)'\n}: Props): ReactElement => {\n  useLayoutEffect(() => onBeforeLoad?.(), []);\n\n  useEffect(() => () => onAfterLoad?.(), []);\n\n  return (\n    <div className={`loading__container ${className}`}>\n      <GlobalIcon\n        lib=\"generic\"\n        name=\"spin\"\n        theme=\"default\"\n        size={size || EIconSize._32}\n        color={color}\n      />\n    </div>\n  );\n};\n","import { useRef, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useHistory } from 'react-router-dom';\nimport qs from 'qs';\nimport { checkAndStoreFcmToken } from 'utils/account/push-notifications';\nimport { setUserLoginLimitStartTimeLS } from 'utils/account/user-info';\nimport LocalStorage from 'utils/bom-dom-manipulation/local-storage';\nimport { setCookieLoginCredentials } from 'utils/bom-dom-manipulation/login-credentials';\nimport { sendPostMessage } from 'utils/bom-dom-manipulation/send-post-message-to-iframe';\nimport SessionStorage from 'utils/bom-dom-manipulation/session-storage';\nimport { VAIX_IFRAME_ID } from 'utils/constants/app/iframe-ids';\nimport { CookieExpiration } from 'utils/constants/dateInfo/dateInfo';\nimport {\n  MILLISECONDS_IN_SECOND,\n  SECONDS_PER_MINUTE\n} from 'utils/constants/dateInfo/time-numbers';\nimport SpringConfigs from 'utils/constants/swarm/spring-configs';\nimport { storageKeyName } from 'utils/generic/storage-key-name';\nimport { loginState } from 'utils/sportsbook/api-post-message-sender';\nimport {\n  AuthData,\n  LoginResponse,\n  ProfileData\n} from 'interfaces/authentication';\nimport { AfterSignIn } from 'services/afterSignIn';\nimport {\n  getUser,\n  sendRestoreLoginPostMsg,\n  setTermsAndConditionVersion\n} from 'services/authentication';\nimport { getUserAllNotifications } from 'services/sportsbook/notifications';\nimport { getSavedLocation } from 'components/QueryRoute';\nimport { useUpdateUser } from 'hooks/auth/useUpdateUser';\nimport { setLoginLimit, setUserData, setUserLoggedIn } from 'store/actions';\nimport { setShowAdditionalInfo } from 'store/actions/app-data';\nimport { getRegFieldData } from 'store/selectors/app-data';\n\ntype TLoginCallbackProps = {\n  rememberMe: boolean;\n  userGroups?: string | null;\n  username: string | null;\n  password: string | null;\n  inPopup?: boolean;\n};\n\ntype ReturnType = {\n  loginCallback: (data: LoginResponse) => void;\n  updateAuthData: () => void;\n  isTwoFactorPopupVisible: boolean;\n  qrCodeOrigin?: string;\n};\n\nconst TWO_FACTOR_AUTHENTICATION_STATUS = 4;\n\nexport const useLoginCallback = ({\n  rememberMe,\n  userGroups,\n  inPopup\n}: TLoginCallbackProps): ReturnType => {\n  const authData = useRef<AuthData>();\n  const [isTwoFactorPopupVisible, setIsTwoFactorPopupVisible] = useState(false);\n  const [qrCodeOrigin, setQrCodeOrigin] = useState<string>();\n  const dispatch = useDispatch();\n  const history = useHistory();\n\n  const regFieldsData = useSelector(getRegFieldData);\n\n  const personalId = regFieldsData?.find(\n    field => field && field.formType === 'personalId'\n  );\n\n  const loginCallback = (data: LoginResponse) => {\n    const {\n      auth_token,\n      user_id,\n      qr_code_origin,\n      authentication_status,\n      jwe_token\n    } = data;\n\n    authData.current = {\n      auth_token,\n      user_id,\n      qr_code_origin,\n      jwe_token\n    };\n\n    if (authentication_status === TWO_FACTOR_AUTHENTICATION_STATUS) {\n      setIsTwoFactorPopupVisible(true);\n      setQrCodeOrigin(qr_code_origin);\n\n      return;\n    }\n\n    if (SpringConfigs.ADD_INFO_AFTER_LOGIN) {\n      dispatch(setShowAdditionalInfo(true));\n      LocalStorage.setItem(\n        storageKeyName('customPopup', 'SHOW_ADDITIONAL_INFO'),\n        'true'\n      );\n    }\n\n    checkAndStoreFcmToken();\n\n    updateAuthData();\n\n    sendPostMessage({ type: 'userId', value: data.user_id }, VAIX_IFRAME_ID);\n\n    window.popupIframe && sendRestoreLoginPostMsg(data);\n\n    if (SpringConfigs.IFRAME_SPORTSBOOK) {\n      loginState('loggedIn');\n    }\n\n    if (\n      SpringConfigs.LOGIN_LIMIT_POPUP ||\n      SpringConfigs.PLAYER_ACTIVITY_CHECK\n    ) {\n      setUserLoginLimitStartTimeLS();\n    }\n  };\n\n  const updateAuthData = () => {\n    LocalStorage.setItem(\n      storageKeyName('account', 'AUTH_DATA'),\n      JSON.stringify(authData.current)\n    );\n    getUser(\n      (data: ProfileData) => {\n        storeUser(data);\n\n        if (\n          data.terms_and_conditions_version !== 'v2' &&\n          SpringConfigs.SHOW_ADDITIONAL_CHECKBOX_FOR_LOGIN &&\n          SpringConfigs.VERIFICATION_TYPE === 0\n        ) {\n          setTermsAndConditionVersion('v2', () => {});\n        }\n      },\n      updateUser,\n      'login',\n      false,\n      !!(\n        personalId?.editForm.showOnEditProfile &&\n        personalId.editForm.personalIdType === '2' &&\n        personalId?.editForm.sendCPFAsDocNumber === '1'\n      )\n    );\n\n    if (SpringConfigs.PUSH_NOTIFICATIONS_ENABLED) {\n      getUserAllNotifications();\n    }\n  };\n\n  const { updateUser } = useUpdateUser();\n\n  const storeUser = (userData: ProfileData) => {\n    setCookieLoginCredentials('loginCredentials', {\n      rememberMe,\n      userGroups: userGroups || '',\n      jwe_token: authData?.current?.jwe_token || ''\n    });\n\n    dispatch(\n      setUserData({\n        ...userData,\n        last_login_date:\n          userData.last_login_date ||\n          Math.floor(new Date().getTime() / MILLISECONDS_IN_SECOND)\n      })\n    );\n    dispatch(\n      setLoginLimit((userData.session_duration || 0) * SECONDS_PER_MINUTE)\n    );\n\n    userData.active_time_in_casino &&\n      SessionStorage.setItem(\n        storageKeyName('account', 'ACTIVE_TIME_IN_CASINO'),\n        `${userData.active_time_in_casino}`\n      );\n\n    const afterSignIn = new AfterSignIn();\n    afterSignIn.setAfterExecutionCallback(() => {\n      if (afterSignIn.isActionsExist()) {\n        !inPopup && getSavedLocation();\n      } else {\n        const savedLocation = getSavedLocation();\n\n        const splitLocation = savedLocation.split('?');\n\n        const parsedQuery = qs.parse(splitLocation[1], {\n          ignoreQueryPrefix: true\n        }) as Record<string, string>;\n\n        if (parsedQuery['accounts'] && parsedQuery['login']) {\n          delete parsedQuery.accounts;\n          delete parsedQuery.login;\n        }\n\n        const updatedLocation = `${splitLocation[0]}?${qs.stringify(\n          parsedQuery\n        )}`;\n\n        history.push(updatedLocation);\n      }\n\n      dispatch(setUserLoggedIn(true));\n      LocalStorage.setItem(\n        storageKeyName('account', 'PARENT_ACCOUNT_CURRENCY'),\n        userData.currency\n      );\n\n      setCookieLoginCredentials(\n        'sbuser',\n        {\n          rememberMe,\n          userGroups: userGroups ? userGroups || '' : ''\n        },\n        CookieExpiration.DAYS_15\n      );\n    });\n    afterSignIn.executeActions();\n  };\n\n  return {\n    loginCallback,\n    updateAuthData,\n    isTwoFactorPopupVisible,\n    qrCodeOrigin\n  };\n};\n","import { FC, ReactElement } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Form, FormInstance } from 'antd';\nimport cc from 'classcat';\nimport styled from 'styled-components';\nimport { ModalPadding, ModalWidth, ZINDEX_MODAL } from 'utils/constants/app/ui';\nimport { isMobile } from 'utils/is-mobile';\nimport { Modal, ModalButtons } from 'components/Modal';\nimport { Button } from 'newcomponents/UI/Button';\n\nconst Description = styled.p`\n  margin: 12px auto 24px;\n  text-align: center;\n  color: var(--v3-black-85);\n  font-size: 14px;\n`;\n\ntype Props = {\n  title: string;\n  description: string;\n  Image:\n    | {\n        lib: string;\n        name: string;\n        theme: string;\n        size?: number;\n      }\n    | false;\n  visible: boolean;\n  onCancel: (visible: boolean) => void;\n  onFinish: (values: any) => void;\n  Input?: ReactElement;\n  singleButton?: boolean;\n  enableAutocomplete?: boolean;\n  classname?: string;\n  width?: number;\n  form?: FormInstance<any>;\n};\n\nexport const ModalWithInput: FC<Props> = ({\n  title,\n  description,\n  Input,\n  Image,\n  visible,\n  onCancel,\n  onFinish,\n  enableAutocomplete,\n  singleButton = false,\n  classname,\n  width,\n  form\n}) => {\n  const { t } = useTranslation();\n\n  return (\n    <Modal\n      className={cc([{ [`${classname}`]: !!classname }])}\n      renderInBody\n      zIndex={ZINDEX_MODAL}\n      visible={visible}\n      title={title}\n      align=\"center\"\n      image={Image}\n      padding={isMobile() ? ModalPadding.MOBILE_12 : ModalPadding.DESKTOP_24}\n      width={\n        width || (isMobile() ? ModalWidth.MOBILE_350 : ModalWidth.DESKTOP_468)\n      }\n      centered\n      onCancel={() => onCancel(false)}\n    >\n      <Description>{description}</Description>\n      <Form\n        {...(form && { form })}\n        form={form}\n        onFinish={onFinish}\n        size=\"large\"\n        {...(!enableAutocomplete && { autoComplete: 'off' })}\n      >\n        <input\n          style={{ display: 'none' }}\n          type=\"text\"\n          name=\"fakeInputForAutofill\"\n        />\n        {Input}\n        <ModalButtons>\n          {!singleButton && (\n            <Button type=\"cancel\" size=\"large\" onClick={() => onCancel(false)}>\n              {t('account.cancel')}\n            </Button>\n          )}\n          <Button type=\"primary\" size=\"large\" htmlType=\"submit\">\n            {t('account.submit')}\n          </Button>\n        </ModalButtons>\n      </Form>\n    </Modal>\n  );\n};\n","import { ReactElement } from 'react';\nimport { EIconSize } from 'utils/constants/app/ui';\nimport { GlobalIcon } from 'components/GlobalIcon';\nimport './index.less';\n\ntype TCustomHeaderProps = {\n  title: string;\n  iconLib: string;\n  iconName: string;\n  iconTheme: string;\n  onCancel?: () => void;\n};\n\nexport const CustomHeader = ({\n  title,\n  iconLib,\n  iconName,\n  iconTheme,\n  onCancel\n}: TCustomHeaderProps): ReactElement => {\n  return (\n    <div className=\"modalCustomHeader\">\n      <div className=\"modalCustomHeader__iconContainer\">\n        <GlobalIcon\n          lib={iconLib}\n          name={iconName}\n          theme={iconTheme}\n          size={EIconSize._24}\n          className=\"modalCustomHeader__icon\"\n        />\n        <span className=\"modalCustomHeader__title\">{title}</span>\n      </div>\n\n      <GlobalIcon\n        lib=\"generic\"\n        name=\"close\"\n        theme=\"default\"\n        size={EIconSize._20}\n        className=\"modal__close-icon\"\n        onClick={onCancel}\n      />\n    </div>\n  );\n};\n","import React, {\n  CSSProperties,\n  ReactElement,\n  useEffect,\n  useMemo,\n  useRef\n} from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { ModalFuncProps } from 'antd';\nimport { v4 as uuidv4 } from 'uuid';\nimport { EIconSize, ModalPadding, ModalWidth } from 'utils/constants/app/ui';\nimport { isMobile } from 'utils/is-mobile';\nimport { CustomHeader } from './CustomHeader';\nimport { GlobalIcon } from 'components/GlobalIcon';\nimport { CustomModal } from 'newcomponents/UI/CustomModal';\nimport { usePopupScrollDisable } from 'hooks/usePopupScrollDisable';\nimport { useSearchParams } from 'hooks/useSearchParams';\nimport { setOpenedModals } from 'store/actions/app-data';\nimport { getOpenedModals } from 'store/selectors/app-data';\nimport { getBetslipOpen } from 'store/selectors/betslip';\nimport './index.less';\n\ntype Props = ModalFuncProps & {\n  title?: string | React.ReactNode | null;\n  visible: boolean;\n  closable?: boolean;\n  onCancel?: (arg0: React.UIEvent<HTMLElement, MouseEvent>) => void;\n  image?:\n    | {\n        lib: string;\n        name: string;\n        theme: string;\n        size?: number;\n        color?: string;\n      }\n    | false;\n  children: React.ReactNode;\n  closeIcon?: React.ReactNode;\n  maxWidth?: number | string;\n  align?: 'left' | 'center' | 'right';\n  maskClosable?: boolean;\n  padding?: number;\n  wrapperPadding?: number;\n  width?: number | string;\n  centered?: boolean;\n  bodyStyle?: Record<string, number | string>;\n  style?: Record<string, number | string>;\n  maskStyle?: Record<string, number | string>;\n  zIndex?: number;\n  contentPadding?: number | string;\n  className?: string;\n  renderInBody?: boolean;\n  preventScrollDisable?: boolean;\n  hideBorder?: boolean;\n  destroyOnClose?: boolean;\n  getContainer?: string | false;\n  wrapperContainerPadding?: string;\n  placement?: 'top' | 'bottom' | 'left' | 'right';\n  fullPage?: boolean;\n  borderRadius?: string;\n  footer?: ReactElement | null;\n  closeIconStyle?: CSSProperties;\n  fixBody?: boolean;\n  renderCloseIconInMask?: boolean;\n  customHeader?: {\n    title: string;\n    iconLib: string;\n    iconName: string;\n    iconTheme: string;\n    onClose: () => void;\n  };\n};\n\nexport const Modal = ({\n  title,\n  image,\n  children,\n  zIndex,\n  align = 'left',\n  maxWidth = ModalWidth.MAX_1272,\n  padding,\n  wrapperPadding,\n  bodyStyle,\n  style,\n  closeIcon,\n  visible,\n  preventScrollDisable = false,\n  hideBorder,\n  destroyOnClose = true,\n  fixBody = true,\n  customHeader,\n  contentPadding,\n  wrapClassName,\n  getContainer,\n  wrapperContainerPadding,\n  placement,\n  fullPage,\n  footer,\n  maskStyle,\n  borderRadius,\n  closeIconStyle,\n  ...rest\n}: Props): ReactElement => {\n  const dispatch = useDispatch();\n  const openedModals = useSelector(getOpenedModals);\n  const open = useSelector(getBetslipOpen);\n  const modalId = useRef(uuidv4());\n  const { accounts } = useSearchParams();\n\n  const _preventScrollDisable = useMemo(() => {\n    return (\n      !!accounts ||\n      openedModals.size > 0 ||\n      (open && isMobile()) ||\n      preventScrollDisable\n    );\n  }, [accounts, openedModals.size, open, preventScrollDisable]);\n\n  usePopupScrollDisable(visible, _preventScrollDisable, fixBody);\n\n  const updateOpenedModal = (updateType: 'add' | 'delete') => {\n    if (openedModals.size) {\n      const openedModalsCopy = new Set(openedModals);\n      openedModalsCopy[updateType](modalId.current);\n      dispatch(setOpenedModals(openedModalsCopy));\n    }\n  };\n\n  useEffect(() => {\n    if (visible) {\n      updateOpenedModal('add');\n\n      return () => {\n        updateOpenedModal('delete');\n      };\n    }\n  }, [visible]);\n\n  return (\n    <CustomModal\n      {...rest}\n      hideBorder={hideBorder || false}\n      wrapClassName={wrapClassName || ''}\n      zIndex={zIndex || 0}\n      borderRadius={borderRadius}\n      maxWidth={maxWidth || ''}\n      destroyOnClose={destroyOnClose || false}\n      getContainer={getContainer || ''}\n      wrapperPadding={wrapperContainerPadding}\n      placement={placement}\n      fullPage={fullPage}\n      contentPadding={customHeader ? 0 : contentPadding ? contentPadding : 0}\n      footer={footer}\n      maskStyle={maskStyle}\n      bodyStyle={\n        bodyStyle || {\n          padding: `${customHeader ? 0 : padding ?? ModalPadding.MOBILE_12}px`,\n          textAlign: align\n        }\n      }\n      style={\n        style || {\n          borderRadius: '12px',\n          padding: `${wrapperPadding ?? ModalPadding.WRAPPER_8}px`\n        }\n      }\n      closeIcon={\n        closeIcon || (\n          <GlobalIcon\n            lib=\"generic\"\n            name=\"closeFill\"\n            theme=\"default\"\n            size={EIconSize._24}\n            className=\"modal__close-icon\"\n          />\n        )\n      }\n      visible={visible}\n      closeIconStyle={closeIconStyle}\n    >\n      {customHeader && (\n        <CustomHeader\n          iconName={customHeader.iconName}\n          iconTheme={customHeader.iconTheme}\n          iconLib={customHeader.iconLib}\n          title={customHeader.title}\n          onCancel={() => {\n            if (customHeader.onClose) {\n              customHeader.onClose();\n            }\n          }}\n        />\n      )}\n      {image && (\n        <div className=\"modalImageWrapper\">\n          <GlobalIcon\n            lib={image.lib}\n            name={image.name}\n            theme={image.theme}\n            size={image.size ? image.size : EIconSize._72}\n            color={image.color}\n            className=\"modal__icon\"\n          />\n        </div>\n      )}\n      {!!title && <div className=\"modal-title\">{title}</div>}\n      <div className=\"modal__body\">{children}</div>\n    </CustomModal>\n  );\n};\n\nexport const ModalButtons = ({\n  direction = 'row',\n  children,\n  className,\n  ...props\n}: {\n  direction?: 'row' | 'column';\n  children: React.ReactNode;\n  className?: string;\n}): ReactElement => {\n  return (\n    <div\n      className={`modal__footer ${className}`}\n      style={{ flexDirection: direction }}\n      {...props}\n    >\n      {children}\n    </div>\n  );\n};\n","import { iOSWrapperApp } from 'utils/constants/swarm/spring-configs';\n\nexport const deviceActionManager = {\n  vibrate: handleHapticFeedback\n  //Can add more managers here\n};\n\nfunction handleHapticFeedback(\n  message: 'impactLight' | 'impactMedium' | 'impactHeavy'\n) {\n  const hapticMessage = { type: message };\n\n  if (iOSWrapperApp) {\n    window?.webkit?.messageHandlers?.triggerHaptic.postMessage(hapticMessage);\n  } else {\n    if (window.triggerHaptic) {\n      window.triggerHaptic.postMessage(JSON.stringify(hapticMessage));\n    }\n  }\n}\n","import { useDispatch, useSelector } from 'react-redux';\nimport { useHistory } from 'react-router-dom';\nimport { deleteCookie } from 'utils/bom-dom-manipulation/cookies';\nimport LS from 'utils/bom-dom-manipulation/local-storage';\nimport SpringConfigs from 'utils/constants/swarm/spring-configs';\nimport { storageKeyName } from 'utils/generic/storage-key-name';\nimport { loginState } from 'utils/sportsbook/api-post-message-sender';\nimport { logout } from 'services/authentication';\nimport { FavoritePersonalization } from 'services/favorite-personalization';\nimport { addQueryInString, getSavedLocation } from 'components/QueryRoute';\nimport { setClientGamingStateInfo, setOneSignalSubId } from 'store/actions';\nimport { setUserNotifications } from 'store/actions/sport-data';\nimport { removeUserData, setUserOptIns } from 'store/actions/user-data';\nimport { getFirebaseToken, getOneSignalSubId } from 'store/selectors/app-data';\n\nexport const useAccountLogout = (params?: {\n  source: number;\n}): ((shouldRedirect?: boolean) => void) => {\n  const { clearDataFromStorage } = FavoritePersonalization();\n\n  const dispatch = useDispatch();\n  const history = useHistory();\n\n  const firebaseToken = useSelector(getFirebaseToken);\n  const oneSignalSubId = useSelector(getOneSignalSubId);\n\n  const removeUser = (shouldRedirect?: boolean) => {\n    shouldRedirect &&\n      history.push(\n        addQueryInString(getSavedLocation(), {\n          accounts: undefined,\n          login: undefined,\n          register: undefined\n        })\n      );\n    dispatch(removeUserData());\n    dispatch(setUserOptIns(null));\n    dispatch(setUserNotifications({}));\n    dispatch(setClientGamingStateInfo(null));\n\n    LS.removeItem(storageKeyName('account', 'LOGIN_LIMIT_START_TIME'));\n    LS.removeItem(storageKeyName('account', 'LOGIN_LIMIT_POPUP_START_TIME'));\n    LS.removeItem(storageKeyName('account', 'IS_LOGOUT'));\n    deleteCookie('sbuser');\n    deleteCookie('loginCredentials');\n    LS.removeItem(storageKeyName('account', 'ADDITIONAL_INFO_POPUP'));\n    LS.removeItem(storageKeyName('account', 'PARENT_ACCOUNT_CURRENCY'));\n\n    if (window.refreshWhenLoggedIn) {\n      window.mustRefreshForSessionVisibility = true;\n      window.location.reload();\n    }\n\n    if (SpringConfigs.IFRAME_SPORTSBOOK) {\n      loginState('loggedOut');\n    }\n\n    if (SpringConfigs.WRAPPER_APP && window.median?.auth) {\n      window.median.auth.delete();\n    }\n\n    if (\n      SpringConfigs.USER_PERSONALIZATION_ENABLED &&\n      !SpringConfigs.MOCKED_DATA\n    ) {\n      clearDataFromStorage();\n    }\n  };\n\n  return (shouldRedirect?: boolean) => {\n    const additionalParams: {\n      fcm_token?: string;\n      subscription_id?: string;\n    } = {};\n\n    if (firebaseToken) {\n      additionalParams.fcm_token = firebaseToken;\n    }\n\n    if (oneSignalSubId) {\n      additionalParams.subscription_id = oneSignalSubId;\n      dispatch(setOneSignalSubId(''));\n    }\n\n    logout(() => removeUser(shouldRedirect), {\n      ...additionalParams,\n      ...params\n    });\n  };\n};\n","import { useCallback, useMemo } from 'react';\nimport { useDispatch } from 'react-redux';\nimport LocalStorage from 'utils/bom-dom-manipulation/local-storage';\nimport SpringConfigs from 'utils/constants/swarm/spring-configs';\nimport { storageKeyName } from 'utils/generic/storage-key-name';\nimport { ProfileData } from 'interfaces/authentication';\nimport { useAccountLogout } from 'hooks/auth/useAccountLogout';\nimport { useFetchAccountParams } from 'newhooks/account/useFetchAccountParams';\nimport { setPendingSuperBets, updateUserData } from 'store/actions';\nimport { updateOpenBets } from 'store/actions/betslip';\n\ntype TArgs = {\n  updateUser: (userData: ProfileData) => void;\n};\n\nexport const useUpdateUser = (): TArgs => {\n  const dispatch = useDispatch();\n  const { accountParams } = useFetchAccountParams();\n  const accountLogout = useAccountLogout();\n\n  const updateUser = useCallback(\n    (userData: ProfileData) => {\n      const switchMultiAccount = LocalStorage.getItem(\n        storageKeyName('account', 'SWITCH_MULTI_ACCOUNT')\n      );\n\n      LocalStorage.removeItem(\n        storageKeyName('account', 'SWITCH_MULTI_ACCOUNT')\n      );\n\n      if (userData) {\n        if (userData.logout && !JSON.parse(switchMultiAccount)) {\n          if (\n            +accountParams?.singleSignIn ||\n            SpringConfigs.IS_MULTI_ACCOUNT_DISABLED\n          ) {\n            accountLogout(true);\n          }\n        } else {\n          dispatch(updateUserData(userData));\n\n          if (userData.super_bet) {\n            dispatch(setPendingSuperBets(userData.super_bet));\n            dispatch(updateOpenBets());\n          }\n        }\n      }\n    },\n    [accountParams?.singleSignIn]\n  );\n\n  const result = useMemo(\n    () => ({\n      updateUser\n    }),\n    [updateUser]\n  );\n\n  return result;\n};\n","import { useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport LocalStorage from 'utils/bom-dom-manipulation/local-storage';\nimport { CommandNames } from 'utils/constants/swarm/swarm-command-names';\nimport { GLOBALS } from 'utils/generic/global-variables';\nimport RidGenerator from 'utils/swarm/rid-generator';\nimport { NotificationsTypes } from 'interfaces/authentication';\nimport { BetTicketMin } from 'interfaces/bet-data';\nimport { UserTriggeringRules } from 'interfaces/notifications';\nimport {\n  authCommand,\n  subscribeToUserNotifications,\n  unsubscribeCommand\n} from 'services/authentication';\nimport {\n  setCashbackNotifications,\n  setLoyaltyNotifications\n} from 'store/actions';\nimport { updateBetTickets } from 'store/actions/betslip';\nimport { getIsLoggedIn, getUser } from 'store/selectors/user-data';\n\nexport const markAsReadNotification = (\n  id: number | number[],\n  list?: boolean\n) => {\n  authCommand(\n    {\n      command: CommandNames.MARK_AS_READ_NOTIFICATION,\n      params: { [list ? 'notification_id_list' : 'notification_id']: id },\n      rid: RidGenerator.gForCommand()\n    },\n    null\n  );\n};\n\nexport const useUserNotifications = (): void => {\n  const isLoggedIn = useSelector(getIsLoggedIn);\n  const user = useSelector(getUser);\n  const dispatch = useDispatch();\n\n  const openPopupTriggering = (data: any) => {\n    if (window.refreshWhenLoggedIn && window.mustRefreshForSessionVisibility) {\n      return false;\n    }\n\n    const popupTriggeringRules: UserTriggeringRules[] = [];\n    let popupOpened = false;\n\n    const comparision: Record<string, string> = {\n      '1': 'is',\n      '2': 'isNot',\n      '3': 'startsWith',\n      '4': 'endsWith',\n      '5': 'contains',\n      '6': 'doesNotContains'\n    };\n\n    for (const key in data) {\n      const rule: UserTriggeringRules = {};\n\n      if (\n        data[key].ClientId === user.id &&\n        data[key].Id &&\n        !data[key].Page?.Value\n      ) {\n        let openedPopupsList = LocalStorage.getItem(\n          'openedPopupsListByLanguage'\n        );\n\n        const currentLanguageId = GLOBALS.languageConfigs.id;\n        openedPopupsList = openedPopupsList ? JSON.parse(openedPopupsList) : {};\n\n        if (\n          openedPopupsList &&\n          currentLanguageId &&\n          openedPopupsList[currentLanguageId] &&\n          openedPopupsList[currentLanguageId].length &&\n          openedPopupsList[currentLanguageId].indexOf(data[key].Id) + 1\n        ) {\n          popupOpened = false;\n        } else {\n          window.openPopup?.(data[key].Alias);\n          markAsReadNotification(+key);\n          popupOpened = true;\n          break;\n        }\n      }\n\n      if (\n        data[key].ClientId === user.id &&\n        data[key].Id &&\n        data[key].Page.Comparison &&\n        data[key].Page.Value\n      ) {\n        rule.triggeringUrlValue = data[key].Page.Value;\n        rule.triggeringUrlRule =\n          comparision[data[key].Page.Comparison as keyof typeof comparision];\n        rule.alias = data[key].Alias;\n        rule.id = data[key].Id;\n        rule.enableTriggeringRule = 1;\n        rule.triggeringTime = 0;\n        rule.key = +key;\n        popupTriggeringRules.push(rule);\n      }\n    }\n\n    if (\n      !popupOpened &&\n      popupTriggeringRules.length &&\n      !window.triggeringRuleIsWorked\n    ) {\n      window.popupTriggeringRules = popupTriggeringRules;\n      window.openPopupsWithInterval?.(null, true);\n    }\n  };\n\n  const setCashbackData = (data: {\n    [key: string]: { cashback: NotificationsTypes };\n  }) => {\n    const tickets = Object.entries(data || {});\n\n    if (tickets.length) {\n      const cashbackData: Array<NotificationsTypes> = [];\n\n      tickets.forEach(([ticketId, ticket]) => {\n        if (ticket.cashback) {\n          cashbackData.push({\n            ...ticket.cashback,\n            id: +ticketId,\n            Amount: ticket.cashback.Amount || 0,\n            RewordType: ticket.cashback.RewordType || 0,\n            markAsRead: false,\n            bonusType: 'cashback'\n          });\n        }\n      });\n\n      dispatch(setCashbackNotifications(cashbackData));\n    }\n  };\n\n  const setLoyaltyData = (data: {\n    [key: string]: { LevelUpBonus: NotificationsTypes };\n  }) => {\n    const tickets = Object.entries(data || {});\n\n    if (tickets.length) {\n      const loyaltyData: Array<NotificationsTypes> = [];\n\n      tickets.forEach(([ticketId, ticket]) => {\n        if (ticket.LevelUpBonus) {\n          loyaltyData.push({\n            ...ticket.LevelUpBonus,\n            id: +ticketId,\n            Amount: ticket.LevelUpBonus.Amount || 0,\n            bonusType: 'loyalty'\n          });\n        }\n      });\n\n      dispatch(setLoyaltyNotifications(loyaltyData));\n    }\n  };\n\n  useEffect(() => {\n    const rid = RidGenerator.gForSubscribe();\n\n    if (\n      isLoggedIn &&\n      !user.pending &&\n      !window.mustRefreshForSessionVisibility\n    ) {\n      subscribeToUserNotifications(\n        (data: any) => {\n          openPopupTriggering(data);\n          setCashbackData(data);\n          setLoyaltyData(data);\n        },\n        (data: any) => {\n          if (data && data.cashout) {\n            const tickets = Object.keys(data.cashout).map(\n              (ticketId: string) =>\n                ({\n                  id: +ticketId,\n                  amount: data.cashout[ticketId].amount\n                } as BetTicketMin)\n            );\n\n            dispatch(updateBetTickets(tickets));\n          }\n\n          openPopupTriggering(data);\n          setCashbackData(data);\n          setLoyaltyData(data);\n        },\n        rid\n      );\n    }\n\n    return () => {\n      unsubscribeCommand(rid);\n    };\n  }, [isLoggedIn, user.pending]);\n};\n","import { useTranslation } from 'react-i18next';\nimport { useHistory } from 'react-router-dom';\nimport { modalAlert } from '../usePopup';\n\nexport const useBetslipNotEmptyPopup = (): { showPopup: Function } => {\n  const { t } = useTranslation();\n  const history = useHistory();\n\n  const showPopup = (onConfirm: Function) => {\n    modalAlert({\n      title: t('account.betslipIsNotEmpty'),\n      text: t('account.eventsInBetSlip'),\n      successBtn: {\n        text: t('account.replace'),\n        onClick: onConfirm\n      },\n      cancelBtn: {\n        text: t('account.cancel'),\n        onClick: () => {\n          const queryParams = new URLSearchParams(window.location.search);\n\n          if (queryParams.has('booking_id')) {\n            queryParams.delete('booking_id');\n            history.replace({\n              search: queryParams.toString()\n            });\n          }\n        }\n      },\n      closable: false\n    });\n  };\n\n  return {\n    showPopup\n  };\n};\n","import { useCallback } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { loadLadder } from 'utils/betslip/odd-formats-helper';\nimport { setOddsFormat } from 'utils/betslip/odds-format';\nimport { updateOddFormat } from 'store/actions/betslip';\nimport { getLadderLoaded, getOddFormat } from 'store/selectors/betslip';\n\nexport const useChangeOddFormat = (): ((id: number, value: string) => void) => {\n  const oddFormat = useSelector(getOddFormat);\n  const ladderLoaded = useSelector(getLadderLoaded);\n  const dispatch = useDispatch();\n\n  const handle = useCallback(\n    (id: number, value: string) => {\n      if (value && oddFormat !== id) {\n        if (value === 'fractional' && !ladderLoaded) {\n          void loadLadder(id);\n        } else {\n          dispatch(updateOddFormat(id));\n        }\n\n        setOddsFormat(value);\n      }\n    },\n    [oddFormat, ladderLoaded]\n  );\n\n  return handle;\n};\n","import { useMemo } from 'react';\nimport { useSelector } from 'react-redux';\nimport { useAccountBalanceAvailable } from './useCheckIsAccountBalanceAvailable';\nimport {\n  getIsFrenchFreeBetEnabled,\n  getUseBonusBalance\n} from 'store/selectors/betslip';\nimport { getUser } from 'store/selectors/user-data';\n\nexport function useBalance(): number {\n  const user = useSelector(getUser);\n  const useBonusBalance = useSelector(getUseBonusBalance);\n  const accountBalanceAvailable = useAccountBalanceAvailable();\n  const isFrenchFreeBetEnabled = useSelector(getIsFrenchFreeBetEnabled);\n\n  return useMemo(() => {\n    let balance = +user.balance;\n\n    if (\n      accountBalanceAvailable &&\n      useBonusBalance &&\n      (user?.bonus_balance ?? 0) >= 0\n    ) {\n      const winBalance = user?.bonus_win_balance ? user?.bonus_win_balance : 0;\n\n      const bonusBalance = user?.bonus_balance ? user?.bonus_balance : 0;\n      const frozenBalance = user?.frozen_balance ? user?.frozen_balance : 0;\n      balance = winBalance + bonusBalance + frozenBalance;\n    }\n\n    if (user.bonus_money && isFrenchFreeBetEnabled) {\n      balance = user.bonus_money;\n    }\n\n    balance = balance || +user.balance;\n\n    return balance;\n  }, [useBonusBalance, user, accountBalanceAvailable, isFrenchFreeBetEnabled]);\n}\n","import { useMemo } from 'react';\nimport { useSelector } from 'react-redux';\nimport { PartnerConfig } from 'interfaces/partner-config';\nimport { getAllLsBets, getQuickBetEnabled } from 'store/selectors/betslip';\nimport { getPartnerConfigs } from 'store/selectors/socket';\nimport { getIsLoggedIn, getUser } from 'store/selectors/user-data';\n\nexport function useAccountBalanceAvailable(checker?: boolean): boolean {\n  const user = useSelector(getUser);\n  const allLsBets = useSelector(getAllLsBets);\n  const quickBetEnabled = useSelector(getQuickBetEnabled);\n  const isLoggedIn = useSelector(getIsLoggedIn);\n  const partnerConfig = useSelector(getPartnerConfigs) as PartnerConfig;\n\n  const accountBalanceAvailable = useMemo(() => {\n    if (\n      !isLoggedIn ||\n      (!allLsBets?.length && !quickBetEnabled && !checker) ||\n      !user\n    ) {\n      return false;\n    } else {\n      if (user.sport_bonus && isLoggedIn) {\n        return true;\n      }\n\n      if (user.bonus_money && isLoggedIn) {\n        return true;\n      }\n\n      return false;\n    }\n  }, [isLoggedIn, allLsBets?.length, partnerConfig, quickBetEnabled, checker]);\n\n  return accountBalanceAvailable;\n}\n","import { useRef } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useSelector } from 'react-redux';\nimport { useHistory } from 'react-router-dom';\nimport { timeoutDuration } from 'utils/constants/dateInfo/time-numbers';\nimport SpringConfigs from 'utils/constants/swarm/spring-configs';\nimport { showToastError } from 'utils/generic/show-toast-error';\nimport { showToastWarning } from 'utils/generic/show-toast-warning';\nimport { debounce } from 'utils/helpers/debounce';\nimport { thousandSeparator } from 'utils/helpers/validators';\nimport { openParentPage } from 'utils/sportsbook/api-post-message-sender';\nimport RidGenerator from 'utils/swarm/rid-generator';\nimport { useBalance } from './useBalance';\nimport { useCurrency } from './useCurrency';\nimport { addQuery } from 'components/QueryRoute';\nimport {\n  getEditBet,\n  getIsFreeBetEnabled,\n  getIsFrenchFreeBetEnabled,\n  getUseBonusBalance\n} from 'store/selectors/betslip';\nimport { getPartnerConfigs } from 'store/selectors/socket';\nimport { getUser } from 'store/selectors/user-data';\n\nexport function useCheckStakeBalance(\n  debounceDuration: number = timeoutDuration.DURATION_500\n): (\n  contextId: string | null,\n  stake: string | number,\n  callback?: (disable: boolean) => void\n) => void {\n  const history = useHistory();\n  const { t } = useTranslation();\n  const { currencyId } = useCurrency();\n  const balance = useBalance();\n  const user = useSelector(getUser);\n  const isFreeBetEnabled = useSelector(getIsFreeBetEnabled);\n  const partnerConfigs = useSelector(getPartnerConfigs);\n  const useBonusBalance = useSelector(getUseBonusBalance);\n  const useFrenchFreeBet = useSelector(getIsFrenchFreeBetEnabled);\n  const editBet = useSelector(getEditBet);\n  const debounceId = useRef(RidGenerator.rand());\n\n  const getToDeposit = () => {\n    if (useBonusBalance || useFrenchFreeBet) {\n      return;\n    }\n\n    if (SpringConfigs.IFRAME_SPORTSBOOK) {\n      openParentPage('deposit');\n    } else {\n      history.push(addQuery({ accounts: '*', wallet: '*', deposit: '*' }));\n    }\n  };\n\n  const checkMinBetStakeLimit = (\n    stake: string | number,\n    contextId: string | null\n  ) => {\n    const betLimitMinStakeForEditBet =\n      editBet?.active &&\n      editBet?.amount &&\n      +editBet.amount + +stake <\n        (partnerConfigs?.min_bet_stakes[currencyId] || 0);\n\n    const isBetMinLimitStake =\n      +stake !== 0 &&\n      ((!editBet?.active &&\n        +stake < (partnerConfigs?.min_bet_stakes[currencyId] || 0)) ||\n        betLimitMinStakeForEditBet);\n\n    if (isBetMinLimitStake) {\n      const minLimit = t('betslip.betStakeMinLimitErrors', {\n        min_bet: thousandSeparator(\n          partnerConfigs?.min_bet_stakes[currencyId] || ''\n        ),\n        currency: currencyId\n      });\n\n      showToastWarning(\n        minLimit,\n        contextId ? document.getElementById(contextId) : document.body\n      );\n    }\n\n    return isBetMinLimitStake;\n  };\n\n  const checkInsufficientBalance = (\n    stake: string | number,\n    contextId: string | null\n  ) => {\n    const isInsufficient = +stake > (balance || user.balance);\n\n    if (isInsufficient) {\n      let balanceError = '';\n\n      if (useBonusBalance && user?.bonus_balance) {\n        balanceError = t('betslip.insufficientBonusFundError');\n      } else if (useFrenchFreeBet) {\n        balanceError = t('betslip.insufficientAccountFundError');\n      } else {\n        balanceError = t('betslip.insufficientFundError');\n      }\n\n      showToastError(\n        `<span>${balanceError}</span>`,\n        contextId ? document.getElementById(contextId) : document.body,\n        null,\n        getToDeposit,\n        { cursor: 'pointer' }\n      );\n    }\n\n    return isInsufficient;\n  };\n\n  return debounce(\n    debounceId.current,\n    (\n      contextId: string | null,\n      stake: string | number,\n      callback?: (disable: boolean) => void\n    ): void => {\n      if (stake === '' || isFreeBetEnabled) {\n        return callback?.(false);\n      }\n\n      const isBetMinLimitStake = checkMinBetStakeLimit(stake, contextId);\n      const isInsufficient = checkInsufficientBalance(stake, contextId);\n\n      callback?.(isBetMinLimitStake || isInsufficient || !Number(stake));\n    },\n    debounceDuration\n  );\n}\n","import { useEffect, useState } from 'react';\n\nexport const useDebounce = (\n  effect: Function,\n  delay: number,\n  deps: Array<any>\n) => {\n  const [isDebouncing, setIsDebouncing] = useState(false);\n\n  useEffect(() => {\n    setIsDebouncing(true);\n    const handler = setTimeout(() => {\n      effect();\n      setIsDebouncing(false);\n    }, delay);\n\n    return () => clearTimeout(handler);\n  }, [...deps, delay]);\n\n  return { isDebouncing };\n};\n","import { ReactNode, useState } from 'react';\nimport { singletonHook } from 'react-singleton-hook';\nimport { isRtl } from 'utils/constants/app/rtl';\nimport { ModalPadding, ZINDEX_HIGH_1 } from 'utils/constants/app/ui';\nimport { isMobile } from 'utils/is-mobile';\nimport { Modal, ModalButtons } from 'components/Modal';\nimport { Button } from 'newcomponents/UI/Button';\n\ntype modalProps = {\n  title?: string;\n  text: string;\n  icon?: {\n    lib: string;\n    name: string;\n    theme: string;\n  };\n  successBtn: {\n    text: string;\n    onClick: Function;\n  };\n  cancelBtn?: {\n    text: string;\n    onClick?: Function;\n  };\n  closable?: boolean;\n};\nconst initialModalsValue: [] = [];\nlet currentModals: { id: number; modal: ReactNode }[] | [] = initialModalsValue;\n\nlet globalSetModals = (data: { id: number; modal: ReactNode }[] | []): void => {\n  console.error(\n    `you must usePopup before setting its state ${data[0].id ?? ''}`\n  );\n};\n\nlet globalModalAlert = (data: modalProps): void => {\n  console.error(`you must usePopup before setting its state ${data}`);\n};\n\nconst _removeFromModal = (id: number) => {\n  if (!currentModals.length) {\n    return;\n  }\n\n  const index = currentModals?.findIndex(item => item?.id === id);\n  const res = [...currentModals];\n  res.splice(index, 1);\n  globalSetModals(res);\n};\n\nexport const usePopup = singletonHook(initialModalsValue, () => {\n  const [modals, setModals] = useState<{ id: number; modal: ReactNode }[] | []>(\n    initialModalsValue\n  );\n\n  globalSetModals = data => {\n    currentModals = data;\n    setModals(data);\n  };\n\n  globalModalAlert = (data: modalProps) => {\n    const id = modals?.length ? modals?.length + 1 : 1;\n    const closable = data.closable ?? true;\n\n    const modal = (\n      <Modal\n        maxWidth={isMobile() ? '350px' : '420px'}\n        title={data.title}\n        visible={true}\n        closable={closable}\n        maskClosable={closable}\n        key={id}\n        centered\n        wrapperPadding={\n          isMobile() ? ModalPadding.MOBILE_12 : ModalPadding.DESKTOP_24\n        }\n        onCancel={() => {\n          _removeFromModal(id);\n        }}\n        zIndex={ZINDEX_HIGH_1}\n        image={\n          data.icon\n            ? { ...data.icon }\n            : { lib: 'generic', name: 'attentionGeneric', theme: 'colored' }\n        }\n      >\n        <div className=\"modalText\">\n          <span>{data.text}</span>\n        </div>\n        <ModalButtons>\n          {!!data.cancelBtn && (\n            <Button\n              type=\"cancel\"\n              size=\"large\"\n              onClick={() => {\n                data.cancelBtn?.onClick && data.cancelBtn.onClick();\n                _removeFromModal(id);\n              }}\n            >\n              {data.cancelBtn.text}\n            </Button>\n          )}\n          <Button\n            style={{ [`margin${isRtl ? 'Right' : 'Left'}`]: '8px' }}\n            type=\"primary\"\n            size=\"large\"\n            onClick={() => {\n              data.successBtn.onClick();\n              _removeFromModal(id);\n            }}\n          >\n            {data.successBtn.text}\n          </Button>\n        </ModalButtons>\n      </Modal>\n    );\n\n    const item = {\n      id: id,\n      modal: modal\n    };\n\n    const res = modals?.length ? [...modals, item] : [item];\n\n    globalSetModals(res);\n  };\n\n  currentModals = modals;\n\n  return modals;\n});\n\nexport const modalAlert = (data: modalProps) => globalModalAlert(data);\n","import { useEffect, useRef } from 'react';\nimport { timeoutDuration } from 'utils/constants/dateInfo/time-numbers';\n\nexport const usePopupScrollDisable = (\n  condition = true,\n  preventScrollDisable?: boolean,\n  fixBody = true\n): void => {\n  const scrollPositionRef = useRef<null | number>(null);\n  useEffect(() => {\n    if (preventScrollDisable) {\n      return;\n    }\n\n    const timer = setTimeout(() => {\n      if (condition && document.body.style.overflow !== 'hidden') {\n        scrollPositionRef.current = window.scrollY;\n        document.body.style.overflow = 'hidden';\n        document.body.style.touchAction = 'none';\n\n        if (fixBody) {\n          document.documentElement.style.overflow = 'hidden';\n          document.body.style.position = 'fixed';\n        }\n      }\n    }, timeoutDuration.DURATION_200);\n\n    return () => {\n      if (preventScrollDisable) {\n        return;\n      }\n\n      clearTimeout(timer);\n      document.body.style.removeProperty('position');\n      document.body.style.removeProperty('touch-action');\n\n      if (condition) {\n        const setOverflowInterval = setInterval(() => {\n          document.body.style.overflow = '';\n          document.documentElement.style.overflow = '';\n          clearInterval(setOverflowInterval);\n        }, timeoutDuration.DURATION_100);\n\n        scrollPositionRef.current &&\n          window.scrollTo(0, scrollPositionRef.current);\n      }\n    };\n  }, [condition]);\n};\n","import { ResponseGeneric } from './generic';\n\nexport type NewCasinoCategory = {\n  id: string;\n  name: string;\n  title: string;\n  games_count: string;\n  gameCount?: string;\n  categoryId?: string;\n  badge?: string | null;\n};\n\nexport type NewCasinoProvider = {\n  name: string;\n  order: string;\n  title: string;\n  blocked_countries: string[];\n  badge: null | { title: string; class: string };\n  icon_name?: string;\n};\n\nexport type TNewCasinoDataGamesByAllGroup = {\n  count: string;\n  games: NewCasinoGameBackend[];\n};\n\nexport type TNewCasinoDataByAllGroup = {\n  status: string;\n  games: Record<string, TNewCasinoDataGamesByAllGroup>;\n};\n\nexport type TNewCasinoData = {\n  status: string;\n  count: string;\n  total_count: string;\n  games: NewCasinoGameBackend[];\n};\n\nexport type TNewCasinoDataWithCounts = {\n  status: string | number;\n  count: string;\n  total_count: string;\n  games: Record<string, { count: string }> | NewCasinoGameBackend[];\n};\n\nexport enum ENewCasinoFailedDataMessage {\n  TimeoutError = 'Timeout Error',\n  SomethingWentWrong = 'Something Went Wrong'\n}\n\nexport type TNewCasinoFailedData = {\n  status: -1;\n  message: ENewCasinoFailedDataMessage;\n};\n\nexport type NewCasinoGameBackend = {\n  active: string;\n  background?: string;\n  backgrounds: string[];\n  badge?: { title: string; class: string };\n  blocked_countries: string[];\n  blocked_currencies: string[];\n  categories: string[];\n  cats: NewCasinoGameCategory[];\n  description: string | null;\n  extearnal_game_id: string;\n  extra_category?: {\n    id: string;\n    title: string;\n    name: string;\n  };\n  feats: [];\n  features: [];\n  front_game_id: string;\n  game_options: null | string;\n  game_skin_id: string;\n  has_age_restriction: number;\n  icon_1: string;\n  icon_2: string;\n  icon_3: string;\n  icons: string[];\n  id: string;\n  markets?: string;\n  name: string;\n  provider: string;\n  provider_badge: null;\n  provider_title: string;\n  ratio: string;\n  rtp: null | string;\n  server_game_id: string;\n  show_as_provider: string;\n  status: string;\n  themes: [];\n  thms: [];\n  title: string | null;\n  types: NewCasinoGameTypes;\n};\n\nexport type NewCasinoGame = Pick<\n  NewCasinoGameBackend,\n  | 'background'\n  | 'badge'\n  | 'blocked_countries'\n  | 'blocked_currencies'\n  | 'categories'\n  | 'cats'\n  | 'description'\n  | 'extearnal_game_id'\n  | 'game_options'\n  | 'has_age_restriction'\n  | 'icon_1'\n  | 'icon_2'\n  | 'icon_3'\n  | 'id'\n  | 'name'\n  | 'provider'\n  | 'provider_title'\n  | 'types'\n>;\n\ntype NewCasinoGameTypes = {\n  realMode: number;\n  funMode?: number;\n  viewMode?: number;\n};\n\ntype NewCasinoGameCategory = {\n  id: string;\n  title: string;\n  type: string;\n};\n\nexport type NewCasinoGamesConfigs = {\n  categoryIds?: string;\n  providerIds?: string;\n  moduleId: number;\n  casinoGamesLimit: number;\n  showCategoryName: boolean;\n  showLoadMoreBtn: boolean;\n  bindWithCategories: boolean;\n  bindWithProviders: boolean;\n  groupAllByCategories: boolean;\n  loadMoreType?: number;\n  gamesRows?: number;\n  gamesPerRow: number;\n  mobileCustomSettings?: boolean;\n  mobileShowLoadMoreBtn?: boolean;\n  mobileLoadMoreType?: number;\n  mobileCasinoGamesLimit?: number;\n  mobileGamesRows?: number;\n  mobileGamesPerRow?: number;\n  mobileShowArrow?: boolean;\n  skipQueryKeysCheck?: boolean;\n};\n\nexport enum ENewCasinoGamesFetchingParamsKey {\n  Id = 'id',\n  Category = 'category'\n}\n\nexport type NewCasinoGamesFetchingParams = {\n  partner_id: number;\n  is_mobile: number;\n  lang: string;\n  country: string;\n  by_key?: ENewCasinoGamesFetchingParamsKey;\n  offset?: number;\n  limit?: number;\n  id?: string;\n  external_id?: string[];\n  use_webp: number;\n  category?: string;\n  _fake_category?: string; // this is a fake param to force the React Query to run correctly\n  _all_categories?: string; // this is a fake param to force replacing category param in case of all games count fetch\n  provider?: string;\n  search?: string;\n};\n\nexport type DecentralizedCasinoGamesFetchingParams = {\n  partnerId: number;\n  gameId: string;\n};\n\nexport type NewCasinoGamesFetchingParamsPartial =\n  Partial<NewCasinoGamesFetchingParams>;\n\nexport type CasinoLastPlayedGamesResponse = Omit<ResponseGeneric, 'details'> & {\n  details: {\n    _id: string;\n    game_ids: { _id: string }[];\n  };\n};\n\nexport type CasinoSuggestedGamesResponse = {\n  ExternalId?: number | null;\n  GameIds?: number[];\n  PlayerId?: number;\n};\n\nexport type DecentralizedCasinoGamesData = {\n  count: number;\n  status?: string;\n  games: DecentralizedCasinoGame[];\n};\nexport type DecentralizedCasinoGame = {\n  categoryId: string;\n  categories: number[];\n  externalGameId: number;\n  funMode: number;\n  icon1: string;\n  icon2: string;\n  icon3: string;\n  isMobile: number;\n  name: string;\n  providerType: number;\n  realMode: number;\n};\n\nexport type TTournamentGames = {\n  items: NewCasinoGame[];\n  total_count: string;\n};\n\nexport type IGetCasinoGamesResponse =\n  | TNewCasinoDataByAllGroup\n  | TNewCasinoData\n  | DecentralizedCasinoGamesData\n  | TNewCasinoFailedData;\n","export enum EPlayerActivityCheckerActions {\n  checkPlayerActivity = 'checkPlayerActivity'\n}\n","import { FC, memo, Suspense } from 'react';\nimport { lazy } from 'utils/generic/lazy';\nimport { isMobile } from 'utils/is-mobile';\nimport { TBetBuilderStakeInputProps } from 'newcomponents/Shared/sportsbook/BetBuilderModal/components/BetBuilderStakeInput/types';\n\nconst { BetBuilderStakeInputDesktop } = lazy(\n  () =>\n    import(\n      /* webpackChunkName: \"BetBuilderStakeInputDesktop\" */ 'newcomponents/Shared/sportsbook/BetBuilderModal/components/BetBuilderStakeInput/Desktop'\n    )\n);\n\nconst { BetBuilderStakeInputMobile } = lazy(\n  () =>\n    import(\n      /* webpackChunkName: \"BetBuilderStakeInputMobile\" */ 'newcomponents/Shared/sportsbook/BetBuilderModal/components/BetBuilderStakeInput/Mobile'\n    )\n);\n\nexport const BetBuilderStakeInput: FC<TBetBuilderStakeInputProps> = memo(\n  props => {\n    return (\n      <Suspense>\n        {isMobile() ? (\n          <BetBuilderStakeInputMobile {...props} />\n        ) : (\n          <BetBuilderStakeInputDesktop {...props} />\n        )}\n      </Suspense>\n    );\n  }\n);\n","import { useSelector } from 'react-redux';\nimport { BET_BUILDER_LANGUAGE_MAPPING } from 'utils/constants/languages/language-format';\nimport SpringConfigs from 'utils/constants/swarm/spring-configs';\nimport { getOddFormat } from 'store/selectors/betslip';\n\nexport const priceTypes = {\n  0: 'DecimalPrice',\n  1: 'FractionalPrice',\n  2: 'AmericanPrice',\n  3: 'HongKongPrice',\n  4: 'MalayPrice',\n  5: 'IndoPrice'\n};\n\nexport type TPriceTypesKeys = keyof typeof priceTypes;\n\nexport const useGenerateBetBuilderUrl = ({\n  fixtureId\n}: {\n  fixtureId: number;\n}) => {\n  const oddFormat = useSelector(getOddFormat) as unknown as TPriceTypesKeys;\n\n  const language = document.documentElement.lang.slice(\n    0,\n    2\n  ) as keyof typeof BET_BUILDER_LANGUAGE_MAPPING;\n\n  const generateBetBuilderUrl = () => {\n    if (!SpringConfigs.BET_BUILDER_URL) {\n      return '';\n    }\n\n    const odds = priceTypes[oddFormat] || priceTypes['0'];\n    const culture =\n      BET_BUILDER_LANGUAGE_MAPPING[document.documentElement.lang] ||\n      BET_BUILDER_LANGUAGE_MAPPING[language] ||\n      'en-GB';\n\n    return `${\n      SpringConfigs.BET_BUILDER_URL\n    }${fixtureId}&culture=${culture}&odds=${odds}${\n      SpringConfigs.BET_BUILDER_URL.includes('brand=') ? '' : '&brand=default'\n    }`;\n  };\n\n  return generateBetBuilderUrl();\n};\n","import {\n  ComponentProps,\n  Suspense,\n  useCallback,\n  useEffect,\n  useMemo,\n  useState\n} from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { Col, Input, Row } from 'antd';\nimport cc from 'classcat';\nimport { deviceActionManager } from 'deviceactionmanager/DeviceActionManager';\nimport { ColSizes } from 'utils/constants/app/ui';\nimport { BETSLIP_STAKE_LIMIT, SEPARATOR } from 'utils/constants/betslip';\nimport { BET_BUILDER } from 'utils/constants/betslip/bet-types';\nimport SpringConfigs from 'utils/constants/swarm/spring-configs';\nimport { CommandNames } from 'utils/constants/swarm/swarm-command-names';\nimport { fireEvent } from 'utils/generic/event-bus';\nimport { lazy } from 'utils/generic/lazy';\nimport { removeComma } from 'utils/helpers/validators';\nimport { isMobile } from 'utils/is-mobile';\nimport { BookingIds } from 'interfaces/bet-data';\nimport { swarmCommand } from 'services/get-swarm-data';\nimport { BetslipCalculationResult } from 'newelements/_Betslip/components/BetslipCalculationResult';\nimport { useBookBet } from 'newelements/_Betslip/hooks/useBookBet';\nimport { roundAmount } from 'newelements/_Betslip/utils/roundings/round-amount';\nimport { Container } from 'components/GameNameRedirection';\nimport { EPlayerActivityCheckerActions } from 'newcomponents/Shared/account/PlayerActivityChecker/types';\nimport { BetBuilderStakeInput } from 'newcomponents/Shared/sportsbook/BetBuilderModal/components/BetBuilderStakeInput';\nimport { UseGenerateBetBuilderFooterFields } from 'newcomponents/Shared/sportsbook/BetBuilderModal/hooks/useGenerateBetBuilderFooterFields';\nimport { IBetBuilderMessage } from 'newcomponents/Shared/sportsbook/BetBuilderModal/types';\nimport { Button } from 'newcomponents/UI/Button';\nimport { Divider } from 'newcomponents/UI/Divider';\nimport {\n  priceTypes,\n  TPriceTypesKeys,\n  useGenerateBetBuilderUrl\n} from 'hooks/sportsbook/useGenerateBetBuilderUrl';\nimport { useCheckStakeBalance } from 'hooks/useCheckStakeBalance';\nimport { useCurrency } from 'hooks/useCurrency';\nimport { updateOpenBets } from 'store/actions';\nimport { getLeftSidebarOpenCloseTrigger } from 'store/selectors/app-data';\nimport { getOddFormat, getUseBonusBalance } from 'store/selectors/betslip';\nimport { getIsLoggedIn, getUser } from 'store/selectors/user-data';\nimport './index.less';\n\nconst { BookingModal } = lazy(\n  () =>\n    import(\n      /* webpackChunkName: \"betslip-booking-modal\" */ 'newelements/_Betslip/layouts/Basic/components/Features/BookingBet/components/BookingModal'\n    )\n);\n\nconst { BetBuilderSuccessBetModal } = lazy(\n  () =>\n    import(\n      /* webpackChunkName: \"BetBuilderSuccessBetModal\" */ 'newcomponents/Shared/sportsbook/BetBuilderModal/components/BetBuilderSuccessBetModal'\n    )\n);\n\ntype TBetBuilderContentProps = {\n  fixtureId: number;\n  gameTitle?: string;\n  sportId?: number;\n  showTitle?: boolean;\n  scale?: boolean;\n};\n\nconst SCALABLE_IFRAME_MIN_WIDTH = 600;\nconst BB_IFRAME_WRAPPER_ID = 'bet-builder-wrapper';\n\nexport const BetBuilderContent = ({\n  gameTitle,\n  fixtureId,\n  sportId,\n  showTitle = true,\n  scale\n}: TBetBuilderContentProps) => {\n  const { t } = useTranslation();\n  const dispatch = useDispatch();\n\n  const isLoggedIn = useSelector(getIsLoggedIn);\n  const useBonusBalance = useSelector(getUseBonusBalance);\n  const user = useSelector(getUser);\n  const oddFormat = useSelector(getOddFormat) as TPriceTypesKeys;\n\n  const leftSidebarOpenCloseTrigger = useSelector(\n    getLeftSidebarOpenCloseTrigger\n  );\n\n  const [scaleValue, setScaleValue] = useState(1);\n  const [isSuccessModalOpen, setIsSuccessModalOpen] = useState(false);\n  const [bookIds, setBookIds] = useState<BookingIds>([]);\n  const [bookingModalVisible, setBookingModalVisible] = useState(false);\n  const [placeBetLoading, setPlaceBetLoading] = useState(false);\n  const [bookBetLoading, setBookBetLoading] = useState(false);\n  const [submitDisabled, setSubmitDisabled] = useState(true);\n  const [stakeAmount, setStakeAmount] = useState('');\n  const [decimalPrice, setDecimalPrice] = useState<number>(0);\n  const [betslipUid, setBetslipUid] = useState('');\n  const [betBuilderData, setBetBuilderData] = useState<string[]>([]);\n  const [priceList, setPriceList] = useState<{\n    [key: string]: string | number;\n  }>({});\n\n  const { currency, placement } = useCurrency();\n  const checkStakeBalance = useCheckStakeBalance();\n  const betBuilderUrl = useGenerateBetBuilderUrl({ fixtureId });\n  const fields = UseGenerateBetBuilderFooterFields(\n    +stakeAmount,\n    +decimalPrice,\n    sportId\n  );\n\n  const { onBookBet } = useBookBet({\n    setBookingModalVisible,\n    setBookIds: setBookIds,\n    currentType: BET_BUILDER.NAME,\n    totalStake: +stakeAmount,\n    setSystemMinCount: () => {},\n    betslipRef: { current: null },\n    betslipUid: betslipUid\n  });\n\n  const resetBetslip = () => {\n    setBetBuilderData([]);\n    setBetslipUid('');\n    setPriceList({});\n    setDecimalPrice(0);\n    changeStakeAmount('');\n  };\n\n  const changeStakeAmount = useCallback(\n    (value: string) => {\n      if (Number(removeComma(value)) >= 0) {\n        setStakeAmount(roundAmount(removeComma(value)));\n      }\n    },\n    [isLoggedIn, useBonusBalance, user]\n  );\n\n  const handlePlaceBet = useCallback(() => {\n    const amount = stakeAmount === '' ? '0' : stakeAmount;\n\n    checkStakeBalance('bet-builder-wrapper', amount, (disable: boolean) => {\n      if (!(user.balance < Number(amount) || disable)) {\n        setPlaceBetLoading(true);\n\n        swarmCommand(\n          CommandNames.SPORT_CAST_CREATE_BET,\n          {\n            betslip_uid: betslipUid,\n            amount: stakeAmount\n          },\n          () => {\n            if (SpringConfigs.WRAPPER_APP && window.median) {\n              deviceActionManager.vibrate('impactMedium');\n            }\n\n            fireEvent({\n              key: EPlayerActivityCheckerActions.checkPlayerActivity\n            });\n\n            setPlaceBetLoading(false);\n            setIsSuccessModalOpen(true);\n            dispatch(updateOpenBets());\n          },\n          () => null,\n          () => {\n            setPlaceBetLoading(false);\n          }\n        );\n      }\n    });\n  }, [betslipUid, stakeAmount]);\n\n  const inputDynamicProps = useMemo<\n    Pick<ComponentProps<typeof Input>, 'suffix' | 'prefix' | 'maxLength'>\n  >(\n    () => ({\n      [placement === 'left' ? 'prefix' : 'suffix']: <span>{currency}</span>,\n      maxLength: SEPARATOR ? BETSLIP_STAKE_LIMIT + 2 : BETSLIP_STAKE_LIMIT\n    }),\n    [placement, currency]\n  );\n\n  const handleBookBet = () => {\n    setBookBetLoading(true);\n    betslipUid && onBookBet();\n  };\n\n  const handleSuccessModalAction = useCallback(() => {\n    resetBetslip();\n    setIsSuccessModalOpen(false);\n  }, [resetBetslip]);\n\n  useEffect(() => {\n    const handler = (event: { data: string }) => {\n      try {\n        const parsedData = JSON.parse(event.data) as IBetBuilderMessage;\n\n        if (parsedData?.betslipUid) {\n          setBetslipUid(parsedData.betslipUid);\n        }\n\n        if (parsedData?.betBuilderData?.Selection) {\n          setBetBuilderData(parsedData.betBuilderData.Selection);\n        }\n\n        if (parsedData?.betBuilderData?.PriceDetails?.DecimalPrice) {\n          setPriceList(parsedData?.betBuilderData?.PriceDetails);\n          setDecimalPrice(\n            parsedData?.betBuilderData?.PriceDetails?.DecimalPrice\n          );\n        }\n      } catch (e) {\n        return;\n      }\n    };\n\n    window.addEventListener('message', handler);\n\n    return () => window.removeEventListener('message', handler);\n  }, []);\n\n  useEffect(() => {\n    checkStakeBalance(\n      'bet-builder-wrapper',\n      stakeAmount,\n      (disable: boolean) => {\n        setSubmitDisabled(\n          stakeAmount === '' || user.balance < Number(stakeAmount) || disable\n        );\n      }\n    );\n  }, [stakeAmount, user.balance, useBonusBalance]);\n\n  useEffect(() => {\n    bookingModalVisible && setBookBetLoading(false);\n  }, [bookingModalVisible]);\n\n  useEffect(() => {\n    if (scale) {\n      const containerWidth =\n        document.getElementById(BB_IFRAME_WRAPPER_ID)?.clientWidth || 0;\n\n      if (containerWidth < SCALABLE_IFRAME_MIN_WIDTH) {\n        const scaleValue = containerWidth / SCALABLE_IFRAME_MIN_WIDTH;\n\n        setScaleValue(scaleValue);\n      }\n    }\n  }, [leftSidebarOpenCloseTrigger]);\n\n  return (\n    <>\n      {bookingModalVisible && (\n        <Container>\n          <Suspense fallback={null}>\n            <BookingModal\n              visible\n              noSocialSharing\n              bookIds={bookIds}\n              onCancel={() => setBookingModalVisible(false)}\n            />\n          </Suspense>\n        </Container>\n      )}\n      {isSuccessModalOpen && (\n        <Suspense>\n          <BetBuilderSuccessBetModal\n            handleSuccessModalAction={handleSuccessModalAction}\n          />\n        </Suspense>\n      )}\n      <div\n        id={BB_IFRAME_WRAPPER_ID}\n        className=\"bbIframeWrapper\"\n        onClick={e => {\n          e.stopPropagation();\n        }}\n      >\n        {showTitle && (\n          <div className=\"bbIframeWrapper__header\">\n            <span>{`${t('sportsbook.betBuilder')} | ${gameTitle}`}</span>\n          </div>\n        )}\n        <div className=\"bbIframeWrapper__inner\">\n          {SpringConfigs.BET_BUILDER_URL ? (\n            <iframe\n              id=\"bbIframe\"\n              style={{\n                border: 0,\n                ...(scale && {\n                  minWidth: SCALABLE_IFRAME_MIN_WIDTH,\n                  transform: `scale(${scaleValue})`,\n                  transformOrigin: 'top left'\n                })\n              }}\n              height={isMobile() ? '764px' : '721px'}\n              width=\"100%\"\n              src={betBuilderUrl}\n            />\n          ) : (\n            <div className=\"bbIframeWrapper__empty\">\n              {t('generic.iframeError')}\n            </div>\n          )}\n          {betslipUid && (\n            <>\n              <div className=\"bbDisableOverlay\" />\n              <div\n                className={cc([\n                  'bbBetslip',\n                  { 'bbBetslip--mobile': isMobile() }\n                ])}\n              >\n                <div className=\"bbBetslip__remove\" onClick={resetBetslip}>\n                  <span>{t('generic.removeAll')}</span>\n                </div>\n                <Row className=\"bbBetslip__body\">\n                  <Col\n                    xl={ColSizes.SIZE_12}\n                    xs={ColSizes.SIZE_24}\n                    className={cc([\n                      'bbBetslip__body__left',\n                      { 'bbBetslip__body__left--mobile': isMobile() }\n                    ])}\n                  >\n                    <div className=\"bbBetslip__body__left__header\">\n                      <span>\n                        <span className=\"bbBetslip__body__left__header__count\">\n                          {betBuilderData?.length || 0}\n                        </span>\n                        <span className=\"bbBetslip__body__left__header__title\">\n                          {t('betslip.betslip')}\n                        </span>\n                      </span>\n                      <span className=\"bbBetslip__body__left__header__odd\">\n                        {t('account.odds')}:{' '}\n                        {priceList[priceTypes[oddFormat]] || decimalPrice}\n                      </span>\n                    </div>\n                    {betBuilderData?.map(value => {\n                      return (\n                        <div\n                          key={value}\n                          className=\"bbBetslip__body__left__header__event\"\n                        >\n                          <span>{value}</span>\n                        </div>\n                      );\n                    })}\n                  </Col>\n                  <Col\n                    xl={ColSizes.SIZE_12}\n                    xs={ColSizes.SIZE_24}\n                    className={cc([\n                      'bbBetslip__body__right',\n                      { 'bbBetslip__body__right--mobile': isMobile() }\n                    ])}\n                  >\n                    <BetBuilderStakeInput\n                      stakeAmount={stakeAmount}\n                      changeStakeAmount={changeStakeAmount}\n                      handlePlaceBet={handlePlaceBet}\n                      inputDynamicProps={inputDynamicProps}\n                      submitDisabled={submitDisabled}\n                    />\n\n                    {!isMobile() && <Divider distance={8} />}\n\n                    {fields.map(field => (\n                      <BetslipCalculationResult key={field.id} {...field} />\n                    ))}\n\n                    <div className=\"bbBetslip__body__right__submit\">\n                      {SpringConfigs.TERMINAL_MODE && (\n                        <Button\n                          type=\"cancel\"\n                          onClick={handleBookBet}\n                          loading={bookBetLoading}\n                        >\n                          {t('account.getCode')}\n                        </Button>\n                      )}\n                      <Button\n                        type=\"primary\"\n                        onClick={handlePlaceBet}\n                        disabled={submitDisabled}\n                        loading={placeBetLoading}\n                      >\n                        {t('betslip.placeBet')}\n                      </Button>\n                    </div>\n                  </Col>\n                </Row>\n              </div>\n            </>\n          )}\n        </div>\n      </div>\n    </>\n  );\n};\n","import { useMemo } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useSelector } from 'react-redux';\nimport { bankersRounding } from 'utils/betslip/bankersRounding';\nimport { ETaxTypes } from 'interfaces/betslip';\nimport { BetslipCalculationField } from 'newelements/_Betslip/hooks/generateFieldsMapping/classes';\nimport { useFormatAmount } from 'newelements/_Betslip/hooks/generateFieldsMapping/hooks/shared/useFormatAmount';\nimport { TUseGenerateBetslipFieldsReturnType } from 'newelements/_Betslip/hooks/generateFieldsMapping/types';\nimport { addSeparatorAndCut } from 'newelements/_Betslip/hooks/generateFieldsMapping/utils';\nimport { TCalculationParams } from 'newelements/_Betslip/utils/calculator';\nimport {\n  calculateBasicTaxes,\n  calculateRangeTaxes\n} from 'newelements/_Betslip/utils/calculator/calculateTaxes';\nimport { roundMultipleAmount } from 'newelements/_Betslip/utils/roundings/round-amount';\nimport { getRoundingLoading } from 'store/selectors/app-data';\nimport { getTaxes } from 'store/selectors/betslip';\n\nexport const UseGenerateBetBuilderFooterFields = (\n  stake: number,\n  odd: number,\n  sportId?: number\n) => {\n  const { t } = useTranslation();\n  const formatAmount = useFormatAmount();\n  const taxes = useSelector(getTaxes);\n  const roundingLoading = useSelector(getRoundingLoading);\n\n  const basicTaxParams: TCalculationParams = {\n    stake: stake,\n    odd: odd,\n    isEachWay: false,\n    eventId: '',\n    sportIds: sportId ? [sportId] : []\n  };\n\n  const basicTaxesResult = calculateBasicTaxes(basicTaxParams);\n\n  const rangeTaxParams = {\n    stake: basicTaxesResult.result.stake,\n    possibleWin: basicTaxesResult.result.possibleWin\n  };\n\n  const rangeTaxResult = calculateRangeTaxes(rangeTaxParams);\n\n  const fields = useMemo(() => {\n    const result: TUseGenerateBetslipFieldsReturnType = [];\n    const isTaxForStake = taxes.basic?.type === ETaxTypes.STAKE_TAX;\n\n    result.push(\n      new BetslipCalculationField(\n        t('account.stake'),\n        formatAmount(addSeparatorAndCut(stake)),\n        {\n          'data-testid': `betBuilder-stake`\n        }\n      )\n    );\n\n    const isBasicTaxesAvailable =\n      taxes.basic?.type && basicTaxesResult.taxes?.isTaxable;\n\n    if (isBasicTaxesAvailable && isTaxForStake) {\n      if (taxes.basic?.percent) {\n        const translation = t('betslip.taxAmount');\n        result.push(\n          new BetslipCalculationField(\n            `${translation} (${taxes.basic?.percent}%)`,\n            formatAmount(\n              addSeparatorAndCut(basicTaxesResult.taxes.taxAmount || 0)\n            ),\n            {\n              'data-testid': 'betBuilder-taxAmount'\n            }\n          )\n        );\n      }\n\n      const isPossibleWinTax =\n        taxes?.basic?.type &&\n        [\n          ETaxTypes.POSSIBLE_WIN_TAX,\n          ETaxTypes.POSSIBLE_WIN_TAX_WITHOUT_STAKE\n        ].includes(taxes.basic.type);\n\n      if (isPossibleWinTax) {\n        const translation = t('betslip.taxBonus');\n        result.push(\n          new BetslipCalculationField(\n            `${translation} (${taxes?.basic?.percent}%)`,\n            formatAmount(\n              addSeparatorAndCut(basicTaxesResult.taxes?.taxAmount || 0)\n            ),\n            {\n              'data-testid': 'betBuilder-taxBonus'\n            }\n          )\n        );\n      }\n    }\n\n    if (isTaxForStake) {\n      result.push(\n        new BetslipCalculationField(\n          t('account.totalStake'),\n          formatAmount(\n            addSeparatorAndCut(\n              bankersRounding(basicTaxesResult.result.stake || 0)\n            )\n          ),\n          {\n            'data-testid': 'betBuilder-totalStake'\n          }\n        )\n      );\n    }\n\n    return result;\n  }, [taxes, basicTaxesResult, stake, odd]);\n\n  const totalReturnFields = useMemo(() => {\n    const result: TUseGenerateBetslipFieldsReturnType = [];\n\n    const isTaxesAvailable =\n      !!taxes.basic?.type && !!basicTaxesResult.taxes?.isTaxable;\n\n    const isTotalReturnAlreadyDisplayedOnFooter =\n      isTaxesAvailable &&\n      (!Number(rangeTaxResult.result?.possibleWin) ||\n        !rangeTaxResult.taxes?.taxAmount);\n\n    // @Todo need to understand\n    if (!isTotalReturnAlreadyDisplayedOnFooter) {\n      const value = formatAmount(\n        addSeparatorAndCut(\n          roundMultipleAmount(\n            rangeTaxResult.result.possibleWinWithoutRangeTax || 0\n          )\n        )\n      );\n\n      result.push(\n        new BetslipCalculationField(\n          t('betslip.totalReturn'),\n          value,\n          {\n            'data-testid': 'totalReturn'\n          },\n          roundingLoading\n        )\n      );\n\n      if (isTaxesAvailable) {\n        const isProfitTax =\n          !!rangeTaxResult.taxes?.rangeTaxedPossibleWinWithoutStakeTaxAmount;\n\n        const translation = isProfitTax\n          ? 'betslip.taxProfit'\n          : 'betslip.taxAmount';\n\n        const rangeTaxAmount =\n          rangeTaxResult.taxes?.rangeTaxedPossibleWinTaxAmount ??\n          rangeTaxResult.taxes?.rangeTaxedPossibleWinWithoutStakeTaxAmount ??\n          0;\n\n        const value = formatAmount(addSeparatorAndCut(rangeTaxAmount));\n\n        result.push(\n          new BetslipCalculationField(\n            `${t(translation)} (${rangeTaxResult.taxes?.taxPercent}%)`,\n            value,\n            {\n              'data-testid': `betBuilder-${translation.replace('betslip.', '')}`\n            },\n            roundingLoading\n          )\n        );\n      }\n    }\n\n    if (isTaxesAvailable) {\n      const translation = isTotalReturnAlreadyDisplayedOnFooter\n        ? 'betslip.possibleWin'\n        : 'betslip.finalPayout';\n\n      const daraTestId = isTotalReturnAlreadyDisplayedOnFooter\n        ? 'totalReturn'\n        : 'finalPayout';\n\n      const value = formatAmount(\n        addSeparatorAndCut(\n          roundMultipleAmount(rangeTaxResult.result.possibleWin ?? 0)\n        )\n      );\n\n      result.push(\n        new BetslipCalculationField(\n          t(translation),\n          value,\n          {\n            'data-testid': daraTestId\n          },\n          roundingLoading\n        )\n      );\n    }\n\n    return result;\n  }, [\n    roundingLoading,\n    rangeTaxResult,\n    basicTaxesResult,\n    taxes,\n    formatAmount,\n    stake,\n    odd,\n    sportId\n  ]);\n\n  return [...fields, ...totalReturnFields];\n};\n","import {\n  CSSProperties,\n  memo,\n  ReactElement,\n  ReactNode,\n  SyntheticEvent,\n  useEffect,\n  useRef,\n  useState\n} from 'react';\nimport cc from 'classcat';\nimport { ZINDEX_HIGH_1 } from 'utils/constants/app/ui';\nimport SpringConfigs from 'utils/constants/swarm/spring-configs';\nimport { isMobile } from 'utils/is-mobile';\nimport { rand } from 'utils/swarm/rid-generator';\nimport { Portal } from 'components/Shared/Portal';\nimport './index.less';\n\ntype TModalProps = {\n  visible: boolean;\n  title?: ReactElement | string;\n  onCancel?: (e?: SyntheticEvent) => void;\n  width?: string | number;\n  wrapClassName: string;\n  className?: string;\n  centered?: boolean;\n  zIndex?: number;\n  style?: CSSProperties;\n  bodyStyle?: CSSProperties;\n  maskStyle?: CSSProperties;\n  maskClosable?: boolean;\n  mask?: boolean;\n  footer?: ReactElement | null;\n  closeIcon?: ReactNode;\n  renderCloseIconInMask?: boolean;\n  destroyOnClose?: boolean;\n  closable?: boolean;\n  afterClose?: () => void;\n  children: ReactNode;\n  contentPadding?: number | string;\n  maxWidth?: string | number;\n  hideBorder?: boolean;\n  getContainer?: string | false;\n  wrapperPadding?: string;\n  fullPage?: boolean;\n  placement?: 'top' | 'bottom' | 'left' | 'right' | undefined;\n  borderRadius?: string;\n  closeIconStyle?: CSSProperties;\n};\n\nif (SpringConfigs.IS_RTL) {\n  import('./rtl.less');\n}\n\nconst AFTER_CLOSE_DELAY = 300;\nconst MODAL_WRAPPER_PADDING = 24;\nconst MODAL_WRAPPER_MOBILE_PADDING = 12;\nconst randomNumberForAddBlocker = rand();\n\nexport const CustomModal = memo(\n  ({\n    visible,\n    title,\n    onCancel,\n    width,\n    wrapClassName,\n    zIndex,\n    style,\n    bodyStyle,\n    maskStyle,\n    maskClosable = true,\n    mask = true,\n    footer,\n    closeIcon,\n    destroyOnClose,\n    closable = true,\n    afterClose,\n    className,\n    contentPadding,\n    maxWidth,\n    hideBorder = true,\n    getContainer = false,\n    centered = true,\n    wrapperPadding,\n    fullPage,\n    placement,\n    borderRadius,\n    closeIconStyle,\n    renderCloseIconInMask = false,\n    children,\n    ...rest\n  }: TModalProps) => {\n    const [modalVisible, setModalVisible] = useState(visible);\n    const modalContainerRef = useRef<string | false>(getContainer);\n\n    useEffect(() => {\n      setModalVisible(visible);\n      modalContainerRef.current = getContainer || false;\n    }, [visible, getContainer]);\n\n    const handleClose = () => {\n      if (onCancel) {\n        onCancel();\n      } else {\n        closeModal();\n      }\n    };\n\n    const closeModal = () => {\n      if (destroyOnClose) {\n        setModalVisible(false);\n      }\n\n      if (afterClose && typeof afterClose === 'function') {\n        const timeout = setTimeout(() => {\n          afterClose();\n          clearTimeout(timeout);\n        }, AFTER_CLOSE_DELAY);\n      }\n    };\n\n    const handleMaskClick = () => {\n      if (maskClosable) {\n        handleClose();\n      }\n    };\n\n    const modalContent = (\n      <>\n        <div\n          {...rest}\n          className={cc([\n            'customModal',\n            {\n              visible: modalVisible,\n              customModal__notCentered: !centered,\n              customModal__left: placement === 'left',\n              customModal__right: placement === 'right',\n              customModal__top: placement === 'top',\n              customModal__bottom: placement === 'bottom'\n            },\n            `${randomNumberForAddBlocker}`\n          ])}\n          style={{ zIndex: zIndex ? zIndex : ZINDEX_HIGH_1, ...style }}\n        >\n          <div\n            className={cc([\n              'custom__modalContent',\n              {\n                [`${wrapClassName}`]: wrapClassName,\n                'custom__modalContent--mobile': isMobile()\n              }\n            ])}\n            style={{\n              width,\n              ...bodyStyle,\n              padding: `${contentPadding}px`,\n              maxWidth: `${maxWidth}${typeof maxWidth === 'string' ? '' : 'px'}`\n            }}\n          >\n            <div\n              className={className}\n              style={{\n                padding: wrapperPadding\n                  ? wrapperPadding\n                  : !isMobile()\n                  ? MODAL_WRAPPER_PADDING\n                  : MODAL_WRAPPER_MOBILE_PADDING,\n                border: `${\n                  hideBorder ? 'none' : '1px solid var(--v3-black-6)'\n                }`,\n                height: `${fullPage ? '100%' : 'unset'}`,\n                borderRadius: borderRadius\n                  ? borderRadius\n                  : 'var(--v3-border-radius-s)'\n              }}\n            >\n              {!renderCloseIconInMask && closable && (\n                <span\n                  style={closeIconStyle}\n                  className=\"custom__modalClose\"\n                  onClick={handleClose}\n                >\n                  {closeIcon}\n                </span>\n              )}\n              {!!title && (\n                <div className=\"custom__modalHeader\">\n                  <span>{title}</span>\n                </div>\n              )}\n              <div className=\"custom__modalBody\">{children}</div>\n              {footer}\n            </div>\n          </div>\n\n          {renderCloseIconInMask && closable && (\n            <span\n              style={closeIconStyle}\n              className=\"custom__modalClose\"\n              onClick={handleClose}\n            >\n              {closeIcon}\n            </span>\n          )}\n        </div>\n\n        {mask && (\n          <div\n            className={cc([\n              'custom__modalMask',\n              `${randomNumberForAddBlocker}`\n            ])}\n            style={maskStyle}\n            onClick={handleMaskClick}\n          />\n        )}\n      </>\n    );\n\n    return modalVisible ? (\n      <Portal rootId={modalContainerRef.current || ''}>{modalContent}</Portal>\n    ) : null;\n  }\n);\n","import { memo, ReactNode } from 'react';\nimport cc from 'classcat';\nimport './index.less';\n\nexport type TDividerProps = {\n  children?: ReactNode;\n  className?: string;\n  distance?: number;\n  type?: string;\n  orientation?: string;\n};\n\nexport const Divider = memo(\n  ({\n    children,\n    className = '',\n    distance = 0,\n    orientation = 'center',\n    type = 'horizontal',\n    ...props\n  }: TDividerProps) => {\n    const style = {\n      margin: type !== 'vertical' ? `${distance}px 0` : `0 ${distance}px`\n    };\n\n    return (\n      <div\n        style={style}\n        {...props}\n        className={cc([\n          'divider',\n          `divider--${type}`,\n          { [className]: className, [`divider--${orientation}`]: children }\n        ])}\n      >\n        {children && <span className=\"divider__text\">{children}</span>}\n      </div>\n    );\n  }\n);\n","import { ForwardedRef, forwardRef, ReactElement } from 'react';\nimport { Input as AntInput, InputProps as AntInputProps, InputRef } from 'antd';\nimport cc from 'classcat';\nimport { createTestId } from 'utils/helpers/create-test-id';\nimport './index.less';\n\nexport type InputProps = AntInputProps & {\n  label?: string;\n};\n\nexport const Input = forwardRef(\n  (\n    { label, className, ...props }: InputProps,\n    ref: ForwardedRef<InputRef>\n  ): ReactElement => {\n    return (\n      <div className={cc(['x-input', className])} {...createTestId('x-input')}>\n        {!!label && <div className=\"x-input__label\">{label}</div>}\n        <AntInput {...props} className={className} ref={ref} />\n      </div>\n    );\n  }\n);\n","import qs from 'qs';\nimport { UtilsAccount } from 'utils/account';\nimport LS from 'utils/bom-dom-manipulation/local-storage';\nimport { UNCATEGORIZED } from 'utils/constants/casino/casino_categories';\nimport { CUSTOM_CATEGORIES } from 'utils/constants/casino/custom-categories';\nimport { CASINO_MULTIVIEW_ENABLED_QUERY_VALUE } from 'utils/constants/casino/url-queries';\nimport SpringConfigs from 'utils/constants/swarm/spring-configs';\nimport { gameUrl } from 'utils/generic/game-url';\nimport {\n  getCasinoParams,\n  getCurrentPageArea,\n  mountPoint,\n  sbRedirect\n} from 'utils/generic/route-manipulation';\nimport { storageKeyName } from 'utils/generic/storage-key-name';\nimport { isMobile } from 'utils/is-mobile';\nimport { fromAllCapitalizedToDasherized } from 'utils/string-manipulation/dasherized-to-all-capitalized';\nimport {\n  ECasinoGameMode,\n  ECasinoGameView,\n  ECasinoGameViewOrder\n} from 'interfaces/casino-data';\nimport { NewCasinoGame } from 'interfaces/new-casino';\nimport { AFTER_SIGN_IN_ACTION_TYPES, AfterSignIn } from 'services/afterSignIn';\nimport { UtilsCasino } from './index';\nimport { browserHistory } from 'configure/history';\nimport { addQuery, saveCurrentLocation } from 'components/QueryRoute';\nimport store from 'store';\nimport { batchActions, setSelectedCasinoGame } from 'store/actions';\nimport {\n  addCachedGame,\n  addCachedGameId,\n  setCachedGameInactive,\n  setCachedGameMode,\n  setCachedGamesInactive\n} from 'store/actions/new-casino';\n\nconst RESOLVE_AFTER_SIGNIN_DURATION = 300;\nexport interface IConstructGameViewUrl {\n  game: NewCasinoGame;\n  mode: ECasinoGameMode;\n  view?: ECasinoGameView;\n  selectedCategory?: string;\n  tournament?: {\n    id: string;\n  };\n  gameIndexToChange?: 0 | 1;\n  queriesToRemove?: string[];\n}\n\nexport const constructAndRedirectToGameView = ({\n  game,\n  mode,\n  view = ECasinoGameView.SINGLE,\n  selectedCategory,\n  tournament,\n  gameIndexToChange,\n  queriesToRemove\n}: IConstructGameViewUrl): void => {\n  const isUserLoggedIn = UtilsAccount.checkIsUserLoggedIn();\n\n  // This function is responsible for redirecting out to the game page\n  const redirectToGameUrl = () => {\n    window.open(\n      gameUrl({\n        gameId: game.extearnal_game_id,\n        gameType: mode,\n        gameOptions: game.game_options\n      }),\n      '_self'\n    );\n  };\n\n  // This function is responsible for changing the route in the project session\n  const transitionToGameUrl = (\n    saveUrl?: boolean,\n    showInUrl?: boolean,\n    firstGameMode?: string\n  ) => {\n    return new Promise(resolve => {\n      !saveUrl && LS.setItem(storageKeyName('casino', 'GAMES_FETCHED'), 'true');\n\n      if (view === ECasinoGameView.SINGLE) {\n        const gameCategorySection = `${\n          SpringConfigs.DECENTRALIZED_CASINO_URL\n            ? game.cats[0]\n            : game.cats[0]?.id || UNCATEGORIZED\n        }`;\n\n        const providerSection = `${fromAllCapitalizedToDasherized(\n          game.provider_title\n        )}`;\n\n        const gameSection = `${game.id}-${\n          game.extearnal_game_id\n        }-${fromAllCapitalizedToDasherized(game.name)}`;\n\n        const categorySection = selectedCategory || CUSTOM_CATEGORIES.all.id;\n\n        const queryObj = qs.parse(window.location.search, {\n          ignoreQueryPrefix: true\n        });\n\n        const queriesToRemoveObj = (queriesToRemove || []).reduce(\n          (acc, query) => {\n            acc[query] = undefined;\n\n            return acc;\n          },\n          {} as Record<string, string | undefined>\n        );\n\n        const relativePath = [\n          categorySection,\n          gameCategorySection,\n          providerSection,\n          gameSection\n        ];\n\n        const currentPageArea = getCurrentPageArea();\n\n        if (currentPageArea && currentPageArea !== 'casino') {\n          const queryObject: Record<string, string> = {\n            mode\n          };\n\n          if (mode === 'real' && !isUserLoggedIn) {\n            queryObject.accounts = '*';\n            queryObject.login = '*';\n          }\n\n          sbRedirect(\n            `${SpringConfigs.PAGE_URLS.casino}/${\n              SpringConfigs.CASINO_MOUNT_PATH\n            }/${relativePath.join('/')}?${qs.stringify(queryObject)}`,\n            false,\n            true\n          );\n          saveCurrentLocation();\n\n          setTimeout(() => {\n            resolve(true);\n          }, RESOLVE_AFTER_SIGNIN_DURATION);\n\n          return;\n        }\n\n        if (saveUrl && (window.hasPopup || showInUrl)) {\n          const gameRoute = {\n            pathname: `${mountPoint(\n              window.getPathname(),\n              false,\n              true\n            )}/${relativePath.join('/')}`,\n            search: qs.stringify({\n              ...queryObj,\n              mode,\n              tournamentId: tournament?.id,\n              ...queriesToRemoveObj,\n              ...(showInUrl ? {} : { accounts: undefined, login: undefined })\n            })\n          };\n\n          if (showInUrl) {\n            history.pushState(\n              {},\n              '',\n              `${gameRoute.pathname}?${gameRoute.search}`\n            );\n          }\n\n          if (window.hasPopup) {\n            LS.setItem(\n              storageKeyName('casino', 'SELECTED_GAME_URL'),\n              JSON.stringify(gameRoute)\n            );\n          }\n\n          return;\n        }\n\n        store.dispatch(setSelectedCasinoGame(game));\n\n        // new way to add cached game\n        store.dispatch(addCachedGameId(game.extearnal_game_id));\n        store.dispatch(\n          batchActions(\n            setCachedGamesInactive(game.extearnal_game_id),\n            addCachedGame(game)\n          )\n        );\n        store.dispatch(setCachedGameMode({ id: game.extearnal_game_id, mode }));\n\n        if (\n          window.location.pathname.includes(\n            `/${SpringConfigs.SPORTSBOOK_MOUNT_PATH}/`\n          )\n        ) {\n          browserHistory.push({\n            pathname: `${mountPoint(window.getPathname(), false, true).replace(\n              `/${SpringConfigs.CASINO_MOUNT_PATH}`,\n              ''\n            )}`,\n            search: qs.stringify({\n              gameId: game.extearnal_game_id,\n              mode,\n              accounts: undefined,\n              login: undefined,\n              ...(!!queryObj.type && { type: queryObj.type })\n            })\n          });\n          saveCurrentLocation();\n\n          setTimeout(() => {\n            resolve(true);\n          }, RESOLVE_AFTER_SIGNIN_DURATION);\n\n          return;\n        }\n\n        browserHistory.push({\n          pathname: `${mountPoint(\n            window.getPathname(),\n            false,\n            true\n          )}/${relativePath.join('/')}`,\n          search: qs.stringify({\n            ...queryObj,\n            mode,\n            accounts: undefined,\n            login: undefined,\n            tournamentId: tournament?.id,\n            ...queriesToRemoveObj\n          })\n        });\n        saveCurrentLocation();\n\n        setTimeout(() => {\n          resolve(true);\n        }, RESOLVE_AFTER_SIGNIN_DURATION);\n\n        return;\n      }\n\n      if (view === ECasinoGameView.MULTI) {\n        const searchParams = Object.fromEntries(\n          new URLSearchParams(window.location.search)\n        );\n\n        // case when multiview is already open, and we want to change one of the games\n        if (searchParams.multiview === CASINO_MULTIVIEW_ENABLED_QUERY_VALUE) {\n          const gamesInfo =\n            UtilsCasino.extractGameInfoFromSearchParams(searchParams);\n\n          const gameToChange = gamesInfo[gameIndexToChange || 0];\n\n          store.dispatch(\n            batchActions(\n              setCachedGameInactive(gameToChange.id),\n              addCachedGame(game)\n            )\n          );\n          store.dispatch(\n            batchActions(\n              setCachedGameMode({ id: game.extearnal_game_id, mode }),\n              setCachedGameMode({\n                id: gameToChange.id,\n                mode: ECasinoGameMode.FUN\n              })\n            )\n          );\n\n          const queryToUpdate = addQuery({\n            [UtilsCasino.encodeGameIdWithPrefix(\n              gameToChange.order,\n              gameToChange.id\n            )]: undefined,\n            [UtilsCasino.encodeGameIdWithPrefix(\n              gameToChange.order,\n              game.extearnal_game_id\n            )]: mode\n          });\n\n          browserHistory.push({\n            ...queryToUpdate,\n            search: UtilsCasino.normalizeStringifiedQuery(queryToUpdate.search)\n          });\n          saveCurrentLocation();\n\n          setTimeout(() => {\n            resolve(true);\n          }, RESOLVE_AFTER_SIGNIN_DURATION);\n\n          return;\n        }\n\n        // case when multiview is not open, and we want to open it\n        const currentGameInfo = getCasinoParams();\n        const categorySection = selectedCategory || CUSTOM_CATEGORIES.all.id;\n\n        const queryObj = qs.parse(window.location.search, {\n          ignoreQueryPrefix: true\n        });\n\n        store.dispatch(addCachedGame(game));\n        store.dispatch(setCachedGameMode({ id: game.extearnal_game_id, mode }));\n\n        let pathname = `${mountPoint(\n          window.getPathname(),\n          false,\n          true\n        )}/${categorySection}`;\n\n        if (\n          window.location.pathname.includes(\n            `/${SpringConfigs.SPORTSBOOK_MOUNT_PATH}/`\n          )\n        ) {\n          delete queryObj.gameId;\n\n          pathname = pathname.replace(\n            `/${SpringConfigs.CASINO_MOUNT_PATH}/${categorySection}`,\n            ''\n          );\n        }\n\n        browserHistory.push({\n          pathname,\n          search: UtilsCasino.normalizeStringifiedQuery(\n            qs.stringify(\n              {\n                ...queryObj,\n                multiview: CASINO_MULTIVIEW_ENABLED_QUERY_VALUE,\n                [UtilsCasino.encodeGameIdWithPrefix(\n                  ECasinoGameViewOrder.FIRST,\n                  currentGameInfo.gameExternalId\n                )]: firstGameMode || searchParams.mode,\n                [UtilsCasino.encodeGameIdWithPrefix(\n                  ECasinoGameViewOrder.SECOND,\n                  game.extearnal_game_id\n                )]: mode,\n                accounts: undefined,\n                login: undefined,\n                mode: undefined\n              },\n              { addQueryPrefix: true }\n            )\n          )\n        });\n        saveCurrentLocation();\n\n        setTimeout(() => {\n          resolve(true);\n        }, RESOLVE_AFTER_SIGNIN_DURATION);\n      }\n    });\n  };\n\n  /**  CHECKS FOR REAL MODE GAME OPENING  **/\n\n  const currentPageArea = getCurrentPageArea();\n\n  if (\n    mode === ECasinoGameMode.REAL &&\n    !isUserLoggedIn &&\n    (!currentPageArea || currentPageArea === 'casino')\n  ) {\n    window.hasPopup && transitionToGameUrl(true);\n\n    const searchParams = Object.fromEntries(\n      new URLSearchParams(window.location.search)\n    );\n\n    const firstGameMode = searchParams.mode;\n\n    let query: { [key: string]: string } = { mode };\n\n    if (searchParams.multiview === CASINO_MULTIVIEW_ENABLED_QUERY_VALUE) {\n      for (const param in searchParams) {\n        if (param.indexOf(game.extearnal_game_id) >= 0) {\n          query = { [param]: mode };\n        }\n      }\n    }\n\n    UtilsAccount.openLoginView({ query });\n\n    transitionToGameUrl(true, true, firstGameMode);\n\n    const transitionFn = transitionToGameUrl.bind(\n      undefined,\n      false,\n      undefined,\n      firstGameMode\n    );\n\n    const afterSignIn = new AfterSignIn();\n    afterSignIn.appendAction(\n      AFTER_SIGN_IN_ACTION_TYPES.CONSTRUCT_CASINO_VIEW_URL,\n      transitionFn\n    );\n\n    return;\n  }\n\n  if (!SpringConfigs.CASINO_MOBILE_IFRAME && isMobile()) {\n    redirectToGameUrl();\n  } else {\n    transitionToGameUrl();\n  }\n};\n","import { ECasinoGameViewOrder } from 'interfaces/casino-data';\nimport { checkIsGameAlreadyCached } from './check-is-game-already-cached';\nimport {\n  constructAndRedirectToGameView,\n  IConstructGameViewUrl\n} from './construct-view-url';\nimport {\n  decodeGameIdWithPrefix,\n  encodeGameIdWithPrefix\n} from './encode-game-id-with-prefix';\nimport {\n  extractGameInfoFromSearchParams,\n  IGameInfo\n} from './extract-game-info-from-search-query';\nimport { getRouteLength } from './get-route-length';\nimport { normalizeStringifiedQuery } from './normalize-stringified-query';\nimport { reconstructAndRedirectToGameView } from './reconstruct-and-redirect-to-game-view';\n\ntype TUtilsCasinoProps = {\n  checkIsGameAlreadyCached: (gameId: string) => boolean;\n  constructAndRedirectToGameView: (props: IConstructGameViewUrl) => void;\n  reconstructAndRedirectToGameView: (\n    callbackAfterSignin?: () => void,\n    routeToSaveInStorage?: string\n  ) => void;\n  extractGameInfoFromSearchParams: (\n    searchParams: Record<string, string | undefined>\n  ) => IGameInfo[];\n  encodeGameIdWithPrefix: (order: ECasinoGameViewOrder, id: string) => string;\n  decodeGameIdWithPrefix: (id: string) => {\n    order: number;\n    gameId: string | number;\n  };\n  normalizeStringifiedQuery: (stringifiedQuery: string) => string;\n  getRouteLength: () => number | undefined;\n};\n\nexport const UtilsCasino: TUtilsCasinoProps = {\n  checkIsGameAlreadyCached,\n  constructAndRedirectToGameView,\n  reconstructAndRedirectToGameView,\n  extractGameInfoFromSearchParams,\n  encodeGameIdWithPrefix,\n  decodeGameIdWithPrefix,\n  normalizeStringifiedQuery,\n  getRouteLength\n};\n","import { NewCasinoGame } from 'interfaces/new-casino';\nimport store from 'store';\n\ntype TGameId = NewCasinoGame['id'];\n\nexport const checkIsGameAlreadyCached = (gameId: TGameId) => {\n  const storeState = store.getState();\n  const cachedGames = storeState.newCasinoStore.cachedGames;\n\n  return !!cachedGames[gameId]?.data;\n};\n","import { UtilsAccount } from 'utils/account';\nimport { AFTER_SIGN_IN_ACTION_TYPES, AfterSignIn } from 'services/afterSignIn';\nimport { saveCurrentLocation } from 'components/QueryRoute';\n\nexport const reconstructAndRedirectToGameView = (\n  callbackAfterSignin?: () => void,\n  routeToSaveInStorage?: string,\n  saveRouteKey?: 'casinoSingleGame' | 'login'\n) => {\n  UtilsAccount.openLoginView({\n    routeToSaveInStorage\n  });\n\n  if (saveRouteKey) {\n    saveCurrentLocation(saveRouteKey, routeToSaveInStorage);\n  } else {\n    saveCurrentLocation();\n  }\n\n  const afterSignIn = new AfterSignIn();\n  afterSignIn.appendAction(\n    AFTER_SIGN_IN_ACTION_TYPES.RECONSTRUCT_CASINO_VIEW_URL,\n    () => {\n      return new Promise(resolve => {\n        callbackAfterSignin?.();\n        resolve(true);\n      });\n    }\n  );\n};\n","import { ECasinoGameMode, ECasinoGameViewOrder } from 'interfaces/casino-data';\nimport { UtilsCasino } from './index';\n\nexport interface IGameInfo {\n  id: string;\n  mode: ECasinoGameMode;\n  order: ECasinoGameViewOrder;\n}\n\nexport const extractGameInfoFromSearchParams = (\n  searchParams: Record<string, string | undefined>\n) => {\n  const paramsTuples = Object.entries(searchParams);\n\n  return paramsTuples.reduce((acc, [key, value]) => {\n    if (\n      value &&\n      [ECasinoGameMode.REAL, ECasinoGameMode.FUN].includes(\n        value as ECasinoGameMode\n      )\n    ) {\n      const { order, gameId } = UtilsCasino.decodeGameIdWithPrefix(key);\n\n      if (!Number.isNaN(order) && !Number.isNaN(gameId)) {\n        acc.push({\n          id: `${gameId}`,\n          mode: value as ECasinoGameMode,\n          order: order\n        });\n      }\n    }\n\n    return acc;\n  }, [] as IGameInfo[]);\n};\n","import { ECasinoGameViewOrder } from 'interfaces/casino-data';\n\nexport const encodeGameIdWithPrefix = (\n  order: ECasinoGameViewOrder,\n  id: string\n) => {\n  return `${order}-${id}`;\n};\n\nexport const decodeGameIdWithPrefix = (id: string) => {\n  const [order, gameId] = id.split('-');\n\n  return {\n    order: parseInt(order),\n    gameId\n  };\n};\n","import { ECasinoGameMode, ECasinoGameViewOrder } from 'interfaces/casino-data';\n\nexport const normalizeStringifiedQuery = (stringifiedQuery: string) => {\n  const splittedQuery = stringifiedQuery.slice(1).split('&');\n  const firstGameIndex = splittedQuery.findIndex(\n    query =>\n      query.startsWith(`${ECasinoGameViewOrder.FIRST}-`) &&\n      (query.endsWith(`${ECasinoGameMode.FUN}`) ||\n        query.endsWith(`${ECasinoGameMode.REAL}`))\n  );\n\n  const secondGameIndex = splittedQuery.findIndex(\n    query =>\n      query.startsWith(`${ECasinoGameViewOrder.SECOND}-`) &&\n      (query.endsWith(`${ECasinoGameMode.FUN}`) ||\n        query.endsWith(`${ECasinoGameMode.REAL}`))\n  );\n\n  if (firstGameIndex < 0 && secondGameIndex < 0) {\n    return stringifiedQuery;\n  }\n\n  if (firstGameIndex > secondGameIndex) {\n    const temp = splittedQuery[firstGameIndex];\n    splittedQuery[firstGameIndex] = splittedQuery[secondGameIndex];\n    splittedQuery[secondGameIndex] = temp;\n  }\n\n  return `?${splittedQuery.join('&')}`;\n};\n","import SpringConfigs from 'utils/constants/swarm/spring-configs';\n\nexport const getRouteLength = () => {\n  return window\n    .getPathname()\n    .split(`/${SpringConfigs.CASINO_MOUNT_PATH}/`)?.[1]\n    ?.split('/').length;\n};\n","import { FC, memo } from 'react';\nimport type {\n  IBetslipCalculationField,\n  TBetslipCalculationPortalPlacement\n} from 'newelements/_Betslip/hooks/generateFieldsMapping/types';\nimport { Skeleton } from 'newcomponents/UI/Skeleton';\nimport './index.less';\n\nexport const BetslipCalculationResult: FC<\n  IBetslipCalculationField | TBetslipCalculationPortalPlacement\n> = memo(props => {\n  return 'label' in props ? (\n    <BetslipCalculationResultValue {...props} />\n  ) : (\n    <BetslipCalculationResultPortal {...props} />\n  );\n});\n\nconst BetslipCalculationResultValue: FC<IBetslipCalculationField> = memo(\n  ({ label, value, attributes, loading }) => {\n    return (\n      <div\n        {...(attributes || {})}\n        className={`betslipFooterItem ${attributes?.className ?? ''}`}\n      >\n        <div className=\"betslipFooterItem--label\">{label}</div>\n        <div\n          className=\"betslipFooterItem--value\"\n          {...(attributes?.['data-testid']\n            ? { 'data-testid': `${attributes?.['data-testid']}-value` }\n            : {})}\n        >\n          {loading ? (\n            <Skeleton.Input style={{ width: 60, height: 15 }} active />\n          ) : (\n            value\n          )}\n        </div>\n      </div>\n    );\n  }\n);\n\nconst BetslipCalculationResultPortal: FC<TBetslipCalculationPortalPlacement> =\n  memo(({ attributes, children }) => {\n    return <div {...attributes}>{children || null}</div>;\n  });\n","import i18n from 'i18next';\nimport { IBetslipCalculationField } from 'newelements/_Betslip/hooks/generateFieldsMapping/types';\nimport { generateSimpleId } from 'newelements/_Betslip/hooks/generateFieldsMapping/utils';\n\nexport class BetslipCalculationField implements IBetslipCalculationField {\n  id: IBetslipCalculationField['id'];\n\n  label: IBetslipCalculationField['label'];\n  value: IBetslipCalculationField['value'];\n  loading?: IBetslipCalculationField['loading'];\n  attributes: IBetslipCalculationField['attributes'];\n\n  constructor(\n    label: IBetslipCalculationField['label'],\n    value: IBetslipCalculationField['value'],\n    loading?: IBetslipCalculationField['loading']\n  );\n  constructor(\n    label: IBetslipCalculationField['label'],\n    value: IBetslipCalculationField['value'],\n    attributes?: IBetslipCalculationField['attributes']\n  );\n  constructor(\n    label: IBetslipCalculationField['label'],\n    value: IBetslipCalculationField['value'],\n    attributes: IBetslipCalculationField['attributes'],\n    loading?: IBetslipCalculationField['loading']\n  );\n  constructor(\n    label: IBetslipCalculationField['label'],\n    value: IBetslipCalculationField['value'],\n    attributesOrLoading:\n      | IBetslipCalculationField['attributes']\n      | IBetslipCalculationField['loading'],\n    _loading?: IBetslipCalculationField['loading']\n  ) {\n    this.label = i18n.t(label);\n    this.value = value;\n    this.id = generateSimpleId();\n    const loading =\n      typeof attributesOrLoading === 'boolean'\n        ? attributesOrLoading\n        : null ?? _loading;\n\n    const attributes =\n      typeof attributesOrLoading === 'boolean' ? {} : attributesOrLoading;\n\n    this.attributes = attributes;\n    this.loading = loading;\n  }\n}\n","import { useCallback } from 'react';\nimport { useSelector } from 'react-redux';\nimport { useCurrency } from 'hooks/useCurrency';\nimport { getIsLoggedIn } from 'store/selectors/user-data';\n\ntype TFormatAmount = (\n  amount: Parameters<ReturnType<typeof useCurrency>['formatAmount']>[0]\n) => ReturnType<ReturnType<typeof useCurrency>['formatAmount']>;\n\ntype TUseFormatAmount = () => TFormatAmount;\n\nexport const useFormatAmount: TUseFormatAmount = () => {\n  const isLoggedIn = useSelector(getIsLoggedIn);\n  const { formatAmount: _formatAmount } = useCurrency();\n\n  return useCallback<TFormatAmount>(\n    amount => _formatAmount(amount, isLoggedIn),\n    [isLoggedIn, _formatAmount]\n  );\n};\n","import SpringConfigs from 'utils/constants/swarm/spring-configs';\nimport { formatPrice } from 'utils/string-manipulation/format-price';\nimport { TFooterField } from 'newelements/_Betslip/hooks/generateFieldsMapping/types';\nimport { FREE_BET_AMOUNT_SELECTOR_PORTAL_ID } from 'newelements/_Betslip/utils/constants/shared';\nimport store from 'store';\n\nexport const getTestIdAttribute = (v: string): TFooterField['attributes'] => ({\n  'data-testid': v.toLowerCase().replace(' ', '-')\n});\n\nexport const generateSimpleId = (() => {\n  let prevId = 0;\n\n  return () => ++prevId;\n})();\n\nexport const getCustomFieldPortalId = (\n  prefix: string | number,\n  postfix: string\n) => `${prefix}-${postfix}`;\n\nexport const getFreeBetPortalId = (\n  eventId: string | number,\n  betslipId: string\n) =>\n  getCustomFieldPortalId(\n    eventId,\n    `${FREE_BET_AMOUNT_SELECTOR_PORTAL_ID}-${betslipId}`\n  );\n\nexport const addSeparatorAndCut = (amount: number | string) => {\n  return formatPrice(\n    amount,\n    SpringConfigs.PRICE_SEPARATOR,\n    SpringConfigs.HIDE_TRAILING_ZEROES,\n    store.getState().appData.rounding\n  );\n};\n","import {\n  Dispatch,\n  SetStateAction,\n  useCallback,\n  useEffect,\n  useId,\n  useState\n} from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useHistory } from 'react-router-dom';\nimport {\n  addBetSlipMultipleEvents,\n  betslipIsEmpty,\n  createBetslipEventsFromSwarm,\n  setBookBetIdInLs\n} from 'utils/betslip/betslip';\nimport { SYSTEM_BET_MIN_EVENTS_COUNT } from 'utils/constants/app/magic-numbers-app';\nimport {\n  BET_BUILDER,\n  BET_TYPES,\n  BETSLIP_BET_TYPES_BY_BET_NUMBER_TYPE\n} from 'utils/constants/betslip/bet-types';\nimport { showToastError } from 'utils/generic/show-toast-error';\nimport {\n  BetSlipEventObj,\n  BookBetParamsType,\n  BookingIdObject,\n  BookingIds\n} from 'interfaces/bet-data';\nimport {\n  EBetslipBetType,\n  IEventsAndGameIds,\n  ResponseBookingSelections,\n  SelectionsFromBetslip\n} from 'interfaces/betslip';\nimport { ResponseGeneric } from 'interfaces/generic';\nimport { SwarmDataBetslipEvents } from 'interfaces/sportsbook-data-levels';\nimport {\n  bookBet,\n  getEventsByBookingId,\n  getEventsReadyForBetslip\n} from 'services/bet-slip';\nimport { dispatchBetslipBetType } from 'newelements/_Betslip/utils/action-middlewares/store-actions-middlewares';\nimport { addQuery } from 'components/QueryRoute';\nimport { useBetslipNotEmptyPopup } from 'hooks/betslip/useBetlsipNotEmptyPopup';\nimport { setAfterSignInActions } from 'store/actions';\nimport {\n  setIsBookingMode,\n  setMustOpen,\n  setSystemMinCombinationsCount\n} from 'store/actions/betslip';\nimport { getAfterSignInActions } from 'store/selectors/app-data';\nimport {\n  getAllLsBets,\n  getAllStakes,\n  getSelectedSystem\n} from 'store/selectors/betslip';\nimport { getBetslip } from 'store/selectors/spec-elems';\nimport { getIsLoggedIn } from 'store/selectors/user-data';\nimport { calculateAndDispatchUpdates } from '../utils/action-middlewares/store-actions-middlewares/calculateAndDispatchUpdates';\nimport { GENERAL_FIELD_KEY } from '../utils/constants/shared';\n\ntype Props = {\n  setBookingModalVisible: (\n    value: ((prevState: boolean) => boolean) | boolean\n  ) => void;\n  setBookIds: Dispatch<SetStateAction<BookingIds>>;\n  currentType: EBetslipBetType | string;\n  totalStake: number;\n  setSystemMinCount: (\n    value: ((prevState: number | null) => number | null) | number | null\n  ) => void;\n  betslipRef: { current: HTMLElement | null | undefined };\n  betslipUid?: string;\n};\n\ntype BookBetReturn = {\n  bookId: string;\n  setBookId: (value: ((prevState: string) => string) | string) => void;\n  bookingProgress: boolean;\n  getByBookIdProgress: boolean;\n  onBookBet: () => void;\n  onSubmitBookId: () => void;\n  getEvents: () => void;\n};\n\nlet afterSignInFetcherId = '';\n\nexport const useBookBet = ({\n  setBookingModalVisible,\n  setBookIds,\n  currentType,\n  totalStake,\n  betslipRef,\n  betslipUid\n}: Props): BookBetReturn => {\n  const hookId = useId();\n\n  const dispatch = useDispatch();\n  const stakes = useSelector(getAllStakes);\n  const afterSignInActions = useSelector(getAfterSignInActions);\n  const { showPopup: showBetslipNotEmptyPopup } = useBetslipNotEmptyPopup();\n  const isLoggedIn = useSelector(getIsLoggedIn);\n  const allLsBets = useSelector(getAllLsBets);\n  // const system = useSelector(getSystem);\n  const system = useSelector(getSelectedSystem);\n  const betslipPresent = useSelector(getBetslip);\n  const { t } = useTranslation();\n  const history = useHistory();\n  const [bookId, setBookId] = useState<string>('');\n  const [bookingProgress, setBookingProgress] = useState<boolean>(false);\n  const [getByBookIdProgress, setGetByBookIdProgress] =\n    useState<boolean>(false);\n\n  const onBookBetCallback = (bookIds: BookingIds) => {\n    setBookIds(bookIds);\n    setBookingProgress(false);\n    setBookingModalVisible(true);\n  };\n\n  const onBookBetCallbackError = () => {\n    setBookIds([]);\n    setBookingProgress(false);\n    setBookingModalVisible(false);\n  };\n\n  const onBookBet = useCallback(() => {\n    const getBets = (betType: number) => {\n      if (betType === BET_TYPES.SINGLE) {\n        return allLsBets.map(({ eventId, coeficient }) => ({\n          Amount: Number(stakes.single[eventId]) || 0,\n          BetType: betType,\n          Selections: [\n            {\n              SelectionId: eventId,\n              Price: Number(coeficient)\n            }\n          ]\n        }));\n      } else if (betType === BET_BUILDER.TYPE) {\n        return [\n          {\n            BetSlipUid: betslipUid,\n            Amount: Number(totalStake) || 0,\n            BetType: BET_BUILDER.TYPE\n          }\n        ];\n      } else {\n        return allLsBets.reduce(\n          (result: BookBetParamsType, { eventId, coeficient }) => {\n            if (!result.length) {\n              result.push({\n                Amount: Number(stakes.general || 0),\n                BetType: betType,\n                Selections: [],\n                ...(betType !== BET_TYPES.SYSTEM\n                  ? {}\n                  : { SystemMinCount: system?.value })\n              });\n            }\n\n            result[0].Selections &&\n              result[0].Selections.push({\n                SelectionId: eventId,\n                Price: Number(coeficient)\n              });\n\n            return result;\n          },\n          []\n        );\n      }\n    };\n\n    const promises: Promise<BookingIdObject>[] = [];\n\n    setBookingProgress(true);\n\n    switch (currentType) {\n      case EBetslipBetType.SINGLE:\n        getBets(BET_TYPES.SINGLE).forEach(bet => {\n          promises.push(\n            new Promise((resolve: (value: BookingIdObject) => void) => {\n              bookBet(\n                [bet],\n                (data: ResponseGeneric) => {\n                  resolve({\n                    booking_id: data.details.Id,\n                    selection_id:\n                      bet.Selections && bet.Selections[0].SelectionId\n                  });\n                },\n                onBookBetCallbackError\n              );\n            })\n          );\n        });\n        Promise.all(promises).then(bookIds => {\n          onBookBetCallback(bookIds);\n        });\n        break;\n      case EBetslipBetType.CHAIN:\n      case EBetslipBetType.MULTIPLE:\n        {\n          const betTypeKey =\n            currentType === EBetslipBetType.CHAIN\n              ? 'CHAIN'\n              : ('MULTIPLE' as keyof typeof BET_TYPES);\n\n          bookBet(\n            getBets(BET_TYPES[betTypeKey]),\n            (data: ResponseGeneric) => {\n              onBookBetCallback([{ booking_id: data.details.Id }]);\n            },\n            onBookBetCallbackError\n          );\n        }\n\n        break;\n\n      case EBetslipBetType.SYSTEM:\n        bookBet(\n          getBets(BET_TYPES.SYSTEM),\n          (data: ResponseGeneric) => {\n            onBookBetCallback([{ booking_id: data.details.Id }]);\n          },\n          onBookBetCallbackError\n        );\n        break;\n      case BET_BUILDER.NAME:\n        bookBet(\n          getBets(BET_BUILDER.TYPE),\n          (data: ResponseGeneric) => {\n            onBookBetCallback([{ booking_id: data.details.Id }]);\n          },\n          onBookBetCallbackError\n        );\n        break;\n      default:\n        break;\n    }\n  }, [allLsBets, currentType, stakes, totalStake, system, betslipUid]);\n\n  useEffect(() => {\n    if (!afterSignInFetcherId) {\n      afterSignInFetcherId = hookId;\n    }\n\n    if (\n      afterSignInActions.bookBetId &&\n      isLoggedIn &&\n      !window.mustRefreshForSessionVisibility &&\n      afterSignInFetcherId === hookId\n    ) {\n      betslipPresent && dispatch(setMustOpen(true));\n      getEvents(afterSignInActions.bookBetId);\n      const afterSignInActionsCopy = Object.assign({}, afterSignInActions);\n      delete afterSignInActionsCopy.bookBetId;\n      dispatch(setAfterSignInActions(afterSignInActionsCopy));\n    }\n  }, [isLoggedIn, afterSignInActions.bookBetId]);\n\n  const onSubmitBookId = useCallback(() => {\n    if (!isLoggedIn) {\n      history.push(addQuery({ accounts: '*', login: '*' }));\n\n      dispatch(\n        setAfterSignInActions({\n          ...afterSignInActions,\n          bookBetId: bookId\n        })\n      );\n    } else {\n      getEvents();\n    }\n  }, [bookId, isLoggedIn, afterSignInActions]);\n\n  const getEvents = (id: string | null = null) => {\n    setGetByBookIdProgress(true);\n    getEventsByBookingId(\n      id || bookId,\n      (data: ResponseBookingSelections) => {\n        setGetByBookIdProgress(false);\n\n        if (\n          typeof data.details === 'string' ||\n          !Object.keys(data.details).length\n        ) {\n          showToastError(t('betslip.wrongBookId'), betslipRef.current);\n\n          return;\n        }\n\n        const eventsAndGames: IEventsAndGameIds[] =\n          data.details.bets[0].selections?.map(\n            ({ match_id, selection_id }) => ({\n              gameId: match_id,\n              eventId: selection_id\n            })\n          );\n\n        getEventsReadyForBetslip(\n          eventsAndGames,\n          (betslipEventsData: { data: SwarmDataBetslipEvents }) => {\n            if (!Object.keys(betslipEventsData.data.sport).length) {\n              showToastError(t('betslip.bookIdExpired'), betslipRef.current);\n\n              return;\n            }\n\n            if (betslipIsEmpty()) {\n              afterSubmitBookId(\n                data,\n                betslipEventsData.data,\n                eventsAndGames.length\n              );\n            } else {\n              showBetslipNotEmptyPopup(() => {\n                afterSubmitBookId(\n                  data,\n                  betslipEventsData.data,\n                  eventsAndGames.length\n                );\n              });\n            }\n          }\n        );\n      },\n      (errorData: any) => {\n        showToastError(errorData.data || errorData.msg, betslipRef.current);\n        setGetByBookIdProgress(false);\n      }\n    );\n  };\n\n  const afterSubmitBookId = (\n    bookingData: ResponseBookingSelections,\n    betslipEventsData: SwarmDataBetslipEvents,\n    originalEventsLength: number\n  ) => {\n    const betslipReadyEvents = createBetslipEventsFromSwarm(betslipEventsData);\n\n    if (\n      bookingData.details.match_ids &&\n      bookingData.details.bets[0].bet_type === EBetslipBetType.CHAIN\n    ) {\n      const betslipEventsToSort = betslipReadyEvents.splice(\n        0,\n        betslipReadyEvents.length\n      );\n\n      bookingData.details.match_ids.forEach(matchId => {\n        const event = betslipEventsToSort.find(\n          ({ gameId }) => gameId === matchId\n        ) as BetSlipEventObj;\n\n        event && betslipReadyEvents.push(event);\n      });\n    }\n\n    const {\n      bets: [{ system_min_count: selectedSystem }],\n      bets: [{ amount }],\n      bets: [{ bet_type }]\n    } = bookingData.details as SelectionsFromBetslip;\n\n    addBetSlipMultipleEvents(betslipReadyEvents, true);\n\n    if (\n      betslipReadyEvents.length === bookingData.details.match_ids.length &&\n      selectedSystem\n    ) {\n      // @Todo maybe need to rename\n      dispatch(setSystemMinCombinationsCount(selectedSystem));\n    }\n\n    if (\n      !(\n        (bet_type === EBetslipBetType.SYSTEM &&\n          betslipReadyEvents.length < SYSTEM_BET_MIN_EVENTS_COUNT) ||\n        ([EBetslipBetType.MULTIPLE, EBetslipBetType.CHAIN].includes(bet_type) &&\n          betslipReadyEvents.length < 2)\n      )\n    ) {\n      dispatchBetslipBetType(\n        BETSLIP_BET_TYPES_BY_BET_NUMBER_TYPE[bet_type as unknown as number]\n      );\n    }\n\n    if (amount) {\n      calculateAndDispatchUpdates({\n        id: GENERAL_FIELD_KEY,\n        stake: `${amount}`\n      });\n\n      if (betslipReadyEvents.length === 1) {\n        calculateAndDispatchUpdates({\n          id: betslipReadyEvents[0].eventId,\n          stake: `${amount}`\n        });\n      }\n    }\n\n    dispatch(setIsBookingMode(false));\n\n    if (originalEventsLength === betslipReadyEvents.length) {\n      setBookBetIdInLs(bookId);\n    }\n\n    const queryParams = new URLSearchParams(window.location.search);\n\n    if (queryParams.has('booking_id')) {\n      queryParams.delete('booking_id');\n      history.replace({\n        search: queryParams.toString()\n      });\n    }\n  };\n\n  return {\n    bookId,\n    setBookId,\n    bookingProgress,\n    getByBookIdProgress,\n    onBookBet,\n    onSubmitBookId,\n    getEvents\n  };\n};\n","import { useMemo } from 'react';\nimport { useQuery } from '@tanstack/react-query';\nimport { EAccount } from 'utils/constants/store/query-keys';\nimport SpringConfigs from 'utils/constants/swarm/spring-configs';\nimport { getAccountJsonQuery } from 'services/account-settings';\n\nexport const useFetchAccountParams = () => {\n  const accountJsonQuery = getAccountJsonQuery;\n  const { data, error, isLoading } = useQuery({\n    queryKey: [EAccount['AccountParams']],\n    queryFn: () => accountJsonQuery(SpringConfigs.ACCOUNT_PARAMS),\n    retry: false\n  });\n\n  const accountParams = useMemo(() => {\n    if (error || !data) {\n      return null;\n    }\n\n    if (SpringConfigs.CYPRUS_ACCOUNT_TYPE) {\n      return {\n        ...data,\n        'months-7': '1',\n        'months-8': '1',\n        'months-9': '1',\n        'months-10': '1',\n        'months-11': '1',\n        'months-timeout-hours-72': '1'\n      };\n    }\n\n    return data;\n  }, [data, error]);\n\n  return {\n    accountParams,\n    error,\n    isLoading\n  };\n};\n","import { useCallback } from 'react';\nimport { CUSTOM_CATEGORIES } from 'utils/constants/casino/custom-categories';\nimport { mountPoint } from 'utils/generic/route-manipulation';\nimport { ECasinoGameMode, ECasinoGameView } from 'interfaces/casino-data';\nimport { NewCasinoGame } from 'interfaces/new-casino';\nimport { UtilsCasino } from 'newelements/Casino/GameSingleViewRenderer/__partials/GameViewContainer/utils';\nimport { useSearchParams } from 'hooks/useSearchParams';\nimport { useSbRouteMatch } from 'newhooks/generic/useSbRouteMatch';\nimport { useCasinoOpenGameConfigsValues } from 'providers/casino/openGameConfigsProvider';\n\nexport const useOpenCasinoGame = () => {\n  const { tournamentId } = useSearchParams();\n  const externalContext = useCasinoOpenGameConfigsValues();\n  const routeMatchCategory = useSbRouteMatch(\n    `${mountPoint(location.pathname, false, true)}/:category`\n  );\n\n  return useCallback(\n    (mode: ECasinoGameMode, game: NewCasinoGame) => {\n      if (externalContext.onOpenGame) {\n        externalContext.onOpenGame(game, mode);\n\n        return;\n      }\n\n      const category =\n        routeMatchCategory?.params?.category || CUSTOM_CATEGORIES.all.id;\n\n      const tournament = tournamentId ? { id: tournamentId } : undefined;\n\n      UtilsCasino.constructAndRedirectToGameView({\n        game,\n        mode,\n        selectedCategory: category,\n        view: ECasinoGameView.SINGLE,\n        tournament\n      });\n    },\n    [tournamentId, routeMatchCategory, tournamentId]\n  );\n};\n","import { createContext, ReactElement, ReactNode, useContext } from 'react';\nimport { ECasinoGameMode } from 'interfaces/casino-data';\nimport { NewCasinoGame } from 'interfaces/new-casino';\n\nexport interface ICasinoOpenGameConfigsProps {\n  onOpenGame?: (game: NewCasinoGame, mode: ECasinoGameMode) => void;\n}\n\nexport interface ICasinoOpenGameConfigsProviderProps {\n  children: ReactNode;\n  value: ICasinoOpenGameConfigsProps;\n}\n\nconst CasinoOpenGameConfigsContext = createContext<\n  ICasinoOpenGameConfigsProviderProps['value']\n>({});\n\nexport const CasinoOpenGameConfigsProvider = (\n  props: ICasinoOpenGameConfigsProviderProps\n): ReactElement => {\n  return (\n    <CasinoOpenGameConfigsContext.Provider value={props.value}>\n      {props.children}\n    </CasinoOpenGameConfigsContext.Provider>\n  );\n};\n\nexport const useCasinoOpenGameConfigsValues =\n  (): ICasinoOpenGameConfigsProviderProps['value'] => {\n    return useContext(CasinoOpenGameConfigsContext);\n  };\n","export enum AFTER_SIGN_IN_ACTION_TYPES {\n  TOGGLE_BET_BUILDER_MODAL = 'toggleBetBuilderModal',\n  BOOKING_BET_GET_EVENT_ID = 'bookingBetGetEventId',\n  NAVIGATE_TO_MY_CASINO = 'navigateToMyCasino',\n  SUBSCRIBE_FOR_NOTIFICATION = 'subscribeForNotifications',\n  OPT_IN_ACTION = 'optInAction',\n  OPEN_CASINO_GAME = 'openCasinoGame',\n  CONSTRUCT_CASINO_VIEW_URL = 'constructCasinoViewUrl',\n  RECONSTRUCT_CASINO_VIEW_URL = 'reconstructCasinoViewUrl',\n  RACING_BET_MODAL = 'racingBetModal',\n  OPEN_FAVORITE_TEAM_POPUP = 'openFavoriteTeamPopup',\n  OPEN_SINGLE_GAME_FROM_MINIMIZED_STREAMING = 'openSingleGameFromMinimizedStreaming'\n}\n\nexport type TAfterSignInActions = {\n  openBetBuilderAction?: string;\n  bookBetId?: string;\n};\n\nexport class AfterSignIn {\n  static _instance: AfterSignIn;\n  static actions: Record<string, () => Promise<unknown>> = {};\n  static afterExecutionCallback: () => void;\n  static finalExecutionCallback: () => void;\n\n  constructor() {\n    if (AfterSignIn._instance) {\n      return AfterSignIn._instance;\n    }\n\n    AfterSignIn._instance = this;\n  }\n\n  setAfterExecutionCallback = (callback: () => void) => {\n    AfterSignIn.afterExecutionCallback = callback;\n  };\n\n  setFinalExecutionCallback = (callback: () => void) => {\n    AfterSignIn.finalExecutionCallback = callback;\n  };\n\n  appendAction = (key: string, promise: () => Promise<any>) => {\n    AfterSignIn.actions[key] = promise;\n  };\n\n  isActionsExist = () => {\n    return !!Object.values(AfterSignIn.actions).length;\n  };\n\n  removeActions = () => {\n    AfterSignIn.actions = {};\n  };\n\n  executeActions = () => {\n    const successAction = () => {\n      return new Promise(resolve => {\n        resolve(true);\n      });\n    };\n\n    Promise.all(\n      [...Object.values(AfterSignIn.actions), successAction].map(func => func())\n    ).then(() => {\n      AfterSignIn.actions = {};\n\n      AfterSignIn.afterExecutionCallback &&\n        AfterSignIn.afterExecutionCallback();\n\n      AfterSignIn.finalExecutionCallback &&\n        AfterSignIn.finalExecutionCallback();\n    });\n  };\n}\n","import i18n from 'i18next';\nimport qs from 'qs';\nimport { convert } from 'utils/betslip/odd-formats-helper';\nimport {\n  MODE_TYPES,\n  REPLACE_EDIT_BET_TRANSLATIONS\n} from 'utils/constants/betslip/bet-types';\nimport { ERROR_CODE_TIMEOUT_1800 } from 'utils/constants/dateInfo/time-numbers';\nimport { EAccount } from 'utils/constants/store/query-keys';\nimport SpringConfigs from 'utils/constants/swarm/spring-configs';\nimport {\n  CommandNames,\n  CommandSource\n} from 'utils/constants/swarm/swarm-command-names';\nimport { SwarmSuccessMessages } from 'utils/constants/swarm/swarm-success-messages';\nimport { fireEvent } from 'utils/generic/event-bus';\nimport { showToastError } from 'utils/generic/show-toast-error';\nimport { appendCustomCode } from 'utils/other/customCode';\nimport RidGenerator from 'utils/swarm/rid-generator';\nimport { showToastSuccess } from 'utils/swarm/swarm-success-handler';\nimport { GetCurrencyConfigsResponse } from 'interfaces/account-settings';\nimport {\n  BookBetParamsType,\n  DoBetResponseType,\n  TCreateBets,\n  TV3FreebetParams,\n  TV3FreebetResponse\n} from 'interfaces/bet-data';\nimport { doBetProps, IEventsAndGameIds } from 'interfaces/betslip';\nimport { AccountParamsType, AppendCustomCodes } from 'interfaces/generic';\nimport {\n  CommandObj,\n  WebsocketEnhanced\n} from 'interfaces/spring-websocket-interfaces';\nimport { EPlayerActivityCheckerActions } from 'newcomponents/Shared/account/PlayerActivityChecker/types';\nimport { connectingWS } from 'hooks/useSpringConnect';\nimport Store from 'store';\nimport {\n  batchActions,\n  removeFreeBetItem,\n  setFreeBetSelectedEventId,\n  setSelectedProfitBoostEventId\n} from 'store/actions';\nimport { IBetslipRootStateInitialData } from 'store/reducers/betslip';\nimport { queryClient } from 'stores/query/query-client';\nimport { deviceActionManager } from '../deviceactionmanager/DeviceActionManager';\n\n// this is required for showing messages outside the betslip if it is closed\nconst getMessageContextBasedOnBetslipOpenState = (\n  messageContext: HTMLElement | null | undefined\n): HTMLElement | null | undefined => {\n  const isBetslipOpen = Store.getState().betSlip?.betslipOpen;\n  const isFloatingBetslipEnabled = SpringConfigs.IS_BETSLIP_FLOATING_ENABLED;\n\n  if (\n    !isFloatingBetslipEnabled ||\n    (isFloatingBetslipEnabled && isBetslipOpen)\n  ) {\n    return messageContext;\n  }\n\n  return null;\n};\n\n/* eslint-disable */\nexport const betCommand = async (\n  commandObj: any, //  command object must be of type any for generic purpose\n  rid: string,\n  callback: Function,\n  updateCallback: Function | null,\n  callbackError: Function | null\n): Promise<void> => {\n  /* eslint-enable */\n  connectingWS.then((socket: WebsocketEnhanced) => {\n    socket.sendCommand(\n      commandObj,\n      rid,\n      callback,\n      updateCallback,\n      callbackError\n    );\n  });\n};\n\nconst oddChangeHandlerCallbackWrapper = (\n  response: DoBetResponseType,\n  callback: Function | null,\n  oddFormat: number,\n  setAcceptBet?: Function,\n  messageContext?: HTMLElement | null\n): void => {\n  callback?.(response);\n  const { result, result_text, details, StatusCode, Data } = response;\n\n  const isStatusCode = StatusCode === REPLACE_EDIT_BET_TRANSLATIONS[0];\n\n  if (result === ERROR_CODE_TIMEOUT_1800 || isStatusCode) {\n    const changedOdd = isStatusCode\n      ? Data?.ErrorData\n        ? {\n            old_price: Data?.ErrorData?.OldPrice,\n            new_price: Data?.ErrorData?.ActualPrice\n          }\n        : null\n      : Array.isArray(details)\n      ? {\n          old_price: details[0].old_price,\n          new_price: details[0].new_price\n        }\n      : null;\n\n    if (setAcceptBet) {\n      setAcceptBet(true);\n    }\n\n    if (!changedOdd) {\n      return;\n    }\n\n    const oddsChangedText = i18n\n      .t('swarm.OddsIsChanged')\n      .replace('{oldPrice}', convert(changedOdd.old_price, oddFormat))\n      .replace('{newPrice}', convert(changedOdd.new_price, oddFormat));\n\n    showToastError(\n      oddsChangedText,\n      getMessageContextBasedOnBetslipOpenState(messageContext),\n      result_text\n    );\n  }\n};\n\n// DON'T use this function directly in project, instead use useDoBetHandler : doBetHandler function\nexport const doBet = (\n  data: doBetProps,\n  callback: Function,\n  callbackError: Function | null,\n  setAcceptBet?: Function,\n  messageContext?: HTMLElement | null\n): void => {\n  const editBet = Store.getState().betSlip?.editBet;\n\n  // @Todo add type for betslip do bet response\n  const _callback = (res: any) => {\n    callback(res);\n\n    if (SpringConfigs.WRAPPER_APP && window.median) {\n      deviceActionManager.vibrate('impactMedium');\n    }\n  };\n\n  if (editBet?.active) {\n    sendCreateBet(data, _callback, callbackError, setAcceptBet, messageContext);\n  } else {\n    sendDoBet(data, _callback, callbackError, setAcceptBet, messageContext);\n  }\n};\n\n/*eslint no-magic-numbers:*/\n// TODO check after betslip refactor\nconst sendDoBet = (\n  data: doBetProps,\n  callback: Function,\n  callbackError: Function | null,\n  setAcceptBet?: Function,\n  messageContext?: HTMLElement | null\n): void => {\n  const oddFormat = Store.getState().betSlip.oddFormat;\n  const editBet = Store.getState().betSlip.editBet;\n  const isBonusMoney = Store.getState().betSlip.useBonusBalance;\n  const user = Store.getState().userData.user;\n  const isFrenchFreeBetEnabled =\n    Store.getState().betSlip.isFrenchFreeBetEnabled;\n\n  const {\n    bets,\n    type,\n    mode,\n    sys_bet,\n    bonus_id,\n    predefined_multiple_id,\n    source,\n    each_way,\n    booking_id,\n    location_token\n  } = data;\n\n  const amount = editBet?.active ? editBet.amount : data.amount;\n\n  const additional_amount = data.amount;\n  const old_bet_id = editBet?.betId || null;\n\n  const command = {\n    command: CommandNames.DO_BET,\n    params: {\n      source,\n      each_way,\n      bonus_id,\n      amount,\n      bets,\n      mode: mode || MODE_TYPES.ODD_NOT_CHANGE,\n      odd_type: oddFormat,\n      type,\n      booking_id,\n      is_bonus_money: !!isBonusMoney,\n      ...(isFrenchFreeBetEnabled ? { is_free_bet_money: true } : {}),\n      ...(location_token ? { location_token } : {})\n    } as Record<string, any>,\n    rid: RidGenerator.gForCommand()\n  };\n\n  if (sys_bet) {\n    command.params.sys_bet = sys_bet;\n  }\n\n  if (predefined_multiple_id) {\n    command.params.predefined_multiple_id = predefined_multiple_id;\n  }\n\n  if (editBet?.active) {\n    command.params.additional_amount = additional_amount;\n    command.params.old_bet_id = old_bet_id;\n  }\n\n  betCommand(\n    command,\n    '',\n    (data: {\n      result: string;\n      details: {\n        bet_id: number;\n        k: number;\n        is_superbet: boolean;\n      };\n    }) => {\n      callback(data);\n      fireEvent({ key: EPlayerActivityCheckerActions.checkPlayerActivity });\n\n      const betslipStore: IBetslipRootStateInitialData =\n        Store.getState().betSlip;\n\n      const freeBetStore = betslipStore.freeBets;\n\n      Store.dispatch(\n        batchActions(\n          setSelectedProfitBoostEventId(null),\n          setFreeBetSelectedEventId(null)\n        )\n      );\n\n      if (freeBetStore.selectedFreeBetId) {\n        Store.dispatch(\n          batchActions(removeFreeBetItem(freeBetStore.selectedFreeBetId))\n        );\n      }\n\n      if (data && data.result === 'OK') {\n        if (data.details?.is_superbet) {\n          showToastSuccess(\n            i18n.t('betslip.superBetSuccess'),\n            getMessageContextBasedOnBetslipOpenState(messageContext)\n          );\n        } else {\n          showToastSuccess(\n            i18n.t(`betslip.${SwarmSuccessMessages.DO_BET}`),\n            getMessageContextBasedOnBetslipOpenState(messageContext)\n          );\n        }\n      }\n\n      const accountParams: AccountParamsType = queryClient.getQueryData([\n        EAccount['AccountParams']\n      ]);\n\n      if (\n        accountParams &&\n        +accountParams[AppendCustomCodes.APPEND_CUSTOM_CODE_BETSLIP]\n      ) {\n        appendCustomCode(accountParams[AppendCustomCodes.CUSTOM_CODE_BETSLIP], {\n          amount,\n          currency: user?.currency,\n          bet_id: data?.details?.bet_id,\n          k: data?.details?.k,\n          is_superbet: mode === -1,\n          bet_type: type,\n          name: user?.name,\n          first_name: user?.first_name,\n          last_name: user?.last_name,\n          email: user?.email,\n          username: user?.username,\n          btag: user?.btag,\n          userId: user?.id,\n          phone: user?.phone\n        });\n      }\n    },\n    () => undefined,\n    ({ data }: { data: DoBetResponseType }) => {\n      oddChangeHandlerCallbackWrapper(\n        data,\n        callbackError,\n        oddFormat,\n        setAcceptBet,\n        messageContext\n      );\n    }\n  );\n};\n\nconst sendCreateBet = (\n  data: doBetProps,\n  callback: Function,\n  callbackError: Function | null,\n  setAcceptBet?: Function,\n  messageContext?: HTMLElement | null\n): void => {\n  const oddFormat = Store.getState().betSlip.oddFormat;\n  const editBet = Store.getState().betSlip.editBet;\n  const user = Store.getState().userData.user;\n  const isFrenchFreeBetEnabled =\n    Store.getState().betSlip.isFrenchFreeBetEnabled;\n\n  const { bets, type, mode, source, each_way, location_token } = data;\n\n  const amount = editBet?.active ? editBet.amount : data.amount;\n\n  const additional_amount = data.amount;\n  const old_bet_id = editBet?.betId || null;\n\n  const command: TCreateBets = {\n    command: CommandNames.CREATE_BETS,\n    params: {\n      bets: [\n        {\n          Source: source,\n          EachWay: each_way,\n          Amount: amount,\n          Events: bets.map(bet => ({\n            SelectionId: bet.event_id,\n            Coeficient: bet.price\n          })),\n          OddType: oddFormat,\n          Type: type,\n          AdditionalAmount: undefined,\n          ...(isFrenchFreeBetEnabled ? { IsFreeBetMoney: true } : {})\n        }\n      ],\n      ...(location_token ? { GeoLocationToken: location_token } : {})\n    },\n    rid: RidGenerator.gForCommand()\n  };\n\n  if (editBet?.active) {\n    command.params.bets[0].AdditionalAmount = additional_amount;\n    command.params.bets[0].OldBetId = old_bet_id;\n  }\n\n  betCommand(\n    command,\n    '',\n    (data: {\n      result: string;\n      StatusCode: string;\n      Data: Array<{\n        bet_id: number;\n        k: number;\n        is_superbet?: boolean;\n      }>;\n    }) => {\n      if (data.StatusCode === '0') {\n        data.result = 'OK';\n\n        if (data.Data?.[0]?.is_superbet) {\n          showToastSuccess(\n            i18n.t('betslip.superBetSuccess'),\n            getMessageContextBasedOnBetslipOpenState(messageContext)\n          );\n        } else {\n          showToastSuccess(\n            i18n.t(`betslip.${SwarmSuccessMessages.DO_BET}`),\n            getMessageContextBasedOnBetslipOpenState(messageContext)\n          );\n        }\n      }\n\n      callback(data);\n      fireEvent({ key: EPlayerActivityCheckerActions.checkPlayerActivity });\n\n      const accountParams: AccountParamsType = queryClient.getQueryData([\n        EAccount['AccountParams']\n      ]);\n\n      if (\n        accountParams &&\n        +accountParams[AppendCustomCodes.APPEND_CUSTOM_CODE_BETSLIP]\n      ) {\n        appendCustomCode(accountParams[AppendCustomCodes.CUSTOM_CODE_BETSLIP], {\n          amount,\n          currency: user?.currency,\n          bet_id: data?.Data[0]?.bet_id,\n          k: data?.Data[0]?.k,\n          is_superbet: mode === -1,\n          bet_type: type,\n          name: user?.name,\n          first_name: user?.first_name,\n          last_name: user?.last_name,\n          email: user?.email,\n          username: user?.username,\n          btag: user?.btag,\n          userId: user?.id,\n          phone: user?.phone\n        });\n      }\n    },\n    () => undefined,\n    ({ data }: { data: DoBetResponseType }) => {\n      oddChangeHandlerCallbackWrapper(\n        data,\n        callbackError,\n        oddFormat,\n        setAcceptBet,\n        messageContext\n      );\n    }\n  );\n};\n\nexport const getV3Freebet = (\n  params: TV3FreebetParams,\n  callback: (data: TV3FreebetResponse) => void,\n  callbackError: ((err?: Record<string, string>) => void) | null = null\n): void => {\n  const command = {\n    command: CommandNames.GET_FREEBETS_FOR_BETSLIP_V3,\n    params,\n    rid: RidGenerator.gForCommand()\n  };\n\n  betCommand(command, '', callback, () => undefined, callbackError);\n};\n\nexport const getCurrencyConfigs = async (\n  currency: string,\n  callback: (data: GetCurrencyConfigsResponse) => void,\n  callbackError: Function | null\n): Promise<void> => {\n  const commandObj = {\n    command: CommandNames.GET,\n    rid: RidGenerator.gForCommand(),\n    params: {\n      source: CommandSource.CURRENCY_CONFIG,\n      what: {\n        currency: []\n      },\n      where: {\n        currency: { name: currency }\n      },\n      subscribe: false\n    }\n  };\n\n  connectingWS.then((socket: WebsocketEnhanced) =>\n    socket.sendCommand(commandObj, '', callback, undefined, callbackError)\n  );\n};\n\nexport const bookBet = async (\n  bets: BookBetParamsType,\n  callback: Function,\n  callbackError: Function\n): Promise<void> => {\n  const commandObj: CommandObj = {\n    command: CommandNames.BOOK_BET,\n    rid: RidGenerator.gForCommand(),\n    params: {\n      bets\n    }\n  };\n\n  const tid = Number(\n    qs.parse(window.location.search, { ignoreQueryPrefix: true }).tid\n  );\n\n  tid && (commandObj.params.cashdesk_id = tid);\n\n  connectingWS.then((socket: WebsocketEnhanced) =>\n    socket.sendCommand(commandObj, '', callback, undefined, callbackError)\n  );\n};\n\nexport const getEventsByBookingId = (\n  bookId: string,\n  callback: Function,\n  callbackError: Function\n): void => {\n  const commandObj: CommandObj = {\n    command: CommandNames.GET_EVENTS_BY_BOOKING_ID,\n    rid: RidGenerator.gForCommand(),\n    params: {\n      booking_id: +bookId\n    }\n  };\n\n  connectingWS.then((socket: WebsocketEnhanced) =>\n    socket.sendCommand(commandObj, '', callback, undefined, callbackError)\n  );\n};\n\nexport const getEventsReadyForBetslip = (\n  eventsAndGameIds: IEventsAndGameIds[] | null,\n  callback: Function,\n  callBackError?: Function,\n  getOnlyEventIds?: boolean,\n  gameIds?: number[],\n  eventIds?: number[]\n): void => {\n  const games = gameIds\n    ? gameIds\n    : eventsAndGameIds\n    ? eventsAndGameIds.map(entity => entity.gameId)\n    : [];\n\n  const events =\n    gameIds && eventIds\n      ? eventIds\n      : eventsAndGameIds\n      ? eventsAndGameIds.map(entity => entity.eventId)\n      : [];\n\n  const commandObj = {\n    command: CommandNames.GET,\n    rid: RidGenerator.gForCommand(),\n    params: {\n      source: CommandSource.BETTING,\n      what: {\n        ...(!getOnlyEventIds && {\n          sport: ['alias', 'type'],\n          region: ['name', 'alias'],\n          competition: ['name', 'id'],\n          game: ['id', 'type', 'team1_name', 'team2_name', 'start_ts', 'info'],\n          market: ['name', 'type', 'extra_info']\n        }),\n        event: getOnlyEventIds\n          ? ['id']\n          : ['id', 'base', 'name', 'price', 'ew_allowed']\n      },\n      where: {\n        game: {\n          id: {\n            '@in': games\n          }\n        },\n        event: {\n          id: {\n            '@in': events\n          }\n        }\n      }\n    }\n  };\n\n  connectingWS.then((socket: WebsocketEnhanced) => {\n    socket.sendCommand(commandObj, '', callback, undefined, callBackError);\n  });\n};\n\nexport const counterCounterOfferAnswer = (\n  acceptOffer: boolean,\n  betId: number | string,\n  callback: Function,\n  callbackError?: Function\n): void => {\n  const commandObj: CommandObj = {\n    command: CommandNames.SUPER_BET_ANSWER,\n    rid: RidGenerator.gForCommand(),\n    params: {\n      accept: acceptOffer,\n      bet_id: betId\n    }\n  };\n\n  connectingWS.then((socket: WebsocketEnhanced) =>\n    socket.sendCommand(commandObj, '', callback, undefined, callbackError)\n  );\n};\n\nexport const checkBetStatus = (\n  betId: number | string,\n  callback: Function,\n  callbackError?: Function\n): void => {\n  const commandObj: CommandObj = {\n    command: CommandNames.CHECK_BET_STATUS,\n    rid: RidGenerator.gForCommand(),\n    params: {\n      bet_id: betId\n    }\n  };\n\n  connectingWS.then((socket: WebsocketEnhanced) =>\n    socket.sendCommand(commandObj, '', callback, undefined, callbackError)\n  );\n};\n","import axios from 'axios';\nimport { casinoLangPrefix } from 'utils/constants/app/general';\nimport { CasinoCommandNames } from 'utils/constants/casino/casino-command-names';\nimport { SUCCESS_STATUS_CODE } from 'utils/constants/swarm/backend-status-codes';\nimport SpringConfigs from 'utils/constants/swarm/spring-configs';\nimport { showToastError } from 'utils/generic/show-toast-error';\nimport { isMobile } from 'utils/is-mobile';\nimport {\n  DecentralizedCasinoGamesFetchingParams,\n  ENewCasinoGamesFetchingParamsKey,\n  NewCasinoGameBackend,\n  NewCasinoGamesFetchingParams\n} from 'interfaces/new-casino';\n\nexport const fetchGamesByIds = (\n  ids: string[],\n  showErrorMessage = true,\n  useExternalId = false,\n  decentralized = false\n): Promise<NewCasinoGameBackend[]> => {\n  let _params:\n    | DecentralizedCasinoGamesFetchingParams\n    | NewCasinoGamesFetchingParams;\n\n  if (decentralized) {\n    _params = {\n      partnerId: SpringConfigs.DECENTRALIZED_CASINO_PARTNER_ID,\n      gameId: ids[0]\n    };\n  } else {\n    _params = {\n      partner_id: SpringConfigs.PARTNER_ID,\n      is_mobile: Number(isMobile()),\n      lang: casinoLangPrefix,\n      by_key: ENewCasinoGamesFetchingParamsKey.Id,\n      use_webp: Number(SpringConfigs.IS_WEBP_SUPPORTED),\n      country: SpringConfigs.CURRENT_COUNTRY_CODE\n    };\n\n    if (useExternalId && ids?.length) {\n      _params.external_id = ids;\n    } else {\n      if (ids?.length === 1) {\n        _params.id = ids[0];\n      } else if (ids?.length > 1) {\n        _params.external_id = ids;\n      } else {\n        return new Promise(resolve => resolve([]));\n      }\n    }\n  }\n\n  const url = SpringConfigs?.DECENTRALIZED_CASINO_URL\n    ? `${SpringConfigs.DECENTRALIZED_CASINO_URL}${CasinoCommandNames['GET_DECENTRALIZED_GAME']}`\n    : `${SpringConfigs.CASINO_URL}/${CasinoCommandNames['GET_GAMES']}`;\n\n  return axios\n    .get<{\n      games: NewCasinoGameBackend[];\n      status: string;\n    }>(url, {\n      params: _params\n    })\n    .then((response: any) => {\n      if (\n        response.status === SUCCESS_STATUS_CODE &&\n        response.data &&\n        (response.data.status === 'ok' || decentralized)\n      ) {\n        return decentralized\n          ? [\n              {\n                extearnal_game_id: response.data.externalGameId,\n                types: {\n                  realMode: 0,\n                  funMode: 0\n                },\n                icon_1: response.data.icon1,\n                icon_2: response.data.icon2,\n                icon_3: response.data.icon3,\n                provider: 'ALL',\n                provider_badge: null,\n                provider_title: 'ALL',\n                show_as_provider: 'ALL',\n                cats: response.data.categories,\n                ...response.data\n              }\n            ]\n          : Object.values(response.data.games);\n      } else {\n        if (showErrorMessage) {\n          showToastError(response.statusText);\n        }\n\n        return [];\n      }\n    })\n    .catch(error => {\n      if (showErrorMessage) {\n        showToastError(error.toString());\n      }\n\n      return [];\n    });\n};\n","import { CommandNames } from 'utils/constants/swarm/swarm-command-names';\nimport RidGenerator from 'utils/swarm/rid-generator';\nimport { UserNotificationsResponse } from 'interfaces/notifications';\nimport { WebsocketEnhanced } from 'interfaces/spring-websocket-interfaces';\nimport { connectingWS } from 'hooks/useSpringConnect';\nimport store from 'store';\nimport { setUserNotifications } from 'store/actions/sport-data';\n\nexport const setGamesNotifications = (\n  gameInfo: {\n    id: number;\n    game_start_ts: number;\n  },\n  shouldSubscribe: boolean,\n  callback: Function,\n  updateCallback?: Function\n): void => {\n  const command = {\n    command: CommandNames.SET_GAMES_NOTIFICATIONS,\n    params: {\n      game_list: [gameInfo],\n      events: [\n        {\n          event_name: 'MatchFinished',\n          is_subscribed: shouldSubscribe\n        }\n      ]\n    },\n    rid: RidGenerator.gForCommand()\n  };\n\n  connectingWS.then((socket: WebsocketEnhanced) => {\n    socket.sendCommand(command, '', callback, null, updateCallback);\n  });\n};\n\nexport const getUserAllNotifications = (): void => {\n  const command = {\n    command: CommandNames.GET_USER_ALL_NOTIFICATIONS,\n    params: {},\n    rid: RidGenerator.gForCommand()\n  };\n\n  const callback = (resp: UserNotificationsResponse) => {\n    if (resp?.details) {\n      store.dispatch(setUserNotifications(resp.details));\n    }\n  };\n\n  connectingWS.then((socket: WebsocketEnhanced) => {\n    socket.sendCommand(command, '', callback);\n  });\n};\n","import { ECasinoGameMode, ECasinoGameViewOrder } from 'interfaces/casino-data';\nimport { ActionType } from 'interfaces/generic';\nimport {\n  NewCasinoCategory,\n  NewCasinoGame,\n  NewCasinoGamesFetchingParams\n} from 'interfaces/new-casino';\nimport { CasinoGamesConfigs } from 'newelements/Casino/Games/__partials/providers/CasinoGamesConfigsContext';\nimport { NewCasinoActionTypes } from 'store/action-types/new-casino';\n\nexport const setCasinoOriginalCategories = (\n  categories: NewCasinoCategory[]\n): ActionType => {\n  return {\n    type: NewCasinoActionTypes.SET_CASINO_ORIGINAL_CATEGORIES,\n    payload: categories\n  };\n};\n\nexport const setEnhancedParams = (\n  enhancedParams: Partial<NewCasinoGamesFetchingParams>\n): ActionType => {\n  return {\n    type: NewCasinoActionTypes.SET_ENHANCED_PARAMS,\n    payload: enhancedParams\n  };\n};\n\nexport const setTotalCount = (totalCount: string): ActionType => {\n  return {\n    type: NewCasinoActionTypes.SET_GAMES_TOTAL_COUNT,\n    payload: totalCount\n  };\n};\n\nexport const setGamesConfigs = (\n  gamesConfigs: Partial<CasinoGamesConfigs>\n): ActionType => {\n  return {\n    type: NewCasinoActionTypes.SET_GAMES_CONFIG,\n    payload: gamesConfigs\n  };\n};\n\nexport const setCasinoCustomCategories = (\n  categories: NewCasinoCategory[]\n): ActionType => {\n  return {\n    type: NewCasinoActionTypes.SET_CASINO_CUSTOM_CATEGORIES,\n    payload: categories\n  };\n};\n\nexport const setCasinoOriginalCategoriesSet = (\n  categories: string[]\n): ActionType => {\n  return {\n    type: NewCasinoActionTypes.SET_CASINO_ORIGINAL_CATEGORIES_SET,\n    payload: categories\n  };\n};\n\nexport const setCasinoOriginalCategoriesSetLeftSideBar = (\n  categories: string[]\n): ActionType => {\n  return {\n    type: NewCasinoActionTypes.SET_CASINO_ORIGINAL_CATEGORIES_SET_LEFT_SIDEBAR,\n    payload: categories\n  };\n};\n\nexport const setCategoryProviderIds = (payload: string): ActionType => {\n  return {\n    type: NewCasinoActionTypes.SET_CASINO_CATEGORY_PROVIDER_IDS,\n    payload\n  };\n};\n\nexport const setCanRequestCategoriesNestedData = (\n  payload: boolean\n): ActionType => {\n  return {\n    type: NewCasinoActionTypes.SET_CAN_REQUEST_CATEGORIES_NESTED_DATA,\n    payload\n  };\n};\n\nexport const setCanRequestProvidersNestedData = (\n  payload: boolean\n): ActionType => {\n  return {\n    type: NewCasinoActionTypes.SET_CAN_REQUEST_PROVIDERS_NESTED_DATA,\n    payload\n  };\n};\n\nexport const setLastPlayedCatSettings = (payload: {\n  lastPlayed: boolean;\n  lastPlayedCatType: number;\n}): ActionType => {\n  return {\n    type: NewCasinoActionTypes.SET_LAST_PLAYED_CAT_SETTINGS,\n    payload\n  };\n};\n\nexport const setCategoryCustomIds = (catCustomIds: string[]): ActionType => {\n  return {\n    type: NewCasinoActionTypes.SET_CATEGORIES_CUSTOM_IDS,\n    payload: catCustomIds\n  };\n};\n\nexport const addCachedGame = (game: NewCasinoGame): ActionType => {\n  return {\n    type: NewCasinoActionTypes.ADD_CACHED_GAME,\n    payload: game\n  };\n};\n\nexport const addCachedGameId = (id: string): ActionType => {\n  return {\n    type: NewCasinoActionTypes.ADD_CACHED_GAME_ID,\n    payload: id\n  };\n};\n\nexport const setCachedGameActive = (id: string): ActionType => {\n  return {\n    type: NewCasinoActionTypes.SET_CACHED_GAME_ACTIVE,\n    payload: id\n  };\n};\n\nexport const setCachedGameInactive = (id: string): ActionType => {\n  return {\n    type: NewCasinoActionTypes.SET_CACHED_GAME_INACTIVE,\n    payload: id\n  };\n};\n\nexport const setCachedGamesInactive = (excludeId?: string): ActionType => {\n  return {\n    type: NewCasinoActionTypes.SET_CACHED_GAMES_INACTIVE,\n    payload: excludeId\n  };\n};\n\nexport const setCachedGameOrder = (payload: {\n  id: NewCasinoGame['extearnal_game_id'];\n  order: ECasinoGameViewOrder;\n}): ActionType => {\n  return {\n    type: NewCasinoActionTypes.SET_CACHED_GAME_ORDER,\n    payload\n  };\n};\n\nexport const setCachedGameMode = (payload: {\n  id: NewCasinoGame['extearnal_game_id'];\n  mode: ECasinoGameMode;\n}): ActionType => {\n  return {\n    type: NewCasinoActionTypes.SET_CACHED_GAME_MODE,\n    payload\n  };\n};\n","import { createSelector } from 'reselect';\nimport { getSelectorRoot } from 'utils/selectors';\nimport { ICasinoCachedGames } from 'interfaces/casino-data';\n\nconst getCasinoStore = getSelectorRoot('newCasinoStore');\n\nconst getCasinoCategories = getCasinoStore('categories');\nexport const getCasinoOriginalCategories = createSelector(\n  [getCasinoCategories],\n  categories => categories.original\n);\nexport const getEnhancedParams = getCasinoStore('enhancedParams');\n\nexport const getGamesConfigs = getCasinoStore('gamesConfigs');\nexport const getCasinoCustomCategories = createSelector(\n  [getCasinoCategories],\n  categories => categories.custom\n);\nexport const getCasinoOriginalCategoriesSet = createSelector(\n  [getCasinoCategories],\n  categories => categories.originalSet\n);\nexport const getCasinoOriginalCategoriesSetLeftSideBar = createSelector(\n  [getCasinoCategories],\n  categories => categories.originalSetLeftSideBar\n);\nexport const getCanRequestCategoriesNestedData = getCasinoStore(\n  'canRequestCategoriesNestedData'\n);\nexport const getCanRequestProvidersNestedData = getCasinoStore(\n  'canRequestProvidersNestedData'\n);\nexport const getLastPlayedCatSettings = getCasinoStore('lastPlayedCatSettings');\nexport const getCategoryCustomIds = getCasinoStore('categoryCustomIds');\nexport const getCachedGames = getCasinoStore('cachedGames');\nexport const getActiveGames = createSelector(\n  [getCachedGames],\n  (cachedGames: ICasinoCachedGames = {}) => {\n    return Object.values(cachedGames)\n      .filter(gameData => gameData.active)\n      .reduce((acc, gameData) => {\n        if (!gameData.data) {\n          return acc;\n        }\n\n        acc[gameData.data.extearnal_game_id] = gameData;\n\n        return acc;\n      }, {} as ICasinoCachedGames);\n  }\n);\n","import { getSelectorRoot } from 'utils/selectors';\n\nconst getSocket = getSelectorRoot('socket');\n\nexport const getPartnerConfigs = getSocket('partnerConfigs');\nexport const getJackpots = getSocket('jackpots');\nexport const getIsConnected = getSocket('isConnected');\n","import { getSelectorRoot } from 'utils/selectors';\n\nconst getSpecElems = getSelectorRoot('specElems');\n\nexport const getBetslip = getSpecElems('betslip');\n","import { browserHistory } from 'configure/history';\nimport { addQuery, saveCurrentLocation } from 'components/QueryRoute';\n\ntype TOpenLoginViewProps = {\n  routeToSaveInStorage?: string;\n  query?: Record<string, any>;\n};\n\nexport const openLoginView = ({\n  routeToSaveInStorage,\n  query = {}\n}: TOpenLoginViewProps = {}) => {\n  saveCurrentLocation('login', routeToSaveInStorage);\n  browserHistory.push(addQuery({ accounts: '*', login: '*', ...query }));\n};\n","import { checkIsUserLoggedIn } from './check-is-user-logged-in';\nimport { openLoginView } from './open-login-view';\n\nexport const UtilsAccount = {\n  openLoginView,\n  checkIsUserLoggedIn\n};\n","import LS from 'utils/bom-dom-manipulation/local-storage';\nimport { storageKeyName } from 'utils/generic/storage-key-name';\nimport { InitialUserData } from 'interfaces/authentication';\nimport store from 'store';\n\nexport const checkIsUserLoggedIn = () => {\n  const userData: InitialUserData = store.getState().userData;\n  const authData = JSON.parse(\n    LS.getItem(storageKeyName('account', 'AUTH_DATA'))\n  );\n\n  if (authData?.auth_token) {\n    return true;\n  }\n\n  return userData.isLoggedIn;\n};\n","import { storeFcmToken } from 'services/authentication';\nimport store from 'store';\n\nexport const checkAndStoreFcmToken = (): void => {\n  const firebaseToken = store.getState().appData.fireBaseToken;\n\n  if (firebaseToken) {\n    storeFcmToken(firebaseToken);\n  }\n};\n","import dayjs from 'dayjs';\nimport { ProfileData } from 'interfaces/authentication';\nimport LocalStorage from '../bom-dom-manipulation/local-storage';\nimport { storageKeyName } from '../generic/storage-key-name';\n\nexport const getUserName = (user: ProfileData): string => {\n  const name =\n    user?.first_name !== null && user?.last_name !== null\n      ? `${user.first_name} ${user.last_name}`\n      : user.username;\n\n  return name || '';\n};\n\nexport const getUserAvatarName = (user: ProfileData): string => {\n  return getUserName(user).substr(0, 2).toUpperCase();\n};\n\nexport const ITEMS_WITH_BADGE = ['bonuses', 'messages'];\n\nexport const setUserLoginLimitStartTimeLS = () =>\n  LocalStorage.setItem(\n    storageKeyName('account', 'LOGIN_LIMIT_POPUP_START_TIME'),\n    String(dayjs().unix())\n  );\n","import { CommandNames } from 'utils/constants/swarm/swarm-command-names';\nimport RidGenerator from 'utils/swarm/rid-generator';\nimport { WebsocketEnhanced } from 'interfaces/spring-websocket-interfaces';\nimport { connectingWS } from 'hooks/useSpringConnect';\n\nconst permissibleOddsCommand = async (\n  commandObj: any,\n  rid: string,\n  callback: Function,\n  updateCallback: Function,\n  callbackError: Function | null\n) => {\n  connectingWS.then((socket: WebsocketEnhanced) => {\n    socket.sendCommand(\n      commandObj,\n      rid,\n      callback,\n      updateCallback,\n      callbackError\n    );\n  });\n};\n\nexport const getPermissibleOdds = (\n  callback: Function,\n  callbackError: Function | null\n): void => {\n  const command = {\n    command: CommandNames.GET_PERMISSIBLE_ODDS,\n    params: {},\n    rid: RidGenerator.gForCommand()\n  };\n\n  permissibleOddsCommand(command, '', callback, () => undefined, callbackError);\n};\n","import { CALCULATE_POWER_OF_10 } from 'utils/constants/app/general';\nimport { ODD_FORMATS } from 'utils/constants/betslip/odd-formats';\nimport SpringConfigs from 'utils/constants/swarm/spring-configs';\nimport { Ladder, PermissibleOdds } from 'interfaces/bet-data';\nimport { getPermissibleOdds } from 'services/get-permissible-odds';\nimport Store from 'store';\nimport { ladderIsLoaded, updateOddFormat } from 'store/actions/betslip';\n\n/*eslint no-magic-numbers:*/\n// TODO check after betslip refactor\n\nconst Config = {\n  decimalFormatRemove3Digit: false,\n  roundDecimalCoeficients: SpringConfigs.ODD_ROUNDING,\n  useLadderForFractionalFormat: true\n};\n\nconst cache: { [key: string]: string } = {};\n\nconst {\n  oddFormat,\n  ladderLoaded\n}: { oddFormat: number; ladderLoaded: boolean } = Store.getState().betSlip;\n\nlet priceDecimal: number | undefined;\n\nlet ladder: Ladder[] | boolean = false;\n\nexport async function loadLadder(id = 0): Promise<void> {\n  Store.dispatch(ladderIsLoaded());\n  getPermissibleOdds(\n    (response: PermissibleOdds) => {\n      if (response?.details) {\n        ladder = response.details;\n        Store.dispatch(updateOddFormat(id));\n      } else {\n        ladder = [];\n      }\n    },\n    () => {\n      ladder = [];\n    }\n  );\n}\n\nif (!ladderLoaded) {\n  loadLadder(oddFormat);\n}\n\n/**\n * Odd converter\n * returns a function to convert decimal odds to corresponding format\n * Usage:\n * convert(odd, formatID)\n * e.g.  const coeficient = convert(1.01, 2)\n */\nexport function convert(\n  val: string | number,\n  formatID: number | string,\n  type = ''\n): string {\n  if (isNaN(+val) || +val === Infinity) {\n    return '-';\n  }\n\n  if ((formatID === 1 || formatID === 'fractional') && !ladder) {\n    return '-';\n  }\n\n  const format =\n    ODD_FORMATS.find(\n      format => format.value === formatID || format.id === formatID\n    )?.value || 'decimal';\n\n  const value = parseFloat(`${val}`);\n  const cacheKey = `${format}${value}`;\n\n  if (isNaN(value)) {\n    return '';\n  }\n\n  if (cache[cacheKey] === undefined) {\n    if (\n      format === 'fractional' &&\n      Config.useLadderForFractionalFormat &&\n      type === 'fictional' &&\n      value !== undefined\n    ) {\n      // use it to calculate express odds as you see on bet365 :)\n      cache[cacheKey] = `${Math.round((value - 1) * 100 || 0) / 100}/1`;\n    } else {\n      const converted = convertLog(value, format, ladder as Ladder[]);\n      let roundedConverted = String(converted) || '';\n\n      if (converted && format === 'decimal') {\n        if (!priceDecimal) {\n          const partnerConfigs = Store.getState().socket.partnerConfigs;\n          priceDecimal = partnerConfigs?.price_decimals;\n        }\n\n        if (\n          priceDecimal &&\n          converted &&\n          String(converted)?.split('.')?.[1]?.length > priceDecimal\n        ) {\n          roundedConverted = Number(converted).toFixed(priceDecimal);\n        }\n      }\n\n      cache[cacheKey] = roundedConverted;\n    }\n  }\n\n  return cache[cacheKey];\n}\n\nfunction convertLog(value: number, format: string, ladder: Ladder[]) {\n  const fValue = value;\n  const iValue = Math.floor(value);\n  const rValue =\n    value !== undefined ? Math.round(fValue * 100 || 0) / 100 : value;\n\n  switch (format) {\n    case 'decimal':\n      return decimalValue(value, iValue, fValue);\n\n    case 'fractional':\n      return fractionalValue(value, fValue, rValue, ladder);\n\n    case 'american':\n      return americanValue(value, rValue);\n\n    case 'hongkong':\n      return hongKongValue(value, iValue, fValue);\n\n    case 'malay':\n      return malayValue(fValue);\n\n    case 'indo':\n      return indoValue(fValue);\n\n    default:\n      return rValue;\n  }\n}\n\nfunction decimalValue(value: number, iValue: number, fValue: number) {\n  return value !== undefined\n    ? iValue !== fValue &&\n      value.toString().split('.')[1] &&\n      value.toString().split('.')[1].length > 2 &&\n      !Config.decimalFormatRemove3Digit\n      ? Math.round(\n          value *\n            Math.pow(CALCULATE_POWER_OF_10, Config.roundDecimalCoeficients)\n        ) / Math.pow(CALCULATE_POWER_OF_10, Config.roundDecimalCoeficients)\n      : fValue.toFixed(2)\n    : value;\n}\n\nfunction fractionalValue(\n  value: number,\n  fValue: number,\n  rValue: number,\n  ladder: Ladder[]\n) {\n  if (value && Config.useLadderForFractionalFormat) {\n    const fracFL = dec2fracFromLadder(fValue, ladder);\n\n    if (fracFL) {\n      return fracFL;\n    } else {\n      const frac = dec2frac(rValue);\n\n      if (frac) {\n        return frac;\n      }\n    }\n\n    return value;\n  } else {\n    return '-';\n  }\n}\n\nfunction americanValue(value: number, rValue: number) {\n  return value\n    ? rValue > 2\n      ? `+${(100 * (rValue - 1)).toString().split('.')[0]}`\n      : rValue !== 1\n      ? (-100 / (rValue - 1)).toString().split('.')[0]\n      : '-'\n    : rValue;\n}\n\nfunction hongKongValue(value: number, iValue: number, fValue: number) {\n  return value !== undefined\n    ? iValue !== fValue && value.toString().split('.')[1].length > 2\n      ? Math.round(\n          (value - 1) *\n            Math.pow(CALCULATE_POWER_OF_10, Config.roundDecimalCoeficients)\n        ) / Math.pow(CALCULATE_POWER_OF_10, Config.roundDecimalCoeficients)\n      : (fValue - 1.0).toFixed(2)\n    : value;\n}\n\nfunction malayValue(fValue: number) {\n  if (fValue === 2) {\n    return '0.000';\n  } else if (fValue > 2) {\n    return (\n      Math.round(\n        +(1 / (1 - fValue)).toFixed(Config.roundDecimalCoeficients + 1) *\n          Math.pow(CALCULATE_POWER_OF_10, Config.roundDecimalCoeficients)\n      ) / Math.pow(CALCULATE_POWER_OF_10, Config.roundDecimalCoeficients)\n    ).toFixed(Config.roundDecimalCoeficients);\n  } else {\n    return (fValue - 1).toFixed(Config.roundDecimalCoeficients);\n  }\n}\n\nfunction indoValue(fValue: number) {\n  if (fValue === 2) {\n    return '0.000';\n  } else if (fValue > 2) {\n    return (fValue - 1).toFixed(Config.roundDecimalCoeficients);\n  } else {\n    return (\n      Math.round(\n        +(1 / (1 - fValue)).toFixed(Config.roundDecimalCoeficients + 1) *\n          Math.pow(CALCULATE_POWER_OF_10, Config.roundDecimalCoeficients)\n      ) / Math.pow(CALCULATE_POWER_OF_10, Config.roundDecimalCoeficients)\n    ).toFixed(Config.roundDecimalCoeficients);\n  }\n}\n\nfunction dec2fracFromLadder(dec: number, ladder: Ladder[]) {\n  let frac = '';\n\n  if (ladder.length) {\n    let price = 0;\n    let issetPriceArray = ladder.find(({ Price }) => Price === dec);\n\n    if (issetPriceArray) {\n      frac = `${issetPriceArray.Numerator}/${issetPriceArray.Denominator}`;\n    } else {\n      for (let i = 0; i < ladder.length; i++) {\n        if (ladder[i].Price > price && ladder[i].Price < dec) {\n          price = ladder[i].Price;\n        }\n      }\n\n      issetPriceArray = ladder.find(({ Price }) => Price === price);\n\n      if (issetPriceArray) {\n        frac = `${issetPriceArray.Numerator}/${issetPriceArray.Denominator}`;\n      }\n    }\n  }\n\n  return frac;\n}\n\nfunction dec2frac(decVal: number) {\n  let Znxt: number;\n  let Dnxt: number;\n  let Nnxt: number;\n\n  function recCalc(Zcur: number, Dcur?: number, Dprev?: number): string {\n    Dcur = Dcur !== undefined ? Dcur : 1;\n    Dprev = Dprev !== undefined ? Dprev : 0;\n    Znxt = 1 / (Zcur - Math.floor(Zcur));\n    Dnxt = Dcur * Math.floor(Znxt) + Dprev;\n    Nnxt = Math.round(decVal * Dnxt);\n\n    return Nnxt / Dnxt === decVal\n      ? `${Nnxt.toString()}/${Dnxt.toString()}`\n      : recCalc(Znxt, Dnxt, Dcur);\n  }\n\n  // Use this casting method because of JS number bug for example \"2.2 - 1 = 1.1999(9)\"\n  if (decVal !== Math.floor(decVal)) {\n    decVal = parseFloat(\n      `${(Math.floor(decVal) - 1).toString()}.${String(decVal).split('.')[1]}`\n    );\n  } else {\n    decVal = decVal - 1;\n  }\n\n  return decVal % 1 === 0 ? `${String(decVal)}/1` : String(recCalc(decVal));\n}\n","import { FAVORITE } from 'utils/constants/casino/casino-element-names';\nimport SpringConfigs from 'utils/constants/swarm/spring-configs';\nimport { isMobile } from 'utils/is-mobile';\nimport { NewCasinoCategory } from 'interfaces/new-casino';\n\nexport const leftSideBarCasinoMain = (): boolean => {\n  if (isMobile()) {\n    return false;\n  }\n\n  const matchCasinoUrl = new RegExp(`${SpringConfigs.PAGE_URLS.casino}/`);\n\n  return (\n    !!window.location.href.match(matchCasinoUrl) &&\n    SpringConfigs.LEFT_SIDE_BAR &&\n    SpringConfigs.LEFT_SIDE_BAR_CASINO\n  );\n};\n\nexport const recentPlayedParams = (catId?: number): { category_id: number } => {\n  const params = { category_id: catId || 0 };\n\n  return params;\n};\n\nexport const isShowGamesCountBadge = (\n  category: NewCasinoCategory,\n  gamesCount?: boolean\n): boolean => {\n  return !!(\n    (!!+category.games_count && !!gamesCount) ||\n    (category.id === FAVORITE && +category.games_count)\n  );\n};\n\nexport const SELECT_PROVIDERS_TYPE = 'providers';\n\nexport const clearCasinoPopupQuery = (): URLSearchParams => {\n  const querySearch = new URLSearchParams(window.location.search);\n\n  querySearch.delete('mode');\n  querySearch.delete('login');\n  querySearch.delete('gameId');\n  querySearch.delete('preview');\n  querySearch.delete('profile');\n  querySearch.delete('accounts');\n  querySearch.delete('settings');\n\n  return querySearch;\n};\n","import dayjs from 'dayjs';\n\ntype TCryptoCurrenciesMapping = Record<\n  string,\n  { chainId: number; currency: string }\n>;\n\nexport const CRYPTO_CURRENCIES_MAPPING: TCryptoCurrenciesMapping = {\n  FTNF: {\n    chainId: 5165,\n    currency: 'FTN'\n  },\n  USDT: {\n    chainId: 1,\n    currency: 'USDT'\n  },\n  USDC: {\n    chainId: 1,\n    currency: 'USDC'\n  },\n  ETH: {\n    chainId: 1,\n    currency: 'ETH'\n  },\n  BUSD: {\n    chainId: 1,\n    currency: 'BUSD'\n  },\n  BNB: {\n    chainId: 1,\n    currency: 'BNB'\n  },\n  SHIB: {\n    chainId: 1,\n    currency: 'SHIB'\n  },\n  FTN: {\n    chainId: 1,\n    currency: 'FTN'\n  },\n  DAI: {\n    chainId: 1,\n    currency: 'DAI'\n  },\n  USDT_T: {\n    chainId: 0,\n    currency: 'USDT'\n  },\n  USDB: {\n    chainId: 0,\n    currency: 'USDT'\n  }\n};\n\nexport type stakeRewardsType = {\n  data: {\n    date: dayjs.Dayjs;\n    fee: number;\n    balance: number;\n    id: number;\n  }[];\n  nextUpdate: number;\n  nextRewardTime: number;\n};\n\nexport type stakeRateType = {\n  yearly: number;\n  monthly: number;\n  daily: number;\n};\n\nexport type stakeHistoryType = {\n  data: {\n    date: dayjs.Dayjs;\n    amount: number;\n    type: string;\n    id: number;\n  }[];\n};\nexport type unStakeType = {\n  message: string;\n  status: string;\n};\n\nexport type stakeBalanceType = {\n  data: {\n    balance: number;\n    rate: number;\n  };\n};\n\nexport type stakeRecordItem = {\n  date: dayjs.Dayjs;\n  amount: number;\n  type: string;\n  id: number;\n};\n\nexport type rewardType = {\n  date: dayjs.Dayjs;\n  fee: number;\n  balance: number;\n  key?: number;\n  id: number;\n};\n\nexport const fixedDigitForLolik = 5;\n\nexport const ALL_CRYPTO_CURRENCIES = [\n  'BCH',\n  'BNB',\n  'BSS',\n  'BSV',\n  'BTC',\n  'BTS',\n  'CPC',\n  'DAI',\n  'DCP',\n  'DOG',\n  'DSH',\n  'ETC',\n  'ETH',\n  'FST',\n  'FTN',\n  'GC',\n  'GPT',\n  'GVI',\n  'GWI',\n  'IIP',\n  'KLW',\n  'LTC',\n  'MBT',\n  'MET',\n  'MTH',\n  'NLC',\n  'PBC',\n  'QCB',\n  'SHB',\n  'SPC',\n  'STH',\n  'TRX',\n  'TUS',\n  'USC',\n  'V01',\n  'V02',\n  'V03',\n  'V04',\n  'VBT',\n  'VET',\n  'VLC',\n  'VM1',\n  'VM2',\n  'VVI',\n  'WVI',\n  'WWI',\n  'XMR',\n  'XRP',\n  'YOS',\n  'ZEC',\n  'ZPT',\n  'USA',\n  'USDC'\n];\n","import SpringConfigs from 'utils/constants/swarm/spring-configs';\n\nexport const DEFAULT_CRYPTO_CURRENCY = 'FTN';\nexport const DEFAULT_FIAT_CURRENCY = 'USDT';\n// in user profile we are getting USDT name as TUS\nexport const DEFAULT_FIAT_CURRENCY_ID = 'TUS';\n\nexport const CURRENCY_NAME_LIST_COUNT = 2;\n\nexport const PaymentMethodTypes = {\n  POST: 'post',\n  GET: 'get',\n  IFRAME: 'iframe',\n  FORM_DRAW: 'formdraw',\n  MESSAGE: 'message'\n};\n\nexport const StatusUrlNames = {\n  CANCEL: 'cancel',\n  FAIL: 'fail',\n  PENDING: 'pending',\n  SUCCESS: 'success'\n};\n\nexport const DepositStatusMessages = {\n  CANCEL: 'depositStatusMessageCancel',\n  FAIL: 'depositStatusMessageFail',\n  PENDING: 'depositStatusMessagePending',\n  SUCCESS: 'depositStatusMessageDone'\n};\n\nexport const WithdrawStatusMessages = {\n  SUCCESS: 'withdrawSuccess'\n};\n\nexport const PaymentStatusValues: Record<string, string> = {\n  '-2': 'Rejected',\n  '-1': 'Canceled',\n  '0': 'New',\n  ...(SpringConfigs.HIDE_WITHDRAWAL_ALLOWED_DATE ? {} : { '1': 'Allowed' }),\n  '2': 'Pending',\n  '3': 'Paid',\n  '4': 'RollBacked'\n};\n\nexport enum TWO_WALLET_TYPES {\n  sport = 'sport',\n  casino = 'casino'\n}\n\nexport const IS_ACTIVE_TWO_WALLET =\n  !SpringConfigs.CASINO_SPORTSBOOK_SWITCHER &&\n  !!SpringConfigs.IS_TWO_WALLET_ACTIVE;\n\nexport const IS_ACTIVE_TWO_WALLET_SPORT = [0, 1].includes(\n  SpringConfigs.CASINO_SPORTSBOOK_SWITCHER\n)\n  ? TWO_WALLET_TYPES.sport\n  : TWO_WALLET_TYPES.casino;\n\nexport enum EBankVerificationTypes {\n  BANK_ID = 1,\n  DIIA = 2\n}\nexport const MAX_MONTH_VALUE = 12;\nexport const YEAR_FORMAT_FOUR_DIGITS = 4;\nexport const TEST_LENGTH = 100;\nexport const CONFIRM_MODAL_PADDING = {\n  _12: 12,\n  _0: 0\n};\nexport const CONFIRM_MODAL_WIDTH = {\n  _350: 350,\n  _420: 420\n};\nexport const CASHOUT_AROUND = 0.01;\nexport const POS_WIN_AND_CASH_OUT_MIN_DIFFERENCE = 0.02;\n/* eslint-disable no-magic-numbers */\nexport enum EPaymentStatusValuesTypes {\n  Rejected = -2,\n  Canceled = -1,\n  New = 0,\n  Allowed = 1,\n  Pending = 2,\n  Paid = 3,\n  RollBacked = 4\n}\n","import { ProfileData } from 'interfaces/authentication';\n\nexport const userActiveStep = {\n  USER_ACTIVE_STEP_STATE_VALUE_0: 0, // Data Processing\n  USER_ACTIVE_STEP_STATE_VALUE_5: 5, // Waiting Client\n  USER_ACTIVE_STEP_STATE_VALUE_3: 3, // KYC Failed\n  USER_ACTIVE_STEP_STATE_VALUE_4: 4, // KYC Expired\n  USER_ACTIVE_STEP_STATE_VALUE_7: 7, //  Waiting for Provider\n  USER_ACTIVE_STEP_VALUE_21: 21,\n  USER_ACTIVE_STEP_VALUE_27: 27,\n  USER_ACTIVE_STEP_VALUE_33: 33,\n  USER_ACTIVE_STEP_VALUE_35: 35,\n  USER_ACTIVE_STEP_VALUE_37: 37,\n  USER_ACTIVE_STEP_VALUE_40: 40, // Signicat Germany\n  USER_ACTIVE_STEP_VALUE_41: 41, // Signicat Brazil\n  USER_ACTIVE_STEP_VALUE_42: 42, // Legitimuz Brazil\n  USER_ACTIVE_STEP_VALUE_50: 50\n};\n\nexport const CLIENT_PRODUCT_STATE_CATEGORIES = {\n  sport: 1,\n  casino: 2\n};\n\nexport const checkUserStatus = {\n  bankIdIntergration(user: ProfileData | Record<string, any>): boolean {\n    return (\n      user.active_step === userActiveStep.USER_ACTIVE_STEP_VALUE_35 &&\n      user.active_step_state === userActiveStep.USER_ACTIVE_STEP_STATE_VALUE_5\n    );\n  }\n};\n","export const AppRoutes: Record<string, string> = {\n  home: '',\n  live: 'desktop-sportsbook-live',\n  prematch: 'desktop-sportsbook-prematch',\n  virtualSports: 'virtual-sport',\n  eLive: 'e-live',\n  ePrematch: 'e-prematch',\n  casinoGames: 'casino',\n  casinoTournaments: 'tournaments',\n  racing: 'racing'\n};\n\nexport const ReservedRoutes: Record<string, string> = {\n  addToBetslip: '/add-to-betslip',\n  deposit: '/account/deposit'\n};\n","import SpringConfigs from '../swarm/spring-configs';\n\nexport const isRtl = SpringConfigs.IS_RTL;\n","export const CasinoCommandNames = {\n  GET_OPTIONS: 'getOptions',\n  GET_GAMES: 'getGames',\n  GET_PROMOTED_GAMES: 'getPromotedGames',\n  GET_TOURNAMENT_GAMES: 'getTournamentGames',\n  GET_GAME_TOURNAMENTS: 'getTournaments',\n  GET_GROUPED_PROVIDER_OPTIONS: 'getGroupedProviderOptions',\n  GET_DECENTRALIZED_GAMES: 'games',\n  GET_DECENTRALIZED_GAME: 'game',\n  GET_DECENTRALIZED_CATEGORIES: 'categories'\n};\n","export const UNCATEGORIZED = 'uncategorized';\nexport const LIVE_CASINO_CATEGORY = 28;\n","export const CASINO_MULTIVIEW_ENABLED_QUERY_VALUE = 'enabled';\nexport const CASINO_MULTIVIEW = 'multiview';\n","import i18n from 'i18next';\nimport qs from 'qs';\nimport LocalStorage from 'utils/bom-dom-manipulation/local-storage';\nimport { clearCasinoPopupQuery } from 'utils/casino/casino';\nimport { CUSTOM_CATEGORIES } from 'utils/constants/casino/custom-categories';\nimport SpringConfigs, {\n  androidWrapperApp,\n  iOSWrapperApp\n} from 'utils/constants/swarm/spring-configs';\nimport { getMountPath, mountPoint } from 'utils/generic/route-manipulation';\nimport { showToastError } from 'utils/generic/show-toast-error';\nimport { storageKeyName } from 'utils/generic/storage-key-name';\nimport { isMobile } from 'utils/is-mobile';\nimport { getDomain } from './get-domain';\nimport { GLOBALS } from './global-variables';\nimport { getSavedLocation } from 'components/QueryRoute';\nimport { ReservedRoutes } from '../constants/app/app-routes';\nimport { CASINO_LANG_EXCEPTIONS } from '../constants/languages/language-format';\n\nexport const deviceIdApp = {\n  ANDROID_WRAPPER_APP: 4,\n  IOS_WRAPPER_APP: 3\n};\n\ntype GameURLParams = {\n  partnerId: number;\n  devicetypeid: number;\n  gameId: number | string;\n  language: string;\n  openType: 'fun' | 'real';\n  isMobile: boolean;\n  exitUrl?: string;\n  token?: string;\n  deposit_url?: string;\n  browserUrl?: string;\n  gameOptions?: null | string;\n  logoSource?: string;\n};\n\nconst LAUNCH_TYPE =\n  SpringConfigs.CASINO_LAUNCH_TYPE === 0\n    ? 'Launch'\n    : 'Inner/authorization.php/';\n\nconst LOUNCH_GAME_URL = `${LAUNCH_TYPE}${\n  SpringConfigs.SHOW_GAMBLING_WITH_LOGO && isMobile() ? 'Uk' : ''\n}${SpringConfigs.CASINO_LAUNCH_TYPE === 0 ? 'Game' : ''}`;\n\ntype TGameUrlProps = {\n  gameId: string;\n  gameType?: 'real' | 'fun';\n  gameOptions?: null | string;\n  scroll?: boolean;\n  extraParams?: string;\n  language?: string;\n  exitUrlParams?: {\n    includePreviousRoute?: boolean;\n    exitUrlAsHomepage?: boolean;\n    selectedCategory?: string;\n    path?: string;\n  };\n};\n\nexport const gameUrl = ({\n  gameId,\n  gameType = 'fun',\n  gameOptions = null,\n  scroll,\n  extraParams,\n  language,\n  exitUrlParams\n}: TGameUrlProps): string => {\n  const lang = document.documentElement.lang;\n  const mainDomain = getDomain();\n\n  const savedLocation = getSavedLocation('casinoSingleGame', false, false);\n\n  const queryParams = clearCasinoPopupQuery();\n\n  const [beforeLocationQuery, afterLocationQuery] = savedLocation.split('?');\n  let previousUrl = '';\n\n  if (exitUrlParams) {\n    previousUrl = `${\n      beforeLocationQuery ||\n      `${\n        isMobile()\n          ? getMountPath(exitUrlParams.path || '')\n          : mountPoint(exitUrlParams.path || '', false, true)\n      }/${exitUrlParams.selectedCategory || CUSTOM_CATEGORIES.all.id}`\n    }?${\n      !afterLocationQuery && queryParams?.size\n        ? queryParams.toString()\n        : afterLocationQuery || ''\n    }`;\n  }\n\n  const exitUrl = exitUrlParams?.includePreviousRoute\n    ? `${window.location.origin}${previousUrl}`\n    : exitUrlParams?.exitUrlAsHomepage\n    ? window.location.origin\n    : window.location.href;\n\n  const [urlPathnamePath, urlQueryPart] = exitUrl.split('?');\n\n  let filteredExitUrl = exitUrl;\n\n  if (urlQueryPart) {\n    filteredExitUrl = `${urlPathnamePath}${qs.stringify(\n      {\n        ...qs.parse(urlQueryPart, {\n          ignoreQueryPrefix: true\n        }),\n        ...{\n          accounts: undefined,\n          login: undefined\n        }\n      },\n      { addQueryPrefix: true }\n    )}`;\n  }\n\n  const mainUrl = `https://${\n    SpringConfigs.CASINO_GAME_URL_PREFIX\n  }.${mainDomain}/${!extraParams ? LOUNCH_GAME_URL : ''}?`;\n\n  let deviceId = 1;\n\n  if (androidWrapperApp) {\n    deviceId = deviceIdApp.ANDROID_WRAPPER_APP;\n  } else if (iOSWrapperApp) {\n    deviceId = deviceIdApp.IOS_WRAPPER_APP;\n  } else if (isMobile()) {\n    deviceId = 2;\n  }\n\n  const params: GameURLParams = {\n    partnerId:\n      SpringConfigs.DECENTRALIZED_CASINO_PARTNER_ID || SpringConfigs.PARTNER_ID,\n    devicetypeid: deviceId,\n    gameId: gameId,\n    language:\n      language ||\n      GLOBALS.languageConfigs.casinoLangPrefix ||\n      CASINO_LANG_EXCEPTIONS[lang] ||\n      CASINO_LANG_EXCEPTIONS[lang.slice(0, 2)] ||\n      SpringConfigs.CURRENT_LANGUAGE.slice(0, 2),\n    openType: gameType,\n    isMobile: isMobile(),\n    deposit_url:\n      SpringConfigs.CURRENT_LANGUAGE_PREFIX ===\n      SpringConfigs.DEFAULT_LANGUAGE_PREFIX\n        ? `${window.location.origin}${ReservedRoutes.deposit}`\n        : `${window.location.origin}/${SpringConfigs.CURRENT_LANGUAGE_PREFIX}${ReservedRoutes.deposit}`,\n    browserUrl: window.location.href,\n    logoSource: SpringConfigs.SITE_LOGO_URL || undefined,\n    exitUrl: filteredExitUrl\n  };\n\n  if (\n    SpringConfigs.CASINO_MOBILE_IFRAME &&\n    isMobile() &&\n    document.body.style.overflow !== 'hidden' &&\n    !scroll\n  ) {\n    document.body.classList.add('no-scroll');\n  }\n\n  if (gameType === 'real') {\n    const token = JSON.parse(\n      LocalStorage.getItem(storageKeyName('account', 'AUTH_DATA'))\n    )?.auth_token;\n\n    if (token) {\n      params.token = token;\n    } else {\n      isMobile() && showToastError(i18n.t('casino.notLoggedInForPlayingReal'));\n    }\n  }\n\n  let returnedUrl = `${mainUrl}${qs.stringify(params)}`;\n\n  if (gameOptions) {\n    returnedUrl += `&${gameOptions.split('\"').join('')}`;\n  }\n\n  if (extraParams) {\n    returnedUrl += extraParams;\n  }\n\n  if (\n    SpringConfigs.SHOW_GAMBLING_WITH_LOGO &&\n    !SpringConfigs.CASINO_MOBILE_IFRAME\n  ) {\n    returnedUrl += `&gambcomURL=${SpringConfigs.CASINO_GAMBLING_LOGO_URL}`;\n  }\n\n  return returnedUrl;\n};\n","import { domainCheck } from 'utils/bom-dom-manipulation/is-subdomain';\nimport { GLOBALS } from './global-variables';\n\nexport const getDomain = (): string => {\n  const domain = GLOBALS.appConfigs.domain;\n\n  let mainDomain = 'springbuilder.site';\n\n  if (domain && !domain.includes(mainDomain)) {\n    const { pureDomain } = domainCheck(domain);\n\n    if (pureDomain) {\n      mainDomain = pureDomain;\n    }\n  }\n\n  return mainDomain;\n};\n","export const domainCheck = (\n  url: string\n): { isSubDomain: boolean; pureDomain: string } => {\n  url = url.trim();\n\n  // Remove protocols\n  url = url.replace(/^http:\\/\\/|^https:\\/\\/|^ftp:\\/\\//i, '');\n\n  // Remove 'www.' from the start\n  url = url.replace(/^www\\./i, '');\n\n  const fullDomain = url;\n\n  // Extract pure domain, handling ccTLDs like '.co.uk' or '.uk.com'\n  const domainMatch = url.match(/([a-z0-9-]+\\.[a-z]{2,}(?:\\.[a-z]{2,})?)$/i);\n  const pureDomain = domainMatch ? domainMatch[0] : url;\n\n  // Determine if it's a subdomain\n  const isSubDomain = fullDomain !== pureDomain;\n\n  return {\n    isSubDomain: isSubDomain,\n    pureDomain: pureDomain\n  };\n};\n","import { message } from 'antd';\nimport SpringConfigs from 'utils/constants/swarm/spring-configs';\nimport { configureMessage } from 'configure/configure-message';\n\nexport const showToastWarning = (\n  content: string,\n  context: HTMLElement | undefined | null = null,\n  key?: string\n): void => {\n  configureMessage(context, SpringConfigs.ERROR_MSG_DURATION, key || content);\n  message.warn({\n    content,\n    key: key || content\n  });\n};\n","import { TooltipPlacement } from 'antd/lib/tooltip';\nimport i18n from 'i18next';\nimport { isRtl } from 'utils/constants/app/rtl';\nimport SpringConfigs from 'utils/constants/swarm/spring-configs';\nimport { TOUR_STEPS_TYPES } from 'utils/constants/tour';\n\nexport const TOUR_ACTIVE_CLASS = 'tourWrapper__active';\n\nexport type TTourResourceKey = 'sportsbook' | 'casino' | 'esport' | null;\n\nexport const SHOW_TOUR_PAGES: { [key: string]: TTourResourceKey } = {\n  CASINO: 'casino',\n  SPORTSBOOK: 'sportsbook',\n  ESPORT: 'esport'\n};\n\nexport const TOUR_PATH_NAMESPACE = (): TTourResourceKey => {\n  const pageAlias = decodeURI(window.location.href).replace(/\\/+$/, '');\n\n  if (\n    SpringConfigs.PAGE_URLS.casino &&\n    (pageAlias.includes(SpringConfigs.PAGE_URLS.casino.replace(/\\/+$/, '')) ||\n      SpringConfigs.PAGE_URLS.homepageKey === SHOW_TOUR_PAGES.CASINO)\n  ) {\n    return SHOW_TOUR_PAGES.CASINO;\n  }\n\n  if (\n    SpringConfigs.PAGE_URLS.prematch &&\n    (pageAlias.includes(SpringConfigs.PAGE_URLS.prematch.replace(/\\/+$/, '')) ||\n      SpringConfigs.PAGE_URLS.homepageKey === SHOW_TOUR_PAGES.SPORTSBOOK)\n  ) {\n    return SHOW_TOUR_PAGES.SPORTSBOOK;\n  }\n\n  if (\n    SpringConfigs.PAGE_URLS.esport &&\n    (pageAlias.includes(SpringConfigs.PAGE_URLS.esport.replace(/\\/+$/, '')) ||\n      SpringConfigs.PAGE_URLS.homepageKey === SHOW_TOUR_PAGES.ESPORT)\n  ) {\n    return SHOW_TOUR_PAGES.SPORTSBOOK;\n  }\n\n  return null;\n};\n\nconst placement = isRtl ? 'leftTop' : 'rightTop';\n\ntype TTourSliderReturnProps = {\n  active: boolean;\n  step: number;\n  selector: TOUR_STEPS_TYPES;\n  placement: TooltipPlacement;\n  modal: {\n    title: string;\n    description: string;\n  };\n};\n\ntype TTourItemGenerateStructureProps = {\n  index: number;\n  currentActiveTourStep: number;\n  selector: TOUR_STEPS_TYPES;\n  placement: TooltipPlacement;\n};\n\nexport const TOUR_STEPS_LIST: Record<\n  TOUR_STEPS_TYPES,\n  ({\n    index,\n    currentActiveTourStep,\n    selector,\n    placement\n  }: TTourItemGenerateStructureProps) => TTourSliderReturnProps\n> = {\n  [TOUR_STEPS_TYPES.yourPreferences]: ({\n    index,\n    currentActiveTourStep,\n    selector,\n    placement\n  }: TTourItemGenerateStructureProps): TTourSliderReturnProps => ({\n    placement,\n    active: currentActiveTourStep === index,\n    step: index,\n    selector,\n    modal: {\n      title: i18n.t('generic.yourPreferencesSection'),\n      description: i18n.t('generic.yourPreferencesSectionDescription')\n    }\n  }),\n  [TOUR_STEPS_TYPES.addSports]: ({\n    index,\n    currentActiveTourStep,\n    selector,\n    placement\n  }: TTourItemGenerateStructureProps): TTourSliderReturnProps => ({\n    placement,\n    active: currentActiveTourStep === index,\n    step: index,\n    selector,\n    modal: {\n      title: i18n.t('generic.addSport'),\n      description: i18n.t('generic.addSportDescription')\n    }\n  }),\n  [TOUR_STEPS_TYPES.addCompetitions]: ({\n    index,\n    currentActiveTourStep,\n    selector,\n    placement\n  }: TTourItemGenerateStructureProps): TTourSliderReturnProps => ({\n    placement,\n    active: currentActiveTourStep === index,\n    step: index,\n    selector,\n    modal: {\n      title: i18n.t('generic.addCompetitions'),\n      description: i18n.t('generic.addCompetitionsDescription')\n    }\n  }),\n  [TOUR_STEPS_TYPES.addCompetitionsTopMatches]: ({\n    index,\n    currentActiveTourStep,\n    selector,\n    placement\n  }: TTourItemGenerateStructureProps): TTourSliderReturnProps => ({\n    placement,\n    active: currentActiveTourStep === index,\n    step: index,\n    selector,\n    modal: {\n      title: i18n.t('generic.addCompetitions'),\n      description: i18n.t('generic.addCompetitionsDescription')\n    }\n  }),\n  [TOUR_STEPS_TYPES.addGameCards]: ({\n    index,\n    currentActiveTourStep,\n    selector,\n    placement\n  }: TTourItemGenerateStructureProps): TTourSliderReturnProps => ({\n    placement,\n    active: currentActiveTourStep === index,\n    step: index,\n    selector,\n    modal: {\n      title: i18n.t('generic.addGameCards'),\n      description: i18n.t('generic.addGameCardsDescription')\n    }\n  }),\n  [TOUR_STEPS_TYPES.addMarketCards]: ({\n    index,\n    currentActiveTourStep,\n    selector,\n    placement\n  }: TTourItemGenerateStructureProps): TTourSliderReturnProps => ({\n    placement,\n    active: currentActiveTourStep === index,\n    step: index,\n    selector,\n    modal: {\n      title: i18n.t('generic.addMarketCards'),\n      description: i18n.t('generic.addMarketCardsDescription')\n    }\n  }),\n  [TOUR_STEPS_TYPES.myCasino]: ({\n    index,\n    currentActiveTourStep,\n    selector,\n    placement\n  }: TTourItemGenerateStructureProps): TTourSliderReturnProps => ({\n    placement,\n    active: currentActiveTourStep === index,\n    step: index,\n    selector,\n    modal: {\n      title: i18n.t('generic.yourFavoriteGames'),\n      description: i18n.t('generic.yourFavoriteGamesDescription')\n    }\n  }),\n  [TOUR_STEPS_TYPES.myCasinoProviderItem]: ({\n    index,\n    currentActiveTourStep,\n    selector,\n    placement\n  }: TTourItemGenerateStructureProps): TTourSliderReturnProps => ({\n    placement,\n    active: currentActiveTourStep === index,\n    step: index,\n    selector,\n    modal: {\n      title: i18n.t('generic.addFavoriteGameProvider'),\n      description: i18n.t('generic.addFavoriteGameProviderDescription')\n    }\n  }),\n  [TOUR_STEPS_TYPES.myCasinoGameCard]: ({\n    index,\n    currentActiveTourStep,\n    selector,\n    placement\n  }: TTourItemGenerateStructureProps): TTourSliderReturnProps => ({\n    placement,\n    active: currentActiveTourStep === index,\n    step: index,\n    selector,\n    modal: {\n      title: i18n.t('generic.addFavoriteCasinoGame'),\n      description: i18n.t('generic.addFavoriteCasinoGameDescription')\n    }\n  })\n};\n\nexport const detectTourMethod = (\n  selector: TOUR_STEPS_TYPES,\n  index: number,\n  currentActiveTourStep: number\n) => {\n  return TOUR_STEPS_LIST[selector]({\n    index,\n    currentActiveTourStep,\n    selector,\n    placement: [\n      TOUR_STEPS_TYPES.addGameCards,\n      TOUR_STEPS_TYPES.addMarketCards\n    ].includes(selector)\n      ? 'bottom'\n      : placement\n  });\n};\n","import { timeoutDuration } from 'utils/constants/dateInfo/time-numbers';\n\nconst timers: Record<string, NodeJS.Timeout> = {};\n\nexport function debounce<T extends unknown[]>(\n  debounceId: string,\n  func: (...args: T) => void,\n  timeout = timeoutDuration.DURATION_300\n): (...args: T) => void {\n  return (...args: T) => {\n    clearTimeout(timers[debounceId]);\n    timers[debounceId] = setTimeout(() => {\n      func(...args);\n    }, timeout);\n  };\n}\n"],"names":["Container","styled","span","withConfig","displayName","componentId","GameNameRedirection","_ref","gameId","gameName","isLoading","setIsLoading","useState","t","useTranslation","history","useHistory","dispatch","useDispatch","timeStamp","useSelector","getTimeFiltersData","tournamentSportIds","getTournamentSportIds","_jsxs","onClick","getGameData","executeCommand","RidGenerator","gForCommand","sports","regions","competitions","game","id","Number","data","_serializedData$games","serializedData","serializeSwarmData","games","length","isEsport","type","SpringConfigs","PAGE_URLS","esport","isLive","isRacing","RACING_SPORT_IDS","includes","redirectBase","live","racing","prematch","isLongPath","isMobile","alias","SPORTSBOOK_MOUNT_PATH","ERacingPageTypes","UPCOMING","Object","keys","RACING_SPORT_ALIAS","find","key","finalPath","replace","window","location","href","pathname","search","setMustClose","shouldRedirect","sbRedirect","_serializedData$sport","pathnameBase","split","origin","setTimeFilterData","option","date","count","undefined","name","setRegionCompData","setGames","setTournamentSportIds","push","errorKey","showToastError","title","children","_jsx","_Fragment","map","elem","Loading","size","EIconSize","_16","className","EBetBuilderModalActions","BetBuilderModalActions","open","payload","fireEvent","OPEN_BET_BUILDER_MODAL","updateProps","UPDATE_BET_BUILDER_MODAL_PROPS","close","CLOSE_BET_BUILDER_MODAL","BUTTON_TEXT_MAPPING","userActiveStep","USER_ACTIVE_STEP_STATE_VALUE_0","USER_ACTIVE_STEP_STATE_VALUE_5","MESSAGE_MAPPING","USER_ACTIVE_STEP_STATE_VALUE_3","USER_ACTIVE_STEP_STATE_VALUE_4","USER_ACTIVE_STEP_STATE_VALUE_7","USER_ACTIVE_STEP_STATES_TO_SHOW_STATUS_BAR","k","ESignicatVerificationActions","AddToBetslipLink","lazyImport","AddToBetslipLinkCheck","queries","useSearchParams","useLocation","changeOddFormat","useChangeOddFormat","isAddToBetslip","setIsAddToBetslip","useEffect","IFRAME_SPORTSBOOK","odds_type","format","arrayFindBy","ODD_FORMATS","value","ReservedRoutes","addToBetslip","LocalStorage","getItem","storageKeyName","deposit","path","Suspense","fallback","DeRealityCheck","lazy","CheckDeRealityCheck","isLoggedIn","getIsLoggedIn","SHOW_REALITY_CHECK","CommunityChatContent","CommunityChat","communityChatAvailable","document","querySelector","COMMUNITY_CHAT_ENABLED","Portal","CurrencyRelatedLogic","useGetCurrencyConfigs","currencyId","useCurrency","useLayoutEffect","setRoundingLoading","getCurrencyConfigs","dataObj","currency","_currency$Object$keys","rounding","setRounding","user","getUser","pending","switchCurrency","event","action","CRYPTO_CURRENCIES_MAPPING","FTNF","addQuery","selected_wallet","saveCurrentLocation","getPathname","accounts","login","addEventListener","removeEventListener","FetchGenericSettings","prepareFavoritesInitialData","FavoritePersonalization","preparedData","newData","deepMerge","accountSettings","personalizationGenericSettings","shouldMergeInFirst","applyEmptyArraysAndObjects","setPersonalizedGenericSettings","prefetcherCalled","IconsPrefetcher","prefetchIcons","iconUrl","UtilsIcons","createUrl","lib","theme","iconRemoveUrl","prefetch","InitializeFirebase","WRAPPER_APP","token","getCookie","store","setFirebaseToken","then","async","initAndGetFirebaseToken","error","console","LoginRelatedLogic","username","setUsername","password","setPassword","openCasinoGame","useOpenGameCustomCode","openGame","useOpenCasinoGame","mode","fetchGamesByIds","loginCallback","useLoginCallback","rememberMe","SB","historyPush","sbLogin","pass","markAsReadNotification","PopupPortal","modals","usePopup","modal","PostMessageRelatedLogic","searchObject","qs","ignoreQueryPrefix","message","opener","postMessage","status","RedirectFromStatistics","hash","StatisticsRedirectPath","searchParams","slice","indexOf","setItem","JSON","stringify","lang","STATISTICS_LANG","language","getWithLangMountPath","RedirectToSingleGameViewContent","RedirectToSingleGameView","useSbRouteMatch","Route","getMountPath","RedirectToSingleViewRoute","SumSubKYCVerification","SumSubKYCVerificationCheck","sumSubModalOpen","getSumSubModalOpen","accountParams","useFetchAccountParams","sumSubWithdrawalAction","active_step","USER_ACTIVE_STEP_VALUE_37","active_step_state","Tour","TourWrapper","tourWrapperActive","tourMethods","setTourMethods","tourSteps","getTourSteps","tourModalVisible","getTourModalVisible","tourStepsInitialData","gettourStepsInitialData","resource","TOUR_PATH_NAMESPACE","Boolean","values","step","active","isActiveTour","USER_PERSONALIZATION_ENABLED","resources","useMemo","_tourStepsInitialData","_tourStepsInitialData2","currentActiveTourStep","finished","skipped","reduce","list","selector","index","detectTourMethod","setTourSteps","useDebounce","tours","querySelectorAll","forEach","tour","tourStepType","getAttribute","Set","TOUR_STEPS_TYPES","addCompetitions","filter","addCompetitionsTopMatches","DEBOUNCE_DELAY","_3000","useTour","TurnstileCheck","turnstileEnabled","getTurnstileEnabled","container","useRef","wrapper","ref","GlobalIcon","current","style","display","innerHTML","IS_RTL","BetBuilderModal","memo","betBuilderModalVisible","fixtureId","toggleBetBuilderModal","gameTitle","sportId","closeBetBuilderModal","useCallback","e","stopPropagation","Modal","maxWidth","width","zIndex","ZINDEX_HIGH_5","align","renderInBody","padding","wrapperContainerPadding","centered","closeIcon","color","visible","onCancel","maskStyle","ZINDEX_HIGH_6","borderRadius","bodyStyle","textAlign","image","BetBuilderContent","BetBuilderModalGeneric","modalProps","setModalProps","useEventbus","_ref2","prevProps","DoBetRecaptchaComponent","DoBetRecaptcha","getRecaptchaEnabled","GeolocationFailedPopup","modalVisible","setModalVisible","EGeolocationFailedPopup","ShowPopup","closable","ZINDEX_MODAL","backgroundColor","ModalWidth","MOBILE_350","DESKTOP_420","dangerouslySetInnerHTML","__html","ModalButtons","Button","fullwidth","KYCVerificationStatusBarComponent","KYCVerificationStatusBar","SHOW_KYC_STATUS_BAR","verificationKYCStatus","LoyaltyDataFetcher","LoyaltyDataFetcherWrapper","partnerConfigs","getPartnerConfigs","isLoyaltyV2","is_using_loyalty_program","is_loyalty_v2","isLegitimuzVerificationType","KYC_VERIFICATION_TYPE","EKycType","Legitimuz","SignicatVerificationBeforeActions","verificationParams","setVerificationParams","confirmUrl","setConfirmUrl","Verify","shouldVerify","shouldVerifyByEmail","email","commandName","CommandNames","GET_LEGITIMUZ_ACTION_CONFIRMATION_URL","GET_SIGNICAT_ACTION_CONFIRMATION_URL_BY_EMAIL","GET_SIGNICAT_ACTION_CONFIRMATION_URL","requestParams","swarmCommand","details","IsConfirmed","ConfirmationUrl","Failed","ConfirmationUrlQr","Verified","callbackActionParams","err","errMessage","result_text","interval","setInterval","_ref3","clearInterval","loading","disabled","WrongLoginAttemptsUnlockPopup","form","_Form","useForm","code","successResetModalOpen","setSuccessResetModalOpen","signicatVerificationErrKey","setSignicatVerificationErrKey","onSubmit","params","avoidVerificationCHeck","FACIAL_VERIFICATION_BEFORE_ACTIONS","SEND_WRONG_LOGIN_ATTEMPTS_RESET_CODE","showToastSuccess","resetFields","EWrongLoginAttempts","VERIFY_WRONG_LOGIN_ATTEMPTS_RESET","confirmation_code","validateFields","ModalWithInput","singleButton","description","Image","Input","SolidFormItem","hasFeedback","rules","required","validator","Promise","reject","resolve","placeholder","onChange","onFinish","maskClosable","direction","NewDepositPopup","depositPopupVisible","setDepositPopupVisible","paymentData","setPaymentData","activeGames","getActiveGames","isThereAnyActiveGame","shouldDisplay","parse","paymentDataStorage","amount","removeItem","ZINDEX_HIGH_2","body","classList","remove","formatAmountWithCurrency","block","AgePopup","ENOUGH_OLD","localStorage","setVisible","visibleNotEnoughOld","setVisibleNotEnoughOld","CONFIRM_MODAL_PADDING","_0","CONFIRM_MODAL_WIDTH","_420","ZINDEX_TOOLTIP","InitializeOneSignal","InitializeFastTrack","NotificationsRedirectionsHandler","HooryRelatedLogic","BetModalCheck","Iovation","GamblingAreas","CheckHomeworkData","LogoutRelatedLogic","IframeSportsbookLogic","CheckUserPersonalization","CheckGeoComply","BrazilMigrateKYC","PagcorPopup","COLOR_SET","buttonsColor","buttonsTextColor","themeColor","themeTextColor","pinnedWidgetColor","pinnedWidgetTextColor","Generic","isDarkMode","getIsDarkMode","setIsDarkMode","_history","fromNext","themingChangeColors","styleElem","getComputedStyle","colorsArray","colorSet","getPropertyValue","_window$__dataspot__","_window$__dataspot__$","__dataspot__","trackThemingChange","call","themeColors","PUSH_NOTIFICATIONS_ENABLED","QueryRoute","component","GAMBLING_AREAS","MOCKED_DATA","VERIFY_AGE_POPUP","IS_BET_SHARING_AVAILABLE","SESSION_LIFE_TIME","INACTIVITY_LOGOUT_ENABLED","FIREBASE_ENABLED","HOMEWORK_ENABLED","HOORY_ENABLED","IOVATION_ENABLED","ONE_SIGNAL_APP_ID","FAST_TRACK_BRAND","GEO_COMPLY_ENABLED","SHOW_ADDITIONAL_CHECKBOX_FOR_LOGIN","VERIFICATION_TYPE","PAGCOR_POPUP","onAfterLoad","onBeforeLoad","_32","userGroups","inPopup","authData","isTwoFactorPopupVisible","setIsTwoFactorPopupVisible","qrCodeOrigin","setQrCodeOrigin","regFieldsData","getRegFieldData","personalId","field","formType","updateAuthData","storeUser","terms_and_conditions_version","setTermsAndConditionVersion","updateUser","editForm","showOnEditProfile","personalIdType","sendCPFAsDocNumber","getUserAllNotifications","useUpdateUser","userData","_authData$current","setCookieLoginCredentials","jwe_token","setUserData","last_login_date","Math","floor","Date","getTime","MILLISECONDS_IN_SECOND","setLoginLimit","session_duration","SECONDS_PER_MINUTE","active_time_in_casino","SessionStorage","afterSignIn","AfterSignIn","setAfterExecutionCallback","isActionsExist","getSavedLocation","splitLocation","parsedQuery","updatedLocation","setUserLoggedIn","CookieExpiration","DAYS_15","executeActions","auth_token","user_id","qr_code_origin","authentication_status","ADD_INFO_AFTER_LOGIN","setShowAdditionalInfo","checkAndStoreFcmToken","sendPostMessage","VAIX_IFRAME_ID","popupIframe","sendRestoreLoginPostMsg","loginState","LOGIN_LIMIT_POPUP","PLAYER_ACTIVITY_CHECK","setUserLoginLimitStartTimeLS","Description","p","enableAutocomplete","classname","cc","ModalPadding","MOBILE_12","DESKTOP_24","DESKTOP_468","autoComplete","htmlType","CustomHeader","iconLib","iconName","iconTheme","_24","_20","MAX_1272","wrapperPadding","preventScrollDisable","hideBorder","destroyOnClose","fixBody","customHeader","contentPadding","wrapClassName","getContainer","placement","fullPage","footer","closeIconStyle","rest","openedModals","getOpenedModals","getBetslipOpen","modalId","uuidv4","_preventScrollDisable","usePopupScrollDisable","updateOpenedModal","updateType","openedModalsCopy","setOpenedModals","CustomModal","WRAPPER_8","onClose","_72","props","flexDirection","deviceActionManager","vibrate","hapticMessage","_window","_window$webkit","_window$webkit$messag","iOSWrapperApp","webkit","messageHandlers","triggerHaptic","useAccountLogout","clearDataFromStorage","firebaseToken","getFirebaseToken","oneSignalSubId","getOneSignalSubId","additionalParams","fcm_token","subscription_id","setOneSignalSubId","logout","_window$median","addQueryInString","register","removeUserData","setUserOptIns","setUserNotifications","setClientGamingStateInfo","LS","deleteCookie","refreshWhenLoggedIn","mustRefreshForSessionVisibility","reload","median","auth","delete","removeUser","accountLogout","switchMultiAccount","singleSignIn","IS_MULTI_ACCOUNT_DISABLED","updateUserData","super_bet","setPendingSuperBets","updateOpenBets","authCommand","command","MARK_AS_READ_NOTIFICATION","rid","useUserNotifications","openPopupTriggering","popupTriggeringRules","popupOpened","comparision","_data$key$Page","rule","ClientId","Id","Page","Value","openedPopupsList","currentLanguageId","GLOBALS","languageConfigs","_window$openPopup","openPopup","Alias","Comparison","triggeringUrlValue","triggeringUrlRule","enableTriggeringRule","triggeringTime","_window$openPopupsWit","_window2","triggeringRuleIsWorked","openPopupsWithInterval","setCashbackData","tickets","entries","cashbackData","ticketId","ticket","cashback","Amount","RewordType","markAsRead","bonusType","setCashbackNotifications","setLoyaltyData","loyaltyData","LevelUpBonus","setLoyaltyNotifications","gForSubscribe","subscribeToUserNotifications","cashout","updateBetTickets","unsubscribeCommand","useBetslipNotEmptyPopup","showPopup","onConfirm","modalAlert","text","successBtn","cancelBtn","queryParams","URLSearchParams","has","toString","oddFormat","getOddFormat","ladderLoaded","getLadderLoaded","updateOddFormat","loadLadder","setOddsFormat","useBalance","useBonusBalance","getUseBonusBalance","accountBalanceAvailable","useAccountBalanceAvailable","isFrenchFreeBetEnabled","getIsFrenchFreeBetEnabled","_user$bonus_balance","balance","bonus_balance","bonus_win_balance","frozen_balance","bonus_money","checker","allLsBets","getAllLsBets","quickBetEnabled","getQuickBetEnabled","partnerConfig","sport_bonus","useCheckStakeBalance","debounceDuration","arguments","timeoutDuration","DURATION_500","isFreeBetEnabled","getIsFreeBetEnabled","useFrenchFreeBet","editBet","getEditBet","debounceId","getToDeposit","openParentPage","wallet","debounce","contextId","stake","callback","isBetMinLimitStake","checkMinBetStakeLimit","betLimitMinStakeForEditBet","min_bet_stakes","minLimit","min_bet","thousandSeparator","showToastWarning","getElementById","isInsufficient","checkInsufficientBalance","balanceError","cursor","effect","delay","deps","isDebouncing","setIsDebouncing","handler","setTimeout","clearTimeout","initialModalsValue","currentModals","globalSetModals","_data$0$id","globalModalAlert","_removeFromModal","_currentModals","findIndex","item","res","splice","singletonHook","setModals","_data$closable","ZINDEX_HIGH_1","icon","_data$cancelBtn","isRtl","condition","scrollPositionRef","timer","overflow","scrollY","touchAction","documentElement","position","DURATION_200","removeProperty","setOverflowInterval","DURATION_100","scrollTo","ENewCasinoFailedDataMessage","ENewCasinoGamesFetchingParamsKey","EPlayerActivityCheckerActions","BetBuilderStakeInputDesktop","BetBuilderStakeInputMobile","BetBuilderStakeInput","priceTypes","BookingModal","BetBuilderSuccessBetModal","BB_IFRAME_WRAPPER_ID","showTitle","scale","leftSidebarOpenCloseTrigger","getLeftSidebarOpenCloseTrigger","scaleValue","setScaleValue","isSuccessModalOpen","setIsSuccessModalOpen","bookIds","setBookIds","bookingModalVisible","setBookingModalVisible","placeBetLoading","setPlaceBetLoading","bookBetLoading","setBookBetLoading","submitDisabled","setSubmitDisabled","stakeAmount","setStakeAmount","decimalPrice","setDecimalPrice","betslipUid","setBetslipUid","betBuilderData","setBetBuilderData","priceList","setPriceList","checkStakeBalance","betBuilderUrl","generateBetBuilderUrl","BET_BUILDER_URL","odds","culture","BET_BUILDER_LANGUAGE_MAPPING","useGenerateBetBuilderUrl","fields","UseGenerateBetBuilderFooterFields","odd","formatAmount","useFormatAmount","taxes","getTaxes","roundingLoading","getRoundingLoading","basicTaxParams","isEachWay","eventId","sportIds","basicTaxesResult","calculateBasicTaxes","rangeTaxParams","result","possibleWin","rangeTaxResult","calculateRangeTaxes","_taxes$basic","_taxes$basic2","_basicTaxesResult$tax","isTaxForStake","basic","ETaxTypes","STAKE_TAX","BetslipCalculationField","addSeparatorAndCut","isTaxable","_taxes$basic3","_taxes$basic5","percent","_taxes$basic4","translation","taxAmount","POSSIBLE_WIN_TAX","POSSIBLE_WIN_TAX_WITHOUT_STAKE","_taxes$basic6","_basicTaxesResult$tax2","bankersRounding","_taxes$basic7","_basicTaxesResult$tax3","_rangeTaxResult$resul","_rangeTaxResult$taxes","isTaxesAvailable","isTotalReturnAlreadyDisplayedOnFooter","roundMultipleAmount","possibleWinWithoutRangeTax","_rangeTaxResult$taxes2","_rangeTaxResult$taxes3","_rangeTaxResult$taxes4","_rangeTaxResult$taxes5","_rangeTaxResult$taxes6","rangeTaxedPossibleWinWithoutStakeTaxAmount","rangeTaxAmount","rangeTaxedPossibleWinTaxAmount","taxPercent","_rangeTaxResult$resul2","daraTestId","onBookBet","useBookBet","currentType","BET_BUILDER","NAME","totalStake","setSystemMinCount","betslipRef","resetBetslip","changeStakeAmount","removeComma","roundAmount","handlePlaceBet","disable","SPORT_CAST_CREATE_BET","betslip_uid","checkPlayerActivity","inputDynamicProps","maxLength","SEPARATOR","BETSLIP_STAKE_LIMIT","handleSuccessModalAction","_parsedData$betBuilde","_parsedData$betBuilde2","_parsedData$betBuilde3","parsedData","_parsedData$betBuilde4","_parsedData$betBuilde5","_parsedData$betBuilde6","Selection","PriceDetails","DecimalPrice","_document$getElementB","containerWidth","clientWidth","noSocialSharing","border","minWidth","transform","transformOrigin","height","src","_Row","_Col","xl","ColSizes","SIZE_12","xs","SIZE_24","Divider","distance","BetslipCalculationResult","TERMINAL_MODE","handleBookBet","randomNumberForAddBlocker","rand","mask","afterClose","renderCloseIconInMask","modalContainerRef","handleClose","closeModal","timeout","modalContent","customModal__notCentered","customModal__left","customModal__right","customModal__top","customModal__bottom","handleMaskClick","rootId","orientation","margin","forwardRef","label","createTestId","_Input","RESOLVE_AFTER_SIGNIN_DURATION","UtilsCasino","checkIsGameAlreadyCached","_cachedGames$gameId","getState","newCasinoStore","cachedGames","constructAndRedirectToGameView","view","ECasinoGameView","SINGLE","selectedCategory","tournament","gameIndexToChange","queriesToRemove","isUserLoggedIn","UtilsAccount","checkIsUserLoggedIn","transitionToGameUrl","saveUrl","showInUrl","firstGameMode","_game$cats$","gameCategorySection","DECENTRALIZED_CASINO_URL","cats","UNCATEGORIZED","providerSection","fromAllCapitalizedToDasherized","provider_title","gameSection","extearnal_game_id","categorySection","CUSTOM_CATEGORIES","all","queryObj","queriesToRemoveObj","acc","query","relativePath","currentPageArea","getCurrentPageArea","queryObject","casino","CASINO_MOUNT_PATH","join","hasPopup","gameRoute","mountPoint","tournamentId","pushState","setSelectedCasinoGame","addCachedGameId","batchActions","setCachedGamesInactive","addCachedGame","setCachedGameMode","browserHistory","MULTI","fromEntries","multiview","CASINO_MULTIVIEW_ENABLED_QUERY_VALUE","gameToChange","extractGameInfoFromSearchParams","setCachedGameInactive","ECasinoGameMode","FUN","queryToUpdate","encodeGameIdWithPrefix","order","normalizeStringifiedQuery","currentGameInfo","getCasinoParams","ECasinoGameViewOrder","FIRST","gameExternalId","SECOND","addQueryPrefix","REAL","CASINO_MOBILE_IFRAME","gameUrl","gameType","gameOptions","game_options","param","openLoginView","transitionFn","bind","appendAction","AFTER_SIGN_IN_ACTION_TYPES","CONSTRUCT_CASINO_VIEW_URL","reconstructAndRedirectToGameView","callbackAfterSignin","routeToSaveInStorage","saveRouteKey","RECONSTRUCT_CASINO_VIEW_URL","decodeGameIdWithPrefix","isNaN","parseInt","stringifiedQuery","splittedQuery","firstGameIndex","startsWith","endsWith","secondGameIndex","temp","getRouteLength","_window$getPathname$s","_window$getPathname$s2","BetslipCalculationResultValue","BetslipCalculationResultPortal","_attributes$className","attributes","Skeleton","constructor","attributesOrLoading","_loading","this","i18n","generateSimpleId","_formatAmount","prevId","formatPrice","PRICE_SEPARATOR","HIDE_TRAILING_ZEROES","appData","afterSignInFetcherId","hookId","useId","stakes","getAllStakes","afterSignInActions","getAfterSignInActions","showBetslipNotEmptyPopup","system","getSelectedSystem","betslipPresent","getBetslip","bookId","setBookId","bookingProgress","setBookingProgress","getByBookIdProgress","setGetByBookIdProgress","onBookBetCallback","onBookBetCallbackError","getBets","betType","BET_TYPES","coeficient","single","BetType","Selections","SelectionId","Price","TYPE","BetSlipUid","general","SYSTEM","SystemMinCount","promises","EBetslipBetType","bet","bookBet","booking_id","selection_id","CHAIN","MULTIPLE","betTypeKey","bookBetId","setMustOpen","getEvents","afterSignInActionsCopy","assign","setAfterSignInActions","onSubmitBookId","getEventsByBookingId","_data$details$bets$0$","eventsAndGames","bets","selections","_ref4","match_id","getEventsReadyForBetslip","betslipEventsData","sport","betslipIsEmpty","afterSubmitBookId","errorData","msg","bookingData","originalEventsLength","betslipReadyEvents","createBetslipEventsFromSwarm","match_ids","bet_type","betslipEventsToSort","matchId","_ref5","system_min_count","selectedSystem","addBetSlipMultipleEvents","setSystemMinCombinationsCount","SYSTEM_BET_MIN_EVENTS_COUNT","dispatchBetslipBetType","BETSLIP_BET_TYPES_BY_BET_NUMBER_TYPE","calculateAndDispatchUpdates","GENERAL_FIELD_KEY","setIsBookingMode","setBookBetIdInLs","accountJsonQuery","getAccountJsonQuery","useQuery","queryKey","EAccount","queryFn","ACCOUNT_PARAMS","retry","CYPRUS_ACCOUNT_TYPE","externalContext","useCasinoOpenGameConfigsValues","routeMatchCategory","_routeMatchCategory$p","onOpenGame","category","CasinoOpenGameConfigsContext","createContext","CasinoOpenGameConfigsProvider","Provider","useContext","afterExecutionCallback","setFinalExecutionCallback","finalExecutionCallback","promise","actions","removeActions","successAction","func","_instance","getMessageContextBasedOnBetslipOpenState","messageContext","_Store$getState$betSl","isBetslipOpen","Store","betSlip","betslipOpen","isFloatingBetslipEnabled","IS_BETSLIP_FLOATING_ENABLED","betCommand","commandObj","updateCallback","callbackError","connectingWS","socket","sendCommand","oddChangeHandlerCallbackWrapper","response","setAcceptBet","StatusCode","Data","isStatusCode","REPLACE_EDIT_BET_TRANSLATIONS","ERROR_CODE_TIMEOUT_1800","_Data$ErrorData","_Data$ErrorData2","changedOdd","ErrorData","old_price","OldPrice","new_price","ActualPrice","Array","isArray","oddsChangedText","convert","doBet","_Store$getState$betSl2","_callback","sendCreateBet","sendDoBet","isBonusMoney","sys_bet","bonus_id","predefined_multiple_id","source","each_way","location_token","additional_amount","old_bet_id","betId","DO_BET","MODE_TYPES","ODD_NOT_CHANGE","odd_type","is_bonus_money","is_free_bet_money","freeBetStore","freeBets","_data$details","setSelectedProfitBoostEventId","setFreeBetSelectedEventId","selectedFreeBetId","removeFreeBetItem","is_superbet","SwarmSuccessMessages","queryClient","getQueryData","_data$details2","_data$details3","AppendCustomCodes","APPEND_CUSTOM_CODE_BETSLIP","appendCustomCode","CUSTOM_CODE_BETSLIP","bet_id","first_name","last_name","btag","userId","phone","CREATE_BETS","Source","EachWay","Events","event_id","Coeficient","price","OddType","Type","AdditionalAmount","IsFreeBetMoney","GeoLocationToken","OldBetId","_data$Data","_data$Data$","_data$Data$2","_data$Data$3","getV3Freebet","GET_FREEBETS_FOR_BETSLIP_V3","GET","CommandSource","CURRENCY_CONFIG","what","where","subscribe","BOOK_BET","tid","cashdesk_id","GET_EVENTS_BY_BOOKING_ID","eventsAndGameIds","callBackError","getOnlyEventIds","gameIds","eventIds","entity","events","BETTING","region","competition","market","counterCounterOfferAnswer","acceptOffer","SUPER_BET_ANSWER","accept","checkBetStatus","CHECK_BET_STATUS","ids","_params","showErrorMessage","useExternalId","decentralized","partnerId","DECENTRALIZED_CASINO_PARTNER_ID","partner_id","PARTNER_ID","is_mobile","casinoLangPrefix","by_key","use_webp","IS_WEBP_SUPPORTED","country","CURRENT_COUNTRY_CODE","external_id","url","CasinoCommandNames","CASINO_URL","axios","SUCCESS_STATUS_CODE","externalGameId","types","realMode","funMode","icon_1","icon1","icon_2","icon2","icon_3","icon3","provider","provider_badge","show_as_provider","categories","statusText","catch","setGamesNotifications","gameInfo","shouldSubscribe","SET_GAMES_NOTIFICATIONS","game_list","event_name","is_subscribed","GET_USER_ALL_NOTIFICATIONS","resp","setCasinoOriginalCategories","NewCasinoActionTypes","SET_CASINO_ORIGINAL_CATEGORIES","setEnhancedParams","enhancedParams","SET_ENHANCED_PARAMS","setTotalCount","totalCount","SET_GAMES_TOTAL_COUNT","setGamesConfigs","gamesConfigs","SET_GAMES_CONFIG","setCasinoCustomCategories","SET_CASINO_CUSTOM_CATEGORIES","setCasinoOriginalCategoriesSet","SET_CASINO_ORIGINAL_CATEGORIES_SET","setCasinoOriginalCategoriesSetLeftSideBar","SET_CASINO_ORIGINAL_CATEGORIES_SET_LEFT_SIDEBAR","setCategoryProviderIds","SET_CASINO_CATEGORY_PROVIDER_IDS","setCanRequestCategoriesNestedData","SET_CAN_REQUEST_CATEGORIES_NESTED_DATA","setCanRequestProvidersNestedData","SET_CAN_REQUEST_PROVIDERS_NESTED_DATA","setLastPlayedCatSettings","SET_LAST_PLAYED_CAT_SETTINGS","setCategoryCustomIds","catCustomIds","SET_CATEGORIES_CUSTOM_IDS","ADD_CACHED_GAME","ADD_CACHED_GAME_ID","setCachedGameActive","SET_CACHED_GAME_ACTIVE","SET_CACHED_GAME_INACTIVE","excludeId","SET_CACHED_GAMES_INACTIVE","setCachedGameOrder","SET_CACHED_GAME_ORDER","SET_CACHED_GAME_MODE","getCasinoStore","getSelectorRoot","getCasinoCategories","getCasinoOriginalCategories","createSelector","original","getEnhancedParams","getGamesConfigs","getCasinoCustomCategories","custom","getCasinoOriginalCategoriesSet","originalSet","getCasinoOriginalCategoriesSetLeftSideBar","originalSetLeftSideBar","getCanRequestCategoriesNestedData","getCanRequestProvidersNestedData","getLastPlayedCatSettings","getCategoryCustomIds","getCachedGames","gameData","getSocket","getJackpots","getIsConnected","getSpecElems","fireBaseToken","storeFcmToken","getUserName","getUserAvatarName","substr","toUpperCase","ITEMS_WITH_BADGE","String","dayjs","unix","getPermissibleOdds","permissibleOddsCommand","GET_PERMISSIBLE_ODDS","Config","decimalFormatRemove3Digit","roundDecimalCoeficients","ODD_ROUNDING","useLadderForFractionalFormat","cache","priceDecimal","ladder","ladderIsLoaded","val","formatID","_ODD_FORMATS$find","Infinity","parseFloat","cacheKey","round","converted","fValue","iValue","rValue","pow","CALCULATE_POWER_OF_10","toFixed","decimalValue","fracFL","dec","frac","issetPriceArray","Numerator","Denominator","i","dec2fracFromLadder","decVal","Znxt","Dnxt","Nnxt","recCalc","Zcur","Dcur","Dprev","dec2frac","fractionalValue","americanValue","hongKongValue","malayValue","indoValue","convertLog","roundedConverted","_String","_String$split","_String$split$","price_decimals","leftSideBarCasinoMain","matchCasinoUrl","RegExp","match","LEFT_SIDE_BAR","LEFT_SIDE_BAR_CASINO","recentPlayedParams","catId","category_id","isShowGamesCountBadge","gamesCount","games_count","FAVORITE","SELECT_PROVIDERS_TYPE","clearCasinoPopupQuery","querySearch","chainId","USDT","USDC","ETH","BUSD","BNB","SHIB","FTN","DAI","USDT_T","USDB","fixedDigitForLolik","ALL_CRYPTO_CURRENCIES","DEFAULT_CRYPTO_CURRENCY","DEFAULT_FIAT_CURRENCY","DEFAULT_FIAT_CURRENCY_ID","CURRENCY_NAME_LIST_COUNT","PaymentMethodTypes","POST","IFRAME","FORM_DRAW","MESSAGE","StatusUrlNames","CANCEL","FAIL","PENDING","SUCCESS","DepositStatusMessages","WithdrawStatusMessages","PaymentStatusValues","HIDE_WITHDRAWAL_ALLOWED_DATE","TWO_WALLET_TYPES","IS_ACTIVE_TWO_WALLET","CASINO_SPORTSBOOK_SWITCHER","IS_TWO_WALLET_ACTIVE","IS_ACTIVE_TWO_WALLET_SPORT","EBankVerificationTypes","MAX_MONTH_VALUE","YEAR_FORMAT_FOUR_DIGITS","TEST_LENGTH","_12","_350","CASHOUT_AROUND","POS_WIN_AND_CASH_OUT_MIN_DIFFERENCE","EPaymentStatusValuesTypes","USER_ACTIVE_STEP_VALUE_21","USER_ACTIVE_STEP_VALUE_27","USER_ACTIVE_STEP_VALUE_33","USER_ACTIVE_STEP_VALUE_35","USER_ACTIVE_STEP_VALUE_40","USER_ACTIVE_STEP_VALUE_41","USER_ACTIVE_STEP_VALUE_42","USER_ACTIVE_STEP_VALUE_50","CLIENT_PRODUCT_STATE_CATEGORIES","checkUserStatus","bankIdIntergration","AppRoutes","home","virtualSports","eLive","ePrematch","casinoGames","casinoTournaments","GET_OPTIONS","GET_GAMES","GET_PROMOTED_GAMES","GET_TOURNAMENT_GAMES","GET_GAME_TOURNAMENTS","GET_GROUPED_PROVIDER_OPTIONS","GET_DECENTRALIZED_GAMES","GET_DECENTRALIZED_GAME","GET_DECENTRALIZED_CATEGORIES","LIVE_CASINO_CATEGORY","CASINO_MULTIVIEW","deviceIdApp","LOUNCH_GAME_URL","CASINO_LAUNCH_TYPE","SHOW_GAMBLING_WITH_LOGO","scroll","extraParams","exitUrlParams","mainDomain","getDomain","savedLocation","beforeLocationQuery","afterLocationQuery","previousUrl","exitUrl","includePreviousRoute","exitUrlAsHomepage","urlPathnamePath","urlQueryPart","filteredExitUrl","mainUrl","CASINO_GAME_URL_PREFIX","deviceId","androidWrapperApp","devicetypeid","CASINO_LANG_EXCEPTIONS","CURRENT_LANGUAGE","openType","deposit_url","CURRENT_LANGUAGE_PREFIX","DEFAULT_LANGUAGE_PREFIX","browserUrl","logoSource","SITE_LOGO_URL","add","_JSON$parse","returnedUrl","CASINO_GAMBLING_LOGO_URL","domain","appConfigs","pureDomain","fullDomain","trim","domainMatch","isSubDomain","domainCheck","content","context","configureMessage","ERROR_MSG_DURATION","_message","warn","TOUR_ACTIVE_CLASS","SHOW_TOUR_PAGES","pageAlias","decodeURI","homepageKey","TOUR_STEPS_LIST","yourPreferences","addSports","addGameCards","addMarketCards","_ref6","myCasino","_ref7","myCasinoProviderItem","_ref8","myCasinoGameCard","_ref9","timers","DURATION_300","_len","args","_key"],"sourceRoot":""}