pavki/hr_qa_sbs_best_bad huggingface dataset:
Вопрос: Безопасный кроссдоменный обмен данными между AJAX и PHP?

Лучший ответ: Очевидно что вы плохо понимаете как работает openApi раз пытаетесь все время сравнивать то, что вам нужно, с этой технологией.

Там структура такая: есть браузер клиента, с яваскриптом. 
Есть сервер сайта. 
Есть сервер вконтакте.

Когда человек хочет авторизоваться на сайте он жмет кнопку «авторизоваться через в контакте». Открывается всплывающее окно со страницей с домена вконтакте, там пользоватлеь вводит email/пароль, данные его (логин и пароль) отправляются серверу контакта. Сервер контакта их проверяет и если все ОК отправляет данные серверу сайта, на котором человек авторизуется. Сервер сайта, приняв эти данные, проверяет их и если все ок авторизует человека.

Т.е. проверка подлинности данных происходит на стороне сервера, а не на стороне яваскрипт.

Хранить ключи в яваскрипте/флеше не вариант и так никто не делает. В любом случае нужен дополнительный скрипт на стороне сервера-клиента, который будет проверять подлинность пришедших от сервера-поставщика услуги данных и уже потом передавать их в браузер (аяксом или еще как то)

Ответ на вопрос выше: как определить что посетитель уже залогинен на сайте-поставщике услуги?
Очень просто, сайт-поставщик услуги ставит клиенту свою куку. сайт-клиент ставит на своей странице iframe в котором грузится спецстраница сайта-поставщика со спец параметром типа from=site-client. Сайт-поставщик услуги получив запрос этой страницы смотрит есть ли у человека его кука и если есть то шлет серверу сайта-клиента необходимые данные, а сайт-клиент уже аяксом шлет данные в браузер пользователя.

Весь обмен данными с точки зрения JS происходит в пределах одного домена: через iframe с сайтом-поставщиком и аяксом с сайтом-клиентом.

Весь кроссдоменный обмен данными (между сайтом-поставщиком и сайтом-клиентом) происходит уже на стороне серверов без участия браузеров клиентов и эти данные невозможно перехватить.

Худший ответ: если уж вы смотрели в сторону RSA, то можно сделать шифрование с открытом ключом. Как я понимаю, вы хотите передавать данные с одного своего домена на другой свой же? Тогда этот тип шифрования подойдет. Но это лишь предположение, как можно решить задачу, наверняка есть и более лёгкие способы.
Вопрос: Как сгладить шрифт в браузере?

Лучший ответ: Проблема может быть не в настройках NVidia, а в настройках браузера или же производительности Windows. В последнем есть такое понятие, как «сглаживание системных шрифтов».

Худший ответ: Может быть, отключен ClearType (Windows) или изменен шрифт.
Вопрос: Как контролировать программистов в разрабатываемом старт-Апе?

Лучший ответ: Вы, конечно, можете понаставить им кучу палок в колеса, но на 100% обезопасить себя от "слива" базы не получится. Можете использовать Github Enterprise и т.д., но это не решит проблему. 
Проблема в подходе к делу. Вам нужно брать людей, которым можно доверять, и самому научиться доверять. Частично этот момент я затрагивал в статье на Хабре. Рекомендую ознакомиться. 
Плюс ко всему, ценность вашего стартапа должна быть в видении того, каким должен быть сервис, и в каком направлении он должен развиваться. У ваших разработчиков не будет стратегической картинки, а у вас должна быть. Если её не будет и у вас, а разработчики будут разбираться во всем лучше, то едва ли стоит вообще браться за проект.

Худший ответ: Обычно если задаются такими вопросами, то для стартапа ещё рановато ))
Вопрос: Не принимаются данные из последовательного порта на стороне Arduino Mega2560. Что предпринять?

Лучший ответ: Запишите прошивку, которая выставляет пины меги на чтение и вешает контроллер.
Замкните пины TX0 и RX0.
Подключите плату к последовательному порту.
Все, что вы будете писать в порт, будет возвращаться обратно.

Худший ответ: Что бы исключить догадки о проблемах на ПК можно ардуину и кабель её притащить к другу и протестировать у него, ну или на других машинах, если есть.
Вопрос: Как вставить видео с Ютуб на сайт, но заблокировать ссылку на само видео в ютубе?

