расчет координат точки на местности используя исходные данные модуля навигатора

Тема в разделе "ПЕСОЧНИЦА", создана пользователем Дед 005, 10 янв 2019.

  1. stout

    stout Форумчанин

    А зачем ему навигационный файл ГЛОНАСС, если алгоритм для GPS?
     
  2. Дед 005

    Дед 005 Форумчанин

    не совсем понял, или, если правильнее расставить слова, ...... Сходил по ссылкам, там файлы с разными расширениями, посмотрел как мне показалось все, - не увидел файла где есть на каждый спутник те переменные, что я использую в вычислениях.
    --- Сообщения объединены, 11 фев 2019, Оригинальное время сообщения: 11 фев 2019 ---
    Вот у меня такие результаты:
    файл SP3.
    2019 2 11 2 15
    PG10 -4236.001426 19163.988727 17856.678884
    PG20 -11704.584987 21701.419721 9579.911955

    * 2019 2 11 2 30
    PG10 -5824.409922 20286.280184 16057.525893
    PG20 -12607.680880 22183.682643 7001.452871

    Мои данные время местное, примерно 9-30
    Спутник 10 -4326, хххх 19910,хххххх ...............
    Спутник 20 -11501,хххх 22331,ххххх ...................

    дробные значения не печатаю здесь, но они есть.


    вот код:
    /////////////////////////////вызывается при совпадении наличия псевдодальности и эфемерид
    void calk_SV(int x) // расчет положения спутника по его эфемеридам
    {
    double Ttr;
    a_bp =
    pow(GP[x].square_big_axis,2); // вычмсляем большую полуось
    n_o = sqrt(gp_earth/(a_bp * a_bp * a_bp)); //
    n = n_o + GP[x].delta_n; // находим среднее движение

    Ttr = t - PR_sv[x] / c; // PR_sv[x] – псевдодальность вычисляемого спутника
    t_k = Ttr - GP[x].
    t_oe; // вычисляем промежуток времени от опорной эпохи эфемерид

    if ( t_k > 302400) // если t больше 302400 секунд, вычтите 604800 секунд из T.
    t_k = t_k - 604800;
    else
    if ( t_k < -302400) // Если T меньше -302400 секунд, добавьте 604800 секунд к T.
    t_k = t_k + 604800;

    M_sr = GP[x].Mo + (n * t_k); // определяем среднюю аномалию
    E1 = M_sr; // начальное условие для вычислений

    for (;;) // находим эксцентрическую аномалию через уравнение Кеплера
    {
    E1 = M_sr + (e *
    sin(GP[x].E_a)); // Kepler_equation(x);
    if(fabs(E1 - GP[x].E_a) > 1e-9)
    GP[x].
    E_a = E1; // E_a - это бывшая E(кампилятор не различает Е и е)
    else
    break;
    }


    v = (atan((sqrt((1 + e)/(1 - e))) * tan(GP[x].E_a/2)))*2;

    nash = v + GP[x].omega; // находим невозмущенный аргумент широты

    sigma_u = GP[x].Cus * sin(2 * nash) + GP[x].Cuc * cos(2 * nash);
    sigma_r = GP[x].
    Crs * sin(2 * nash) + GP[x].Crc * cos(2 * nash);
    sigma_i = GP[x].
    Cis * sin(2 * nash) + GP[x].Cic * cos(2 * nash);

    u_eph = nash + sigma_u;
    r_eph = a_bp * (1 - e *
    cos(GP[x].E_a)) + sigma_r;
    i_eph = GP[x].
    io + sigma_i + GP[x].IDOT * t_k;

    X1 = r_eph * cos(u_eph);
    Y1 = r_eph *
    sin(u_eph);
    Z1 = 0;


    OMEGA_r = GP[x].omega_0 + (GP[x].OMEGADOT - OMEGA_zemli)*t_k - OMEGA_zemli*GP[x].t_oe;

    X_wgs84 = X1 * cos(OMEGA_r)- Y1 * cos(i_eph) * sin(OMEGA_r);
    Y_wgs84 = X1 *
    sin(OMEGA_r)+ Y1 * cos(i_eph) * cos(OMEGA_r);
    Z_wgs84 = Y1 *
    sin(i_eph);

    //// временный кусочек кода
    tft_fill_screen(); // очистить экран
    out_b (x, 4 ,5); // отображение номера спутника для которого будут вычислены параметры
    tftout_shislo_1 (X_wgs84/1000);
    tftout_shislo_2 (Y_wgs84/1000);
    Delay_ms(60);
    }

    ///////////////////////////////////////////////////
     
  3. trir

    trir Форумчанин

    для кода есть специальный тэг - CODE
     
  4. Дед 005

    Дед 005 Форумчанин

    как этим пользоваться???
     
  5. trir

    trir Форумчанин

    там кнопочки есть - для вставки смайликов, ссылок, картинок, а есть кнопочка "код"
     
  6. Дед 005

    Дед 005 Форумчанин

    спасибо. постараюсь воспользоваться........ но может вы по коду скажете что то умное? там правильно все..... или там не правильно все...... или еще варианты есть?
     
  7. stout

    stout Форумчанин

    ftp://cddis.gsfc.nasa.gov/gps/data/daily/2019/042/19n/brdc0420.19n.Z
    описание
    Код:
     +----------------------------------------------------------------------------+
     |                                   TABLE A3                                 |
     |         GPS NAVIGATION MESSAGE FILE - HEADER SECTION DESCRIPTION           |
     +--------------------+------------------------------------------+------------+
     |    HEADER LABEL    |               DESCRIPTION                |   FORMAT   |
     |  (Columns 61-80)   |                                          |            |
     +--------------------+------------------------------------------+------------+
     |RINEX VERSION / TYPE| - Format version (2.10)                  | F9.2,11X,  |
     |                    | - File type ('N' for Navigation data)    |   A1,19X   |
     +--------------------+------------------------------------------+------------+
     |PGM / RUN BY / DATE | - Name of program creating current file  |     A20,   |
     |                    | - Name of agency  creating current file  |     A20,   |
     |                    | - Date of file creation                  |     A20    |
     +--------------------+------------------------------------------+------------+
    *|COMMENT             | Comment line(s)                          |     A60    |*
     +--------------------+------------------------------------------+------------+
    *|ION ALPHA           | Ionosphere parameters A0-A3 of almanac   |  2X,4D12.4 |*
     |                    | (page 18 of subframe 4)                  |            |
     +--------------------+------------------------------------------+------------+
    *|ION BETA            | Ionosphere parameters B0-B3 of almanac   |  2X,4D12.4 |*
     +--------------------+------------------------------------------+------------+
    *|DELTA-UTC: A0,A1,T,W| Almanac parameters to compute time in UTC| 3X,2D19.12,|*
     |                    | (page 18 of subframe 4)                  |     2I9    |
     |                    | A0,A1: terms of polynomial               |            |
     |                    | T    : reference time for UTC data       |      *)    |
     |                    | W    : UTC reference week number.        |            |
     |                    |        Continuous number, not mod(1024)! |            |
     +--------------------+------------------------------------------+------------+
    *|LEAP SECONDS        | Delta time due to leap seconds           |     I6     |*
     +--------------------+------------------------------------------+------------+
     |END OF HEADER       | Last record in the header section.       |    60X     |
     +--------------------+------------------------------------------+------------+
     
                            Records marked with * are optional
     
     
     +----------------------------------------------------------------------------+
     |                                  TABLE A4                                  |
     |           GPS NAVIGATION MESSAGE FILE - DATA RECORD DESCRIPTION            |
     +--------------------+------------------------------------------+------------+
     |    OBS. RECORD     | DESCRIPTION                              |   FORMAT   |
     +--------------------+------------------------------------------+------------+
     |PRN / EPOCH / SV CLK| - Satellite PRN number                   |     I2,    |
     |                    | - Epoch: Toc - Time of Clock             |            |
     |                    |          year (2 digits, padded with 0   |            |
     |                    |                if necessary)             |  1X,I2.2,  |
     |                    |          month                           |   1X,I2,   |
     |                    |          day                             |   1X,I2,   |
     |                    |          hour                            |   1X,I2,   |
     |                    |          minute                          |   1X,I2,   |
     |                    |          second                          |    F5.1,   |
     |                    | - SV clock bias       (seconds)          |  3D19.12   |
     |                    | - SV clock drift      (sec/sec)          |            |
     |                    | - SV clock drift rate (sec/sec2)         |     *)     |
     +--------------------+------------------------------------------+------------+
     | BROADCAST ORBIT - 1| - IODE Issue of Data, Ephemeris          | 3X,4D19.12 |
     |                    | - Crs                 (meters)           |            |
     |                    | - Delta n             (radians/sec)      |            |
     |                    | - M0                  (radians)          |            |
     +--------------------+------------------------------------------+------------+
     | BROADCAST ORBIT - 2| - Cuc                 (radians)          | 3X,4D19.12 |
     |                    | - e Eccentricity                         |            |
     |                    | - Cus                 (radians)          |            |
     |                    | - sqrt(A)             (sqrt(m))          |            |
     +--------------------+------------------------------------------+------------+
     | BROADCAST ORBIT - 3| - Toe Time of Ephemeris                  | 3X,4D19.12 |
     |                    |                       (sec of GPS week)  |            |
     |                    | - Cic                 (radians)          |            |
     |                    | - OMEGA               (radians)          |            |
     |                    | - CIS                 (radians)          |            |
     +--------------------+------------------------------------------+------------+
     | BROADCAST ORBIT - 4| - i0                  (radians)          | 3X,4D19.12 |
     |                    | - Crc                 (meters)           |            |
     |                    | - omega               (radians)          |            |
     |                    | - OMEGA DOT           (radians/sec)      |            |
     +--------------------+------------------------------------------+------------+
     | BROADCAST ORBIT - 5| - IDOT                (radians/sec)      | 3X,4D19.12 |
     |                    | - Codes on L2 channel                    |            |
     |                    | - GPS Week # (to go with TOE)            |            |
     |                    |   Continuous number, not mod(1024)!      |            |
     |                    | - L2 P data flag                         |            |
     +--------------------+------------------------------------------+------------+
     | BROADCAST ORBIT - 6| - SV accuracy         (meters)           | 3X,4D19.12 |
     |                    | - SV health        (bits 17-22 w 3 sf 1) |            |
     |                    | - TGD                 (seconds)          |            |
     |                    | - IODC Issue of Data, Clock              |            |
     +--------------------+------------------------------------------+------------+
     | BROADCAST ORBIT - 7| - Transmission time of message       **) | 3X,4D19.12 |
     |                    |         (sec of GPS week, derived e.g.   |            |
     |                    |    from Z-count in Hand Over Word (HOW)  |            |
     |                    | - Fit interval        (hours)            |            |
     |                    |         (see ICD-GPS-200, 20.3.4.4)      |            |
     |                    |   Zero if not known                      |            |
     |                    | - spare                                  |            |
     |                    | - spare                                  |            |
     +--------------------+------------------------------------------+------------+
     
     **) Adjust the Transmission time of message by -604800 to refer to the
         reported week, if necessary.
     
      *) In order to account for the various compilers, E,e,D, and d are allowed
         letters between the fraction and exponent of all floating point numbers
         in the navigation message files.
         Zero-padded two-digit exponents are required, however.
    
    t – глобальная переменная?
    Вычисление координат "верха" лучше не завязывать на псевдодальность. Т.е. программа вычисления координат спутника (любого) должна зависеть только от времени (по любой разумной шкале) или его аналога.
    --- Сообщения объединены, 11 фев 2019, Оригинальное время сообщения: 11 фев 2019 ---
    Так как сутки ещё не закончились, то навигационный файл периодически обновляется.
    --- Сообщения объединены, 11 фев 2019 ---
    В этих делах принято время давать "по гринвичу", местное время нафиг никому не нужно, если только вы не занимаетесь определением долгот. Да и само понятие "местное время" требует определённых уточнений. Чтобы не лезть в дебри, время лучше давать по шкале GPS или всемирному координированному времени UTC.
     
  8. trir

    trir Форумчанин

    разница 19 секунд?
     
  9. Дед 005

    Дед 005 Форумчанин

    описание что то не понимается....... обведите в этом файле что нибудь. например Crs , что бы начал понимать , где искать, и как понимать формат....

    --- Сообщения объединены, 11 фев 2019, Оригинальное время сообщения: 11 фев 2019 ---
    новосибирск, разница во времени как я понимаю - 7 часов. у меня 9-00, там 2-00.
     
  10. trir

    trir Форумчанин

     
  11. Дед 005

    Дед 005 Форумчанин

    по поводу разницы "19 секунд", - я может недопонимаю. но как мне показалось если "время жизни" эфемерид 15 минут, то я, считая координаты спутника, должен получить значения которые лежат в файле на это время. то есть если посчитаю в 9-10, или в 9-12 то значения должны быть одни и те же, и совпасть с файлом.
     
  12. trir

    trir Форумчанин

    GPS живёт в своём времени
     
    Дед 005 нравится это.
  13. stout

    stout Форумчанин

    Сейчас точность эфемерид в навигационном сообщении лучше 1.5 метров, причем основная ошибка по трансверсали. A Long-term Analysis of the GPS Broadcast Orbit and Clock Error Variations
     
  14. Дед 005

    Дед 005 Форумчанин

    это значит, что в целых числах мои вычисления уж точно должны бы совпадать?.............. с файлом..... Где ошибка?
     
  15. stout

    stout Форумчанин

    http://leapsecond.com/java/gpsclock.htm
    Одна из лучших страничек, если не самая лучшая, по шкалам времени https://www.ucolick.org/~sla/leapsecs/timescales.html
    19 секунд – это разница с TAI.

    Описание (столбец FORMAT) – это фортрановская нотация. Например,
    F9.2,11X, – число простой точности, ширина поля - 9 символов, 2 знака после запятой, затем 11 пробелов.
    A20 – символьное поле шириной 20 символов.
    Код:
     +--------------------+------------------------------------------+------------+
     | BROADCAST ORBIT - 1| - IODE Issue of Data, Ephemeris          | 3X,4D19.12 |
     |                    | - Crs                 (meters)           |            |
     |                    | - Delta n             (radians/sec)      |            |
     |                    | - M0                  (radians)          |            |
     +--------------------+------------------------------------------+------------+
    3 пробела, затем 4 числа double шириной поля 19 и 12 знаков после запятой.
    Остальные строчки – аналогично.
    P.S.
    Заодно можно проверить правильность декодирования фреймов.
    --- Сообщения объединены, 11 фев 2019, Оригинальное время сообщения: 11 фев 2019 ---
    Да кто ж его знает, входных значений я не вижу, кода тоже. Спросил откуда переменная t в операторе
    вы молчите.::biggrin24.gif::
     
    ErnieBoyd и trir нравится это.
  16. Дед 005

    Дед 005 Форумчанин

    я вот про это:
    2 NAVIGATION DATA RINEX VERSION / TYPE
    CCRINEXN V1.6.0 UX CDDIS 11-FEB-19 02:26 PGM / RUN BY / DATE
    IGS BROADCAST EPHEMERIS FILE COMMENT
    0.8382D-08 -0.7451D-08 -0.5960D-07 0.5960D-07 ION ALPHA
    0.8806D+05 -0.1638D+05 -0.1966D+06 0.6554D+05 ION BETA
    -0.186264514923D-08 0.266453525910D-14 319488 2040 DELTA-UTC: A0,A1,T,W
    18 LEAP SECONDS
    END OF HEADER
    1 19 2 11 0 0 0.0- 0.160989351571D-03-0.693489710102D-11 0.000000000000D+00
    0.900000000000D+02 0.141250000000D+02 0.447661504041D-08-0.488271654406D+00
    0.700354576111D-06 0.837390543893D-02 0.587105751038D-05 0.515365682030D+04
    0.864000000000D+05 0.633299350738D-07-0.109884769581D+01 0.147148966789D-06
    0.974178706545D+00 0.271656250000D+03 0.684905223726D+00-0.828427364468D-08
    0.154649298907D-09 0.100000000000D+01 0.204000000000D+04 0.000000000000D+00
    0.280000000000D+01 0.000000000000D+00 0.558793544769D-08 0.900000000000D+02
    0.813480000000D+05 0.400000000000D+01 0.000000000000D+00 0.000000000000D+00

    2 19 2 11 0 0 0.0-0.136601272970D-03-0.989075488178D-11 0.000000000000D+00


    где в этих столбиках цифр найти нужную мне Crs или остальные.........
    --- Сообщения объединены, 11 фев 2019, Оригинальное время сообщения: 11 фев 2019 ---
    Время для расчета у меня берется из сообщения от навигатора,
    B5 62 02 10 - заголовок
    40 01 - размер данных
    C0 7F 77 07 - Время недели измерения по локальному времени приемника. rcvTow \ в мс

    C0 7F 77 07 это и есть t
    t_oe - из файла эфемерид спутника.

     
  17. stout

    stout Форумчанин

    Дано:
    сверхбыстрые эфемериды в формате SP3
    * 2019 2 11 0 30 0.00000000
    PG01 13692.480507 -20362.626145 9584.830824 -161.000753 2 4 8 235 P P
    PG02 -15261.494016 -899.262822 -21105.503768 -136.621949 8 11 8 225 P P
    PG03 19492.344528 -12952.351276 -12524.272973 182.333328 7 9 11 233 P P
    PG05 -25925.158766 1538.517184 -6171.278307 1.062307 11 6 8 142 P P
    PG06 -9939.063604 -13936.841330 -20259.450653 278.416006 6 9 6 250 P P
    PG07 5561.383441 -25386.833729 4331.836586 34.910982 6 5 11 234 P P
    PG08 16746.555142 -2583.630590 20549.144730 -132.280770 8 6 9 307 P P
    PG09 -2505.284424 -20424.154311 -16836.497751 460.255664 11 9 10 185 P P
    PG10 10885.726916 12521.137570 20833.643221 119.208861 12 5 10 204 P P


    навигационное сообщение для 10 спутника

    10 19 2 11 0 0 0.0 0.119221396744D-03-0.738964445190D-11 0.000000000000D+00
    0.530000000000D+02-0.560312500000D+02 0.448268672189D-08-0.251927565154D+01
    -0.293180346489D-05 0.432240834925D-02 0.723637640476D-05 0.515366408348D+04
    0.864000000000D+05-0.931322574616D-08-0.596143988819D-01-0.484287738800D-07
    0.962769973131D+00 0.242750000000D+03-0.275661561130D+01-0.805533553706D-08
    -0.129291099779D-09 0.100000000000D+01 0.204000000000D+04 0.000000000000D+00
    0.200000000000D+01 0.000000000000D+00 0.186264514923D-08 0.530000000000D+02
    0.792180000000D+05 0.400000000000D+01 0.000000000000D+00 0.000000000000D+00


    грязный код
    Код:
    #include <stdio.h>
    #include "float.h"
    #include "math.h"
     
    const double mu = 3.986005E+14;       // WGS 84 value of earth's univ. grav. par.
    const double We    = 7.292115E-5;     // WGS-84 earth rotation rate
    const double Wedot = 7.2921151467E-5; // WGS 84 value of earth's rotation rate
    const double pi = 4*atan(1.0);
    const double tol = 0.1*sqrt(DBL_EPSILON);
     
    int main(int argc, char **argv)
    {
    /*  
    int prn = 10;
    int Year = 2019;
    int Month = 2;
    int Day = 11;
    int hour = 0;
    int minute = 0;
    double sec = 0;
    */
    double Crs = -0.560312500000E+02;
    double dn  = +0.448268672189E-08;
    double M0  = -0.251927565154E+01;
    double Cuc = -0.293180346489E-05;
    double ec  =  0.432240834925E-02;
    double Cus =  0.723637640476E-05;
    double a   =  0.515366408348E+04*0.515366408348E+04;
    double Toe =  0.864000000000E+05;
    double Cic = -0.931322574616E-08;
    double W0  = -0.596143988819E-01;
    double Cis = -0.484287738800E-07;
    double i0  =  0.962769973131E+00;
    double Crc =  0.242750000000E+03;
    double w   = -0.275661561130E+01;
    double Wdot= -0.805533553706E-08;
    double idot= -0.129291099779E-09;
     
    double beta;
    double nu;
    double  n0 = sqrt(mu/(a*a*a));
    double  n  = n0 + dn;
    double T = 1800;
    double M = M0 + n*T;
    double E = M; // start value for E
    double deltaE, sinE, cosE, FK, dFKdE;
    int iter = 0;
    printf("\ntol = %10.2e",tol);
    do {
        sinE = sin(E); cosE = cos(E); //  sincos(E, *sinE, *cosE);
        FK = E - M - ec*sinE;
        dFKdE = 1.0 - ec*cosE;
        deltaE = -FK/dFKdE;
        printf("\niter = %3d  FKepler = %12.2e   deltaE = %12.1e\n", ++iter, FK, deltaE);
        E += deltaE;   
        } while (fabs(deltaE) > tol);
    sinE = sin(E); cosE = cos(E);  
      
    beta = (1.0 + sqrt(1.0 + ec*ec))/ec;
    nu = atan(sinE/(beta - cosE));
    nu += nu + E;
    double phi, du, dr, di, u, r, i, Xdash, Ydash, Wc, X, Y, Z;
    phi = nu + w;
    du = Cuc*cos(2*phi) + Cus*sin(2*phi);
    dr = Crc*cos(2*phi) + Crs*sin(2*phi);
    di = Cic*cos(2*phi) + Cis*sin(2*phi);
     
    u = phi + du;
    r = a*(1 - ec*cos(E)) + dr;
    i = i0 + idot*T + di;
     
    Xdash = r*cos(u);
    Ydash = r*sin(u);
     
    Wc = W0 + (Wdot - Wedot)*T - Wedot*Toe;
     
    X = Xdash*cos(Wc) - Ydash*cos(i)*sin(Wc);
    Y = Xdash*sin(Wc) + Ydash*cos(i)*cos(Wc);
    Z = Ydash*sin(i);
     
    printf("\nPG10   10885726.916         12521137.570         20833643.221");
    printf("\nX = %15.3f  Y = %15.3f  Z = %15.3f\n\n", X, Y, Z);
     
        system("PAUSE");
        return 0;
    }
    
    результат

    Код:
    PG10 10885726.916     12521137.570     20833643.221 
    X =  10885725.043 Y = 12521137.636 Z = 20833642.775
     
    trir и Дед 005 нравится это.
  18. Дед 005

    Дед 005 Форумчанин

    Добрый день. Спасибо. Посмотрел код, Посмотрел исходные данные, "разобрался" с файлом.

    10 19 2 11 0 0 0.0 0.119221396744D-03 -0.738964445190D-11 0.000000000000D+00
    0.530000000000D+02 --------- Crs ----------- ------------- dn------- ------------M0--------
    --------- Cuc-------- ---------- ec-------- ------------Cus------- -------------a--------
    -----------Toe ------------ ---------- Cic-------- ------------- W0------- ----------- Cis-------
    ---------- i0-------- -------- Crc--------- -------------- w-------- ---------- Wdot------
    -----------idot --------- 0.100000000000D+01 0.204000000000D+04 0.000000000000D+00
    0.200000000000D+01 0.000000000000D+00 0.186264514923D-08 0.530000000000D+02
    0.792180000000D+05 0.400000000000D+01 0.000000000000D+00 0.000000000000D+00

    сравнил значения, и понял что часть переменных у меня все таки не совпадают (декодируются неправильно)
    сейчас пытаюсь разобраться почему, но кажется вот увидел что то: В документе написано что то про "дополнение до двух", - я этого не делал. скорее всего - ошибка тут.
     
    Последнее редактирование модератором: 13 фев 2019
  19. Дед 005

    Дед 005 Форумчанин

    1.jpg Добрый день. Кажется разобрался со своей ошибкой декодирования. Не внимательно читал, мои переменные в кадрах передаются в дополнительном коде, поэтому все положительные у меня преобразовывались правильно, - а отрицательные неверно. сейчас, надеюсь, я это исправил. Начал разбираться с Вашим кодом (спасибо за него), вот вопросы появились:
    вот заголовок файла, - и дата его:
    12 февраля 10 спутник время 00
    10 19 2 12 0 0 0.0
    считаю время, которое Вы поставили, - чтобы получить 1800, пришлось выставить время 30 минут.
    почему так? и второе - пробую посчитать время для файла с заголовком
    12 февраля 10 спутник время 6 часов 00
    10 19 2 12 6 0 0.0
    2.jpg
    считаю, и по этому времени (23400) пробую считать координаты. Не получается правильно.
     
  20. stout

    stout Форумчанин

    http://geodesist.ru/resources/gps-date-time-ver-1-0-0-0.19/
    30m – это разность момента на который нам даны "контрольные" координаты в формате SP3 и ближайшим моментом, на который известны "кеплеровы элементы орбиты" и их изменения (эфемериды) из навигационного сообщения (в нашем примере – из файла *.19n).
     
  1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление
  1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление