Был в Сети 21 дек. 2024 г., 14:10
Кратко о себе: Web-разработчик. Пишу на PHP, Python, JavaScript. Знаю Ruby и Go, со студенческих времён более-менее помню C и asm. Специализируюсь на ускорении загрузки сайтов и разработке ботов для Telegram. Linuxоид (использую Debian+LXDE). Сторонник IndieWeb, slow lifer.
- Перово, Москва, Россия
- me@4xpro.ru
- x4_pro
- XXXXPro
Новости сайта в Telegram
t.me/4x_proЛог жизни
Лог моей жизни, где я фиксирую наиболее эмоционально значимые для меня события и текущее настроение. Является продолжением блога, который я вел в ЖЖ с ноября 2004 по апрель 2018 года.
Неожиданное пожертвование
Вчера день начался с неожиданного приятного события — я получил ещё одно небольшое пожертвование на развитие SiteKnockerBot. В очередной раз убеждаюсь, что это наиболее оценённый и востребованный из моих проектов на данный момент времени. И всерьёз задумался о том, чтобы сделать бота для вывода данных с devdocs.io. Но никак не могу понять, как там устроен поиск.
Первый день весны и прогулка в Измайловский парк
Вот и всё, последний месяц зимы позади! Хотя погода ещё совсем не весенняя! Но солнце сегодня выглянуло. Я решил было воспользоваться погодой и отправиться на прогулку. Но получилось как всегда: был невыспавшийся, долго прособирался, а когда вышел из дома, солнце уже скрылось, а небо затянулось облаками. Только кое-где оставались синие просветы.
Отправиться решил в Измайловский парк, причём зайти через Южное Измайлово, где не был уже давно. И, надо сказать, не зря! Сначала побродил по парку близ болота, из которого вытекает несколько ручьёв, впадающих в Серебрянку. Потом — вышел снова к «истоку» Серебрянки (месту, где она выходит из трубы) и неподалёку от него увидел большую хищную птицу. С интересом рассмотрел (правда, сидела высоковато), сфотографировал, а дома опознал как ястреба-перепелятника. Не знал, что они есть в Измайловском парке!
Потом прошёл вдоль Серебрянки до нижней оконечности Лебедянского пруда. Вспоминал свою прогулку тут 2004 года, сравнивал жизнь тогда и сейчас. И задавался вопросом, который всё время не даёт мне покоя: как правильно жить. То ли следовать потоку жизни, смирившись с тем, что я слишком многое не довожу до конца, начинаю и бросаю, и из-за этого не могу похвастаться «смотрите, я сделал» и получить заслуженное признание. Именно такую идею — следование потоку жизни — я проповедовал в 2000-х годах. Но тогда ещё не было безлимитного Интернета и, как следствие, постоянного скакания с одного на другое. Или же всё-таки выбирать путь и заставлять себя по нему идти, противостоя потоку жизни, который всё время пытается снести куда-то в сторону. Тогда результаты так или иначе будут, но затраты на то, чтобы заставлять себя двигаться, будут несоразмерны самим делам, не говоря уж о потере гармонии с собой.
Отправиться решил в Измайловский парк, причём зайти через Южное Измайлово, где не был уже давно. И, надо сказать, не зря! Сначала побродил по парку близ болота, из которого вытекает несколько ручьёв, впадающих в Серебрянку. Потом — вышел снова к «истоку» Серебрянки (месту, где она выходит из трубы) и неподалёку от него увидел большую хищную птицу. С интересом рассмотрел (правда, сидела высоковато), сфотографировал, а дома опознал как ястреба-перепелятника. Не знал, что они есть в Измайловском парке!
Потом прошёл вдоль Серебрянки до нижней оконечности Лебедянского пруда. Вспоминал свою прогулку тут 2004 года, сравнивал жизнь тогда и сейчас. И задавался вопросом, который всё время не даёт мне покоя: как правильно жить. То ли следовать потоку жизни, смирившись с тем, что я слишком многое не довожу до конца, начинаю и бросаю, и из-за этого не могу похвастаться «смотрите, я сделал» и получить заслуженное признание. Именно такую идею — следование потоку жизни — я проповедовал в 2000-х годах. Но тогда ещё не было безлимитного Интернета и, как следствие, постоянного скакания с одного на другое. Или же всё-таки выбирать путь и заставлять себя по нему идти, противостоя потоку жизни, который всё время пытается снести куда-то в сторону. Тогда результаты так или иначе будут, но затраты на то, чтобы заставлять себя двигаться, будут несоразмерны самим делам, не говоря уж о потере гармонии с собой.
Вырвался из болота жизни
Опять ощущение вязкого болота жизни. Висит куча самых разных мелких недоделок, но заниматься ими не хочется от слова совсем. А хочется наглухо отключить Интернет и целыми днями играть в Starcraft.
В частности, снова вылезла проблема с ложными срабатываниями SiteKnockerBot. Попробовал было вернуться к Go-версии. Но получается вот что: первый запуск бота проходит нормально, все проверки завершаются за 60-80 секунд, ложных срабатываний почти нет. Запускаю вторую проверку с теми же параметрами (количество параллельных запросов, задержки после выполнения каждого и таймауты) и либо начинают сыпаться ложные срабатывания, либо (при включённой настройке SO_REUSEADDR) происходит остановка проверки на время, существенно превышающее проверочный цикл. Видимо, истощаются какие-то внутренние ресурсы системы. Сначала думал, что не хватает портов для исходящих соединений, но в настройках системы их в разы больше, чем проверок — с 32001 до 65535 (а проверок на тестовой базе всего 1745). Поставил кеширование DNS из соображения, что DNS-запросы тоже могут съедать ресурсы, но особых изменений не вижу. И что делать — непонятно. Даже подумываю поднять виртуальную машину с FreeBSD и попробовать на ней — вдруг там сетевой стек лучше реализован и такой проблемы нет. Правда, перспектива полной переустановки системы на VDS с ботами и кучей всего остального тоже как-то не радует.
UPD: пока писал, совершенно случайно выяснилось, что проблема была совсем в другом. Я тестировал бота на домашнем компьютере, и от большого количества соединений переполнялась таблица NAT на роутере. Перенёс бота на сервер с прямым IP — всё заработало как надо даже при 200 параллельных проверках (на большее количество я пока не решился, тем более, что даже по сравнению со 120 ускорение было весьма незначительным — всего на пару секунд) + параллельном прогоне через сервер видеотраффика с YouTube. Единственный минус — время получения ответа от проверяемых серверов выросло раза в два, что может вызвать больше срабатываний о медленном ответе.
Ещё никак не могу обновить страницу про свои компьютеры на втором личном сайте. А ещё хочу закончить статью про мир школы и мир улицы, позавчера немного продвинулся, но потом снова дело встало. И ещё висит задача по freelance-деятельности. Вроде и небольшая, но никак не могу настроиться.
Но вообще, к вечеру, после того, как решилась проблема с ботами, жизнь как-то наладилась. Хоть и не успел ничего больше, кроме этого.
В частности, снова вылезла проблема с ложными срабатываниями SiteKnockerBot. Попробовал было вернуться к Go-версии. Но получается вот что: первый запуск бота проходит нормально, все проверки завершаются за 60-80 секунд, ложных срабатываний почти нет. Запускаю вторую проверку с теми же параметрами (количество параллельных запросов, задержки после выполнения каждого и таймауты) и либо начинают сыпаться ложные срабатывания, либо (при включённой настройке SO_REUSEADDR) происходит остановка проверки на время, существенно превышающее проверочный цикл. Видимо, истощаются какие-то внутренние ресурсы системы. Сначала думал, что не хватает портов для исходящих соединений, но в настройках системы их в разы больше, чем проверок — с 32001 до 65535 (а проверок на тестовой базе всего 1745). Поставил кеширование DNS из соображения, что DNS-запросы тоже могут съедать ресурсы, но особых изменений не вижу. И что делать — непонятно. Даже подумываю поднять виртуальную машину с FreeBSD и попробовать на ней — вдруг там сетевой стек лучше реализован и такой проблемы нет. Правда, перспектива полной переустановки системы на VDS с ботами и кучей всего остального тоже как-то не радует.
UPD: пока писал, совершенно случайно выяснилось, что проблема была совсем в другом. Я тестировал бота на домашнем компьютере, и от большого количества соединений переполнялась таблица NAT на роутере. Перенёс бота на сервер с прямым IP — всё заработало как надо даже при 200 параллельных проверках (на большее количество я пока не решился, тем более, что даже по сравнению со 120 ускорение было весьма незначительным — всего на пару секунд) + параллельном прогоне через сервер видеотраффика с YouTube. Единственный минус — время получения ответа от проверяемых серверов выросло раза в два, что может вызвать больше срабатываний о медленном ответе.
Ещё никак не могу обновить страницу про свои компьютеры на втором личном сайте. А ещё хочу закончить статью про мир школы и мир улицы, позавчера немного продвинулся, но потом снова дело встало. И ещё висит задача по freelance-деятельности. Вроде и небольшая, но никак не могу настроиться.
Но вообще, к вечеру, после того, как решилась проблема с ботами, жизнь как-то наладилась. Хоть и не успел ничего больше, кроме этого.
Мой первый опыт с ChatGPT
Сегодня попробовал ChatGPT в действии через Telegram-интерфейс (бот ChatGPT_ForTelegramBot). Забавная штука! Задал ему несколько нормальных вопросов и несколько провокационных, например, кто такие враги народа и умеет ли он ботать по фене. Ответы вполне адекватные, хотя зачастую и слишком общие. Поэтому использовать его для holywars в духе Android vs iOS или Intel vs AMD вряд ли получится. Хотя надо будет попробовать закидывать в него цитаты противников из конкретных споров, возможно, результат будет лучше. Тогда можно будет с одной стороны, не тратить время на спор со всякими дурнями, с другой — не оставлять идеологически неправильные высказывания незакрытыми.
Не упустил возможности обучить его тому, что лицей 1502 — это отвратительное учебное заведение, которое иначе как отстойником назвать нельзя. (Хех, вспомнилось, как в 2001 году учил этому программу ChatMaster. Впрочем, не знаю, достаточно ли сообщения от одного пользователя, чтобы как-то повлиять на обучение. Более эффективно, наверное, было бы написать негативные отзывы на Яндекс.Карте и Google.Maps).
Ещё, как выяснилось, ChatGPT удобно использовать как справочник по функциям библиотек. Просто вбиваешь имя функции и язык программирования, и он выводит информацию. Удобнее, чем в Google, где нужно сначала по ссылке ткнуть. Правда, задержка перед ответом великовата. (И сразу возникла мысль написать бота, который будет специализирован именно под такие запросы, а данные брать с DevDocs.io.)
Эх, а вообще, удивительно, что то, о чём я только мечтал в подростковом возрасте, стало реальностью… Правда, тогда я представлял это в виде desktop-приложения, которое только изредка синхронизирует базу через Интернет, чтобы его можно было использовать в оффлайне. Но не факт, что для такого хватило бы вычислительных мощностей и места на диске.
Не упустил возможности обучить его тому, что лицей 1502 — это отвратительное учебное заведение, которое иначе как отстойником назвать нельзя. (Хех, вспомнилось, как в 2001 году учил этому программу ChatMaster. Впрочем, не знаю, достаточно ли сообщения от одного пользователя, чтобы как-то повлиять на обучение. Более эффективно, наверное, было бы написать негативные отзывы на Яндекс.Карте и Google.Maps).
Ещё, как выяснилось, ChatGPT удобно использовать как справочник по функциям библиотек. Просто вбиваешь имя функции и язык программирования, и он выводит информацию. Удобнее, чем в Google, где нужно сначала по ссылке ткнуть. Правда, задержка перед ответом великовата. (И сразу возникла мысль написать бота, который будет специализирован именно под такие запросы, а данные брать с DevDocs.io.)
Эх, а вообще, удивительно, что то, о чём я только мечтал в подростковом возрасте, стало реальностью… Правда, тогда я представлял это в виде desktop-приложения, которое только изредка синхронизирует базу через Интернет, чтобы его можно было использовать в оффлайне. Но не факт, что для такого хватило бы вычислительных мощностей и места на диске.
Набег на Волоколамск
После Иосифо-Волоцкого монастыря добрались и до самого Волоколамска. К этому времени уже очень устали от долгой дороги, да и ранний подъем сказался, поэтому сил на детальный осмотр города уже не было. Ограничились только местным кремлём. Он расположен на очень крутом склоне и сравнительно небольшой: на его территории находится всего лишь несколько башен и две церкви с колокольней. Причём одна из них является музеем, а вторая закрыта для посещения. А вот на колокольню подняться можно, но для этого нужно было купить билет, поэтому так в итоге и не стал этого делать. Ограничился они, что посмотрел на год с крепостного вала (см. фото 2). Из-за сильно пересеченной местности Волоколамск имеет весьма нерегулярную структуру, поэтому с высоты кажется хаотичным нагромождением домов с совершенно разными стилями.
Больше толком увидеть ничего не удалось: сначала искали где поесть, а потом стал заканчиваться световой день (вот она, обратная сторона поездок зимой).
Смотреть все фото
Больше толком увидеть ничего не удалось: сначала искали где поесть, а потом стал заканчиваться световой день (вот она, обратная сторона поездок зимой).
Смотреть все фото
Заметка в Instagram от February 25, 2023 at 10:13AM
Вчера с @natalia_tella совершенно внепланово отправились в Волоколамск. Ради этого сумели даже встать рано и выехать чуть раньше 10 утра! Дорога была долгой и тяжёлой. Перед самим Волоколамском (о нем — в следующем сообщении) побывали ещё в Иосифо-Волоцком монастыре. В отличие от большинства монастырей, от которых главное впечатление — это покой, Иосифо-Волоцкий создаёт какое-то ощущение приподнятости, радости в душе! Ещё рядом с ним расположено весьма красивое озеро.
Ещё узнал о противостоянии нестяжателей и иосифлян. Удивительно, что ещё пятьсот лет назад возникал вопрос о том, что правильнее — не стремиться к владению материальными ресурсами вообще или же владеть, но использовать их на благо окружающих.
В общем, очень доволен, что побывал в этом месте.
#монастырь #поездка
Смотреть все фото
Ещё узнал о противостоянии нестяжателей и иосифлян. Удивительно, что ещё пятьсот лет назад возникал вопрос о том, что правильнее — не стремиться к владению материальными ресурсами вообще или же владеть, но использовать их на благо окружающих.
В общем, очень доволен, что побывал в этом месте.
#монастырь #поездка
Смотреть все фото
Связь времён
Сэр Мик сегодня прислал цитату, которая прямо про меня (только слово «действительность» уместнее было бы заменить на «сиюминутность» или «повседневность»):
Только вот написано это почти сто лет назад. Если конкретно, это Максим Горький, «Жизнь Клима Самгина».
он был совершенно уверен, что все, что происходит в стране, очищает для него дорогу к самому себе. Всю жизнь ему мешала найти себя эта проклятая, фантастическая действительность, всасываясь в него, заставляя думать о ней, но не позволяя встать над нею человеком, свободным от ее насилий.
Только вот написано это почти сто лет назад. Если конкретно, это Максим Горький, «Жизнь Клима Самгина».
Заметка в Instagram от February 21, 2023 at 06:34PM
Давно ничего не писал в Instagram: почти всё время сижу дома, а если и выбираюсь, то показывать как-то нечего. Да и ещё живу почти в режиме полярной ночи — слишком сбит режим. Сегодня собирался было выбраться в Кусково, где уже давно не был, но на улице было -10 °C, что для меня многовато, поэтому решил сократить прогулку. Пошёл в сквер у Зелёного проспекта, сделал несколько фото. Там, несмотря на холод, уже как-то чувствуется, что зима скоро закончится. Есть что-то весеннее и в том, как светит солнце, и даже в карканье ворон.
Я сделал несколько кругов по скверу, уйдя в свои мысли. Размышлял, в основном, о том, за сколько всего в жизни брался, и как мало из этого довёл до конца. И задавался вопросом, что главнее с точки зрения глобальной целом жизни: получить какие-то результаты или собрать интересный и разнообразный опыт. С одной стороны, нам ещё в детстве вдалбливают, что результат и есть главный критерий оценки. Хоть я всегда и отрицал это, но полностью избавиться от этой установки не могу. С другой — мы живём в настолько быстро меняющемся мире, что в нём почти всё через десяток-другой лет будет обесценено, если не раньше. Исключением являются разве что какие-то фундаментальные математические знания... Но увы, в серьезную математику мне путь закрыт: склад ума не тот.
Потом я обратил внимание на то, что на нескольких деревьях висит что-то чёрное. Подошёл поближе, и оказалось, что это #грачи! От холода они распушили перья и казались огромным. Вот уж не ожидал увидеть их сейчас!
Смотреть все фото
Я сделал несколько кругов по скверу, уйдя в свои мысли. Размышлял, в основном, о том, за сколько всего в жизни брался, и как мало из этого довёл до конца. И задавался вопросом, что главнее с точки зрения глобальной целом жизни: получить какие-то результаты или собрать интересный и разнообразный опыт. С одной стороны, нам ещё в детстве вдалбливают, что результат и есть главный критерий оценки. Хоть я всегда и отрицал это, но полностью избавиться от этой установки не могу. С другой — мы живём в настолько быстро меняющемся мире, что в нём почти всё через десяток-другой лет будет обесценено, если не раньше. Исключением являются разве что какие-то фундаментальные математические знания... Но увы, в серьезную математику мне путь закрыт: склад ума не тот.
Потом я обратил внимание на то, что на нескольких деревьях висит что-то чёрное. Подошёл поближе, и оказалось, что это #грачи! От холода они распушили перья и казались огромным. Вот уж не ожидал увидеть их сейчас!
Смотреть все фото
День, когда всё валится из рук
Ужасный день. Чувствую себя отвратительно, и из рук всё валится в буквальном смысле этого слова. Никак не могу понять почему: то ли снова заболеваю, то ли сказывается то, что вчера была вспышка на Солнце класса X2, что не просто много, а очень много. Сил нет даже просто сидеть за компьютером, поэтому устроил себе вынужденный день отдыха: то книжку читаю, то смотрю видеолекцию про озарение при решении творческих задач с психологической точки зрения.
Теперь у меня есть домашний сервер
Сделал из своего старого дачного ноутбука домашний сервер. Почему-то процесс шёл очень тяжело. Сначала обнаружилось, что даже в простое у процессора температура растёт до 72 °С, из-за чего постоянно крутится вентилятор на повышенных оборотоах. Я долго ломал голову, в чём дело. Начал было даже разбирать, чтобы прочистить систему охлаждения и, возможно, сменить термопасту. Но разобрать не получалось. В итоге решил ограничиться только тем, что пропылесосить, собрал обратно, и тут обнаружилось, что просто не заметил один винт, потому что он был заклеен гарантийной наклейкой от той конторы, где я его чинил в 2013 году. Разбирать второй раз терпения уже не хватило.
Потом с помощью утилиты powertop обнаружил, что как-то подозрительно много операций, связанных со звуковым кодеком. Стал разбираться, и выяснилось, что timidity конфликтовал с pulseaudio за доступ к звуковой карте (уже когда-то давно с подобным сталкивался). В итоге просто отключил timidity вообще — всё равно на сервере проигрывать MIDI вряд ли потребуется.
Потом долго возился с настройкой Samba. Сначала не знал, что Samba не использует данные linux-пользователей автоматически, а нужно добавлять их в базу с помощью smbpasswd. Когда с этим разобрался, подключил к ноутбуку флешку, настроил её монтирование, убедился, что всё работает. Создал нового пользователя, чтобы подключения делались через него. Потом решил перезагрузить ноутбук без флешки, чтобы убедиться, что в этом случае сервер не застрянет на этапе загрузки. Вынул флешку, положил на стол, загрузился, убедился. А потом забыл вставить обратно. И остаток дня долго не мог понять, почему вдруг подключение перестало работать, думал, что где-то напутал с правами для этого нового пользователя. Ушёл спать весьма раздражённый. Утром, проснувшись со свежей головой, увидел флешку на столе. И тут до меня дошло! Вернул её в ноутбук, смонтировал — всё заработало. Делаю контрольную перезагрузку — всё снова исчезает.
Стал разбираться, обнаружил, что флешка автоматически не монтируется. Да и вручную монтируется с большим-большим запозданием: где-то только через минуту после загрузки, до этого пишет ошибку. Опять долго ломал голову, потом сообразил запустить fsck. Нашлось несколько ошибок, так как до этого пару раз приходилось выключать компьютер принудительно, а файловая система ext2 на такое не очень хорошо реагирует. И только после этого флешка стала корректно монтироваться при загрузке и быть доступной по сети.
Потом решил поставить torrent-клиент deluge с Web-интерфейсом. Там тоже без проблем не обошлось: сервис Web-интерфейса просто не хотел запускаться. Потом запустил вручную под обычным пользователем — всё работает. Стал разбираться, оказалось, дело было в том, что у нового пользователя не был создан домашний каталог. Когда создал — всё запустилось и как сервис.
Ещё поставил xrdp и клиент BOINC — хотел задействовать ноутбук в распределённых вычислениях. Это было единственным, что заработало сразу и без проблем. Но не учёл того, насколько этот ноутбук греется под нагрузкой. Хотя шумит он не особо сильно (в комнате это слышно как лёгкое шуршание), но когда оно постоянно, то очень мешает сосредоточиться. Причём такое ощущение, что это зависит от решаемой задачи: при одних и тех же настройках выделения процессорного времени в одном случае температура процессора оказывается то за +70 °C, то порядка 56—58 °C. Впрочем, сейчас, кажется, нашёл решение: задействовал только два ядра из четырёх и буду запускать расчёты только ночью.
Потом с помощью утилиты powertop обнаружил, что как-то подозрительно много операций, связанных со звуковым кодеком. Стал разбираться, и выяснилось, что timidity конфликтовал с pulseaudio за доступ к звуковой карте (уже когда-то давно с подобным сталкивался). В итоге просто отключил timidity вообще — всё равно на сервере проигрывать MIDI вряд ли потребуется.
Потом долго возился с настройкой Samba. Сначала не знал, что Samba не использует данные linux-пользователей автоматически, а нужно добавлять их в базу с помощью smbpasswd. Когда с этим разобрался, подключил к ноутбуку флешку, настроил её монтирование, убедился, что всё работает. Создал нового пользователя, чтобы подключения делались через него. Потом решил перезагрузить ноутбук без флешки, чтобы убедиться, что в этом случае сервер не застрянет на этапе загрузки. Вынул флешку, положил на стол, загрузился, убедился. А потом забыл вставить обратно. И остаток дня долго не мог понять, почему вдруг подключение перестало работать, думал, что где-то напутал с правами для этого нового пользователя. Ушёл спать весьма раздражённый. Утром, проснувшись со свежей головой, увидел флешку на столе. И тут до меня дошло! Вернул её в ноутбук, смонтировал — всё заработало. Делаю контрольную перезагрузку — всё снова исчезает.
Стал разбираться, обнаружил, что флешка автоматически не монтируется. Да и вручную монтируется с большим-большим запозданием: где-то только через минуту после загрузки, до этого пишет ошибку. Опять долго ломал голову, потом сообразил запустить fsck. Нашлось несколько ошибок, так как до этого пару раз приходилось выключать компьютер принудительно, а файловая система ext2 на такое не очень хорошо реагирует. И только после этого флешка стала корректно монтироваться при загрузке и быть доступной по сети.
Потом решил поставить torrent-клиент deluge с Web-интерфейсом. Там тоже без проблем не обошлось: сервис Web-интерфейса просто не хотел запускаться. Потом запустил вручную под обычным пользователем — всё работает. Стал разбираться, оказалось, дело было в том, что у нового пользователя не был создан домашний каталог. Когда создал — всё запустилось и как сервис.
Ещё поставил xrdp и клиент BOINC — хотел задействовать ноутбук в распределённых вычислениях. Это было единственным, что заработало сразу и без проблем. Но не учёл того, насколько этот ноутбук греется под нагрузкой. Хотя шумит он не особо сильно (в комнате это слышно как лёгкое шуршание), но когда оно постоянно, то очень мешает сосредоточиться. Причём такое ощущение, что это зависит от решаемой задачи: при одних и тех же настройках выделения процессорного времени в одном случае температура процессора оказывается то за +70 °C, то порядка 56—58 °C. Впрочем, сейчас, кажется, нашёл решение: задействовал только два ядра из четырёх и буду запускать расчёты только ночью.
Страницы:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 106
- 107
- 108
- 109
- 110
- 111
- 112
- 113
- 114
- 115
- 116
- 117
- 118
- 119
- 120
- 121
- 122
- 123
- 124
- 125
- 126
- 127
- 128
- 129
- 130
- 131
- 132
- 133
- 134
- 135
- 136
- 137
- 138
- 139
- 140
- 141