Полифония ШИМ на AVRmicro

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Друг Кота
Аватара пользователя
Сообщения: 3258
Зарегистрирован: Вт май 19, 2009 09:27:30
Откуда: Украина

Сообщение ELcat »

Тем, касающихся проигрывания одноголосных мелодий микроконтроллером AVR, в Сети целое множество, не дефицит они и на Радиокоте. Но, облазив весь Радиокот и подобные сайты, так и не нашёл ни одного проекта под AVR для проигрывания полифонических(многоголосных) мелодий (встречал пару довольно сложных проектов под PIC).
Прошу всех заинтересовавшихся присоединиться и совместными усилиями разобраться в этом, думаю, для многих интересном вопросе.
Исходные данные: имеем ATmega16 с подключенным к выводу OC0(PB3, 43-я ножка TQFP) высокоомным динамиком (или R-C-цепочка + выход на усилитель или наушники), а также кварцем, например, на 16МГц, среда CodeVisionAVR.
Для максимального упрощения задачи договоримся, что каждый звук в полифонической мелодии будет формироваться в виде прямоугольника, а не синусоиды, и будет иметь постоянную амплитуду, а не динамическую - атака-спад-затухание, а также, что максимальное количество одновременно воспроизводимых звуков будет четыре. Также условимся, что значения амплитуд будут следующими: -1=0x00h, 0=0x80h, +1=0xFFh. Теоритически нам необходимо синхронно генерировать одну-две-три или четыре частоты, суммировать значения их амплитуд для текущей выборки, производимой, допустим, 1 раз за 2-4 периода ШИМ, полученную сумму делить на константу 4 и отправлять полученный результат в регистр сравнения OCR0 8-битного таймера 0 меги, работающего в режиме контроллера ШИМ с частотой заполнения 62кГц (16МГц/256). Формат представления мелодии, думаю, удобнее всего сделать в виде четырёх полосной "ленты времени" с шагом кванта, допустим, равного длительности самого короткого звука мелодии: 0x01h-целая, 0x02h-1/2, 0x04h-1/4, 0x08h-1/8, 0x10h-1/16 и т.д. Звуки предлагаю кодировать так: 0x00h- нет звука(пауза), 0x01h-"до" большой октвы, 0x02h-"до#" большой октавы, 0x03h-"рэ" большой октавы, ... , 0x0C-"до" малой октавы, ... , 0x19h-"до" первой октавы и т.д. Таким образом кодированная мелодия будет представлять собой массив однобайтовых чисел шириной 4 столбца, первым элементом которого будет временной "вес" кванта или длительность самого короткого звука мелодии. Так, например, две одновременно звучащие ноты длительностью 1/2 "до" первой и 1/4 "ми" первой октавы в мелодии с квантом 1/16 будут выглядеть так:
{0x10, 0xFF, 0xFF, 0xFF, //временной вес кванта, 3 байта зарезервировано
0x19, 0x1D, 0x00, 0x00, //квант №1
0x19, 0x1D, 0x00, 0x00, //квант №2
0x19, 0x1D, 0x00, 0x00, //...
0x19, 0x1D, 0x00, 0x00,
0x19, 0x00, 0x00, 0x00,
0x19, 0x00, 0x00, 0x00,
0x19, 0x00, 0x00, 0x00,
0x19, 0x00, 0x00, 0x00}

Ну всё, вроде изложил. Вот только как это всё воплотить в код?


P.S.: Из предыстории вопроса - наткнулся на YouTube на это:http://www.youtube.com/watch?v=CtGA4phu2X8&feature=related и "заболел" :music:
Последний раз редактировалось ELcat Пн дек 05, 2011 09:21:04, всего редактировалось 3 раза.
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3258
Зарегистрирован: Вт май 19, 2009 09:27:30
Откуда: Украина

Сообщение ELcat »

В дальнейшем для экономии памяти "вес" кванта можно сделать меняющимся, отлавливая по ходу массива значения вида 0xVV, 0xFF, 0xFF, 0xFF, где 0xVV - новый "вес" кванта.
Реклама
Поставщик валерьянки для Кота
Сообщения: 2222
Зарегистрирован: Вт ноя 27, 2007 11:32:06
Откуда: Tashkent

Сообщение uk8amk »

Сначала вам нужно добиться просто параллельного воспроизведения нескольких звуков, а уже потом обдумывать каким образом бы кодировать мелодии. Посмотрите Application Note AVR314: DTMF Generator. Чем не полифония?
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2365
Зарегистрирован: Вс янв 09, 2011 16:51:39
Откуда: Санкт-Ленинград

Сообщение Dmitry Dubrovenko »

ELcat писал(а):так и не нашёл ни одного проекта под AVR для проигрывания полифонических(многоголосных) мелодий
Ну как же?
А это?
ICQ нет, и, в ближайшее время, не будет.
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Аватара пользователя
Сообщения: 3258
Зарегистрирован: Вт май 19, 2009 09:27:30
Откуда: Украина

Сообщение ELcat »

Dmitry Dubrovenko писал(а):...
А это?
С ассемблером я не дружу, к тому же проект не удовлетворяет моим условиям. Почитайте ещё раз, что я написал выше, может сможете помочь своей идеей. Я не могу врубиться, как превратить "ноты" в частоты. Вот было бы 4 отдельных таймера...
Реклама
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2365
Зарегистрирован: Вс янв 09, 2011 16:51:39
Откуда: Санкт-Ленинград

Сообщение Dmitry Dubrovenko »

ELcat писал(а):С ассемблером я не дружу
А я с Коде-Виженом не дружу. :)))
То, что Вы хотите делать, в принципе, не годиться для озвучания, поскольку это - собственно только задающий генератор. К нему ещё "блок тембра" надо. Я такое, в принципе, делал на МК с тремя таймерами, и аппаратным микшером (для будильника пойдёт), но можно и внутри суммировать, и на ШИМ выводить.
То, что Чан сделал, это - уже настоящий WT-синтез. Советую присмотреться (у него, на сайте, вся теория расписана).
ICQ нет, и, в ближайшее время, не будет.
Контактная информация:
Реклама
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город

Сообщение Мастер Ломастер »

полифония на AVR? ну, во-первых, она-таки есть :) и очень даже полифоническая такая полифония.
даже воспроизведение слегка препарированных MOD и S3M файлов. причем не с прямоугольником на выходе, а с нормальным wave-синтезом.
1. http://elm-chan.org/works/mxb/report.html - простая синтезированная полифония, описание алгоритма
2. http://jarv.org/2011/11/custom-musical- ... ss-than-5/ - примитивная полифония "прямоугольником"
3. http://elektronika.kvalitne.cz/ATMEL/S3 ... r_eng.html - воспроизведение MOD и S3M
4. http://uzebox.org/ - и не только полифония :)))

в сущности, особой проблемы нет, если, конечно, есть музыкальное образование и слух :) но без ассемблерных вставок получится посредственно.
битва с дураками проиграна, победители торжествуют. слава победителям!
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 3258
Зарегистрирован: Вт май 19, 2009 09:27:30
Откуда: Украина

Сообщение ELcat »

Дорогие товарищи, я лишь прошу помочь мне разобраться, как одновременно синтезировать четыре прямоугольных сигнала отличных по частоте (а следовательно и по фазе) с помощью лишь одного таймера. Без ссылок, "на пальцах". Зачем предлагать человеку изучить устройство танка, когда вас просят лишь объяснить, как самому сделать рогатку???
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2365
Зарегистрирован: Вс янв 09, 2011 16:51:39
Откуда: Санкт-Ленинград

Сообщение Dmitry Dubrovenko »

Мастер Ломастер писал(а):1. http://elm-chan.org/works/mxb/report.html - простая синтезированная полифония, описание алгоритма
"Чукча - не читатель, чукча - писАтель". :)))
ICQ нет, и, в ближайшее время, не будет.
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 3258
Зарегистрирован: Вт май 19, 2009 09:27:30
Откуда: Украина

Сообщение ELcat »

Дима, а издеваться, типа, обязательно? :evil:

Если кто-нибудь всё таки решится не просто трепаться, а заняться делом:
Изображение
У меня уже возникла идея, попробую реализовать...
Друг Кота
Аватара пользователя
Сообщения: 3258
Зарегистрирован: Вт май 19, 2009 09:27:30
Откуда: Украина

