Программа тритон что это

Программа тритон что это

Программно-аппаратный комплекс «ТРИТОН» предназначен для исследования технических возможностей организации и выявления несанкционированных сеансов связи (недекларируемых возможностей) с использованием стандартных радиоинтерфейсов — GSM-900/1800, CDMA, UMTS (3G), Wi-Max (4G), Blue-Tooth, Wi-Fi, ZigBee, DECT в системе проверки оргтехники.

Приемопередающий модуль с автономным питанием, блоком направленных антенн, в переносном кейсе – 2 шт.
Выносной акустический излучатель – 1 шт.
Управляющий компьютер – 1 шт.
Комплект интерфейсных проводов – 1 шт.
Экранирующая каркасная палатка из радиоткани – 1 шт.

Принцип действия прибора основан на воздействии провоцирующего шумового радиосигнала (на частотах, соответствующих стандартам мобильной связи, а также перечисленным стандартам передачи данных) на исследуемый предмет с последующим анализом реакции на это воздействие.

Задача заключается в том, чтобы шумовым сигналом расстроить синхронизацию закладного устройства, замаскированного под стандартные радиоинтерфейсы, находящиеся под «таймированием», и тем самым заставить выйти его в эфир для поиска утраченных каналов синхронизации. Процесс исследования происходит следующим образом: На месте исследования развертывается палатка из радиоткани, в которой размещается один из автономных переносных модулей, считающийся основным (базовый модуль 1), и исследуемый объект, располагаемый в непосредственной близости от модуля.

Обзор программатора ТРИТОН

Второй модуль (вспомогательный модуль 2) располагается на определенном расстоянии и рассматривается как элемент разнесенного приема. Его цель – отсечь ложное, фоновое излучение и дать возможность однозначно идентифицировать принадлежность излучения к исследуемому объекту. Входящие в состав каждого модуля приемо-передающие блоки настроены на частотные диапазоны, соответствующие радиоинтрефейсам — GSM-900/1800, CDMA, UMTS(3G), Wi-Max(4G), Blue-Tooth, Wi-Fi, ZigBee, DECT.

Базовый модуль формирует шумовой провоцирующий сигнал на соответствующих частотах, как одновременно, так и выборочно, в течение установленного промежутка времени. Затем шумовой сигнал отключается и оба модуля переходят в режим приема с накоплением полученных результатов. По окончании сеанса приема полученные данные от обоих модулей передаются на управляющую ПВЭМ, где происходит их анализ. Формирование помехового сигнала и анализ электромагнитной обстановки могут производиться как последовательно по каждому диапазону, так и параллельно для любого количества диапазонов.

Чувствительность приемников для всех диапазонов не хуже минус 60 dBm.
Максимальная мощность передатчиков:
GSM-900/1800 30 dBm
CDMA 27 dBm
UMTS(3G) 27 dBm
Wi-Max(4G) 27 dBm
Blue-Tooth, Wi -Fi, ZigBee 27 dBm
DECT 27 dBm
Количество градаций регулировки мощности 8
Время приема и накопления от 1 с. до 30 с., с шагом 1 с
Время облучения от 0,5 с. до 10 с., с шагом 100 мкс

Получить профессиональную консультацию технического специалиста
по выбору или настройке оборудования

Наши специалисты всегда готовы помочь вам
с выбором и настройкой оборудования

Источник: xn——6kcabh1aiclcba8bjprxnzch3bl8cg6d.xn--p1ai

Triton: Open Source язык для ядер Deep Learning

Подобный Python Triton уже работает в ядрах, которые в 2 раза эффективнее эквивалентных реализаций Torch. А ядра матричного умножения FP16, сравнимые производительностью с cuBLAS, на Triton займут менее 25 строк. Как утверждает автор, многие программисты не могут написать такие ядра. Подробностями о Triton делимся к старту курса по ML и DL.

Новые исследовательские идеи в области Deep Learning обычно реализуются с помощью комбинации операторов нативного фреймворка. Это удобно, но часто требует создания (и/или перемещения) множества временных тензоров, что может снизить производительность нейросетей в большом масштабе. Проблемы решаются специализированными ядрами для GPU, но написать их может быть удивительно сложно из-за тонкостей программирования на GPU 1 , 2 , 3 .

