From 110481fadbd4b1302e630fe8253c88f2d32bc19c Mon Sep 17 00:00:00 2001 From: dutlist Date: Wed, 31 Jan 2024 15:54:41 +0100 Subject: [PATCH 1/9] Update Russian translation --- src/translations/ru/translation.json | 266 +++++++++++++-------------- 1 file changed, 133 insertions(+), 133 deletions(-) diff --git a/src/translations/ru/translation.json b/src/translations/ru/translation.json index ed84979b1..3c3953e2a 100644 --- a/src/translations/ru/translation.json +++ b/src/translations/ru/translation.json @@ -1,21 +1,21 @@ { "No data": "Нет данных", "Current Average Latency": "Текущая средняя задержка", - "API Latency in milliseconds": "Задержка в миллисекундах API", + "API Latency in milliseconds": "Задержка API в миллисекундах", "No barters found for this item": "No barters found for this item", "LL{{level}}": "{{level}}УЛ", "Barter at {{trader}}": "Бартер у {{trader}}", - "Craft at {{station}}": "Craft at {{station}}", + "Craft at {{station}}": "Крафтиться на {{station}}", "Barter": "Бартер", - "Craft at {{stationName}} {{stationLevel}}": "Craft at {{stationName}} {{stationLevel}}", - "Provides {{count}} for {{totalCost}}_one": "Provides {{count}} for {{totalCost}}", - "Provides {{count}} for {{totalCost}}_few": "Provides {{count}} for {{totalCost}}", - "Provides {{count}} for {{totalCost}}_many": "Provides {{count}} for {{totalCost}}", - "Provides {{count}} for {{totalCost}}_other": "Provides {{count}} for {{totalCost}}", - "Crafts {{count}} in {{duration}} for {{totalCost}}_one": "Crafts {{count}} in {{duration}} for {{totalCost}}", - "Crafts {{count}} in {{duration}} for {{totalCost}}_few": "Crafts {{count}} in {{duration}} for {{totalCost}}", - "Crafts {{count}} in {{duration}} for {{totalCost}}_many": "Crafts {{count}} in {{duration}} for {{totalCost}}", - "Crafts {{count}} in {{duration}} for {{totalCost}}_other": "Crafts {{count}} in {{duration}} for {{totalCost}}", + "Craft at {{stationName}} {{stationLevel}}": "Крафтиться на {{stationName}} {{stationLevel}}", + "Provides {{count}} for {{totalCost}}_one": "Предоставляет {{count}} за {{totalCost}}", + "Provides {{count}} for {{totalCost}}_few": "Предоставляет {{count}} за {{totalCost}}", + "Provides {{count}} for {{totalCost}}_many": "Предоставляет {{count}} за {{totalCost}}", + "Provides {{count}} for {{totalCost}}_other": "Предоставляет {{count}} за {{totalCost}}", + "Crafts {{count}} in {{duration}} for {{totalCost}}_one": "Крафтит {{count}} за {{duration}} за {{totalCost}}", + "Crafts {{count}} in {{duration}} for {{totalCost}}_few": "Крафтит {{count}} за {{duration}} за {{totalCost}}", + "Crafts {{count}} in {{duration}} for {{totalCost}}_many": "Крафтит {{count}} за {{duration}} за {{totalCost}}", + "Crafts {{count}} in {{duration}} for {{totalCost}}_other": "Крафтит {{count}} за {{duration}} за {{totalCost}}", "Reward": "Награда", "Cost": "Стоимость", "Cost ₽": "Стоимость ₽", @@ -23,8 +23,8 @@ "InstaProfit": "Мгнов. Профит", "N/A": "Н/Д", "Barter cost": "Стоимость бартера", - "No barters available for selected filters": "Для выбранных фильтров нет доступных бартеров", - "No barters available for selected filters but some were hidden by ": "Для выбранных фильтров нет доступных бартеров, но некоторые были скрыты ", + "No barters available for selected filters": "Нет доступных бартеров с выбранными фильтрами", + "No barters available for selected filters but some were hidden by ": "Нет доступных бартеров с выбранными фильтрами, но некоторые были скрыты ", "your settings": "вашими настройками", "Some barters hidden by ": "Некоторые бартеры скрыты ", "Can hold:": "Может вмещать:", @@ -40,9 +40,9 @@ "Flea throughput/h": "Оборот барахолки/ч", "Estimated profit": "Расчетная прибыль", "Estimated profit/h": "Расчетная прибыль/ч", - "No crafts available for selected filters": "Нет доступных изделий для выбранных фильтров", - "No crafts available for selected filters but some were hidden by ": "Нет изделий, доступных для выбранных фильтров, но некоторые были скрыты ", - "Some crafts hidden by ": "Некоторые изделия скрыты ", + "No crafts available for selected filters": "Нет доступных крафтов с выбранными фильтрами", + "No crafts available for selected filters but some were hidden by ": "Нет доступных крафтов с выбранными фильтрами, но некоторые были скрыты ", + "Some crafts hidden by ": "Некоторые крафты скрыты ", "{{val, datetime}}": "{{val, datetime}}", "Page not found": "Страница не найдена", "Escape from Tarkov": "Escape from Tarkov", @@ -50,18 +50,18 @@ "error-page-description": "Это не та страница, которую вы ищете", "Sorry, that page doesn't exist!": "Извините, этой страницы не существует!", "Clear selection": "Clear selection", - "This item can't be sold on the Flea Market": "Этот предмет не может быть продан на Барахолке", + "This item can't be sold on the Flea Market": "Этот предмет нельзя продать на Барахолке", "Not scanned on the Flea Market": "Не отсканировано на барахолке", "Flea market prices loading": "Загрузка цен барахолки", "about-open-source-p": "<0>Вся платформа имеет открытый исходный код и ориентирована на разработчиков. Весь код доступен на <1><0> GitHub.", "about-discord-p": "<0>Если вы хотите пообщаться, задать вопросы или запросить функции, у нас есть <1><0> Discord сервер.", - "about-twitter-p": "<0>Follow us on <1><0> Twitter for all the latest updates.", + "about-twitter-p": "<0>Читайте наш <1><0> Twitter для всех последних обновлений.", "About": "О сайте", "Contributors": "Контрибуторы", "Massive thanks to all the people who help build and maintain this project!": "Огромное спасибо всем людям, которые помогают создавать и поддерживать этот проект!", "Made with ❤️ by:": "Сделано с ❤️ командой:", "Supporters": "Поддерживающие", - "about-support-ukraine-p": "<0>Мы призываем всех, кто может сделать пожертвование, чтобы поддержать народ Украины, используя кнопку ниже.", + "about-support-ukraine-p": "<0>Мы призываем всех, кто может сделать пожертвование, чтобы поддержать людей с Украины, используя кнопку ниже.", "about-support-collective-p": "<0>Если вы также хотите поддержать этот проект, вы можете сделать пожертвование и/или стать спонсором <1>Open Collective.", "Item Data": "Данные предметов", "Fresh EFT data courtesy of": "Свежие данные EFT любезно предоставлены", @@ -71,28 +71,28 @@ "{{bot}} integration": "Интеграция {{bot}}", "Discord bot for your Discord": "Discord бот для вашего Discord", "External resources": "Внешние ресурсы", - "Tarkov.dev is a fork of the now shut-down tarkov-tools.com | Big thanks to kokarn for all his work building Tarkov Tools and the community around it.": "Tarkov.dev является ответвлением уже закрытого tarkov-tools.com | Большое спасибо kokarn за всю его работу по созданию Tarkov Tools и сообщества вокруг него.", + "Tarkov.dev is a fork of the now shut-down tarkov-tools.com | Big thanks to kokarn for all his work building Tarkov Tools and the community around it.": "Tarkov.dev является форком уже закрытого tarkov-tools.com | Большое спасибо kokarn за всю его работу по созданию Tarkov Tools и сообщества вокруг него.", "Game content and materials are trademarks and copyrights of Battlestate Games and its licensors. All rights reserved.": "Игровой контент и материалы являются торговыми марками и авторскими правами Battlestate Games и ее лицензиаров. Все права защищены.", "version": "версия", "PMC & Scav Thorax HP": "ХП в груди у ЧВК и Дикого", "Reshala Thorax HP": "ХП в груди у Решалы", "Raider Thorax HP": "ХП в груди у Рейдера", "Shturman Thorax HP": "ХП в груди у Штурмана", - "Cultist Priest Thorax HP": "ХП в груди у Культист-жреца", - "Cultist Warrior Thorax HP": "ХП в груди у Культист-воина", + "Cultist Priest Thorax HP": "ХП в груди у Жреца", + "Cultist Warrior Thorax HP": "ХП в груди у Культиста-воина", "Damage": "Урон", "Class {{tier}}": "Класс {{tier}}", "Penetration": "Пробивание", "Filter by caliber": "Фильтр по калибру", - "This item can only be sold to trader": "This item can only be sold to trader", + "This item can only be sold to trader": "Этот предмет можно продать только торговцу", "per slot": "за слот", - "Value": "Ценность", + "Value": "Цена", "Per slot": "За слот", - "Sell to": "Кому продать", + "Sell to": "Продать", "Found In Raid": "Найдено в Рейде", "Search item...": "Поиск предмета...", - "Search task...": "Search task...", - "Tasks": "Задачи", + "Search task...": "Поиск задания...", + "Tasks": "Задания", "Items": "Предметы", "No hideout modules requires this item": "Ни один модуль убежища не требует этого предмета", "No unbuilt hideout modules for selected filters but some were hidden by ": "Нет не построенных модулей убежища для выбранных фильтров, но некоторые были скрыты ", @@ -100,11 +100,11 @@ "Item": "Предмет", "Amount": "Количество", "Player level: {{playerLevel}}": "Уровень игрока: {{playerLevel}}", - "Reputation: {{reputation}}": "Reputation: {{reputation}}", - "Commerce: {{commerce}}": "Commerce: {{commerce}}", + "Reputation: {{reputation}}": "Отношение: {{reputation}}", + "Commerce: {{commerce}}": "Оборот: {{commerce}}", "Cheapest Price": "Наименьшая цена", - "Task: {{taskName}}": "Задача: {{taskName}}", - "Flea Market not available": "Flea Market not available", + "Task: {{taskName}}": "Задание: {{taskName}}", + "Flea Market not available": "Барахолка недоступна", "No trader offers available": "Нет предложений от торговцев", "Loading...": "Загрузка...", "Map": "Карта", @@ -122,7 +122,7 @@ "Bosses": "Боссы", "Barter profit": "Прибыль бартера", "Hideout profit": "Прибыль убежища", - "Loot tiers": "Уровни лута", + "Loot tiers": "Рейтинг лута", "Hideout build costs": "Стоимость улучшения убежища", "Wipe length": "Длинна вайпа", "Bitcoin Farm Profit": "Прибыль биткоин фермы", @@ -130,12 +130,12 @@ "Donate": "Пожертвовать", "Become a patron": "Стать патроном", "{{val, relativetime}}": "{{val, relativetime}}", - "On Task Completion": "По завершению задания", - "On Task Start": "На старте задания", - "Task": "Задача", + "On Task Completion": "Награда за задание", + "On Task Start": "Стартовая экипировка", + "Task": "Задание", "Required items": "Требуемые предметы", - "Reward items": "Наградные предметы", - "Required tasks": "Требуемые задачи", + "Reward items": "Награда", + "Required tasks": "Требуемые задания", "loading": "загружается", "active": "активно", "succeeded": "пройдено", @@ -145,17 +145,17 @@ "Minimum trader level": "Минимальный уровень торговца", "Reputation rewards": "Награда репутации", "Endgame": "Endgame", - "Required for Kappa": "Required for Kappa", - "Required for Lightkeeper": "Required for Lightkeeper", + "Required for Kappa": "Требуеться для Каппы", + "Required for Lightkeeper": "Требуеться для Смотрителя мяка", "No quests found": "Задания не найдены", - "Some tasks hidden by filter settings": "Некоторые задачи скрыты настройками фильтра", - "open this page in another browser or window and connect using this id": "откройте эту страницу в другом браузере или окне и подключитесь, используя этот идентификатор", + "Some tasks hidden by filter settings": "Некоторые задания скрыты настройками фильтра", + "open this page in another browser or window and connect using this id": "откройте эту страницу в другом браузере или окне и подключитесь, используя этот ID", "ID for remote control": "ID для удаленного управления", "Go to Tarkov.dev with another browser and enter this ID to control this page from there": "Перейдите на сайт Tarkov.dev через другой браузер и введите этот ID, чтобы управлять этой страницей оттуда", "Click to connect": "Нажмите для соединения", "Sell value": "Цена продажи", - "Tarkov server status": "Статус сервера Тарков", - "This item can't be sold to traders": "This item can't be sold to traders", + "Tarkov server status": "Статус серверов Таркова", + "This item can't be sold to traders": "Этот предмет нельзя продать торговцам", "Name": "Название", "Sell to Flea": "Продать на барахолке", "Buy on Flea": "Купить на барахолке", @@ -185,16 +185,16 @@ "Hydration Cost": "Стоимость Гидрации", "Energy Cost": "Стоимость Энергии", "Hydration + Energy Value": "Ценность Гидрация + Энергия", - "Sound suppression": "Подавление звука", - "Low": "Low", - "None": "None", + "Sound suppression": "Звукоподавление", + "Low": "Низкое", + "None": "Отсутствуюет", "Blocks earpiece": "Блокирует наушники", "Yes": "Да", "No": "Нет", "Ergonomics": "Эргономика", "Cost per ergo": "Стоимость за эрго.", "Recoil": "Отдача", - "Distance": "Distance", + "Distance": "Дистанция", "No items": "Нет предметов", "Not built": "Не построено", "Locked": "Заблокирован", @@ -228,33 +228,33 @@ "Use total damage of all projectiles in a round": "Использует суммарный урон всех снарядов в патроне", "Ignore settings": "Игнорировать настройки", "Shows all sources of items regardless of your settings": "Показывает все источники предметов независимо от ваших настроек", - "Use barters for item sources": "Use barters for item sources", - "Use crafts for item sources": "Use crafts for item sources", + "Use barters for item sources": "Использовать бартеры как источник предметов", + "Use crafts for item sources": "Использовать крафты как источник предметов", "Ammo Statistics Table": "Таблица статистики патронов", "API Documentation": "Документация API", - "api-docs-page-description": "Созданные сообществом API для Escape from Tarkov и документация к ним. Узнайте больше о нашем бесплатном и простом в использовании GraphQL API для EFT.", - "api-about-p": "<0>The API is written in GraphQL and we try our hardest to follow spec and not to make breaking changes. To learn about what queries you can make and how the schema is structured, visit the playground and read the documentation by clicking the book icon in the upper left corner. Once you're ready to try some queries, you can also test them out in the playground. To learn about GraphQL queries generally, the GraphQL Foundation has helpful resources.<1><0><0>Tarkov.dev GraphQL playground<1><0>GraphQL Foundation resources<1>Once you're ready to send API queries from outside the playground, the endpoint is: <1>https://api.tarkov.dev/graphql.", + "api-docs-page-description": "Созданное сообществом API для Escape from Tarkov и документация к нему. Узнайте больше о нашем бесплатном и простом в использовании GraphQL API для EFT.", + "api-about-p": "<0>API написан на GraphQL, и мы изо всех сил стараемся следовать спецификации и не вносить ломающих изменений. Чтобы узнать, какие запросы можно делать и как устроена схема, посетите playground и прочитайте документацию, нажав на значок книги в левом верхнем углу. Когда вы будете готовы попробовать несколько запросов, вы также можете протестировать их в playground. Чтобы узнать о запросах GraphQL в целом, на сайте GraphQL Foundation есть полезные ресурсы.<1><0><0>Tarkov.dev GraphQL playground<1><0>GraphQL Foundation resources<1>Когда вы будете готовы отправлять API-запросы не из playground, endpoint находится по адресу: <1>https://api.tarkov.dev/graphql.", "Current API Performance": "Текущая производительность API", "api-performance-p": "<0>Для получения полной информации о показателях и производительности API, посетите нашу <1>страницу статуса.", - "FAQ": "FAQ", + "FAQ": "ЧаВо", "Is it free?": "Бесплатно ли это?", "Is it open source?": "Является ли это открытым исходным кодом?", "api-faq-open-source-p": "Конечно! Исходный код API можно найти в его репозитории на GitHub: <1>github.com/the-hideout/tarkov-api.", - "Is there a rate limit?": "Есть ли ограничение по скорости?", - "api-faq-rate-limit-p": "Неа! В настоящее время у нас не включено ограничение скорости. Тем не менее, пожалуйста, уважайте это и не заваливайте API запросами только потому, что вы можете. Используйте здравый смысл! Данные о ценах обновляются каждые 5 минут, поэтому нет необходимости делать запросы быстрее этого промежутка времени. Чтобы ознакомиться с актуальным определением наших лимитов (или их отсутствием), проверьте наш репозиторий Cloudflare GitHub где они указаны: <1>определения ограничений скорости.", + "Is there a rate limit?": "Есть ли ограничение на частоту запросов?", + "api-faq-rate-limit-p": "Нет! В настоящее время у нас нет включенного ограничения по частоте запросов. Тем не менее, просим уважать это и не злоупотреблять API из-за этой возможности. Цены обновляются каждые 5 минут, поэтому нет необходимости делать запросы чаще. Чтобы увидеть актуальное определение наших ограничений (или их отсутствие), проверьте наш репозиторий Cloudflare на GitHub, где они определены: <1>определение ограничений по частоте.", "What about caching?": "Что насчет кэширования?", "api-faq-caching-p": "Поскольку наши данные обновляются каждые 5 минут, мы также кэшируем все GraphQL-запросы в течение 5 минут. Это позволяет значительно снизить нагрузку на наши серверы и ускорить выполнение ваших запросов!", "Where is the data from?": "Откуда берутся данные?", "We source data from multiple places to build an API as complete as possible. We use data from:": "Мы получаем данные из разных мест, чтобы создать максимально полный API. Мы используем данные из:", - "Our network of scanners": "Наша сеть сканеров", + "Our network of scanners": "Нашей сети сканеров", "Examples": "Примеры", "example": "пример", - "Contributed by": "При содействии", + "Contributed by": "Предоставленно", "API Users": "Пользователи API", - "api-users-page-description": "This page contains a list of all users of public API on Tarkov.dev and their projects.", + "api-users-page-description": "Эта страница содержит список всех пользователей общедоступного API Tarkov.dev и их проектов.", "api-users-p": "<0>Хотите, чтобы вас включили на эту страницу? Присоединяйтесь к <1>Discord и расскажите нам о том, что вы сделали!", - "Barter Profits": "Прибыль на бартере", - "barters-page-description": "Эта страница содержит информацию о различных предметах, которыми можно торговать с NPC-торговцами, ценах бартера и прибыли, которую можно получить от продажи предметов.", + "Barter Profits": "Прибыль бартера", + "barters-page-description": "Эта страница содержит информацию о различных предметах, которыми можно торговать орговцами, ценах бартера и прибыли, которую можно получить от продажи предметов.", "Shows all barters regardless of your settings": "Показывает все бартеры независимо от ваших настроек", "Hide dogtags": "Сктрыть жетоны", "The true \"cost\" of barters using Dogtags is difficult to estimate, so you may want to exclude dogtag barters": "Истинную \"стоимость\" бартеров с использованием жетонов трудно оценить, поэтому вы можете захотеть исключить бартеры с жетонами", @@ -262,24 +262,24 @@ "All": "Все", "Item filter": "Фильтр предметов", "filter on item": "фильтр по предмету", - "barters-page-p": "<0>Except for Fence, every trader in Escape from Tarkov offers goods by barter rather than for purchase outright.<1>In exchange for a variety of inexpensive things, the player can frequently trade them for more valuable objects that can be utilized or sold for a profit or higher level gear at lower loyalty levels.<3>Be sure to check back after reset for your favourite transactions because the majority of these valued trades have strict limits per trader reset and frequently sell out.", + "barters-page-p": "<0>За исключением Скупщика, каждый торговец в Escape from Tarkov предлагает товары по бартеру.<1>В обмен на различные недорогие вещи игрок может обменять их на более ценные предметы( которые можно использовать или продать с выгодой), или на экипировку более высокого уровня при более низком Уровне Лояльности. <3>Не забывайте проверять после сброса свои любимые сделки, так как большинство из этих ценных сделок имеют строгие ограничения на пополнение торговцев и часто распродаются.", "Num graphic cards": "Количество видеокарт", "Hours": "Часов", "Bitcoin Farm Calculator": "Калькулятор биткоин фермы", "bitcoin-farm-calculator-page-description": "На этой странице представлен калькулятор, который поможет вам определить стоимость создания и обслуживания биткоин фермы, исходя из количества видеокарт, затрат на электроэнергию и стоимости биткоина.", "Graphic cards count": "Количество видеокарт", - "Use fuel cost: {{price}}/day": "Учесть стоимость топлива: {{price}}/день", - "Use station build costs": "Учесть стоимость строительства станции", + "Use fuel cost: {{price}}/day": "Стоимость топлива: {{price}}/день", + "Use station build costs": "Учесть стоимость строительства фермы", "Purchase cost": "Стоимость покупки", - "Remaining days in wipe:": "Remaining days in wipe:", + "Remaining days in wipe:": "Дней до конца вайпа:", "Time to produce 1 bitcoin": "Время добычи 1 биткоина", "BTC/day": "BTC/день", "Estimated profit/day": "Расчетная прибыль/день", "Profitable after days": "Прибыльно через дней", "Total cost of graphic cards": "Общая стоимость видеокарт", "Build costs": "Стоимость строительства", - "GPU + build costs": "Стоимость GPU + строительство", - "Remaining profit": "Remaining profit", + "GPU + build costs": "Стоимость видеокарт + строительства", + "Remaining profit": "Осталось выгоды", "Spawn Location": "Место спавна", "Chance": "Шанс", "Count": "Счет", @@ -302,44 +302,44 @@ "Boss Stats": "Статистика босса", "Special Boss Loot": "Особый лут с босса", "Spawn Locations": "Места спавна", - "boss-spawn-table-description": "<0>Map: The name of the map which the boss can spawn on<1>Spawn Location: The exact location on the given map which the boss can spawn<2>Chance: If the \"Spawn Chance\" is activated for the map, this is the estimated chance that the boss will spawn at a given location on that map", + "boss-spawn-table-description": "<0>Карта: Название карты, на которой может появиться босс<1>Место появления: Точное место на карте, где может появиться босс.<2>Шанс: Если \"Шанс появления\" активирован для карты, это шанс появления босса в конкретном месте на этой карте.", "Boss Escorts": "Сопровождение босса", "This boss does not have any escorts": "У этого босса нет сопровождения", "boss-page-description": "Эта страница содержит информацию о местоположении {{bossName}}, добыче и стратегии победы над ним.", "bosses-page-description": "На этой странице представлена информация обо всех боссах в игре, их местоположении, добыче, сопровождении и стратегиях победы над ними.", "Bosses are feared and deadly enemies with unique gear and traits in Escape from Tarkov": "Боссы - это страшные и смертельно опасные враги с уникальным снаряжением и чертами характера в игре Escape from Tarkov", "About Bosses": "О боссах", - "bosses-page-p": "<0>В игре Escape from Tarkov есть множество боссов, которые бродят по территории осажденного Норвинска.<1>Каждый босс обладает уникальным поведением, характеристиками и тактикой. Боссов в Таркове боятся игроки всех уровней, и зачастую они представляют большую угрозу, чем вражеские ЧВК в регионе.<2>Однако высокий риск влечет за собой высокую награду. Многие боссы несут в себе высокоуровневые предметы или требуют устранения для выполнения квестов. Изучение маршрута, местоположения и характерного одеяния босса - это лучшее, к чему может подготовиться игрок, когда начнется бой с боссом в Таркове.", + "bosses-page-p": "<0>В игре Escape from Tarkov есть множество боссов, которые бродят по территории осажденного Норвинска.<1>Каждый босс обладает уникальным поведением, характеристиками и тактикой. Боссов в Таркове боятся игроки всех уровней, и зачастую они представляют большую угрозу, чем вражеские ЧВК в регионе.<2>Однако высокий риск влечет за собой высокую награду. Многие боссы несут в себе высокоуровневые предметы или требуют устранения для выполнения заданий. Изучение маршрута, местоположения и характерного одеяния босса - это лучшее, к чему может подготовиться игрок, когда начнется бой с боссом в Таркове.", "Connect": "Подключиться", "Connected to": "Подключен к", "id to control": "id для управления", "Remote Control": "Удаленное управление", - "remote-control-page-description": "This page contains all the necessary tools to remote control another instance of Tarkov.dev website.", + "remote-control-page-description": "Эта страница содержит все необходимые инструменты для удаленного управления другим экземпляром веб-сайта Tarkov.dev.", "View Map": "Посмотреть карту", "Go": "Перейти", "View caliber": "Посмотреть калибр", "Select...": "Выбрать...", - "Load tarkov.dev in another browser or window to control it from here": "Загрузите tarkov.dev в другой браузер или окно, чтобы управлять им отсюда", - "Hideout Crafts": "Изделия в убежище", - "crafts-page-description": "На этой странице представлена информация о различных предметах, которые можно изготовить в убежище, о необходимых материалах и ресурсах, а также о прибыли, которую можно получить от продажи готовых изделий.", - "Shows all crafts regardless of your settings": "Показывает все изделия независимо от ваших настроек", + "Load tarkov.dev in another browser or window to control it from here": "Загрузите tarkov.dev в другом браузер или окне, чтобы управлять им отсюда", + "Hideout Crafts": "Крафты в убежище", + "crafts-page-description": "На этой странице представлена информация о различных предметах, которые можно скрафтить в убежище, о необходимых материалах и ресурсах, а также о прибыли, которую можно получить от продажи предметов.", + "Shows all crafts regardless of your settings": "Показывает все крафты независимо от ваших настроек", "Average prices": "Средняя цена", "Use average prices from the past 24 hours for profit calculations": "Использует средние цены за последние 24 часа для расчета прибыли", - "Most profitable craft in each station": "Самое прибыльное изделие в каждой станции", + "Most profitable craft in each station": "Самое прибыльный крафт в каждом модуле", "Best": "Топ", - "Flea Market banned items": "Flea Market banned items", + "Flea Market banned items": "Запрещенные предметы на Барахолке", "Empty fuel": "Пустое топливо", - "Sets fuel canister cost for crafts requiring them to vendors' minimum sell price when using non-FIR fuel canisters.": "Sets fuel canister cost for crafts requiring them to vendors' minimum sell price when using non-FIR fuel canisters.", + "Sets fuel canister cost for crafts requiring them to vendors' minimum sell price when using non-FIR fuel canisters.": "Устанавливает стоимость бензиновых канистр для рецептов, требующих их, на минимальную цену продажи торговцев при использовании бензиновых канистр, которые не найдены в рейде", "crafts-page-p": "<0>В игре Escape from Tarkov ремесла позволяют создавать различные вещи. Для этого используются различные модули убежища, включая водосборник, верстак, медблок, санузел и пищеблок.<1>Статус \"Найден в рейде\" будет применен к каждому предмету, созданному в убежище. Полный список этих ремесел приведен выше. Навык Ручное производство влияет на время создания предмета.<2> Если иконка предмета имеет синюю рамку, он будет использоваться как вспомогательный инструмент, а по окончании изготовления будет возвращен в схрон.", "Hideout": "Убежище", - "hideout-page-description": "This page includes information on the different stations and modules that can be built with the materials and resources required to upgrade your hideout.", - "Show all stations & modules": "Показать все станции и модули", + "hideout-page-description": "Эта страница содержит информацию о различных модулях, которые можно построить с материалами и ресурсами, необходимыми для улучшения вашего убежища.", + "Show all stations & modules": "Показать все модули", "Show built": "Показать построенные", - "Show already built stations": "Show already built stations", - "Show locked": "Show locked", - "Show unavailable stations": "Show unavailable stations", - "Show all requirements": "Show all requirements", - "Show trader and other station level requirements": "Show trader and other station level requirements", + "Show already built stations": "Показать построенные модули", + "Show locked": "Показать закрытые", + "Show unavailable stations": "Показать недоступные модули", + "Show all requirements": "Показать все требования", + "Show trader and other station level requirements": "Показать требуемые модули и уровни отношения торговцев", "Collected": "Собрано", "Item Tracker": "Отслеживатель предметов", "Only show Found in Raid": "Показать только Найденные в Рейде", @@ -350,13 +350,13 @@ "Best price to sell for": "Лучшая цена для продажи", "Fee": "Комиссия", "Profit": "Прибыль", - "The last observed low price for this item on the Flea Market was {{lastSeenPrice}}.\nHowever, due to how fees are calculated, you're better off selling for {{bestPrice}}.": "Последняя наблюдаемая низкая цена на этот товар на Барахолке была {{lastSeenPrice}}.\nОднако из-за того, как рассчитываются комиссионные, вам лучше продавать за {{bestPrice}}.", + "The last observed low price for this item on the Flea Market was {{lastSeenPrice}}.\nHowever, due to how fees are calculated, you're better off selling for {{bestPrice}}.": "Последняя наблюдаемая низкая цена на этот товар на Барахолке была {{lastSeenPrice}}.\nОднако из-за того, как рассчитывается комиссия, вам лучше продавать за {{bestPrice}}.", "Max price to sell for": "Максимальная цена для продажи", - "This item has not been observed on the Flea Market.\nThe maximum profitable price is {{bestPrice}}, but the item may not sell at that price.\nThe max profitable price is impacted by the intel center and hideout management skill levels in your settings.": "Этот предмет не был замечен на Барахолке.\nМаксимальная прибыльная цена составляет {{bestPrice}}, но товар не может продаваться по этой цене.\n На максимальную прибыльную цену влияет уровень навыков управления центром разведки и убежищем в ваших настройках.", + "This item has not been observed on the Flea Market.\nThe maximum profitable price is {{bestPrice}}, but the item may not sell at that price.\nThe max profitable price is impacted by the intel center and hideout management skill levels in your settings.": "Этот предмет не был замечен на Барахолке.\nМаксимальная прибыльная цена составляет {{bestPrice}}, но товар может не продаться по этой цене.\n На максимальную прибыльную цену влияет уровень разведцентра и уровень навыка управления убежищем в ваших настройках.", "Likely sell price": "Вероятная цена продажи", "item-page-description": "Эта страница содержит информацию о характеристиках, использовании и стратегиях для {{itemName}}.", - "Sell for": "Продавать за", - "Buy for": "Покупать за", + "Sell for": "Продается за", + "Buy for": "Покупается за", "Flea price last 7 days": "Цена на барахолке за последние 7 дней", "Change vs yesterday: {{changeLast48h}} ₽ / {{changeLast48Percent}} %": "По сравнению со вчерашним днем: {{changeLast48h}} ₽ / {{changeLast48Percent}} %", "Lowest scanned price last 24h: {{low24hPrice}}": "Наименьшая цена сканированная за последние 24 часа: {{low24hPrice}}", @@ -364,57 +364,57 @@ "Updated: {{val, relativetime}}": "Обновлено: {{val, relativetime}}", "Items contained in {{itemName}}": "Предметы, входящие в {{itemName}}", "Barters with {{itemName}}": "Бартеры с {{itemName}}", - "Crafts with {{itemName}}": "Изделия из {{itemName}}", + "Crafts with {{itemName}}": "Крафты с {{itemName}}", "Hideout modules needing {{itemName}}": "Модули убежища, требующие {{itemName}}", "Shows all modules regardless of your settings": "Показывает все модули независимо от ваших настроек", "Quests requiring {{itemName}}": "Задания, требующие {{itemName}}", "Quests rewarding {{itemName}}": "Задания, вознаграждающие {{itemName}}", "Armors": "Бронежилеты", - "armors-page-description": "This page includes a sortable table with information on the different types of armor available in the game, including their price, repairability, armor class, and other characteristics.", + "armors-page-description": "На этой странице находится сортируемая таблица с информацией о различных типах бронежилетов, доступных в игре, включая их цену, ремонтопригодность, класс брони и прочие характеристики.", "Class effective durability": "Эффективная прочность класса", "Include rigs": "Включая разгрузки", "Max price": "Макс. цена", "max price": "макс. цена", "Backpacks": "Рюкзаки", - "backpacks-page-description": "This page includes a sortable table with information on the different types of backpacks available in the game, including their price, size, capacity, and other characteristics.", + "backpacks-page-description": "На этой странице находится сортируемая таблица с информацией о различных типах рюкзаков, доступных в игре, включая их цену, размер, вместимость и прочие характеристики.", "Net price per slot": "Чистая цена за слот", "Show price per additional slot of storage gained from the container": "Показать цену за дополнительный слот хранения, полученный от контейнера", "Barter Items": "Предметы бартера", - "bsg-category-description": "Find out everything you need to know about {{category}} in Escape from Tarkov.", + "bsg-category-description": "Узнайте все, что нужно знать о {{category}} в Escape from Tarkov.", "Containers": "Контейнеры", "Glasses": "Очки", - "glasses-page-description": "This page includes a sortable table with information on the different types of glasses available in the game, including their price, armor class, and other characteristics.", + "glasses-page-description": "На этой странице находится сортируемая таблица с информацией о различных типах очков, доступных в игре, включая их цену, класс брони и прочие характеристики.", "Grenades": "Гранаты", - "grenades-page-description": "This page includes a sortable table with information on the different types of grenades available in the game, including their price, damage, and other characteristics.", + "grenades-page-description": "На этой странице находится сортируемая таблица с информацией о различных типах гранат, доступных в игре, включая их стоимость, урон и прочие характеристики.", "Guns": "Оружие", - "guns-page-description": "This page includes a sortable table with information on the different types of guns available in the game, including their price, damage, accuracy, and other characteristics.", + "guns-page-description": "На этой странице находится сортируемая таблица с информацией о различных типах оружия, доступных в игре, включая их цену, урон, точность и прочие характеристики.", "Headsets": "Наушники", - "headsets-page-description": "This page includes a sortable table with information on the different types of headsets available in the game, including their price, availability, and other characteristics.", + "headsets-page-description": "На этой странице находится сортируемая таблица с информацией о различных типах наушников, доступных в игре, включая их цену, наличие и прочие характеристики.", "Helmets": "Шлемы", - "helmet-page-description": "This page includes a sortable table with information on the different types of helmets available in the game, including their price, armor class, and other characteristics.", + "helmet-page-description": "На этой странице находится сортируемая таблица с информацией о различных типах шлемов, доступных в игре, включая их цену, класс брони и прочие характеристики.", "Show blocking headset": "Показать блокирующие наушники", "Min armor class": "Мин. класс брони", - "items-page-description": "This page includes links to pages with information on different item categories, including armor, backpacks, barter items, containers, glasses, grenades, guns, headsets, helmets, keys, gun mods, pistol grips, provisions, rigs, suppressors, and more.", + "items-page-description": "На этой странице находятся ссылки на страницы с информацией о различных категориях предметов, включая бронежилеты, рюкзаки, предметы бартера, контейнеры, очки, гранаты, оружие, наушники, шлемы, ключи, оружейные моды, пистолетные рукоятки, провиант, снаряжение, глушители и многое другое.", "Keys": "Ключи", - "keys-page-description": "This page includes a sortable table with information on the different types of keys available in the game, including their price, rarity, and other characteristics.", + "keys-page-description": "На этой странице находится сортируемая таблица с информацией о различных типах ключей, доступных в игре, включая их цену, редкость и прочие характеристики.", "Mods": "Моды", - "mods-page-description": "This page includes a sortable table with information on the different types of gun mods available in the game, including their price, compatibility, and other characteristics.", + "mods-page-description": "На этой странице находится сортируемая таблица с информацией о различных типах оружейных модов, доступных в игре, включая их цену, совместимость и прочие характеристики.", "Pistol Grips": "Пистолетные рукоятки", - "pistol-page-description": "This page includes a sortable table with information on the different types of pistol grips available in the game, including their price, ergonomics, compatibility, and other characteristics.", + "pistol-page-description": "На этой странице находится сортируемая таблица с информацией о различных типах пистолетных рукояток, доступных в игре, включая их цену, эргономику, совместимость и прочие характеристики.", "Filter by gun": "Фильтр по оружию", "select a gun": "выберите оружие", "Provisions": "Провизия", - "provisions-page-description": "This page includes a sortable table with information on the different types of provisions available in the game, including their hydration, energy, cheapest price and traders or flea market value.", + "provisions-page-description": "На этой странице находится сортируемая таблица с информацией о различных типах провизии, доступных в игре, включая их гидратацию, энергию, самую дешевую цену и стоимость у торговцев или на барахолке.", "Total energy cost": "Полная стоимость энергии", "Include the cost of lost hydration in the cost of energy": "Включить стоимость потерянной гидрации в стоимость энергии", "Rigs": "Разгрузки", - "rigs-page-description": "This page includes a sortable table with information on the different types of rigs available in the game, including their price, inside and outside size, weight, compression, and other characteristics.", + "rigs-page-description": "На этой странице находится сортируемая таблица с информацией о различных типах разгрузок, доступных в игре, включая их цену, внутренние и внешние размеры, вес и прочие характеристики.", "Armored rigs?": "Разгрузки с бронепластинами?", "Min slots": "Мин. слоты", "3-slot": "3-слота", "4-slot": "4-слота", "Suppressors": "Глушители", - "suppressors-page-description": "This page includes a sortable table with information on the different types of suppressors available in the game, including their ergonomics, recoil, and cheapest price.", + "suppressors-page-description": "На этой странице находится сортируемая таблица с информацией о различных типах гулшителей, доступных в игре, включая их эргономику, отдачу и самую низкую цену.", "Barters": "Бартеры", "Marked": "Меченый", "Wearables": "Одеваемые", @@ -436,7 +436,7 @@ "Woods": "Лес", "Openworld": "Открытый мир", "Tarkov.dev {{bot}} integration": "Интеграция Tarkov.dev с {{bot}}", - "bot-page-description": "This page contains everything necessary to integrate {{bot}} with Tarkov.dev.", + "bot-page-description": "Эта страница содержит все необходимое для интеграции Tarkov.dev с {{bot}}.", "You can add command to your moobot to get price check in your twitch chat": "Вы можете добавить команду своему Moobot, чтобы получить проверку цен в чате twitch", "Instructions": "Инструкции", "Register at": "Регистрация на", @@ -470,29 +470,29 @@ "Have the {{effectNames, list}} effect(s) on your {{bodyParts, list(type: disjunction)}} for {{operator}} {{count}} seconds_few": "Иметь эффект(ы) {{effectNames, list}} на вашем(их) {{bodyParts, list(type: disjunction)}} на протяжении {{operator}} {{count}} секунд", "Have the {{effectNames, list}} effect(s) on your {{bodyParts, list(type: disjunction)}} for {{operator}} {{count}} seconds_many": "Иметь эффект(ы) {{effectNames, list}} на вашем(их) {{bodyParts, list(type: disjunction)}} на протяжении {{operator}} {{count}} секунд", "Have the {{effectNames, list}} effect(s) on your {{bodyParts, list(type: disjunction)}} for {{operator}} {{count}} seconds_other": "Иметь эффект(ы) {{effectNames, list}} на вашем(их) {{bodyParts, list(type: disjunction)}} на протяжении {{operator}} {{count}} секунд", - "using extract: {{extractName}}": "using extract: {{extractName}}", + "using extract: {{extractName}}": "выходя на: {{extractName}}", "Extract with the status(es): {{extractStatuses, list(type: disjunction)}}": "Выйти со статусом(ами): {{extractStatuses, list(type: disjunction)}}", - "Extract {{extractCount}} times with the status(es): {{extractStatuses, list(type: disjunction)}}": "Extract {{extractCount}} times with the status(es): {{extractStatuses, list(type: disjunction)}}", + "Extract {{extractCount}} times with the status(es): {{extractStatuses, list(type: disjunction)}}": "Выйти {{extractCount}} раз со статусом(ами): {{extractStatuses, list(type: disjunction)}}", "Dogtag level": "Уровень жетона", "Max durability": "Макс. прочность", "Min durability": "Мин. прочность", "Kill": "Убить", - "Shoot": "Стрелять", - "During hours: {{hourStart}}:00 to {{hourEnd}}:00": "During hours: {{hourStart}}:00 to {{hourEnd}}:00", - "From distance: {{operator}} {{count}} meters_one": "На расстоянии: {{operator}} {{count}} метр", + "Shoot": "Выстрелить", + "During hours: {{hourStart}}:00 to {{hourEnd}}:00": "В течение: от {{hourStart}}:00 до {{hourEnd}}:00", + "From distance: {{operator}} {{count}} meters_one": "На расстоянии: {{operator}} {{count}} метра", "From distance: {{operator}} {{count}} meters_few": "На расстоянии: {{operator}} {{count}} метра", "From distance: {{operator}} {{count}} meters_many": "На расстоянии: {{operator}} {{count}} метров", "From distance: {{operator}} {{count}} meters_other": "На расстоянии: {{operator}} {{count}} метров", "While inside: {{zoneList, list(type: disjunction)}}": "Находясь внутри: {{zoneList, list(type: disjunction)}}", - "Hitting: {{bodyPartList, list(type: disjunction)}}": "Попадания: {{bodyPartList, list(type: disjunction)}}", + "Hitting: {{bodyPartList, list(type: disjunction)}}": "Попадая: {{bodyPartList, list(type: disjunction)}}", "Using weapon:": "Используя оружие:", "Using weapon mods:": "Используя моды на оружие:", "While wearing:": "Одевая:", "Not wearing:": "Не одевая:", - "While having the {{effectNames, list}} effect(s) on your {{bodyParts, list(type: disjunction)}} for {{operator}} {{count}} seconds_one": "Находясь под действием {{effectNames, list}} эффекта(ов) на ваших {{bodyParts, list(type: disjunction)}} в течение {{operator}} {{count}} секунды", - "While having the {{effectNames, list}} effect(s) on your {{bodyParts, list(type: disjunction)}} for {{operator}} {{count}} seconds_few": "Находясь под действием {{effectNames, list}} эффекта(ов) на ваших {{bodyParts, list(type: disjunction)}} в течение {{operator}} {{count}} секунд", - "While having the {{effectNames, list}} effect(s) on your {{bodyParts, list(type: disjunction)}} for {{operator}} {{count}} seconds_many": "Находясь под действием {{effectNames, list}} эффекта(ов) на ваших {{bodyParts, list(type: disjunction)}} в течение {{operator}} {{count}} секунд", - "While having the {{effectNames, list}} effect(s) on your {{bodyParts, list(type: disjunction)}} for {{operator}} {{count}} seconds_other": "Находясь под действием {{effectNames, list}} эффекта(ов) на ваших {{bodyParts, list(type: disjunction)}} в течение {{operator}} {{count}} секунд", + "While having the {{effectNames, list}} effect(s) on your {{bodyParts, list(type: disjunction)}} for {{operator}} {{count}} seconds_one": "Находясь под действием {{effectNames, list}} эффекта(ов) на вашем(их) {{bodyParts, list(type: disjunction)}} в течение {{operator}} {{count}} секунды", + "While having the {{effectNames, list}} effect(s) on your {{bodyParts, list(type: disjunction)}} for {{operator}} {{count}} seconds_few": "Находясь под действием {{effectNames, list}} эффекта(ов) на вашем(их) {{bodyParts, list(type: disjunction)}} в течение {{operator}} {{count}} секунд", + "While having the {{effectNames, list}} effect(s) on your {{bodyParts, list(type: disjunction)}} for {{operator}} {{count}} seconds_many": "Находясь под действием {{effectNames, list}} эффекта(ов) на вашем(их) {{bodyParts, list(type: disjunction)}} в течение {{operator}} {{count}} секунд", + "While having the {{effectNames, list}} effect(s) on your {{bodyParts, list(type: disjunction)}} for {{operator}} {{count}} seconds_other": "Находясь под действием {{effectNames, list}} эффекта(ов) на вашем(их) {{bodyParts, list(type: disjunction)}} в течение {{operator}} {{count}} секунд", "While having the {{effectNames, list}} effect(s) on your {{bodyParts, list(type: disjunction)}}": "Находясь под действием {{effectNames, list}} эффекта(ов) на ваших {{bodyParts, list(type: disjunction)}}", "While target has the {{effectNames, list}} effect(s) on their {{bodyParts, list(type: disjunction)}} for {{operator}} {{count}} seconds_one": "Пока цель находится под действием {{effectNames, list}} эффекта(ов) на своих {{bodyParts, list(type: disjunction)}} в течение {{operator}} {{count}} секунды", "While target has the {{effectNames, list}} effect(s) on their {{bodyParts, list(type: disjunction)}} for {{operator}} {{count}} seconds_few": "Пока цель находится под действием {{effectNames, list}} эффекта(ов) на своих {{bodyParts, list(type: disjunction)}} в течение {{operator}} {{count}} секунд", @@ -500,9 +500,9 @@ "While target has the {{effectNames, list}} effect(s) on their {{bodyParts, list(type: disjunction)}} for {{operator}} {{count}} seconds_other": "Пока цель находится под действием {{effectNames, list}} эффекта(ов) на своих {{bodyParts, list(type: disjunction)}} в течение {{operator}} {{count}} секунд", "While target has the {{effectNames, list}} effect(s) on their {{bodyParts, list(type: disjunction)}}": "Пока цель находится под действием {{effectNames, list}} эффекта(ов) на своих {{bodyParts, list(type: disjunction)}}", "Obtain level {{level}} {{skillName}} skill": "Получить уровень {{level}} навыка {{skillName}}", - "{{compareMethod}} {{reputation}} reputation": "{{compareMethod}} {{reputation}} reputation", - "In area(s): {{areaList, list(type: disjunction)}}": "In area(s): {{areaList, list(type: disjunction)}}", - "Use any of:": "Use any of:", + "{{compareMethod}} {{reputation}} reputation": "{{compareMethod}} {{reputation}} отношение", + "In area(s): {{areaList, list(type: disjunction)}}": "В области: {{areaList, list(type: disjunction)}}", + "Use any of:": "Использовать что-то из:", "optional": "опционально", "task-page-description": "Эта страница содержит информацию о целях, наградах и стратегиях выполнения задания {{questName}}. Получите советы о том, как подготовиться и успешно выполнить задание.", "TarkovTracker": "TarkovTracker", @@ -510,18 +510,18 @@ "(on failure)": "(при провале)", "Task Details": "Детали задания", "Objectives": "Цель(и)", - "Fail On": "Fail On", + "Fail On": "Проваливаеться при", "Needed Keys": "Необходимые ключи", "Task Completion": "Завершение задания", "Rewards": "Награды", - "Trader Standing": "Положение с торговцами", + "Trader Standing": "Отношение с торговцами", "Skill Level": "Уровень навыков", "Trader Offer Unlock": "Разблокирует товар у торговца", "Trader Unlock": "Разблокирует торговца", - "Task Failure": "Task Failure", - "Can be restarted": "Can be restarted", - "Cannot be restarted": "Cannot be restarted", - "Penalties": "Penalties", + "Task Failure": "Провал задания", + "Can be restarted": "Можно перезапустить", + "Cannot be restarted": "Нельзя перезапустить", + "Penalties": "Наказания", "tasks-page-description": "Узнайте все, что вам нужно знать о заданиях в игре Escape from Tarkov. Узнайте о различных типах заданий, доступных в игре, о том, как их выполнять, и о наградах, которые вы можете получить.", "Hides completed tasks": "Скрывает завершенные задачи", "Hide locked": "Скрыть заблокированные", @@ -529,16 +529,16 @@ "Show all tasks": "Показать все задачи", "Name filter": "Фильтр по названию", "filter on task name": "фильтр по названию задачи", - "quests-page-p": "<0>У торговцев в Escape from Tarkov есть ряд заданий, которые вы можете выполнить.<1>В обмен на доставку предметов, устранение целей и выполнение других действий в рейдах, вы можете повысить свой рейтинг среди торговцев и заработать ценные предметы.", + "quests-page-p": "<0>У торговцев в Escape from Tarkov есть ряд заданий, которые вы можете выполнить.<1>В обмен на доставку предметов, устранение целей и выполнение других действий в рейдах, вы можете повысить свое отношение с торговцами и заработать ценные предметы.", "Settings": "Настройки", - "settings-page-description": "This page contains user settings on Tarkov.dev.", + "settings-page-description": "Эта страница содержит пользовательские настройки Tarkov.dev.", "Language": "Язык", "General": "Общие", "Has flea": "Есть барахолка", "Use TarkovTracker": "Использовать TarkovTracker", "TarkovTracker API Token": "Токен API TarkovTracker", "API Token": "Токен API", - "Stations": "Станции", + "Stations": "Модули", "Skills": "Навыки", "Dogtag Barters": "Бартеры с жетонами", "Exclude": "Исключить", @@ -547,34 +547,34 @@ "The current estimated average player level is {{avgPlayerLevel}}": "Текущий предполагаемый средний уровень игрока составляет {{avgPlayerLevel}}", "Miscellaneous": "Разное", "Hide remote control": "Скрыть удаленное управление", - "start-page-description": "Узнайте всю информацию о предметах, изделиях, бартерах, картах, уровнях добычи, прибыли от убежища, деталях торговцев, бесплатном API и многом другом на tarkov.dev! Бесплатная экосистема инструментов и руководств по Escape from Tarkov, созданная сообществом и с открытым исходным кодом.", + "start-page-description": "Узнайте всю информацию о предметах, крафтах, бартерах, картах, уровнях добычи, прибыли от убежища, деталях торговцев, бесплатном API и многом другом с tarkov.dev! Бесплатная, созданная сообществом экосистема инструментов и руководств по Escape from Tarkov с открытым исходным кодом.", "Load More": "Загрузить еще", "Tools": "Инструменты", "Ammo chart filter": "Фильтр таблицы патронов", "Traders barter profit": "Прибыль от бартерных сделок", - "Hideout crafts profit": "Прибыль от изделий в убежище", + "Hideout crafts profit": "Прибыль от крафтов в убежище", "Loot tiers ranking": "Рейтинг уровней лута", "Average wipe length": "Средняя длина вайпа", "Bitcoin farm profit": "Прибыль от биткоин фермы", "Invite Discord bot": "Пригласить Discord бота", "tarkov.dev is an open source tool kit for Escape from Tarkov.": "tarkov.dev является набором инструментов с открытым исходным кодом для игры Escape from Tarkov.", - "It is designed and maintained by the community to help you with quests, flea market trading, and improving your game! The API is also freely available for you to build your own tools and services related to EFT.": "Он разработан и поддерживается сообществом, чтобы помочь вам в выполнении квестов, торговле на барахолке и в совершенствовании вашей игры! Кроме того, для вас открыт свободный доступ к API, чтобы вы могли создавать собственные инструменты и сервисы, связанные с EFT.", + "It is designed and maintained by the community to help you with quests, flea market trading, and improving your game! The API is also freely available for you to build your own tools and services related to EFT.": "Он разработан и поддерживается сообществом, чтобы помочь вам в выполнении заданий, торговле на барахолке и в совершенствовании вашей игры! Кроме того, для вас открыт свободный доступ к API, чтобы вы могли создавать собственные инструменты и сервисы, связанные с EFT.", "You can add command to your StreamElements bot to get price check in your twitch / youtube channel chat": "Вы можете добавить команду к вашему боту StreamElements, чтобы получить проверку цен в чате вашего канала twitch / youtube", "Make bot - moderator, just type /mod streamelements in your chat": "Сделайте бота модератором, просто введите /mod streamelements в вашем чате", "Press the \"Add new command\" button": "Нажмите кнопку \"Добавить новую команду\"", "Press \"Activate Command\"": "Нажмите \"Активировать команду\"", "Player level": "Уровень игрока", - "Reputation": "Репутация", - "Commerce": "Торговля", + "Reputation": "Отношение", + "Commerce": "Оборот", "Trader {{trader}}": "Торговец {{trader}}", "trader-page-description": "Получите последнюю информацию о торговце {{trader}} в Escape from Tarkov. Узнайте о предметах, которые он продает на определенном Уровне Лояльности, и о том, как максимально использовать свои деньги, чтобы повысить Уровень Лояльности.", "Items with the best cash back prices for leveling": "Предметы с лучшими ценами кэшбэка для прокачки уровня", - "Spending": "Трата", + "Spending": "Продажа", "Unlocks at Loyalty Level {{level}}": "Открывается на {{level}} Уровне Лояльности", "Tasks given by {{traderName}}": "Задания, которые дает {{traderName}}", - "traders-page-description": "Find out everything you need to know about traders in Escape from Tarkov. Learn about the different traders available in the game, their locations, and the items they sell.", + "traders-page-description": "Узнайте все, что вам нужно знать о торговцах в игре Escape from Tarkov. Узнайте о различных торговцах, доступных в игре, их местоположении и предметах, которые они продают.", "About Traders": "О торговцах", - "traders-page-p": "<0>Они стали основой торговли в разрушенном, осажденном Норвинске. В Escape from Tarkov каждый торговец специализируется на определенном виде товаров, таких как медицинские принадлежности, оружие или военное снаряжение. Хотя их цены обычно высоки, вы получаете то, за что платите.<1>Более того, вы можете заработать репутацию с каждым торговцем через квесты, что позволит вам получать лучшие предложения в целом и снизить комиссионные, которые они получают (дополнительная наценка, которую вы платите при продаже и покупке), среди прочих преимуществ.<2>Кроме того, торговцы предоставляют другие услуги, такие как страхование и ремонт (позволяющие вам вернуть свое снаряжение в случае смерти во время рейда).", + "traders-page-p": "<0>Они стали основой торговли в разрушенном, осажденном Норвинске. В Escape from Tarkov каждый торговец специализируется на определенном виде товаров, таких как медицинские принадлежности, оружие или военное снаряжение. Хотя их цены обычно высоки, вы получаете то, за что платите.<1>Более того, вы можете заработать репутацию с каждым торговцем через Задания, что позволит вам получать лучшие предложения в целом и снизить комиссию, которые они получают (дополнительная наценка, которую вы платите при продаже и покупке), среди прочих преимуществ.<2>Кроме того, торговцы предоставляют другие услуги, такие как ремнот и страховка (позволяющая вам вернуть свое снаряжение в случае смерти во время рейда).", "Patch": "Патч", "Wipe start": "Начало вайпа", "Wipe end": "Конец вайпа", From 1f9023a5a30b10ac2592ec3e50917ca327f4f2bf Mon Sep 17 00:00:00 2001 From: dutlist Date: Wed, 31 Jan 2024 15:57:30 +0100 Subject: [PATCH 2/9] Adding a missing translation to russian lang --- src/translations/ru/translation.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/translations/ru/translation.json b/src/translations/ru/translation.json index 3c3953e2a..d9b301e70 100644 --- a/src/translations/ru/translation.json +++ b/src/translations/ru/translation.json @@ -2,7 +2,7 @@ "No data": "Нет данных", "Current Average Latency": "Текущая средняя задержка", "API Latency in milliseconds": "Задержка API в миллисекундах", - "No barters found for this item": "No barters found for this item", + "No barters found for this item": "Для этого предмета не найдено бартеров", "LL{{level}}": "{{level}}УЛ", "Barter at {{trader}}": "Бартер у {{trader}}", "Craft at {{station}}": "Крафтиться на {{station}}", From 0126994ec8af0c863bd8ffa33362fb1ae60a240a Mon Sep 17 00:00:00 2001 From: Razzmatazz Date: Wed, 31 Jan 2024 15:53:37 -0600 Subject: [PATCH 3/9] support tasks with alternate items --- src/components/quest-items-cell/index.js | 1 + src/components/quest-table/index.js | 12 +++-- src/features/quests/do-fetch-quests.mjs | 2 +- src/pages/quest/index.js | 63 +++++++++++++++++------- src/translations/en/translation.json | 4 +- 5 files changed, 59 insertions(+), 23 deletions(-) diff --git a/src/components/quest-items-cell/index.js b/src/components/quest-items-cell/index.js index 991062e70..b005a959f 100644 --- a/src/components/quest-items-cell/index.js +++ b/src/components/quest-items-cell/index.js @@ -30,6 +30,7 @@ function QuestItemsCell({ questItems }) {
{t('Amount')} : {questItem.count.toLocaleString()} + {questItem.alternates ? ` (${t('has alternates')})` : ''}
{ diff --git a/src/components/quest-table/index.js b/src/components/quest-table/index.js index aa51d52cd..804566817 100644 --- a/src/components/quest-table/index.js +++ b/src/components/quest-table/index.js @@ -19,7 +19,7 @@ import './index.css'; export function getRequiredQuestItems(quest, itemFilter = false) { const requiredItems = []; - const addItem = (item, count = 1, foundInRaid = false) => { + const addItem = (item, count = 1, foundInRaid = false, alternates = false) => { if (itemFilter && item.id !== itemFilter) { return; } @@ -28,15 +28,19 @@ export function getRequiredQuestItems(quest, itemFilter = false) { req = { item: item, count: 0, - foundInRaid: foundInRaid + foundInRaid: foundInRaid, + alternates: alternates }; requiredItems.push(req); } req.count += count; }; quest.objectives.forEach((objectiveData) => { - if (objectiveData.item?.id && objectiveData.type !== 'findItem') { - addItem(objectiveData.item, objectiveData.count || 1, objectiveData.foundInRaid); + if (objectiveData.items && objectiveData.type !== 'findItem') { + const alternates = objectiveData.items.length > 1; + for (const objItem of objectiveData.items) { + addItem(objItem, objectiveData.count || 1, objectiveData.foundInRaid, alternates); + } } if (objectiveData.markerItem?.id) { addItem(objectiveData.markerItem); diff --git a/src/features/quests/do-fetch-quests.mjs b/src/features/quests/do-fetch-quests.mjs index c9cbf6253..5a0c259a3 100644 --- a/src/features/quests/do-fetch-quests.mjs +++ b/src/features/quests/do-fetch-quests.mjs @@ -135,7 +135,7 @@ class QuestsQuery extends APIQuery { count } ...on TaskObjectiveItem { - item { + items { id } count diff --git a/src/pages/quest/index.js b/src/pages/quest/index.js index d0e72e1bf..2fe9943e6 100644 --- a/src/pages/quest/index.js +++ b/src/pages/quest/index.js @@ -428,17 +428,37 @@ function Quest() { ); } if (objective.type === 'giveItem' || objective.type === 'findItem') { - let item = items.find((i) => i.id === objective.item.id); - if (!item) + let itemElements = []; + let countElement = ''; + for (const objItem of objective.items) { + let item = items.find((i) => i.id === objItem.id); + if (!item) + continue; + if (item.properties?.defaultPreset) { + const preset = items.find(i => i.id === item.properties.defaultPreset.id); + item = { + ...item, + baseImageLink: preset.baseImageLink, + width: preset.width, + height: preset.height, + }; + } + itemElements.push( + 1 && objective.items.length === 1 ? objective.count : false} + isFIR={objective.foundInRaid} + /> + ); + } + if (itemElements.length < 1) { return null; - if (item.properties?.defaultPreset) { - const preset = items.find(i => i.id === item.properties.defaultPreset.id); - item = { - ...item, - baseImageLink: preset.baseImageLink, - width: preset.width, - height: preset.height, - }; + } + if (itemElements.length > 1 && objective.count > 1) { + countElement =
{t('{{itemCount}}x any of', {itemCount: objective.count})}:
; } const attributes = []; if (objective.dogTagLevel) { @@ -462,13 +482,17 @@ function Quest() { taskDetails = ( <> <> - 1 ? objective.count : false} - isFIR={objective.foundInRaid} - /> + {countElement} +
    + {itemElements.map((el, i) => +
  • + {el} +
  • + )} +
{attributes.length > 0 && (
    @@ -802,6 +826,11 @@ function Quest() {
); } + if (objective.type === 'playerLevel') { + taskDetails =
+ {t('Reach level {{playerLevel}}', {playerLevel: objective.playerLevel})} +
+ } let objectiveDescription = null; if (objective.description) { objectiveDescription =

{`✔️ ${objective.description} ${objective.optional ? `(${t('optional')})` : ''}`}

; diff --git a/src/translations/en/translation.json b/src/translations/en/translation.json index ee0afa6d9..164124b7c 100644 --- a/src/translations/en/translation.json +++ b/src/translations/en/translation.json @@ -577,5 +577,7 @@ "achievements-page-description": "This page includes information on the achievements that can be earned.", "Description": "Description", "Hidden": "Hidden", - "Player %": "Player %" + "Player %": "Player %", + "has alternates": "has alternates", + "{{itemCount}}x any of": "{{itemCount}}x any of" } From 6674b7c2b8736a3ad30747f25addcd910244b755 Mon Sep 17 00:00:00 2001 From: Razzmatazz Date: Wed, 31 Jan 2024 15:56:15 -0600 Subject: [PATCH 4/9] fix plant item quest --- src/pages/quest/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/quest/index.js b/src/pages/quest/index.js index 2fe9943e6..3538eca3f 100644 --- a/src/pages/quest/index.js +++ b/src/pages/quest/index.js @@ -526,7 +526,7 @@ function Quest() { ); } if (objective.type === 'plantItem') { - let item = items.find((i) => i.id === objective.item.id); + let item = items.find((i) => i.id === objective.items[0].id); if (!item) return null; if (item.properties?.defaultPreset) { From 7b415be769f5b4a0ec93e97147d1b3db41743238 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 1 Feb 2024 00:12:23 +0000 Subject: [PATCH 5/9] Bump the npm-dependencies group with 15 updates Bumps the npm-dependencies group with 15 updates: | Package | From | To | | --- | --- | --- | | [@mui/lab](https://github.com/mui/material-ui/tree/HEAD/packages/mui-lab) | `5.0.0-alpha.160` | `5.0.0-alpha.163` | | [@mui/material](https://github.com/mui/material-ui/tree/HEAD/packages/mui-material) | `5.15.4` | `5.15.7` | | [@reduxjs/toolkit](https://github.com/reduxjs/redux-toolkit) | `2.0.1` | `2.1.0` | | [@testing-library/jest-dom](https://github.com/testing-library/jest-dom) | `6.2.0` | `6.4.0` | | [@testing-library/react](https://github.com/testing-library/react-testing-library) | `14.1.2` | `14.2.0` | | [framer-motion](https://github.com/framer/motion) | `10.18.0` | `11.0.3` | | [i18next](https://github.com/i18next/i18next) | `23.7.16` | `23.8.2` | | [i18next-http-backend](https://github.com/i18next/i18next-http-backend) | `2.4.2` | `2.4.3` | | [react-i18next](https://github.com/i18next/react-i18next) | `14.0.0` | `14.0.1` | | [react-intersection-observer](https://github.com/thebuilder/react-intersection-observer) | `9.5.3` | `9.5.4` | | [react-redux](https://github.com/reduxjs/react-redux) | `9.0.4` | `9.1.0` | | [react-router-dom](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom) | `6.21.2` | `6.21.3` | | [react-zoom-pan-pinch](https://github.com/prc5/react-zoom-pan-pinch) | `3.3.0` | `3.4.0` | | [victory](https://github.com/FormidableLabs/victory) | `36.8.1` | `36.8.5` | | [prettier](https://github.com/prettier/prettier) | `3.1.1` | `3.2.4` | Updates `@mui/lab` from 5.0.0-alpha.160 to 5.0.0-alpha.163 - [Release notes](https://github.com/mui/material-ui/releases) - [Changelog](https://github.com/mui/material-ui/blob/master/CHANGELOG.md) - [Commits](https://github.com/mui/material-ui/commits/HEAD/packages/mui-lab) Updates `@mui/material` from 5.15.4 to 5.15.7 - [Release notes](https://github.com/mui/material-ui/releases) - [Changelog](https://github.com/mui/material-ui/blob/master/CHANGELOG.md) - [Commits](https://github.com/mui/material-ui/commits/v5.15.7/packages/mui-material) Updates `@reduxjs/toolkit` from 2.0.1 to 2.1.0 - [Release notes](https://github.com/reduxjs/redux-toolkit/releases) - [Commits](https://github.com/reduxjs/redux-toolkit/compare/v2.0.1...v2.1.0) Updates `@testing-library/jest-dom` from 6.2.0 to 6.4.0 - [Release notes](https://github.com/testing-library/jest-dom/releases) - [Changelog](https://github.com/testing-library/jest-dom/blob/main/CHANGELOG.md) - [Commits](https://github.com/testing-library/jest-dom/compare/v6.2.0...v6.4.0) Updates `@testing-library/react` from 14.1.2 to 14.2.0 - [Release notes](https://github.com/testing-library/react-testing-library/releases) - [Changelog](https://github.com/testing-library/react-testing-library/blob/main/CHANGELOG.md) - [Commits](https://github.com/testing-library/react-testing-library/compare/v14.1.2...v14.2.0) Updates `framer-motion` from 10.18.0 to 11.0.3 - [Changelog](https://github.com/framer/motion/blob/main/CHANGELOG.md) - [Commits](https://github.com/framer/motion/compare/v10.18.0...v11.0.3) Updates `i18next` from 23.7.16 to 23.8.2 - [Release notes](https://github.com/i18next/i18next/releases) - [Changelog](https://github.com/i18next/i18next/blob/master/CHANGELOG.md) - [Commits](https://github.com/i18next/i18next/compare/v23.7.16...v23.8.2) Updates `i18next-http-backend` from 2.4.2 to 2.4.3 - [Changelog](https://github.com/i18next/i18next-http-backend/blob/master/CHANGELOG.md) - [Commits](https://github.com/i18next/i18next-http-backend/compare/v2.4.2...v2.4.3) Updates `react-i18next` from 14.0.0 to 14.0.1 - [Changelog](https://github.com/i18next/react-i18next/blob/master/CHANGELOG.md) - [Commits](https://github.com/i18next/react-i18next/compare/v14.0.0...v14.0.1) Updates `react-intersection-observer` from 9.5.3 to 9.5.4 - [Release notes](https://github.com/thebuilder/react-intersection-observer/releases) - [Commits](https://github.com/thebuilder/react-intersection-observer/compare/v9.5.3...v9.5.4) Updates `react-redux` from 9.0.4 to 9.1.0 - [Release notes](https://github.com/reduxjs/react-redux/releases) - [Changelog](https://github.com/reduxjs/react-redux/blob/master/CHANGELOG.md) - [Commits](https://github.com/reduxjs/react-redux/compare/v9.0.4...v9.1.0) Updates `react-router-dom` from 6.21.2 to 6.21.3 - [Release notes](https://github.com/remix-run/react-router/releases) - [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router-dom/CHANGELOG.md) - [Commits](https://github.com/remix-run/react-router/commits/react-router-dom@6.21.3/packages/react-router-dom) Updates `react-zoom-pan-pinch` from 3.3.0 to 3.4.0 - [Release notes](https://github.com/prc5/react-zoom-pan-pinch/releases) - [Changelog](https://github.com/BetterTyped/react-zoom-pan-pinch/blob/master/CHANGELOG.md) - [Commits](https://github.com/prc5/react-zoom-pan-pinch/compare/v3.3.0...v3.4.0) Updates `victory` from 36.8.1 to 36.8.5 - [Release notes](https://github.com/FormidableLabs/victory/releases) - [Changelog](https://github.com/FormidableLabs/victory/blob/main/CHANGELOG.md) - [Commits](https://github.com/FormidableLabs/victory/compare/v36.8.1...v36.8.5) Updates `prettier` from 3.1.1 to 3.2.4 - [Release notes](https://github.com/prettier/prettier/releases) - [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md) - [Commits](https://github.com/prettier/prettier/compare/3.1.1...3.2.4) --- updated-dependencies: - dependency-name: "@mui/lab" dependency-type: direct:production update-type: version-update:semver-patch dependency-group: npm-dependencies - dependency-name: "@mui/material" dependency-type: direct:production update-type: version-update:semver-patch dependency-group: npm-dependencies - dependency-name: "@reduxjs/toolkit" dependency-type: direct:production update-type: version-update:semver-minor dependency-group: npm-dependencies - dependency-name: "@testing-library/jest-dom" dependency-type: direct:production update-type: version-update:semver-minor dependency-group: npm-dependencies - dependency-name: "@testing-library/react" dependency-type: direct:production update-type: version-update:semver-minor dependency-group: npm-dependencies - dependency-name: framer-motion dependency-type: direct:production update-type: version-update:semver-major dependency-group: npm-dependencies - dependency-name: i18next dependency-type: direct:production update-type: version-update:semver-minor dependency-group: npm-dependencies - dependency-name: i18next-http-backend dependency-type: direct:production update-type: version-update:semver-patch dependency-group: npm-dependencies - dependency-name: react-i18next dependency-type: direct:production update-type: version-update:semver-patch dependency-group: npm-dependencies - dependency-name: react-intersection-observer dependency-type: direct:production update-type: version-update:semver-patch dependency-group: npm-dependencies - dependency-name: react-redux dependency-type: direct:production update-type: version-update:semver-minor dependency-group: npm-dependencies - dependency-name: react-router-dom dependency-type: direct:production update-type: version-update:semver-patch dependency-group: npm-dependencies - dependency-name: react-zoom-pan-pinch dependency-type: direct:production update-type: version-update:semver-minor dependency-group: npm-dependencies - dependency-name: victory dependency-type: direct:production update-type: version-update:semver-patch dependency-group: npm-dependencies - dependency-name: prettier dependency-type: direct:development update-type: version-update:semver-minor dependency-group: npm-dependencies ... Signed-off-by: dependabot[bot] --- package-lock.json | 562 +++++++++++++++++++++++----------------------- package.json | 30 +-- 2 files changed, 298 insertions(+), 294 deletions(-) diff --git a/package-lock.json b/package-lock.json index 229d0880b..efa1a9968 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,22 +11,22 @@ "@emotion/styled": "^11.11.0", "@mdi/js": "^6.9.96", "@mdi/react": "^1.6.1", - "@mui/lab": "^5.0.0-alpha.160", - "@mui/material": "^5.15.4", - "@reduxjs/toolkit": "^2.0.1", - "@testing-library/jest-dom": "^6.2.0", - "@testing-library/react": "^14.1.2", + "@mui/lab": "^5.0.0-alpha.163", + "@mui/material": "^5.15.7", + "@reduxjs/toolkit": "^2.1.0", + "@testing-library/jest-dom": "^6.4.0", + "@testing-library/react": "^14.2.0", "@tippyjs/react": "^4.2.6", "classnames": "^2.5.1", "critical": "^6.0.5", "cross-fetch": "^4.0.0", "dayjs": "^1.11.10", "fast-deep-equal": "^3.1.3", - "framer-motion": "^10.18.0", + "framer-motion": "^11.0.3", "fuse.js": "^7.0.0", - "i18next": "^23.7.16", + "i18next": "^23.8.2", "i18next-browser-languagedetector": "^7.2.0", - "i18next-http-backend": "^2.4.2", + "i18next-http-backend": "^2.4.3", "intersection-observer": "^0.12.2", "leaflet": "^1.9.4", "leaflet-fullscreen": "^1.0.2", @@ -40,12 +40,12 @@ "react-error-boundary": "^4.0.12", "react-helmet": "^6.1.0", "react-hotkeys-hook": "^4.4.4", - "react-i18next": "^14.0.0", - "react-intersection-observer": "^9.5.3", + "react-i18next": "^14.0.1", + "react-intersection-observer": "^9.5.4", "react-loader-spinner": "^6.1.6", "react-query": "^3.39.3", - "react-redux": "^9.0.4", - "react-router-dom": "^6.21.2", + "react-redux": "^9.1.0", + "react-router-dom": "^6.21.3", "react-router-hash-link": "^2.4.3", "react-scripts": "^5.0.1", "react-select": "^5.8.0", @@ -53,15 +53,15 @@ "react-switch": "^7.0.0", "react-syntax-highlighter": "^15.5.0", "react-table": "^7.8.0", - "react-zoom-pan-pinch": "^3.3.0", + "react-zoom-pan-pinch": "^3.4.0", "resize-observer-polyfill": "^1.5.1", "sharp": "^0.33.2", "source-map-explorer": "^2.5.3", - "victory": "^36.8.1" + "victory": "^36.8.5" }, "devDependencies": { "@babel/plugin-proposal-private-property-in-object": "^7.21.11", - "prettier": "^3.1.1" + "prettier": "^3.2.4" }, "engines": { "node": ">=20" @@ -1965,9 +1965,9 @@ "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==" }, "node_modules/@babel/runtime": { - "version": "7.23.8", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.8.tgz", - "integrity": "sha512-Y7KbAP984rn1VGMbGqKmBLio9V7y5Je9GvU4rQPCPinCyNfUcToxIXl06d59URp/F3LwinvODxab5N/G6qggkw==", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.9.tgz", + "integrity": "sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw==", "dependencies": { "regenerator-runtime": "^0.14.0" }, @@ -2548,28 +2548,28 @@ } }, "node_modules/@floating-ui/core": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.5.3.tgz", - "integrity": "sha512-O0WKDOo0yhJuugCx6trZQj5jVJ9yR0ystG2JaNAemYUWce+pmM6WUEFIibnWyEJKdrDxhm75NoSRME35FNaM/Q==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.0.tgz", + "integrity": "sha512-PcF++MykgmTj3CIyOQbKA/hDzOAiqI3mhuoN44WRCopIs1sgoDoU4oty4Jtqaj/y3oDU6fnVSm4QG0a3t5i0+g==", "dependencies": { - "@floating-ui/utils": "^0.2.0" + "@floating-ui/utils": "^0.2.1" } }, "node_modules/@floating-ui/dom": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.5.4.tgz", - "integrity": "sha512-jByEsHIY+eEdCjnTVu+E3ephzTOzkQ8hgUfGwos+bg7NlH33Zc5uO+QHz1mrQUOgIKKDD1RtS201P9NvAfq3XQ==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.1.tgz", + "integrity": "sha512-iA8qE43/H5iGozC3W0YSnVSW42Vh522yyM1gj+BqRwVsTNOyr231PsXDaV04yT39PsO0QL2QpbI/M0ZaLUQgRQ==", "dependencies": { - "@floating-ui/core": "^1.5.3", - "@floating-ui/utils": "^0.2.0" + "@floating-ui/core": "^1.6.0", + "@floating-ui/utils": "^0.2.1" } }, "node_modules/@floating-ui/react-dom": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.5.tgz", - "integrity": "sha512-UsBK30Bg+s6+nsgblXtZmwHhgS2vmbuQK22qgt2pTQM6M3X6H1+cQcLXqgRY3ihVLcZJE6IvqDQozhsnIVqK/Q==", + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.8.tgz", + "integrity": "sha512-HOdqOt3R3OGeTKidaLvJKcgg75S6tibQ3Tif4eyd91QnIJWr0NLvoXFpJA/j8HqkFSL68GDca9AuyWEHlhyClw==", "dependencies": { - "@floating-ui/dom": "^1.5.4" + "@floating-ui/dom": "^1.6.1" }, "peerDependencies": { "react": ">=16.8.0", @@ -5139,14 +5139,14 @@ } }, "node_modules/@mui/base": { - "version": "5.0.0-beta.31", - "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.31.tgz", - "integrity": "sha512-+uNbP3OHJuZVI00WyMg7xfLZotaEY7LgvYXDfONVJbrS+K9wyjCIPNfjy8r9XJn4fbHo/5ibiZqjWnU9LMNv+A==", + "version": "5.0.0-beta.34", + "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.34.tgz", + "integrity": "sha512-e2mbTGTtReD/y5RFwnhkl1Tgl3XwgJhY040IlfkTVaU9f5LWrVhEnpRsYXu3B1CtLrwiWs4cu7aMHV9yRd4jpw==", "dependencies": { - "@babel/runtime": "^7.23.7", - "@floating-ui/react-dom": "^2.0.5", + "@babel/runtime": "^7.23.9", + "@floating-ui/react-dom": "^2.0.8", "@mui/types": "^7.2.13", - "@mui/utils": "^5.15.4", + "@mui/utils": "^5.15.7", "@popperjs/core": "^2.11.8", "clsx": "^2.1.0", "prop-types": "^15.8.1" @@ -5170,24 +5170,24 @@ } }, "node_modules/@mui/core-downloads-tracker": { - "version": "5.15.4", - "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.15.4.tgz", - "integrity": "sha512-0OZN9O6hAtBpx70mMNFOPaAIol/ytwZYPY+z7Rf9dK3+1Xlzwvj5/IeShJKvtp76S1qJyhPuvZg0+BGqQaUnUw==", + "version": "5.15.7", + "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.15.7.tgz", + "integrity": "sha512-AuF+Wo2Mp/edaO6vJnWjg+gj4tzEz5ChMZnAQpc22DXpSvM8ddgGcZvM7D7F99pIBoSv8ub+Iz0viL+yuGVmhg==", "funding": { "type": "opencollective", "url": "https://opencollective.com/mui-org" } }, "node_modules/@mui/lab": { - "version": "5.0.0-alpha.160", - "resolved": "https://registry.npmjs.org/@mui/lab/-/lab-5.0.0-alpha.160.tgz", - "integrity": "sha512-hMCOyjfpCHrb/ELs45baCHXICaZf3ygKY0R/phBKxxCxAX6V6Y3O9hxu2fS/Uw3LflZqUuv9TFkwVEWzq3OUkQ==", + "version": "5.0.0-alpha.163", + "resolved": "https://registry.npmjs.org/@mui/lab/-/lab-5.0.0-alpha.163.tgz", + "integrity": "sha512-ieOX3LFBln78jgNsBca0JUX+zAC2p6/u2P9b7rU9eZIr0AK44b5Qr8gDOWI1JfJtib4kxLGd1Msasrbxy5cMSQ==", "dependencies": { - "@babel/runtime": "^7.23.7", - "@mui/base": "5.0.0-beta.31", - "@mui/system": "^5.15.4", + "@babel/runtime": "^7.23.9", + "@mui/base": "5.0.0-beta.34", + "@mui/system": "^5.15.7", "@mui/types": "^7.2.13", - "@mui/utils": "^5.15.4", + "@mui/utils": "^5.15.7", "clsx": "^2.1.0", "prop-types": "^15.8.1" }, @@ -5201,7 +5201,7 @@ "peerDependencies": { "@emotion/react": "^11.5.0", "@emotion/styled": "^11.3.0", - "@mui/material": ">=5.10.11", + "@mui/material": ">=5.15.0", "@types/react": "^17.0.0 || ^18.0.0", "react": "^17.0.0 || ^18.0.0", "react-dom": "^17.0.0 || ^18.0.0" @@ -5219,16 +5219,16 @@ } }, "node_modules/@mui/material": { - "version": "5.15.4", - "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.15.4.tgz", - "integrity": "sha512-T/LGRAC+M0c+D3+y67eHwIN5bSje0TxbcJCWR0esNvU11T0QwrX3jedXItPNBwMupF2F5VWCDHBVLlFnN3+ABA==", - "dependencies": { - "@babel/runtime": "^7.23.7", - "@mui/base": "5.0.0-beta.31", - "@mui/core-downloads-tracker": "^5.15.4", - "@mui/system": "^5.15.4", + "version": "5.15.7", + "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.15.7.tgz", + "integrity": "sha512-l6+AiKZH3iOJmZCnlpel8ghYQe9Lq0BEuKP8fGj3g5xz4arO9GydqYAtLPMvuHKtArj8lJGNuT2yHYxmejincA==", + "dependencies": { + "@babel/runtime": "^7.23.9", + "@mui/base": "5.0.0-beta.34", + "@mui/core-downloads-tracker": "^5.15.7", + "@mui/system": "^5.15.7", "@mui/types": "^7.2.13", - "@mui/utils": "^5.15.4", + "@mui/utils": "^5.15.7", "@types/react-transition-group": "^4.4.10", "clsx": "^2.1.0", "csstype": "^3.1.2", @@ -5263,12 +5263,12 @@ } }, "node_modules/@mui/private-theming": { - "version": "5.15.4", - "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.15.4.tgz", - "integrity": "sha512-9N5myIMEEQTM5WYWPGvvYADzjFo12LgJ7S+2iTZkBNOcJpUxQYM1tvYjkHCDV+t1ocMOEgjR2EfJ9Dus30dBlg==", + "version": "5.15.7", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.15.7.tgz", + "integrity": "sha512-bcEeeXm7GyQCQvN9dwo8htGv8/6tP05p0i02Z7GXm5EoDPlBcqTNGugsjNLoGq6B0SsdyanjJGw0Jw00o1yAOA==", "dependencies": { - "@babel/runtime": "^7.23.7", - "@mui/utils": "^5.15.4", + "@babel/runtime": "^7.23.9", + "@mui/utils": "^5.15.7", "prop-types": "^15.8.1" }, "engines": { @@ -5289,11 +5289,11 @@ } }, "node_modules/@mui/styled-engine": { - "version": "5.15.4", - "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.15.4.tgz", - "integrity": "sha512-vtrZUXG5XI8CNiNLcxjIirW4dEbOloR+ikfm6ePBo7jXpJdpXjVzBWetrfE+5eI0cHkKWlTptnJ2voKV8pBRfw==", + "version": "5.15.7", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.15.7.tgz", + "integrity": "sha512-ixSdslOjK1kzdGcxqj7O3d14By/LPQ7EWknsViQ8RaeT863EAQemS+zvUJDTcOpkfJh6q6gPnYMIb2TJCs9eWA==", "dependencies": { - "@babel/runtime": "^7.23.7", + "@babel/runtime": "^7.23.9", "@emotion/cache": "^11.11.0", "csstype": "^3.1.2", "prop-types": "^15.8.1" @@ -5320,15 +5320,15 @@ } }, "node_modules/@mui/system": { - "version": "5.15.4", - "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.15.4.tgz", - "integrity": "sha512-KCwkHajGBXPs2TK1HJjIyab4NDk0cZoBDYN/TTlXVo1qBAmCjY0vjqrlsjeoG+wrwwcezXMLs/e6OGP66fPCog==", + "version": "5.15.7", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.15.7.tgz", + "integrity": "sha512-9alZ4/dLxsTwUOdqakgzxiL5YW6ntqj0CfzWImgWnBMTZhgGcPsbYpBLniNkkk7/jptma4/bykWXHwju/ls/pg==", "dependencies": { - "@babel/runtime": "^7.23.7", - "@mui/private-theming": "^5.15.4", - "@mui/styled-engine": "^5.15.4", + "@babel/runtime": "^7.23.9", + "@mui/private-theming": "^5.15.7", + "@mui/styled-engine": "^5.15.7", "@mui/types": "^7.2.13", - "@mui/utils": "^5.15.4", + "@mui/utils": "^5.15.7", "clsx": "^2.1.0", "csstype": "^3.1.2", "prop-types": "^15.8.1" @@ -5372,11 +5372,11 @@ } }, "node_modules/@mui/utils": { - "version": "5.15.4", - "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.15.4.tgz", - "integrity": "sha512-E2wLQGBcs3VR52CpMRjk46cGscC4cbf3Q2uyHNaAeL36yTTm+aVNbtsTCazXtjOP4BDd8lu6VtlTpVC8Rtl4mg==", + "version": "5.15.7", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.15.7.tgz", + "integrity": "sha512-8qhsxQRNV6aEOjjSk6YQIYJxkF5klhj8oG1FEEU4z6HV78TjNqRxMP08QGcdsibEbez+nihAaz6vu83b4XqbAg==", "dependencies": { - "@babel/runtime": "^7.23.7", + "@babel/runtime": "^7.23.9", "@types/prop-types": "^15.7.11", "prop-types": "^15.8.1", "react-is": "^18.2.0" @@ -5610,12 +5610,12 @@ } }, "node_modules/@reduxjs/toolkit": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-2.0.1.tgz", - "integrity": "sha512-fxIjrR9934cmS8YXIGd9e7s1XRsEU++aFc9DVNMFMRTM5Vtsg2DCRMj21eslGtDt43IUf9bJL3h5bwUlZleibA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-2.1.0.tgz", + "integrity": "sha512-nfJ/b4ZhzUevQ1ZPKjlDL6CMYxO4o7ZL7OSsvSOxzT/EN11LsBDgTqP7aedHtBrFSVoK7oTP1SbMWUwGb30NLg==", "dependencies": { "immer": "^10.0.3", - "redux": "^5.0.0", + "redux": "^5.0.1", "redux-thunk": "^3.1.0", "reselect": "^5.0.1" }, @@ -6241,9 +6241,9 @@ } }, "node_modules/@testing-library/jest-dom": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.2.0.tgz", - "integrity": "sha512-+BVQlJ9cmEn5RDMUS8c2+TU6giLvzaHZ8sU/x0Jj7fk+6/46wPdwlgOPcpxS17CjcanBi/3VmGMqVr2rmbUmNw==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.4.0.tgz", + "integrity": "sha512-GgGT3OR8qhIjk2SBMy51AYDWoMnAyR/cwjZO4SttuBmIQ9wWy9QmVOeaSbgT5Bm0J6qLBaf4+dsJWfisvafoaA==", "dependencies": { "@adobe/css-tools": "^4.3.2", "@babel/runtime": "^7.9.2", @@ -6261,6 +6261,7 @@ }, "peerDependencies": { "@jest/globals": ">= 28", + "@types/bun": "latest", "@types/jest": ">= 28", "jest": ">= 28", "vitest": ">= 0.32" @@ -6269,6 +6270,9 @@ "@jest/globals": { "optional": true }, + "@types/bun": { + "optional": true + }, "@types/jest": { "optional": true }, @@ -6342,9 +6346,9 @@ } }, "node_modules/@testing-library/react": { - "version": "14.1.2", - "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-14.1.2.tgz", - "integrity": "sha512-z4p7DVBTPjKM5qDZ0t5ZjzkpSNb+fZy1u6bzO7kk8oeGagpPCAtgh4cx1syrfp7a+QWkM021jGqjJaxJJnXAZg==", + "version": "14.2.0", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-14.2.0.tgz", + "integrity": "sha512-7uBnPHyOG6nDGCzv8SLeJbSa33ZoYw7swYpSLIgJvBALdq7l9zPNk33om4USrxy1lKTxXaVfufzLmq83WNfWIw==", "dependencies": { "@babel/runtime": "^7.12.5", "@testing-library/dom": "^9.0.0", @@ -12611,9 +12615,9 @@ } }, "node_modules/framer-motion": { - "version": "10.18.0", - "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-10.18.0.tgz", - "integrity": "sha512-oGlDh1Q1XqYPksuTD/usb0I70hq95OUzmL9+6Zd+Hs4XV0oaISBa/UUMSjYiq6m8EUF32132mOJ8xVZS+I0S6w==", + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-11.0.3.tgz", + "integrity": "sha512-6x2poQpIWBdbZwLd73w6cKZ1I9IEPIU94C6/Swp1Zt3LJ+sB5bPe1E2wC6EH5hSISXNkMJ4afH7AdwS7MrtkWw==", "dependencies": { "tslib": "^2.4.0" }, @@ -13406,9 +13410,9 @@ } }, "node_modules/i18next": { - "version": "23.7.16", - "resolved": "https://registry.npmjs.org/i18next/-/i18next-23.7.16.tgz", - "integrity": "sha512-SrqFkMn9W6Wb43ZJ9qrO6U2U4S80RsFMA7VYFSqp7oc7RllQOYDCdRfsse6A7Cq/V8MnpxKvJCYgM8++27n4Fw==", + "version": "23.8.2", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-23.8.2.tgz", + "integrity": "sha512-Z84zyEangrlERm0ZugVy4bIt485e/H8VecGUZkZWrH7BDePG6jT73QdL9EA1tRTTVVMpry/MgWIP1FjEn0DRXA==", "funding": [ { "type": "individual", @@ -13436,9 +13440,9 @@ } }, "node_modules/i18next-http-backend": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/i18next-http-backend/-/i18next-http-backend-2.4.2.tgz", - "integrity": "sha512-wKrgGcaFQ4EPjfzBTjzMU0rbFTYpa0S5gv9N/d8WBmWS64+IgJb7cHddMvV+tUkse7vUfco3eVs2lB+nJhPo3w==", + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/i18next-http-backend/-/i18next-http-backend-2.4.3.tgz", + "integrity": "sha512-jo2M03O6n1/DNb51WSQ8PsQ0xEELzLZRdYUTbf17mLw3rVwnJF9hwNgMXvEFSxxb+N8dT+o0vtigA6s5mGWyPA==", "dependencies": { "cross-fetch": "4.0.0" } @@ -22056,9 +22060,9 @@ } }, "node_modules/prettier": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.1.1.tgz", - "integrity": "sha512-22UbSzg8luF4UuZtzgiUOfcGM8s4tjBv6dJRT7j275NXsy2jb4aJa4NNveul5x4eqlF1wuhuR2RElK71RvmVaw==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.4.tgz", + "integrity": "sha512-FWu1oLHKCrtpO1ypU6J0SbK2d9Ckwysq6bHj/uaCP26DxrPpppCLQRGVuqAxSTvhF00AcvDRyYrLNW7ocBhFFQ==", "dev": true, "bin": { "prettier": "bin/prettier.cjs" @@ -22792,9 +22796,9 @@ } }, "node_modules/react-i18next": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-14.0.0.tgz", - "integrity": "sha512-OCrS8rHNAmnr8ggGRDxjakzihrMW7HCbsplduTm3EuuQ6fyvWGT41ksZpqbduYoqJurBmEsEVZ1pILSUWkHZng==", + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-14.0.1.tgz", + "integrity": "sha512-TMV8hFismBmpMdIehoFHin/okfvgjFhp723RYgIqB4XyhDobVMyukyM3Z8wtTRmajyFMZrBl/OaaXF2P6WjUAw==", "dependencies": { "@babel/runtime": "^7.22.5", "html-parse-stringify": "^3.0.1" @@ -22813,9 +22817,9 @@ } }, "node_modules/react-intersection-observer": { - "version": "9.5.3", - "resolved": "https://registry.npmjs.org/react-intersection-observer/-/react-intersection-observer-9.5.3.tgz", - "integrity": "sha512-NJzagSdUPS5rPhaLsHXYeJbsvdpbJwL6yCHtMk91hc0ufQ2BnXis+0QQ9NBh6n9n+Q3OyjR6OQLShYbaNBkThQ==", + "version": "9.5.4", + "resolved": "https://registry.npmjs.org/react-intersection-observer/-/react-intersection-observer-9.5.4.tgz", + "integrity": "sha512-UhZgFMPFf36vFGi6HhM5Q+lm+JxeYbbt+G1iuXGmlbUehxPtL7s29SeGabaTBR8ucG6UizfT3cyYUhveJeM9rQ==", "peerDependencies": { "react": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0" } @@ -22867,9 +22871,9 @@ } }, "node_modules/react-redux": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-9.0.4.tgz", - "integrity": "sha512-9J1xh8sWO0vYq2sCxK2My/QO7MzUMRi3rpiILP/+tDr8krBHixC6JMM17fMK88+Oh3e4Ae6/sHIhNBgkUivwFA==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-9.1.0.tgz", + "integrity": "sha512-6qoDzIO+gbrza8h3hjMA9aq4nwVFCKFtY2iLxCtVT38Swyy2C/dJCGBXHeHLtx6qlg/8qzc2MrhOeduf5K32wQ==", "dependencies": { "@types/use-sync-external-store": "^0.0.3", "use-sync-external-store": "^1.0.0" @@ -22901,9 +22905,9 @@ } }, "node_modules/react-router": { - "version": "6.21.2", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.21.2.tgz", - "integrity": "sha512-jJcgiwDsnaHIeC+IN7atO0XiSRCrOsQAHHbChtJxmgqG2IaYQXSnhqGb5vk2CU/wBQA12Zt+TkbuJjIn65gzbA==", + "version": "6.21.3", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.21.3.tgz", + "integrity": "sha512-a0H638ZXULv1OdkmiK6s6itNhoy33ywxmUFT/xtSoVyf9VnC7n7+VT4LjVzdIHSaF5TIh9ylUgxMXksHTgGrKg==", "dependencies": { "@remix-run/router": "1.14.2" }, @@ -22915,12 +22919,12 @@ } }, "node_modules/react-router-dom": { - "version": "6.21.2", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.21.2.tgz", - "integrity": "sha512-tE13UukgUOh2/sqYr6jPzZTzmzc70aGRP4pAjG2if0IP3aUT+sBtAKUJh0qMh0zylJHGLmzS+XWVaON4UklHeg==", + "version": "6.21.3", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.21.3.tgz", + "integrity": "sha512-kNzubk7n4YHSrErzjLK72j0B5i969GsuCGazRl3G6j1zqZBLjuSlYBdVdkDOgzGdPIffUOc9nmgiadTEVoq91g==", "dependencies": { "@remix-run/router": "1.14.2", - "react-router": "6.21.2" + "react-router": "6.21.3" }, "engines": { "node": ">=14.0.0" @@ -24163,9 +24167,9 @@ } }, "node_modules/react-zoom-pan-pinch": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/react-zoom-pan-pinch/-/react-zoom-pan-pinch-3.3.0.tgz", - "integrity": "sha512-vy1h8aenDzXye+HRqANZaSA8IPHoqOiuDPFBkswoyPUH8uMfsmbeH6gFI4r4BhEJa0xIlcA+FbvhidRWKGUrOg==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/react-zoom-pan-pinch/-/react-zoom-pan-pinch-3.4.0.tgz", + "integrity": "sha512-JqqDxxNrYACseRhnk3i0uIa5qNnO1t9lGSWq/O9QYI99g6qhnKqhfnqbcfQMlKjY+y7JzQV+2Q5QDeYI201rCg==", "engines": { "node": ">=8", "npm": ">=5" @@ -27032,384 +27036,384 @@ } }, "node_modules/victory": { - "version": "36.8.1", - "resolved": "https://registry.npmjs.org/victory/-/victory-36.8.1.tgz", - "integrity": "sha512-RFbyQOpHynJUJ1oQB7OLb9qHmcgAZmMignRkFSsyrY82t5JYysSV8ISRn4I0c/0+e3QvGY3pPZ8qQNAdgnss7A==", - "dependencies": { - "victory-area": "^36.8.1", - "victory-axis": "^36.8.1", - "victory-bar": "^36.8.1", - "victory-box-plot": "^36.8.1", - "victory-brush-container": "^36.8.1", - "victory-brush-line": "^36.8.1", - "victory-candlestick": "^36.8.1", - "victory-canvas": "^36.8.1", - "victory-chart": "^36.8.1", - "victory-core": "^36.8.1", - "victory-create-container": "^36.8.1", - "victory-cursor-container": "^36.8.1", - "victory-errorbar": "^36.8.1", - "victory-group": "^36.8.1", - "victory-histogram": "^36.8.1", - "victory-legend": "^36.8.1", - "victory-line": "^36.8.1", - "victory-pie": "^36.8.1", - "victory-polar-axis": "^36.8.1", - "victory-scatter": "^36.8.1", - "victory-selection-container": "^36.8.1", - "victory-shared-events": "^36.8.1", - "victory-stack": "^36.8.1", - "victory-tooltip": "^36.8.1", - "victory-voronoi": "^36.8.1", - "victory-voronoi-container": "^36.8.1", - "victory-zoom-container": "^36.8.1" + "version": "36.8.5", + "resolved": "https://registry.npmjs.org/victory/-/victory-36.8.5.tgz", + "integrity": "sha512-6G2RliBRLlyKUJ9sfdGzUkD0r6FF/jXEL5W0ZgtvZ/guTT1JLdDBma41DwYCmsrYw6sxKXi6UFxNu2mzoS0xaw==", + "dependencies": { + "victory-area": "^36.8.5", + "victory-axis": "^36.8.5", + "victory-bar": "^36.8.5", + "victory-box-plot": "^36.8.5", + "victory-brush-container": "^36.8.5", + "victory-brush-line": "^36.8.5", + "victory-candlestick": "^36.8.5", + "victory-canvas": "^36.8.5", + "victory-chart": "^36.8.5", + "victory-core": "^36.8.5", + "victory-create-container": "^36.8.5", + "victory-cursor-container": "^36.8.5", + "victory-errorbar": "^36.8.5", + "victory-group": "^36.8.5", + "victory-histogram": "^36.8.5", + "victory-legend": "^36.8.5", + "victory-line": "^36.8.5", + "victory-pie": "^36.8.5", + "victory-polar-axis": "^36.8.5", + "victory-scatter": "^36.8.5", + "victory-selection-container": "^36.8.5", + "victory-shared-events": "^36.8.5", + "victory-stack": "^36.8.5", + "victory-tooltip": "^36.8.5", + "victory-voronoi": "^36.8.5", + "victory-voronoi-container": "^36.8.5", + "victory-zoom-container": "^36.8.5" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-area": { - "version": "36.8.1", - "resolved": "https://registry.npmjs.org/victory-area/-/victory-area-36.8.1.tgz", - "integrity": "sha512-vH7d9DoIDnX8XYOe+YKWdVUS+p88j/wCq+k6D4XP1xv3oc8kGFyvcv/sE0mPo7+2hLkboSJCVqL/S/yW+WQp5w==", + "version": "36.8.5", + "resolved": "https://registry.npmjs.org/victory-area/-/victory-area-36.8.5.tgz", + "integrity": "sha512-XNSXHrccooW7962XNrfMKZj0yMeRLTDy2dvmbRJmN5YrWG9ThcO+ncM+sEH3LV7oG7dbAsrwZVqne8iE8nxIiQ==", "dependencies": { "lodash": "^4.17.19", "prop-types": "^15.8.1", - "victory-core": "^36.8.1", - "victory-vendor": "^36.8.1" + "victory-core": "^36.8.5", + "victory-vendor": "^36.8.5" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-axis": { - "version": "36.8.1", - "resolved": "https://registry.npmjs.org/victory-axis/-/victory-axis-36.8.1.tgz", - "integrity": "sha512-Ut99UlH3WjA05C9WoFk9Tzj8Yxer495bqjygCnTM6XYpAPwi3FpPC3VXtlGkSAky9vLMOYwjTpX13wl6Twt76Q==", + "version": "36.8.5", + "resolved": "https://registry.npmjs.org/victory-axis/-/victory-axis-36.8.5.tgz", + "integrity": "sha512-KuUdFuJy+/6Ws+YMC3/WskGY12g114sFbhAuNXoWWEf+4gqF9KNfIVaOzsRITBoiEj+lQw9WkSh7ptQYSM+7gg==", "dependencies": { "lodash": "^4.17.19", "prop-types": "^15.8.1", - "victory-core": "^36.8.1" + "victory-core": "^36.8.5" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-bar": { - "version": "36.8.1", - "resolved": "https://registry.npmjs.org/victory-bar/-/victory-bar-36.8.1.tgz", - "integrity": "sha512-d2JhX0fCSYcLyLUz27/6USQ/EfpRCFDi7PgLj7zt5mQkL8S6IYGkaTBWeMFy+FMDYqJ/nxJGaLnLCNbJbSKThg==", + "version": "36.8.5", + "resolved": "https://registry.npmjs.org/victory-bar/-/victory-bar-36.8.5.tgz", + "integrity": "sha512-sygGl+EHQK6l1ZXFMRZ3ESrnl2XLLZHZFf61jfh8NOIJYh0+EVN/uMUbzMn3/OuKVtlmNUUa1w+aEtQybv1zPQ==", "dependencies": { "lodash": "^4.17.19", "prop-types": "^15.8.1", - "victory-core": "^36.8.1", - "victory-vendor": "^36.8.1" + "victory-core": "^36.8.5", + "victory-vendor": "^36.8.5" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-box-plot": { - "version": "36.8.1", - "resolved": "https://registry.npmjs.org/victory-box-plot/-/victory-box-plot-36.8.1.tgz", - "integrity": "sha512-k4eam2kRUyy+SeXz/BNTP9ID6ToxuSmRd8Uy+t5Q9VDEqX4YQK8Tal7qcl36BCts+gpADqeSb1lJqZkvpzbKFA==", + "version": "36.8.5", + "resolved": "https://registry.npmjs.org/victory-box-plot/-/victory-box-plot-36.8.5.tgz", + "integrity": "sha512-SQwDJE1rPNTd5/rt00EtuqGuFzBBiPER+steGiClNvUwrXhrc7cA25XgykCYTeUpG1k01yTTjzZHRvmNnErCAg==", "dependencies": { "lodash": "^4.17.19", "prop-types": "^15.8.1", - "victory-core": "^36.8.1", - "victory-vendor": "^36.8.1" + "victory-core": "^36.8.5", + "victory-vendor": "^36.8.5" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-brush-container": { - "version": "36.8.1", - "resolved": "https://registry.npmjs.org/victory-brush-container/-/victory-brush-container-36.8.1.tgz", - "integrity": "sha512-Zar1jWtNTfAc8BUuPBs8ZGHtpEGQEOQIuRg4Zy2P2Z6ue28dQl+9BIVCpiXbOk8H4Ox7ExqVM//toAnWho0oRQ==", + "version": "36.8.5", + "resolved": "https://registry.npmjs.org/victory-brush-container/-/victory-brush-container-36.8.5.tgz", + "integrity": "sha512-i1DgVzVSP2D9PSHXQQJN7tTSbM6faQP65WHTwEYZhd9MFpLE3QwwCgRI5ur/jXYTqg9qL5+YHApq9R9CiNp9wg==", "dependencies": { "lodash": "^4.17.19", "prop-types": "^15.8.1", "react-fast-compare": "^3.2.0", - "victory-core": "^36.8.1" + "victory-core": "^36.8.5" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-brush-line": { - "version": "36.8.1", - "resolved": "https://registry.npmjs.org/victory-brush-line/-/victory-brush-line-36.8.1.tgz", - "integrity": "sha512-dFZFob88eL3WAJ79PqezvzOwncYtv82kd9lFcrU2K6/WX9PHU1nPVS9b1n9oYwxQs9EIizSufbXEd1AltTTQDA==", + "version": "36.8.5", + "resolved": "https://registry.npmjs.org/victory-brush-line/-/victory-brush-line-36.8.5.tgz", + "integrity": "sha512-DedU9+VYRycegqIBmKzE5bwb4xQonda0CCfqbhexK1i3i76ON7X8fBKRFx+MlPLyO8ETXdfqTAHO7ZhRuapk3A==", "dependencies": { "lodash": "^4.17.19", "prop-types": "^15.8.1", "react-fast-compare": "^3.2.0", - "victory-core": "^36.8.1" + "victory-core": "^36.8.5" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-candlestick": { - "version": "36.8.1", - "resolved": "https://registry.npmjs.org/victory-candlestick/-/victory-candlestick-36.8.1.tgz", - "integrity": "sha512-+Gnfc8ydHo4oKOKz+cy6ntcUoiyAItwuV6XXnWnLu+KO4BYhkBFxBFfHMYl/pBdkk+R7qpKVkgeztvV+Oajk6w==", + "version": "36.8.5", + "resolved": "https://registry.npmjs.org/victory-candlestick/-/victory-candlestick-36.8.5.tgz", + "integrity": "sha512-Chm9mXcbBz/Jv/QlP+G257N9VZjmPT0Kch7vjzo/Sus+AYAcVz7zkoQwbdfZGHbfFlsIyNIQ219oUZWYjxx6iw==", "dependencies": { "lodash": "^4.17.19", "prop-types": "^15.8.1", - "victory-core": "^36.8.1" + "victory-core": "^36.8.5" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-canvas": { - "version": "36.8.1", - "resolved": "https://registry.npmjs.org/victory-canvas/-/victory-canvas-36.8.1.tgz", - "integrity": "sha512-Pg8nxUqR5pgFmBenZMHkBAur7Enn70182YMincgbqE2EMZI5PzaedvU8z4eKcq32DJdZiKEyQLoeuRGEVz80Tg==", + "version": "36.8.5", + "resolved": "https://registry.npmjs.org/victory-canvas/-/victory-canvas-36.8.5.tgz", + "integrity": "sha512-IjoKGB0v3jeEW57KIgUbB6X8JhhOc8l3yIQUfoaWwt3+sVxOb5ur7ViLHmd0ry/5XO42NnyVxSbIMXdvBS0wBA==", "dependencies": { "lodash": "^4.17.19", "prop-types": "^15.8.1", - "victory-bar": "^36.8.1", - "victory-core": "^36.8.1" + "victory-bar": "^36.8.5", + "victory-core": "^36.8.5" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-chart": { - "version": "36.8.1", - "resolved": "https://registry.npmjs.org/victory-chart/-/victory-chart-36.8.1.tgz", - "integrity": "sha512-+CB3XFFfkV9vH9nPid53pZ1CNBlQY/FrnjvdwL5X9vVSZU4FyVGBBze3aC7uUz4aS9aq0dPLKIo6rkPyUbZaCw==", + "version": "36.8.5", + "resolved": "https://registry.npmjs.org/victory-chart/-/victory-chart-36.8.5.tgz", + "integrity": "sha512-WlUUxMlXShbRS6jaZXq1YAMUTF11f6Q5AG7+WG462BLB9d5nYOT5zf5PSz68jq8NvDfkV2HQZFP51SFEvSEr+Q==", "dependencies": { "lodash": "^4.17.19", "prop-types": "^15.8.1", "react-fast-compare": "^3.2.0", - "victory-axis": "^36.8.1", - "victory-core": "^36.8.1", - "victory-polar-axis": "^36.8.1", - "victory-shared-events": "^36.8.1" + "victory-axis": "^36.8.5", + "victory-core": "^36.8.5", + "victory-polar-axis": "^36.8.5", + "victory-shared-events": "^36.8.5" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-core": { - "version": "36.8.1", - "resolved": "https://registry.npmjs.org/victory-core/-/victory-core-36.8.1.tgz", - "integrity": "sha512-N60o4+q7AxMhMLY/51IiYcs9E/gu7VouYAy5e+YNvQlH6LPLy9vaUGOm8N7M+CrpQDo4ACrW3B2A5MyYEFihgQ==", + "version": "36.8.5", + "resolved": "https://registry.npmjs.org/victory-core/-/victory-core-36.8.5.tgz", + "integrity": "sha512-aKr3Y3akxSdfdBWOaiipfydtPyDRLNFs7NbK3S04go5hNBEHxqGfirOJUIEjNj9y6DL+Kx8PW9qsJPfbrpPGhg==", "dependencies": { "lodash": "^4.17.21", "prop-types": "^15.8.1", "react-fast-compare": "^3.2.0", - "victory-vendor": "^36.8.1" + "victory-vendor": "^36.8.5" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-create-container": { - "version": "36.8.1", - "resolved": "https://registry.npmjs.org/victory-create-container/-/victory-create-container-36.8.1.tgz", - "integrity": "sha512-awgLXHIAcH7joN2asMaTxjZw9USojgxOmX0UyVaOQG84Py4fK6kGIbEa76t7Wy6CCz2chO6Aw0ClBKg4e/RVEw==", + "version": "36.8.5", + "resolved": "https://registry.npmjs.org/victory-create-container/-/victory-create-container-36.8.5.tgz", + "integrity": "sha512-GJOs/SGhS4L5vkDxdQzO5RSR80gEbhZTSBC2co+EhzmaJXBTRAak6sGKmrTQK5zvc5PpLYSK+ImkRZznnxlhIQ==", "dependencies": { "lodash": "^4.17.19", - "victory-brush-container": "^36.8.1", - "victory-core": "^36.8.1", - "victory-cursor-container": "^36.8.1", - "victory-selection-container": "^36.8.1", - "victory-voronoi-container": "^36.8.1", - "victory-zoom-container": "^36.8.1" + "victory-brush-container": "^36.8.5", + "victory-core": "^36.8.5", + "victory-cursor-container": "^36.8.5", + "victory-selection-container": "^36.8.5", + "victory-voronoi-container": "^36.8.5", + "victory-zoom-container": "^36.8.5" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-cursor-container": { - "version": "36.8.1", - "resolved": "https://registry.npmjs.org/victory-cursor-container/-/victory-cursor-container-36.8.1.tgz", - "integrity": "sha512-Siilt5uKXk5NKczpTFy1NzeIeS2736ZgvHy23oywJ0HnpiBErq0xZIcxKb+QmBfnXJkf8vBsGh7C2ChuAjHpqg==", + "version": "36.8.5", + "resolved": "https://registry.npmjs.org/victory-cursor-container/-/victory-cursor-container-36.8.5.tgz", + "integrity": "sha512-3gJOz+e4UgoIhkR69KeDBuT5MeRPmRl+37X6gnN5uV09IkeNSfosdesIQai6NfGic6g4BCzEhOAktYw61qo53g==", "dependencies": { "lodash": "^4.17.19", "prop-types": "^15.8.1", - "victory-core": "^36.8.1" + "victory-core": "^36.8.5" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-errorbar": { - "version": "36.8.1", - "resolved": "https://registry.npmjs.org/victory-errorbar/-/victory-errorbar-36.8.1.tgz", - "integrity": "sha512-M3AI1CneVtgH1wRjmXujAmY3tMhhEfAq0k8Y7nEUwNqWjMU6ruUHkwQNzqABUnjgVp1uokVTDGLskLSdBnme9Q==", + "version": "36.8.5", + "resolved": "https://registry.npmjs.org/victory-errorbar/-/victory-errorbar-36.8.5.tgz", + "integrity": "sha512-UmpEr75dsxoQALyGIMv+Af27Tug03wir9lSIaxmb368qT21S13LkhMYJeRhYw1WGL9TxxZFOTJSwy9ISPCZUmw==", "dependencies": { "lodash": "^4.17.19", "prop-types": "^15.8.1", - "victory-core": "^36.8.1" + "victory-core": "^36.8.5" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-group": { - "version": "36.8.1", - "resolved": "https://registry.npmjs.org/victory-group/-/victory-group-36.8.1.tgz", - "integrity": "sha512-KGZwyrWX+lttyGM1es2wDrxxlutGLOBkGebr6auTCh4vv/XvAM/Xm9xhK9NJnZRBpIFSJyPRbsybN93lxL4kgQ==", + "version": "36.8.5", + "resolved": "https://registry.npmjs.org/victory-group/-/victory-group-36.8.5.tgz", + "integrity": "sha512-Gz2YXXQpaUUwm2OR86MB6iF6dRB4jXKJKDt11boTV7MSbyhhlsvyjkiPHw9Wi635GBu1t3DE8Wu2URd4tZqLEw==", "dependencies": { "lodash": "^4.17.19", "prop-types": "^15.8.1", "react-fast-compare": "^3.2.0", - "victory-core": "^36.8.1", - "victory-shared-events": "^36.8.1" + "victory-core": "^36.8.5", + "victory-shared-events": "^36.8.5" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-histogram": { - "version": "36.8.1", - "resolved": "https://registry.npmjs.org/victory-histogram/-/victory-histogram-36.8.1.tgz", - "integrity": "sha512-IGGAcc48BIwbLj9qNdGn9mj47ErfoQMATWGMMnBecHsebCwxhkGg8VDOeBelbH7K+Isg/k8lBaeoT/8vVewtKQ==", + "version": "36.8.5", + "resolved": "https://registry.npmjs.org/victory-histogram/-/victory-histogram-36.8.5.tgz", + "integrity": "sha512-P9sXi7pDgUqnYOfzc4JeIDjW8OJ2InZsNzJAKx1nw9vFDKKI6DT1GunPmKniA9QFupch6nQP+KXGYJhAhq8oJw==", "dependencies": { "lodash": "^4.17.19", "prop-types": "^15.8.1", "react-fast-compare": "^3.2.0", - "victory-bar": "^36.8.1", - "victory-core": "^36.8.1", - "victory-vendor": "^36.8.1" + "victory-bar": "^36.8.5", + "victory-core": "^36.8.5", + "victory-vendor": "^36.8.5" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-legend": { - "version": "36.8.1", - "resolved": "https://registry.npmjs.org/victory-legend/-/victory-legend-36.8.1.tgz", - "integrity": "sha512-21g8+mxdKP2Q8aZIQ5ZKoEmvFklYFchkhKeOlZUn0JQn16cj3govzQazp7vJZBcLLIqthUfu1YB7itS3JJscMw==", + "version": "36.8.5", + "resolved": "https://registry.npmjs.org/victory-legend/-/victory-legend-36.8.5.tgz", + "integrity": "sha512-pK0wPQ83axMYHEDY+oj75a82SwdBmTwrPSNfDxwMB7BVcurhvmOeIg8DjW/AX0+KdTCyceyiaekZZ1zY/Q+gPw==", "dependencies": { "lodash": "^4.17.19", "prop-types": "^15.8.1", - "victory-core": "^36.8.1" + "victory-core": "^36.8.5" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-line": { - "version": "36.8.1", - "resolved": "https://registry.npmjs.org/victory-line/-/victory-line-36.8.1.tgz", - "integrity": "sha512-xmjgKt6/h3+nLotuIar/DAL4/oSDkuXY3pCcwxy0VAGQqk3z2NoOisMpg6ihO82Dh6lOVJrRc9KsmDFQdF0P6A==", + "version": "36.8.5", + "resolved": "https://registry.npmjs.org/victory-line/-/victory-line-36.8.5.tgz", + "integrity": "sha512-DuaX4sW1KgnYj5404BVJl3XoWWu72CPmiZTT1LLkyYgSIxqAjtijPJkt2ZvKRalKdpDIA3KfpLUZrpLwqWk6yQ==", "dependencies": { "lodash": "^4.17.19", "prop-types": "^15.8.1", - "victory-core": "^36.8.1", - "victory-vendor": "^36.8.1" + "victory-core": "^36.8.5", + "victory-vendor": "^36.8.5" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-pie": { - "version": "36.8.1", - "resolved": "https://registry.npmjs.org/victory-pie/-/victory-pie-36.8.1.tgz", - "integrity": "sha512-ZA5oAfXBl/nDORnII6VT83mlZj15PJyTWDk/PhZgI9IYRPu9wEkdXLAeaeZli+KMAhaWCKOhcDmublS9DAd82w==", + "version": "36.8.5", + "resolved": "https://registry.npmjs.org/victory-pie/-/victory-pie-36.8.5.tgz", + "integrity": "sha512-/i6Cgtp1wPPtQmgTCHl4vEjE9Gn/PwgsdMkID9N/5MTWCXnD2Q97LSN8lCwQltBPUfBVuLTc/BDarlxERXCVBw==", "dependencies": { "lodash": "^4.17.19", "prop-types": "^15.8.1", - "victory-core": "^36.8.1", - "victory-vendor": "^36.8.1" + "victory-core": "^36.8.5", + "victory-vendor": "^36.8.5" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-polar-axis": { - "version": "36.8.1", - "resolved": "https://registry.npmjs.org/victory-polar-axis/-/victory-polar-axis-36.8.1.tgz", - "integrity": "sha512-aSGIQD0f4wZH6WUGikXYhP/Hres8TPIQHs6S6CFFSnY1vO4UIJ+VHfXZJA0fmwLxZ2+jjW68qz6PaDR8LyNd8Q==", + "version": "36.8.5", + "resolved": "https://registry.npmjs.org/victory-polar-axis/-/victory-polar-axis-36.8.5.tgz", + "integrity": "sha512-AqNhK7Fm7PhD9t6eupt2KebLtZTAu56KJ81uqc9Ly1ecz6nk8EbDN337PaSCmMmhPXUj1S44OxVkIKWMO3QAOQ==", "dependencies": { "lodash": "^4.17.19", "prop-types": "^15.8.1", - "victory-core": "^36.8.1" + "victory-core": "^36.8.5" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-scatter": { - "version": "36.8.1", - "resolved": "https://registry.npmjs.org/victory-scatter/-/victory-scatter-36.8.1.tgz", - "integrity": "sha512-aqvi2UGT/CbYFQFNVJb1I8/vsLLMFidtIHKxwKJeGj4WXYum2XyCVWNyK0a5MENx5hrAPtQ04TaoYAKj7pmR2A==", + "version": "36.8.5", + "resolved": "https://registry.npmjs.org/victory-scatter/-/victory-scatter-36.8.5.tgz", + "integrity": "sha512-E9ERBBtjM1fRZ/YkVH896DRlQR227VwQxFI7cH3QOiP7+QefRYPabCFOJnT192UuvtzSm+qVMcnQvsDOFjyJvg==", "dependencies": { "lodash": "^4.17.19", "prop-types": "^15.8.1", - "victory-core": "^36.8.1" + "victory-core": "^36.8.5" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-selection-container": { - "version": "36.8.1", - "resolved": "https://registry.npmjs.org/victory-selection-container/-/victory-selection-container-36.8.1.tgz", - "integrity": "sha512-m5c38MoBlj7P8aqeLboiAQzJaury1jfDQnh7GXXbGk1XPk4kgWSgSV+5szlcQTEC2AArxC8moC0zrt8QHJLG4Q==", + "version": "36.8.5", + "resolved": "https://registry.npmjs.org/victory-selection-container/-/victory-selection-container-36.8.5.tgz", + "integrity": "sha512-oLeY73prtqglVV+1lBlEvvS+O/agf6D5vFPGCFaPlkcVNRcj+2vvDMUyTdhfVhDfKNN7CWsiq9wTq2BA/dUjRQ==", "dependencies": { "lodash": "^4.17.19", "prop-types": "^15.8.1", - "victory-core": "^36.8.1" + "victory-core": "^36.8.5" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-shared-events": { - "version": "36.8.1", - "resolved": "https://registry.npmjs.org/victory-shared-events/-/victory-shared-events-36.8.1.tgz", - "integrity": "sha512-GPyhQM7G07IZM10dPAw9MY5Z2fYJsdz06N4dDABcXOUq/i2kBR6eE5LgwQU+Mx5OIN+4NGx66Ky3kLR6IrJoYg==", + "version": "36.8.5", + "resolved": "https://registry.npmjs.org/victory-shared-events/-/victory-shared-events-36.8.5.tgz", + "integrity": "sha512-MckEvOxtqZG7CoTXeJ9eQMfTyYFmR1XAtb5E4bSZC7UPlon/YL8T62VIzX/cZzrql/6QdRPOIufGoPJt5+aawQ==", "dependencies": { "json-stringify-safe": "^5.0.1", "lodash": "^4.17.19", "prop-types": "^15.8.1", "react-fast-compare": "^3.2.0", - "victory-core": "^36.8.1" + "victory-core": "^36.8.5" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-stack": { - "version": "36.8.1", - "resolved": "https://registry.npmjs.org/victory-stack/-/victory-stack-36.8.1.tgz", - "integrity": "sha512-XvKlbjA1hYGm9JuYYPOonpWpP6xwt1eMXHZJw7TuSUuhxG5abbkm9YZSIAgPXh6pTWO/x/1U0dg8+vGdGIlB+A==", + "version": "36.8.5", + "resolved": "https://registry.npmjs.org/victory-stack/-/victory-stack-36.8.5.tgz", + "integrity": "sha512-faCoOqIuCfPUuskBO0ureU96wuPcGdapvZavE5dWyU7G+wQyBCihxvVnXeHIFZLWfwM5VzAjq9hPUNb1QBZHQg==", "dependencies": { "lodash": "^4.17.19", "prop-types": "^15.8.1", "react-fast-compare": "^3.2.0", - "victory-core": "^36.8.1", - "victory-shared-events": "^36.8.1" + "victory-core": "^36.8.5", + "victory-shared-events": "^36.8.5" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-tooltip": { - "version": "36.8.1", - "resolved": "https://registry.npmjs.org/victory-tooltip/-/victory-tooltip-36.8.1.tgz", - "integrity": "sha512-/aYFH+N2VYiZmRYf8+Or3/DenIStQloqttLYmH4HFh9osohTAgHHgvO660wrzmTZrO2DJHmp6nrUm+vDZUbQtw==", + "version": "36.8.5", + "resolved": "https://registry.npmjs.org/victory-tooltip/-/victory-tooltip-36.8.5.tgz", + "integrity": "sha512-hx98SadgGw7W45KQU1dgFWFDyxkS0XJy19f8xTgbAqx73eON18dCMH3O7LzD38N9uqMVUgmkLhdzKy01CaWH5w==", "dependencies": { "lodash": "^4.17.19", "prop-types": "^15.8.1", - "victory-core": "^36.8.1" + "victory-core": "^36.8.5" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-vendor": { - "version": "36.8.1", - "resolved": "https://registry.npmjs.org/victory-vendor/-/victory-vendor-36.8.1.tgz", - "integrity": "sha512-T8cXN8D6J9wEtDEHLiXcgrOE5gyKR39s9fCFTGmcOfqDrT8m2XQLt+2p/n007uxEMRvCDH7GYYqy4vV7GIcGhw==", + "version": "36.8.5", + "resolved": "https://registry.npmjs.org/victory-vendor/-/victory-vendor-36.8.5.tgz", + "integrity": "sha512-gqLYO8pqI0bEEB/MygK/A9ZyMflvhMTYr3mymH0I9dv2OFUGNgY0ZqGZ7KJ/Trmyg/3D7DG3Hx0SYvD2emQ4EQ==", "dependencies": { "@types/d3-array": "^3.0.3", "@types/d3-ease": "^3.0.0", @@ -27428,43 +27432,43 @@ } }, "node_modules/victory-voronoi": { - "version": "36.8.1", - "resolved": "https://registry.npmjs.org/victory-voronoi/-/victory-voronoi-36.8.1.tgz", - "integrity": "sha512-Wq06RMZvuBDETp1SRoVZbrxjlFUkLKJl85mZSQP66R2V3xxHpn9cpfYJx1UZKibJq+slnFl4+wqdHH/oAJBSJQ==", + "version": "36.8.5", + "resolved": "https://registry.npmjs.org/victory-voronoi/-/victory-voronoi-36.8.5.tgz", + "integrity": "sha512-OqyCd37iJIWU6/Gq3rxi/4SVg+U+aQaxxxXWxe7USd40V5SI61RfF0fo719pEu9SKDnHJGxMhM0toc8KTSpi6Q==", "dependencies": { "d3-voronoi": "^1.1.4", "lodash": "^4.17.19", "prop-types": "^15.8.1", - "victory-core": "^36.8.1" + "victory-core": "^36.8.5" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-voronoi-container": { - "version": "36.8.1", - "resolved": "https://registry.npmjs.org/victory-voronoi-container/-/victory-voronoi-container-36.8.1.tgz", - "integrity": "sha512-Azu79q/b98GNKzVRktZrdAS812tVPX0dFKzMUwo2Qpqdl2mEPTS7jg5paw11OfmMYm01H2qsrAB/kiJN7g2LBQ==", + "version": "36.8.5", + "resolved": "https://registry.npmjs.org/victory-voronoi-container/-/victory-voronoi-container-36.8.5.tgz", + "integrity": "sha512-jmoTvkDbhs/hMosZaGjZyZrEq/Vk2Ei/G9EprjQTcITxF7wISQSRNKk/WwcO44WOYjPPYvSFNFAj/B5P0gZRCA==", "dependencies": { "delaunay-find": "0.0.6", "lodash": "^4.17.19", "prop-types": "^15.8.1", "react-fast-compare": "^3.2.0", - "victory-core": "^36.8.1", - "victory-tooltip": "^36.8.1" + "victory-core": "^36.8.5", + "victory-tooltip": "^36.8.5" }, "peerDependencies": { "react": ">=16.6.0" } }, "node_modules/victory-zoom-container": { - "version": "36.8.1", - "resolved": "https://registry.npmjs.org/victory-zoom-container/-/victory-zoom-container-36.8.1.tgz", - "integrity": "sha512-5N2wFKVCk3d6p6FOr4CeWJmwtOCzDy90UF4Blw2M7ViZAkiiL0Ej4Fbmhjv93RgJTs0/QOhWO23y8fiZmkQSNw==", + "version": "36.8.5", + "resolved": "https://registry.npmjs.org/victory-zoom-container/-/victory-zoom-container-36.8.5.tgz", + "integrity": "sha512-SHU1CpnKj+DMmCPJYLORuEKolYG9rE8eUthHV6D63W05ICykYpAtf/YV9p/P9zrBCId9C4hQbZaNXjPS5K1sFA==", "dependencies": { "lodash": "^4.17.19", "prop-types": "^15.8.1", - "victory-core": "^36.8.1" + "victory-core": "^36.8.5" }, "peerDependencies": { "react": ">=16.6.0" diff --git a/package.json b/package.json index 76bdda047..f9d9a2e84 100644 --- a/package.json +++ b/package.json @@ -24,28 +24,28 @@ }, "devDependencies": { "@babel/plugin-proposal-private-property-in-object": "^7.21.11", - "prettier": "^3.1.1" + "prettier": "^3.2.4" }, "dependencies": { "@emotion/styled": "^11.11.0", "@mdi/js": "^6.9.96", "@mdi/react": "^1.6.1", - "@mui/lab": "^5.0.0-alpha.160", - "@mui/material": "^5.15.4", - "@reduxjs/toolkit": "^2.0.1", - "@testing-library/jest-dom": "^6.2.0", - "@testing-library/react": "^14.1.2", + "@mui/lab": "^5.0.0-alpha.163", + "@mui/material": "^5.15.7", + "@reduxjs/toolkit": "^2.1.0", + "@testing-library/jest-dom": "^6.4.0", + "@testing-library/react": "^14.2.0", "@tippyjs/react": "^4.2.6", "classnames": "^2.5.1", "critical": "^6.0.5", "cross-fetch": "^4.0.0", "dayjs": "^1.11.10", "fast-deep-equal": "^3.1.3", - "framer-motion": "^10.18.0", + "framer-motion": "^11.0.3", "fuse.js": "^7.0.0", - "i18next": "^23.7.16", + "i18next": "^23.8.2", "i18next-browser-languagedetector": "^7.2.0", - "i18next-http-backend": "^2.4.2", + "i18next-http-backend": "^2.4.3", "intersection-observer": "^0.12.2", "leaflet": "^1.9.4", "leaflet-fullscreen": "^1.0.2", @@ -59,12 +59,12 @@ "react-error-boundary": "^4.0.12", "react-helmet": "^6.1.0", "react-hotkeys-hook": "^4.4.4", - "react-i18next": "^14.0.0", - "react-intersection-observer": "^9.5.3", + "react-i18next": "^14.0.1", + "react-intersection-observer": "^9.5.4", "react-loader-spinner": "^6.1.6", "react-query": "^3.39.3", - "react-redux": "^9.0.4", - "react-router-dom": "^6.21.2", + "react-redux": "^9.1.0", + "react-router-dom": "^6.21.3", "react-router-hash-link": "^2.4.3", "react-scripts": "^5.0.1", "react-select": "^5.8.0", @@ -72,11 +72,11 @@ "react-switch": "^7.0.0", "react-syntax-highlighter": "^15.5.0", "react-table": "^7.8.0", - "react-zoom-pan-pinch": "^3.3.0", + "react-zoom-pan-pinch": "^3.4.0", "resize-observer-polyfill": "^1.5.1", "sharp": "^0.33.2", "source-map-explorer": "^2.5.3", - "victory": "^36.8.1" + "victory": "^36.8.5" }, "jest": { "transformIgnorePatterns": [] From 7eeb1d3831facf748d2fb22d43951070353e7713 Mon Sep 17 00:00:00 2001 From: dutlist Date: Thu, 1 Feb 2024 04:43:52 +0100 Subject: [PATCH 6/9] Apply suggestions from code review Co-authored-by: Anton Shebukov --- src/translations/ru/translation.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/translations/ru/translation.json b/src/translations/ru/translation.json index d9b301e70..19fc96b26 100644 --- a/src/translations/ru/translation.json +++ b/src/translations/ru/translation.json @@ -254,7 +254,7 @@ "api-users-page-description": "Эта страница содержит список всех пользователей общедоступного API Tarkov.dev и их проектов.", "api-users-p": "<0>Хотите, чтобы вас включили на эту страницу? Присоединяйтесь к <1>Discord и расскажите нам о том, что вы сделали!", "Barter Profits": "Прибыль бартера", - "barters-page-description": "Эта страница содержит информацию о различных предметах, которыми можно торговать орговцами, ценах бартера и прибыли, которую можно получить от продажи предметов.", + "barters-page-description": "Эта страница содержит информацию о различных предметах, которыми можно торговать с торговцами, ценах бартера и прибыли, которую можно получить от продажи предметов.", "Shows all barters regardless of your settings": "Показывает все бартеры независимо от ваших настроек", "Hide dogtags": "Сктрыть жетоны", "The true \"cost\" of barters using Dogtags is difficult to estimate, so you may want to exclude dogtag barters": "Истинную \"стоимость\" бартеров с использованием жетонов трудно оценить, поэтому вы можете захотеть исключить бартеры с жетонами", @@ -329,7 +329,7 @@ "Best": "Топ", "Flea Market banned items": "Запрещенные предметы на Барахолке", "Empty fuel": "Пустое топливо", - "Sets fuel canister cost for crafts requiring them to vendors' minimum sell price when using non-FIR fuel canisters.": "Устанавливает стоимость бензиновых канистр для рецептов, требующих их, на минимальную цену продажи торговцев при использовании бензиновых канистр, которые не найдены в рейде", + "Sets fuel canister cost for crafts requiring them to vendors' minimum sell price when using non-FIR fuel canisters.": "Устанавливает стоимость бензиновых канистр для рецептов, требующих их, на минимальную цену продажи торговцам при использовании бензиновых канистр, которые не найдены в рейде", "crafts-page-p": "<0>В игре Escape from Tarkov ремесла позволяют создавать различные вещи. Для этого используются различные модули убежища, включая водосборник, верстак, медблок, санузел и пищеблок.<1>Статус \"Найден в рейде\" будет применен к каждому предмету, созданному в убежище. Полный список этих ремесел приведен выше. Навык Ручное производство влияет на время создания предмета.<2> Если иконка предмета имеет синюю рамку, он будет использоваться как вспомогательный инструмент, а по окончании изготовления будет возвращен в схрон.", "Hideout": "Убежище", "hideout-page-description": "Эта страница содержит информацию о различных модулях, которые можно построить с материалами и ресурсами, необходимыми для улучшения вашего убежища.", @@ -574,7 +574,7 @@ "Tasks given by {{traderName}}": "Задания, которые дает {{traderName}}", "traders-page-description": "Узнайте все, что вам нужно знать о торговцах в игре Escape from Tarkov. Узнайте о различных торговцах, доступных в игре, их местоположении и предметах, которые они продают.", "About Traders": "О торговцах", - "traders-page-p": "<0>Они стали основой торговли в разрушенном, осажденном Норвинске. В Escape from Tarkov каждый торговец специализируется на определенном виде товаров, таких как медицинские принадлежности, оружие или военное снаряжение. Хотя их цены обычно высоки, вы получаете то, за что платите.<1>Более того, вы можете заработать репутацию с каждым торговцем через Задания, что позволит вам получать лучшие предложения в целом и снизить комиссию, которые они получают (дополнительная наценка, которую вы платите при продаже и покупке), среди прочих преимуществ.<2>Кроме того, торговцы предоставляют другие услуги, такие как ремнот и страховка (позволяющая вам вернуть свое снаряжение в случае смерти во время рейда).", + "traders-page-p": "<0>Они стали основой торговли в разрушенном, осажденном Норвинске. В Escape from Tarkov каждый торговец специализируется на определенном виде товаров, таких как медицинские принадлежности, оружие или военное снаряжение. Хотя их цены обычно высоки, вы получаете то, за что платите.<1>Более того, вы можете заработать репутацию с каждым торговцем через задания, что позволит вам получать лучшие предложения в целом и снизить комиссию, которые они получают (дополнительная наценка, которую вы платите при продаже и покупке), среди прочих преимуществ.<2>Кроме того, торговцы предоставляют другие услуги, такие как ремнот и страховка (позволяющая вам вернуть свое снаряжение в случае смерти во время рейда).", "Patch": "Патч", "Wipe start": "Начало вайпа", "Wipe end": "Конец вайпа", From fde6370cb6de8f036c6cbe096d8b63b4206499a8 Mon Sep 17 00:00:00 2001 From: Razzmatazz Date: Fri, 2 Feb 2024 09:35:13 -0600 Subject: [PATCH 7/9] show craft unlocks on task pages --- src/components/item-image/index.js | 11 +++++++++ src/features/quests/do-fetch-quests.mjs | 13 +++++++++++ src/pages/quest/index.js | 30 ++++++++++++++++++++++++- 3 files changed, 53 insertions(+), 1 deletion(-) diff --git a/src/components/item-image/index.js b/src/components/item-image/index.js index 619ff07c0..efff65544 100644 --- a/src/components/item-image/index.js +++ b/src/components/item-image/index.js @@ -35,6 +35,7 @@ function ItemImage({ linkToItem = false, fullNameTooltip = false, trader, + station, className, style, }) { @@ -356,6 +357,16 @@ function ItemImage({ } + {station &&
+ + + {station.name} + + +
} {children} {isViewerOpen && ( { return quests.find((quest) => { if (quest.id === taskIdentifier) { @@ -971,7 +974,32 @@ function Quest() { })} - )]; + ), + rewards.craftUnlock?.length > 0 && ( +
+

{t('Craft Unlock')}

+
    + {rewards.craftUnlock.map((unlock, index) => { + const station = stations.find((s) => s.id === unlock.station.id); + const item = items.find((i) => i.id === unlock.rewardItems[0].item.id); + if (!item) + return null; + return ( +
  • + +
  • + ); + })} +
+
+ ),]; }; return [ From 10a4d6fff4c36e66e93f020a259cadcc6f974b67 Mon Sep 17 00:00:00 2001 From: Anton Shebukov Date: Fri, 2 Feb 2024 16:48:40 +0100 Subject: [PATCH 8/9] Update src/translations/ru/translation.json --- src/translations/ru/translation.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/translations/ru/translation.json b/src/translations/ru/translation.json index 19fc96b26..a11e43956 100644 --- a/src/translations/ru/translation.json +++ b/src/translations/ru/translation.json @@ -262,7 +262,7 @@ "All": "Все", "Item filter": "Фильтр предметов", "filter on item": "фильтр по предмету", - "barters-page-p": "<0>За исключением Скупщика, каждый торговец в Escape from Tarkov предлагает товары по бартеру.<1>В обмен на различные недорогие вещи игрок может обменять их на более ценные предметы( которые можно использовать или продать с выгодой), или на экипировку более высокого уровня при более низком Уровне Лояльности. <3>Не забывайте проверять после сброса свои любимые сделки, так как большинство из этих ценных сделок имеют строгие ограничения на пополнение торговцев и часто распродаются.", + "barters-page-p": "<0>За исключением Скупщика, каждый торговец в Escape from Tarkov предлагает товары по бартеру.<1>В обмен на различные недорогие вещи игрок может обменять их на более ценные предметы (которые можно использовать или продать с выгодой), или на экипировку более высокого уровня при более низком Уровне Лояльности.<3>Не забывайте проверять после сброса свои любимые сделки, так как большинство из этих ценных сделок имеют строгие ограничения на пополнение торговцев и часто распродаются.", "Num graphic cards": "Количество видеокарт", "Hours": "Часов", "Bitcoin Farm Calculator": "Калькулятор биткоин фермы", From 081b01259bb97e8f733e9bab1f760f399a3734a4 Mon Sep 17 00:00:00 2001 From: Razzmatazz Date: Fri, 2 Feb 2024 10:04:38 -0600 Subject: [PATCH 9/9] craft filters to search params --- src/components/item-image/index.js | 2 +- src/pages/crafts/index.js | 20 +++++++++++++------- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/src/components/item-image/index.js b/src/components/item-image/index.js index efff65544..796c9eaea 100644 --- a/src/components/item-image/index.js +++ b/src/components/item-image/index.js @@ -362,7 +362,7 @@ function ItemImage({ placement="top" content={station.name} > - + {station.name} diff --git a/src/pages/crafts/index.js b/src/pages/crafts/index.js index c7ed34837..84b3c7b8f 100644 --- a/src/pages/crafts/index.js +++ b/src/pages/crafts/index.js @@ -47,7 +47,15 @@ function Crafts() { useEffect(() => { setNameFilter(searchParams.get('search') || ''); - }, [searchParams]); + const station = searchParams.get('station'); + if (station) { + setSelectedStation(station); + } + const all = searchParams.get('all'); + if (all) { + setShowAll(all === 'true'); + } + }, [searchParams, setSelectedStation, setShowAll]); const { data: crafts } = useCraftsData(); @@ -82,7 +90,7 @@ function Crafts() { setShowAll(!showAll)} + onChange={(e) => setSearchParams({'all': `${!showAll}`})} tooltipContent={ <> {t('Shows all crafts regardless of your settings')} @@ -117,9 +125,7 @@ function Crafts() { src={`${process.env.PUBLIC_URL}/images/stations/${station.normalizedName}-icon.png`} /> } - onClick={setSelectedStation.bind( - undefined, - station.normalizedName)} + onClick={() => {setSearchParams({'station': station.normalizedName})}} /> ); })} @@ -131,7 +137,7 @@ function Crafts() { } selected={selectedStation === 'top'} content={t('Best')} - onClick={setSelectedStation.bind(undefined, 'top')} + onClick={() => {setSearchParams({'station': 'top'})}} /> } - onClick={setSelectedStation.bind(undefined, 'banned')} + onClick={() => {setSearchParams({'station': 'banned'})}} />