Сообщение ELcat »

Сделал кой-какие наброски, но не работает. ШИМ на выходе есть, но модулирован какой-то хренью. Помогите, пожалуйста разобраться. Где-то напортачил, а вот где не пойму.
Вложения
PolyPhony.zip
(49.21 КБ) 311 скачиваний
Первый раз сказал Мяу!
Сообщения: 32
Зарегистрирован: Чт мар 25, 2010 00:28:14
Откуда: Ukraine

Сообщение Viver »

ELcat писал(а):Сделал кой-какие наброски, но не работает. ШИМ на выходе есть, но модулирован какой-то хренью. Помогите, пожалуйста разобраться. Где-то напортачил, а вот где не пойму.
http://chipenable.ru/index.php/programm ... a-avr.html - посмотрите. Там есть исходники и под CVAVR.
[size=70][b][i][color=#0000BF]Опыт - это когда на смену вопросам "что?", "где?", "когда?", "как?" и "почему?" приходит единственный вопрос: "на*я?".[/color][/i][/b][/size]
[size=70][b][i][color=#BF00FF]Всякий раз когда у тебя проблемы - помни - большинству н*ть![/color][/i][/b][/size]
Друг Кота
Аватара пользователя
Сообщения: 3258
Зарегистрирован: Вт май 19, 2009 09:27:30
Откуда: Украина

Сообщение ELcat »

Viver писал(а):
ELcat писал(а):Сделал кой-какие наброски, но не работает. ШИМ на выходе есть, но модулирован какой-то хренью. Помогите, пожалуйста разобраться. Где-то напортачил, а вот где не пойму.
http://chipenable.ru/index.php/programm ... a-avr.html - посмотрите. Там есть исходники и под CVAVR.
Спасибо, но с монофонией я уже вдоволь наигрался.
Друг Кота
Аватара пользователя
Сообщения: 3258
Зарегистрирован: Вт май 19, 2009 09:27:30
Откуда: Украина

Сообщение ELcat »

Получилось :idea: И довольно таки здорово :music:
Первый раз сказал Мяу!
Сообщения: 32
Зарегистрирован: Чт мар 25, 2010 00:28:14
Откуда: Ukraine

Сообщение Viver »

ELcat писал(а):Получилось :idea: И довольно таки здорово :music:
Так, пожалуйста, продемонстрируйте результат при помощи видео или еще чего.
[size=70][b][i][color=#0000BF]Опыт - это когда на смену вопросам "что?", "где?", "когда?", "как?" и "почему?" приходит единственный вопрос: "на*я?".[/color][/i][/b][/size]
[size=70][b][i][color=#BF00FF]Всякий раз когда у тебя проблемы - помни - большинству н*ть![/color][/i][/b][/size]
Друг Кота
Аватара пользователя
Сообщения: 3258
Зарегистрирован: Вт май 19, 2009 09:27:30
Откуда: Украина

Сообщение ELcat »

Пожалуйста, украинская народная "Та й дують вітри". Уже имеются идеи по преобразованию в синусоиду, но пока занят и отложил до лучших времён.
Вложения
Аудиоклип 05.zip
(148.15 КБ) 417 скачиваний
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2365
Зарегистрирован: Вс янв 09, 2011 16:51:39
Откуда: Санкт-Ленинград

Сообщение Dmitry Dubrovenko »

Так всё-таки, что Вы получить-то хотели?
Ибо три "прямоугольных" голоса выглядят примерно так:
Untitled-4.jpg
(15.7 КБ) 744 скачивания
А у Вас выглядит так:
Untitled-2.jpg
(14.52 КБ) 630 скачиваний
И громкость почему-то прыгает.
ICQ нет, и, в ближайшее время, не будет.
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 3258
Зарегистрирован: Вт май 19, 2009 09:27:30
Откуда: Украина

Сообщение ELcat »

Эх жаль, с синусоидой ничего не получается, поскольку сигнал формируется в обработчике прерываний, где все вычисления должны занять менее 256 машинных циклов, иначе программа не будет выполняться поскольку на неё не будет времени у проца. А вычисление адреса таблицы синуса выглядит как 16*8/16, что на АВРке занимает уйму времени. Можно было бы снизить частоту тактирования таймера, но следующая позиция прескаллера f/8, что повлечёт за собой пересчёт таблицы коэфициентов и точность частот нот, которая и так далековата от чистого звучания. Вот так вот. Не для АВРки сие занятие...
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город

Сообщение Мастер Ломастер »

ELcat писал(а):Не для АВРки сие занятие...
я выше давал ссылки на проекты, которые опровергают ваше утверждение на 110%.
битва с дураками проиграна, победители торжествуют. слава победителям!
Контактная информация:
Первый раз сказал Мяу!
Сообщения: 33
Зарегистрирован: Ср дек 08, 2010 18:53:34
Откуда: Москва

Сообщение boogyman »

Вот программа проигрывания WAV файла при помощи контроллера AVR. Вопрос: можно ли как-нибудь уменьшить размер выходного Hex файла при таких же характеристиках звучания. Простой звук "Дин-Дон" занимает 80% памяти меги8.

Код: Выделить всё

#include <stdint.h>
#include <avr/io.h>
#include <avr/pgmspace.h>
#include <avr/interrupt.h>
#include "pcm_sample.h"

#define SAMPLE_RATE 8000;

volatile uint16_t sample;
int sample_count;

/* инициализация ШИМ */
void pwm_init(void)
{
    
    DDRB |= (1 << PB1);// OC1A - выход
    PORTB = 0x00;

    /* Setup Timer1 */
	TCCR1A |= (1 << COM1A1)|(1 << WGM10);// сброс OC1A при совпадении
    TCCR1B |= (1 << WGM12)|(1 << CS10);// быстрый ШИМ, без делителя 
    //PWM frequency = 8MHz / (255 + 1) = 31.25kHz
    OCR1A = 0;// начальная установка регистра сравнения
   
    /* Setup Timer0 */
 
    TCCR0 |= (1 << CS00);// без делителя
    TCNT0 = 0;
    TIMSK |= (1 << TOIE0);// разрешаем прерывания по Т0
    sample_count = 4;
    sei(); //глобально разрешаем прерывания
}

ISR(TIMER0_OVF_vect)
{
    
         sample_count--;
         if (sample_count == 0)
            {
             sample_count = 4;          
             OCR1A = pgm_read_byte(&pcm_samples[sample++]);
             if(sample>pcm_length)
			 sample=0;
            }

}

int main(void)
{
   pwm_init();
   while(1)
   {

   }
}
Подключаемый файл pcm_sample.h

Код: Выделить всё

const long pcm_length=6508;

const unsigned char pcm_samples[] PROGMEM ={
    128, 128, 132, 136, 142, 149, 148, 143, 134, 118,  99,  78,  63,  54,  58,  73, 
	101, 136, 172, 213, 244, 255, 255, 244, 205, 154,  94,  33,   0,   0,   0,   0, 
	  0,  52, 131, 213, 255, 255, 255, 255, 255, 255, 180,  87,   0,   0,   0,   0, 
	  0,   0,   0, 104, 220, 255, 255, 255, 255, 255, 255, 255, 105,   0,   0,   0, 
	  0,   0,   0,   0,  28, 215, 255, 255, 255, 255, 255, 255, 255, 169,   0,   0, 
	  0,   0,   0,   0,   0,   4, 172, 255, 255, 255, 255, 255, 255, 255, 221,   0, 
	  0,   0,   0,   0,   0,   0,   0, 135, 255, 255, 255, 255, 255, 255, 255, 248, 
	 30,   0,   0,   0,   0,   0,   0,   0,  98, 255, 255, 255, 255, 255, 255, 255, 
	251,  63,   0,   0,   0,   0,   0,   0,   0,  59, 255, 255, 255, 255, 255, 255, 
	255, 253,  96,   0,   0,   0,   0,   0,   0,   0,  26, 247, 255, 255, 255, 255, 
	255, 255, 255, 139,   0,   0,   0,   0,   0,   0,   0,   6, 218, 255, 255, 255, 
	255, 255, 255, 255, 172,   0,   0,   0,   0,   0,   0,   0,   4, 181, 255, 255, 
	255, 255, 255, 255, 255, 211,   0,   0,   0,   0,   0,   0,   0,   0, 145, 255, 
	255, 255, 255, 255, 255, 255, 244,  21,   0,   0,   0,   0,   0,   0,   0, 109, 
	255, 255, 255, 255, 255, 255, 255, 250,  53,   0,   0,   0,   0,   0,   0,   0, 
	 73, 255, 255, 255, 255, 255, 255, 255, 252,  90,   0,   0,   0,   0,   0,   0, 
	  0,  37, 247, 255, 255, 255, 255, 255, 255, 255, 125,   0,   0,   0,   0,   0, 
	  0,   0,   7, 224, 255, 255, 255, 255, 255, 255, 255, 159,   0,   0,   0,   0, 
	  0,   0,   0,   5, 189, 255, 255, 255, 255, 255, 255, 255, 196,   0,   0,   0, 
	  0,   0,   0,   0,   1, 153, 255, 255, 255, 255, 255, 255, 255, 231,  19,   0, 
	  0,   0,   0,   0,   0,   0, 120, 255, 255, 255, 255, 255, 255, 255, 250,  44, 
	  0,   0,   0,   0,   0,   0,   0,  84, 255, 255, 255, 255, 255, 255, 255, 252, 
	 80,   0,   0,   0,   0,   0,   0,   0,  49, 252, 255, 255, 255, 255, 255, 255, 
	255, 113,   0,   0,   0,   0,   0,   0,   0,  17, 228, 255, 255, 255, 255, 255, 
	255, 255, 151,   0,   0,   0,   0,   0,   0,   0,   5, 199, 255, 255, 255, 255, 
	255, 255, 255, 184,   0,   0,   0,   0,   0,   0,   0,   2, 163, 255, 255, 255, 
	255, 255, 255, 255, 217,  18,   0,   0,   0,   0,   0,   0,   0, 129, 255, 255, 
	255, 255, 255, 255, 255, 246,  37,   0,   0,   0,   0,   0,   0,   0,  94, 255, 
	255, 255, 255, 255, 255, 255, 252,  73,   0,   0,   0,   0,   0,   0,   0,  65, 
	255, 255, 255, 255, 255, 255, 255, 255, 105,   0,   0,   0,   0,   0,   0,   0, 
	 28, 233, 255, 255, 255, 255, 255, 255, 255, 137,   0,   0,   0,   0,   0,   0, 
	  0,   5, 206, 255, 255, 255, 255, 255, 255, 255, 176,   0,   0,   0,   0,   0, 
	  0,   0,   2, 176, 255, 255, 255, 255, 255, 255, 255, 203,  13,   0,   0,   0, 
	  0,   0,   0,   0, 141, 255, 255, 255, 255, 255, 255, 255, 236,  37,   0,   0, 
	  0,   0,   0,   0,   0, 104, 255, 255, 255, 255, 255, 255, 255, 252,  65,   0, 
	  0,   0,   0,   0,   0,   0,  76, 255, 255, 255, 255, 255, 255, 255, 255,  95, 
	  0,   0,   0,   0,   0,   0,   0,  44, 236, 255, 255, 255, 255, 255, 255, 255, 
	129,   0,   0,   0,   0,   0,   0,   0,  13, 211, 255, 255, 255, 255, 255, 255, 
	255, 161,   0,   0,   0,   0,   0,   0,   0,   3, 184, 255, 255, 255, 255, 255, 
	255, 255, 193,  10,   0,   0,   0,   0,   0,   0,   0, 149, 255, 255, 255, 255, 
	255, 255, 255, 226,  36,   0,   0,   0,   0,   0,   0,   0, 117, 255, 255, 255, 
	255, 255, 255, 255, 251,  53,   0,   0,   0,   0,   0,   0,   0,  86, 255, 255, 
	255, 255, 255, 255, 255, 254,  86,   0,   0,   0,   0,   0,   0,   0,  55, 237, 
	255, 255, 255, 255, 255, 255, 255, 123,   0,   0,   0,   0,   0,   0,   0,  23, 
	213, 255, 255, 255, 255, 255, 255, 255, 149,   0,   0,   0,   0,   0,   0,   0, 
	  3, 194, 255, 255, 255, 255, 255, 255, 255, 180,   7,   0,   0,   0,   0,   0, 
	  0,   0, 157, 255, 255, 255, 255, 255, 255, 255, 212,  30,   0,   0,   0,   0, 
	  0,   0,   0, 124, 255, 255, 255, 255, 255, 255, 255, 240,  50,   0,   0,   0, 
	  0,   0,   0,   0,  98, 255, 255, 255, 255, 255, 255, 255, 254,  76,   0,   0, 
	  0,   0,   0,   0,   0,  65, 238, 255, 255, 255, 255, 255, 255, 255, 111,   0, 
	  0,   0,   0,   0,   0,   0,  39, 218, 255, 255, 255, 255, 255, 255, 255, 137, 
	  0,   0,   0,   0,   0,   0,   0,   9, 199, 255, 255, 255, 255, 255, 255, 255, 
	168,   4,   0,   0,   0,   0,   0,   0,   0, 167, 255, 255, 255, 255, 255, 255, 
	255, 201,  28,   0,   0,   0,   0,   0,   0,   0, 137, 255, 255, 255, 255, 255, 
	255, 255, 226,  47,   0,   0,   0,   0,   0,   0,   0, 110, 255, 255, 255, 255, 
	255, 255, 255, 254,  71,   0,   0,   0,   0,   0,   0,   0,  75, 240, 255, 255, 
	255, 255, 255, 255, 255, 103,   0,   0,   0,   0,   0,   0,   0,  48, 220, 255, 
	255, 255, 255, 255, 255, 255, 131,   0,   0,   0,   0,   0,   0,   0,  22, 200, 
	255, 255, 255, 255, 255, 255, 255, 160,   6,   0,   0,   0,   0,   0,   0,   0, 
	174, 255, 255, 255, 255, 255, 255, 255, 191,  25,   0,   0,   0,   0,   0,   0, 
	  0, 145, 255, 255, 255, 255, 255, 255, 255, 214,  46,   0,   0,   0,   0,   0, 
	  0,   0, 120, 255, 255, 255, 255, 255, 255, 255, 242,  67,   0,   0,   0,   0, 
	  0,   0,   0,  87, 242, 255, 255, 255, 255, 255, 255, 255,  92,   0,   0,   0, 
	  0,   0,   0,   0,  62, 223, 255, 255, 255, 255, 255, 255, 255, 121,   0,   0, 
	  0,   0,   0,   0,   0,  38, 204, 255, 255, 255, 255, 255, 255, 255, 148,   4, 
	  0,   0,   0,   0,   0,   0,   8, 181, 255, 255, 255, 255, 255, 255, 255, 175, 
	 25,   0,   0,   0,   0,   0,   0,   0, 155, 255, 255, 255, 255, 255, 255, 255, 
	202,  42,   0,   0,   0,   0,   0,   0,   0, 128, 255, 255, 255, 255, 255, 255, 
	255, 227,  63,   0,   0,   0,   0,   0,   0,   0,  99, 245, 255, 255, 255, 255, 
	255, 255, 255,  85,   0,   0,   0,   0,   0,   0,   0,  74, 227, 255, 255, 255, 
	255, 255, 255, 255, 109,   0,   0,   0,   0,   0,   0,   0,  47, 204, 255, 255, 
	255, 255, 255, 255, 255, 138,   1,   0,   0,   0,   0,   0,   0,  20, 185, 255, 
	255, 255, 255, 255, 255, 255, 165,  20,   0,   0,   0,   0,   0,   0,   1, 165, 
	255, 255, 255, 255, 255, 255, 255, 189,  39,   0,   0,   0,   0,   0,   0,   0, 
	136, 255, 255, 255, 255, 255, 255, 255, 215,  62,   0,   0,   0,   0,   0,   0, 
	  0, 111, 246, 255, 255, 255, 255, 255, 255, 242,  80,   0,   0,   0,   0,   0, 
	  0,   0,  89, 227, 255, 255, 255, 255, 255, 255, 255, 103,   0,   0,   0,   0, 
	  0,   0,   0,  59, 206, 255, 255, 255, 255, 255, 255, 255, 130,   0,   0,   0, 
	  0,   0,   0,   0,  35, 187, 255, 255, 255, 255, 255, 255, 255, 151,  19,   0, 
	  0,   0,   0,   0,   0,  11, 167, 255, 255, 255, 255, 255, 255, 255, 181,  38, 
	  0,   0,   0,   0,   0,   0,   0, 148, 255, 255, 255, 255, 255, 255, 255, 205, 
	 59,   0,   0,   0,   0,   0,   0,   0, 123, 246, 255, 255, 255, 255, 255, 255, 
	228,  75,   0,   0,   0,   0,   0,   0,   0,  97, 228, 255, 255, 255, 255, 255, 
	255, 250,  97,   0,   0,   0,   0,   0,   0,   0,  73, 209, 255, 255, 255, 255, 
	255, 255, 255, 118,   0,   0,   0,   0,   0,   0,   0,  48, 189, 255, 255, 255, 
	255, 255, 255, 255, 143,  19,   0,   0,   0,   0,   0,   0,  24, 174, 255, 255, 
	255, 255, 255, 255, 255, 169,  38,   0,   0,   0,   0,   0,   0,   2, 154, 255, 
	255, 255, 255, 255, 255, 255, 194,  57,   0,   0,   0,   0,   0,   0,   0, 134, 
	246, 255, 255, 255, 255, 255, 255, 218,  73,   0,   0,   0,   0,   0,   0,   0, 
	109, 230, 255, 255, 255, 255, 255, 255, 238,  93,   0,   0,   0,   0,   0,   0, 
	  0,  80, 212, 255, 255, 255, 255, 255, 255, 255, 109,   2,   0,   0,   0,   0, 
	  0,   0,  58, 191, 255, 255, 255, 255, 255, 255, 255, 132,  16,   0,   0,   0, 
	  0,   0,   0,  36, 172, 255, 255, 255, 255, 255, 255, 255, 158,  36,   0,   0, 
	  0,   0,   0,   0,  14, 156, 255, 255, 255, 255, 255, 255, 255, 182,  54,   0, 
	  0,   0,   0,   0,   0,   0, 141, 249, 255, 255, 255, 255, 255, 255, 203,  69, 
	  0,   0,   0,   0,   0,   0,   0, 117, 229, 255, 255, 255, 255, 255, 255, 225, 
	 89,   0,   0,   0,   0,   0,   0,   0,  95, 215, 255, 255, 255, 255, 255, 255, 
	247, 109,   0,   0,   0,   0,   0,   0,   0,  74, 196, 255, 255, 255, 255, 255, 
	255, 255, 122,  17,   0,   0,   0,   0,   0,   0,  47, 177, 255, 255, 255, 255, 
	255, 255, 255, 144,  33,   0,   0,   0,   0,   0,   0,  28, 161, 255, 255, 255, 
	255, 255, 255, 255, 171,  52,   0,   0,   0,   0,   0,   0,  11, 146, 250, 255, 
	255, 255, 255, 255, 255, 190,  69,   0,   0,   0,   0,   0,   0,   0, 126, 229, 
	255, 255, 255, 255, 255, 255, 213,  89,   0,   0,   0,   0,   0,   0,   0, 105, 
	215, 255, 255, 255, 255, 255, 255, 233, 102,   0,   0,   0,   0,   0,   0,   0, 
	 82, 197, 255, 255, 255, 255, 255, 255, 253, 120,  18,   0,   0,   0,   0,   0, 
	  0,  61, 180, 255, 255, 255, 255, 255, 255, 255, 139,  36,   0,   0,   0,   0, 
	  0,   0,  39, 162, 255, 255, 255, 255, 255, 255, 255, 159,  51,   0,   0,   0, 
	  0,   0,   0,  20, 149, 248, 255, 255, 255, 255, 255, 255, 179,  67,   0,   0, 
	  0,   0,   0,   0,   0, 130, 230, 255, 255, 255, 255, 255, 255, 201,  83,   0, 
	  0,   0,   0,   0,   0,   0, 115, 217, 255, 255, 255, 255, 255, 255, 220,  99, 
	  0,   0,   0,   0,   0,   0,   0,  93, 199, 255, 255, 255, 255, 255, 255, 241, 
	117,  14,   0,   0,   0,   0,   0,   0,  73, 182, 255, 255, 255, 255, 255, 255, 
	255, 130,  33,   0,   0,   0,   0,   0,   0,  53, 169, 255, 255, 255, 255, 255, 
	255, 255, 147,  49,   0,   0,   0,   0,   0,   0,  31, 150, 249, 255, 255, 255, 
	255, 255, 255, 170,  67,   0,   0,   0,   0,   0,   0,  16, 134, 231, 255, 255, 
	255, 255, 255, 255, 189,  81,   0,   0,   0,   0,   0,   0,   0, 118, 216, 255, 
	255, 255, 255, 255, 255, 207,  95,   1,   0,   0,   0,   0,   0,   0, 105, 199, 
	255, 255, 255, 255, 255, 255, 228, 112,  15,   0,   0,   0,   0,   0,   0,  85, 
	186, 255, 255, 255, 255, 255, 255, 248, 127,  31,   0,   0,   0,   0,   0,   0, 
	 66, 172, 255, 255, 255, 255, 255, 255, 255, 142,  46,   0,   0,   0,   0,   0, 
	  0,  46, 154, 250, 255, 255, 255, 255, 255, 255, 158,  65,   0,   0,   0,   0, 
	  0,   0,  28, 138, 232, 255, 255, 255, 255, 255, 255, 174,  77,   0,   0,   0, 
	  0,   0,   0,  10, 126, 218, 255, 255, 255, 255, 255, 255, 197,  94,   0,   0, 
	  0,   0,   0,   0,   0, 107, 202, 255, 255, 255, 255, 255, 255, 215, 109,  17, 
	  0,   0,   0,   0,   0,   0,  94, 187, 255, 255, 255, 255, 255, 255, 232, 126, 
	 32,   0,   0,   0,   0,   0,   0,  73, 171, 255, 255, 255, 255, 255, 255, 250, 
	140,  48,   0,   0,   0,   0,   0,   0,  57, 155, 248, 255, 255, 255, 255, 255, 
	255, 151,  61,   0,   0,   0,   0,   0,   0,  39, 143, 232, 255, 255, 255, 255, 
	255, 255, 167,  75,   0,   0,   0,   0,   0,   0,  23, 129, 222, 255, 255, 255, 
	255, 255, 255, 186,  91,   2,   0,   0,   0,   0,   0,   7, 113, 204, 255, 255, 
	255, 255, 255, 255, 201, 105,  16,   0,   0,   0,   0,   0,   0,  99, 188, 255, 
	255, 255, 255, 255, 255, 217, 119,  29,   0,   0,   0,   0,   0,   0,  84, 176, 
	255, 255, 255, 255, 255, 255, 236, 135,  49,   0,   0,   0,   0,   0,   0,  70, 
	159, 247, 255, 255, 255, 255, 255, 254, 150,  59,   0,   0,   0,   0,   0,   0, 
	 51, 145, 234, 255, 255, 255, 255, 255, 255, 161,  75,   0,   0,   0,   0,   0, 
	  0,  37, 132, 218, 255, 255, 255, 255, 255, 255, 179,  90,   0,   0,   0,   0, 
	  0,   0,  22, 116, 202, 255, 255, 255, 255, 255, 255, 193, 105,  17,   0,   0, 
	  0,   0,   0,   7, 102, 192, 255, 255, 255, 255, 255, 255, 203, 113,  27,   0, 
	  0,   0,   0,   0,   0,  88, 173, 255, 255, 255, 255, 255, 255, 222, 131,  44, 
	  0,   0,   0,   0,   0,   0,  75, 162, 246, 255, 255, 255, 255, 255, 241, 144, 
	 61,   0,   0,   0,   0,   0,   0,  62, 148, 232, 255, 255, 255, 255, 255, 251, 
	157,  71,   0,   0,   0,   0,   0,   0,  47, 132, 218, 255, 255, 255, 255, 255, 
	255, 172,  88,   6,   0,   0,   0,   0,   0,  33, 121, 204, 255, 255, 255, 255, 
	255, 255, 186,  99,  16,   0,   0,   0,   0,   0,  21, 109, 192, 255, 255, 255, 
	255, 255, 255, 199, 115,  30,   0,   0,   0,   0,   0,   5,  92, 176, 255, 255, 
	255, 255, 255, 255, 210, 129,  45,   0,   0,   0,   0,   0,   0,  80, 162, 243, 
	255, 255, 255, 255, 255, 225, 140,  57,   0,   0,   0,   0,   0,   0,  67, 152, 
	235, 255, 255, 255, 255, 255, 240, 154,  73,   0,   0,   0,   0,   0,   0,  53, 
	136, 220, 255, 255, 255, 255, 255, 250, 167,  85,   5,   0,   0,   0,   0,   0, 
	 43, 124, 206, 255, 255, 255, 255, 255, 255, 183,  97,  18,   0,   0,   0,   0, 
	  0,  32, 115, 203, 255, 255, 255, 255, 255, 255, 192,  95,   0,   0,   0,   0, 
	  0,   0,   0,  19, 146, 243, 255, 255, 255, 255, 255, 255, 255, 200,  82,   0, 
	  0,   0,   0,   0,   0,   0,   0,  83, 162, 232, 255, 255, 255, 255, 255, 255, 
	247, 200, 160, 123,  92,  70,  50,  33,  11,   0,   0,   0,   0,   0,   0,   0, 
	  8,  82, 156, 248, 255, 255, 255, 255, 255, 255, 255, 249, 239,  42,   0,   0, 
	  0,   0,   0,   0,   0,   7,  18, 137, 255, 255, 255, 255, 255, 255, 255, 254, 
	242, 172,   0,   0,   0,   0,   0,   0,   0,   0,  15,  67, 255, 255, 255, 255, 
	255, 255, 255, 255, 243, 222,   8,   0,   0,   0,   0,   0,   0,   0,   8,  17, 
	130, 236, 255, 255, 255, 255, 255, 255, 255, 252, 241, 213, 123,  54,   0,   0, 
	  0,   0,   0,   0,   0,   0,   6,  16, 111, 236, 255, 255, 255, 255, 255, 255, 
	255, 250, 239, 118,   0,   0,   0,   0,   0,   0,   0,   0,  14,  58, 255, 255, 
	255, 255, 255, 255, 255, 255, 243, 235,   0,   0,   0,   0,   0,   0,   0,   0, 
	 12,  20, 245, 255, 255, 255, 255, 255, 255, 255, 247, 237,  89,   0,   0,   0, 
	  0,   0,   0,   0,   0,  13,  48, 161, 245, 255, 255, 255, 255, 255, 255, 255, 
	253, 242, 220, 126,  46,   0,   0,   0,   0,   0,   0,   0,   0,   9,  20, 188, 
	255, 255, 255, 255, 255, 255, 255, 255, 242, 194,   0,   0,   0,   0,   0,   0, 
	  0,   0,  12,  20, 250, 255, 255, 255, 255, 255, 255, 255, 245, 236,  42,   0, 
	  0,   0,   0,   0,   0,   0,   8,  17, 163, 255, 255, 255, 255, 255, 255, 255, 
	254, 241, 169,  23,   0,   0,   0,   0,   0,   0,   0,   4,  16,  80, 170, 240, 
	255, 255, 255, 255, 255, 255, 255, 254, 243, 221, 112,  20,   0,   0,   0,   0, 
	  0,   0,   0,   3,  14, 112, 255, 255, 255, 255, 255, 255, 255, 255, 244, 235, 
	 32,   0,   0,   0,   0,   0,   0,   0,   7,  17, 176, 255, 255, 255, 255, 255, 
	255, 255, 250, 239, 120,   0,   0,   0,   0,   0,   0,   0,   1,  14,  92, 255, 
	255, 255, 255, 255, 255, 255, 255, 245, 236,  93,   0,   0,   0,   0,   0,   0, 
	  0,   0,   6,  16,  91, 167, 244, 255, 255, 255, 255, 255, 255, 255, 254, 242, 
	196,  74,   0,   0,   0,   0,   0,   0,   0,   0,  11,  33, 226, 255, 255, 255, 
	255, 255, 255, 255, 250, 239, 103,   0,   0,   0,   0,   0,   0,   0,   2,  15, 
	108, 255, 255, 255, 255, 255, 255, 255, 255, 242, 189,   0,   0,   0,   0,   0, 
	  0,   0,   0,  12,  30, 207, 255, 255, 255, 255, 255, 255, 255, 254, 242, 173, 
	 72,   0,   0,   0,   0,   0,   0,   0,   0,   7,  18,  97, 177, 255, 255, 255, 
	255, 255, 255, 255, 255, 251, 241, 137,  14,   0,   0,   0,   0,   0,   0,   0, 
	  7,  17, 165, 255, 255, 255, 255, 255, 255, 255, 255, 242, 169,   0,   0,   0, 
	  0,   0,   0,   0,   0,  13,  44, 255, 255, 255, 255, 255, 255, 255, 255, 245, 
	236,  40,   0,   0,   0,   0,   0,   0,   0,   4,  16, 129, 250, 255, 255, 255, 
	255, 255, 255, 255, 249, 238, 139,  60,   0,   0,   0,   0,   0,   0,   0,   0, 
	  7,  17, 112, 197, 255, 255, 255, 255, 255, 255, 255, 255, 246, 216,  59,   0, 
	  0,   0,   0,   0,   0,   0,   1,  14, 100, 255, 255, 255, 255, 255, 255, 255, 
	255, 243, 229,   1,   0,   0,   0,   0,   0,   0,   0,   9,  18, 205, 255, 255, 
	255, 255, 255, 255, 255, 251, 239, 118,   0,   0,   0,   0,   0,   0,   0,   0, 
	 12,  57, 184, 255, 255, 255, 255, 255, 255, 255, 255, 247, 222, 125,  55,   0, 
	  0,   0,   0,   0,   0,   0,   0,   9,  21, 143, 234, 255, 255, 255, 255, 255, 
	255, 255, 252, 240, 121,   0,   0,   0,   0,   0,   0,   0,   0,  12,  36, 239, 
	255, 255, 255, 255, 255, 255, 255, 249, 239,  68,   0,   0,   0,   0,   0,   0, 
	  0,   4,  16, 137, 255, 255, 255, 255, 255, 255, 255, 255, 242, 179,  32,   0, 
	  0,   0,   0,   0,   0,   0,   4,  16, 118, 208, 255, 255, 255, 255, 255, 255, 
	255, 255, 245, 208, 116,  40,   0,   0,   0,   0,   0,   0,   0,   0,  11,  69, 
	187, 255, 255, 255, 255, 255, 255, 255, 255, 243, 185,  19,   0,   0,   0,   0, 
	  0,   0,   0,   6,  17, 180, 255, 255, 255, 255, 255, 255, 255, 253, 241, 136, 
	  0,   0,   0,   0,   0,   0,   0,   0,  13,  71, 243, 255, 255, 255, 255, 255, 
	255, 255, 249, 238,  97,   0,   0,   0,   0,   0,   0,   0,   0,   8,  41, 143, 
	219, 255, 255, 255, 255, 255, 255, 255, 255, 244, 188,  94,  12,   0,   0,   0, 
	  0,   0,   0,   0,   5,  16, 136, 249, 255, 255, 255, 255, 255, 255, 255, 248, 
	238,  64,   0,   0,   0,   0,   0,   0,   0,   2,  15, 119, 255, 255, 255, 255, 
	255, 255, 255, 255, 243, 195,  11,   0,   0,   0,   0,   0,   0,   0,   7,  17, 
	184, 255, 255, 255, 255, 255, 255, 255, 255, 242, 167,  59,   0,   0,   0,   0, 
	  0,   0,   0,   0,  11,  71, 160, 238, 255, 255, 255, 255, 255, 255, 255, 253, 
	241, 157,  62,   0,   0,   0,   0,   0,   0,   0,   0,  11,  73, 211, 255, 255, 
	255, 255, 255, 255, 255, 252, 240, 126,   0,   0,   0,   0,   0,   0,   0,   0, 
	 12,  60, 242, 255, 255, 255, 255, 255, 255, 255, 248, 238,  70,   0,   0,   0, 
	  0,   0,   0,   0,   1,  14, 115, 237, 255, 255, 255, 255, 255, 255, 255, 250, 
	233, 114,  33,   0,   0,   0,   0,   0,   0,   0,   1,  14, 101, 179, 255, 255, 
	255, 255, 255, 255, 255, 255, 249, 227, 109,  16,   0,   0,   0,   0,   0,   0, 
	  0,   5,  16, 168, 255, 255, 255, 255, 255, 255, 255, 255, 244, 182,  19,   0, 
	  0,   0,   0,   0,   0,   0,   7,  17, 190, 255, 255, 255, 255, 255, 255, 255, 
	254, 241, 137,   1,   0,   0,   0,   0,   0,   0,   0,   9,  47, 180, 255, 255, 
	255, 255, 255, 255, 255, 255, 246, 185,  90,  12,   0,   0,   0,   0,   0,   0, 
	  0,   5,  25, 129, 206, 255, 255, 255, 255, 255, 255, 255, 255, 244, 170,  59, 
	  0,   0,   0,   0,   0,   0,   0,   0,  14, 109, 242, 255, 255, 255, 255, 255, 
	255, 255, 249, 234,  62,   0,   0,   0,   0,   0,   0,   0,   2,  15, 131, 255, 
	255, 255, 255, 255, 255, 255, 255, 246, 196,  55,   0,   0,   0,   0,   0,   0, 
	  0,   1,  14, 117, 211, 255, 255, 255, 255, 255, 255, 255, 255, 243, 147,  68, 
	  0,   0,   0,   0,   0,   0,   0,   0,   8,  60, 159, 244, 255, 255, 255, 255, 
	255, 255, 255, 250, 228,  94,   0,   0,   0,   0,   0,   0,   0,   0,   8,  60, 
	203, 255, 255, 255, 255, 255, 255, 255, 253, 240, 117,   0,   0,   0,   0,   0, 
	  0,   0,   0,  10,  71, 212, 255, 255, 255, 255, 255, 255, 255, 252, 240, 111, 
	 12,   0,   0,   0,   0,   0,   0,   0,   6,  50, 160, 240, 255, 255, 255, 255, 
	255, 255, 255, 250, 216, 119,  43,   0,   0,   0,   0,   0,   0,   0,   0,  12, 
	111, 203, 255, 255, 255, 255, 255, 255, 255, 255, 243, 143,  34,   0,   0,   0, 
	  0,   0,   0,   0,   4,  16, 164, 255, 255, 255, 255, 255, 255, 255, 255, 245, 
	171,  35,   0,   0,   0,   0,   0,   0,   0,   5,  16, 164, 255, 255, 255, 255, 
	255, 255, 255, 255, 247, 176,  70,   0,   0,   0,   0,   0,   0,   0,   0,  11, 
	 96, 184, 255, 255, 255, 255, 255, 255, 255, 255, 247, 179,  88,   9,   0,   0, 
	  0,   0,   0,   0,   0,   7,  59, 166, 254, 255, 255, 255, 255, 255, 255, 255, 
	248, 196,  72,   0,   0,   0,   0,   0,   0,   0,   0,  12, 110, 228, 255, 255, 
	255, 255, 255, 255, 255, 250, 220,  79,   0,   0,   0,   0,   0,   0,   0,   0, 
	 11,  98, 209, 255, 255, 255, 255, 255, 255, 255, 254, 238, 121,  36,   0,   0, 
	  0,   0,   0,   0,   0,   2,  33, 133, 213, 255, 255, 255, 255, 255, 255, 255, 
	255, 239, 130,  52,   0,   0,   0,   0,   0,   0,   0,   0,  12, 127, 215, 255, 
	255, 255, 255, 255, 255, 255, 253, 237, 107,  12,   0,   0,   0,   0,   0,   0, 
	  0,   7,  65, 188, 255, 255, 255, 255, 255, 255, 255, 255, 243, 133,  30,   0, 
	  0,   0,   0,   0,   0,   0,   4,  45, 161, 247, 255, 255, 255, 255, 255, 255, 
	255, 248, 183,  86,   5,   0,   0,   0,   0,   0,   0,   0,   7,  79, 169, 250, 
	255, 255, 255, 255, 255, 255, 255, 249, 183,  90,   4,   0,   0,   0,   0,   0, 
	  0,   0,   8,  77, 180, 255, 255, 255, 255, 255, 255, 255, 255, 246, 153,  46, 
	  0,   0,   0,   0,   0,   0,   0,   2,  22, 149, 238, 255, 255, 255, 255, 255, 
	255, 255, 250, 187,  79,   0,   0,   0,   0,   0,   0,   0,   0,  10, 103, 194, 
	255, 255, 255, 255, 255, 255, 255, 255, 245, 137,  55,   0,   0,   0,   0,   0, 
	  0,   0,   0,  19, 126, 203, 255, 255, 255, 255, 255, 255, 255, 255, 230, 123, 
	 43,   0,   0,   0,   0,   0,   0,   0,   2,  39, 150, 233, 255, 255, 255, 255, 
	255, 255, 255, 250, 193,  85,   0,   0,   0,   0,   0,   0,   0,   0,   9, 101, 
	195, 255, 255, 255, 255, 255, 255, 255, 255, 240, 126,  43,   0,   0,   0,   0, 
	  0,   0,   0,   1,  43, 145, 225, 255, 255, 255, 255, 255, 255, 255, 252, 196, 
	102,  20,   0,   0,   0,   0,   0,   0,   0,   5,  77, 168, 252, 255, 255, 255, 
	255, 255, 255, 255, 248, 159,  73,   0,   0,   0,   0,   0,   0,   0,   0,  10, 
	120, 198, 255, 255, 255, 255, 255, 255, 255, 255, 226, 121,  42,   0,   0,   0, 
	  0,   0,   0,   0,   1,  52, 151, 232, 255, 255, 255, 255, 255, 255, 255, 251, 
	182,  92,   9,   0,   0,   0,   0,   0,   0,   0,   7,  96, 182, 255, 255, 255, 
	255, 255, 255, 255, 255, 246, 141,  64,   0,   0,   0,   0,   0,   0,   0,   0, 
	 30, 129, 209, 255, 255, 255, 255, 255, 255, 255, 255, 206, 110,  31,   0,   0, 
	  0,   0,   0,   0,   0,   3,  72, 160, 241, 255, 255, 255, 255, 255, 255, 255, 
	249, 162,  81,   0,   0,   0,   0,   0,   0,   0,   0,  11, 115, 191, 255, 255, 
	255, 255, 255, 255, 255, 255, 226, 128,  50,   0,   0,   0,   0,   0,   0,   0, 
	  0,  51, 144, 220, 255, 255, 255, 255, 255, 255, 255, 253, 186,  98,  20,   0, 
	  0,   0,   0,   0,   0,   0,   5,  93, 173, 254, 255, 255, 255, 255, 255, 255, 
	255, 248, 146,  72,   0,   0,   0,   0,   0,   0,   0,   0,  31, 126, 202, 255, 
	255, 255, 255, 255, 255, 255, 255, 207, 115,  40,   0,   0,   0,   0,   0,   0, 
	  0,   1,  71, 155, 229, 255, 255, 255, 255, 255, 255, 255, 252, 166,  89,  12, 
	  0,   0,   0,   0,   0,   0,   0,  10, 111, 184, 255, 255, 255, 255, 255, 255, 
	255, 255, 225, 130,  60,   0,   0,   0,   0,   0,   0,   0,   0,  49, 138, 214, 
	255, 255, 255, 255, 255, 255, 255, 255, 189, 103,  29,   0,   0,   0,   0,   0, 
	  0,   0,   2,  89, 165, 242, 255, 255, 255, 255, 255, 255, 255, 244, 152,  82, 
	  1,   0,   0,   0,   0,   0,   0,   0,  32, 119, 191, 255, 255, 255, 255, 255, 
	255, 255, 255, 209, 121,  52,   0,   0,   0,   0,   0,   0,   0,   0,  65, 146, 
	220, 255, 255, 255, 255, 255, 255, 255, 254, 171,  96,  21,   0,   0,   0,   0, 
	  0,   0,   0,  12, 102, 175, 248, 255, 255, 255, 255, 255, 255, 255, 226, 140, 
	 68,   0,   0,   0,   0,   0,   0,   0,   0,  49, 134, 205, 255, 255, 255, 255, 
	255, 255, 255, 255, 190, 110,  41,   0,   0,   0,   0,   0,   0,   0,   0,  87, 
	158, 228, 255, 255, 255, 255, 255, 255, 255, 245, 154,  88,  13,   0,   0,   0, 
	  0,   0,   0,   0,  30, 114, 184, 255, 255, 255, 255, 255, 255, 255, 255, 209, 
	127,  59,   0,   0,   0,   0,   0,   0,   0,   0,  67, 140, 212, 255, 255, 255, 
	255, 255, 255, 255, 255, 175, 102,  31,   0,   0,   0,   0,   0,   0,   0,  13, 
	 99, 169, 238, 255, 255, 255, 255, 255, 255, 255, 226, 144,  77,   6,   0,   0, 
	  0,   0,   0,   0,   0,  50, 127, 194, 255, 255, 255, 255, 255, 255, 255, 255, 
	189, 116,  48,   0,   0,   0,   0,   0,   0,   0,   2,  84, 150, 223, 255, 255, 
	255, 255, 255, 255, 255, 241, 159,  95,  22,   0,   0,   0,   0,   0,   0,   0, 
	 32, 107, 175, 245, 255, 255, 255, 255, 255, 255, 255, 208, 134,  68,   0,   0, 
	  0,   0,   0,   0,   0,   0,  67, 135, 204, 255, 255, 255, 255, 255, 255, 255, 
	255, 172, 108,  42,   0,   0,   0,   0,   0,   0,   0,  18,  95, 163, 226, 255, 
	255, 255, 255, 255, 255, 255, 223, 148,  83,  16,   0,   0,   0,   0,   0,   0, 
	  0,  48, 120, 188, 254, 255, 255, 255, 255, 255, 255, 255, 190, 125,  56,   0, 
	  0,   0,   0,   0,   0,   0,   4,  82, 144, 210, 255, 255, 255, 255, 255, 255, 
	255, 236, 164,  98,  34,   0,   0,   0,   0,   0,   0,   0,  33, 106, 170, 234, 
	255, 255, 255, 255, 255, 255, 255, 206, 141,  74,   7,   0,   0,   0,   0,   0, 
	  0,   0,  68, 131, 195, 255, 255, 255, 255, 255, 255, 255, 249, 176, 112,  50, 
	  0,   0,   0,   0,   0,   0,   0,  19,  91, 156, 219, 255, 255, 255, 255, 255, 
	255, 255, 222, 153,  88,  27,   0,   0,   0,   0,   0,   0,   0,  53, 117, 180, 
	244, 255, 255, 255, 255, 255, 255, 255, 191, 126,  66,   5,   0,   0,   0,   0, 
	  0,   0,   8,  78, 142, 202, 255, 255, 255, 255, 255, 255, 255, 236, 168, 105, 
	 40,   0,   0,   0,   0,   0,   0,   0,  39, 100, 163, 224, 255, 255, 255, 255, 
	255, 255, 255, 204, 143,  80,  20,   0,   0,   0,   0,   0,   0,   0,  65, 128, 
	188, 249, 255, 255, 255, 255, 255, 255, 246, 180, 121,  59,   0,   0,   0,   0, 
	  0,   0,   0,  27,  88, 149, 210, 255, 255, 255, 255, 255, 255, 255, 217, 156, 
	 93,  35,   0,   0,   0,   0,   0,   0,   0,  51, 113, 171, 232, 255, 255, 255, 
	255, 255, 255, 254, 192, 133,  72,  13,   0,   0,   0,   0,   0,   0,  13,  75, 
	134, 195, 254, 255, 255, 255, 255, 255, 255, 230, 170, 110,  50,   0,   0,   0, 
	  0,   0,   0,   0,  42,  97, 157, 217, 255, 255, 255, 255, 255, 255, 255, 203, 
	146,  88,  31,   0,   0,   0,   0,   0,   0,   5,  61, 121, 182, 236, 255, 255, 
	255, 255, 255, 255, 239, 183, 123,  65,   9,   0,   0,   0,   0,   0,   0,  29, 
	 86, 146, 201, 255, 255, 255, 255, 255, 255, 255, 220, 161, 103,  45,   0,   0, 
	  0,   0,   0,   0,   0,  51, 108, 168, 222, 255, 255, 255, 255, 255, 255, 250, 
	194, 134,  78,  24,   0,   0,   0,   0,   0,   0,  17,  72, 129, 187, 238, 255, 
	255, 255, 255, 255, 255, 226, 173, 116,  57,   7,   0,   0,   0,   0,   0,   0, 
	 38,  95, 151, 205, 255, 255, 255, 255, 255, 255, 255, 208, 151,  92,  41,   0, 
	  0,   0,   0,   0,   0,   7,  58, 116, 172, 223, 255, 255, 255, 255, 255, 255, 
	239, 187, 128,  74,  24,   0,   0,   0,   0,   0,   0,  29,  82, 138, 195, 245, 
	255, 255, 255, 255, 255, 255, 218, 164, 107,  56,   7,   0,   0,   0,   0,   0, 
	  2,  51, 105, 161, 211, 255, 255, 255, 255, 255, 255, 244, 193, 141,  88,  38, 
	  0,   0,   0,   0,   0,   0,  20,  70, 124, 177, 226, 255, 255, 255, 255, 255, 
	255, 226, 174, 121,  70,  22,   0,   0,   0,   0,   0,   0,  40,  91, 144, 195, 
	241, 255, 255, 255, 255, 255, 252, 207, 154, 101,  53,   7,   0,   0,   0,   0, 
	  0,  13,  60, 111, 161, 213, 255, 255, 255, 255, 255, 255, 233, 184, 132,  82, 
	 36,   0,   0,   0,   0,   0,   0,  31,  79, 134, 182, 227, 255, 255, 255, 255, 
	255, 255, 214, 167, 113,  66,  22,   0,   0,   0,   0,   0,   6,  50, 101, 152, 
	199, 244, 255, 255, 255, 255, 255, 239, 196, 145,  95,  49,   7,   0,   0,   0, 
	  0,   0,  23,  68, 120, 166, 212, 255, 255, 255, 255, 255, 255, 222, 178, 126, 
	 79,  35,   0,   0,   0,   0,   0,   3,  42,  90, 137, 184, 228, 255, 255, 255, 
	255, 255, 245, 206, 157, 109,  61,  19,   0,   0,   0,   0,   0,  19,  62, 110, 
	157, 200, 241, 255, 255, 255, 255, 255, 231, 188, 140,  90,  47,   8,   0,   0, 
	  0,   0,   0,  36,  80, 128, 173, 214, 255, 255, 255, 255, 255, 249, 214, 165, 
	122,  74,  32,   0,   0,   0,   0,   0,  14,  53,  99, 145, 188, 228, 255, 255, 
	255, 255, 255, 236, 196, 149, 105,  59,  23,   0,   0,   0,   0,   0,  29,  71, 
	114, 160, 203, 240, 255, 255, 255, 255, 254, 218, 177, 131,  89,  48,  11,   0, 
	  0,   0,   0,  11,  45,  88, 131, 174, 214, 248, 255, 255, 255, 255, 240, 202, 
	160, 114,  76,  32,   2,   0,   0,   0,   0,  24,  62, 104, 149, 191, 229, 255, 
	255, 255, 255, 255, 225, 186, 142,  99,  61,  23,   0,   0,   0,   0,   9,  39, 
	 79, 121, 164, 203, 238, 255, 255, 255, 255, 241, 209, 166, 123,  84,  47,  15, 
	  0,   0,   0,   0,  21,  56,  94, 137, 180, 215, 247, 255, 255, 255, 255, 230, 
	191, 151, 110,  74,  37,   7,   0,   0,   0,   7,  36,  71, 112, 152, 193, 226, 
	251, 255, 255, 255, 245, 214, 175, 134,  99,  59,  24,   1,   0,   0,   0,  19, 
	 51,  86, 127, 165, 201, 234, 255, 255, 255, 255, 232, 198, 159, 121,  83,  46, 
	 18,   0,   0,   0,   5,  32,  66, 104, 142, 181, 214, 241, 255, 255, 255, 244, 
	218, 183, 142, 106,  71,  37,  12,   0,   0,   0,  18,  41,  80, 119, 156, 194, 
	226, 248, 255, 255, 254, 232, 203, 166, 126,  92,  58,  28,   7,   0,   0,   7, 
	 29,  58,  94, 135, 168, 201, 234, 252, 255, 255, 245, 223, 190, 152, 118,  80, 
	 47,  24,   3,   0,   2,  17,  42,  71, 111, 146, 181, 212, 237, 254, 255, 252, 
	236, 208, 175, 141, 107,  72,  38,  17,   2,   0,   9,  28,  54,  88, 125, 158, 
	192, 220, 241, 253, 252, 242, 224, 192, 161, 127,  91,  59,  30,  12,   1,   6, 
	 14,  37,  67, 103, 139, 172, 203, 229, 247, 253, 248, 232, 212, 182, 146, 113, 
	 79,  50,  27,  10,   6,  10,  28,  49,  82, 118, 148, 181, 210, 232, 244, 248, 
	242, 223, 198, 169, 132, 100,  70,  43,  23,  12,  11,  18,  37,  66,  96, 131, 
	163, 193, 221, 236, 244, 243, 232, 214, 187, 154, 121,  90,  59,  33,  18,  12, 
	 12,  27,  50,  77, 109, 140, 171, 200, 223, 238, 242, 237, 224, 203, 172, 142, 
	110,  80,  52,  31,  17,  16,  22,  36,  59,  89, 120, 152, 179, 206, 227, 238, 
	239, 231, 214, 189, 161, 128,  99,  72,  44,  28,  17,  18,  28,  46,  72, 101, 
	132, 162, 192, 216, 231, 240, 236, 221, 203, 177, 146, 117,  88,  62,  40,  27, 
	 23,  24,  37,  57,  83, 114, 145, 171, 197, 220, 228, 233, 229, 216, 194, 164, 
	135, 106,  81,  57,  37,  27,  26,  33,  47,  70,  96, 126, 155, 183, 205, 220, 
	230, 228, 222, 203, 180, 153, 126,  97,  70,  49,  34,  26,  27,  38,  56,  79, 
	110, 137, 161, 187, 209, 222, 227, 223, 214, 195, 169, 144, 116,  92,  65,  46, 
	 34,  29,  34,  47,  64,  92, 116, 146, 173, 192, 213, 223, 226, 219, 205, 183, 
	159, 130, 105,  80,  58,  43,  32,  31,  40,  55,  78, 101, 129, 154, 179, 200, 
	215, 222, 220, 213, 196, 175, 146, 123, 101,  74,  56,  44,  38,  41,  48,  66, 
	 89, 113, 141, 163, 183, 203, 212, 217, 214, 206, 186, 162, 138, 112,  88,  69, 
	 51,  42,  39,  43,  57,  73,  98, 126, 147, 170, 189, 204, 214, 216, 208, 194, 
	176, 152, 128, 106,  84,  63,  51,  42,  43,  50,  62,  85, 109, 132, 154, 176, 
	192, 207, 213, 209, 200, 187, 166, 140, 119,  99,  77,  60,  49,  44,  50,  58, 
	 75,  96, 119, 141, 160, 183, 198, 207, 213, 207, 196, 178, 156, 132, 111,  90, 
	 70,  57,  49,  49,  54,  66,  83, 105, 128, 147, 168, 187, 198, 206, 205, 197, 
	186, 167, 147, 124, 104,  84,  66,  59,  53,  52,  61,  73,  91, 113, 136, 155, 
	175, 190, 198, 203, 202, 195, 178, 160, 137, 117,  97,  79,  64,  58,  53,  58, 
	 70,  82, 103, 124, 143, 161, 178, 191, 199, 202, 198, 184, 171, 151, 130, 111, 
	 92,  75,  62,  58,  58,  63,  72,  91, 107, 130, 146, 164, 181, 193, 198, 196, 
	188, 176, 161, 140, 123, 108,  88,  75,  64,  58,  60,  70,  81,  98, 118, 135, 
	152, 169, 185, 193, 195, 194, 186, 171, 155, 135, 119, 100,  82,  73,  62,  65, 
	 69,  74,  90, 109, 128, 144, 160, 174, 186, 192, 190, 185, 175, 161, 144, 124, 
	109,  93,  80,  72,  67,  66,  72,  84,  98, 115, 133, 148, 163, 175, 182, 189, 
	187, 180, 171, 156, 138, 123, 105,  92,  79,  74,  67,  70,  79,  91, 105, 124, 
	138, 150, 166, 177, 181, 183, 180, 174, 162, 148, 131, 117, 106,  87,  79,  74, 
	 72,  75,  83,  97, 112, 128, 142, 155, 169, 178, 183, 183, 178, 169, 154, 138, 
	126, 113,  98,  86,  79,  73,  73,  82,  91, 104, 120, 134, 146, 159, 171, 178, 
	180, 179, 171, 163, 150, 135, 120, 110,  95,  85,  80,  79,  81,  85,  96, 111, 
	125, 136, 149, 161, 171, 177, 177, 173, 165, 154, 143, 129, 114, 106,  95,  84, 
	 83,  81,  83,  94, 104, 117, 131, 141, 153, 165, 171, 174, 175, 167, 160, 150, 
	137, 123, 113, 101,  90,  88,  86,  86,  89,  96, 110, 122, 134, 143, 155, 166, 
	166, 171, 169, 162, 151, 141, 131, 121, 110, 103,  95,  90,  86,  90,  94, 105, 
	115, 126, 136, 145, 154, 162, 167, 169, 164, 159, 150, 139, 126, 117, 111, 101, 
	 95,  91,  91,  96, 101, 109, 118, 131, 137, 146, 156, 161, 164, 163, 161, 151, 
	142, 131, 123, 117, 109, 100,  95,  95,  95,  99, 105, 116, 125, 134, 139, 148, 
	157, 163, 163, 161, 156, 149, 138, 129, 123, 115, 107, 100,  98,  94,  95, 103, 
	108, 119, 128, 134, 142, 150, 157, 157, 156, 155, 151, 145, 136, 127, 122, 116, 
	105, 101, 100, 101, 102, 107, 117, 126, 132, 135, 143, 149, 152, 156, 154, 151, 
	145, 138, 129, 123, 118, 112, 106, 103, 101, 101, 106, 111, 120, 129, 133, 140, 
	145, 151, 152, 155, 153, 146, 142, 135, 127, 121, 118, 112, 106, 106, 107, 107, 
	110, 116, 122, 129, 135, 139, 143, 148, 150, 148, 146, 142, 136, 132, 126, 122, 
	116, 113, 110, 107, 108, 110, 114, 121, 128, 132, 135, 140, 143, 148, 148, 147, 
	143, 139, 136, 126, 124, 121, 115, 114, 111, 110, 112, 115, 118, 125, 128, 131, 
	136, 140, 143, 142, 143, 141, 139, 136, 130, 127, 124, 121, 117, 116, 114, 114, 
	116, 119, 123, 125, 129, 132, 136, 138, 140, 142, 140, 141, 137, 131, 128, 127, 
	125, 122, 120, 118, 116, 114, 118, 122, 123, 128, 131, 130, 134, 136, 136, 135, 
	134, 135, 134, 132, 128, 127, 127, 123, 121, 121, 122, 122, 121, 124, 128, 129, 
	129, 131, 134, 136, 135, 136, 135, 132, 129, 127, 127, 127, 125, 124, 122, 121, 
	122, 120, 124, 127, 128, 128, 131, 130, 130, 133, 135, 134, 132, 128, 129, 128, 
	126, 127, 127, 127, 127, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 
	128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 
	128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 
	128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 
	128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,

};

Контактная информация:
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»