И, хотя в последнее время появилось множество облегчающих труд систем 4 , 5 , мы обнаружили, что они либо слишком многословны, либо недостаточно гибкие, либо генерируют код заметно медленнее, чем настроенный вручную базовый. Это привело к расширению и улучшению Triton 6 , — нового языка и компилятора, создатель которого сейчас работает в OpenAI.

Проблемы программирования GPU

Архитектура современных GPU условно делится на три основных компонента — DRAM, SRAM и ALU. Оптимизируя код на CUDA, нужно учитывать каждый.

Базовая архитектура GPU.

  • Передачи памяти из DRAM должны быть объединены в большие транзакции, чтобы использовать большую ширину шины современных интерфейсов памяти.
  • Данные должны быть вручную сохранены в SRAM перед повторным использованием и управляться таким образом, чтобы минимизировать конфликты между банками общей памяти при извлечении.
  • Вычисления должны быть разделены и тщательно спланированы как между потоковыми мультипроцессорами (SM), так и внутри них, чтобы способствовать параллелизму на уровне инструкций/потоков и использовать специализированные ALU (например, тензорные ядра).

Учитывать эти факторы может быть сложно даже опытным программистам CUDA. Цель Triton — полностью автоматизировать эти оптимизации, чтобы разработчики сосредоточились на высокоуровневой логике параллельного кода.

Triton стремится к широкому применению, и поэтому не составляет автоматического расписания работы между SM, оставляя некоторые важные алгоритмические соображения (например, тайлинг, синхронизация между SM) на усмотрение разработчиков.

Оптимизация компилятора в CUDA по сравнению с Triton.

CUDA

TRITON

Управление общей памятью

Планирование (внутри SM)

Планирование (по всем SM)

Модель программирования

Из всех доступных доменно-специфических языков и JIT-компиляторов Triton, пожалуй, наиболее похож на Numba: ядра определяются как оформленные функции Python и запускаются параллельно с разными program_id на сетке так называемых instances (инстансов, экземпляров).

Однако, как показано в приведённом ниже фрагменте кода, на этом сходство заканчивается: Triton раскрывает внутриэкземплярный параллелизм через операции над блоками — небольшими массивами, размеры которых равны степени двойки, — вместо модели выполнения Single Instruction, Multiple Thread (SIMT, одна инструкция — много потоков) 7 .

Читайте также:
Программа суБерлинк что это

При этом Triton эффективно абстрагируется от всех проблем, связанных с параллелизмом внутри блоков потоков CUDA (например, объединение памяти, синхронизация/конфликты общей памяти, планирование работы тензорных ядер).

Хотя это может быть не особенно полезно для поэлементных вычислений, подход может значительно упростить разработку более сложных программ на GPU. Рассмотрим, например, случай ядра fused softmax, где каждый экземпляр нормирует отдельную строку заданного входного тензора X∈R M × N .

Стандартные CUDA-реализации этой стратегии распараллеливания могут быть сложными в написании, требуя явной синхронизации между потоками, поскольку они одновременно уменьшают одну и ту же строку XX. Большая часть этой сложности исчезает в Triton, где каждый экземпляр ядра загружает интересующую строку и последовательно нормализует её, используя NumPy-подобные примитивы.

Fused softmax в Triton:

