1. Лучший говнокод

    В номинации:
    За время:
  2. Куча / Говнокод #28047

    0

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    <!DOCTYPE html>
    <html>
    <head>
    	<title>о обезьянках</title>
    	<link rel="stylesheet" type="text/css" href="main.css">
    </head>
    <body>
    <header> <img src="Обезьянки (2).jpg" width="900px" height="300px"></header>
    <div class=nav>
    	<ul  class="nv">
    	<li> <a href=" index.html"> Главная </a></li>
        <li><a href="contact.html">  Контакты </a><li>
    
    	</ul>
    </div>
    <div class=container>
    <div class=menu>
    	<ul>
    		<li><a href="index.html"> Главная</a></li>
    		<li><a href="xxx.html">   Виды</a></li>
    		<li><a href="kor.html">   Кормление</a></li>
            <li><a href="vd.html">   Видео</a></li>
            <li><a href="dom.html">  Обезьянки как домашние животные </a></li> </ul>
    </div>
    <content>
    <p>	Обезьянки – смышленые и энергичные животные, которых люди приручили много веков назад. Да и сейчас желающих завести дома экзотического питомца немало. Однако, если и вас посетило такое желание, учтите, что молодые приматы стоят довольно дорого, требуют особых условий содержания, а также много внимания и заботы со стороны хозяина. Домашнее животное обезьяна – это действительно питомец для тех, кто готов уделять много времени общению и дрессировке любимца.
    
    Породы обезьян для дома есть разные. Предпочтение стоит отдавать тем, которые не вырастают более 1 м и имеют вес до 3-4 кг. Обезьяны имеют острые зубы, цепкие лапки и достаточно сильны, поэтому при проявлении агрессии крупных особей возможны серьезные травмы. 
    
    Самые популярные обезьяны для дома:
    
    игрунки;
    капуцины;
    макаки;
    саймири и др.
    Такие виды домашних обезьян как мартышки и верветки могут позволить себе только опытные заводчики, которые знают, как правильно дрессировать приматов и ухаживать за ними. Эти породы более умные, хорошо поддаются обучению, но и вероятность получить травму, если животное не в духе, гораздо выше, чем при контакте, например, с игрунками</p> <img src=" wr-960.webp" height="300px">
    <p> Можно ли завести дома обезьяну
    Конечно, вы можете завести дома обезьяну. Но сначала подумайте, есть ли возможность обеспечить ей нормальные условия жизни, приближенные к естественной среде обитания, а также полноценное питание.
    
    Обезьяны как домашние животные требуют особых условий содержания. Нужно учитывать, что в природе они много двигаются, поэтому для поддержания хорошего здоровья и настроения нужно обеспечить питомцу возможность бегать и скакать. То есть придется ставить большой вольер или выпускать животное из клетки. Если вы не готовы к этому, лучше отказаться от покупки обезьяны для дома. 
    
    Конечно, вы можете запереть питомца в клетке, но какой тогда смысл заводить обезьянку, если вы сможете наблюдать за ней только через решетку и не будете иметь возможности подержать на руках, погладить, поиграть. 
    
    Также стоит подумать, сможете ли вы найти нужные продукты питания для питомца и приобретать их постоянно. Поищите заранее ветеринарного врача, специализирующегося на приматах, и проконсультируйтесь с ним по вопросам подготовки дома для нового любимца, а также договоритесь о профилактических осмотрах, поинтересуйтесь, какие заболевания характерны для того или иного вида обезьян. </p>
    
     <p>Сложно ли держать обезьяну дома
    Маленькие обезьянки, которые рекомендуются для содержания в доме, очаровательны, но дрессировке они поддаются плохо. Самые смышленые и интересные – макаки – довольно крупные, а другие виды домашних обезьян не слишком склонны выполнять команды хозяина. Их невозможно дрессировать в прямом смысле слова, этот процесс скорее походит на воспитание ребенка: нужно хвалить за хорошее поведение и необидно наказывать за плохое. При этом никаких гарантий, что животное быстро сделает выводы и «исправится», нет.
    
    Еще одна сложность – размещение в доме большой клетки или вольера. Место для клетки должно быть хорошо освещено и защищено от сквозняков. 
    
    Обеспечить питание обезьяны дома сравнительно легко – большинство приматов веганы, некоторые едят насекомых, например, сверчков, а также отварное мясо птиц и яйца. Поэтому главная задача – обеспечить питомцам сбалансированный рацион и проследить, чтобы в меню всегда были цитрусовые и другие продукты, содержащие витамин С, поскольку организм обезьян не способен вырабатывать его самостоятельно. Чистой воды у обезьянки всегда должно быть вдоволь.
    
    Для прогулок вне клетки придется подготовить пространство – хотя бы одну комнату. В ней придется убрать все острые и хрупкие предметы, лекарства, другие вещи, опасные для животного или дорогие вам. Если вы понимаете, что выполнить все эти условия вам по силам – смело отправляйтесь в зоомагазин и выбирайте маленькую обезьяну домашнюю.</p><img src="images.jfif">
    </content>
    </div>
    <footer>©Сайт создала Стефания Евгеньенва. Мой вк https://vk.com/id523061073</footer>
    
    </body>
    </html>

    MAPTbIwKA, 22 Февраля 2022

    Комментарии (32)
  3. JavaScript / Говнокод #27667

    0

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    type int = 1;
    function main() {
        print("try/catch");
    
        let t = 1;
    
        try {
            throw 1;
        } catch (v: int) {
            print("Hello ", v);
            v = t;
        }
    
        assert(v == t);
    
        print("done.");
    }

    Ура ура.. новый говнокод подоспел... это гавно теперь параметры в тело "catch"-а передает

    ASD_77, 14 Сентября 2021

    Комментарии (32)
  4. Си / Говнокод #27559

    +3

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    #include <stdlib.h>
    #include <stdio.h>
    #include <inttypes.h>
    
    #define STRING 0
    #define INTEGER 1
    
    
    #define CAT(x,y) x ## _ ## y
    #define J(x,y)  CAT(x,y)
    
    
    typedef union
    {
      char *J(v, STRING);
      int J(v,INTEGER);
    } Un;
    
    typedef struct
    {
      uint8_t Obj_t;
      Un u;
    } Object;
    
    #define IF_INSTOF(var, t, newvar) \
    if(var.Obj_t == t) \
    { \
      typeof(var.u.J(v,t)) *newvar = &var.u.J(v,t);
    
    int main(void)
    {
      Object obj1 = {STRING, {.J(v,STRING) = "1"}};
      
      IF_INSTOF(obj1,STRING,str)
        printf("String: %s\n", *str);
      }
      else
      {
        printf("Not a string\n");
      }
    
      Object obj2 = {INTEGER, {.J(v,INTEGER) = 1}};
      IF_INSTOF(obj2,INTEGER,i)
        printf("Integer: %d\n", *i);
      }
      else
      {
        printf("Not an Integer\n");
      }
    
      return EXIT_SUCCESS;
    }

    Вот такие смарткасты через препроцессор.

    https://govnokod.ru/27556#comment655527

    j123123, 13 Августа 2021

    Комментарии (32)
  5. JavaScript / Говнокод #27558

    +2

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    function foo(arg: any) {
        if (typeof arg === "string") {
            // We know this is a string now.
            print(arg);
        }
    }
    
    function main() {
        foo("Hello");
        foo(1);    
    
        print("done.");
    }

    наговнокодил

    ASD_77, 13 Августа 2021

    Комментарии (32)
  6. JavaScript / Говнокод #27510

    +2

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    class Animal {
        name: string;
    
        constructor(name: string) {
            this.name = name;
        }
    
        speak() {
            print(`${this.name} makes a noise.`);
        }
    }
    
    class Dog extends Animal {
        constructor(name: string) {
            super(name); // call the super class constructor and pass in the name parameter
        }
    
        speak() {
            print(`${this.name} barks.`);
        }
    }
    
    function main() {
        let d = new Dog("Mitzie");
        d.speak(); // Mitzie barks.
        print(d.name);
    }

    Я вам принес нового говнокода для нового говнокомпилятора.... дамп в следующем посту

    ASD_77, 12 Июля 2021

    Комментарии (32)
  7. C++ / Говнокод #27437

    +1

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    _Return_type_success_(return != false) bool CEnumerateSerial::UsingCreateFile(_Inout_ CPortsArray& ports)
    {
      //Reset the output parameter
      ports.clear();
    
      //Up to 255 COM ports are supported so we iterate through all of them seeing
      //if we can open them or if we fail to open them, get an access denied or general error error.
      //Both of these cases indicate that there is a COM port at that number. 
      for (UINT i=1; i<256; i++)
      {
        //Form the Raw device name
        ATL::CAtlString sPort;
        sPort.Format(_T("\\\\.\\COM%u"), i);
    
        //Try to open the port
        bool bSuccess = false;
        ATL::CHandle port(CreateFile(sPort, GENERIC_READ | GENERIC_WRITE, 0, nullptr, OPEN_EXISTING, 0, nullptr));
        if (port == INVALID_HANDLE_VALUE)
        {
          const DWORD dwError = GetLastError();
    
          //Check to see if the error was because some other app had the port open or a general failure
          if ((dwError == ERROR_ACCESS_DENIED) || (dwError == ERROR_GEN_FAILURE) || (dwError == ERROR_SHARING_VIOLATION) || (dwError == ERROR_SEM_TIMEOUT))
            bSuccess = true;
        }
        else
        {
          //The port was opened successfully
          bSuccess = true;
        }
    
        //Add the port number to the array which will be returned
        if (bSuccess)
    #pragma warning(suppress: 26489)
          ports.push_back(i);
      }
    
      //Return the success indicator
      return true;
    }

    некоторые джавамэны вот таким гордятся

    > Internally the code provides 10 different ways (yes you read that right: Ten)

    еще и выложено под ни с чем не совместимой лицензией

    gologub, 23 Мая 2021

    Комментарии (32)
  8. 1C / Говнокод #27173

    +1

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    Если ЗначениеЗаполнено(Подразделение.Родитель.Родитель.Родитель) Тогда
    		ВышестоящееПодразделение = Подразделение.Родитель.Родитель.Родитель;
    	ИначеЕсли ЗначениеЗаполнено(Подразделение.Родитель.Родитель) Тогда
    		ВышестоящееПодразделение = Подразделение.Родитель.Родитель;
    	ИначеЕсли ЗначениеЗаполнено(Подразделение.Родитель) Тогда
    		ВышестоящееПодразделение = Подразделение.Родитель;
    	Иначе ВышестоящееПодразделение = Подразделение;
    	КонецЕсли;

    Найдем максимально вышестоящее подразделение, ну, до поры - до времени максимальное..

    Stipa, 24 Декабря 2020

    Комментарии (32)
  9. C++ / Говнокод #27170

    0

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    83. 83
    84. 84
    85. 85
    86. 86
    87. 87
    88. 88
    89. 89
    90. 90
    91. 91
    92. 92
    93. 93
    94. 94
    95. 95
    96. 96
    97. 97
    98. 98
    99. 99
    #include <iostream>
    #include <string>
    using namespace std;
    long double opros(char s);
    bool proverka(string stroka, int i, bool (*func)(int, string, bool &));
    bool magia(string stroka, int i, bool (*func)(int, string, bool &));
    int main() {
        long double a;
        for (char i = 'a'; i < 'd'; i++) { a = opros(i);
            cout << "\n\nЗначение:\n" << a << " - корректное!\n";}}
    bool f_break(int i, string s, bool &z){
     return true;}
    bool sub_func_mantissa(int j, string stroka, bool &flag, int &index) {
        switch (stroka[j]) {
            case 'e':
            case 'E':
                if ((flag) or (j == (stroka.length() - 1))) return false;
                flag = true;
                index = j;
                break;
    } return true;
    }
    bool sub_func_vetka1(int j, string stroka, bool &flag) {
        if (stroka[j] == '.') {
            if (flag) return false;
            flag = true;
        }
        return true;
    }
    bool zikl_vetka(string stroka, int i, bool &flag, int &index, bool (*p_base_func)(int, string, bool &), char Drive) {
        int j = 1;
        bool flag_zikla = true;
        for (j += i; j < stroka.length(); j++) {
            if (not (Drive == 'M')) {
                if (not ((flag_zikla) or (p_base_func(j, stroka, flag)))) return false;
                flag_zikla = proverka(stroka, j, f_break);
            } else {
                if (not sub_func_mantissa(j, stroka, flag, index)) return false;
            }
        }
        return true;
    }
    bool vetka1(bool &flag, int i, string stroka) {
       int index;
        return zikl_vetka(stroka, i, flag, index, sub_func_vetka1, 'O');
    }
    bool vetka2_dalshe(int i, string stroka, bool &z) {
        bool flag = false;
        int index;
        return zikl_vetka(stroka, i, flag, index, f_break, 'O');
    }
    bool vetka2(string stroka) {
        return magia(stroka, 1, vetka2_dalshe);
    }
    bool mantissa(string stroka, bool &flag, int &index) {
        return zikl_vetka(stroka, -1, flag, index, f_break, 'M');
    }
    bool Dalshe(int i, string stroka, bool &z) {
        int index_mant;
        bool flag_dot = false;
        bool flag_mant = false;
        if (not mantissa(stroka, flag_mant, index_mant)) return false;
        else {
            if (flag_mant)  {
                string sub1 = stroka.substr(0, index_mant);
                string sub2 = stroka.substr(index_mant+1);
                return (vetka1(flag_dot, i, sub1) and vetka2(sub2));}
            else return vetka1(flag_dot, i, stroka);}}
    bool proverka(string stroka, int i, bool (*func)(int, string, bool &)) {
        cout << " ---> proverka ";
        bool z = true;
        switch (stroka[i]) {
        case '0': case '1': case '2':case '3':case '4': case '5': case '6': case '7': case '8': case '9': return func(i, stroka, z); break;
        default:
            return false;
            break;}}
    bool magia(string stroka, int i, bool (*func)(int, string, bool &)) { //3
        switch (stroka[0]) {
        case '-':
        case '+': if (stroka.length() > 1) return proverka(stroka, i, func);
            else return false; break;
        default:
            return proverka(stroka, 0, func); break;}}
    bool general_proverka(string stroka) {
        return magia(stroka, 1, Dalshe);}
    long double opros(char s) { //1
        string argument;
        cout << "\nВведите значение: " << s << ": ";
        getline(cin, argument);
        if (argument.length() == 0) {
            cout << "Вы не ввели значение!\n";
            return opros(s);
        }
        else if (not general_proverka(argument)) {
            cout << "\n\nНекорректное значение!\n";
            return opros(s);
        }
        else return strtold(argument.c_str(), nullptr);
    }

    Проверяет введённую строку на корректность соответствия символов,
    входящих в тип - long double. Если введённая строка корректна, приводит
    данную строку к типу - long double. Иначе - просит заново ввести значение.

    Westnik_Govnokoda, 21 Декабря 2020

    Комментарии (32)
  10. Си / Говнокод #27067

    −1

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    83. 83
    84. 84
    85. 85
    86. 86
    87. 87
    88. 88
    89. 89
    90. 90
    91. 91
    92. 92
    93. 93
    94. 94
    95. 95
    96. 96
    97. 97
    98. 98
    99. 99
    jsonObj_t *__jsonLoad(const char *_str_json, size_t _len_str_json, jsonErr_t *_error) {
    	jsonObj_t *obj_json = NULL;
    	jsonObj_t *obj_json_children = NULL;	// Тут будет зиждется объект
    	jsonObj_t *obj_json_tmp = NULL;	// Тут будет зиждется объект
    
    	size_t index_in_json_str = 0;
    	size_t len_key = 0;				// Размер извлекаемого ключа
    	size_t len_value = 0;			// Размер извлекаемого значения
    	size_t count_hooks = 0;			// Счётчик скобок, чтобы игнорировать их при чтении объекта
    
    	uint8_t flag_found_separator = 0;		// Флаг чтения ключа
    	uint8_t flag_found_start = 0;	// Флаг начало JSON-объекта
    	// uint8_t flag_found_end = 0;		// Флаг окончания JSON-объекта
    	uint8_t flag_read_key = 0;		// Флаг чтения ключа
    	uint8_t flag_read_force_read = 0;	// Флаг-костыль для ситуаций, когда число последнее в массиве
    	uint8_t flag_read_value = 0;	// Флаг чтения значения
    	uint8_t flag_read_array = 0;	// Флаг чтения и обработки массива
    	uint8_t flag_want_value = 0;	// Флаг ожидания значения
    									// 	(выставляется после успешно прочитанного ключа)
    
    	jsonErr_t json_err = JSON_OK;
    
    	int res = 0;
    
    	jsonValueType_t type_expected_value = JSON_VALUE_NONE;	// Ожидаемы тип считываемого значения
    
    	char chr_open = '\0';
    	char chr_close = '\0';
    
    	const char *ptr_key = NULL;		// Указатель на начало извлекаемого ключа
    	const char *ptr_value = NULL;	// Указатель на начало извлекаемого значения
    
    	if (_error != NULL)
    	{
    		*_error = JSON_OK;
    	}
    
    	for (index_in_json_str = 0; index_in_json_str < _len_str_json; ++index_in_json_str)
    	{
    		// Если начало JSON-объекта не найдено, то пропускать
    		if (flag_found_start == 0)
    		{
    			// Поиск начала JSON-объекта
    			if (_str_json[index_in_json_str] == '{')
    			{
    				flag_found_start = 1;
    			}
    
    			if (_str_json[index_in_json_str] == '[')
    			{
    				flag_found_start = 1;
    				flag_read_array = 1;
    				flag_want_value = 1;
    				flag_found_separator = 1;	// Сразу после знака "[" ожидается значение
    			}
    
    			continue;
    		}
    
    		// Обработка ключа 
    		if ((flag_read_key == 0) &&\
    			(flag_read_value == 0) &&\
    			(flag_want_value == 0) &&\
    			(flag_read_array == 0))
    		{
    			if (((_str_json[index_in_json_str] == '\"') || (_str_json[index_in_json_str] == '\'')))
    			{
    				chr_close = _str_json[index_in_json_str];
    				flag_read_key = 1;	// Флаг начало чтения ключа
    
    				if ((index_in_json_str + 1) != _len_str_json)
    				{
    					ptr_value = (const char *)(_str_json + index_in_json_str + 1);
    					len_value = 1;
    				}
    				else
    				{
    					if (_error != NULL)
    					{
    						*_error = JSON_ERR_BAD_JSON;
    					}
    
    					jsonFree(obj_json);
    					return (NULL);
    				}
    			}
    
    			continue;
    		}
    
    		// Обработка значения
    		if ((flag_want_value == 1) && (flag_read_value == 0))
    		{
    			// Поиск разделителя ключа и значения
    			if (flag_found_separator == 0)
    			{
    				if ((_str_json[index_in_json_str] == ']') && (flag_read_array == 1))
    				{
    					// flag_found_end = 1;

    Либа продакшеновая, эта функция около 470 строк кода, всё не вместилось... Нет, индусов у нас нет, как и ответственного за качество кода тоже) и да это ещё один парсер. Опирается ли он на спецификацию JSON? Нет конечно же, боже упаси, зачем? Зато она прекрасно понимает TRUE как true и FALSE как false, а ваши жалкие либы такого не могут

    viktorokh96, 28 Октября 2020

    Комментарии (32)
  11. Java / Говнокод #26816

    0

    1. 1
    про свинг

    песня про это дело

    MAKAKA, 24 Июля 2020

    Комментарии (32)