Лучший ответ: Это противоречит соглашению с ютуб. Если вы хотите хранить видео на своём сайте - < video > < / video >

Худший ответ: Mihai не знаю насчёт соглашения, не читал )). Но сделать так точно можно. Один из способов убрать/cкрыть панель при помощи настроек, второй закрыть "бланком", при помощи CSS, или же при помощи того же CSS растягивать фрейм шире, чем зона видимости.
Пример: www.gt3themes.com/wordpress-themes/oyster/youtube-... - если я правильно понял
Вопрос: Жёсткий диск не работает на нём полоски, можно починить его как?

Лучший ответ: Если вы стебетесь, то очень толсто.
Если не стебетесь, то забудьте про этот диск и всю инфу. Ему пиздец. И умер он в мучениях.

Худший ответ: Самостоятельно инфу не восстановите уже. Отнесите в сервис центр, где они могут снять блины, и поставить их на свою систему, попытаться считать инфу. Но скорее всего из-за того, что вы винт вскрыли, все запылилось и вероятность снятия инфы минимальна.
Вопрос: Visual Studio Code portable?

Лучший ответ: Посмотрите это например - https://github.com/garethflowers/vscode-portable

Худший ответ: Есть так же тут https://sourceforge.net/projects/vscode-portable/
Вопрос: Реально ли сделать фон в css как на картинке?

Лучший ответ: нет

Худший ответ: вам нужен совсем-совсем css? а то можно так
codepen.io/aliencash/pen/pjVvxJ
Вопрос: Как отправлять почту с сервера, скрывая IP этого сервера?

Лучший ответ: Возьмите промежуточный сервер, на котором будет ТОЛЬКО почта и либо пересылайте через него, вырезая лишние заголовки, либо сразу отправляйте через него.

Худший ответ: Можно это сделать с помощью тоннеля GRE — Ваш сервер будет ходить в Интернет через сервер AntiDDoS, но не все AntiDDoS-сервисы так делают.

В ПМ могу посоветовать тех, кто точно делает)
Вопрос: Bootstrap какой из сервисов для быстрого прототипирования лучший?

Лучший ответ: pingendo.com
бесплатный, приложения под все ОС, не браузерный

Худший ответ: Sublime Text 3 + Gist. 
Онлайн сервисы сильно ограничены в наборе снипетов. Можете посмотреть Webflow например.
Вопрос: Почему размер расширенного (в gparted) раздела остается прежним?

Лучший ответ: Размер раздела изменился, размер файловой системы - нет.
resize2fs нужно делать.

Худший ответ: увеличить LV в LVM
затем размер ФС
Вопрос: Windows 7 Update, постоянно требует перезагрузки

Лучший ответ: Я обычно выбираю в выпадающем меню «напомнить через 4 часа» и не заморачиваюсь, что поделать если им нужна перезагрузка. На самом деле если Вас напрягает это, выберите ручное овновление и обновляйтесь перед тем как собрались выключать/перезагружать машину.

Худший ответ: Обычно обновления, которые могут требовать перезагрузку приходят, пачками раз в 2 недели. По вторникам.
Вопрос: Зачем и кому нужен Sublime Text 2?

Лучший ответ: У каждого из перечисленных редакторов есть свои плюшки. К примеру к сублайму можно писать плагины на питоне, Vim… это vim, он может все. Правда что бы делать это все нужно довольно долго учиться, настраивать под себя. Я вот не осилил.

Словом преимуществе перед Visual Studio много, но по сути и минусов тоже. Из плюсов — очень удобные редакторы, масса плюшек, которых нету нигде больше. Из минусов — настраивать надо. ну и т.д.

Худший ответ: для сишарпа и аспа в продакшене нет смысла от сублима, удобно накидать скриптик в нем на python, в целом можно автоматизировать сборку, но для с# точно лучше юзать студию, для джавы idea мне больше всех нравилась.
Вопрос: За скорость обработки циклов отвечает процессор?

Лучший ответ: За скорость обработки циклов отвечает процессор?Внутри цикла могут быть операции, скорость которых зависит от быстродействия памяти или даже жесткого диска, например если вы читаете там из файла. Но процессор тоже важен.Если в однопоточном выполнении какого-либо сценария будет 50 тысяч итераций, это нормально?Если теле цикле простая арифметика, то такой цикл будет выполнятся доли секунды. А если поставить всё это дело на машину с высокочастотным процессором?  Зависит не только от частоты процессора, но скорее всего будет быстрее.И если программа выполняется в одном потоке, то количество ядер не важно?С кучей ядер нашу программу будут меньше прерывать другие процеессы, например сама операционная система. См. "вытесняющая многозадачность".

Худший ответ: За скорость обработки циклов отвечает процессор?
1. Да. Но, если в цикле присутствуют обращения к диску, сети или чему-то внешнему, кроме памяти и самих регистров процессора, то процессор в периоды этих обращений будет простаивать.Если в однопоточном выполнении какого-либо сценария будет 50 тысяч итераций, это нормально?
2. Нормально, если задачу нельзя разбить на независимые подзадачи. Пример неразбиваемой задачи найти сложно, но например задача комивояжера в классическом исполнении.А если поставить всё это дело на машину с высокочастотным процессором?
3. Будет быстрее, если нет НО из первого ответа.А если многоядерный процессор?
4. Будет быстрее, если нет НО из второго ответа.И если программа выполняется в одном потоке, то количество ядер не важно?
5. Да, неважно.
Вопрос: Подбор движка для проекта

Лучший ответ: Лучше искать адекватную команду, которая сайт пилить будет.
Проблемы в 90% с разработчиками, а не с движком.

Худший ответ: WordPress идеально подойдет. За последние два года мы с командой делали аналогичные нишевые решения на базе WordPress - для ресторанов, для отелей, для строительных компаний, для фотостудий, сейчас делаем для танцев (студии, залы, федерации, конкурсы и т.д.). 
Соглашусь с @polym0rph - наймите толковых разработчиков. Если будут вопросы по реализации на WP - c удовольствием отвечу.
Вопрос: Как организовать резервный сервер?

Лучший ответ: 1 вариант. Поднимаете сайты у другого хостера, базы данных синхронизируете через репликацию, в днс указываете адреса обоих серверов.  Получите два параллельных сервера, в случае отказа одного - второй продолжит работу... Репликация в режиме master-master, следует контролировать состояние на обоих серверах.
2 вариант. На втором хостере поднимаете сайты, базы также в реплику. В днс указываете адрес только первого сервера, мониторите его доступность, при отказе - меняете днс. Днс ttl надо держать небольшим - от этого зависит время обновления записей. Ну и требуется мониторинг доступности.
Я бы выбрал первый вариант - он проще в обслуживании.

Худший ответ: Люди, решающие подобные проблемы, получают от 80к в месяц (сильно от). 
А так - galera, gluster, система деплоя, чтобы конфиги одинаковые были, какой-нибудь балансер поумнее, чем "сервер упал - треть клиентов идет лесом" (тот же failover IP у hetzner/linode/ovh).
А, да, вся эта байда не имеет смысла при количестве нод меньше трех - split-brain будет.
Вопрос: Книга о железе

Лучший ответ: Мне кажется, девушке намного интереснее это услышать от тебя, а не из книжки.

Худший ответ: По-моему, стоит зайти в ближайший книжный магазин и посмотреть литературу «для чайников». Там все просто и с картинками. Троелсен и Таненбаум, ИМХО, перебор.
Вопрос: Возможно ли применить такое условие?

Лучший ответ: if (arr[0] == arr[1] == arr[2])
Результат выполнения операции == в С++ -- это bool, а bool конвертируется в int.
Запись в скобках эквивалентна (a[0] == a[1]) == a[2] и сравнивает a[2] с результатом сравнения a[0] и a[1] (0 если они не равны, 1 если равны). Т.е. 1 == 1 == 1 -- это истина, поскольку (1 == 1) -- истина, истина сконвертированная в int -- это 1, а 1 == 1 -- это истина.почему сравнение значений массива по индексу работает не так, как с обычными переменными
Точно так же оно работает.как мне добиться нужного результата? 
if (arr[0] == arr[1] && arr[1] == arr[2])

Худший ответ: Потому что непонятно, откуда вы взяли вообще такой синтаксис.
Попробуйте как-то так: if (arr[0] == arr[1] && arr[1] == arr[2])
Вопрос: Количество возможных хостов (не адресов) для подсетей  /32 и /31?