Обратите внимание, что Triton JIT рассматривает X и Y как указатели, а не тензоры; мы чувствовали, что сохранение низкоуровневого контроля доступа к памяти важно в обращении с более сложными структурами данных (например, блочно-рассеянных (block-sparse) тензоров). Важно отметить, что эта конкретная реализация softmax сохраняет строки XX в SRAM на протяжении всего процесса нормализации, что позволяет максимально переиспользовать данные, когда это возможно (~

Иначе дело обстоит во внутреннем коде CUDA PyTorch, чьё использование временной памяти делает его более общим, но значительно более медленным (см. ниже).

Triton упрощает разработку специализированных ядер, которые могут быть намного быстрее ядер в библиотеках общего назначения.

Производительность A100 fused softmax при M=4096

Более низкая производительность Torch (v1.9) JIT подчёркивает сложность автоматической генерации кода CUDA из последовательностей высокоуровневых тензорных операций. Fused softmax на Torch JIT:

Матричное умножение

Возможность писать «слитые» (fused) ядра (ядра с обобщением этапов вычислений) для операций и сокращений по элементам важна, но недостаточна, учитывая, что в нейронных сетях задачи умножения матриц занимают важное место. Как оказалось, Triton отлично подходит и для них, достигая пиковой производительности менее чем в 25 строк Python. С другой стороны, реализация чего-то подобного в CUDA потребует гораздо больше усилий и даже, скорее всего, приведёт к снижению производительности.

Умножение матриц при помощи Triton:

Одним из важных преимуществ рукописных ядер матричного умножения является то, что они могут быть настроены по желанию, чтобы разместить слитые преобразования их входных данных (например, слайсинга) и выходных (например, Leaky ReLU). Без Triton нетривиальные модификации ядер матричного умножения недоступны разработчикам без исключительного опыта программирования GPU.

V100 производительность тензорных ядер при умножении матриц с соответствующим образом настроенными значениями для BLOCK_MM, BLOCK_NN, BLOCK_KK, GROUP_MM.

Обзор архитектуры

Хорошая производительность Triton обусловлена модульной архитектурой системы, в центре которой — Triton-IR, то есть промежуточное представление на основе LLVM, где многомерные блоки значений — это самое важное.

Высокоуровневая архитектура Triton

Код на изображениях выше

def void add(i32* X .aligned(16) , i32* Y .aligned(16) , i32* Z .aligned(16) , i32 N .multipleof(2) ) < entry: %0 = get_program_id[0] i32; %1 = mul i32 %0, 512; %3 = make_range[0 : 512] i32; %4 = splat i32 %1; %6 = add i32 %4, %3; %9 = splat i32 N; %11 = icmp_slt i1 %6, %9; %14 = splat i32* X; %16 = getelementptr i32* %14, %6; %19 = broadcast i1 %11; %21 = splat i32 undef; %22 = masked_load i32 %16, %19, %21; %26 = splat i32* Y; %28 = getelementptr i32* %26, %6; %31 = broadcast i1 %11; %33 = splat i32 undef; %34 = masked_load i32 %28, %31, %33; %38 = splat i32* Z; %40 = getelementptr i32* %38, %6; %43 = add i32 %22, %34; %46 = broadcast i32 %43; %48 = broadcast i1 %11; masked_store void %40, %46, %48; ret void; >

Полученный IR-код затем упрощается, оптимизируется и автоматически распараллеливается нашим бэкендом компилятора, после чего преобразуется в высококачественный LLVM-IR и, в конечном счёте, в PTX для выполнения на новейших графических процессорах NVIDIA.

CPU и GPU AMD сейчас не поддерживаются, но мы приветствуем устраняющий это ограничение код.

Бэкенд компилятора

Мы обнаружили, что использование блочных представлений программ Triton-IR позволяет нашему компилятору автоматически выполнять широкий спектр важных оптимизаций.

Данные могут автоматически укладываться в общую память, просматривая операнды вычислительно интенсивных операций на уровне блоков (например, tl.dot), и выделяться/синхронизироваться с помощью стандартных методов анализа живучести.

Компилятор Triton выделяет общую память, анализируя живой диапазон блочных переменных, задействованных в вычислительно интенсивных операциях.

С другой стороны, программы Triton могут быть эффективно и автоматически распараллелены как (1) между SM — путём одновременного выполнения различных экземпляров ядра, так и (2) внутри SM — путём анализа пространства итераций каждой операции на уровне блоков и адекватного разбиения его на различные SIMD-блоки, как показано ниже.

Автоматическое распараллеливание в Triton. Каждая операция на уровне блоков определяет блочное пространство итераций, которое автоматически распараллеливается для использования ресурсов, доступных на потоковом мультипроцессоре (SM).

Код и крупные иллюстрации

S1 float A[4,4] = . S2 float B[4,4] = . S3 float C[4,4] = A + B
S1 half A[4,2] = . S2 half B[2,2] = . S3 float C[4,2] = dot(A,B)

Выше — определение программы Triton P, состоящей из трёх утверждений S1, S2, S3.

Пространство итерации S3.

Отображение S3 на потоковый мультипроцессор (SM).

Отображение P на GPU.

Заключение

В OpenAI намерены, чтобы проект Triton управлялся сообществом. Свободно форкайте репозиторий на GitHub. Документация Triton находится здесь. Попробовать Triton вы сможете на наших курсах:

  • Курс по Machine Learning и Deep Learning (6 месяцев)
  • Профессия Data Scientist (24 месяца)

А чтобы увидеть, как мы готовим специалистов в других направлениях IT, вы можете перейти на страницы из каталога.

  • Gray, S. (2017). SGEMM Walkthrough. URL. ↩︎
  • Kerr, A. (2020). Developing CUDA kernels to push Tensor Cores to the Absolute Limit on NVIDIA A100. ↩︎
  • Yan, D., Wang, W., Cox, D. (2019, June). Triton: an intermediate language and compiler for tiled neural network computations. In Proceedings of the 3rd ACM SIGPLAN International Workshop on Machine Learning and Programming Languages (pp. 10-19). ↩︎
  • Lin, Y. Zwinkau, A. (2013, March). Simple and efficient construction of static single assignment form. In International Conference on Compiler Construction (pp. 102-122). Springer, Berlin, Heidelberg. ↩︎
Читайте также:
Photograv что за программа

Профессии и курсы

Data Science и Machine Learning

  • Профессия Data Scientist
  • Профессия Data Analyst
  • Курс «Математика для Data Science»
  • Курс «Математика и Machine Learning для Data Science»
  • Курс по Data Engineering
  • Курс «Machine Learning и Deep Learning»
  • Курс по Machine Learning

Python, веб-разработка

  • Профессия Fullstack-разработчик на Python
  • Курс «Python для веб-разработки»
  • Профессия Frontend-разработчик
  • Профессия Веб-разработчик

Мобильная разработка

  • Профессия iOS-разработчик
  • Профессия Android-разработчик

Java и C#

  • Профессия Java-разработчик
  • Профессия QA-инженер на JAVA
  • Профессия C#-разработчик
  • Профессия Разработчик игр на Unity

От основ — в глубину

  • Курс «Алгоритмы и структуры данных»
  • Профессия C++ разработчик
  • Профессия Этичный хакер

А также:

Источник: habr.com

Tryton

28 июля, 2017 0

Tryton – свободная высокоуровневая платформа для разработки приложений, использующая трехуровневую архитектуру, на основании которой создано бизнес-решение (или ERP), представленное с помощью так называемых модулей Tryton.

Платформа Tryton представлена как трехуровневая архитектура: клиент, сервер и СУБД (PostgreSQL, MySQL, SQLite). Платформа вместе с официальными модулями лицензирована по GNU General Public License version 3.

Название «Tryton» программа получила благодаря слиянию двух слов: Тритон, наибольший спутник планеты Нептун, и язык программирования Python.

Tryton начал своё развитие как форк TinyERP версии 4.2 (которая позже стала носить название OpenERP, а ещё позже Odoo). Первая версия была выпущена в ноябре 2008 г., она содержала в себе значительно переработанный код ядра системы и её основных модулей.

В противовес своему родительскому проекту и другим открытым бизнес-программам Tryton отказался от создания партнерской сети, которая стремится внести двойственность и противопоставление между партнерами и сообществом добровольцев. Они наследовали пример PostgreSQL, где проект сопровождается объединением компаний.

Процесс выпуска (релизы) программы организован с помощью серий. Серии – это комплекты релизов с неизменными двумя первыми цифрами (1.0 или 1.2), которые используют одинаковый API и схему баз данных. Новые серии появляются каждые шесть месяцев, а новые версии старых релизов предоставляются после исправления найденных ошибок.

Модули и функциональность Tryton

Официальные модули обеспечивают функциональность следующих областей:

  • Бухгалтерский учёт;
  • Управление закупками;
  • Управление запасами;
  • Управление продажами;
  • Управление проектами;
  • Учёт рабочего времени;
  • Календарь.

Технические возможности Tryton

Клиентская и серверная части программы написаны на Python, клиент также использует GTK+. Обе части доступны на таких платформах, как Microsoft Windows, Linux и Mac OS X. Портативная версия Neso включает в себя как клиента так и сервер.

Ядро программы обеспечивает технические средства нужные большинству бизнес-программ. Однако это не связано с какой-либо частной функциональностью объектов, а формирует основную цель фреймворка:

  • Целостность данных:

обеспечивается объектами, называемыми «модели», они легко создаются, переносятся, дают простой доступ к отдельным атрибутам.

  • Управление пользователями:

Ядро системы включает в себя основные возможности управления пользователями: пользовательские группы, правила доступа к моделям, записям и т. д..

  • Workflow (последовательность работ):

позволяет активировать workflow для любой бизнес-модели.

  • Движок отчетов:

Движок для создания отчётов основан на relatorio, который использует ODT-файлы в качестве шаблонов для генерации отчётов ODT или PDF.

  • Интернационализация:

Tryton доступен на английском, французском, немецком, испанском, итальянском и русском языках. Новые переводы могут быть добавлены непосредственно из клиентской части программы.

  • Ведение истории данных:

Сохранение истории вводимых данных может быть активировано в любой бизнес-модель, что позволяет, к примеру, получить список всех прошлых значение себестоимости любого продукта. Оно также позволяет динамически получать доступ к записям в любой прошедший момент времени: например, информация о клиентах в каждом открытом счёте будет той же, что и на момент его выписки.

  • Поддержка протоколов DAV:

WebDAV, CalDAV и CardDAV позволяют осуществлять управление документооборотом, синхронизацию календарей и контактов.

  • Поддержка XML-RPC, NET-RPC и начиная с версии 1.8 протоколов JSON-RPC.
  • Независимость программы от отдельного сервера баз данных реализована в серии 1.2 и начиная с серии 1.4 для этого используется SQLite, что позволяет работать с портативной версией программы.
  • Возможность работы в режиме множественных серверов с одной базой данных.
  • Встроенный механизм автоматической миграции:

позволяет обновлять существующую схему базы данных не требуя постороннего вмешательства. Миграция гарантируется от серии к серии (релизы относящиеся к различным сериям не поддерживают миграцию). Такая автоматизация является возможной благодаря тому, что процесс миграции учитывается разработчиками, и поэтому тестируется непрерывно с реализацией новых функций.

  • Расширенная модульность:

Модульность позволяет применять многоуровневый подход к бизнес-концепциям, который обеспечивает большую гибкостью, что в свою очередь, ускоряет разработку.

Tryton

Ссылки

Источник: wikiprograms.org

Простой ремонт программатора Тритон V5.7T

У меня есть программатор Тритон версии 5.7Т. Это мой личный программатор, который я использую в свое работе.

Программатор Тритон V5.7T

У данного программатора уже достаточно длительное время такая беда. При работе с программатором через интерфейс USB периодически бессистемно происходит обрыв связи между программатором и компьютером. Для того что бы восстановить связь требуется либо передернуть кабель USB либо выключить-включить питание программатора.
В схемотехнике данного программатора для связи по по интерфейсу USB используется микросхема FT245BL. Поэтому, данную неисправность можно рассматривать не только применительно к данному программатору но и ко всем устройствам, где используется данная микросхема.
Существует две причины, по которым может происходить потеря связи между программатором и компьютером:
Первая причина. Некая сторонняя программа, так же использующая драйвер этой микросхемы в компьютере, постоянно сканирует порты в компьютере, тем самым вызывая потерю связи по USB.
Вторая причина — это собственно неисправность самой микросхемы FT245BL.
Первую причину я отметаю, так как у меня на компьютере установлена новая, свежая операционная система, и не каких других программ, кроме программного обеспечения данного программатора, не установлено.
Поэтому я сразу перейду ко второй причине и поменяю эту микросхему FT245BL на новую.

Читайте также:
Что за программа ходит по экрану

Микросхема FT245BL на плате программатора Тритон V5.7T.

На фотографии платы программатора Тритон V5.7T показано, расположение микросхемы FT245BL, которая неисправна (обведена красным цветом).
После замены микросхемы работа программатора была проверена с микросхемами EEPROM, с микроконтроллерами. Сбоев связи выявлено не было. Программатор отремонтирован.
Если в программаторе Тритон V5.7T или в каком-либо другом устройстве, где используется микросхема FT245BL, наблюдаются сбои связи по интерфейсу USB, то нужно менять микросхему, но при этом нужно обязательно убедится, что сторонние программы не мешают работать драйверу микросхемы FT245BL в компьютере. (Cторонняя программа, так же в своей работе использует драйвер FT245BL. Данная программа, постоянна обращаясь к данному драйверу, ища свое устроство, она будет вызывать сбои связи по интерфейсу USB).

Видео. Простой ремонт программатора Тритон V5.7T.

Посмотреть видео «Простой ремонт программатора Тритон V5.7T» так же можно на видеохостинге RuTube (видео откроется в новом окне браузера).

Источник: engineerpavlov.ru

Универсальный программатор ТРИТОН+V5.7TU (1/1)

Профессиональный скоростной программатор микросхем с USB интерфейсом и возможностью автономной работы. Лучший выбор для использования на серийном производстве, для ремонта и обслуживания аппаратуры в полевых условиях. Высочайшее качество записи микросхем, 100% надежность самого программатора, интуитивно понятный, простой и очень удобный интерфейс пользователя. Оптимизированная схема программатора, современный процессор и скоростной USB интерфейс обеспечивают превосходную скорость работы с микросхемами.

Виртуальный процессор в программаторе и компилятор скрипт файлов в оболочке, позволяют писать свои собственные алгоритмы работы с микросхемами. Система команд виртуального процессора, разработанная с учетом особенностей программирования микросхем, имеет в своем составе функции управления всеми выводами панельки программатора, развитую систему проверки различных условий, комплексные подпрограммы, обеспечивающие включение-выключение питания микросхемы, ввод-вывод данных в последовательном или параллельном виде, работу с файлами, диалог с пользователем, вызов собственных подпрограмм и штатных режимов работы из памяти программатора, что позволяет создавать простой и эффективный код, обеспечивающий высокую скорость работы с микросхемой.

В отличии от предыдущей модели V5.7TM, новый программатор V5.7TU выполнен на 4-слойной плате, что позволило практически полностью убрать собственные шумы программатора, значительно улучшить стабильность работы с микросхемами на больших скоростях и расширить диапазон напряжений поддерживаемых микросхем. Новая скоростная прошивка для USB обеспечивает 3-4 кратное увеличение скорости чтения для микросхем памяти больших объемов (Flash, Nand-flash, SPI-flash).
Программное обеспечение работает со всеми версиями Windows, включая Win8 и Win10 (32 и 64 бит). Для работы в LINUX используется эмулятор Windows — WINE. Программное обеспечение имеет множество различных настроек, определяющих как внешний вид программы, так и порядок работы программатора с программируемыми микросхемами, что позволяет использовать программатор для решения различных задач, таких как тиражирование и отладка. Во время работы с микросхемой программатор постоянно контролирует целостность открытого файла и загружаемых данных, что полностью исключает запись в микросхему неверной информации.

В памяти программатора может быть сохранено: 1018 типов микросхем, 256 файлов и проектов, общим объемом до 4 Мбайт. Программное обеспечение на компьютере позволяет загружать, сортировать, удалять, переименовывать и выгружать файлы, проекты и списки микросхем. В автономном режиме программатор обеспечивает быстрый и удобный выбор любой микросхемы, также имеется режим автоматического определения типа микросхемы. Считанные с микросхемы данные сохраняются в памяти программатора в виде файлов и могут быть записаны в такую же или в любую другую микросхему. Память программатора имеет файловую структуру, что позволяет без использования компьютера, легко выбрать или удалить любой файл, просто пролистав список.

Меню программатора в автономном режиме позволяет выбрать микросхему, файл или проект, разрешить или запретить установку защиты, удалить файл и создать оперативную конфигурацию. Любой из шести автономных режимов работы с микросхемой выбирается и запускается одним нажатием на кнопку. При программировании микросхемы за одно нажатие выполняется полный цикл: стирание и проверка на чистоту, запись основной памяти, одна или две контрольные сверки, запись EEPROM, Fuses и установка защиты. Для удобства работы в режиме тиражирования на дисплей выводится счетчик запрограммированных микросхем.

При загрузке проекта в память программатора, в нем сохраняются все данные о программируемой микросхеме, включая режимы работы, напряжения, адреса, конфигурацию биты защиты и т.д., а также исполняемый код, описывающий алгоритм работы с этой микросхемой. Таким образом, программное обеспечение позволяет не только создать уникальный алгоритм работы с микросхемой, но и работать с ней, используя все возможности программатора.
Программатор ТРИТОН+ V5.7TU выпускается в корпусе черного цвета. Размер программатора – 170х100х23мм. Вес – 235г. Вес в упаковке – 460г (530г с COM кабелем).

Источник: master-tv.net

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru