IRCaBot 2.1.0
GPLv3 © acetone, 2021-2022
#dev
/2024/01/21
~AreEnn
~R4SAS
~acetone
~orignal
~villain
&N00B
+Xeha
+relaybot
DUHOVKIN
Guest7184
Leopold
Most2
Nausicaa
Ruskoye_911
Vort
`
anon2
karamba_i2p
nemiga
not_bob_afk
plap
poriori
profetikla
soos
teeth
un
weko_
whothefuckami
weko упс
weko проверяю фиус
weko фикс
orignal смотри на ошибки
weko ну есть лаги но это пока хз что. а вот ntcp2 не рвётся
weko конкретно зависания нету
weko могу проверить одновременно подключение
weko для этого порежу очередь
weko лаги это Streaming: Duplicate message 2758226 on sSID=1753586868
orignal надо тот сценарий когда AEAD вылазил
weko да именно так и делаю
weko я ничего не менял
weko больше не вылазит
weko обычно быстро вылазило
weko второй раз проверил
weko нету
weko думаю можно считать что исправлен
weko кажется одновременное подключение не очень работает
weko хотя может дело не в этом
weko когда очереди не хватает, сессия рвётся, после создаётся снова, снова рвётся из-за того что мы переотравляем кучу сообщений
weko а далее как будто и попыток нет
orignal с очередями тут надо иначе
weko Streaming: Another remote lease has been selected for stream with rSID=4097761485, sSID=2376862680
weko Streaming: Another outbound tunnel has been selected for stream with sSID=2376862680
weko Streaming: Another remote lease has been selected for stream with rSID=4097761485, sSID=2376862680
weko как бы пишет это но кажется попытки переотправки нету
weko <orignal> с очередями тут надо иначе
weko знаю что надо дропать, я пока для теста не меняю
orignal я предлагаю к I2NP сообщению приделывать коллбэк на случай дропа
orignal если дропнули коллбэк вызываем
weko и что будет выполняться?
orignal например на запрос на построение тоннеля
weko а что выполнять то в коллбэке?
orignal сработал коллбэк значит не ждать ответа на построение тоннеля а помечать как отлуп
orignal так в том и идея коллбэка что туда может быть поставлено все что угодно
weko но это только если дропнулось у нас
weko а если где то ещё мы не узнаем
orignal ну да
weko для этого надо сложее систему
orignal чем сложнее то?
weko протокол менять возможно
orignal нее я только про нас
weko orignal: тем что это надо вписать в концепцию туннелей
weko да понятно о чём ты
orignal также запросы роутеров например
weko orignal: можно например в таком случае транзитный туннель не создавать
orignal можно да выкидывать у себя
weko угу
orignal если дальше сообщение не отправилось
weko ну да в любом случае надо
weko можно даже не коллбэк я просто очередь проверять
weko текущий размер
orignal давно такая мысль зреет
orignal коллбэк универсален
orignal если надо дропнуть вызываем его
orignal природа коллбэка не кажна
weko например если TBM, смотрим куда просят отправить, если очередь забита >50% то пытаемся отправить отлуп
orignal кому отправить отлуп?
weko владельцу
orignal как?
weko ну так мы же как транзит можем отлуп прислать
orignal мы ставим код
weko ну вот код
orignal а отсылаем тем путем где забита очередь
weko orignal: она забита на 50%
orignal ну то есть ты знаешь что очередь забита но ты никуда не можешь отправить потому что она забита
orignal а ну да понял мысль наверное можно
weko ну потому что уже перегружен транспорт
weko а тут ещё туннель идёт
weko коллбэки тоже можно но сделать именно 50% яерез них не выйдет
weko это отдельное будет
weko если именно дропнулось
weko <weko> коллбэки тоже можно но сделать именно 50% яерез них не выйдет
weko на самом деле можно, но не уверен что можно
weko думаю лучше проверять очередь. так проще код будет
weko короче очередь транспорта должна быть с запасом под максимальное окно
weko до тех пор пока не будет сделано отправка более маленькими пачками
weko и можно будет подстроить очередь под эти пачки
orignal короче надо начинать с коллбэков
orignal счас я спрошу у деда про коды
weko начать надо сделая чтобы не рушилась сессия ))
weko окей
weko думаю там есть что-то типо "перегружен"
weko а говорить всем подряд что перегружен именно транспорт нахуй надо
orignal вот я его и хочу спросить
weko <dr|z3d> just restating so we've got the full informal proposal(s) in one place, weko.
weko бесит
orignal так дрозд
weko опять я что-то сломал
orignal ну бывает ))
weko главное что я не знаю что я сломал
weko я откатил до того момента, когда работало
weko и не работает
weko приехали
weko теперь вообще ntcp2 сессию не создаёт
orignal лол
orignal так возьми код с гитхаба и все
weko и главное ничего не менял
weko да может профили
weko хз
weko прочищу
weko с тем же кодом работало а теперь нет
weko не дело
weko да явно профили
weko уж не знаю что там багуется
weko 0+0 в этом плане конечно проблемный
weko надо делать 0-1 +- 0-1
weko хотя хватит даже 0+_1 + 0
weko 0-1
weko я кстати понял с чем связан баг с UDP
weko всё просто
orignal и что там?
weko i2pd отправляет с одного адреса и одного порта
weko а сервер видит соответсвенно один адрес и один порт
weko даже если в i2p пришло с разных
orignal не понял
orignal первый с порта 1234 второй 1235
orignal они же будут разные
weko i2pd использует разные порты?
weko важно реально ли использует
weko потому что если source port всегда один - то понятно почему такое возникает
weko сервер конечный тупо не разбирает кто есть кто
orignal socket.bind (localEndpoint);
orignal так надо разные
weko localEndpoint ну понятно
orignal source тот к которому привязка
orignal всегжа
orignal он явно привязавается
weko а нельзя на каждую датаграмму?
weko потому что для наших целей надо
orignal что на каждую датаграмму,
weko на каждую датаграмму указывать source
weko soutce port
weko source port
orignal так он и указывается у сокета
weko так у сокета с которого мы отправляем
orignal угу
weko он же один раз создаётся и всё
orignal ну так у него всегда один и тот же
orignal который ставится в заголовок когда отправляешь
weko вот потому и баг
weko надо проверить и дальше думать как исправлять
orignal ты ерунду говоришь
orignal ssize_t sendto(int sockfd, const void *buf, size_t len, int flags,
orignal const struct sockaddr *dest_addr, socklen_t addrlen);
orignal вот смотри системный вызов для отправки датаграммы
orignal где ты тут видишь source?
weko ну его нету тут что плохо
orignal его и не бывает
weko ну значит разные сокеты надо делать
orignal потому что он всегда задается у сокета через который отправляется
orignal ну счас
weko под каждого i2p клиента
orignal нет не надо
orignal там все правильно сдедлано
weko это не верно
orignal ну конечно тебе виднее ))
weko объясняю
orignal люди десятилетями гоняют данные по мультикасту например
weko orignal: факт в том что >1 udp клиента не работает
weko нормально
orignal все работает
weko проверено на нескольких играх
orignal ты о чем вообще?
weko объясню
orignal ты про SSU2 счас или про тоннель?
weko про UDP туннель
weko именно сервер
orignal а ну там совсем другая проблема
orignal там думать надо
orignal и да на каждого клиента надо делать свой порт
orignal там все непросто
orignal я думаю ты про SSU2
weko через локахост можно ещё range адресов
weko нет я не про ssu2
weko я именно про туннель
orignal эту проблему я знаю
weko так а почему не сказал сразу?
weko мы с леопольдом добились кучу часов
orignal ну смотри
weko долбились
orignal там идея же какая
orignal вот есть клинент
orignal он сам выбирает какой то порт если без явной привязки
orignal этот порт идет вместе с датаграммной сессией
orignal и серверная сторона должна открыть сокет именно на нем
orignal это как по замыслу
weko должна
weko на самом деле слать какой именно не обязательно
orignal но если у вас в ваших играх UDP привязан к конкретному порту ясен пень что нихуя не будет работать
weko обычно source port никто не проверяет
weko orignal: ну дак
orignal то есть вам надо как то сделать чтобы игровые клиенты сидели на разных портах
weko обычно адрес и source port уникальные для каждого клиента
weko а тут выходит что нет
weko да
weko именно так
orignal а тут только source port
orignal из-за этого и проблемы все
weko тут и source port одинаковый как раз
orignal я вроде это давным давно объяснял
weko ладно адрес один
orignal ну да
orignal это же давно выяснили
orignal а как чинить я пока не занимался
weko так чего не сказал?)
weko вот проблема точно известна
orignal сразу сказал
orignal но тут вот какой вопрос еще
weko не помню такого
weko мы с лео искали причину оч долго
orignal 127.0.0.1 и 127.0.0.2 считаются разными адресами или нет?
orignal вот тут я не уверен
weko думаю да
weko разные байты
orignal ну если так то легко решается
orignal но это не факт
weko но смотри - разные порты всё равно надо сделать. потому что не всегда конечный сервер на локалхосте
orignal и только для линукса
orignal ну тогда да жопа
weko у меня конечный сервер может быть в локалке
weko <orignal> ну тогда да жопа
weko ну не совсем
weko просто надо сокет под каждого клиента
weko orignal: вот в стриминге source port передаётся?
orignal а там зачем? там эфемеральный как во всем TCP
weko а в udp считается что нет, да?
orignal но вообще да он в пакетах передается
orignal udp устроен иначе
weko тоесть некоторые сервера могут на него ориенитироваться
orignal в TCP никто клиенский порт не смотрит
orignal потому что он почти всегда эфемеральный
weko да понимаю
weko а вот в udp смотрят иногда, верно?
weko ну кроме как различить клиентов
orignal естественно
orignal потому что в UDP нет понятия сессия
weko просто может быть такой прикол, что например игра всегда использует как source port одно значение
weko и мы опять упираемся в эту проблему
orignal в udp может
orignal в tcp я вообще никогда не видел чтобы делали привязку клинтского порта
weko ну там и не надо
orignal вообще нигде и никогда
orignal приязяку к адресу делают
orignal порта никогда
weko в udp по логике он нужен только для отличия клиентов с одного адреса
orignal ну так и в TCP тоже
weko ну просто в tcp это делает ОС, а udp сам сервер
orignal просто в udp делают привяку к порту а в TCP нет
orignal по множеству причин
weko <weko> просто может быть такой прикол, что например игра всегда использует как source port одно значение
orignal да нет в udp по умолчанию тоже эфемкальный по умолчанию
orignal в udp конечно может
orignal в tcp скорее всего нет
weko orignal: в tcp кстати тоже можно source port задать. но это нахер не надо
orignal просто в udp почему делают привязку потому что нет сессиий
weko да я понимаю
orignal можно. но я лично никогда и нигде такого не видел
weko вопрос в другом
weko что клиент может ставить всегда один source port
weko и тогда если мы используем source port что прислали, мы опять на сервере не можем различить клиентов
orignal в TCP?
weko UDP
weko речь про UDP
orignal конечно может
weko не может потому что один адрес и порт
orignal но если на localhost мы может 127.x.x.x делать
weko это да
orignal 3 байта от b32
weko но это не всегда возможно, потому порты тоже надо сделать
weko orignal: короче я думаю надо использовать порт который прислали, если он не занят, а если занят - на основе b32. или же мы забиваем на то, что нам прислали и всегда используем порт на основе b32.
orignal подумаю я сначала
weko хорошо главное что на повестке
weko есть конретный запрос чтобы в udp игры играть можно было нормально
orignal там c UDP тоннлем проблем еще до жопы
orignal псих крайне коряво его сделал
weko это основная
weko если сделать так может можно попробовать мультеплексеры трафика
weko чтобы по нескольким туннелям могло идти
weko ну костыльно придётся через несколько destinaion , но лучше так чем никак
weko можно будет делать стабильные звонки через i2p
orignal sip тоннель это еще другая тема
weko не я про mumble хотя бы
weko а то с ним большие беды с точки зрения лагов
orignal у лагов там иныче причины
weko основная что дохнут туннель и мы не знаем
weko так если несколько туннелей
orignal и как раз из-за отсуствия того самого окна которое у стримов
weko то один сдох а второй живой
weko orignal: ну там можно битрейт ограничить
orignal там еще куча проблем
weko но основная - эта
weko со стримами не меньше
weko Streaming: Duplicate message 1203739 on sSID=1280214068
weko вот например
orignal неправда
weko хотя это как раз вероятно из-за перегрузки треда
orignal основная проблема i2pd что мне некогда ))
weko orignal: ладно, udp сделаешь?)
orignal возможно как будет время
weko ну не сразу
orignal но сначала коллбэки для I2NP
weko просто растяни на пару дней если не успеть за один
orignal так у меня друших дел полно
weko orignal: смотри вот этот баг пофиксили и получили +- стабильные 20 MB/s. и то это упор в процессор
weko <orignal> так у меня друших дел полно
weko но немного времени находишь
weko даже вот сегодня
orignal ну вот сегодня нашел
weko по коммитам видно что находится
weko просто ну это важная проблема
orignal ну это счас было время просто
orignal обычно месяцами не бывает ))
weko ну значит в очередь идёт задача
weko у меня огромная тудашка есть
weko вот спрашивай что важное самое
orignal ну да
orignal постепенно
weko а то мелкие баги исправляются а серьёзные лежат годами
weko как например с Garlic
orignal потому что на мелкие нужно меньше времени
orignal с Garlic там проблему надо изучать
weko не всегда
orignal там нет простого фикса
weko да тут сложно
weko а udp всё понятно
weko и было понятно давно как ты сказал
orignal ну так а чинить времени нет
weko вместо чего-то менее важного просто сделай
weko на самом деле мультиплексер может и по tcp ебашить, просто ему самому перепосылку реализовывать не надо будет
orignal это как?
weko ну мультиплексер трафика
weko чтобы по нескольким туннелям пустить
weko для улучшения стабильности в первую очередь
orignal так если игра требует UDP
weko ну его настроить можно будет
orignal как ты тут TCP приделаешь я понимаю
weko речь не о именно об игре
weko это может быть и mumble
weko трафик с него идёт в мультеплексер
weko вот его уже можно настроить
weko чтобы гонял через i2p с помощью tcp или ud[
weko ydp
weko udp
weko ну да... если клиентская аппа использует udp, то надо udp
weko а если tcp, то tcp
weko ну и в случае tcp подстраиваться должен под самый слабый сокет
weko я даже сам могу такой написать
weko но лучше сначала готовые посмотрю
weko Будет тула чтобы тестировать коннект и будет чтобы его улучшать)... Надеюсь
weko С TCP знаю как нужно поступить
weko Нужно короче как то без принимания сессии получать пакеты
weko Маскировать их под udp и сдать через i2p
weko Слать
weko Ну соответственно отправляя двумя путями
weko А дальше там уже TCP сам разберётся
weko Но блин палево наверняка каких то системных параметров
weko Я чот мудрю
weko Короче с TCP тоже понятно. Там просто нужен баланс между скоростью и стабильностью
weko Самое верное тут - сразу делать в i2pd.
weko ⇒184239426⇒108.91 MiB
weko ⇒1531364508⇒384.70 MiB
weko i2pd NTCP2-only
weko Жесть пшло трафика
weko Хм. А можно добавить какой нибудь флаг для TBM, который виден всем, что дан отлуп или нет (но без информации кем). Чтобы не создавать транзитные туннели в памяти лишние
Vort в Deluge вроде можно исходящий TCP порт задавать. но я не на 100% уверен. imgur.com/dVpvT9P
orignal а надо спросить у деда
orignal weko читал что дед сказал?
weko Нет
orignal когда очередь то надо отсылать не все подряд а с приоритетом
orignal свои сообщения в обход очереди
weko Верно говорит
weko Ну а поводу "дропайте на уровне туннелей, а не транспорта" - так возможно можно немного оптимизировать, но по сути разницы то нет где дропать
Vort это речь о транзите?
weko В основном да
Vort ну да, тут инициатор коннекта решает, куда транзитный узел должен переслать данные. и если туда не лезет - ничего не поделать
Vort разве что свои данные можно оттуда убрать. но шанс такой ситуации - доли процента
Vort разве что стоит посмотреть, в каком случае будет больше ресурсов тратиться на восстановление связи
Vort так как туннели - внутренний уровень - то, может, действительно, "дешевле" тут дропнуть
weko Vort: пока только дропнуть можно
weko Но в идеале сказать заранее владельцу что перегрузка
weko Чтобы он перенаправил часть трафика на другой туннель
Vort кстати, ещё может быть вариант - когда два жирных туннеля идёт по транспорту. в таком случае, можно один дропнуть, а второй сам по себе перегруза не даст
Vort так что наверно действительно транспорт лучше не трогать
Vort идеал он очень далёк, пока что надо сделать то, что можно сделать сейчас
weko Vort: я как раз говорил про это
weko А дед сказал что надо принимать оба
weko Но я думаю как раз не надо
Vort так пока принимаешь - не знаешь, какие скорости будут
weko Если забит транспорт, чего его ещё больше мурыжить
Vort а как только начинают переполнять очередь - тогда понятно
weko Ну смотри мы смотрим когда TBM обрабатываем. Если забито на 50% - шлём отлуп
Vort weko: если уже переполнена - тогда другое дело
Vort не будет ли это искусственным затормаживанием сети?
weko Только TCSR
Vort забитость очереди ведь коррелирует с максимально возможной скоростью?
Vort ну для узлов с высоким пингом, понятно
weko Да
weko Когда очередь забита значит транспорт не справляется
Vort в общем, хз. может, надо не только на размер очереди смотреть, но и на то, насколько быстро она в состоянии рассосаться
weko Vort: да, тоже логично
Vort weko: я немного о другом. если у узла высокий пинг, то у него может быть постоянно забита очередь даже если он справляется
Vort просто подтверждения долго идут
weko Vort: ну тогда должно окно увеличиваться
Vort хотя вообще я плохо понимаю ситацию, может глупости говорю
weko Окно системное если NTCP2
weko И окно в коде если SSU2
weko Очередь это другое
weko orignal: проверю, есть ли дубликаты, если увеличить количество ACK
weko предполагаю, что в ACK просто не влезает
weko Ещё может очередь тоже влиять. Там 10000 я ставил, а окно 8196
weko Надо 20К очередь
orignal LeaseSets: 334
orignal новое
Vort у меня как обычно
Vort зато у меня трафик транзитный "прыгает"
Vort то полмегабайта/сек, то два
orignal ты с последним коммитом?
Vort да
Vort тоже поначалу подумал, что коммит может так влиять
Vort но маловероятно
Vort если бы там было что-то не так, то глючило бы постоянно
Vort а волны - это какие-то внешние эффекты дают скорее всего
orignal у меня транзита стабильно много как обычно
weko Да я думаю жирный туннель
weko Vort: смотри всегда есть ли туннели с кучей трафика
orignal weko а ты видел как дед мне доказывал что жирных тоннелей не бывает?)
weko orignal: да
weko Мол транспорт не перегружается никогда
orignal приколист
orignal ага потому что у той стороны много других пиров
weko Ну может в javai2p и правда нету
orignal ну ну
orignal может
weko Ну ты понимаешь
orignal они просто дропают
weko Откуда у них жирные туннели если их не тянуть
orignal ну я и говорю что дропают
orignal но он натолкнул меня на много полезных идей
weko orignal: дропают при каких условиях
orignal да там куча всего
orignal но мы начнем с приоритетов I2NP сообщений
weko Ну норм только если при привышении лимита по трафику
orignal разумеется
weko Стоит у нас 3000 а идёт 3500
orignal если очередь есть
weko Тогда окей можно дропать
orignal нет я не дропать хочу
orignal для начала втсавлять в начало очереди свои сообщения
weko Это да верно
weko главное чтобы так сдеанонить нельзя было
Vort это в случае когда свой туннель через перегруженный транспорт идёт что ли?
weko Vort: да
Vort не лучше ли на другой туннель переключиться? уж тут то выбрать можно
weko Vort: ну да так лучше
weko Просто боюсь приоритет наших сообщений может быть использовано для деанона
orignal так они же все равно будут перемешиваться
weko Ну тут подумать надо
weko Я просто предполагаю
orignal да и вставлять можно не в самое начало
weko Что особенное поведение наших сообщений можно как то заметить
weko Да даже есть идея как использовать
weko Лучше туннель сменить
orignal ну тогда дропать не наши когда очередь большая
orignal причем случайно
weko ну подумать надо
weko думаю таже беда
weko на втором пире можно посмотреть статистически
weko если дропать то и свои тоже
orignal так получается счас дед палится
orignal с приоритетами
weko вероятно
weko у них же в роутере бэкдор есть
weko как бы
weko о чём тут вообще говорит
weko говорить*
weko при чём который они не скрывают
orignal вот что надо сделать это урезать аппетиты отдельных тоннелей
orignal если много сидит на одном линке
weko Streaming: Number of NACKs exceeds 256. seqn=174327 nextSeqn=174045
weko orignal: ну да лимит сделать а то достали
orignal дропать на хуй
orignal именно с тех кто много срут
weko гоняют цп туда-сюда ))
weko Streaming: Number of NACKs exceeds 256. seqn=174327 nextSeqn=174045
weko вот такая хуйня всплывает когда очередь маленькая слишком
weko I2PTunnel: Client Tunnel Issue when creating the stream, check the previous warnings for more info
weko интересно... нет нихуя)
orignal ну разбираться надо
weko сообщения дропнулись и он отправить ACK не может
weko ну и всё виснет
orignal так разрывать надо
weko ну проблема с отправкой ACK
weko прикол то в том, что дропаются последовательные сообщения
weko можно ускорить отправку ACK, может поможет. а может и нет
weko Streaming: Missing messages on sSID=2008218537: from 174045 to 174326
weko Streaming: Number of NACKs exceeds 256. seqn=174327 nextSeqn=174045
weko соотвественно сообщения дропаются на первом пире: NTCP2: dropping I2NP messages to UBxd~t6gvZQ1JowOQq1w9qhn~~2Gy7XCE6eJjXmUQZ8=: can't be added to session queue due max queue size: 50
weko смешно
weko если заканчивать сессию, то всплывает баг с Garlic
weko если дропать, то баг с NACK
orignal а почему 50?
weko потому что для теста
weko и потому что 500 это реально много
orignal на самом деле там надо по времени
orignal не более 5 секунд например
orignal если сообщение сидит дольше то дропать
weko зачем?
orignal кстати я наверное это в коде не делаю
orignal а у любого I2NP есть протухание
weko максимальная очередь должна зависеть от скорости транспорта
orignal этого и начну
orignal правильно
orignal если сообщение стоит меньше секунд пусть хоть 100 тыс будет
weko orignal: протухшие i2np можно удалять
orignal ну да
orignal в момент выгрузки из очереди
weko а именно по времени не надо
orignal а я наверное не делаю
orignal ну хотя бы протухшие для начала
weko ну это да точно надо
weko потому что они всё равно не нужны
orignal bool IsExpired () const;
orignal даже метод есть
weko круто
orignal ну в тоннелях оно проверяется
orignal а вот в транспортах нет
weko так можно проверять только в транспортах, нет?
weko orignal: по поводу ACK
weko почему nack не имеют диапазонов?
weko или же есть почему не используются
orignal не помню уже
orignal видимо в те времена quic еще не придумали
weko ну кое что я понял
weko короче такая суть
weko я примерно понял что происходит
orignal че?
weko и в чём баг тоже знаю
weko со стримами
weko всё начинается когда дропается один пакет
orignal возможно
weko подожди пока
weko соответсвенно срабатывает ветка где пишется Streaming: Missing messages ...
weko но дело в том, что она срабатывает не один раз, а ещё каждый раз на новый пакет, пока не придёт перепосылка
weko и в этой ветке идёт код отправки ACK
orignal логично
weko ну вызывается функция
weko как минимум не должно спамить в лог
weko потому что пакеты по факту приходят, а пишет в лог что пропущено дохующе сообщений
weko короче получатель шлёт на каждый из этих пакетов NACK (что и есть баг). в итоге отправитель думает что всё, пиздец, начинает перепосылку такую, что в очередь начинает не влезать > 256 соообщений, они соответсвенно не доходят, ну и получателя вылезает Streaming: Number of NACKs
weko exceeds 256.
orignal ладно подумаю
weko посмотри там логику
weko может что-то очевидно вылезет
weko очевидное
orignal да нет там точно не очевидное
orignal насчет отправки NACK посмотрб
weko там главное что срабатывает ветка кода много раз, тогда как должна один раз
weko Streaming: Missing messages
weko вот эта ветка
weko точнее срабатывает то верно
weko SavePacket (packet); например делать надо
weko а вот SendQuickAck тут надо только первый раз
weko ну точнее только тогда как пакет реально пропущен, а не пропущен где то в прошлом
weko а сделано ли правильно остальное в коде не знаю
weko ну ладно если что известно как вызвать багу
weko orignal: пока думаю, что нужно увеличить максимальное окно до 512, а очередь до 1000
orignal попробуй
weko так уже же
weko но гляну в основной сети как ещё кое что потыкаю
orignal там и надо