Лучший ответ: /32 = 1 хост (1 адрес). 
/31 = 2 хоста (2 адреса).
/32 используется только в маршрутизации (маршрут до одного хоста) ну и у всяких любителей извращений. 
/31 используется только в pointtopoint соединениях (напр., VPN). Это просто 2 хоста которые могут общаться только друг с другом (один из них, впрочем, может быть шлюзом в другие сети).

Худший ответ: Маска /31 исключение (RFC3021). Используется для двух-хостовых соединений. Коим не нужны шлюзы и броадкасты. ;)
Вопрос: Как пустить трафик определенных сайтов через прокси?

Лучший ответ: Где взять список — не знаю.
Но если вы его добудете, то можно создать простой PAC-файл и настроить прокси как вам удобно.

Худший ответ: Может быть, вам это подойдет?
habrahabr.ru/post/173945/
Вопрос: Как настроить вид эмулятора ios?

Лучший ответ: Команд + 1,2,3,4

Худший ответ: Масштаб поменяйте
Вопрос: Вопрос по внешнему ip адресу?

Лучший ответ: Google.ru -> «что такое NAT».

Худший ответ: если вам нужен реальный адрес то такая услуга тоже есть, только не знаю как у мегафона я у МТС такую услугу подключал,

ну а вообще да вам выдаётся серый адрес, а шлюз через который ваш серый получает интернет это 83.149.8.х
Вопрос: Шлюзы EMAIL-&gt;SMS для различных операторов и/или сервисы по отправке SMS для физ.лиц?

Лучший ответ: В реальности у билайна шлюз работает тоже, но от абонента нужно 1 действие для разрешения приема таких смс.

Худший ответ: Емайл2смс работает у всех, только у кого надо его включать самому абоненту.
Вопрос: Что означает «Техническая грамотность» на уровне сисадмина?

Лучший ответ: Если под QA подразумевается "тестировщик" , то вопрос отпадает сам по себе : Что бы тестировать продукт необходимы знания на уровне "сис. админа" :))) Что бы не расписывать потом " А я вот кликнул вот на эту кнопечку и у меня выскочило какое то сообщение, не по русски, с кучей циферок". 
    При нахождение какого либо бага , его не просто надо выловить, а попытаться расписать вероятные причины его появления, для этого _желательно_  понимать как работают программы и естественно знать среду в которой она запускается. Что бы не было такого, как пример, что вы грешите на программу (которая глючит), а причина оказывается в БД, которая не доступна из за того что нет сети

Худший ответ: Всё же проще уточнить что они подразумевают чем тут гадать, консолью владеть наверное, умение рабочую среду под себя настроить если у них linux
Вопрос: У кого лучше покупать SSL сертификат?

Лучший ответ: Использую Let'sEncrypt по причине его бесплатности, вполне доволен
Правда некоторые мобильные браузеры пока ругаются на неподтвержденный сертификат, это связано с тем, что регистратор новый и они его еще не добавили в свою базу

Худший ответ: Для физлица все равно в общем-то - там только имя домена подтверждается. После общения с Thawte и с Geotrust мне больше понравился первый, правда и цены у него выше :-)
Вопрос: Во сколько может обойтись пересылка бракованного товара обратно в Китай?

Лучший ответ: Оплаты за счёт получателя нет.
Отправлял обратно почтой России, дошло до китая за 4 дня, до получателя плюс еще три. Всего получтлось 700р для 1 кг, для 200г около 150-200р.
www.russianpost.ru/rp/servise/ru/home/postuslug/autotarif
Иногда «Мелким пакетом» отправлять дешевле (а автотарификаторе нет).

Худший ответ: Плохой совет: скажите что отправили, а недели через 3 скажите что почта России потеряла посылку. ПР она такая. Китайцам не убудет — они их еще наштампуют.
Вопрос: Как скрыть источник видео?

Лучший ответ: Не выкладывать видео в интернет

Худший ответ: Решил проблему другим способом. Всем спасибо!
Вопрос: Периодическая перезагрузка смартфона?

Лучший ответ: Не нужно.

Худший ответ: Не ставьте левый софт вроде всяких твикалок, таскменеджеров и т.п. Особенно аккуратно выбирайте софт, требующий прав рута (если это актуально для вас). В остальном же, android неплохо рулит памятью самостоятельно. Как раз наоборот, странно было бы, если память не использовалась бы. В правильной системе память всегда утилизируется по максимуму, не на программы, так на дисковый кеш и буферы.
Вопрос: Какие курсы Java и C/C++ предпочтительнее?

Лучший ответ: 1.	Начинал с этих курсов rutracker.org/forum/viewtopic.php?t=4621594
Параллельно читал rutracker.org/forum/viewtopic.php?t=1283016
2.	Если совесть не позволяет скачивать краденный материал указанный выше, то можно смотреть курсы Мирончика. 
rutracker.org/forum/viewtopic.php?t=3529830
rutracker.org/forum/viewtopic.php?t=3201601

Худший ответ: Хорошие курсы делают ребята в Level UP: C++ Junior DeveloperJava Junior Developer
Вопрос: Есть ли какой-нибудь веб-сервис для генерации уникальных изображений?

Лучший ответ: Не забудьте про:
https://placekitten.com/ - котики
https://randomuser.me/
uifaces.com

Худший ответ: Попробуйте это.
Вопрос: Почему PDO query не хочет выводить контент?

Лучший ответ: скрипт выводит только строку title в таблице newsSELECT title FROM news"Действительно, в чем же причина такого странного поведения?" - спросил Алексей Уколов с явным сарказмом в голосе.

Худший ответ: Привет, ошибка очевидная . 
Обратите внимание foreach($PDO->query('SELECT title FROM news') as $row) { ?
Здесь вы хотите получить только TITLE из таблицы NEWS , попробуй вот это SELECT * FROM news Но вы должны смотреть на правильность названия столбцов
Вопрос: Два одинаковых интернет-магазина на разных доменах

Лучший ответ: А какой смысл вообще делать второй сайт? Почему бы первый не использовать для всей России?

Худший ответ: был сайт www.shop.region.ru добавлен www.shop.ru. Один(глобальный) делаете основным, второй пишем как зеркало (см. ниже). Брендируем глобальный. На глобальном делаем ссылку на региональный и наоборот. 
robots.txt дока по яднекс, 
googl поисковая строка
Вопрос: Как начать setInterval с того же места?

Лучший ответ: var pauseButton = document.querySelector(".pause-button"),
    start = Date.now(),
    duration = 3000,
    timePassed,
    paused;



var timer = setInterval(change, duration);

pauseButton.addEventListener("click", function() {
  if (!paused) {
    clearInterval(timer);
    timePassed = Date.now() - start;
    paused = true;
  } else {
    setTimeout(function() {
      timer = setInterval(change, duration);
    }, duration - timePassed);

    paused = false;
  }
}, false);



function change() {
  // ...
}
upd: Изначальный вариант был несколько некорректен - исправил.

Худший ответ: Не нужно вызывать clearInterval, просто делайте return из change если paused === true.
Вопрос: Как отключить экран на планшетофоне с андроидом?

Лучший ответ: Делаете приложение (сервис) который держит вейклок (что-бы система не решила сменить яркость подсветки) и пишет в sysfs интерфейс драйвера подсветки значение 0.

Худший ответ: Какой цианоген cтавили ?
Вопрос: Почему Python multiprocessing нестабилен?

Лучший ответ: Хорошо, что вы указали в тегах Windows, это все объясняет. Под Windows нет простого способа "раздвоиться" процессу при вызове multiprocessing.Process, поэтому осуществляется очень сложная эмуляция этого поведения. При этом функция target выдирается из модуля, запускается в отдельном интерпретаторе, а все параметры сереализуются передаются и десереализуются перед вызовом target, при этом инициализация модуля в новом интерпретаторе выполняется частично (инициализируется только глобальный контекс). Подробнее об этом, например, тут, есть еще одна очень хорошая статья где подробно рассмотрен этот механизм, но сейчас не найду ссылку.
Коротко о том, как готовить multiprocessing под Windows:Разделять процессы (вызов multiprocessing.Process()) как можно раньше в коде.По возможности избегать инициализации любых ресурсов и глобальных переменных до разделения. Учитывайте, что этот код выполняется во всех процессах независимо и может давать кучу сторонних эффектов.Не передавать через args никаких сложных объектов с "поведением" (кроме объектов из самого multiprocessing, он сам знает как их правильно передавать), только голые данные (примитивы или объекты состоящие только из примитивов), которые сериализуются без сторонних эффектов.Создавать дочерние процессы один раз, и на протяжении всего времени работать с ними посредством обмена сообщениями через Pipe/Queue. Не порождать новые процессы в цикле вычислений в момент "когда понадобятся".Queue при попытке записи/чтения может блокировать процесс, если при этом происходит запись/чтения в/из нее в другом процессе. (Думаю, именно это и происходит в коде в вопросе).Лучше использовать Pipe, который в худшем случае блокирует один процесс, а не все, как Queue.При создании процесса можно передавать ему два Pipe (input одного + output другого), в вызывающем процессе хранить соответствующие им коннекторы и только при помощи их общаться с дочерним процессом.Можно не делать process.join(), а просто читать результаты из output Pipe, они прочтутся только после того как попадут туда, что дальше будет происходить с процессом уже не важно (можно поставить return после записи в Pipe в дочернем процессе).

Худший ответ: 3. Третий "худший" 
1. Что-то мне кажется, что в вот этом target=combinatorial_set.find_nearest_set_point - у вас должна быть критическая ошибка, которая просто убивает процессы.Что на размерности 30 превращается в адову кучу действий.
2. Чего же вы при этом делаете это на Python? Вы при этом теряете раз 100 в производительности, в сравнении с языками, компилирующими в нативный код (C, C++, Go). Тем более, что там бы вы имели возможность использовать легковесные потоки взамен тяжёлых параллельных процессов.
Вопрос: Проверка вхождения IP адреса в диапазон средствами SQL или PL/SQL?

Лучший ответ: Если поля имеют тип inet, то так:

SELECT * FROM ips WHERE inet '10.160.1.15' >= RANGE_BEGIN AND inet '10.160.1.15' <= RANGE_END ;

Худший ответ: Ну сколько можно! 

Делаете ip — unsigned int
запись — нижний ip из диапазона
выборку — первый из отсортированного списка по возрастанию, больше или равен нижнему ip из диапазона
при этом хорошо и быстро используется индекс

Если mysql с этим справляете, то oracle должен также отлично работать 

единственный недостаток — нужно незанятые блоки также прописывать, но это оффлайновая операция и делается просто.
Правда для отдельного региона будет их много. Для world wide будет все просто отлично.
Вопрос: Несколько вопросов по кодированию информации

Лучший ответ: Exe файл имеет формат PE (Portable Executable), как и dll, например.
1. MZђ и всякая белиберда. А точнее ASCII-интерпретация двоичных данных (служебных заголовков, ресурсов, кода, секции данных). Ну т.е. белиберда. Открывать двоичные файлы следует в HEX-редакторах.
2. Да, через HEX-редактор. Структуру можно нагуглить по запросу «pe file format». Кроме того, ресурсы можно отредактировать с помощью res hacker. Если надо менять именно код, надо использовать дизассемблер.

Худший ответ: Очень странный вопрос при интересах в профиле: программирование, сети, взлом, и геймдев.
Вопрос: Спарсить String в массив int — Java, как реализовать?

Лучший ответ: Сначала строку разбиваем .split(",\s"); в массив строк. Создаем массив int той же длины. Потом в цикле обходим массивы и поэлементно преобразуем строки в числа numbres[i] = Integer.parseInt(strings[i]);UPD: На самом деле это НЕ лучшее решение. Я как-то сразу проглядел, что эта строка - валидный объект в формате JSON, и парсится должна соответствующими инструментами. Правильные ответы дали: EugeneP2 и OnYourLips

Худший ответ: Помогите с таким вариантомprivate String b = "[3389, 3410, 3430, 3450, 3470, 3500, 3520, 3540, 3760, 3780, 3810, 3830, 3850, 3970, 4000, 4140, 4160, 4180, 4210, 4220, 4250, 4300, 4320, 4340, 4360, 4380, 4400, 4420, 4430, 4440]";
            String[] items = b.replaceAll("\\[", "").replaceAll("\\]", "").split(",");

            int[] results = new int[items.length];

            for (int i = 0; i < items.length; i++) {
                try {
                    results[i] = Integer.parseInt(items[i].trim());
                } catch (NumberFormatException nfe) {};
            }

Log.d("TEST", Arrays.toString(results));
Вот что я получаю на выходе: [3389, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]