<!DOCTYPE html><html lang="ru"><head><meta charSet="utf-8"/><meta charSet="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no, user-scalable=no, viewport-fit=cover"/><link rel="preload" as="image" href="https://mc.yandex.ru/watch/44973232"/><link rel="preload" as="image" href="https://vk.com/rtrg?p=VK-RTRG-410987-bLXUv"/><link rel="preload" as="image" href="https://top-fwz1.mail.ru/counter?id=3316675;js=na"/><link rel="preload" as="image" href="/_next/static/images/img/logo2022_without_text-ad6a01e8608432b9967c441a0f4760b4.svg"/><link rel="preload" as="image" href="/_next/static/images/img/otus-certificate-832bf0e82aba1cde68e7417b12683728.png"/><link rel="preload" as="image" href="/_next/static/images/img/upk-diploma-d6bca6c33b9795bec7d04fb91a431230.png"/><link rel="preload" as="image" href="/_next/static/images/img/light-3dd56d782c43dc1e78b7e0da7bb3fb50.svg"/><link rel="stylesheet" href="/_next/static/css/8cc264f7ea39f5c5.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/369ab862ca923128.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/1eb8edb263c0b31d.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-84c612d5581a179f.js"/><script src="/_next/static/chunks/b6261da7-560230abf0251a57.js" async=""></script><script src="/_next/static/chunks/8868-e3f56a080a5e6bd6.js" async=""></script><script src="/_next/static/chunks/main-app-34258a01f8eeca2d.js" async=""></script><script src="/_next/static/chunks/b57a0ff0-f64b6c8491bc987c.js" async=""></script><script src="/_next/static/chunks/7761-f25228226f9fd7b1.js" async=""></script><script src="/_next/static/chunks/3260-e663d3aeeb454c53.js" async=""></script><script src="/_next/static/chunks/7844-5a1706e76e0167fe.js" async=""></script><script src="/_next/static/chunks/7985-5aa503ef1e488f37.js" async=""></script><script src="/_next/static/chunks/8012-ba13e2afafa1b32c.js" async=""></script><script src="/_next/static/chunks/4944-c0f1c1dc3dd5ddc8.js" async=""></script><script src="/_next/static/chunks/4888-09a084700e30f3b2.js" async=""></script><script src="/_next/static/chunks/2633-d7e691d1179a550f.js" async=""></script><script src="/_next/static/chunks/3242-4559e666a92af915.js" async=""></script><script src="/_next/static/chunks/8308-a718381dbc33cfb4.js" async=""></script><script src="/_next/static/chunks/app/layout-37aaf27e992c5aeb.js" async=""></script><script src="/_next/static/chunks/4419-cfc7a5f44d08cc1b.js" async=""></script><script src="/_next/static/chunks/5632-5ae1d5cde11086be.js" async=""></script><script src="/_next/static/chunks/3118-3c71903ee058260c.js" async=""></script><script src="/_next/static/chunks/7670-88498cb7f740ea45.js" async=""></script><script src="/_next/static/chunks/5873-a84150cef512c203.js" async=""></script><script src="/_next/static/chunks/8212-ad195a1ac639b812.js" async=""></script><script src="/_next/static/chunks/428-b85ac0b1d8ebbe87.js" async=""></script><script src="/_next/static/chunks/9374-dedf9cc8b15c395b.js" async=""></script><script src="/_next/static/chunks/4485-9ab23cf29f3d4493.js" async=""></script><script src="/_next/static/chunks/4089-38c618b1e8038db2.js" async=""></script><script src="/_next/static/chunks/1598-4e9e0a333affae09.js" async=""></script><script src="/_next/static/chunks/7234-0a01e49f09a75afe.js" async=""></script><script src="/_next/static/chunks/1701-caea77cd580b46da.js" async=""></script><script src="/_next/static/chunks/1589-5e9d65a97827bc49.js" async=""></script><script src="/_next/static/chunks/8817-f756b1c7094aa889.js" async=""></script><script src="/_next/static/chunks/3742-cf316c1014abe42c.js" async=""></script><script src="/_next/static/chunks/7624-a0236e3eec1f6b3c.js" async=""></script><script src="/_next/static/chunks/5588-acf8559ddd553204.js" async=""></script><script src="/_next/static/chunks/1613-56d7f10ce9045e21.js" async=""></script><script src="/_next/static/chunks/app/not-found-6846642e53dd56ba.js" async=""></script><script src="/_next/static/chunks/app/error-37bbf3f7388748a0.js" async=""></script><script src="/_next/static/chunks/5408-7304a011593a4e7b.js" async=""></script><script src="/_next/static/chunks/4514-28d343fc6e2d14e0.js" async=""></script><script src="/_next/static/chunks/app/lessons/%5Bslug%5D/page-56f47397b9d2307e.js" async=""></script><link rel="preload" href="https://smartcaptcha.yandexcloud.net/captcha.js?render=onload&onload=onloadFunction" as="script"/><link rel="preload" href="https://store-b2b.ru/tag.js?id=wsse7xcbtr07r1&nomodule" as="script"/><title>Курс «Мобильный разработчик на Flutter»: обучение кроссплатформенной мобильной разработке - ОТУС</title><meta name="description" content="Онлайн-курс по разработке кроссплатформенных мобильных приложений на Flutter: изучите язык Dart, создание интерфейсов, работу с API, состояние приложений. Для мобильных разработчиков под iOS и Android с одной кодовой базой. Записаться на курс «Мобильный разработчик на Flutter» на сайте ОТУС"/><link rel="manifest" href="/site.webmanifest" crossorigin="use-credentials"/><meta name="is_app_seo_default" content="false"/><meta name="vk:image" content="/__new_static__/img/meta-image.png"/><meta name="fb:app_id" content="486413851704844"/><link rel="canonical" href="https://otus.ru/lessons/dart-flutter/"/><meta name="yandex-verification" content="3019a35aeda6b45d"/><meta property="og:title" content="Курс «Мобильный разработчик на Flutter»: обучение кроссплатформенной мобильной разработке - ОТУС"/><meta property="og:description" content="Онлайн-курс по разработке кроссплатформенных мобильных приложений на Flutter: изучите язык Dart, создание интерфейсов, работу с API, состояние приложений. Для мобильных разработчиков под iOS и Android с одной кодовой базой. Записаться на курс «Мобильный разработчик на Flutter» на сайте ОТУС"/><meta property="og:url" content="https://otus.ru/lessons/dart-flutter/"/><meta name="twitter:card" content="summary"/><meta name="twitter:title" content="Курс «Мобильный разработчик на Flutter»: обучение кроссплатформенной мобильной разработке - ОТУС"/><meta name="twitter:description" content="Онлайн-курс по разработке кроссплатформенных мобильных приложений на Flutter: изучите язык Dart, создание интерфейсов, работу с API, состояние приложений. Для мобильных разработчиков под iOS и Android с одной кодовой базой. Записаться на курс «Мобильный разработчик на Flutter» на сайте ОТУС"/><link rel="image_src" href="/__new_static__/img/meta-image.png"/><link rel="shortcut icon" type="image/x-icon" href="/favicon.ico"/><link rel="preload" href="/_next/static/images/img/owl-flight-5d7d1106ce62f5dd4057eb334384e529.gif" as="image"/><link rel="icon" type="image/png" sizes="16x16" href="/_next/static/images/img/favicon-16x16-3dc5220f18624c2a6fd3aa3b081da00a.png"/><link rel="icon" type="image/png" sizes="32x32" href="/_next/static/images/img/favicon-32x32-dd124835ecce421e1bb2c8f849e49a3f.png"/><link rel="apple-touch-icon" href="/_next/static/images/img/apple-touch-icon-a4721dddcfb741a7e41d52e619f3820d.png"/><link rel="apple-touch-icon" sizes="57x57" href="/_next/static/images/img/apple-touch-icon-57x57-92769d5e197783e63f3bb3c8519c8912.png"/><link rel="apple-touch-icon" sizes="60x60" href="/_next/static/images/img/apple-touch-icon-60x60-dfaaf3934bc7ed111c8c306b967afeeb.png"/><link rel="apple-touch-icon" sizes="72x72" href="/_next/static/images/img/apple-touch-icon-72x72-693f0d64a225d5f0fe26ba5d088c8f14.png"/><link rel="apple-touch-icon" sizes="76x76" href="/_next/static/images/img/apple-touch-icon-76x76-f3487d673c3e7ae975cf190fb758ab10.png"/><link rel="apple-touch-icon" sizes="114x114" href="/_next/static/images/img/apple-touch-icon-114x114-98609536fdaa492edede039bdd03cff2.png"/><link rel="apple-touch-icon" sizes="120x120" href="/_next/static/images/img/apple-touch-icon-120x120-169d5a3cf2a78fa8e7dfa780f15abcb7.png"/><link rel="apple-touch-icon" sizes="144x144" href="/_next/static/images/img/apple-touch-icon-144x144-9b1aa25d8b37e9b97af4717495fd71bf.png"/><link rel="apple-touch-icon" sizes="152x152" href="/_next/static/images/img/apple-touch-icon-152x152-e04100124be68d4151efe4eb96227866.png"/><link rel="apple-touch-icon" sizes="180x180" href="/_next/static/images/img/apple-touch-icon-180x180-a4721dddcfb741a7e41d52e619f3820d.png"/><link rel="mask-icon" href="/_next/static/images/img/safari-pinned-tab-9b975a1bbe6e965061daed04a88d48e8.svg" color="#000000"/><meta name="msapplication-TileColor" content="#ffffff"/><meta name="msapplication-TileImage" content="/_next/static/images/img/mstile-144x144-c363ac4f42a2d7656bae44c971f5deab.png"/><script src="https://vk.com/js/api/openapi.js?162" type="text/javascript"></script><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script><style data-styled="" data-styled-version="5.3.10">.iJGzvz{display:inline-block;-webkit-animation-name:rotate;animation-name:rotate;-webkit-animation-duration:1.2s;animation-duration:1.2s;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;-webkit-animation-timing-function:ease;animation-timing-function:ease;will-change:transform;}/*!sc*/
@-webkit-keyframes rotate{0%{-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);}80%{-webkit-transform:rotate(500deg);-ms-transform:rotate(500deg);transform:rotate(500deg);}100%{-webkit-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg);}}/*!sc*/
@keyframes rotate{0%{-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);}80%{-webkit-transform:rotate(500deg);-ms-transform:rotate(500deg);transform:rotate(500deg);}100%{-webkit-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg);}}/*!sc*/
data-styled.g1[id="sc-10qj18o-0"]{content:"iJGzvz,"}/*!sc*/
.bLNTdk{position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}/*!sc*/
data-styled.g2[id="sc-10qj18o-1"]{content:"bLNTdk,"}/*!sc*/
.bmVffP{height:24px;width:24px;position:relative;}/*!sc*/
.kOdeIv{height:48px;width:48px;position:relative;}/*!sc*/
.cvcsLz{height:28px;width:28px;position:relative;}/*!sc*/
.gsweRb{height:88px;width:88px;position:relative;}/*!sc*/
data-styled.g3[id="sc-i28ik1-0"]{content:"bmVffP,kOdeIv,cvcsLz,gsweRb,"}/*!sc*/
.gNVXtU{position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);}/*!sc*/
.gNVXtU > svg{display:block;}/*!sc*/
data-styled.g4[id="sc-i28ik1-1"]{content:"gNVXtU,"}/*!sc*/
.ViUGY{font-family:'Roboto',sans-serif;font-size:18px;line-height:24px;font-weight:700;}/*!sc*/
@media (max-width:1201px){.ViUGY{font-size:16px;line-height:24px;}}/*!sc*/
@media (max-width:751px){.ViUGY{font-size:14px;line-height:20px;}}/*!sc*/
@media (max-width:1201px){.ViUGY{font-weight:700;}}/*!sc*/
@media (max-width:751px){.ViUGY{font-weight:700;}}/*!sc*/
.eMZyoN{font-family:'Roboto',sans-serif;font-size:16px;line-height:24px;font-weight:400;}/*!sc*/
@media (max-width:1201px){.eMZyoN{font-size:16px;line-height:24px;}}/*!sc*/
@media (max-width:751px){.eMZyoN{font-size:14px;line-height:20px;}}/*!sc*/
@media (max-width:1201px){.eMZyoN{font-weight:400;}}/*!sc*/
@media (max-width:751px){.eMZyoN{font-weight:400;}}/*!sc*/
.krJlll{font-family:'Roboto',sans-serif;font-size:18px;line-height:24px;font-weight:400;}/*!sc*/
@media (max-width:1201px){.krJlll{font-size:16px;line-height:24px;}}/*!sc*/
@media (max-width:751px){.krJlll{font-size:16px;line-height:24px;}}/*!sc*/
@media (max-width:1201px){.krJlll{font-weight:400;}}/*!sc*/
@media (max-width:751px){.krJlll{font-weight:400;}}/*!sc*/
.kswXpy{font-family:'IBM Plex Sans','Roboto',sans-serif;font-size:62px;line-height:68px;font-weight:700;}/*!sc*/
@media (max-width:1201px){.kswXpy{font-size:56px;line-height:60px;}}/*!sc*/
@media (max-width:751px){.kswXpy{font-size:32px;line-height:36px;}}/*!sc*/
@media (max-width:1201px){.kswXpy{font-weight:700;}}/*!sc*/
@media (max-width:751px){.kswXpy{font-weight:700;}}/*!sc*/
.enpOeQ{font-family:'IBM Plex Sans','Roboto',sans-serif;font-size:20px;line-height:24px;font-weight:700;}/*!sc*/
@media (max-width:1201px){.enpOeQ{font-size:20px;line-height:24px;}}/*!sc*/
@media (max-width:751px){.enpOeQ{font-size:16px;line-height:20px;}}/*!sc*/
@media (max-width:1201px){.enpOeQ{font-weight:700;}}/*!sc*/
@media (max-width:751px){.enpOeQ{font-weight:700;}}/*!sc*/
.doSDez{font-family:'Roboto',sans-serif;font-size:18px;line-height:24px;font-weight:400;}/*!sc*/
@media (max-width:1201px){.doSDez{font-size:18px;line-height:24px;}}/*!sc*/
@media (max-width:751px){.doSDez{font-size:16px;line-height:24px;}}/*!sc*/
@media (max-width:1201px){.doSDez{font-weight:400;}}/*!sc*/
@media (max-width:751px){.doSDez{font-weight:400;}}/*!sc*/
.jmLQpp{font-family:'IBM Plex Sans','Roboto',sans-serif;font-size:40px;line-height:48px;font-weight:700;}/*!sc*/
@media (max-width:1201px){.jmLQpp{font-size:40px;line-height:48px;}}/*!sc*/
@media (max-width:751px){.jmLQpp{font-size:20px;line-height:24px;}}/*!sc*/
@media (max-width:1201px){.jmLQpp{font-weight:700;}}/*!sc*/
@media (max-width:751px){.jmLQpp{font-weight:700;}}/*!sc*/
.fPZiIk{font-family:'IBM Plex Sans','Roboto',sans-serif;font-size:24px;line-height:28px;font-weight:500;}/*!sc*/
@media (max-width:1201px){.fPZiIk{font-size:24px;line-height:28px;}}/*!sc*/
@media (max-width:751px){.fPZiIk{font-size:18px;line-height:24px;}}/*!sc*/
@media (max-width:1201px){.fPZiIk{font-weight:500;}}/*!sc*/
@media (max-width:751px){.fPZiIk{font-weight:500;}}/*!sc*/
.bTMeHF{font-family:'IBM Plex Sans','Roboto',sans-serif;font-size:52px;line-height:64px;font-weight:700;}/*!sc*/
@media (max-width:1201px){.bTMeHF{font-size:52px;line-height:64px;}}/*!sc*/
@media (max-width:751px){.bTMeHF{font-size:24px;line-height:28px;}}/*!sc*/
@media (max-width:1201px){.bTMeHF{font-weight:700;}}/*!sc*/
@media (max-width:751px){.bTMeHF{font-weight:700;}}/*!sc*/
.gGtEnS{font-family:'IBM Plex Sans','Roboto',sans-serif;font-size:24px;line-height:28px;font-weight:700;}/*!sc*/
@media (max-width:1201px){.gGtEnS{font-size:24px;line-height:28px;}}/*!sc*/
@media (max-width:751px){.gGtEnS{font-size:18px;line-height:24px;}}/*!sc*/
@media (max-width:1201px){.gGtEnS{font-weight:700;}}/*!sc*/
@media (max-width:751px){.gGtEnS{font-weight:700;}}/*!sc*/
.hQBzUY{font-family:'Roboto',sans-serif;font-size:18px;line-height:24px;font-weight:700;}/*!sc*/
@media (max-width:1201px){.hQBzUY{font-size:18px;line-height:24px;}}/*!sc*/
@media (max-width:751px){.hQBzUY{font-size:16px;line-height:24px;}}/*!sc*/
@media (max-width:1201px){.hQBzUY{font-weight:700;}}/*!sc*/
@media (max-width:751px){.hQBzUY{font-weight:700;}}/*!sc*/
.wJZyp{font-family:'Roboto',sans-serif;font-size:14px;line-height:20px;font-weight:400;}/*!sc*/
@media (max-width:1201px){.wJZyp{font-size:12px;line-height:16px;}}/*!sc*/
@media (max-width:751px){.wJZyp{font-size:12px;line-height:16px;}}/*!sc*/
@media (max-width:1201px){.wJZyp{font-weight:400;}}/*!sc*/
@media (max-width:751px){.wJZyp{font-weight:400;}}/*!sc*/
.dvqddq{font-family:'Roboto',sans-serif;font-size:16px;line-height:24px;font-weight:700;}/*!sc*/
@media (max-width:1201px){.dvqddq{font-size:16px;line-height:24px;}}/*!sc*/
@media (max-width:751px){.dvqddq{font-size:14px;line-height:20px;}}/*!sc*/
@media (max-width:1201px){.dvqddq{font-weight:700;}}/*!sc*/
@media (max-width:751px){.dvqddq{font-weight:700;}}/*!sc*/
.iFeEEh{font-family:'Roboto',sans-serif;font-size:14px;line-height:20px;font-weight:700;}/*!sc*/
@media (max-width:1201px){.iFeEEh{font-size:14px;line-height:20px;}}/*!sc*/
@media (max-width:751px){.iFeEEh{font-size:12px;line-height:16px;}}/*!sc*/
@media (max-width:1201px){.iFeEEh{font-weight:700;}}/*!sc*/
@media (max-width:751px){.iFeEEh{font-weight:700;}}/*!sc*/
.iwrrOS{font-family:'Roboto',sans-serif;font-size:14px;line-height:20px;font-weight:400;}/*!sc*/
@media (max-width:1201px){.iwrrOS{font-size:14px;line-height:20px;}}/*!sc*/
@media (max-width:751px){.iwrrOS{font-size:12px;line-height:16px;}}/*!sc*/
@media (max-width:1201px){.iwrrOS{font-weight:400;}}/*!sc*/
@media (max-width:751px){.iwrrOS{font-weight:400;}}/*!sc*/
.ioOegJ{font-family:'IBM Plex Sans','Roboto',sans-serif;font-size:40px;line-height:48px;font-weight:700;}/*!sc*/
@media (max-width:1201px){.ioOegJ{font-size:40px;line-height:48px;}}/*!sc*/
@media (max-width:751px){.ioOegJ{font-size:32px;line-height:36px;}}/*!sc*/
@media (max-width:1201px){.ioOegJ{font-weight:700;}}/*!sc*/
@media (max-width:751px){.ioOegJ{font-weight:700;}}/*!sc*/
.CWfAH{font-family:'Roboto',sans-serif;font-size:16px;line-height:24px;font-weight:400;}/*!sc*/
@media (max-width:1201px){.CWfAH{font-size:14px;line-height:20px;}}/*!sc*/
@media (max-width:751px){.CWfAH{font-size:14px;line-height:20px;}}/*!sc*/
@media (max-width:1201px){.CWfAH{font-weight:400;}}/*!sc*/
@media (max-width:751px){.CWfAH{font-weight:400;}}/*!sc*/
.bDRAny{font-family:'Roboto',sans-serif;font-size:16px;line-height:24px;font-weight:700;}/*!sc*/
@media (max-width:1201px){.bDRAny{font-size:14px;line-height:20px;}}/*!sc*/
@media (max-width:751px){.bDRAny{font-size:16px;line-height:24px;}}/*!sc*/
@media (max-width:1201px){.bDRAny{font-weight:700;}}/*!sc*/
@media (max-width:751px){.bDRAny{font-weight:700;}}/*!sc*/
data-styled.g14[id="sc-1x9oq14-0"]{content:"ViUGY,eMZyoN,krJlll,kswXpy,enpOeQ,doSDez,jmLQpp,fPZiIk,bTMeHF,gGtEnS,hQBzUY,wJZyp,dvqddq,iFeEEh,iwrrOS,ioOegJ,CWfAH,bDRAny,"}/*!sc*/
.igoKuA{-webkit-transition:background 0.2s ease-out,border 0.2s ease-out;transition:background 0.2s ease-out,border 0.2s ease-out;will-change:background,border;overflow:hidden;width:100%;cursor:text;position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;border:1px solid #afafaf;background:#fff;color:#0f0f10;text-align:left;font-family:'Roboto',sans-serif;font-size:18px;line-height:24px;height:56px;border-radius:12px;}/*!sc*/
@media (max-width:1201px){.igoKuA{font-size:18px;line-height:24px;}}/*!sc*/
@media (max-width:751px){.igoKuA{font-size:16px;line-height:24px;}}/*!sc*/
data-styled.g16[id="sc-7tecya-1"]{content:"igoKuA,"}/*!sc*/
.dUXfnG{-webkit-transition:padding 0.2s ease-out,color 0.2s ease-out;transition:padding 0.2s ease-out,color 0.2s ease-out;will-change:padding,color;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;width:100%;max-height:100%;padding:16px 24px;}/*!sc*/
data-styled.g17[id="sc-7tecya-2"]{content:"dUXfnG,"}/*!sc*/
.ewcVbw{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;overflow:hidden;pointer-events:none;top:0;left:0;width:100%;text-overflow:ellipsis;white-space:nowrap;-webkit-transition:font 0.2s ease-out;transition:font 0.2s ease-out;will-change:font;color:#afafaf;}/*!sc*/
data-styled.g18[id="sc-7tecya-3"]{content:"ewcVbw,"}/*!sc*/
.bkPfUD{-webkit-transition:opacity 0.2s ease-out;transition:opacity 0.2s ease-out;will-change:opacity;width:100%;background:transparent;overflow:hidden;text-overflow:ellipsis;margin-top:auto;opacity:0;}/*!sc*/
.bkPfUD::-webkit-input-placeholder{color:#afafaf;}/*!sc*/
.bkPfUD::-moz-placeholder{color:#afafaf;}/*!sc*/
.bkPfUD:-ms-input-placeholder{color:#afafaf;}/*!sc*/
.bkPfUD::placeholder{color:#afafaf;}/*!sc*/
.bkPfUD:disabled{background:transparent;}/*!sc*/
data-styled.g19[id="sc-7tecya-4"]{content:"bkPfUD,"}/*!sc*/
.hzdVAl{display:block;}/*!sc*/
data-styled.g23[id="sc-aobi4b-0"]{content:"hzdVAl,"}/*!sc*/
.gkRIPP{font-family:'Roboto',sans-serif;font-size:16px;line-height:24px;font-weight:400;}/*!sc*/
@media (max-width:1201px){.gkRIPP{font-size:16px;line-height:24px;}}/*!sc*/
@media (max-width:751px){.gkRIPP{font-size:14px;line-height:20px;}}/*!sc*/
@media (max-width:1201px){.gkRIPP{font-weight:400;}}/*!sc*/
@media (max-width:751px){.gkRIPP{font-weight:400;}}/*!sc*/
.eibrwt{font-family:'Roboto',sans-serif;font-size:16px;line-height:24px;font-weight:400;}/*!sc*/
@media (max-width:1201px){.eibrwt{font-size:14px;line-height:20px;}}/*!sc*/
@media (max-width:751px){.eibrwt{font-size:14px;line-height:20px;}}/*!sc*/
@media (max-width:1201px){.eibrwt{font-weight:400;}}/*!sc*/
@media (max-width:751px){.eibrwt{font-weight:400;}}/*!sc*/
.fvUGfA{font-family:'Roboto',sans-serif;font-size:12px;line-height:16px;font-weight:400;}/*!sc*/
@media (max-width:1201px){.fvUGfA{font-size:12px;line-height:16px;}}/*!sc*/
@media (max-width:751px){.fvUGfA{font-size:12px;line-height:16px;}}/*!sc*/
@media (max-width:1201px){.fvUGfA{font-weight:400;}}/*!sc*/
@media (max-width:751px){.fvUGfA{font-weight:400;}}/*!sc*/
data-styled.g26[id="sc-1x9oq14-0-Component"]{content:"gkRIPP,eibrwt,fvUGfA,"}/*!sc*/
.chwycb{padding-right:48px;}/*!sc*/
data-styled.g29[id="sc-1uo0fn1-0"]{content:"chwycb,"}/*!sc*/
.jZoKM{position:absolute;top:50%;right:14px;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);}/*!sc*/
data-styled.g30[id="sc-1uo0fn1-1"]{content:"jZoKM,"}/*!sc*/
.dzJeEt{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg);}/*!sc*/
data-styled.g40[id="sc-1bqzqc9-0"]{content:"dzJeEt,"}/*!sc*/
.cInatB{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;position:relative;}/*!sc*/
.cInatB .swiper{height:100%;}/*!sc*/
.cInatB .swiper-slide{opacity:1;-webkit-transition:opacity 0.2s ease-out;transition:opacity 0.2s ease-out;will-change:opacity;}/*!sc*/
.cInatB .swiper-slide:nth-child(n + 5){opacity:0.3;}/*!sc*/
.haeyZv{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;position:relative;}/*!sc*/
.haeyZv .swiper{height:100%;}/*!sc*/
.haeyZv .swiper-slide{opacity:1;-webkit-transition:opacity 0.2s ease-out;transition:opacity 0.2s ease-out;will-change:opacity;}/*!sc*/
.haeyZv .swiper-slide:nth-child(n + 3){opacity:0.3;}/*!sc*/
.giOpNO{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;position:relative;}/*!sc*/
.giOpNO .swiper{height:100%;}/*!sc*/
.giOpNO .swiper-slide{opacity:1;-webkit-transition:opacity 0.2s ease-out;transition:opacity 0.2s ease-out;will-change:opacity;}/*!sc*/
data-styled.g41[id="sc-1bkbgbz-0"]{content:"cInatB,haeyZv,giOpNO,"}/*!sc*/
.cPJghB{min-width:100%;width:100%;min-height:100%;height:100%;display:block;margin:0 auto;}/*!sc*/
.jssxGI{min-width:100%;width:100%;min-height:100%;height:100%;display:block;margin:0 auto;margin-bottom:56px;}/*!sc*/
@media (min-width:1200px){.jssxGI{margin-bottom:72px;}}/*!sc*/
.ehnata{min-width:100%;width:100%;min-height:100%;height:100%;display:block;margin:0 auto;margin-bottom:68px;}/*!sc*/
data-styled.g42[id="sc-1bkbgbz-1"]{content:"cPJghB,jssxGI,ehnata,"}/*!sc*/
.dQlnjC{-webkit-transition:color 0.2s ease-out,opacity 0.2s ease-out;transition:color 0.2s ease-out,opacity 0.2s ease-out;will-change:color,opacity;width:auto;height:auto;padding:12px;cursor:pointer;-webkit-tap-highlight-color:transparent;background:transparent;color:#fff;}/*!sc*/
@media (min-width:1200px){.dQlnjC:hover{color:#ffd709;}}/*!sc*/
.dQlnjC:disabled{opacity:0.4;pointer-events:none;cursor:default;}/*!sc*/
.gQuSfy{-webkit-transition:color 0.2s ease-out,opacity 0.2s ease-out;transition:color 0.2s ease-out,opacity 0.2s ease-out;will-change:color,opacity;width:auto;height:auto;padding:12px;cursor:pointer;-webkit-tap-highlight-color:transparent;background:transparent;color:#575757;}/*!sc*/
@media (min-width:1200px){.gQuSfy:hover{color:#575757;}}/*!sc*/
.gQuSfy:disabled{opacity:0.4;pointer-events:none;cursor:default;}/*!sc*/
data-styled.g43[id="sc-1bkbgbz-2"]{content:"dQlnjC,gQuSfy,"}/*!sc*/
.iPzpLW{margin:-12px -12px -12px 24px;}/*!sc*/
data-styled.g44[id="sc-1bkbgbz-3"]{content:"iPzpLW,"}/*!sc*/
.biZjNh{margin:-12px 24px -12px -12px;}/*!sc*/
data-styled.g45[id="sc-1bkbgbz-4"]{content:"biZjNh,"}/*!sc*/
.hGKrlu{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;max-width:400px;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}/*!sc*/
data-styled.g46[id="sc-1bkbgbz-5"]{content:"hGKrlu,"}/*!sc*/
.hcbJSK{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:absolute;top:-118px;right:0;}/*!sc*/
.hcbJSK .sc-1bkbgbz-5 > *{background-color:#fff !important;}/*!sc*/
.kFvGjx{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:absolute;-webkit-transform:translateX(50%);-ms-transform:translateX(50%);transform:translateX(50%);bottom:0;right:50%;}/*!sc*/
.kFvGjx .sc-1bkbgbz-5 > *{background-color:#575757 !important;}/*!sc*/
data-styled.g47[id="sc-1bkbgbz-6"]{content:"hcbJSK,kFvGjx,"}/*!sc*/
.ldwIhb{color:#4749c0;position:relative;}/*!sc*/
.ldwIhb:hover{-webkit-text-decoration:underline;text-decoration:underline;}/*!sc*/
.ldwIhb:active{color:#585cff;-webkit-text-decoration:none;text-decoration:none;}/*!sc*/
data-styled.g49[id="sc-1vdp0yy-0"]{content:"ldwIhb,"}/*!sc*/
.eJDLVL{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-transform:rotate( 0deg );-ms-transform:rotate( 0deg );transform:rotate( 0deg );}/*!sc*/
data-styled.g120[id="sc-8zcw6d-0"]{content:"eJDLVL,"}/*!sc*/
.dxxUfg{width:82px;height:auto;}/*!sc*/
data-styled.g179[id="sc-136rsxq-0"]{content:"dxxUfg,"}/*!sc*/
.hERPbJ{-webkit-animation:iJeNST 32s infinite linear;animation:iJeNST 32s infinite linear;-webkit-transform-box:fill-box;-ms-transform-box:fill-box;transform-box:fill-box;-webkit-transform-origin:center;-ms-transform-origin:center;transform-origin:center;will-change:animation,transform;}/*!sc*/
data-styled.g180[id="sc-1gml7ra-0"]{content:"hERPbJ,"}/*!sc*/
.XomuX{overflow:visible;}/*!sc*/
data-styled.g183[id="sc-1gml7ra-3"]{content:"XomuX,"}/*!sc*/
.hOtCic{margin:0 auto;position:relative;}/*!sc*/
@media (min-width:1200px){.hOtCic{max-width:1120px;width:1120px;}}/*!sc*/
@media (max-width:1201px){.hOtCic{max-width:680px;width:680px;}}/*!sc*/
@media (max-width:751px){.hOtCic{max-width:352px;width:352px;}}/*!sc*/
data-styled.g184[id="sc-x072mc-0"]{content:"hOtCic,"}/*!sc*/
.dKnRmO{-webkit-transition:-webkit-transform 0.2s ease-out;-webkit-transition:transform 0.2s ease-out;transition:transform 0.2s ease-out;position:relative;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;z-index:30;position:-webkit-sticky;position:sticky;top:-1px;height:80px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;box-shadow:0 4px 4px rgba(0,0,0,0.05);background:#fff;color:#232323;}/*!sc*/
@media (max-width:1201px){.dKnRmO{height:64px;}}/*!sc*/
@media (max-width:751px){.dKnRmO{height:60px;}}/*!sc*/
data-styled.g185[id="sc-r03h0s-0"]{content:"dKnRmO,"}/*!sc*/
.eFDQwF{font-family:'Roboto',sans-serif;font-size:16px;line-height:24px;font-weight:400;}/*!sc*/
@media (max-width:1201px){.eFDQwF{font-size:16px;line-height:24px;}}/*!sc*/
@media (max-width:751px){.eFDQwF{font-size:14px;line-height:20px;}}/*!sc*/
@media (max-width:1201px){.eFDQwF{font-weight:400;}}/*!sc*/
@media (max-width:751px){.eFDQwF{font-weight:400;}}/*!sc*/
data-styled.g186[id="sc-1x9oq14-0-styled-div"]{content:"eFDQwF,"}/*!sc*/
.bMTmMH{position:unset;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}/*!sc*/
data-styled.g187[id="sc-r03h0s-1"]{content:"bMTmMH,"}/*!sc*/
.iLJJBX{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin:0 89px 0 0;}/*!sc*/
@media (max-width:1201px){.iLJJBX{margin:0 24px 0 0;}}/*!sc*/
data-styled.g188[id="sc-r03h0s-2"]{content:"iLJJBX,"}/*!sc*/
.kVvakX{-webkit-align-self:normal;-ms-flex-item-align:normal;align-self:normal;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}/*!sc*/
data-styled.g189[id="sc-r03h0s-3"]{content:"kVvakX,"}/*!sc*/
.bYKNcH{z-index:0;position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:0 40px 0 0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;}/*!sc*/
@media (max-width:1201px){.bYKNcH{margin:0 24px 0 0;}}/*!sc*/
.bYKNcH::after{-webkit-transition:background 0.2s ease-out;transition:background 0.2s ease-out;will-change:background;content:'';position:absolute;bottom:0;left:0;width:100%;height:4px;background:transparent;}/*!sc*/
.bYKNcH:last-child{margin:0;}/*!sc*/
.cGgLky{z-index:0;position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:0 40px 0 0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;}/*!sc*/
@media (max-width:1201px){.cGgLky{margin:0 24px 0 0;}}/*!sc*/
.cGgLky::after{-webkit-transition:background 0.2s ease-out;transition:background 0.2s ease-out;will-change:background;content:'';position:absolute;bottom:0;left:0;width:100%;height:4px;background:transparent;}/*!sc*/
.cGgLky:hover::after{background:#4749c0;}/*!sc*/
.cGgLky:last-child{margin:0;}/*!sc*/
data-styled.g191[id="sc-r03h0s-5"]{content:"bYKNcH,cGgLky,"}/*!sc*/
.kpxsrg.kpxsrg{z-index:-1;position:absolute;width:615px;height:615px;}/*!sc*/
data-styled.g192[id="sc-r03h0s-6"]{content:"kpxsrg,"}/*!sc*/
.jHaHbB{margin:0 auto 0 0;color:inherit;-webkit-text-decoration:none;text-decoration:none;}/*!sc*/
.jHaHbB:hover{-webkit-text-decoration:none;text-decoration:none;}/*!sc*/
.jHaHbB:active{color:inherit;}/*!sc*/
@media (max-width:1201px){.jHaHbB{display:none;}}/*!sc*/
data-styled.g193[id="sc-r03h0s-7"]{content:"jHaHbB,"}/*!sc*/
.dZepSJ{-webkit-transition:background 0.2s ease-out;transition:background 0.2s ease-out;will-change:background;cursor:pointer;padding:14px 16px;border-radius:20px;}/*!sc*/
@media (min-width:1200px){.dZepSJ:hover{background:#fff;}}/*!sc*/
@media (max-width:1201px){.dZepSJ{padding:10px 0;}}/*!sc*/
.gXNPrh{-webkit-transition:background 0.2s ease-out;transition:background 0.2s ease-out;will-change:background;cursor:pointer;padding:14px 16px;border-radius:20px;font-weight:700;}/*!sc*/
@media (min-width:1200px){.gXNPrh:hover{background:#fff;}}/*!sc*/
@media (max-width:1201px){.gXNPrh{padding:10px 0;}}/*!sc*/
data-styled.g194[id="sc-4zz0i4-0"]{content:"dZepSJ,gXNPrh,"}/*!sc*/
.fXsjgC{margin:0 32px 0 0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:24px;}/*!sc*/
.fXsjgC:last-child{margin:0;}/*!sc*/
@media (max-width:751px){.fXsjgC{margin:0 0 24px;}}/*!sc*/
data-styled.g195[id="sc-1kjc6dh-0"]{content:"fXsjgC,"}/*!sc*/
.bxwCjw{width:100%;margin:0 0 12px;padding:0 0 12px;border-bottom:1px solid #ececec;color:#afafaf;}/*!sc*/
@media (max-width:1201px){.bxwCjw{margin:0 0 24px;padding:0;border-bottom:none;}}/*!sc*/
@media (max-width:751px){.bxwCjw{margin:0 0 8px;}}/*!sc*/
data-styled.g196[id="sc-1kjc6dh-1"]{content:"bxwCjw,"}/*!sc*/
.lhsLfs{display:grid;margin:0 -16px;grid-template-columns:repeat(2,288px);}/*!sc*/
@media (max-width:1201px){.lhsLfs{margin:0;}}/*!sc*/
@media (max-width:751px){.lhsLfs{gap:4px;}}/*!sc*/
.eANJVj{display:grid;margin:0 -16px;grid-template-columns:repeat(1,288px);}/*!sc*/
@media (max-width:1201px){.eANJVj{margin:0;}}/*!sc*/
@media (max-width:751px){.eANJVj{gap:4px;}}/*!sc*/
data-styled.g197[id="sc-1kjc6dh-2"]{content:"lhsLfs,eANJVj,"}/*!sc*/
.LDEpF{background-color:#ececec;border-radius:8px;position:relative;overflow:hidden;color:rgba(0,0,0,0);width:100%;height:100%;position:absolute;top:0;left:0;}/*!sc*/
.iXhGSD{background-color:#ececec;border-radius:8px;position:relative;overflow:hidden;color:rgba(0,0,0,0);}/*!sc*/
data-styled.g198[id="sc-1xopqwy-0"]{content:"LDEpF,iXhGSD,"}/*!sc*/
.jTtOKw{position:relative;display:block;}/*!sc*/
.ePGOOQ{position:static;display:block;}/*!sc*/
data-styled.g199[id="sc-hrqzy3-0"]{content:"jTtOKw,ePGOOQ,"}/*!sc*/
.faPWUN{min-width:100%;width:100%;min-height:100%;height:100%;position:relative;z-index:0;}/*!sc*/
.faPWUN *{opacity:0;pointer-events:none;}/*!sc*/
data-styled.g200[id="sc-hrqzy3-1"]{content:"faPWUN,"}/*!sc*/
.fEESDM{position:absolute;z-index:1;display:none;top:100%;left:0;width:100%;}/*!sc*/
data-styled.g236[id="sc-piuiz2-0"]{content:"fEESDM,"}/*!sc*/
.fDVGGf{z-index:0;-webkit-align-self:baseline;-ms-flex-item-align:baseline;align-self:baseline;overflow:hidden;position:relative;width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding:40px;background:#f8f8f8;box-shadow:0px 16px 16px rgba(0,0,0,0.25);border-radius:0px 0px 20px 20px;}/*!sc*/
@media (min-width:1200px){.fDVGGf{max-width:1200px;margin:0 auto;}}/*!sc*/
@media (max-width:1201px){.fDVGGf{padding:24px 36px;}}/*!sc*/
@media (max-width:751px){.fDVGGf{height:100%;padding:24px 0;border-radius:0;}}/*!sc*/
data-styled.g237[id="sc-piuiz2-1"]{content:"fDVGGf,"}/*!sc*/
.fhxPhf{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}/*!sc*/
data-styled.g238[id="sc-piuiz2-2"]{content:"fhxPhf,"}/*!sc*/
.ggDqfB{right:-101px;top:-105px;bottom:-201px;}/*!sc*/
data-styled.g240[id="sc-1891c19-0"]{content:"ggDqfB,"}/*!sc*/
.dwrtLP{-webkit-transition:color 0.2s ease-out,-webkit-transform 0.2s ease-out;-webkit-transition:color 0.2s ease-out,transform 0.2s ease-out;transition:color 0.2s ease-out,transform 0.2s ease-out;will-change:color,transform;margin:0 0 0 4px;}/*!sc*/
@media (max-width:751px){.dwrtLP{display:none;}}/*!sc*/
data-styled.g241[id="sc-1youhxc-0"]{content:"dwrtLP,"}/*!sc*/
.cMNIlZ{-webkit-transition:font-weight 0.1s ease-out;transition:font-weight 0.1s ease-out;will-change:font-weight;}/*!sc*/
.cMNIlZ::before{content:attr(title);position:relative;display:block;font-weight:700;height:0;overflow:hidden;visibility:hidden;}/*!sc*/
data-styled.g242[id="sc-1youhxc-1"]{content:"cMNIlZ,"}/*!sc*/
@media (min-width:1200px){.gAMwby:hover .sc-1youhxc-0{-webkit-transform:rotate(-180deg);-ms-transform:rotate(-180deg);transform:rotate(-180deg);}.gAMwby:hover .sc-1youhxc-0{color:#4749c0;}}/*!sc*/
.ewISlX:hover .sc-1youhxc-1{font-weight:700;}/*!sc*/
@media (min-width:1200px){.ewISlX:hover .sc-1youhxc-0{-webkit-transform:rotate(-180deg);-ms-transform:rotate(-180deg);transform:rotate(-180deg);}.ewISlX:hover .sc-1youhxc-0{color:#4749c0;}}/*!sc*/
@media (max-width:1201px){.ewISlX{display:none;}}/*!sc*/
data-styled.g243[id="sc-1youhxc-2"]{content:"gAMwby,ewISlX,"}/*!sc*/
.cgYLnJ{grid-auto-flow:column;grid-template-rows:repeat(8,1fr);}/*!sc*/
@media (max-width:751px){.cgYLnJ{grid-auto-flow:row;grid-template-columns:1fr;grid-template-row:unset;}}/*!sc*/
data-styled.g244[id="sc-ig0m9y-0"]{content:"cgYLnJ,"}/*!sc*/
.czpnNJ{-webkit-transition:background 0.2s ease-out,border 0.2s ease-out,opacity 0.2s ease-out,color 0.2s ease-out;transition:background 0.2s ease-out,border 0.2s ease-out,opacity 0.2s ease-out,color 0.2s ease-out;will-change:background,border,opacity,color;cursor:pointer;position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:0 26px;font-weight:700;line-height:24px;min-height:56px;border-radius:20px;font-size:18px;color:#0f0f10;background:#ffd709;width:100%;}/*!sc*/
.czpnNJ:active{color:#0f0f10;}/*!sc*/
.czpnNJ:not(:disabled):hover{background:#ffea7d;-webkit-text-decoration:none;text-decoration:none;}/*!sc*/
.czpnNJ:disabled{cursor:default;color:#afafaf;background:#ececec;pointer-events:none;}/*!sc*/
.bYRRHi{-webkit-transition:background 0.2s ease-out,border 0.2s ease-out,opacity 0.2s ease-out,color 0.2s ease-out;transition:background 0.2s ease-out,border 0.2s ease-out,opacity 0.2s ease-out,color 0.2s ease-out;will-change:background,border,opacity,color;cursor:pointer;position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:0 26px;font-weight:700;line-height:24px;min-height:56px;border-radius:20px;font-size:18px;color:#0f0f10;background:#ffd709;}/*!sc*/
.bYRRHi:active{color:#0f0f10;}/*!sc*/
.bYRRHi:not(:disabled):hover{background:#ffea7d;-webkit-text-decoration:none;text-decoration:none;}/*!sc*/
.bYRRHi:disabled{cursor:default;color:#afafaf;background:#ececec;pointer-events:none;}/*!sc*/
.jBZCRO{-webkit-transition:background 0.2s ease-out,border 0.2s ease-out,opacity 0.2s ease-out,color 0.2s ease-out;transition:background 0.2s ease-out,border 0.2s ease-out,opacity 0.2s ease-out,color 0.2s ease-out;will-change:background,border,opacity,color;cursor:pointer;position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:0 26px;font-weight:700;line-height:24px;min-height:56px;border-radius:20px;font-size:18px;color:#fff;background:#232323;}/*!sc*/
.jBZCRO:active{color:#fff;}/*!sc*/
.jBZCRO:not(:disabled):hover{color:#ffd709;background:#0f0f10;-webkit-text-decoration:none;text-decoration:none;}/*!sc*/
.jBZCRO:disabled{cursor:default;color:#afafaf;background:#ececec;pointer-events:none;}/*!sc*/
data-styled.g249[id="sc-1qig7zt-0"]{content:"czpnNJ,bYRRHi,jBZCRO,"}/*!sc*/
.eDycrR{pointer-events:none;}/*!sc*/
data-styled.g257[id="sc-gqclrv-0"]{content:"eDycrR,"}/*!sc*/
@media (max-width:751px){.rcsBI{display:none;}}/*!sc*/
data-styled.g258[id="sc-gqclrv-1"]{content:"rcsBI,"}/*!sc*/
.cwTwwh{min-width:32px;width:32px;min-height:32px;height:32px;margin:0 8px 0 0;border-radius:50%;overflow:hidden;}/*!sc*/
@media (max-width:1201px){.cwTwwh{min-width:28px;width:28px;min-height:28px;height:28px;margin:0 4px 0 0;}}/*!sc*/
@media (max-width:751px){.cwTwwh{margin:0;}}/*!sc*/
data-styled.g259[id="sc-199a3eq-1-div"]{content:"cwTwwh,"}/*!sc*/
.deZXFK{-webkit-align-self:normal;-ms-flex-item-align:normal;align-self:normal;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin:0 0 0 auto;}/*!sc*/
data-styled.g302[id="sc-1pw2hu9-0"]{content:"deZXFK,"}/*!sc*/
.gnDzft{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;cursor:pointer;position:static;-webkit-tap-highlight-color:transparent;}/*!sc*/
data-styled.g303[id="sc-k2vhmo-0"]{content:"gnDzft,"}/*!sc*/
.cYMYSf{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:100%;color:#232323;}/*!sc*/
.cYMYSf:hover{color:#4749c0;}/*!sc*/
data-styled.g304[id="sc-k2vhmo-1"]{content:"cYMYSf,"}/*!sc*/
.etPPJE{-webkit-transition:color 0.2s ease-out;transition:color 0.2s ease-out;will-change:color;}/*!sc*/
data-styled.g305[id="sc-k2vhmo-2"]{content:"etPPJE,"}/*!sc*/
.dMvvUT{position:relative;padding:13px 0 29px;margin-bottom:-16px;background:linear-gradient(90deg,#a34fc6 0%,#5354e4 100%);color:#fff;overflow:hidden;}/*!sc*/
@media (max-width:1201px){.dMvvUT{padding:12px 16px 28px;}}/*!sc*/
@media (max-width:751px){.dMvvUT{padding:9px 15px 25px;}}/*!sc*/
.dMvvUT .before-header-ui__ellipse1{position:absolute;left:-147px;top:-387px;width:854px;height:854px;opacity:0.2;-webkit-filter:blur(12px);filter:blur(12px);background:radial-gradient( 50% 50% at 50% 50%,#f6cae3 0%,rgba(246,202,227,0) 100% );}/*!sc*/
.dMvvUT .before-header-ui__ellipse2{position:absolute;left:-148px;top:-244px;width:568px;height:568px;opacity:0.3;-webkit-filter:blur(12px);filter:blur(12px);background:radial-gradient( 50% 50% at 50% 50%,#f6cae3 0%,rgba(246,202,227,0) 100% );}/*!sc*/
.dMvvUT .before-header-ui__container{font-family:'IBM Plex Sans','Roboto',sans-serif;position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;gap:24px;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:0 auto;width:1120px;max-width:1120px;}/*!sc*/
@media (max-width:1201px){.dMvvUT .before-header-ui__container{width:100%;max-width:unset;}}/*!sc*/
.dMvvUT .before-header-ui__img{position:relative;}/*!sc*/
@media (max-width:1201px){.dMvvUT .before-header-ui__img{display:none;}}/*!sc*/
.dMvvUT .before-header-ui__img_sales{width:164px;}/*!sc*/
.dMvvUT .before-header-ui__img_sales::before{content:'';position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);width:100%;height:190px;background:url(/_next/static/images/img/sales-647707e6e3bb6ad2deb188a1217a88ac.png) no-repeat;background-size:contain;}/*!sc*/
.dMvvUT .before-header-ui__content{-webkit-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:2px;}/*!sc*/
.dMvvUT .before-header-ui__buttons{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;gap:8px;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}/*!sc*/
.dMvvUT .before-header-ui__title{font-size:28px;line-height:32px;font-weight:700;}/*!sc*/
@media (max-width:751px){.dMvvUT .before-header-ui__title{font-size:20px;line-height:24px;font-weight:700;}}/*!sc*/
.dMvvUT .before-header-ui__text{font-size:14px;line-height:20px;font-weight:700;-webkit-letter-spacing:-0.01em;-moz-letter-spacing:-0.01em;-ms-letter-spacing:-0.01em;letter-spacing:-0.01em;}/*!sc*/
@media (max-width:751px){.dMvvUT .before-header-ui__text{font-size:12px;line-height:16px;font-weight:700;-webkit-letter-spacing:0;-moz-letter-spacing:0;-ms-letter-spacing:0;letter-spacing:0;}}/*!sc*/
.dMvvUT .before-header-ui__button{-webkit-transition:background 0.2s ease-out;transition:background 0.2s ease-out;will-change:background;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:18px;line-height:24px;font-weight:700;border-radius:12px;-webkit-text-decoration:none;text-decoration:none;background:#fff;padding:12px 24px;display:inline-block;outline:none;box-sizing:border-box;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-align:center;color:#232323;text-overflow:ellipsis;min-width:200px;}/*!sc*/
@media (max-width:751px){.dMvvUT .before-header-ui__button{font-size:16px;line-height:24px;font-weight:700;padding:8px 16px;min-width:auto;}}/*!sc*/
.dMvvUT .before-header-ui__button:hover,.dMvvUT .before-header-ui__button:active{background-color:#ececec;}/*!sc*/
.dMvvUT .before-header-ui__button_secondary{color:#fff;background:rgba(255,255,255,0.2);}/*!sc*/
.dMvvUT .before-header-ui__button_secondary:hover,.dMvvUT .before-header-ui__button_secondary:active{background:rgba(255,255,255,0.3);color:#fff;}/*!sc*/
@media (max-width:1201px){.dMvvUT .before-header-ui__button_secondary{display:none;}}/*!sc*/
data-styled.g339[id="sc-1pwtpfp-0"]{content:"dMvvUT,"}/*!sc*/
.klmZDZ{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;min-height:100%;}/*!sc*/
data-styled.g340[id="sc-1j17uuq-0"]{content:"klmZDZ,"}/*!sc*/
.dPcKhb{position:relative;z-index:2;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto;background:inherit;overflow:hidden;}/*!sc*/
data-styled.g341[id="sc-1j17uuq-1"]{content:"dPcKhb,"}/*!sc*/
@media (max-width:1201px){.ui-chunk-container .hide-mobile{display:none;}}/*!sc*/
@media (max-width:751px){.ui-chunk-container .hide-phone{display:none;}}/*!sc*/
.ui-chunk-container .show-mobile{display:none;}/*!sc*/
@media (max-width:1201px){.ui-chunk-container .show-mobile{display:block;}}/*!sc*/
.ui-chunk-container .show-phone{display:none;}/*!sc*/
@media (max-width:751px){.ui-chunk-container .show-phone{display:block;}}/*!sc*/
data-styled.g343[id="sc-global-eCGhFA1"]{content:"sc-global-eCGhFA1,"}/*!sc*/
@-webkit-keyframes iJeNST{from{-webkit-transform:rotate(0deg) translateX(70px);-ms-transform:rotate(0deg) translateX(70px);transform:rotate(0deg) translateX(70px);}to{-webkit-transform:rotate(360deg) translateX(70px);-ms-transform:rotate(360deg) translateX(70px);transform:rotate(360deg) translateX(70px);}}/*!sc*/
@keyframes iJeNST{from{-webkit-transform:rotate(0deg) translateX(70px);-ms-transform:rotate(0deg) translateX(70px);transform:rotate(0deg) translateX(70px);}to{-webkit-transform:rotate(360deg) translateX(70px);-ms-transform:rotate(360deg) translateX(70px);transform:rotate(360deg) translateX(70px);}}/*!sc*/
data-styled.g344[id="sc-keyframes-iJeNST"]{content:"iJeNST,"}/*!sc*/
.kmquqg{object-fit:contain;}/*!sc*/
data-styled.g346[id="sc-ed2fvu-0"]{content:"kmquqg,"}/*!sc*/
.gtUtSY{z-index:-1;position:absolute;left:0;top:0;height:100%;width:100%;background:linear-gradient( 99.66deg,#373737 11.62%,#111111 87.01% );-webkit-clip-path:polygon(0 0,100% 0px,100% calc(100% - 80px),0% 100%);clip-path:polygon(0 0,100% 0px,100% calc(100% - 80px),0% 100%);}/*!sc*/
@media (max-width:751px){.gtUtSY{-webkit-clip-path:polygon(0 0,100% 0px,100% calc(100% - 56px),0% 100%);clip-path:polygon(0 0,100% 0px,100% calc(100% - 56px),0% 100%);}}/*!sc*/
.hAbnAH{z-index:-1;position:absolute;left:0;top:0;height:100%;width:100%;background:linear-gradient( 99.66deg,#373737 11.62%,#111111 87.01% );-webkit-clip-path:polygon(0 0,100% 80px,100% calc(100% - 80px),0% 100%);clip-path:polygon(0 0,100% 80px,100% calc(100% - 80px),0% 100%);}/*!sc*/
@media (max-width:751px){.hAbnAH{-webkit-clip-path:polygon(0 0,100% 56px,100% calc(100% - 56px),0% 100%);clip-path:polygon(0 0,100% 56px,100% calc(100% - 56px),0% 100%);}}/*!sc*/
.euiDRT{z-index:-1;position:absolute;left:0;top:0;height:100%;width:100%;background:linear-gradient( 99.66deg,#373737 11.62%,#111111 87.01% );-webkit-clip-path:polygon(0 80px,100% 0,100% 100%,0 calc(100% - 80px));clip-path:polygon(0 80px,100% 0,100% 100%,0 calc(100% - 80px));}/*!sc*/
@media (max-width:751px){.euiDRT{-webkit-clip-path:polygon(0 56px,100% 0,100% 100%,0 calc(100% - 56px));clip-path:polygon(0 56px,100% 0,100% 100%,0 calc(100% - 56px));}}/*!sc*/
.bIQUAQ{z-index:-1;position:absolute;left:0;top:0;height:100%;width:100%;background:linear-gradient( 99.66deg,#373737 11.62%,#111111 87.01% );-webkit-clip-path:polygon(0 0,100% 80px,100% calc(100% - 0px),0% 100%);clip-path:polygon(0 0,100% 80px,100% calc(100% - 0px),0% 100%);}/*!sc*/
@media (max-width:751px){.bIQUAQ{-webkit-clip-path:polygon(0 0,100% 56px,100% calc(100% - 0px),0% 100%);clip-path:polygon(0 0,100% 56px,100% calc(100% - 0px),0% 100%);}}/*!sc*/
data-styled.g425[id="sc-1ddwpfq-0"]{content:"gtUtSY,hAbnAH,euiDRT,bIQUAQ,"}/*!sc*/
.hnlXxp{position:relative;width:100%;padding:80px 0;}/*!sc*/
@media (max-width:751px){.hnlXxp{padding:56px 0;}}/*!sc*/
data-styled.g426[id="sc-1ddwpfq-1"]{content:"hnlXxp,"}/*!sc*/
.jliiMx{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;z-index:0;padding:120px 0 0;background:inherit;overflow:hidden;}/*!sc*/
@media (max-width:1201px){.jliiMx{padding:160px 0 0;}}/*!sc*/
@media (max-width:751px){.jliiMx{padding:80px 0 0;}}/*!sc*/
data-styled.g427[id="sc-oy98rf-0"]{content:"jliiMx,"}/*!sc*/
.dSAeRs{background:linear-gradient( 99.66deg,#373737 11.62%,#111111 87.01% );}/*!sc*/
data-styled.g428[id="sc-oy98rf-1"]{content:"dSAeRs,"}/*!sc*/
.bLWaqJ{padding:0;}/*!sc*/
data-styled.g429[id="sc-oy98rf-2"]{content:"bLWaqJ,"}/*!sc*/
.fMEenG{padding:120px 0 96px;}/*!sc*/
@media (max-width:1201px){.fMEenG{padding:123px 0 35px;}}/*!sc*/
data-styled.g430[id="sc-oy98rf-3"]{content:"fMEenG,"}/*!sc*/
.kXtOIJ{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-top:60px;padding:40px 0;position:relative;color:#fff;}/*!sc*/
.kXtOIJ:after{content:'';position:absolute;left:0;top:0;right:0;opacity:0.2;height:1px;background-color:#fff;}/*!sc*/
@media (max-width:1201px){.kXtOIJ{width:100%;margin-top:40px;}}/*!sc*/
@media (max-width:751px){.kXtOIJ{-webkit-flex-direction:column-reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse;-webkit-align-items:flex-start;-webkit-box-align:flex-start;-ms-flex-align:flex-start;align-items:flex-start;padding:24px 0;}}/*!sc*/
data-styled.g431[id="sc-19c5cbt-0"]{content:"kXtOIJ,"}/*!sc*/
.fvpIrL{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}/*!sc*/
@media (max-width:751px){.fvpIrL{margin-bottom:24px;width:100%;}}/*!sc*/
data-styled.g432[id="sc-19c5cbt-1"]{content:"fvpIrL,"}/*!sc*/
.jbfvPl{color:#fff;margin-top:24px;}/*!sc*/
@media (max-width:1201px){.jbfvPl{margin-top:40px;}}/*!sc*/
data-styled.g433[id="sc-b223p8-0"]{content:"jbfvPl,"}/*!sc*/
.kexDMw{margin-bottom:16px;display:inline-block;}/*!sc*/
data-styled.g434[id="sc-b223p8-1"]{content:"kexDMw,"}/*!sc*/
@media (max-width:1201px){.cpJPIb{line-height:16px;}.cpJPIb:after{bottom:1px;}}/*!sc*/
@media (max-width:751px){.cpJPIb:after{bottom:3px;}}/*!sc*/
data-styled.g435[id="sc-b223p8-2"]{content:"cpJPIb,"}/*!sc*/
.kqoeNm{position:relative;display:inline-block;margin:0 0 16px;white-space:nowrap;-webkit-text-decoration:underline;text-decoration:underline;}/*!sc*/
.kqoeNm:last-child{margin:0;}/*!sc*/
data-styled.g436[id="sc-b223p8-3"]{content:"kqoeNm,"}/*!sc*/
.dmOCHb{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;color:#fff;}/*!sc*/
@media (max-width:751px){.dmOCHb{margin-bottom:44px;}}/*!sc*/
data-styled.g437[id="sc-s8yol2-0"]{content:"dmOCHb,"}/*!sc*/
.fSkxQH{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:flex-start;-webkit-box-align:flex-start;-ms-flex-align:flex-start;align-items:flex-start;}/*!sc*/
data-styled.g438[id="sc-s8yol2-1"]{content:"fSkxQH,"}/*!sc*/
@media (min-width:1200px){.jinSfn{max-width:160px;width:160px;margin-right:32px;}}/*!sc*/
@media (max-width:1201px){.jinSfn{max-width:104px;width:104px;margin-right:48px;}}/*!sc*/
data-styled.g439[id="sc-s8yol2-2"]{content:"jinSfn,"}/*!sc*/
@media (min-width:1200px){.nSSml{max-width:256px;width:256px;margin-right:32px;}}/*!sc*/
@media (max-width:1201px){.nSSml{max-width:176px;width:176px;margin-right:0;}}/*!sc*/
@media (max-width:751px){.nSSml{margin-right:0;}}/*!sc*/
data-styled.g440[id="sc-s8yol2-3"]{content:"nSSml,"}/*!sc*/
.dopIUT{position:relative;margin-bottom:16px;-webkit-text-decoration:underline;text-decoration:underline;}/*!sc*/
.dopIUT:last-child{margin-bottom:0;}/*!sc*/
data-styled.g441[id="sc-s8yol2-4"]{content:"dopIUT,"}/*!sc*/
.MecOH{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;width:256px;margin-right:32px;color:#fff;}/*!sc*/
@media (max-width:1201px){.MecOH{width:240px;margin-right:0;margin-top:66px;}}/*!sc*/
@media (max-width:751px){.MecOH{width:352px;-webkit-flex-direction:column-reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse;margin-top:40px;}}/*!sc*/
data-styled.g442[id="sc-15qczmr-0"]{content:"MecOH,"}/*!sc*/
.dpoRMu{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin-bottom:38px;}/*!sc*/
@media (max-width:1201px){.dpoRMu{margin-bottom:33px;}}/*!sc*/
@media (max-width:751px){.dpoRMu{margin-bottom:0;margin-top:24px;}}/*!sc*/
data-styled.g443[id="sc-15qczmr-1"]{content:"dpoRMu,"}/*!sc*/
.jKMwie{margin-right:12px;height:32px;width:32px;background-image:url(/_next/static/images/img/footerUivk-1a499178c819de0f4161a07172b27f6b.svg);background-position:center center;background-repeat:no-repeat;background-size:cover;}/*!sc*/
@media (max-width:1201px){.jKMwie{height:24px;width:24px;}}/*!sc*/
.eFVTJV{margin-right:12px;height:32px;width:32px;background-image:url(/_next/static/images/img/footerUiyt-84e5fa7c2e582191762486a7be2c2652.svg);background-position:center center;background-repeat:no-repeat;background-size:cover;}/*!sc*/
@media (max-width:1201px){.eFVTJV{height:24px;width:24px;}}/*!sc*/
.hUuIIY{margin-right:12px;height:32px;width:32px;background-image:url(/_next/static/images/img/footerUidzen-cfe01a671b9064c8e5d54b2ac5895a0c.png);background-position:center center;background-repeat:no-repeat;background-size:cover;}/*!sc*/
@media (max-width:1201px){.hUuIIY{height:24px;width:24px;}}/*!sc*/
data-styled.g444[id="sc-15qczmr-2"]{content:"jKMwie,eFVTJV,hUuIIY,"}/*!sc*/
.foluGF{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}/*!sc*/
@media (max-width:751px){.foluGF{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}/*!sc*/
data-styled.g445[id="sc-15qczmr-3"]{content:"foluGF,"}/*!sc*/
.hMqYlN{margin-bottom:12px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}/*!sc*/
@media (max-width:1201px){.hMqYlN{margin-bottom:16px;}}/*!sc*/
@media (max-width:751px){.hMqYlN{margin-bottom:0;margin-right:32px;}.hMqYlN:last-child{margin-right:0;}}/*!sc*/
data-styled.g446[id="sc-15qczmr-4"]{content:"hMqYlN,"}/*!sc*/
.kmPvgJ{margin-right:32px;width:32px;height:32px;background-image:url(/_next/static/images/img/footerUitg-326baa373419d1a193621a597320c652.svg);background-position:center center;background-repeat:no-repeat;background-size:contain;}/*!sc*/
@media (max-width:1201px){.kmPvgJ{margin-right:8px;width:24px;height:24px;}}/*!sc*/
data-styled.g447[id="sc-15qczmr-5"]{content:"kmPvgJ,"}/*!sc*/
.driyCh{position:relative;white-space:nowrap;-webkit-text-decoration:underline;text-decoration:underline;}/*!sc*/
@media (max-width:1201px){.driyCh{line-height:16px;-webkit-text-decoration:none;text-decoration:none;}}/*!sc*/
data-styled.g448[id="sc-15qczmr-6"]{content:"driyCh,"}/*!sc*/
.ceClWZ{min-width:100%;width:100%;min-height:100%;height:100%;cursor:pointer;z-index:1;position:absolute;top:0;left:0;opacity:0;}/*!sc*/
data-styled.g450[id="sc-j40lj7-0"]{content:"ceClWZ,"}/*!sc*/
.dWxMps{min-width:24px;width:24px;min-height:24px;height:24px;-webkit-transition:-webkit-transform 0.2s ease-out;-webkit-transition:transform 0.2s ease-out;transition:transform 0.2s ease-out;will-change:transform;will-change:auto;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);}/*!sc*/
data-styled.g451[id="sc-hd7keq-0"]{content:"dWxMps,"}/*!sc*/
.eZuRED{-webkit-transition:border-color 0.2s ease-out;transition:border-color 0.2s ease-out;will-change:border-color;min-width:24px;width:24px;min-height:24px;height:24px;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;position:relative;border:1px solid;border-radius:3.5px;color:#4749c0;background-color:#fff;border-color:#4749c0;}/*!sc*/
data-styled.g454[id="sc-12fwr4-0"]{content:"eZuRED,"}/*!sc*/
.exsZZC{position:absolute;top:-1px;left:-1px;}/*!sc*/
data-styled.g455[id="sc-12fwr4-1"]{content:"exsZZC,"}/*!sc*/
.eAOVcR{cursor:pointer;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:flex-start;-webkit-box-align:flex-start;-ms-flex-align:flex-start;align-items:flex-start;}/*!sc*/
data-styled.g456[id="sc-1fry39v-0"]{content:"eAOVcR,"}/*!sc*/
.kMJHVN{margin:0 0 0 16px;}/*!sc*/
data-styled.g457[id="sc-1fry39v-1"]{content:"kMJHVN,"}/*!sc*/
.fyzNNQ{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;color:#0f0f10;}/*!sc*/
data-styled.g458[id="sc-dusc05-0"]{content:"fyzNNQ,"}/*!sc*/
.fgICvQ{color:inherit;-webkit-text-decoration:underline;text-decoration:underline;}/*!sc*/
.fgICvQ:hover{-webkit-text-decoration:none;text-decoration:none;}/*!sc*/
data-styled.g459[id="sc-dusc05-1"]{content:"fgICvQ,"}/*!sc*/
.fYuJAI{color:#fff;}/*!sc*/
data-styled.g461[id="sc-des2oc-0"]{content:"fYuJAI,"}/*!sc*/
.hbxrvB{margin-bottom:16px;}/*!sc*/
@media (max-width:1201px){.hbxrvB{margin-bottom:22px;}}/*!sc*/
@media (max-width:751px){.hbxrvB{margin-bottom:16px;}}/*!sc*/
data-styled.g462[id="sc-des2oc-1"]{content:"hbxrvB,"}/*!sc*/
.iHEhCu{display:grid;grid-template-areas:'a b' 'c c';grid-template-columns:240px 96px;gap:12px 16px;}/*!sc*/
@media (max-width:1201px){.iHEhCu{grid-template-columns:200px 96px;gap:8px 8px;}}/*!sc*/
@media (max-width:751px){.iHEhCu{grid-template-columns:244px 96px;gap:10px 12px;}}/*!sc*/
data-styled.g463[id="sc-des2oc-2"]{content:"iHEhCu,"}/*!sc*/
.heMBup{grid-area:a;}/*!sc*/
data-styled.g464[id="sc-des2oc-3"]{content:"heMBup,"}/*!sc*/
.dqoHct{grid-area:b;}/*!sc*/
data-styled.g465[id="sc-des2oc-4"]{content:"dqoHct,"}/*!sc*/
.kSlCOl{grid-area:c;color:inherit;}/*!sc*/
data-styled.g466[id="sc-des2oc-5"]{content:"kSlCOl,"}/*!sc*/
.kVOlcO{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}/*!sc*/
data-styled.g467[id="sc-176eli6-0"]{content:"kVOlcO,"}/*!sc*/
.bIqTVy{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:flex-start;-webkit-box-align:flex-start;-ms-flex-align:flex-start;align-items:flex-start;}/*!sc*/
data-styled.g468[id="sc-176eli6-1"]{content:"bIqTVy,"}/*!sc*/
.hRGcmY{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}/*!sc*/
data-styled.g469[id="sc-176eli6-2"]{content:"hRGcmY,"}/*!sc*/
.fCchjz{width:100%;margin:auto;}/*!sc*/
data-styled.g470[id="sc-1urziip-0"]{content:"fCchjz,"}/*!sc*/
.cPEbNj{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:82px;height:40px;}/*!sc*/
@media (max-width:1201px){.cPEbNj{margin-right:12px;width:41px;height:24px;}}/*!sc*/
data-styled.g471[id="sc-1urziip-1"]{content:"cPEbNj,"}/*!sc*/
.fEJhZn{margin-right:40px;width:140px;height:40px;background-image:url(/_next/static/images/img/runet-9d9c302c854bd21ffd433cffadd5fc46.png);background-position:center center;background-repeat:no-repeat;background-size:contain;}/*!sc*/
@media (max-width:1201px){.fEJhZn{margin-right:12px;width:84px;height:24px;}}/*!sc*/
data-styled.g472[id="sc-1jb0vz0-0"]{content:"fEJhZn,"}/*!sc*/
.bQKtqJ{margin-right:40px;width:136px;height:40px;background-image:url(/_next/static/images/img/skolkovo-2f0a909e8e465c8d5951d639c67b62c9.svg);background-position:center center;background-repeat:no-repeat;background-size:contain;}/*!sc*/
@media (max-width:1201px){.bQKtqJ{margin-right:12px;width:82px;height:24px;}}/*!sc*/
data-styled.g473[id="sc-1jb0vz0-1"]{content:"bQKtqJ,"}/*!sc*/
.bzaXwp{background-color:#f8f8f8;}/*!sc*/
data-styled.g728[id="sc-1b3dhyb-0"]{content:"bzaXwp,"}/*!sc*/
.dvLdDh{overflow:hidden;z-index:0;}/*!sc*/
data-styled.g729[id="sc-1b3dhyb-1"]{content:"dvLdDh,"}/*!sc*/
.ftkQLi{width:100%;}/*!sc*/
data-styled.g730[id="sc-1lrh8w5-0"]{content:"ftkQLi,"}/*!sc*/
.JTsAm{-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;}/*!sc*/
data-styled.g733[id="sc-1lrh8w5-3"]{content:"JTsAm,"}/*!sc*/
.jTrfLJ{margin:auto;padding:0 4px 0 0;}/*!sc*/
data-styled.g734[id="sc-1lrh8w5-4"]{content:"jTrfLJ,"}/*!sc*/
.eCsaUt{color:#130f26;}/*!sc*/
.kfzfcV{color:#130f26;}/*!sc*/
@media (max-width:751px){.kfzfcV{display:none;}}/*!sc*/
data-styled.g735[id="sc-1lrh8w5-5"]{content:"eCsaUt,kfzfcV,"}/*!sc*/
.ddfkAs{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;width:416px;margin:8px 96px 0 0;}/*!sc*/
@media (max-width:1201px){.ddfkAs{width:552px;margin:0 0 60px;}}/*!sc*/
@media (max-width:751px){.ddfkAs{width:344px;margin:0 0 40px;}}/*!sc*/
data-styled.g753[id="sc-1oz275d-0"]{content:"ddfkAs,"}/*!sc*/
.dCggDS{border:none;border-radius:16px;object-fit:contain;width:100%;}/*!sc*/
@media (max-width:1201px){.dCggDS{border-radius:26px;}}/*!sc*/
@media (max-width:751px){.dCggDS{border-radius:16px;}}/*!sc*/
data-styled.g754[id="sc-1oz275d-1"]{content:"dCggDS,"}/*!sc*/
.cmjKRy{margin-bottom:52px;}/*!sc*/
@media (max-width:1201px){.cmjKRy{margin-bottom:60px;}.cmjKRy .swiper{overflow:visible;}}/*!sc*/
@media (max-width:751px){.cmjKRy{margin-bottom:36px;}.cmjKRy .swiper{overflow:hidden;}}/*!sc*/
data-styled.g755[id="sc-1oz275d-2"]{content:"cmjKRy,"}/*!sc*/
.lliDuJ{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:992px;margin:0 auto 120px;padding:0 0 120px;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;color:#0f0f10;border-bottom:1px solid #afafaf;}/*!sc*/
@media (max-width:1201px){.lliDuJ{width:100%;padding:0 0 100px;}}/*!sc*/
@media (max-width:751px){.lliDuJ{margin:0 auto 80px;padding:0 0 40px;}}/*!sc*/
data-styled.g757[id="sc-1r62a6q-0"]{content:"lliDuJ,"}/*!sc*/
.llFwsA{margin-bottom:40px;}/*!sc*/
@media (max-width:1201px){.llFwsA{margin-bottom:32px;}}/*!sc*/
@media (max-width:751px){.llFwsA{width:340px;}}/*!sc*/
data-styled.g758[id="sc-1r62a6q-1"]{content:"llFwsA,"}/*!sc*/
.dtnelf{margin-bottom:60px;}/*!sc*/
@media (max-width:1201px){.dtnelf{margin-bottom:40px;}}/*!sc*/
data-styled.g759[id="sc-1r62a6q-2"]{content:"dtnelf,"}/*!sc*/
.eNyjzK{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}/*!sc*/
@media (max-width:1201px){.eNyjzK{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}}/*!sc*/
data-styled.g760[id="sc-1r62a6q-3"]{content:"eNyjzK,"}/*!sc*/
.hpEid H1,.hpEid H2,.hpEid H3,.hpEid H4,.hpEid H5,.hpEid H6{font-family:'IBM Plex Sans','Roboto',sans-serif;font-size:40px;line-height:48px;padding-bottom:40px;}/*!sc*/
@media (max-width:1201px){.hpEid H1,.hpEid H2,.hpEid H3,.hpEid H4,.hpEid H5,.hpEid H6{font-size:40px;line-height:48px;padding-bottom:32px;}}/*!sc*/
@media (max-width:751px){.hpEid H1,.hpEid H2,.hpEid H3,.hpEid H4,.hpEid H5,.hpEid H6{font-size:20px;line-height:24px;padding-bottom:40px;}}/*!sc*/
.hpEid p{font-family:'Roboto',sans-serif;font-size:18px;line-height:24px;}/*!sc*/
@media (max-width:1201px){.hpEid p{font-size:18px;line-height:24px;}}/*!sc*/
@media (max-width:751px){.hpEid p{font-size:16px;line-height:24px;}}/*!sc*/
.hpEid ul,.hpEid ol{margin:-24px 0 32px;padding:0;}/*!sc*/
.hpEid li{font-family:'Roboto',sans-serif;font-size:18px;line-height:24px;position:relative;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:0 0 24px;padding:0 0 0 24px;list-style:none;color:#000;}/*!sc*/
@media (max-width:1201px){.hpEid li{font-size:18px;line-height:24px;}}/*!sc*/
@media (max-width:751px){.hpEid li{font-size:16px;line-height:24px;}}/*!sc*/
.hpEid li:last-child{margin-bottom:0;}/*!sc*/
.hpEid li::before{content:'•';position:absolute;top:0;left:0;color:#005ece;font-size:39px;line-height:26px;}/*!sc*/
.hpEid li:before{color:#575757;}/*!sc*/
.hpEid > *:last-child{margin-bottom:0;}/*!sc*/
data-styled.g761[id="sc-1r62a6q-4"]{content:"hpEid,"}/*!sc*/
.SAbyR{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}/*!sc*/
data-styled.g775[id="sc-1gixy6u-0"]{content:"SAbyR,"}/*!sc*/
.hRFuCQ{color:#0f0f10;word-break:break-word;}/*!sc*/
.hRFuCQ h1{font-family:'IBM Plex Sans','Roboto',sans-serif;font-size:52px;line-height:64px;margin-bottom:40px;}/*!sc*/
@media (max-width:1201px){.hRFuCQ h1{font-size:52px;line-height:64px;}}/*!sc*/
@media (max-width:751px){.hRFuCQ h1{font-size:24px;line-height:28px;margin-bottom:32px;}}/*!sc*/
.hRFuCQ h2{font-family:'IBM Plex Sans','Roboto',sans-serif;font-size:24px;line-height:28px;margin-bottom:16px;}/*!sc*/
@media (max-width:1201px){.hRFuCQ h2{font-size:24px;line-height:28px;margin-bottom:24px;}}/*!sc*/
@media (max-width:751px){.hRFuCQ h2{font-size:18px;line-height:24px;margin-bottom:16px;}}/*!sc*/
.hRFuCQ p{margin-bottom:40px;}/*!sc*/
@media (max-width:1201px){.hRFuCQ p{margin-bottom:24px;}}/*!sc*/
.hRFuCQ ul,.hRFuCQ ol{margin:-24px 0 32px;padding:0;margin:0 0 32px;}/*!sc*/
.hRFuCQ li{font-family:'Roboto',sans-serif;font-size:18px;line-height:24px;position:relative;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:0 0 24px;padding:0 0 0 24px;list-style:none;}/*!sc*/
@media (max-width:1201px){.hRFuCQ li{font-size:18px;line-height:24px;}}/*!sc*/
@media (max-width:751px){.hRFuCQ li{font-size:16px;line-height:24px;}}/*!sc*/
.hRFuCQ li:last-child{margin-bottom:0;}/*!sc*/
.hRFuCQ li::before{content:'•';position:absolute;top:0;left:0;color:#005ece;font-size:39px;line-height:26px;}/*!sc*/
.hRFuCQ li::before{color:#575757;}/*!sc*/
.hRFuCQ *:last-child{margin-bottom:0;}/*!sc*/
.dJQBfL{color:#fff;word-break:break-word;}/*!sc*/
.dJQBfL h1{font-family:'IBM Plex Sans','Roboto',sans-serif;font-size:52px;line-height:64px;margin-bottom:40px;}/*!sc*/
@media (max-width:1201px){.dJQBfL h1{font-size:52px;line-height:64px;}}/*!sc*/
@media (max-width:751px){.dJQBfL h1{font-size:24px;line-height:28px;margin-bottom:32px;}}/*!sc*/
.dJQBfL h2{font-family:'IBM Plex Sans','Roboto',sans-serif;font-size:24px;line-height:28px;margin-bottom:16px;}/*!sc*/
@media (max-width:1201px){.dJQBfL h2{font-size:24px;line-height:28px;margin-bottom:24px;}}/*!sc*/
@media (max-width:751px){.dJQBfL h2{font-size:18px;line-height:24px;margin-bottom:16px;}}/*!sc*/
.dJQBfL p{margin-bottom:40px;}/*!sc*/
@media (max-width:1201px){.dJQBfL p{margin-bottom:24px;}}/*!sc*/
.dJQBfL ul,.dJQBfL ol{margin:-24px 0 32px;padding:0;margin:0 0 32px;}/*!sc*/
.dJQBfL li{font-family:'Roboto',sans-serif;font-size:18px;line-height:24px;position:relative;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:0 0 24px;padding:0 0 0 24px;list-style:none;}/*!sc*/
@media (max-width:1201px){.dJQBfL li{font-size:18px;line-height:24px;}}/*!sc*/
@media (max-width:751px){.dJQBfL li{font-size:16px;line-height:24px;}}/*!sc*/
.dJQBfL li:last-child{margin-bottom:0;}/*!sc*/
.dJQBfL li::before{content:'•';position:absolute;top:0;left:0;color:#005ece;font-size:39px;line-height:26px;}/*!sc*/
.dJQBfL li::before{color:#fff;}/*!sc*/
.dJQBfL *:last-child{margin-bottom:0;}/*!sc*/
data-styled.g796[id="sc-pyhrzd-0"]{content:"hRFuCQ,dJQBfL,"}/*!sc*/
.gjfSTs{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;width:320px;margin:0 0 0 64px;}/*!sc*/
@media (max-width:1201px){.gjfSTs{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:100%;margin:60px 0 0;padding:20px;border-radius:20px;background:#fff;}}/*!sc*/
@media (max-width:751px){.gjfSTs{margin:40px 0 0;}}/*!sc*/
data-styled.g797[id="sc-1232l32-0"]{content:"gjfSTs,"}/*!sc*/
.gLmhvn{margin:0 0 28px;}/*!sc*/
@media (max-width:1201px){.gLmhvn{margin:0 24px 0 0;}}/*!sc*/
@media (max-width:751px){.gLmhvn{margin:0 16px 0 0;}}/*!sc*/
data-styled.g798[id="sc-1232l32-1"]{content:"gLmhvn,"}/*!sc*/
.cLdvvd{color:#afafaf;}/*!sc*/
.cLdvvd h1,.cLdvvd h2,.cLdvvd h3{color:#0f0f10;}/*!sc*/
data-styled.g799[id="sc-1232l32-2"]{content:"cLdvvd,"}/*!sc*/
.cjEHVO{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin:0 auto 80px;padding:0 64px 80px;border-bottom:1px solid #afafaf;color:#0f0f10;}/*!sc*/
@media (max-width:1201px){.cjEHVO{display:block;margin:0 auto 60px;padding:0 0 60px;}}/*!sc*/
@media (max-width:751px){.cjEHVO{display:block;margin:0 auto 40px;padding:0 0 80px;}}/*!sc*/
data-styled.g800[id="sc-lpm061-0"]{content:"cjEHVO,"}/*!sc*/
.iKbbnr{margin:0 0 24px;}/*!sc*/
@media (max-width:751px){.iKbbnr{margin:0 0 16px;}}/*!sc*/
data-styled.g801[id="sc-lpm061-1"]{content:"iKbbnr,"}/*!sc*/
.dYVcmu{margin:20px auto 80px;padding:0 0 80px;border-bottom:1px solid #afafaf;}/*!sc*/
@media (max-width:1201px){.dYVcmu{margin:0 auto 60px;padding:0 0 60px;}}/*!sc*/
@media (max-width:751px){.dYVcmu{margin:0 auto 80px;padding:0 0 64px;}}/*!sc*/
data-styled.g817[id="sc-1oat6ot-0"]{content:"dYVcmu,"}/*!sc*/
.cVgwEc{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:0 64px 0;color:#0f0f10;}/*!sc*/
@media (max-width:1201px){.cVgwEc{padding:0;}}/*!sc*/
data-styled.g818[id="sc-1oat6ot-1"]{content:"cVgwEc,"}/*!sc*/
.hjZAnk{width:auto;min-width:320px;margin:24px 0 0;}/*!sc*/
@media (max-width:1201px){.hjZAnk{margin:48px 0 0;}}/*!sc*/
@media (max-width:751px){.hjZAnk{width:100%;margin:16px 0 0;}}/*!sc*/
data-styled.g820[id="sc-1oat6ot-3"]{content:"hjZAnk,"}/*!sc*/
.hdfpFD{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:flex-start;-webkit-box-align:flex-start;-ms-flex-align:flex-start;align-items:flex-start;}/*!sc*/
data-styled.g821[id="sc-1oat6ot-4"]{content:"hdfpFD,"}/*!sc*/
.klGcVm{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}/*!sc*/
@media (max-width:751px){.klGcVm{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}}/*!sc*/
data-styled.g822[id="sc-1oat6ot-5"]{content:"klGcVm,"}/*!sc*/
.iHYLll{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;text-align:center;width:352px;margin-right:32px;}/*!sc*/
.iHYLll:last-child{margin-right:0;}/*!sc*/
@media (max-width:1201px){.iHYLll{width:100%;margin-right:0;margin-top:40px;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;text-align:left;}.iHYLll:first-child{margin-top:0;}}/*!sc*/
@media (max-width:751px){.iHYLll{-webkit-align-items:flex-start;-webkit-box-align:flex-start;-ms-flex-align:flex-start;align-items:flex-start;margin-top:32px;}}/*!sc*/
data-styled.g828[id="sc-16yt4q5-0"]{content:"iHYLll,"}/*!sc*/
.jyGyOw{overflow:hidden;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;margin-bottom:24px;border-radius:50%;background:linear-gradient( 99.66deg,#373737 11.62%,#111111 87.01% );}/*!sc*/
@media (max-width:1201px){.jyGyOw{margin-bottom:0;margin-right:24px;}}/*!sc*/
data-styled.g829[id="sc-16yt4q5-1"]{content:"jyGyOw,"}/*!sc*/
.bUbCKQ{min-width:80px;width:80px;min-height:80px;height:80px;background-image:url(/_next/static/images/img/oneImg-b1c92b38734a5b324f9b32a5a243bf06.svg);background-size:contain;background-repeat:no-repeat;background-position:50% 50%;}/*!sc*/
@media (max-width:751px){.bUbCKQ{min-width:48px;width:48px;min-height:48px;height:48px;}}/*!sc*/
.dIESaV{min-width:80px;width:80px;min-height:80px;height:80px;background-image:url(/_next/static/images/img/twoImg-28bd45b9ade74f4471bf39916d76d47e.svg);background-size:contain;background-repeat:no-repeat;background-position:50% 50%;}/*!sc*/
@media (max-width:751px){.dIESaV{min-width:48px;width:48px;min-height:48px;height:48px;}}/*!sc*/
.gbGscf{min-width:80px;width:80px;min-height:80px;height:80px;background-image:url(/_next/static/images/img/threeImg-7d8d62a36e7b66f9691d1d7d01b44fb9.svg);background-size:contain;background-repeat:no-repeat;background-position:50% 50%;}/*!sc*/
@media (max-width:751px){.gbGscf{min-width:48px;width:48px;min-height:48px;height:48px;}}/*!sc*/
.yjETG{min-width:80px;width:80px;min-height:80px;height:80px;background-image:url(/_next/static/images/img/oneImg-d53504a93142009806d3cc77cd059dcb.svg);background-size:contain;background-repeat:no-repeat;background-position:50% 50%;}/*!sc*/
@media (max-width:751px){.yjETG{min-width:48px;width:48px;min-height:48px;height:48px;}}/*!sc*/
.iGfrzu{min-width:80px;width:80px;min-height:80px;height:80px;background-image:url(/_next/static/images/img/twoImg-bf3134a7f0a1f9684257b13b37cd07b5.svg);background-size:contain;background-repeat:no-repeat;background-position:50% 50%;}/*!sc*/
@media (max-width:751px){.iGfrzu{min-width:48px;width:48px;min-height:48px;height:48px;}}/*!sc*/
.eJXsCF{min-width:80px;width:80px;min-height:80px;height:80px;background-image:url(/_next/static/images/img/threeImg-a81ea3b3db08e9c236bce2eb8f407ab7.svg);background-size:contain;background-repeat:no-repeat;background-position:50% 50%;}/*!sc*/
@media (max-width:751px){.eJXsCF{min-width:48px;width:48px;min-height:48px;height:48px;}}/*!sc*/
data-styled.g830[id="sc-16yt4q5-2"]{content:"bUbCKQ,dIESaV,gbGscf,yjETG,iGfrzu,eJXsCF,"}/*!sc*/
.kgZxtV p{font-family:'Roboto',sans-serif;font-size:18px;line-height:24px;}/*!sc*/
@media (max-width:1201px){.kgZxtV p{font-size:18px;line-height:24px;}}/*!sc*/
@media (max-width:751px){.kgZxtV p{font-size:16px;line-height:24px;}}/*!sc*/
.kgZxtV h1{font-family:'IBM Plex Sans','Roboto',sans-serif;font-size:24px;line-height:28px;margin-bottom:16px;}/*!sc*/
@media (max-width:1201px){.kgZxtV h1{font-size:24px;line-height:28px;margin-bottom:8px;}}/*!sc*/
@media (max-width:751px){.kgZxtV h1{font-size:18px;line-height:24px;}}/*!sc*/
data-styled.g831[id="sc-16yt4q5-3"]{content:"kgZxtV,"}/*!sc*/
.eOXZIV{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-bottom:20px;}/*!sc*/
data-styled.g832[id="sc-11l8wec-0"]{content:"eOXZIV,"}/*!sc*/
.jpiMVl{margin-bottom:120px;position:relative;}/*!sc*/
@media (max-width:1201px){.jpiMVl{margin-bottom:72px;}}/*!sc*/
data-styled.g833[id="sc-ze365z-0"]{content:"jpiMVl,"}/*!sc*/
.RPhWg{margin-bottom:40px;text-align:center;}/*!sc*/
data-styled.g834[id="sc-ze365z-1"]{content:"RPhWg,"}/*!sc*/
.bnqryM{width:416px;}/*!sc*/
@media (max-width:1201px){.bnqryM{width:100%;}}/*!sc*/
data-styled.g836[id="sc-32ejay-1"]{content:"bnqryM,"}/*!sc*/
.eNgslB{font-family:'Roboto',sans-serif;font-size:18px;line-height:24px;position:relative;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:0 0 24px;padding:0 0 0 24px;list-style:none;margin-bottom:0;}/*!sc*/
@media (max-width:1201px){.eNgslB{font-size:18px;line-height:24px;}}/*!sc*/
@media (max-width:751px){.eNgslB{font-size:16px;line-height:24px;}}/*!sc*/
.eNgslB:last-child{margin-bottom:0;}/*!sc*/
.eNgslB::before{content:'•';position:absolute;top:0;left:0;color:#005ece;font-size:39px;line-height:26px;}/*!sc*/
data-styled.g837[id="sc-1xm68ya-0"]{content:"eNgslB,"}/*!sc*/
.hqEzLD{width:928px;}/*!sc*/
@media (max-width:1201px){.hqEzLD{width:100%;}}/*!sc*/
@media (max-width:751px){.hqEzLD{max-width:344px;}}/*!sc*/
data-styled.g838[id="sc-1xm68ya-1"]{content:"hqEzLD,"}/*!sc*/
.isRQVJ{margin-bottom:80px;padding:160px 0;color:#fff;}/*!sc*/
.isRQVJ .sc-1xm68ya-0::before{color:#fff;}/*!sc*/
@media (max-width:1201px){.isRQVJ{margin-bottom:120px;}}/*!sc*/
@media (max-width:751px){.isRQVJ{margin-bottom:80px;padding:120px 0;}}/*!sc*/
data-styled.g839[id="sc-1xm68ya-2"]{content:"isRQVJ,"}/*!sc*/
.cXcqyt{margin-bottom:60px;}/*!sc*/
@media (max-width:1201px){.cXcqyt{margin-bottom:52px;}}/*!sc*/
@media (max-width:751px){.cXcqyt{margin-bottom:32px;}}/*!sc*/
data-styled.g840[id="sc-1xm68ya-3"]{content:"cXcqyt,"}/*!sc*/
.kscGdX{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:40px;margin-bottom:60px;}/*!sc*/
@media (max-width:1201px){.kscGdX{gap:60px;margin-bottom:52px;}}/*!sc*/
@media (max-width:751px){.kscGdX{gap:32px;margin-bottom:40px;}}/*!sc*/
data-styled.g841[id="sc-1xm68ya-4"]{content:"kscGdX,"}/*!sc*/
.jEIquP{padding:0;display:grid;grid-template-columns:repeat(3,1fr);gap:24px;}/*!sc*/
.jEIquP .sc-1xm68ya-0:after{background-color:#fff;}/*!sc*/
@media (max-width:1201px){.jEIquP{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}}/*!sc*/
@media (max-width:751px){.jEIquP{gap:12px;}}/*!sc*/
data-styled.g843[id="sc-1xm68ya-6"]{content:"jEIquP,"}/*!sc*/
.eOihnY{font-size:18px;line-height:24px;font-weight:400;position:relative;cursor:pointer;}/*!sc*/
@media (max-width:751px){.eOihnY{font-size:16px;line-height:24px;font-weight:400;}}/*!sc*/
.eOihnY:after{content:'';position:absolute;bottom:1px;left:0;width:100%;height:1px;border-bottom:1px solid #fff;}/*!sc*/
data-styled.g844[id="sc-1xm68ya-7"]{content:"eOihnY,"}/*!sc*/
.kbHGLB{background:#fff;border-radius:25px;padding:24px 40px;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;height:148px !important;}/*!sc*/
.kbHGLB.swiper-slide{width:224px;}/*!sc*/
@media (max-width:751px){.kbHGLB{padding:12px 16px;border-radius:16px;}.kbHGLB.swiper-slide{width:120px;height:80px !important;}}/*!sc*/
.iiXtAN{background:#fff;border-radius:25px;padding:24px 40px;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;height:148px !important;margin-right:0;}/*!sc*/
.iiXtAN.swiper-slide{width:224px;}/*!sc*/
@media (max-width:751px){.iiXtAN{padding:12px 16px;border-radius:16px;margin-right:0;}.iiXtAN.swiper-slide{width:120px;height:80px !important;}}/*!sc*/
data-styled.g845[id="sc-x5ajzb-0"]{content:"kbHGLB,iiXtAN,"}/*!sc*/
.hluHAA{background:url(https://cdn.otus.ru/media/public/99/aa/99aa2f590377475c88cdd3651ec12c92.png) no-repeat center;background-size:contain;width:100%;height:100%;}/*!sc*/
.fHImYw{background:url(https://cdn.otus.ru/media/public/e4/eb/e4ebe942cc124ec68ae502b2c282bed3.png) no-repeat center;background-size:contain;width:100%;height:100%;}/*!sc*/
data-styled.g846[id="sc-x5ajzb-1"]{content:"hluHAA,fHImYw,"}/*!sc*/
.cawBGv{width:992px;margin:0 auto;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;}/*!sc*/
@media (max-width:751px){.cawBGv{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:normal;-webkit-box-align:normal;-ms-flex-align:normal;align-items:normal;}}/*!sc*/
@media (max-width:1201px){.cawBGv{width:100%;}}/*!sc*/
data-styled.g847[id="sc-2pu6he-0"]{content:"cawBGv,"}/*!sc*/
.hBsuCb{margin-bottom:40px;white-space:normal;margin-right:32px;margin-bottom:0;white-space:break-spaces;}/*!sc*/
@media (max-width:751px){.hBsuCb{margin-bottom:28px;}}/*!sc*/
data-styled.g848[id="sc-2pu6he-1"]{content:"hBsuCb,"}/*!sc*/
.kgryUb{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;gap:24px;}/*!sc*/
data-styled.g849[id="sc-2pu6he-2"]{content:"kgryUb,"}/*!sc*/
.hlgWda{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;width:229px;-webkit-flex:1;-ms-flex:1;flex:1;margin-right:24px;}/*!sc*/
.hlgWda:last-child{margin-right:0;}/*!sc*/
@media (max-width:1201px){.hlgWda{margin-bottom:32px;}.hlgWda:last-child{margin-bottom:0;}}/*!sc*/
@media (max-width:751px){.hlgWda{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;width:100%;margin-bottom:12px;}.hlgWda:last-child{margin-bottom:24px;}}/*!sc*/
data-styled.g851[id="sc-1f5byvo-0"]{content:"hlgWda,"}/*!sc*/
.jyvyoR{color:#25b969;}/*!sc*/
data-styled.g852[id="sc-1f5byvo-1"]{content:"jyvyoR,"}/*!sc*/
.lhTbHf{margin-top:8px;white-space:nowrap;white-space:pre;}/*!sc*/
@media (max-width:751px){.lhTbHf{margin-top:0;}}/*!sc*/
@media (max-width:1201px){.lhTbHf{white-space:nowrap;}}/*!sc*/
data-styled.g853[id="sc-1f5byvo-2"]{content:"lhTbHf,"}/*!sc*/
.kWSJKL{margin-bottom:32px;}/*!sc*/
@media (max-width:751px){.kWSJKL{margin-bottom:20px;}}/*!sc*/
data-styled.g854[id="sc-xgmw75-0"]{content:"kWSJKL,"}/*!sc*/
.fqgPAJ{position:relative;background-color:#fff;color:#0f0f10;border-radius:25px;width:100%;margin:0 0 100px;padding:44px 64px 52px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}/*!sc*/
@media (max-width:1201px){.fqgPAJ{margin:0 0 40px;padding:44px 32px 36px 40px;}}/*!sc*/
@media (max-width:751px){.fqgPAJ{padding:24px;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}}/*!sc*/
data-styled.g855[id="sc-xgmw75-1"]{content:"fqgPAJ,"}/*!sc*/
.cGRACb{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin-bottom:12px;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}/*!sc*/
data-styled.g856[id="sc-xgmw75-2"]{content:"cGRACb,"}/*!sc*/
.jzczJK{-webkit-flex:1 1;-ms-flex:1 1;flex:1 1;}/*!sc*/
data-styled.g857[id="sc-xgmw75-3"]{content:"jzczJK,"}/*!sc*/
.fSmctL{margin-bottom:12px;}/*!sc*/
data-styled.g858[id="sc-xgmw75-4"]{content:"fSmctL,"}/*!sc*/
.fHxdGa{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}/*!sc*/
@media (max-width:1201px){.fHxdGa{width:382px;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}}/*!sc*/
@media (max-width:751px){.fHxdGa{width:100%;}}/*!sc*/
data-styled.g859[id="sc-xgmw75-5"]{content:"fHxdGa,"}/*!sc*/
.hNPHLe{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:208px;padding:28px 0 16px 48px;border-left:1px solid #ececec;}/*!sc*/
@media (max-width:1201px){.hNPHLe{position:absolute;right:32px;bottom:60px;padding:0 0 20px 48px;}}/*!sc*/
@media (max-width:751px){.hNPHLe{-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse;width:100%;padding:16px 0 0 0;border-top:1px solid #ececec;border-left:none;position:relative;bottom:0;right:0;}}/*!sc*/
data-styled.g860[id="sc-xgmw75-6"]{content:"hNPHLe,"}/*!sc*/
.hBXFys{text-align:center;}/*!sc*/
@media (max-width:1201px){.hBXFys{font-size:62px;line-height:68px;}}/*!sc*/
@media (max-width:751px){.hBXFys{text-align:left;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin-left:16px;}}/*!sc*/
data-styled.g861[id="sc-xgmw75-7"]{content:"hBXFys,"}/*!sc*/
.rdBYv{margin-bottom:12px;}/*!sc*/
@media (max-width:751px){.rdBYv{margin-bottom:0;margin-left:24px;}}/*!sc*/
data-styled.g862[id="sc-xgmw75-8"]{content:"rdBYv,"}/*!sc*/
.jeGQMA{min-width:48px;width:48px;min-height:48px;height:48px;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;margin:0 24px 0 0;border-radius:12px;background:url(https://cdn.otus.ru/media/public/69/8a/698a3124be534997b17752cfe56d9fdb.svg),linear-gradient( 99.66deg, #373737 11.62%, #111111 87.01% );background-repeat:no-repeat;background-size:48px 48px;background-position:center;}/*!sc*/
data-styled.g863[id="sc-xgmw75-9"]{content:"jeGQMA,"}/*!sc*/
.jzJAgH{height:auto;margin-bottom:120px;padding:160px 0 200px;color:#fff;}/*!sc*/
@media (max-width:1201px){.jzJAgH{margin-bottom:88px;}}/*!sc*/
@media (max-width:751px){.jzJAgH{margin-bottom:64px;padding:136px 0;}}/*!sc*/
data-styled.g864[id="sc-1kuct9n-0"]{content:"jzJAgH,"}/*!sc*/
.jqwyOS{margin-bottom:60px;}/*!sc*/
@media (max-width:1201px){.jqwyOS{margin-bottom:44px;}}/*!sc*/
@media (max-width:751px){.jqwyOS{margin-bottom:24px;}}/*!sc*/
data-styled.g865[id="sc-1kuct9n-1"]{content:"jqwyOS,"}/*!sc*/
.cfBLof{width:992px;margin:0 auto;}/*!sc*/
@media (max-width:1201px){.cfBLof{width:100%;}}/*!sc*/
data-styled.g866[id="sc-1kuct9n-2"]{content:"cfBLof,"}/*!sc*/
.efarBD{margin-bottom:60px;}/*!sc*/
@media (max-width:1201px){.efarBD{margin-bottom:36px;}}/*!sc*/
@media (max-width:751px){.efarBD{margin-bottom:12px;}}/*!sc*/
data-styled.g868[id="sc-1kuct9n-4"]{content:"efarBD,"}/*!sc*/
.hXsBII{margin:0 0 100px;}/*!sc*/
@media (max-width:1201px){.hXsBII{margin:0 0 60xp;}}/*!sc*/
@media (max-width:751px){.hXsBII{margin:0 0 28px;}}/*!sc*/
.hXsBII ul{-webkit-column-count:2;column-count:2;-webkit-column-gap:96px;column-gap:96px;}/*!sc*/
@media (max-width:1201px){.hXsBII ul{-webkit-column-gap:20px;column-gap:20px;}}/*!sc*/
@media (max-width:751px){.hXsBII ul{-webkit-column-count:1;column-count:1;}}/*!sc*/
.hXsBII ul li{width:416px;}/*!sc*/
@media (max-width:1201px){.hXsBII ul li{width:332px;}}/*!sc*/
@media (max-width:751px){.hXsBII ul li{width:100%;}.hXsBII ul li b{font-weight:400;}}/*!sc*/
data-styled.g869[id="sc-1kuct9n-5"]{content:"hXsBII,"}/*!sc*/
.ciEuHS{color:#0f0f10;padding:32px 10px 10px;border-top:1px solid #ececec;}/*!sc*/
@media (max-width:751px){.ciEuHS{padding:12px 0 0;}}/*!sc*/
data-styled.g871[id="sc-ptxdl6-0"]{content:"ciEuHS,"}/*!sc*/
.kyVtIH{-webkit-transition:height 0.2s ease-out;transition:height 0.2s ease-out;will-change:height;overflow:hidden;}/*!sc*/
data-styled.g872[id="sc-ptxdl6-1"]{content:"kyVtIH,"}/*!sc*/
.kVdrfk{padding-top:20px;}/*!sc*/
@media (max-width:751px){.kVdrfk{padding-top:12px;}}/*!sc*/
data-styled.g873[id="sc-ptxdl6-2"]{content:"kVdrfk,"}/*!sc*/
.hdRZtB{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;gap:24px;}/*!sc*/
data-styled.g874[id="sc-li015i-0"]{content:"hdRZtB,"}/*!sc*/
.bqYpKB{color:#0f0f10;padding:10px;}/*!sc*/
@media (max-width:751px){.bqYpKB{padding:0;}}/*!sc*/
data-styled.g875[id="sc-li015i-1"]{content:"bqYpKB,"}/*!sc*/
.lfKxpm{cursor:pointer;color:#575757;background:#fff;border-radius:20px;padding:20px 36px 20px 20px;-webkit-tap-highlight-color:transparent;}/*!sc*/
@media (max-width:751px){.lfKxpm{padding:16px 28px 16px 16px;}}/*!sc*/
data-styled.g876[id="sc-li015i-2"]{content:"lfKxpm,"}/*!sc*/
.dbNuvG{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;-webkit-transition:-webkit-transform 0.2s ease-out;-webkit-transition:transform 0.2s ease-out;transition:transform 0.2s ease-out;will-change:transform;-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg);}/*!sc*/
data-styled.g877[id="sc-li015i-3"]{content:"dbNuvG,"}/*!sc*/
.htYSLI{margin-bottom:20px;}/*!sc*/
.htYSLI:last-child{margin-bottom:0;}/*!sc*/
@media (max-width:751px){.htYSLI{margin-bottom:12px;}}/*!sc*/
data-styled.g879[id="sc-tqrjzo-1"]{content:"htYSLI,"}/*!sc*/
.irTCnx{width:992px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;color:#0f0f10;}/*!sc*/
@media (max-width:1201px){.irTCnx{width:100%;}}/*!sc*/
@media (max-width:751px){.irTCnx{width:100%;margin-bottom:28px;}}/*!sc*/
data-styled.g880[id="sc-1mszhjn-0"]{content:"irTCnx,"}/*!sc*/
.kPNZqQ{margin-bottom:40px;}/*!sc*/
@media (max-width:1201px){.kPNZqQ{margin-bottom:24px;}}/*!sc*/
@media (max-width:751px){.kPNZqQ{margin-bottom:20px;}}/*!sc*/
data-styled.g881[id="sc-1mszhjn-1"]{content:"kPNZqQ,"}/*!sc*/
.keMPbH{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;margin-right:24px;}/*!sc*/
@media (max-width:751px){.keMPbH{margin-left:40px;}}/*!sc*/
data-styled.g882[id="sc-yfz19-0"]{content:"keMPbH,"}/*!sc*/
.kEHfjT{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:128px;height:128px;background-image:url(https://cdn.otus.ru/media/public/18/ce/18ce8d7dafaf40cb99eda2d5b03e1a39.png);background-position:center center;background-repeat:no-repeat;background-size:cover;border-radius:50%;}/*!sc*/
.dEWWHa{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:128px;height:128px;background-image:url(https://cdn.otus.ru/media/public/36/df/36df01a954304f0cbeee554225ff1680.jpeg);background-position:center center;background-repeat:no-repeat;background-size:cover;border-radius:50%;}/*!sc*/
data-styled.g883[id="sc-yfz19-1"]{content:"kEHfjT,dEWWHa,"}/*!sc*/
.jaQEyp{white-space:break-spaces;max-height:96px;overflow:hidden;}/*!sc*/
data-styled.g884[id="sc-2yxsal-0"]{content:"jaQEyp,"}/*!sc*/
.gjkZBp{cursor:pointer;display:inline;padding:0;background:transparent;color:#005ece;font:inherit;}/*!sc*/
data-styled.g885[id="sc-2yxsal-1"]{content:"gjkZBp,"}/*!sc*/
.kpFjsV{position:relative;padding:4px;color:#fff;}/*!sc*/
data-styled.g886[id="sc-1pd1pn6-0"]{content:"kpFjsV,"}/*!sc*/
.jpjsGB{position:absolute;top:1px;right:1px;}/*!sc*/
data-styled.g887[id="sc-1pd1pn6-1"]{content:"jpjsGB,"}/*!sc*/
.gCLUsB{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding:24px 64px;color:#0f0f10;}/*!sc*/
@media (max-width:1201px){.gCLUsB{padding:40px 0;}}/*!sc*/
@media (max-width:751px){.gCLUsB{padding:20px 0;}}/*!sc*/
data-styled.g888[id="sc-fgesu2-0"]{content:"gCLUsB,"}/*!sc*/
.fNTfNW{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:1 0;-ms-flex:1 0;flex:1 0;}/*!sc*/
@media (max-width:1201px){.fNTfNW{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}}/*!sc*/
data-styled.g889[id="sc-fgesu2-1"]{content:"fNTfNW,"}/*!sc*/
.fxDzQc{width:480px;margin-right:24px;}/*!sc*/
@media (max-width:1201px){.fxDzQc{width:100%;margin-right:0;margin-bottom:24px;}}/*!sc*/
@media (max-width:751px){.fxDzQc{margin-bottom:12px;}}/*!sc*/
data-styled.g890[id="sc-fgesu2-2"]{content:"fxDzQc,"}/*!sc*/
.eyMrGT{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}/*!sc*/
data-styled.g891[id="sc-fgesu2-3"]{content:"eyMrGT,"}/*!sc*/
.fGVXtz{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-flex:1 0;-ms-flex:1 0;flex:1 0;}/*!sc*/
data-styled.g892[id="sc-fgesu2-4"]{content:"fGVXtz,"}/*!sc*/
.gLvmdB{margin-bottom:12px;}/*!sc*/
@media (max-width:751px){.gLvmdB{margin-bottom:8px;}}/*!sc*/
data-styled.g893[id="sc-fgesu2-5"]{content:"gLvmdB,"}/*!sc*/
.keqBcC{margin-bottom:12px;}/*!sc*/
data-styled.g894[id="sc-fgesu2-6"]{content:"keqBcC,"}/*!sc*/
.eaisXT{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}/*!sc*/
@media (max-width:1201px){.eaisXT{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:flex-start;-webkit-box-align:flex-start;-ms-flex-align:flex-start;align-items:flex-start;}}/*!sc*/
@media (max-width:751px){.eaisXT{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}}/*!sc*/
data-styled.g895[id="sc-fgesu2-7"]{content:"eaisXT,"}/*!sc*/
.cAsFre{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;margin-bottom:24px;}/*!sc*/
@media (max-width:1201px){.cAsFre{margin-bottom:0;margin-right:24px;}}/*!sc*/
@media (max-width:751px){.cAsFre{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;margin-bottom:24px;margin-right:0;}}/*!sc*/
data-styled.g896[id="sc-fgesu2-8"]{content:"cAsFre,"}/*!sc*/
.cLaaQZ{font-weight:700;margin-bottom:8px;}/*!sc*/
@media (max-width:1201px){.cLaaQZ{margin-bottom:4px;}}/*!sc*/
@media (max-width:751px){.cLaaQZ{margin-bottom:0;margin-right:24px;}}/*!sc*/
data-styled.g897[id="sc-fgesu2-9"]{content:"cLaaQZ,"}/*!sc*/
.hIqDgT{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;margin:0 0 0 auto;}/*!sc*/
@media (max-width:751px){.hIqDgT{margin:0;}}/*!sc*/
data-styled.g898[id="sc-fgesu2-10"]{content:"hIqDgT,"}/*!sc*/
.fPQjfN{width:240px;margin-right:24px;}/*!sc*/
@media (max-width:1201px){.fPQjfN{width:164px;}}/*!sc*/
@media (max-width:751px){.fPQjfN{width:248px;}}/*!sc*/
data-styled.g899[id="sc-fgesu2-11"]{content:"fPQjfN,"}/*!sc*/
.dgeiLf{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;}/*!sc*/
data-styled.g902[id="sc-fgesu2-14"]{content:"dgeiLf,"}/*!sc*/
.kTlAtn{margin-bottom:80px;color:#0f0f10;}/*!sc*/
data-styled.g903[id="sc-1n8zn8-0"]{content:"kTlAtn,"}/*!sc*/
.eVtlSO h2{font:inherit;margin-bottom:24px;}/*!sc*/
@media (max-width:1201px){.eVtlSO h2{margin-bottom:18px;}}/*!sc*/
@media (max-width:751px){.eVtlSO h2{margin-bottom:24px;}}/*!sc*/
data-styled.g904[id="sc-1n8zn8-1"]{content:"eVtlSO,"}/*!sc*/
.djvzct{margin-bottom:40px;}/*!sc*/
@media (max-width:751px){.djvzct{margin-bottom:60px;}}/*!sc*/
data-styled.g905[id="sc-1n8zn8-2"]{content:"djvzct,"}/*!sc*/
.bNPdJC{width:992px;margin:0 auto;}/*!sc*/
@media (max-width:1201px){.bNPdJC{width:100%;}}/*!sc*/
data-styled.g906[id="sc-1n8zn8-3"]{content:"bNPdJC,"}/*!sc*/
.eruVPL{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}/*!sc*/
data-styled.g907[id="sc-1n8zn8-4"]{content:"eruVPL,"}/*!sc*/
.hVfuYc{color:#0f0f10;padding:40px 96px;width:992px;}/*!sc*/
@media (max-width:1201px){.hVfuYc{width:688px;padding:40px 46px;}}/*!sc*/
@media (max-width:751px){.hVfuYc{width:100%;padding:76px 20px;}}/*!sc*/
data-styled.g908[id="sc-1n8zn8-5"]{content:"hVfuYc,"}/*!sc*/
.gwYuWO.gwYuWO{width:416px;}/*!sc*/
@media (max-width:751px){.gwYuWO.gwYuWO{width:100%;}}/*!sc*/
data-styled.g909[id="sc-kixk9v-0"]{content:"gwYuWO,"}/*!sc*/
.dgWykw{margin-left:8px;}/*!sc*/
data-styled.g910[id="sc-3cb1l3-0"]{content:"dgWykw,"}/*!sc*/
.galmep{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;background-color:#fff;width:992px;height:64px;margin:40px auto 0;padding:16px 20px;border-radius:20px;}/*!sc*/
@media (max-width:1201px){.galmep{width:100%;height:auto;padding:16px 24px;}}/*!sc*/
@media (max-width:751px){.galmep{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;margin-top:48px;padding:24px 12px;}}/*!sc*/
data-styled.g911[id="sc-3cb1l3-1"]{content:"galmep,"}/*!sc*/
.jeNzke{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;-webkit-flex:1;-ms-flex:1;flex:1;margin:auto 0;}/*!sc*/
@media (max-width:1201px){.jeNzke{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;}}/*!sc*/
@media (max-width:751px){.jeNzke{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}}/*!sc*/
data-styled.g913[id="sc-3cb1l3-3"]{content:"jeNzke,"}/*!sc*/
.kGoYMV{color:#0f0f10;position:relative;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;padding:0 20px;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;}/*!sc*/
.kGoYMV:after{content:'';background-color:#afafaf;height:24px;width:1px;position:absolute;top:50%;left:0;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);}/*!sc*/
.kGoYMV:first-child:after{display:none;}/*!sc*/
@media (max-width:1201px){.kGoYMV{-webkit-flex:1 0 50%;-ms-flex:1 0 50%;flex:1 0 50%;max-width:50%;-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start;margin-top:32px;}.kGoYMV:after{display:none;}.kGoYMV:nth-child(-n + 2){margin-top:0;}}/*!sc*/
@media (max-width:751px){.kGoYMV{-webkit-flex:1 0 100%;-ms-flex:1 0 100%;flex:1 0 100%;max-width:100%;margin-top:24px;}.kGoYMV:nth-child(-n + 2){margin-top:24px;}.kGoYMV:first-child{margin-top:0;}}/*!sc*/
data-styled.g914[id="sc-3cb1l3-4"]{content:"kGoYMV,"}/*!sc*/
.golIF{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-right:10px;}/*!sc*/
@media (max-width:751px){.golIF{display:none;}}/*!sc*/
data-styled.g917[id="sc-1vxm7ng-0"]{content:"golIF,"}/*!sc*/
.dbOiAN{margin:0 16px;}/*!sc*/
data-styled.g918[id="sc-1vxm7ng-1"]{content:"dbOiAN,"}/*!sc*/
.jxmQOK{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:18px;}/*!sc*/
.jxmQOK a{position:relative;}/*!sc*/
.jxmQOK a:hover::after{background-color:transparent;}/*!sc*/
.jxmQOK a::after{-webkit-transition:background-color 0.2s ease-out;transition:background-color 0.2s ease-out;will-change:background-color;content:'';position:absolute;bottom:-4px;left:0;width:100%;height:1px;background-color:currentColor;}/*!sc*/
@media (max-width:1201px){.jxmQOK{font-size:16px;}}/*!sc*/
data-styled.g919[id="sc-1vxm7ng-2"]{content:"jxmQOK,"}/*!sc*/
.ivApKl{display:inline;margin-left:16px;background-size:12px 1px;background-repeat:repeat-x;background-position:0 100%;background-image:linear-gradient( to right,#fff 50%,rgba(255,255,255,0) 0% );padding-bottom:4px;white-space:nowrap;}/*!sc*/
data-styled.g920[id="sc-5am0g3-0"]{content:"ivApKl,"}/*!sc*/
.eFljfP{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;cursor:pointer;margin:0 12px 20px;}/*!sc*/
@media (min-width:1200px){.eFljfP:hover .sc-5am0g3-0{color:#ffd709;background-image:linear-gradient( to right,#ffd709 50%,rgba(255,255,255,0) 0% );}}/*!sc*/
@media (max-width:1201px){.eFljfP{margin:0 12px 12px;}}/*!sc*/
@media (max-width:751px){}/*!sc*/
data-styled.g921[id="sc-5am0g3-1"]{content:"eFljfP,"}/*!sc*/
.kHeeQv{max-width:260px;padding:20px 24px;text-align:center;}/*!sc*/
@media (max-width:751px){.kHeeQv{max-width:calc(100% - 32px);width:100%;}.kHeeQv[data-popper-placement^='bottom-end']::before{right:44px;}}/*!sc*/
data-styled.g922[id="sc-5am0g3-2"]{content:"kHeeQv,"}/*!sc*/
.jDOZfu{position:absolute;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;-webkit-align-items:flex-start;-webkit-box-align:flex-start;-ms-flex-align:flex-start;align-items:flex-start;min-width:100%;margin-top:24px;padding:0 41px;z-index:10;}/*!sc*/
@media (max-width:751px){.jDOZfu{padding:0 16.5px;}}/*!sc*/
data-styled.g928[id="sc-4o7hfp-0"]{content:"jDOZfu,"}/*!sc*/
.eBROUt{-webkit-flex:0;-ms-flex:0;flex:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:flex-start;-webkit-box-align:flex-start;-ms-flex-align:flex-start;align-items:flex-start;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;right:0;margin:0 0 0 auto;}/*!sc*/
@media (max-width:1201px){.eBROUt{-webkit-flex:auto;-ms-flex:auto;flex:auto;-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;}}/*!sc*/
@media (max-width:751px){.eBROUt{width:100%;left:0;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;}}/*!sc*/
data-styled.g929[id="sc-4o7hfp-1"]{content:"eBROUt,"}/*!sc*/
.fHVRxg{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;margin:0 -12px;}/*!sc*/
@media (max-width:1201px){.fHVRxg{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;}}/*!sc*/
data-styled.g930[id="sc-4o7hfp-2"]{content:"fHVRxg,"}/*!sc*/
.pkSWX{color:#ffd709;}/*!sc*/
data-styled.g932[id="sc-4o7hfp-4"]{content:"pkSWX,"}/*!sc*/
.eufkJz{position:relative;padding-bottom:60px;color:#fff;}/*!sc*/
@media (max-width:1201px){.eufkJz{padding-bottom:80px;}}/*!sc*/
@media (max-width:751px){.eufkJz{padding-bottom:40px;}}/*!sc*/
data-styled.g934[id="sc-s2pydo-0"]{content:"eufkJz,"}/*!sc*/
.diGrSa{width:654px;margin-bottom:24px;text-align:center;}/*!sc*/
@media (max-width:1201px){.diGrSa{width:468px;}}/*!sc*/
@media (max-width:751px){.diGrSa{width:100%;}}/*!sc*/
data-styled.g935[id="sc-s2pydo-1"]{content:"diGrSa,"}/*!sc*/
.kSoRAw{margin-bottom:24px;height:80px;width:80px;background-image:url(https://cdn.otus.ru/media/public/52/cc/52ccd635521642d4ba7d251cc45e15d8.svg);background-repeat:no-repeat;background-size:100% 100%;}/*!sc*/
@media (max-width:1201px){.kSoRAw{margin-bottom:40px;}}/*!sc*/
@media (max-width:751px){.kSoRAw{margin-bottom:24px;}}/*!sc*/
data-styled.g936[id="sc-s2pydo-2"]{content:"kSoRAw,"}/*!sc*/
.dZDxRw{width:640px;margin-bottom:40px;text-align:center;}/*!sc*/
@media (max-width:751px){.dZDxRw{margin-bottom:24px;width:100%;}}/*!sc*/
data-styled.g937[id="sc-s2pydo-3"]{content:"dZDxRw,"}/*!sc*/
.EOCgR{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}/*!sc*/
data-styled.g939[id="sc-s2pydo-6"]{content:"EOCgR,"}/*!sc*/
.iHjMxQ{padding:134px 0 200px;}/*!sc*/
@media (max-width:1201px){.iHjMxQ{padding-top:152px;}}/*!sc*/
@media (max-width:751px){.iHjMxQ{padding:128px 0 136px;}}/*!sc*/
data-styled.g940[id="sc-s2pydo-5"]{content:"iHjMxQ,"}/*!sc*/
.fYPwsY.fYPwsY{width:480px;}/*!sc*/
@media (max-width:1201px){.fYPwsY.fYPwsY{width:100%;}}/*!sc*/
data-styled.g941[id="sc-n3p609-0"]{content:"fYPwsY,"}/*!sc*/
.caypgj{margin-bottom:32px;}/*!sc*/
data-styled.g942[id="sc-n3p609-1"]{content:"caypgj,"}/*!sc*/
.gAbnmq{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;color:#0f0f10;-webkit-flex:1 0 480px;-ms-flex:1 0 480px;flex:1 0 480px;margin-right:32px;margin-bottom:32px;}/*!sc*/
.gAbnmq:nth-child(2n){margin-right:0;}/*!sc*/
.gAbnmq:nth-last-child(-n + 2){margin-bottom:0;}/*!sc*/
@media (max-width:1201px){.gAbnmq{-webkit-flex-basis:100%;-ms-flex-preferred-size:100%;flex-basis:100%;margin-right:0;margin-bottom:24px;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.gAbnmq:nth-last-child(-n + 2){margin-bottom:24px;}.gAbnmq:last-child{margin-bottom:0;}}/*!sc*/
@media (max-width:751px){.gAbnmq{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:flex-start;-webkit-box-align:flex-start;-ms-flex-align:flex-start;align-items:flex-start;}.gAbnmq:nth-last-child(-n + 2){margin-bottom:40px;}}/*!sc*/
data-styled.g944[id="sc-1l3meww-0"]{content:"gAbnmq,"}/*!sc*/
.hEneaN{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:256px;height:144px;border-radius:20px;margin-right:32px;background-image:url(https://sun9-35.userapi.com/impg/YTFTued77RBtiw3wrJjBEaZ3EokMgwRhdcEw_A/zI5fq6JRpLE.jpg?size=320x240&quality=95&keep_aspect_ratio=1&background=000000&sign=15c5664087ce76e4770dbc2cb3ca5a5b&c_uniq_tag=plMopAoT5koKLTdqx0MylV9Tez8HMWlb4M6qwKuYjdI&type=video_thumb);background-position:center center;background-repeat:no-repeat;background-size:cover;cursor:pointer;}/*!sc*/
@media (max-width:1201px){.hEneaN{margin-right:40px;}}/*!sc*/
@media (max-width:751px){.hEneaN{margin-right:0;margin-bottom:12px;width:320px;height:177px;}}/*!sc*/
.bpHLik{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:256px;height:144px;border-radius:20px;margin-right:32px;background-image:url(https://i.mycdn.me/videoPreview?ct=-30&id=9472530320004&idx=0&od=1&type=32&tkn=6T4OhjaN_Tpds4u17qflyO9Y5z0&fn=vid_l);background-position:center center;background-repeat:no-repeat;background-size:cover;cursor:pointer;}/*!sc*/
@media (max-width:1201px){.bpHLik{margin-right:40px;}}/*!sc*/
@media (max-width:751px){.bpHLik{margin-right:0;margin-bottom:12px;width:320px;height:177px;}}/*!sc*/
data-styled.g945[id="sc-1l3meww-1"]{content:"hEneaN,bpHLik,"}/*!sc*/
.cHxJxf{width:192px;}/*!sc*/
@media (max-width:1201px){.cHxJxf{width:320px;}}/*!sc*/
data-styled.g946[id="sc-1l3meww-2"]{content:"cHxJxf,"}/*!sc*/
.blhXzJ{white-space:nowrap;overflow:auto;text-overflow:ellipsis;margin-bottom:4px;}/*!sc*/
@media (max-width:1201px){.blhXzJ{margin-bottom:8px;}}/*!sc*/
data-styled.g947[id="sc-1l3meww-3"]{content:"blhXzJ,"}/*!sc*/
.dePnfm{margin-bottom:12px;}/*!sc*/
@media (max-width:1201px){.dePnfm{margin-bottom:8px;}}/*!sc*/
data-styled.g948[id="sc-1l3meww-4"]{content:"dePnfm,"}/*!sc*/
.gnNvLT{word-wrap:break-word;overflow:hidden;max-height:192px;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;}/*!sc*/
data-styled.g949[id="sc-1l3meww-5"]{content:"gnNvLT,"}/*!sc*/
.hkpcCk{color:#fff;}/*!sc*/
data-styled.g951[id="sc-1l3meww-7"]{content:"hkpcCk,"}/*!sc*/
.frFtzw{background:#fff;border-radius:20px;padding:64px;margin-bottom:120px;color:#0f0f10;}/*!sc*/
@media (max-width:1201px){.frFtzw{padding:40px 32px;margin-bottom:152px;}}/*!sc*/
@media (max-width:751px){.frFtzw{padding:20px 16px;margin-bottom:116px;}}/*!sc*/
data-styled.g952[id="sc-g9zqla-0"]{content:"frFtzw,"}/*!sc*/
.jqTCqB{margin-bottom:40px;}/*!sc*/
@media (max-width:751px){.jqTCqB{margin-bottom:24px;}}/*!sc*/
data-styled.g953[id="sc-g9zqla-1"]{content:"jqTCqB,"}/*!sc*/
.nExnN{display:none;}/*!sc*/
@media (max-width:1201px){.nExnN{display:block;}}/*!sc*/
@media (max-width:751px){.nExnN{display:none;}}/*!sc*/
data-styled.g954[id="sc-g9zqla-2"]{content:"nExnN,"}/*!sc*/
.cmzqGo{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin-bottom:32px;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;}/*!sc*/
@media (max-width:1201px){.cmzqGo{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}}/*!sc*/
@media (max-width:751px){.cmzqGo{margin-bottom:0;}}/*!sc*/
data-styled.g955[id="sc-g9zqla-3"]{content:"cmzqGo,"}/*!sc*/
.yFPt{font-size:16px;line-height:24px;font-weight:700;padding:12px 32px;cursor:pointer;border-radius:100px;color:#000;background:transparent;white-space:nowrap;-webkit-tap-highlight-color:transparent;cursor:default;background:#ffd709;}/*!sc*/
@media (max-width:751px){.yFPt{font-size:14px;line-height:20px;font-weight:700;padding:12px 24px;}}/*!sc*/
.hubLMz{font-size:16px;line-height:24px;font-weight:700;padding:12px 32px;cursor:pointer;border-radius:100px;color:#000;background:transparent;white-space:nowrap;-webkit-tap-highlight-color:transparent;}/*!sc*/
@media (max-width:751px){.hubLMz{font-size:14px;line-height:20px;font-weight:700;padding:12px 24px;}}/*!sc*/
data-styled.g995[id="sc-zkx93-0"]{content:"yFPt,hubLMz,"}/*!sc*/
.gPfNRv{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;background:#fff;border-radius:100px;}/*!sc*/
data-styled.g996[id="sc-t8narm-0"]{content:"gPfNRv,"}/*!sc*/
.gosVbC{margin:0 0 35px;}/*!sc*/
@media (max-width:1201px){.gosVbC{margin:0 0 40px;}}/*!sc*/
@media (max-width:751px){.gosVbC{margin:0 0 24px;}}/*!sc*/
data-styled.g997[id="sc-1peufw-0"]{content:"gosVbC,"}/*!sc*/
.lYQex{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-align-items:flex-start;-webkit-box-align:flex-start;-ms-flex-align:flex-start;align-items:flex-start;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;margin:12px 0 30px;}/*!sc*/
@media (max-width:751px){.lYQex{-webkit-align-items:flex-start;-webkit-box-align:flex-start;-ms-flex-align:flex-start;align-items:flex-start;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}}/*!sc*/
@media (max-width:751px){.lYQex{margin:10px 0 24px;}}/*!sc*/
data-styled.g998[id="sc-1peufw-1"]{content:"lYQex,"}/*!sc*/
.iKtgdB{font-family:'IBM Plex Sans','Roboto',sans-serif;height:48px;}/*!sc*/
@media (max-width:751px){.iKtgdB{height:36px;}}/*!sc*/
data-styled.g999[id="sc-1peufw-2"]{content:"iKtgdB,"}/*!sc*/
.iLnntQ{position:relative;bottom:-8px;font-size:25px;}/*!sc*/
@media (max-width:751px){.iLnntQ{bottom:-6px;font-size:19px;}}/*!sc*/
data-styled.g1001[id="sc-1peufw-4"]{content:"iLnntQ,"}/*!sc*/
.dAAQHW{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin-bottom:24px;}/*!sc*/
data-styled.g1002[id="sc-147fm2r-0"]{content:"dAAQHW,"}/*!sc*/
.cnspAU{margin-right:24px;}/*!sc*/
data-styled.g1003[id="sc-147fm2r-1"]{content:"cnspAU,"}/*!sc*/
.ewmmcs{border-top:1px solid #fff;margin-bottom:24px;width:288px;}/*!sc*/
@media (max-width:1201px){.ewmmcs{width:100%;}}/*!sc*/
data-styled.g1004[id="sc-1r0uxxj-0"]{content:"ewmmcs,"}/*!sc*/
.bPBPRV{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;color:#fff;}/*!sc*/
data-styled.g1005[id="sc-1r0uxxj-1"]{content:"bPBPRV,"}/*!sc*/
.eewVHU{display:none;}/*!sc*/
@media (max-width:751px){.eewVHU{display:block;}}/*!sc*/
data-styled.g1006[id="sc-1r0uxxj-2"]{content:"eewVHU,"}/*!sc*/
.kMVdSV{position:relative;cursor:pointer;}/*!sc*/
.kMVdSV:after{content:'';position:absolute;bottom:1px;left:0;width:100%;height:1px;border-bottom:1px solid #fff;}/*!sc*/
data-styled.g1007[id="sc-1r0uxxj-3"]{content:"kMVdSV,"}/*!sc*/
.hgTHTJ{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}/*!sc*/
data-styled.g1008[id="sc-10kui61-0"]{content:"hgTHTJ,"}/*!sc*/
.gEGbfQ{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;margin-bottom:60px;}/*!sc*/
@media (max-width:751px){.gEGbfQ{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;width:100%;margin-bottom:52px;}}/*!sc*/
data-styled.g1009[id="sc-10kui61-1"]{content:"gEGbfQ,"}/*!sc*/
.bpPrAe{margin-bottom:36px;}/*!sc*/
@media (max-width:1201px){.bpPrAe{display:none;}}/*!sc*/
data-styled.g1010[id="sc-10kui61-2"]{content:"bpPrAe,"}/*!sc*/
.bTFiyu{-webkit-flex:1 0 416px;-ms-flex:1 0 416px;flex:1 0 416px;margin-left:96px;}/*!sc*/
@media (max-width:1201px){.bTFiyu{-webkit-flex-basis:100%;-ms-flex-preferred-size:100%;flex-basis:100%;margin-left:0;}}/*!sc*/
data-styled.g1011[id="sc-7ugo7y-0"]{content:"bTFiyu,"}/*!sc*/
.iOYphy{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:40px 32px;background:#fff;color:#0f0f10;border-radius:20px;}/*!sc*/
@media (max-width:751px){.iOYphy{padding:20px 16px;}}/*!sc*/
data-styled.g1012[id="sc-7ugo7y-1"]{content:"iOYphy,"}/*!sc*/
.jFFNWn{margin-top:20px;}/*!sc*/
data-styled.g1018[id="sc-ne2nun-0"]{content:"jFFNWn,"}/*!sc*/
.cWqojy{color:#4749c0;position:relative;background:none;padding:0;cursor:pointer;}/*!sc*/
.cWqojy:hover{-webkit-text-decoration:underline;text-decoration:underline;}/*!sc*/
.cWqojy:active{color:#585cff;-webkit-text-decoration:none;text-decoration:none;}/*!sc*/
data-styled.g1020[id="sc-ne2nun-2"]{content:"cWqojy,"}/*!sc*/
.kgGhBx{margin-bottom:12px;}/*!sc*/
data-styled.g1023[id="sc-1u84tez-2"]{content:"kgGhBx,"}/*!sc*/
.lcNwWc{margin-bottom:20px;}/*!sc*/
data-styled.g1024[id="sc-1u84tez-3"]{content:"lcNwWc,"}/*!sc*/
.VNvrk{width:992px;}/*!sc*/
@media (max-width:1201px){.VNvrk{width:100%;}}/*!sc*/
data-styled.g1026[id="sc-mgf5g0-0"]{content:"VNvrk,"}/*!sc*/
.cGuqjL{position:relative;height:auto;margin-bottom:120px;padding:160px 0 200px;color:#fff;}/*!sc*/
@media (max-width:751px){.cGuqjL{margin-bottom:92px;padding:136px 0;}}/*!sc*/
data-styled.g1027[id="sc-mgf5g0-1"]{content:"cGuqjL,"}/*!sc*/
.dBpQzV{height:80px;width:80px;background-image:url(https://cdn.otus.ru/media/public/52/cc/52ccd635521642d4ba7d251cc45e15d8.svg);background-repeat:no-repeat;background-size:100% 100%;margin-right:24px;}/*!sc*/
@media (max-width:751px){.dBpQzV{margin-right:0;margin-bottom:16px;}}/*!sc*/
data-styled.g1028[id="sc-mgf5g0-2"]{content:"dBpQzV,"}/*!sc*/
.iMmpz{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:60px;}/*!sc*/
@media (max-width:1201px){.iMmpz{margin-bottom:80px;}}/*!sc*/
@media (max-width:751px){.iMmpz{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:40px;}}/*!sc*/
data-styled.g1029[id="sc-mgf5g0-3"]{content:"iMmpz,"}/*!sc*/
.cIkHKG{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}/*!sc*/
@media (max-width:1201px){.cIkHKG{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}}/*!sc*/
data-styled.g1030[id="sc-mgf5g0-4"]{content:"cIkHKG,"}/*!sc*/
.cHLoOP{text-align:center;}/*!sc*/
data-styled.g1031[id="sc-mgf5g0-5"]{content:"cHLoOP,"}/*!sc*/
.kiGnqS{margin-top:40px;display:none;}/*!sc*/
@media (max-width:1201px){.kiGnqS{display:inherit;}}/*!sc*/
data-styled.g1032[id="sc-mgf5g0-6"]{content:"kiGnqS,"}/*!sc*/
.jFkdvO{background:linear-gradient( 99.66deg,#373737 11.62%,#111111 87.01% );display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;margin:120px 0 0;padding:54px 64px;border-radius:20px;box-shadow:0px 0px 49px rgba(0,0,0,0.05);}/*!sc*/
@media (max-width:1201px){.jFkdvO{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:normal;-webkit-box-align:normal;-ms-flex-align:normal;align-items:normal;padding:48px 64px;}}/*!sc*/
@media (max-width:1201px){.jFkdvO{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;padding:40px 24px;}}/*!sc*/
data-styled.g1033[id="sc-hqry8z-0"]{content:"jFkdvO,"}/*!sc*/
.byqrft{-webkit-flex:1;-ms-flex:1;flex:1;color:#fff;white-space:pre-wrap;}/*!sc*/
@media (max-width:751px){.byqrft{white-space:normal;}}/*!sc*/
data-styled.g1034[id="sc-hqry8z-1"]{content:"byqrft,"}/*!sc*/
.ipIyzP{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;width:288px;margin:0 32px 0 0;}/*!sc*/
@media (max-width:1201px){.ipIyzP{width:100%;margin:32px 0 0;}}/*!sc*/
@media (max-width:1201px){.ipIyzP{margin:28px 0 0;}}/*!sc*/
data-styled.g1035[id="sc-hqry8z-2"]{content:"ipIyzP,"}/*!sc*/
.kGaApg:not(:last-child){margin-bottom:24px;}/*!sc*/
data-styled.g1036[id="sc-1dvzzbq-0"]{content:"kGaApg,"}/*!sc*/
.bTvRzO{margin-bottom:40px;}/*!sc*/
.bTvRzO:last-child{margin-bottom:0;}/*!sc*/
@media (max-width:1201px){.bTvRzO{margin-bottom:32px;}}/*!sc*/
@media (max-width:751px){.bTvRzO{margin-bottom:24px;}}/*!sc*/
data-styled.g1038[id="sc-yxq6ju-1"]{content:"bTvRzO,"}/*!sc*/
.kOagS{padding-top:40px;}/*!sc*/
@media (max-width:1201px){.kOagS{padding-top:32px;}}/*!sc*/
@media (max-width:751px){.kOagS{padding-top:24px;}}/*!sc*/
data-styled.g1039[id="sc-12j3cf5-0"]{content:"kOagS,"}/*!sc*/
.jTjgBj{margin:0 0 24px;}/*!sc*/
@media (max-width:751px){.jTjgBj{margin:0 0 16px;}}/*!sc*/
data-styled.g1040[id="sc-12j3cf5-1"]{content:"jTjgBj,"}/*!sc*/
.cmpQoV{margin-bottom:120px;padding-top:80px;border-top:1px solid #afafaf;}/*!sc*/
@media (max-width:1201px){.cmpQoV{margin-bottom:58px;}}/*!sc*/
@media (max-width:751px){.cmpQoV{margin-bottom:64px;}}/*!sc*/
data-styled.g1047[id="sc-1am6qh7-0"]{content:"cmpQoV,"}/*!sc*/
.bmcDgO{width:992px;margin:0 auto;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;color:#0f0f10;}/*!sc*/
@media (max-width:1201px){.bmcDgO{width:100%;}}/*!sc*/
@media (max-width:751px){.bmcDgO{width:100%;}}/*!sc*/
data-styled.g1048[id="sc-1am6qh7-1"]{content:"bmcDgO,"}/*!sc*/
.jZdzTX{margin-bottom:76px;}/*!sc*/
@media (max-width:1201px){.jZdzTX{margin-bottom:84px;}}/*!sc*/
@media (max-width:751px){.jZdzTX{margin-bottom:32px;}}/*!sc*/
data-styled.g1049[id="sc-1am6qh7-2"]{content:"jZdzTX,"}/*!sc*/
.coDgWq{width:512px;}/*!sc*/
@media (max-width:1201px){.coDgWq{width:500px;}}/*!sc*/
@media (max-width:751px){.coDgWq{width:352px;}}/*!sc*/
data-styled.g1050[id="sc-wqbts8-0"]{content:"coDgWq,"}/*!sc*/
.jjMVIs{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:992px;margin:0 auto 212px;}/*!sc*/
@media (max-width:1201px){.jjMVIs{margin-bottom:198px;-webkit-flex-direction:column-reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100%;}}/*!sc*/
@media (max-width:751px){.jjMVIs{margin-bottom:136px;}}/*!sc*/
data-styled.g1051[id="sc-130tum6-0"]{content:"jjMVIs,"}/*!sc*/
.leLsGR{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;max-width:480px;}/*!sc*/
.leLsGR h2{font-family:'IBM Plex Sans','Roboto',sans-serif;font-size:52px;line-height:64px;}/*!sc*/
@media (max-width:1201px){.leLsGR h2{font-size:52px;line-height:64px;max-width:100%;margin-top:66px;}}/*!sc*/
@media (max-width:751px){.leLsGR h2{font-size:24px;line-height:28px;margin-top:28px;}}/*!sc*/
@media (max-width:1201px){.leLsGR{max-width:100%;margin-top:66px;}}/*!sc*/
@media (max-width:751px){.leLsGR{margin-top:28px;}}/*!sc*/
data-styled.g1052[id="sc-130tum6-1"]{content:"leLsGR,"}/*!sc*/
.ervbDS{margin:0 12px 0 0;}/*!sc*/
.ervbDS:last-child{margin:0;}/*!sc*/
data-styled.g1073[id="sc-e8trbg-0"]{content:"ervbDS,"}/*!sc*/
.hejpaX{color:#afafaf;}/*!sc*/
data-styled.g1074[id="sc-uyf7sm-0"]{content:"hejpaX,"}/*!sc*/
.gQNEkq{padding:40px 64px;background:#fff;border-radius:20px;height:100%;}/*!sc*/
@media (max-width:1201px){.gQNEkq.swiper-slide{width:544px;padding:40px;}}/*!sc*/
@media (max-width:751px){.gQNEkq.swiper-slide{width:100%;margin:0;padding:24px 16px;}}/*!sc*/
data-styled.g1075[id="sc-h3yero-0"]{content:"gQNEkq,"}/*!sc*/
.kaQYTv{color:#0f0f10;margin-bottom:16px;}/*!sc*/
@media (max-width:751px){.kaQYTv{margin-bottom:4px;}}/*!sc*/
data-styled.g1076[id="sc-h3yero-1"]{content:"kaQYTv,"}/*!sc*/
.dOvyBf{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin-bottom:20px;}/*!sc*/
data-styled.g1077[id="sc-h3yero-2"]{content:"dOvyBf,"}/*!sc*/
.keJcdl{margin-right:24px;}/*!sc*/
data-styled.g1078[id="sc-h3yero-3"]{content:"keJcdl,"}/*!sc*/
.kdyqKM{width:88px;height:88px;border-radius:50%;background-image:url(https://cdn.otus.ru/media/public/56/1e/avatar-478853-561e3c.png);background-repeat:no-repeat;background-size:cover;}/*!sc*/
@media (max-width:751px){.kdyqKM{width:60px;height:60px;}}/*!sc*/
.dnuDNF{width:88px;height:88px;border-radius:50%;background-image:url(https://cdn.otus.ru/media/public/b1/1f/avatar-476563-b11f8e.png);background-repeat:no-repeat;background-size:cover;}/*!sc*/
@media (max-width:751px){.dnuDNF{width:60px;height:60px;}}/*!sc*/
.cbmZrn{width:88px;height:88px;border-radius:50%;background-image:url(https://cdn.otus.ru/media/public/a7/03/avatar-64883-a70365.png);background-repeat:no-repeat;background-size:cover;}/*!sc*/
@media (max-width:751px){.cbmZrn{width:60px;height:60px;}}/*!sc*/
.cByCBV{width:88px;height:88px;border-radius:50%;background-image:url(https://cdn.otus.ru/media/public/a1/68/avatar-1801-a168dd.png);background-repeat:no-repeat;background-size:cover;}/*!sc*/
@media (max-width:751px){.cByCBV{width:60px;height:60px;}}/*!sc*/
.cvSwCn{width:88px;height:88px;border-radius:50%;background-image:url(https://cdn.otus.ru/media/public/70/8c/avatar-1801-708cf0.png);background-repeat:no-repeat;background-size:cover;}/*!sc*/
@media (max-width:751px){.cvSwCn{width:60px;height:60px;}}/*!sc*/
.jdYMLb{width:88px;height:88px;border-radius:50%;background-image:url(https://cdn.otus.ru/media/public/14/94/avatar-1801-149497.png);background-repeat:no-repeat;background-size:cover;}/*!sc*/
@media (max-width:751px){.jdYMLb{width:60px;height:60px;}}/*!sc*/
data-styled.g1079[id="sc-h3yero-4"]{content:"kdyqKM,dnuDNF,cbmZrn,cByCBV,cvSwCn,jdYMLb,"}/*!sc*/
.dYfXnT{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;max-width:30%;}/*!sc*/
@media (max-width:1201px){.dYfXnT{max-width:208px;}}/*!sc*/
@media (max-width:751px){.dYfXnT{max-width:92px;}}/*!sc*/
data-styled.g1080[id="sc-h3yero-5"]{content:"dYfXnT,"}/*!sc*/
.bXBhOa{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;justify-self:flex-start;margin-left:auto;}/*!sc*/
data-styled.g1081[id="sc-h3yero-6"]{content:"bXBhOa,"}/*!sc*/
.fwXQYP{color:#0f0f10;margin-bottom:16px;word-wrap:break-word;overflow:hidden;max-height:168px;display:-webkit-box;-webkit-line-clamp:7;-webkit-box-orient:vertical;}/*!sc*/
@media (max-width:1201px){.fwXQYP{word-wrap:break-word;overflow:hidden;max-height:144px;display:-webkit-box;-webkit-line-clamp:6;-webkit-box-orient:vertical;}}/*!sc*/
@media (max-width:751px){.fwXQYP{word-wrap:break-word;overflow:hidden;max-height:216px;display:-webkit-box;-webkit-line-clamp:9;-webkit-box-orient:vertical;}}/*!sc*/
data-styled.g1083[id="sc-h3yero-8"]{content:"fwXQYP,"}/*!sc*/
.dXezGA{margin-bottom:120px;position:relative;}/*!sc*/
@media (max-width:751px){.dXezGA{margin-bottom:80px;}}/*!sc*/
data-styled.g1085[id="sc-h0c1ca-0"]{content:"dXezGA,"}/*!sc*/
@media (min-width:1200px){.gaiDWC{margin:-16px -16px 0;}}/*!sc*/
data-styled.g1086[id="sc-h0c1ca-1"]{content:"gaiDWC,"}/*!sc*/
.dygiGU{margin-left:64px;margin-bottom:60px;color:#0f0f10;}/*!sc*/
@media (max-width:1201px){.dygiGU{margin-left:0;margin-bottom:44px;}}/*!sc*/
@media (max-width:751px){.dygiGU{margin-bottom:24px;}}/*!sc*/
data-styled.g1089[id="sc-h0c1ca-4"]{content:"dygiGU,"}/*!sc*/
@media (max-width:1201px){.vuxta .swiper{margin-right:-36px;}}/*!sc*/
@media (max-width:751px){.vuxta .swiper{margin-right:0;}}/*!sc*/
data-styled.g1090[id="sc-h0c1ca-5"]{content:"vuxta,"}/*!sc*/
.gqeIyk{background-image:url(https://cdn.otus.ru/media/public/36/df/36df01a954304f0cbeee554225ff1680.jpeg);background-repeat:no-repeat;background-position:50% 50%;background-size:cover;position:relative;width:100%;height:100%;border-radius:15px;}/*!sc*/
@media (min-width:1200px){.gqeIyk:before{-webkit-transition:opacity 0.2s ease-out;transition:opacity 0.2s ease-out;will-change:opacity;content:'';position:absolute;width:100%;height:100%;top:0;left:0;background-color:#fff;z-index:2;opacity:0.1;border-radius:inherit;}}/*!sc*/
.jdiWqV{background-image:url(https://cdn.otus.ru/media/public/18/ce/18ce8d7dafaf40cb99eda2d5b03e1a39.png);background-repeat:no-repeat;background-position:50% 50%;background-size:cover;position:relative;width:100%;height:100%;border-radius:15px;}/*!sc*/
@media (min-width:1200px){.jdiWqV:before{-webkit-transition:opacity 0.2s ease-out;transition:opacity 0.2s ease-out;will-change:opacity;content:'';position:absolute;width:100%;height:100%;top:0;left:0;background-color:#fff;z-index:2;opacity:0.1;border-radius:inherit;}}/*!sc*/
.egYrFK{background-image:url(https://cdn.otus.ru/media/public/4f/f3/4ff3ca0cc9c94e2696ddaa0bf848001b.png);background-repeat:no-repeat;background-position:50% 50%;background-size:cover;position:relative;width:100%;height:100%;border-radius:15px;}/*!sc*/
@media (min-width:1200px){.egYrFK:before{-webkit-transition:opacity 0.2s ease-out;transition:opacity 0.2s ease-out;will-change:opacity;content:'';position:absolute;width:100%;height:100%;top:0;left:0;background-color:#fff;z-index:2;opacity:0.1;border-radius:inherit;}}/*!sc*/
.jhcsCS{background-image:url(https://cdn.otus.ru/media/public/dd/06/dd061f7346b646138111c998e6f4cdd5.jpg);background-repeat:no-repeat;background-position:50% 50%;background-size:cover;position:relative;width:100%;height:100%;border-radius:15px;}/*!sc*/
@media (min-width:1200px){.jhcsCS:before{-webkit-transition:opacity 0.2s ease-out;transition:opacity 0.2s ease-out;will-change:opacity;content:'';position:absolute;width:100%;height:100%;top:0;left:0;background-color:#fff;z-index:2;opacity:0.1;border-radius:inherit;}}/*!sc*/
.fKFigb{background-image:url(https://cdn.otus.ru/media/public/bd/aa/bdaa49508c154b63957666911f8d9431.jpg);background-repeat:no-repeat;background-position:50% 50%;background-size:cover;position:relative;width:100%;height:100%;border-radius:15px;}/*!sc*/
@media (min-width:1200px){.fKFigb:before{-webkit-transition:opacity 0.2s ease-out;transition:opacity 0.2s ease-out;will-change:opacity;content:'';position:absolute;width:100%;height:100%;top:0;left:0;background-color:#fff;z-index:2;opacity:0.1;border-radius:inherit;}}/*!sc*/
data-styled.g1091[id="sc-jotj87-0"]{content:"gqeIyk,jdiWqV,egYrFK,jhcsCS,fKFigb,"}/*!sc*/
.fjUCpx{cursor:pointer;position:relative;width:256px;height:380px;}/*!sc*/
@media (min-width:1200px){.fjUCpx{-webkit-transition:-webkit-transform 0.2s ease-out;-webkit-transition:transform 0.2s ease-out;transition:transform 0.2s ease-out;will-change:transform;}.fjUCpx:hover{-webkit-transform:scale(1.078);-ms-transform:scale(1.078);transform:scale(1.078);}.fjUCpx:hover > .sc-jotj87-0::before{opacity:0;}}/*!sc*/
@media (max-width:751px){.fjUCpx{width:172px;height:255px;}}/*!sc*/
data-styled.g1092[id="sc-jotj87-1"]{content:"fjUCpx,"}/*!sc*/
.hhSKfU{color:#fff;position:absolute;top:16px;left:16px;z-index:1;will-change:background-color,padding,border-radius,transform;border-radius:20px;background-color:#25b969;padding:4px 8px;}/*!sc*/
data-styled.g1096[id="sc-jotj87-5"]{content:"hhSKfU,"}/*!sc*/
.fxMjmR{color:#fff;}/*!sc*/
.fxMjmR.swiper-slide{width:256px;}/*!sc*/
@media (max-width:1201px){.fxMjmR.swiper-slide{width:256px;}}/*!sc*/
@media (max-width:751px){.fxMjmR.swiper-slide{width:172px;}}/*!sc*/
@media (max-width:1201px){.fxMjmR.swiper-slide{margin:0;}}/*!sc*/
data-styled.g1097[id="sc-1s527z5-0"]{content:"fxMjmR,"}/*!sc*/
.iiYkXk{margin-top:20px;}/*!sc*/
data-styled.g1098[id="sc-1s527z5-1"]{content:"iiYkXk,"}/*!sc*/
.jSHKpX{margin-top:8px;}/*!sc*/
@media (max-width:751px){.jSHKpX{margin-top:4px;}}/*!sc*/
data-styled.g1099[id="sc-1s527z5-2"]{content:"jSHKpX,"}/*!sc*/
.kLSaHO{margin-top:8px;font-style:italic;}/*!sc*/
@media (max-width:751px){.kLSaHO{margin-top:4px;}}/*!sc*/
data-styled.g1100[id="sc-1s527z5-3"]{content:"kLSaHO,"}/*!sc*/
.iJNhSn{width:992px;margin:0 auto;}/*!sc*/
@media (max-width:1201px){.iJNhSn{width:100%;}}/*!sc*/
data-styled.g1115[id="sc-7bqyxh-0"]{content:"iJNhSn,"}/*!sc*/
.eTWzoY{position:relative;height:auto;margin-bottom:120px;padding:160px 0 200px;color:#fff;}/*!sc*/
@media (max-width:751px){.eTWzoY{margin-bottom:92px;padding:136px 0;}}/*!sc*/
data-styled.g1116[id="sc-7bqyxh-1"]{content:"eTWzoY,"}/*!sc*/
.imGcoX{overflow:hidden;padding:0 105px;margin:0 -105px;}/*!sc*/
@media (max-width:1201px){.imGcoX{padding:0 36px;margin:0 -36px;}}/*!sc*/
@media (max-width:751px){.imGcoX{padding:0 16px;margin:0 -16px;}}/*!sc*/
data-styled.g1117[id="sc-7bqyxh-2"]{content:"imGcoX,"}/*!sc*/
.gvtgmJ{margin-bottom:80px;}/*!sc*/
@media (max-width:1201px){.gvtgmJ{margin-bottom:48px;}}/*!sc*/
@media (max-width:751px){.gvtgmJ{margin-bottom:40px;}}/*!sc*/
data-styled.g1118[id="sc-7bqyxh-3"]{content:"gvtgmJ,"}/*!sc*/
.hgzLIf{position:relative;width:672px;margin:56px 0 0;}/*!sc*/
@media (max-width:1201px){.hgzLIf{margin:112px 0 0;}}/*!sc*/
@media (max-width:751px){.hgzLIf{margin:48px 0 0;}}/*!sc*/
@media (max-width:751px){.hgzLIf{width:100%;}}/*!sc*/
data-styled.g1119[id="sc-7bqyxh-4"]{content:"hgzLIf,"}/*!sc*/
.gCZLLN .swiper{overflow:visible;}/*!sc*/
data-styled.g1120[id="sc-7bqyxh-5"]{content:"gCZLLN,"}/*!sc*/
.cjUVzd{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin:0 auto 67px;padding:0 64px 0;color:#0f0f10;}/*!sc*/
@media (max-width:1201px){.cjUVzd{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;margin:0 auto 110px;padding:0;}}/*!sc*/
@media (max-width:751px){.cjUVzd{margin:0 auto 50px;}}/*!sc*/
data-styled.g1122[id="sc-rvdro8-0"]{content:"cjUVzd,"}/*!sc*/
.hIDsVz{margin:0 0 40px;}/*!sc*/
@media (max-width:751px){.hIDsVz{margin:0 0 24px;}}/*!sc*/
data-styled.g1124[id="sc-rvdro8-2"]{content:"hIDsVz,"}/*!sc*/
.fAoRTp{min-width:448px;width:448px;min-height:448px;height:448px;margin:0 32px 0 0;object-fit:contain;}/*!sc*/
@media (max-width:1201px){.fAoRTp{min-width:547px;width:547px;min-height:547px;height:547px;margin:0 auto 24px;}}/*!sc*/
@media (max-width:751px){.fAoRTp{min-width:352px;width:352px;min-height:352px;height:352px;margin:0 auto 40px;}}/*!sc*/
data-styled.g1125[id="sc-rvdro8-1-Component"]{content:"fAoRTp,"}/*!sc*/
.bbEYfR{margin-bottom:120px;}/*!sc*/
@media (max-width:1201px){.bbEYfR{margin-bottom:80px;}}/*!sc*/
@media (max-width:751px){.bbEYfR{margin-bottom:40px;}}/*!sc*/
data-styled.g1126[id="sc-nqd633-0"]{content:"bbEYfR,"}/*!sc*/
</style></head><body><div id="__next"><script type="application/ld+json">{
"@context": "http://schema.org",
"@type": "Course",
"name": "Flutter Mobile Developer",
"url": "https://otus.ru",
"logo": "https://otus.ru/__new_static__/img/meta-image.png",
"sameAs": [
"https://vk.com/otusru",
"https://t.me/Otusjava"
],
"description": "\nНаучитесь использовать инструменты необходимые для Flutter-разработчика: Dart, Platform-Specific Code, Skia, MWWM, Bloc, Redux, MobX и др.\nСоздадите свой аналог WhatsApp и Telegram, CoinMarketCap, Todoist в рамках разработки индивидуально…",
"provider": {
"@type": "Organization",
"name": "OTUS",
"sameAs": "https://otus.ru"
},
"image": "https://otus.ru/__new_static__/img/meta-image.png",
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.7",
"ratingCount": "150"
},
"offers": {
"@type": "Offer",
"priceCurrency": "RUB",
"price": 93000,
"availability": "https://schema.org/InStock",
"url": "https://otus.ru/lessons/dart-flutter"
},
"hasCourseInstance": {
"@type": "CourseInstance",
"name": "Flutter Mobile Developer (Онлайн)",
"courseMode": "Online",
"startDate": "2026-04-30",
"endDate": "2027-01-13",
"duration": "P6M"
}
}</script><div class="sc-1j17uuq-0 klmZDZ sc-1b3dhyb-0 bzaXwp"><div class="ui-chunk-container sc-1pwtpfp-0 dMvvUT sc-1pwtpfp-0 dMvvUT"><div class="before-header-ui">
<div class="before-header-ui__ellipse1"></div>
<div class="before-header-ui__ellipse2"></div>
<div class="before-header-ui__container">
<div class="before-header-ui__img before-header-ui__img_sales"></div>
<div class="before-header-ui__content">
<div class="before-header-ui__title hide-phone">Курсы по нейросетям со скидкой до 30%</div>
<div class="before-header-ui__title show-phone">Курсы по нейросетям со скидкой до 30%</div>
</div>
<a class="before-header-ui__button" rel="noopener" href="https://otus.ru/catalog/courses?categories=neural_networks&utm_source=internal&utm_medium=free&utm_campaign=otus&utm_term=chank&utm_content=sla_sale_20-02-2026-10-04-2026" target="_blank">Выбрать курс</a>
</div>
</div></div><!--$!--><template data-dgst="BAILOUT_TO_CLIENT_SIDE_RENDERING"></template><!--/$--><div id="main-menu" class="sc-r03h0s-0 dKnRmO"><div class="sc-x072mc-0 sc-1x9oq14-0-styled-div sc-r03h0s-1 hOtCic eFDQwF bMTmMH"><a class="sc-r03h0s-2 iLJJBX" href="/"><img src="/_next/static/images/img/logo2022_without_text-ad6a01e8608432b9967c441a0f4760b4.svg" alt="OTUS Logo" width="82" height="42" class="sc-136rsxq-0 dxxUfg"/></a><nav class="sc-r03h0s-3 kVvakX"><div class="sc-r03h0s-5 sc-1youhxc-2 sc-k2vhmo-0 bYKNcH gAMwby gnDzft"><div class="sc-k2vhmo-1 cYMYSf"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="sc-aobi4b-0 hzdVAl sc-k2vhmo-2 etPPJE"><circle cx="11.7666" cy="11.7666" r="8.98856" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></circle><path d="M18.0183 18.4852L21.5423 22.0001" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path></svg></div></div><div class="sc-r03h0s-5 sc-1youhxc-2 cGgLky ewISlX"><span title="Обучение" class="sc-1youhxc-1 cMNIlZ">Обучение</span> <div size="24" class="sc-i28ik1-0 bmVffP sc-1youhxc-0 dwrtLP"><div class="sc-i28ik1-1 gNVXtU"><svg width="10" height="5" viewBox="0 0 10 5" fill="none" xmlns="http://www.w3.org/2000/svg" class="sc-8zcw6d-0 eJDLVL"><path fill-rule="evenodd" clip-rule="evenodd" d="M1.10067 0.378818C1.29593 0.183556 1.61251 0.183555 1.80778 0.378818L5.00023 3.57127L8.19272 0.378777C8.38798 0.183515 8.70457 0.183515 8.89983 0.378777C9.09509 0.574039 9.09509 0.890622 8.89983 1.08588L5.3643 4.62142C5.26426 4.72146 5.13237 4.77024 5.00127 4.76777C4.8695 4.77079 4.73676 4.72202 4.6362 4.62146L1.10067 1.08592C0.905408 0.890663 0.905408 0.57408 1.10067 0.378818Z" fill="currentColor"></path></svg></div></div></div><div class="sc-piuiz2-0 fEESDM"><div class="sc-piuiz2-1 fDVGGf"><svg class="sc-1gml7ra-3 XomuX sc-r03h0s-6 sc-1891c19-0 kpxsrg ggDqfB" viewBox="0 0 600 600" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M125.573 140.619C131.659 71.6017 210.245 34.9562 267.027 74.6573L553.942 275.262C610.723 314.962 603.117 401.233 540.247 430.55L222.58 578.681C159.71 607.997 88.7344 558.37 94.8204 489.355L125.573 140.619Z" stroke="#eaeaea" class="sc-1gml7ra-0 hERPbJ"></path><path d="M148.472 246.647C133.624 191.005 184.615 140.013 240.257 154.862L519.856 229.476C575.498 244.325 594.059 313.877 553.266 354.67L348.281 559.656C307.488 600.449 237.935 581.888 223.087 526.246L148.472 246.647Z" fill="url(#b3c4fd0ea38bc909c3d0b96d)"></path><defs><linearGradient id="b3c4fd0ea38bc909c3d0b96d" x1="128.696" y1="395.739" x2="443.538" y2="180.173" gradientUnits="userSpaceOnUse"><stop stop-color="rgba(249, 249, 249, 1)"></stop><stop offset="1" stop-color="rgba(235, 235, 235, 1)"></stop></linearGradient></defs></svg><div class="sc-piuiz2-2 fhxPhf"><!--$!--><template data-dgst="BAILOUT_TO_CLIENT_SIDE_RENDERING"></template><!--/$--><div class="sc-1kjc6dh-0 fXsjgC"><div><p class="sc-1x9oq14-0 sc-1kjc6dh-1 ViUGY bxwCjw">Направления</p><div class="sc-1kjc6dh-2 sc-ig0m9y-0 lhsLfs cgYLnJ"><a class="sc-4zz0i4-0 dZepSJ" href="/categories/programming">Программирование<!-- --> (<!-- -->117<!-- -->)</a><a class="sc-4zz0i4-0 dZepSJ" href="/categories/architecture">Архитектура<!-- --> (<!-- -->17<!-- -->)</a><a class="sc-4zz0i4-0 dZepSJ" href="/categories/data-science">Data Science<!-- --> (<!-- -->27<!-- -->)</a><a class="sc-4zz0i4-0 dZepSJ" href="/categories/operations">Инфраструктура<!-- --> (<!-- -->58<!-- -->)</a><a class="sc-4zz0i4-0 dZepSJ" href="/categories/gamedev">GameDev<!-- --> (<!-- -->10<!-- -->)</a><a class="sc-4zz0i4-0 dZepSJ" href="/categories/information-security-courses">Безопасность<!-- --> (<!-- -->15<!-- -->)</a><a class="sc-4zz0i4-0 dZepSJ" href="/categories/marketing-business">Управление<!-- --> (<!-- -->46<!-- -->)</a><a class="sc-4zz0i4-0 dZepSJ" href="/categories/analytics">Аналитика и анализ<!-- --> (<!-- -->25<!-- -->)</a><a class="sc-4zz0i4-0 dZepSJ" href="/categories/business-product">Бизнес и продукт в IT<!-- --> (<!-- -->26<!-- -->)</a><a class="sc-4zz0i4-0 dZepSJ" href="/categories/import-substitution">Импортозамещение<!-- --> (<!-- -->15<!-- -->)</a><a class="sc-4zz0i4-0 dZepSJ" href="/categories/testing">Тестирование<!-- --> (<!-- -->12<!-- -->)</a><a class="sc-4zz0i4-0 dZepSJ" href="/categories/neural_networks">Нейросети<!-- --> (<!-- -->9<!-- -->)</a><a class="sc-4zz0i4-0 dZepSJ" href="/categories/it-bez-programmirovanija">IT без программирования<!-- --> (<!-- -->19<!-- -->)</a><a class="sc-4zz0i4-0 dZepSJ" href="/categories/corporate">Корпоративные курсы<!-- --> (<!-- -->27<!-- -->)</a></div></div></div><div class="sc-1kjc6dh-0 fXsjgC"><div><p class="sc-1x9oq14-0 sc-1kjc6dh-1 ViUGY bxwCjw">События</p><div class="sc-1kjc6dh-2 eANJVj"><a class="sc-4zz0i4-0 dZepSJ" href="/lessons/calendar/2026">Календарь запуска курсов</a><a class="sc-4zz0i4-0 dZepSJ" href="/events/near">Календарь мероприятий</a></div></div><div><p class="sc-1x9oq14-0 sc-1kjc6dh-1 ViUGY bxwCjw">Другое</p><div class="sc-1kjc6dh-2 eANJVj"><a class="sc-4zz0i4-0 dZepSJ" href="/categories/spec">Специализации<!-- --> (<!-- -->13<!-- -->)</a><a class="sc-4zz0i4-0 dZepSJ" href="/categories/online">Подготовительные курсы<!-- --> (<!-- -->14<!-- -->)</a><a class="sc-4zz0i4-0 gXNPrh" href="/subscription">Подписка на курсы</a><a class="sc-4zz0i4-0 dZepSJ" href="/tests">Проверьте свои знания</a></div></div></div></div></div></div><div class="sc-r03h0s-5 sc-1youhxc-2 cGgLky ewISlX"><span title="Информация" class="sc-1youhxc-1 cMNIlZ">Информация</span> <div size="24" class="sc-i28ik1-0 bmVffP sc-1youhxc-0 dwrtLP"><div class="sc-i28ik1-1 gNVXtU"><svg width="10" height="5" viewBox="0 0 10 5" fill="none" xmlns="http://www.w3.org/2000/svg" class="sc-8zcw6d-0 eJDLVL"><path fill-rule="evenodd" clip-rule="evenodd" d="M1.10067 0.378818C1.29593 0.183556 1.61251 0.183555 1.80778 0.378818L5.00023 3.57127L8.19272 0.378777C8.38798 0.183515 8.70457 0.183515 8.89983 0.378777C9.09509 0.574039 9.09509 0.890622 8.89983 1.08588L5.3643 4.62142C5.26426 4.72146 5.13237 4.77024 5.00127 4.76777C4.8695 4.77079 4.73676 4.72202 4.6362 4.62146L1.10067 1.08592C0.905408 0.890663 0.905408 0.57408 1.10067 0.378818Z" fill="currentColor"></path></svg></div></div></div><div class="sc-piuiz2-0 fEESDM"><div class="sc-piuiz2-1 fDVGGf"><svg class="sc-1gml7ra-3 XomuX sc-r03h0s-6 sc-1891c19-0 kpxsrg ggDqfB" viewBox="0 0 600 600" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M125.573 140.619C131.659 71.6017 210.245 34.9562 267.027 74.6573L553.942 275.262C610.723 314.962 603.117 401.233 540.247 430.55L222.58 578.681C159.71 607.997 88.7344 558.37 94.8204 489.355L125.573 140.619Z" stroke="#eaeaea" class="sc-1gml7ra-0 hERPbJ"></path><path d="M148.472 246.647C133.624 191.005 184.615 140.013 240.257 154.862L519.856 229.476C575.498 244.325 594.059 313.877 553.266 354.67L348.281 559.656C307.488 600.449 237.935 581.888 223.087 526.246L148.472 246.647Z" fill="url(#dc56bb1755910f4eb345771f)"></path><defs><linearGradient id="dc56bb1755910f4eb345771f" x1="128.696" y1="395.739" x2="443.538" y2="180.173" gradientUnits="userSpaceOnUse"><stop stop-color="rgba(249, 249, 249, 1)"></stop><stop offset="1" stop-color="rgba(235, 235, 235, 1)"></stop></linearGradient></defs></svg><div class="sc-piuiz2-2 fhxPhf"><div class="sc-1kjc6dh-0 fXsjgC"><div><p class="sc-1x9oq14-0 sc-1kjc6dh-1 ViUGY bxwCjw">OTUS</p><div class="sc-1kjc6dh-2 eANJVj"><a class="sc-4zz0i4-0 dZepSJ" href="/about">О компании</a><a class="sc-4zz0i4-0 dZepSJ" href="/smi">СМИ о нас</a><a class="sc-4zz0i4-0 dZepSJ" href="/journal">OTUS Журнал</a><a class="sc-4zz0i4-0 dZepSJ" href="https://direct.otus.ru" target="_blank" rel="noopener noreferrer">OTUS Директ</a><a class="sc-4zz0i4-0 dZepSJ" href="/legal/common">Сведения об образовательной организации</a><a class="sc-4zz0i4-0 dZepSJ" rel="noopener noreferrer" href="/contacts">Контактная информация</a></div></div></div><div class="sc-1kjc6dh-0 fXsjgC"><div><p class="sc-1x9oq14-0 sc-1kjc6dh-1 ViUGY bxwCjw">Студентам</p><div class="sc-1kjc6dh-2 eANJVj"><a class="sc-4zz0i4-0 dZepSJ" href="/reviews">Отзывы</a><a class="sc-4zz0i4-0 dZepSJ" href="https://landing.otus.ru/about-otus ">Как выбрать курс</a><a class="sc-4zz0i4-0 dZepSJ" href="https://landing.otus.ru/gallery">Истории выпускников</a><a class="sc-4zz0i4-0 dZepSJ" href="/instructors">Наши преподаватели</a><a class="sc-4zz0i4-0 dZepSJ" href="/employers/all">Наши партнеры</a><a class="sc-4zz0i4-0 dZepSJ" href="/about/loyalty">Программа лояльности</a><a class="sc-4zz0i4-0 dZepSJ" href="/faq">Вопросы и ответы</a></div></div></div><div class="sc-1kjc6dh-0 fXsjgC"><div><p class="sc-1x9oq14-0 sc-1kjc6dh-1 ViUGY bxwCjw">Преподавателям</p><div class="sc-1kjc6dh-2 eANJVj"><a class="sc-4zz0i4-0 dZepSJ" href="/teach">Стать преподавателем</a><a class="sc-4zz0i4-0 dZepSJ" href="/instructors">Наши преподаватели</a><a class="sc-4zz0i4-0 dZepSJ" href="/nest/dlja-prepodavatelej">База знаний</a></div></div></div></div></div></div><a class="sc-1vdp0yy-0 ldwIhb sc-r03h0s-5 sc-r03h0s-7 cGgLky jHaHbB" href="/b2b">Компаниям</a></nav><section class="sc-1pw2hu9-0 deZXFK"><div class="sc-r03h0s-5 sc-gqclrv-0 cGgLky eDycrR"><div class="sc-199a3eq-1-div cwTwwh sc-hrqzy3-0 jTtOKw"><div class="sc-hrqzy3-1 faPWUN"></div><div class="sc-1xopqwy-0 LDEpF"></div></div><p class="sc-1x9oq14-0 sc-gqclrv-1 eMZyoN rcsBI sc-hrqzy3-0 ePGOOQ"><div class="sc-1xopqwy-0 iXhGSD">UserPartName</div></p></div></section></div></div><main class="sc-1j17uuq-1 dPcKhb"><div class="sc-1b3dhyb-1 dvLdDh"><section class="sc-s2pydo-0 eufkJz"><div class="sc-4o7hfp-0 jDOZfu"><div class="sc-1vxm7ng-0 golIF"><div class="sc-1vxm7ng-2 jxmQOK"><a href="/categories/programming">Программирование</a><svg class="sc-1vxm7ng-1 dbOiAN" width="7" height="10" viewBox="0 0 7 10" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1 1L5 5L1 9" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"></path></svg></div><div class="sc-1vxm7ng-2 jxmQOK"><span>Flutter Mobile Developer</span></div></div><div class="sc-4o7hfp-1 eBROUt"><div class="sc-4o7hfp-2 fHVRxg"><div class="sc-5am0g3-1 eFljfP"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="sc-aobi4b-0 hzdVAl sc-4o7hfp-4 pkSWX"><path d="M17.9185 14.32C17.6595 14.571 17.5405 14.934 17.5995 15.29L18.4885 20.21C18.5635 20.627 18.3875 21.049 18.0385 21.29C17.6965 21.54 17.2415 21.57 16.8685 21.37L12.4395 19.06C12.2855 18.978 12.1145 18.934 11.9395 18.929H11.6685C11.5745 18.943 11.4825 18.973 11.3985 19.019L6.96851 21.34C6.74951 21.45 6.50151 21.489 6.25851 21.45C5.66651 21.338 5.27151 20.774 5.36851 20.179L6.25851 15.259C6.31751 14.9 6.19851 14.535 5.93951 14.28L2.32851 10.78C2.02651 10.487 1.92151 10.047 2.05951 9.65C2.19351 9.254 2.53551 8.965 2.94851 8.9L7.91851 8.179C8.29651 8.14 8.62851 7.91 8.79851 7.57L10.9885 3.08C11.0405 2.98 11.1075 2.888 11.1885 2.81L11.2785 2.74C11.3255 2.688 11.3795 2.645 11.4395 2.61L11.5485 2.57L11.7185 2.5H12.1395C12.5155 2.539 12.8465 2.764 13.0195 3.1L15.2385 7.57C15.3985 7.897 15.7095 8.124 16.0685 8.179L21.0385 8.9C21.4585 8.96 21.8095 9.25 21.9485 9.65C22.0795 10.051 21.9665 10.491 21.6585 10.78L17.9185 14.32Z" fill="currentColor"></path></svg><p class="sc-1x9oq14-0 sc-5am0g3-0 krJlll ivApKl">Актуальная программа</p></div></div></div></div><div class="sc-1ddwpfq-1 hnlXxp sc-s2pydo-5 iHjMxQ"><i class="sc-1ddwpfq-0 gtUtSY"></i><!--$!--><template data-dgst="BAILOUT_TO_CLIENT_SIDE_RENDERING"></template><!--/$--><div class="sc-s2pydo-6 EOCgR sc-x072mc-0 hOtCic"><div class="sc-s2pydo-2 kSoRAw"></div><h1 class="sc-1x9oq14-0 sc-s2pydo-1 kswXpy diGrSa">Flutter Mobile Developer</h1><div class="sc-1x9oq14-0 sc-s2pydo-3 enpOeQ dZDxRw"><p>Кроссплатформенная мобильная и веб-разработка</p></div><div class="sc-1lrh8w5-0 ftkQLi sc-kixk9v-0 gwYuWO"><button class="sc-1qig7zt-0 czpnNJ sc-1lrh8w5-3 JTsAm"><span class="sc-1lrh8w5-4 jTrfLJ">Вступительное тестирование</span><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="sc-aobi4b-0 hzdVAl sc-1lrh8w5-5 eCsaUt"><path fill-rule="evenodd" clip-rule="evenodd" d="M15.164 6.08252C15.4791 6.08684 15.7949 6.09117 16.1119 6.09441C19.5172 6.09441 22 8.52216 22 11.8748V16.1811C22 19.5337 19.5172 21.9615 16.1119 21.9615C14.7478 21.9904 13.3837 22 12.0098 22C10.6359 22 9.25221 21.9904 7.88813 21.9615C4.48283 21.9615 2 19.5337 2 16.1811V11.8748C2 8.52216 4.48283 6.09441 7.89794 6.09441C9.18351 6.07514 10.4985 6.05588 11.8332 6.05588V5.8921C11.8332 5.22736 11.2738 4.68786 10.6065 4.68786H9.63494C8.52601 4.68786 7.62316 3.80154 7.62316 2.72254C7.62316 2.32755 7.95682 2 8.35918 2C8.77134 2 9.09519 2.32755 9.09519 2.72254C9.09519 3.01156 9.34053 3.24277 9.63494 3.24277H10.6065C12.0883 3.25241 13.2954 4.43738 13.3052 5.88247V6.06551C13.9239 6.06551 14.5425 6.074 15.164 6.08252ZM10.8518 14.7457H9.82139V15.7669C9.82139 16.1618 9.48773 16.4894 9.08538 16.4894C8.67321 16.4894 8.34936 16.1618 8.34936 15.7669V14.7457H7.30913C6.90677 14.7457 6.57311 14.4277 6.57311 14.0231C6.57311 13.6281 6.90677 13.3006 7.30913 13.3006H8.34936V12.289C8.34936 11.894 8.67321 11.5665 9.08538 11.5665C9.48773 11.5665 9.82139 11.894 9.82139 12.289V13.3006H10.8518C11.2542 13.3006 11.5878 13.6281 11.5878 14.0231C11.5878 14.4277 11.2542 14.7457 10.8518 14.7457ZM15.0226 13.1175H15.1207C15.5231 13.1175 15.8567 12.7996 15.8567 12.395C15.8567 12 15.5231 11.6724 15.1207 11.6724H15.0226C14.6104 11.6724 14.2866 12 14.2866 12.395C14.2866 12.7996 14.6104 13.1175 15.0226 13.1175ZM16.7007 16.4316H16.7988C17.2012 16.4316 17.5348 16.1137 17.5348 15.7091C17.5348 15.3141 17.2012 14.9865 16.7988 14.9865H16.7007C16.2875 14.9865 15.9647 15.3141 15.9647 15.7091C15.9647 16.1137 16.2875 16.4316 16.7007 16.4316Z" fill="currentColor"></path></svg></button></div></div></div><div class="sc-x072mc-0 sc-3cb1l3-1 hOtCic galmep"><div class="sc-3cb1l3-3 jeNzke"><div class="sc-3cb1l3-4 kGoYMV"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="sc-aobi4b-0 hzdVAl"><path fill-rule="evenodd" clip-rule="evenodd" d="M18.7071 8.79633C18.7071 10.0523 19.039 10.7925 19.7695 11.6456C20.3231 12.2741 20.5 13.0808 20.5 13.956C20.5 14.8302 20.2128 15.6601 19.6373 16.3339C18.884 17.1417 17.8215 17.6573 16.7372 17.747C15.1659 17.8809 13.5937 17.9937 12.0005 17.9937C10.4063 17.9937 8.83505 17.9263 7.26375 17.747C6.17846 17.6573 5.11602 17.1417 4.36367 16.3339C3.78822 15.6601 3.5 14.8302 3.5 13.956C3.5 13.0808 3.6779 12.2741 4.23049 11.6456C4.98384 10.7925 5.29392 10.0523 5.29392 8.79633V8.3703C5.29392 6.68834 5.71333 5.58852 6.577 4.51186C7.86106 2.9417 9.91935 2 11.9558 2H12.0452C14.1254 2 16.2502 2.98702 17.5125 4.62466C18.3314 5.67916 18.7071 6.73265 18.7071 8.3703V8.79633ZM9.07367 20.0608C9.07367 19.5573 9.53582 19.3266 9.96318 19.2279C10.4631 19.1222 13.5093 19.1222 14.0092 19.2279C14.4366 19.3266 14.8987 19.5573 14.8987 20.0608C14.8738 20.5402 14.5926 20.9653 14.204 21.2352C13.7001 21.628 13.1088 21.8767 12.4906 21.9664C12.1487 22.0107 11.8128 22.0117 11.4828 21.9664C10.8636 21.8767 10.2723 21.628 9.76938 21.2342C9.37978 20.9653 9.09852 20.5402 9.07367 20.0608Z" fill="currentColor"></path></svg><p class="sc-1x9oq14-0 sc-3cb1l3-0 doSDez dgWykw">30 апреля</p></div><div class="sc-3cb1l3-4 kGoYMV"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="sc-aobi4b-0 hzdVAl"><path fill-rule="evenodd" clip-rule="evenodd" d="M16.4109 2.76862L16.4119 3.51824C19.1665 3.73414 20.9862 5.6112 20.9891 8.48975L21 16.9155C21.0039 20.054 19.0322 21.985 15.8718 21.99L8.15189 22C5.0112 22.004 3.01482 20.027 3.01087 16.8796L3.00001 8.55272C2.99606 5.65517 4.75153 3.78311 7.50618 3.53024L7.50519 2.78061C7.5042 2.34083 7.83002 2.01 8.26445 2.01C8.69887 2.009 9.02469 2.33883 9.02568 2.77861L9.02666 3.47826L14.8914 3.47027L14.8904 2.77062C14.8894 2.33084 15.2152 2.001 15.6497 2C16.0742 1.99901 16.4099 2.32884 16.4109 2.76862ZM4.52149 8.86157L19.4696 8.84158V8.49175C19.4272 6.34283 18.349 5.21539 16.4139 5.04748L16.4148 5.81709C16.4148 6.24688 16.0801 6.58771 15.6556 6.58771C15.2212 6.58871 14.8944 6.24888 14.8944 5.81909L14.8934 5.0095L9.02864 5.01749L9.02962 5.82609C9.02962 6.25687 8.70479 6.5967 8.27037 6.5967C7.83595 6.5977 7.50914 6.25887 7.50914 5.82809L7.50815 5.05847C5.58286 5.25138 4.51754 6.38281 4.5205 8.55072L4.52149 8.86157ZM15.2399 13.4043V13.4153C15.2498 13.8751 15.625 14.2239 16.0801 14.2139C16.5244 14.2029 16.8789 13.8221 16.869 13.3623C16.8483 12.9225 16.4918 12.5637 16.0485 12.5647C15.5944 12.5747 15.2389 12.9445 15.2399 13.4043ZM16.0554 17.892C15.6013 17.882 15.235 17.5032 15.234 17.0435C15.2241 16.5837 15.5884 16.2029 16.0426 16.1919H16.0525C16.5165 16.1919 16.8927 16.5707 16.8927 17.0405C16.8937 17.5102 16.5185 17.891 16.0554 17.892ZM11.1721 13.4203C11.1919 13.8801 11.568 14.2389 12.0222 14.2189C12.4665 14.1979 12.821 13.8181 12.8012 13.3583C12.7904 12.9085 12.425 12.5587 11.9807 12.5597C11.5266 12.5797 11.1711 12.9605 11.1721 13.4203ZM12.0262 17.8471C11.572 17.8671 11.1968 17.5082 11.1761 17.0485C11.1761 16.5887 11.5305 16.2089 11.9847 16.1879C12.429 16.1869 12.7953 16.5367 12.8052 16.9855C12.8259 17.4463 12.4705 17.8261 12.0262 17.8471ZM7.10434 13.4553C7.12408 13.915 7.50025 14.2749 7.95442 14.2539C8.39872 14.2339 8.75317 13.8531 8.73244 13.3933C8.72257 12.9435 8.35725 12.5937 7.91197 12.5947C7.4578 12.6147 7.10335 12.9955 7.10434 13.4553ZM7.95837 17.8521C7.5042 17.8731 7.12902 17.5132 7.10828 17.0535C7.1073 16.5937 7.46274 16.2129 7.91691 16.1929C8.3612 16.1919 8.7275 16.5417 8.73738 16.9915C8.75811 17.4513 8.40366 17.8321 7.95837 17.8521Z" fill="currentColor"></path></svg><p class="sc-1x9oq14-0 sc-3cb1l3-0 doSDez dgWykw">6 месяцев</p></div><div class="sc-3cb1l3-4 kGoYMV"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="sc-aobi4b-0 hzdVAl"><path fill-rule="evenodd" clip-rule="evenodd" d="M3.5 10.3178C3.5 5.71789 7.34388 2 11.9934 2C16.6561 2 20.5 5.71789 20.5 10.3178C20.5 12.6357 19.657 14.7876 18.2695 16.6116C16.7388 18.6235 14.8522 20.3765 12.7285 21.7524C12.2425 22.0704 11.8039 22.0944 11.2704 21.7524C9.13474 20.3765 7.24809 18.6235 5.7305 16.6116C4.34198 14.7876 3.5 12.6357 3.5 10.3178ZM9.19423 10.5768C9.19423 12.1177 10.4517 13.3297 11.9934 13.3297C13.5362 13.3297 14.8058 12.1177 14.8058 10.5768C14.8058 9.0478 13.5362 7.77683 11.9934 7.77683C10.4517 7.77683 9.19423 9.0478 9.19423 10.5768Z" fill="currentColor"></path></svg><p class="sc-1x9oq14-0 sc-3cb1l3-0 doSDez dgWykw">Онлайн</p></div><div class="sc-3cb1l3-4 kGoYMV"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="sc-aobi4b-0 hzdVAl"><path fill-rule="evenodd" clip-rule="evenodd" d="M7.66988 2H16.3399C19.7299 2 21.9999 4.379 21.9999 7.919V16.089C21.9999 19.62 19.7299 22 16.3399 22H7.66988C4.27988 22 1.99988 19.62 1.99988 16.089V7.919C1.99988 4.379 4.27988 2 7.66988 2ZM15.5799 15.81C15.8299 15.81 16.0799 15.68 16.2199 15.44C16.4399 15.089 16.3199 14.629 15.9599 14.41L12.3999 12.29V7.669C12.3999 7.26 12.0699 6.919 11.6499 6.919C11.2399 6.919 10.8999 7.26 10.8999 7.669V12.72C10.8999 12.98 11.0399 13.23 11.2699 13.36L15.1899 15.7C15.3099 15.78 15.4499 15.81 15.5799 15.81Z" fill="currentColor"></path></svg><p class="sc-1x9oq14-0 sc-3cb1l3-0 doSDez dgWykw">Пн/Чт 20:00 Мск</p></div></div></div></section><div id="vdescription" class="sc-x072mc-0 sc-1oat6ot-0 hOtCic dYVcmu"><div class="sc-1oat6ot-1 cVgwEc"><div class="sc-1oat6ot-5 klGcVm"><div class="sc-1oat6ot-4 hdfpFD"><div class="sc-1x9oq14-0 sc-pyhrzd-0 doSDez hRFuCQ"> <h2>Для кого этот курс?</h2>
<p><strong>Этот курс подходит вам</strong>, если<strong> </strong>у вас уже есть опыт в программировании <span id="docs-internal-guid-f13f8eb7-7fff-5fe6-5bbd-d3cf18cfc0fa">и</span><span id="docs-internal-guid-f13f8eb7-7fff-5fe6-5bbd-d3cf18cfc0fa"> </span>использовании концепций ООП, и вы хотите научиться писать мультиплатформенные мобильные приложения, использующие одну и ту же кодовую базу для iOS и Android, <span id="docs-internal-guid-43901324-7fff-ac2e-ff91-2903c38264b6">Desktop и Web</span>.</p>
<p><strong>Цель курса</strong> — научиться создавать современные кроссплатформенные приложения с помощью Flutter.</p>
<h2>Необходимые знания</h2>
<ul>
<li>опыт программирования на любом языке программирования</li>
<li><span id="docs-internal-guid-db1b3f60-7fff-6e8c-f896-cdcf725c2fa8">понимание принципов объектно-ориентированного программирования</span></li>
<li>навыки использования git</li>
</ul>
<h2>Будет плюсом</h2>
<ul>
<li>знакомство с мобильной разработкой</li>
<li>опыт работы в Android Studio или VS Code</li>
<li>знание шаблонов проектирования</li>
</ul></div><div class="sc-1lrh8w5-0 ftkQLi sc-1oat6ot-3 hjZAnk"><button class="sc-1qig7zt-0 czpnNJ sc-1lrh8w5-3 JTsAm"><span class="sc-1lrh8w5-4 jTrfLJ">Вступительное тестирование</span><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="sc-aobi4b-0 hzdVAl sc-1lrh8w5-5 eCsaUt"><path fill-rule="evenodd" clip-rule="evenodd" d="M15.164 6.08252C15.4791 6.08684 15.7949 6.09117 16.1119 6.09441C19.5172 6.09441 22 8.52216 22 11.8748V16.1811C22 19.5337 19.5172 21.9615 16.1119 21.9615C14.7478 21.9904 13.3837 22 12.0098 22C10.6359 22 9.25221 21.9904 7.88813 21.9615C4.48283 21.9615 2 19.5337 2 16.1811V11.8748C2 8.52216 4.48283 6.09441 7.89794 6.09441C9.18351 6.07514 10.4985 6.05588 11.8332 6.05588V5.8921C11.8332 5.22736 11.2738 4.68786 10.6065 4.68786H9.63494C8.52601 4.68786 7.62316 3.80154 7.62316 2.72254C7.62316 2.32755 7.95682 2 8.35918 2C8.77134 2 9.09519 2.32755 9.09519 2.72254C9.09519 3.01156 9.34053 3.24277 9.63494 3.24277H10.6065C12.0883 3.25241 13.2954 4.43738 13.3052 5.88247V6.06551C13.9239 6.06551 14.5425 6.074 15.164 6.08252ZM10.8518 14.7457H9.82139V15.7669C9.82139 16.1618 9.48773 16.4894 9.08538 16.4894C8.67321 16.4894 8.34936 16.1618 8.34936 15.7669V14.7457H7.30913C6.90677 14.7457 6.57311 14.4277 6.57311 14.0231C6.57311 13.6281 6.90677 13.3006 7.30913 13.3006H8.34936V12.289C8.34936 11.894 8.67321 11.5665 9.08538 11.5665C9.48773 11.5665 9.82139 11.894 9.82139 12.289V13.3006H10.8518C11.2542 13.3006 11.5878 13.6281 11.5878 14.0231C11.5878 14.4277 11.2542 14.7457 10.8518 14.7457ZM15.0226 13.1175H15.1207C15.5231 13.1175 15.8567 12.7996 15.8567 12.395C15.8567 12 15.5231 11.6724 15.1207 11.6724H15.0226C14.6104 11.6724 14.2866 12 14.2866 12.395C14.2866 12.7996 14.6104 13.1175 15.0226 13.1175ZM16.7007 16.4316H16.7988C17.2012 16.4316 17.5348 16.1137 17.5348 15.7091C17.5348 15.3141 17.2012 14.9865 16.7988 14.9865H16.7007C16.2875 14.9865 15.9647 15.3141 15.9647 15.7091C15.9647 16.1137 16.2875 16.4316 16.7007 16.4316Z" fill="currentColor"></path></svg></button></div></div></div></div></div><div class="sc-x072mc-0 sc-lpm061-0 hOtCic cjEHVO"><div><h2 class="sc-1x9oq14-0 sc-lpm061-1 jmLQpp iKbbnr">Что даст вам этот курс</h2><div class="sc-1x9oq14-0 sc-pyhrzd-0 doSDez hRFuCQ"><ul>
<li><strong>Научитесь использовать инструменты необходимые для Flutter-разработчика</strong>: Dart, BLoC, Redux, MobX и др.</li>
<li><strong>Создадите свой аналог Telegram, CoinMarketCap, Todoist</strong> в рамках разработки индивидуальной проектной работы, которая пополнит ваше портфолио</li>
<li><strong>Сможете общаться напрямую с преподавателями</strong> на лекциях и в Telegram-чате, обсуждать кейсы и задачи, которые стоят перед вами</li>
</ul>
<h2>Освойте необходимые навыки для Flutter-разработчика</h2>
<ul>
<li><strong>Основы языка Dart</strong>. Этот язык очень гибок и легок в использовании. Именно поэтому разработчики Flutter выбрали его. Освоив Dart, вы сможете писать Android-, iOS-, Web- и даже Desktop-приложения;</li>
<li><strong>Поймете, как работает Flutter изнутри</strong>. Flutter достаточно прост, чтобы начать решать с помощью него задачи в первый же день обучения. Но очень важно разобраться, как он работает, чтобы использовать возможности Flutter наиболее эффективно;</li>
<li><strong>Научитесь использовать platform-specific code для интеграции с нативной частью мобильного приложения</strong>. Если вам нужен доступ к hardware или какому-либо сложному модулю, который требователен к производительности, то Flutter может взаимодействовать с нативным кодом и решать даже эти задачи;</li>
<li><strong>Поймете как создавать свои собственные анимации</strong>. Во Flutter очень хорошо развита возможность создавать анимации. Так что мы разберемся, как создать практически любую анимацию с помощью Flutter без какой-либо потери в производительности;</li>
<li><strong>Начнете использовать современные библиотеки и фреймворки</strong>. Мы разберем самые популярные фреймвоки для работы с состоянием приложения: BLoC, Redux, MobX. Посмотрим, как организовать DI во Flutter на примере inject.dart и фреймворка get_it.</li>
</ul>
<p><strong>Практические домашние задания</strong> на курсе подготовлены таким образом, чтобы помочь вам не только применить знания на практике, но и помочь в реализации проектной работы.</p></div></div><div class="sc-1232l32-0 gjfSTs"><svg width="48" height="48" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="sc-aobi4b-0 hzdVAl sc-1232l32-1 gLmhvn"><path fill-rule="evenodd" clip-rule="evenodd" d="M7.66988 1.99927H16.3399C19.7299 1.99927 21.9999 4.37927 21.9999 7.91927V16.0903C21.9999 19.6203 19.7299 21.9993 16.3399 21.9993H7.66988C4.27988 21.9993 1.99988 19.6203 1.99988 16.0903V7.91927C1.99988 4.37927 4.27988 1.99927 7.66988 1.99927ZM11.9899 9.06027C11.5199 9.06027 11.1299 8.66927 11.1299 8.19027C11.1299 7.70027 11.5199 7.31027 12.0099 7.31027C12.4899 7.31027 12.8799 7.70027 12.8799 8.19027C12.8799 8.66927 12.4899 9.06027 11.9899 9.06027ZM12.8699 15.7803C12.8699 16.2603 12.4799 16.6503 11.9899 16.6503C11.5099 16.6503 11.1199 16.2603 11.1199 15.7803V11.3603C11.1199 10.8793 11.5099 10.4803 11.9899 10.4803C12.4799 10.4803 12.8699 10.8793 12.8699 11.3603V15.7803Z" fill="url(#1ba3e94a673a464c67e3c850)"></path><defs><linearGradient id="1ba3e94a673a464c67e3c850" x1="7.24435" y1="16.8809" x2="41.5417" y2="22.7167" gradientUnits="userSpaceOnUse"><stop stop-color="#373737"></stop><stop offset="1" stop-color="#111111"></stop></linearGradient></defs></svg><div class="sc-1x9oq14-0 sc-pyhrzd-0 doSDez hRFuCQ sc-1232l32-2 cLdvvd"><h2>Почему Flutter?</h2>
<p>Flutter позволит вам создавать красивые, быстрые и кроссплатформенные приложения для iOS и Android, используя один и тот же код.</p></div></div></div><div class="sc-x072mc-0 sc-rvdro8-0 hOtCic cjUVzd"><svg class="sc-rvdro8-1-Component fAoRTp" width="448" height="448" viewBox="0 0 448 448" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M73.973 262.521c-25.943-9.97-31.12-43.662-9.318-60.646L292.018 24.752c21.802-16.984 54.23-4.521 58.372 22.432l43.19 281.097c4.142 26.954-23.11 48.184-49.053 38.214L73.973 262.521Z" fill="url(#processDefaultImageIconA)"></path><path d="M119.392 368.19c-23.13 10.287-48.177-8.104-45.084-33.104l32.265-260.72c3.094-25 32.008-37.859 52.045-23.146l208.965 153.435c20.037 14.712 16.17 45.962-6.961 56.25L119.392 368.19Z" fill="url(#processDefaultImageIconB)"></path><path d="M204.971 119.576c-8.276-10.24-2.416-25.302 10.548-27.111l135.199-18.87c12.964-1.81 23.309 10.99 18.621 23.039l-48.89 125.659c-4.688 12.049-20.893 14.311-29.169 4.071l-86.309-106.788Z" fill="url(#processDefaultImageIconC)"></path><path d="M90.942 108.696c-3.277 0-6.145-2.456-6.145-5.732a3.67 3.67 0 0 0-3.687-3.684 3.67 3.67 0 0 0-3.687 3.684c0 3.276-2.459 5.732-5.736 5.732A3.67 3.67 0 0 0 68 112.381a3.67 3.67 0 0 0 3.687 3.685c3.278 0 5.736 2.456 5.736 5.731a3.67 3.67 0 0 0 3.687 3.685 3.67 3.67 0 0 0 3.687-3.685c0-3.275 2.458-5.731 5.735-5.731a3.67 3.67 0 0 0 3.687-3.685c.41-2.047-1.229-3.685-3.277-3.685Z" fill="url(#processDefaultImageIconD)"></path><path d="M235.737 385.911c-3.277 0-6.145-2.457-6.145-5.732a3.671 3.671 0 0 0-3.687-3.685 3.67 3.67 0 0 0-3.687 3.685c0 3.275-2.458 5.732-5.736 5.732a3.67 3.67 0 0 0-3.687 3.684 3.671 3.671 0 0 0 3.687 3.685c3.278 0 5.736 2.456 5.736 5.732a3.67 3.67 0 0 0 3.687 3.684 3.67 3.67 0 0 0 3.687-3.684c0-3.276 2.458-5.732 5.735-5.732a3.67 3.67 0 0 0 3.687-3.685c0-2.047-1.638-3.684-3.277-3.684Z" fill="url(#processDefaultImageIconE)"></path><path d="M227.072 79.54a6.553 6.553 0 0 0 6.555-6.55 6.553 6.553 0 0 0-6.555-6.55 6.553 6.553 0 0 0-6.555 6.55 6.553 6.553 0 0 0 6.555 6.55Z" fill="url(#processDefaultImageIconF)"></path><path d="M78.242 66.626C72.506 66.626 68 62.122 68 56.39c0-5.731 4.506-10.235 10.242-10.235 5.735 0 10.242 4.504 10.242 10.236 0 5.731-4.507 10.235-10.242 10.235Zm0-13.92c-2.049 0-4.097 1.637-4.097 4.094 0 2.456 1.639 4.094 4.097 4.094 2.048 0 4.097-1.638 4.097-4.094 0-2.456-2.049-4.094-4.097-4.094Z" fill="url(#processDefaultImageIconG)"></path><path d="M307.192 382.834a6.553 6.553 0 0 0 6.555-6.55 6.553 6.553 0 0 0-6.555-6.551 6.553 6.553 0 0 0-6.555 6.551 6.553 6.553 0 0 0 6.555 6.55Z" fill="url(#processDefaultImageIconH)"></path><path d="M324.394 308.101c-5.736 0-10.242-4.503-10.242-10.235 0-5.732 4.506-10.235 10.242-10.235 5.735 0 10.241 4.503 10.241 10.235 0 5.732-4.506 10.235-10.241 10.235Zm0-13.92c-2.049 0-4.097 1.638-4.097 4.095 0 2.456 1.638 4.094 4.097 4.094 2.048 0 4.096-1.638 4.096-4.094 0-2.457-1.638-4.095-4.096-4.095Z" fill="url(#processDefaultImageIconI)"></path><path d="m310.288 164.276-43.879-42.909a13.329 13.329 0 0 0-9.355-3.82c-3.52 0-6.847 1.368-9.354 3.82L109.552 256.414c-2.507 2.452-3.905 5.705-3.905 9.147s1.398 6.696 3.905 9.148l43.88 42.909a13.324 13.324 0 0 0 9.354 3.82c3.52 0 6.847-1.368 9.355-3.82L310.24 182.572c5.207-4.999 5.207-13.25.048-18.296Zm-3.183 15.231L169.006 314.554c-1.639 1.603-3.857 2.499-6.22 2.499-2.363 0-4.532-.896-6.22-2.499l-43.879-42.91a8.432 8.432 0 0 1-2.556-6.036c0-2.31.916-4.432 2.556-6.082l138.099-135.047c1.639-1.603 3.857-2.499 6.22-2.499 2.363 0 4.533.896 6.22 2.499l43.879 42.909a8.433 8.433 0 0 1 0 12.119Z" fill="#fff"></path><path d="m135.88 267.494 5.304-5.186c.868-.849.868-2.264 0-3.16l-5.835-5.705c-.868-.849-2.314-.849-3.23 0l-5.304 5.187c-.868.848-.868 2.263 0 3.159l5.834 5.705c.916.849 2.363.849 3.231 0ZM143.451 256.979c.867.849 2.314.849 3.23 0l5.304-5.187c.868-.849.868-2.263 0-3.159l-5.834-5.706c-.868-.849-2.315-.849-3.231 0l-5.304 5.187c-.868.849-.868 2.263 0 3.159l5.835 5.706ZM154.155 246.464c.868.849 2.314.849 3.231 0l5.304-5.187c.868-.849.868-2.263 0-3.159l-5.835-5.706c-.868-.848-2.314-.848-3.231 0l-5.304 5.187c-.868.849-.868 2.264 0 3.16l5.835 5.705ZM164.908 235.996c.868.849 2.315.849 3.231 0l5.304-5.187c.868-.849.868-2.263 0-3.159l-5.835-5.706c-.868-.849-2.314-.849-3.23 0l-5.304 5.187c-.868.849-.868 2.263 0 3.159l5.834 5.706ZM175.661 225.481c.868.848 2.314.848 3.23 0l5.304-5.187c.868-.849.868-2.264 0-3.159l-5.834-5.706c-.868-.849-2.315-.849-3.231 0l-5.304 5.187c-.868.849-.868 2.263 0 3.159l5.835 5.706ZM186.413 214.965c.868.849 2.315.849 3.231 0l5.304-5.187c.868-.848.868-2.263 0-3.159l-5.883-5.658c-.868-.849-2.314-.849-3.23 0l-5.304 5.187c-.868.848-.868 2.263 0 3.159l5.882 5.658ZM197.118 204.45c.868.849 2.314.849 3.23 0l5.305-5.186c.867-.849.867-2.264 0-3.16l-5.835-5.705c-.868-.849-2.314-.849-3.231 0l-5.304 5.187c-.868.848-.868 2.263 0 3.159l5.835 5.705ZM207.871 193.982c.868.848 2.314.848 3.231 0l5.304-5.187c.868-.849.868-2.264 0-3.159l-5.835-5.706c-.868-.849-2.314-.849-3.23 0l-5.305 5.187c-.867.849-.867 2.263 0 3.159l5.835 5.706ZM218.624 183.468c.868.848 2.314.848 3.23 0l5.304-5.187c.868-.849.868-2.264 0-3.16l-5.834-5.705c-.868-.849-2.315-.849-3.231 0l-5.304 5.187c-.868.848-.868 2.263 0 3.159l5.835 5.706ZM229.376 172.952c.868.849 2.315.849 3.231 0l5.304-5.187c.868-.849.868-2.263 0-3.159l-5.883-5.658c-.868-.849-2.314-.849-3.23 0l-5.305 5.186c-.867.849-.867 2.264 0 3.16l5.883 5.658ZM240.081 162.437c.868.849 2.315.849 3.231 0l5.304-5.187c.868-.849.868-2.263 0-3.159l-5.835-5.706c-.868-.849-2.314-.849-3.23 0l-5.304 5.187c-.868.849-.868 2.263 0 3.159l5.834 5.706ZM250.834 151.922c.868.849 2.315.849 3.231 0l5.304-5.187c.868-.848.868-2.263 0-3.159l-5.834-5.706c-.868-.848-2.315-.848-3.231 0L245 143.057c-.868.849-.868 2.264 0 3.16l5.834 5.705ZM147.259 275.982l-5.834-5.706c-.868-.849-2.315-.849-3.231 0l-5.304 5.187c-.868.849-.868 2.263 0 3.159l5.835 5.706c.868.849 2.314.849 3.23 0l5.304-5.187c.917-.849.917-2.263 0-3.159ZM148.995 259.809l-5.304 5.187c-.868.848-.868 2.263 0 3.159l5.835 5.658c.868.849 2.314.849 3.23 0l5.304-5.187c.868-.848.868-2.263 0-3.159l-5.834-5.705c-.916-.849-2.363-.849-3.231.047ZM163.461 263.297l5.304-5.187c.868-.849.868-2.263 0-3.159l-5.834-5.706c-.868-.848-2.315-.848-3.231 0l-5.304 5.187c-.868.849-.868 2.264 0 3.16l5.835 5.705c.916.849 2.362.849 3.23 0ZM170.453 238.778l-5.304 5.187c-.868.849-.868 2.263 0 3.159l5.834 5.706c.868.849 2.315.849 3.231 0l5.304-5.187c.868-.849.868-2.263 0-3.159l-5.834-5.706a2.368 2.368 0 0 0-3.231 0ZM181.206 228.31l-5.304 5.187c-.868.849-.868 2.263 0 3.159l5.834 5.706c.868.849 2.315.849 3.231 0l5.304-5.187c.868-.849.868-2.263 0-3.159l-5.834-5.706c-.916-.896-2.363-.896-3.231 0ZM191.959 217.795l-5.304 5.187c-.868.849-.868 2.263 0 3.159l5.834 5.706c.868.848 2.315.848 3.231 0l5.304-5.187c.868-.849.868-2.264 0-3.159l-5.835-5.706c-.916-.896-2.362-.896-3.23 0ZM202.712 207.28l-5.304 5.186c-.868.849-.868 2.264 0 3.16l5.834 5.705c.868.849 2.315.849 3.231 0l5.304-5.187c.868-.848.868-2.263 0-3.159l-5.835-5.705c-.916-.849-2.362-.849-3.23 0ZM213.416 196.764l-5.304 5.187c-.868.849-.868 2.264 0 3.16l5.835 5.705c.868.849 2.314.849 3.23 0l5.304-5.187c.868-.848.868-2.263 0-3.159l-5.834-5.706c-.868-.848-2.315-.848-3.231 0ZM224.169 186.249l-5.304 5.187c-.868.849-.868 2.264 0 3.159l5.834 5.706c.868.849 2.315.849 3.231 0l5.304-5.187c.868-.849.868-2.263 0-3.159l-5.834-5.706c-.917-.848-2.363-.848-3.231 0ZM234.922 175.781l-5.304 5.187c-.868.848-.868 2.263 0 3.159l5.834 5.705c.868.849 2.315.849 3.231 0l5.304-5.186c.868-.849.868-2.264 0-3.16l-5.835-5.705c-.916-.896-2.362-.896-3.23 0ZM245.674 165.266l-5.304 5.187c-.868.849-.868 2.263 0 3.159l5.834 5.706c.868.848 2.315.848 3.231 0l5.304-5.187c.868-.849.868-2.264 0-3.159l-5.883-5.706c-.867-.849-2.314-.849-3.182 0ZM260.14 168.756l5.304-5.187c.868-.849.868-2.264 0-3.16l-5.834-5.705c-.868-.849-2.315-.849-3.231 0l-5.304 5.187c-.868.849-.868 2.263 0 3.159l5.835 5.706c.916.896 2.362.896 3.23 0ZM267.662 158.24c.868.849 2.315.849 3.231 0l5.304-5.186c.868-.849.868-2.264 0-3.16l-5.835-5.705c-.867-.849-2.314-.849-3.23 0l-5.304 5.187c-.868.848-.868 2.263 0 3.159l5.834 5.705ZM152.371 280.98c-.868-.848-2.315-.848-3.231 0l-5.304 5.187c-.868.849-.868 2.264 0 3.159l5.835 5.706c.868.849 2.314.849 3.23 0l5.304-5.187c.868-.849.868-2.263 0-3.159l-5.834-5.706ZM168.959 276.171l-5.835-5.706c-.868-.849-2.314-.849-3.23 0l-5.305 5.187c-.868.849-.868 2.263 0 3.159l5.835 5.706c.868.849 2.314.849 3.231 0l5.304-5.187c.868-.849.868-2.263 0-3.159ZM171.177 274.001c.868.849 2.314.849 3.23 0l5.304-5.187c.868-.848.868-2.263 0-3.159l-5.834-5.705c-.868-.849-2.315-.849-3.231 0l-5.304 5.186c-.868.849-.868 2.264 0 3.16l5.835 5.705ZM185.159 263.486l5.305-5.187c.867-.848.867-2.263 0-3.159l-5.835-5.658c-.868-.849-2.314-.849-3.231 0l-5.304 5.187c-.868.848-.868 2.263 0 3.159l5.835 5.705a2.32 2.32 0 0 0 3.23-.047ZM195.864 252.971l5.304-5.187c.868-.848.868-2.263 0-3.159l-5.834-5.658c-.868-.849-2.315-.849-3.231 0l-5.304 5.187c-.868.848-.868 2.263 0 3.159l5.835 5.705c.916.849 2.362.849 3.23-.047ZM206.617 242.503l5.304-5.187c.868-.848.868-2.263 0-3.159l-5.834-5.705c-.868-.849-2.315-.849-3.231 0l-5.304 5.186c-.868.849-.868 2.264 0 3.16l5.834 5.705c.916.849 2.363.849 3.231 0ZM217.37 231.988l5.304-5.187c.868-.849.868-2.263 0-3.159l-5.834-5.706c-.868-.848-2.315-.848-3.231 0l-5.304 5.187c-.868.849-.868 2.264 0 3.159l5.835 5.706c.916.849 2.362.849 3.23 0ZM228.123 221.472l5.304-5.186c.868-.849.868-2.264 0-3.16l-5.835-5.705c-.867-.849-2.314-.849-3.23 0l-5.304 5.187c-.868.848-.868 2.263 0 3.159l5.834 5.705a2.278 2.278 0 0 0 3.231 0ZM238.875 210.957l5.304-5.187c.868-.848.868-2.263 0-3.159l-5.834-5.705c-.868-.849-2.315-.849-3.231 0l-5.304 5.186c-.868.849-.868 2.264 0 3.16l5.835 5.705c.868.896 2.314.896 3.23 0ZM249.58 200.489l5.304-5.186c.868-.849.868-2.264 0-3.16l-5.834-5.705c-.868-.849-2.315-.849-3.231 0l-5.304 5.187c-.868.848-.868 2.263 0 3.159l5.835 5.705c.916.849 2.362.849 3.23 0ZM260.333 189.974l5.304-5.186c.868-.849.868-2.264 0-3.16l-5.834-5.705c-.868-.849-2.315-.849-3.231 0l-5.304 5.187c-.868.848-.868 2.263 0 3.159l5.834 5.705c.917.849 2.363.849 3.231 0ZM271.086 179.459l5.304-5.187c.868-.849.868-2.263 0-3.159l-5.834-5.659c-.868-.848-2.315-.848-3.231 0l-5.304 5.187c-.868.849-.868 2.264 0 3.16l5.835 5.705a2.417 2.417 0 0 0 3.23-.047ZM272.774 163.286l5.834 5.705c.868.849 2.315.849 3.231 0l5.304-5.186c.868-.849.868-2.264 0-3.16l-5.835-5.705c-.868-.849-2.314-.849-3.23 0l-5.304 5.187c-.868.848-.868 2.263 0 3.159ZM174.504 281.64c-.868-.849-2.315-.849-3.231 0l-5.304 5.187c-.868.849-.868 2.263 0 3.159l5.834 5.706c.868.848 2.315.848 3.231 0l5.304-5.187c.868-.849.868-2.264 0-3.159l-5.834-5.706ZM185.256 271.125c-.868-.848-2.315-.848-3.231 0l-5.304 5.187c-.868.849-.868 2.264 0 3.159l5.835 5.706c.867.849 2.314.849 3.23 0l5.304-5.187c.868-.849.868-2.263 0-3.159l-5.834-5.706ZM196.009 260.61c-.868-.849-2.314-.849-3.23 0l-5.304 5.187c-.868.848-.868 2.263 0 3.159l5.834 5.705c.868.849 2.315.849 3.231 0l5.304-5.186c.868-.849.868-2.264 0-3.16l-5.835-5.705ZM249.387 208.412c-.868-.849-2.314-.849-3.182 0l-47.062 46.021a2.186 2.186 0 0 0 0 3.113l5.835 5.705c.868.849 2.314.849 3.182 0l47.062-46.021a2.185 2.185 0 0 0 0-3.112l-5.835-5.706ZM260.429 197.613c-.868-.849-2.314-.849-3.23 0l-5.304 5.187c-.868.849-.868 2.263 0 3.159l5.834 5.706c.868.849 2.315.849 3.231 0l5.304-5.187c.868-.849.868-2.263 0-3.159l-5.835-5.706ZM271.183 187.098c-.868-.849-2.315-.849-3.231 0l-5.304 5.187c-.868.849-.868 2.263 0 3.159l5.834 5.706c.868.848 2.315.848 3.231 0l5.304-5.187c.868-.849.868-2.264 0-3.159l-5.834-5.706ZM281.935 176.583c-.868-.848-2.315-.848-3.231 0l-5.304 5.187c-.868.849-.868 2.264 0 3.159l5.835 5.706c.868.849 2.314.849 3.23 0l5.304-5.187c.868-.849.868-2.263 0-3.159l-5.834-5.706ZM141.184 164.323l30.426 24.803 4.774-4.669-30.86-25.179c-5.545-4.527-11.766-10.516-10.415-16.645 1.06-4.857 6.895-7.781 11.958-7.781h.145c6.027 0 11.958 2.924 17.069 5.659 4.292 2.31 9.596 5.139 15.334 4.102 2.989-.566 5.786-2.075 8.824-4.762 6.799-5.989 11.379-14.477 12.633-23.341.241-1.792-1.013-3.443-2.893-3.678-1.832-.236-3.52.99-3.761 2.829-1.013 7.356-4.822 14.382-10.464 19.333-2.121 1.839-3.857 2.876-5.593 3.159-3.375.613-7.185-1.415-10.849-3.395-5.835-3.112-12.682-6.46-20.3-6.46h-.193c-7.571 0-16.636 4.574-18.468 12.92-2.122 9.572 5.641 17.352 12.633 23.105Z" fill="#fff"></path><defs><linearGradient id="processDefaultImageIconA" x1="289.831" y1="218.139" x2="80.152" y2="210.264" gradientUnits="userSpaceOnUse"><stop stop-color="#EFEFEF"></stop><stop offset="1" stop-color="#fff" stop-opacity=".56"></stop></linearGradient><linearGradient id="processDefaultImageIconB" x1="98.909" y1="150.023" x2="362.575" y2="192.19" gradientUnits="userSpaceOnUse"><stop stop-color="#373737"></stop><stop offset="1" stop-color="#111111"></stop></linearGradient><linearGradient id="processDefaultImageIconC" x1="214.875" y1="124.769" x2="359.559" y2="150.919" gradientUnits="userSpaceOnUse"><stop stop-color="#373737"></stop><stop offset="1" stop-color="#111111"></stop></linearGradient><linearGradient id="processDefaultImageIconD" x1="70.132" y1="107.718" x2="92.663" y2="111.564" gradientUnits="userSpaceOnUse"><stop stop-color="#373737"></stop><stop offset="1" stop-color="#111111"></stop></linearGradient><linearGradient id="processDefaultImageIconE" x1="214.922" y1="384.933" x2="237.402" y2="388.76" gradientUnits="userSpaceOnUse"><stop stop-color="#373737"></stop><stop offset="1" stop-color="#111111"></stop></linearGradient><linearGradient id="processDefaultImageIconF" x1="221.581" y1="70.659" x2="232.821" y2="72.573" gradientUnits="userSpaceOnUse"><stop stop-color="#373737"></stop><stop offset="1" stop-color="#111111"></stop></linearGradient><linearGradient id="processDefaultImageIconG" x1="69.662" y1="52.748" x2="87.224" y2="55.738" gradientUnits="userSpaceOnUse"><stop stop-color="#373737"></stop><stop offset="1" stop-color="#111111"></stop></linearGradient><linearGradient id="processDefaultImageIconH" x1="301.701" y1="373.952" x2="312.941" y2="375.866" gradientUnits="userSpaceOnUse"><stop stop-color="#373737"></stop><stop offset="1" stop-color="#111111"></stop></linearGradient><linearGradient id="processDefaultImageIconI" x1="315.813" y1="294.224" x2="333.376" y2="297.214" gradientUnits="userSpaceOnUse"><stop stop-color="#373737"></stop><stop offset="1" stop-color="#111111"></stop></linearGradient></defs></svg><div><h2 class="sc-1x9oq14-0 sc-rvdro8-2 jmLQpp hIDsVz">Процесс обучения</h2><div class="sc-1x9oq14-0 sc-pyhrzd-0 doSDez hRFuCQ">Занятия в OTUS — это не заранее отснятый материал. Вебинары проходят в режиме реального времени, где преподаватели-практики рассказывают об актуальных кейсах и инструментах, которые нужны им в работе сейчас. Вы сможете активно участвовать голосом, практиковаться, задавать вопросы и получать обратную связь. Такой формат дает реальный результат.<br><br>А если вы не смогли посетить занятие в реальном времени, то сможете посмотреть его в записи и задать вопрос преподавателю в закрытом Telegram-чате.</div></div></div><div class="sc-11l8wec-0 eOXZIV sc-x072mc-0 sc-nqd633-0 hOtCic bbEYfR"><div class="sc-16yt4q5-0 iHYLll"><div class="sc-16yt4q5-1 jyGyOw"><div src="/_next/static/images/img/oneImg-b1c92b38734a5b324f9b32a5a243bf06.svg" class="sc-16yt4q5-2 bUbCKQ"></div></div><div class="sc-1x9oq14-0 sc-16yt4q5-3 doSDez kgZxtV"><h3>Портфолио</h3>
<br>Подготовка проекта для портфолио в течение всего курса</div></div><div class="sc-16yt4q5-0 iHYLll"><div class="sc-16yt4q5-1 jyGyOw"><div src="/_next/static/images/img/twoImg-28bd45b9ade74f4471bf39916d76d47e.svg" class="sc-16yt4q5-2 dIESaV"></div></div><div class="sc-1x9oq14-0 sc-16yt4q5-3 doSDez kgZxtV"><h3>Эксперты</h3>
<br>Много практики и живого общения с преподавателями</div></div><div class="sc-16yt4q5-0 iHYLll"><div class="sc-16yt4q5-1 jyGyOw"><div src="/_next/static/images/img/threeImg-7d8d62a36e7b66f9691d1d7d01b44fb9.svg" class="sc-16yt4q5-2 gbGscf"></div></div><div class="sc-1x9oq14-0 sc-16yt4q5-3 doSDez kgZxtV"><h3>Оптимальная нагрузка</h3>
<br>Возможность совмещать учебу с работой</div></div></div><div class="sc-1ddwpfq-1 hnlXxp sc-1kuct9n-0 jzJAgH"><i class="sc-1ddwpfq-0 hAbnAH"></i><!--$!--><template data-dgst="BAILOUT_TO_CLIENT_SIDE_RENDERING"></template><!--/$--><div class="sc-x072mc-0 hOtCic"><div class="sc-1kuct9n-2 cfBLof"><h2 class="sc-1x9oq14-0 sc-1kuct9n-1 kswXpy jqwyOS">Партнеры</h2><div class="sc-1x9oq14-0 sc-1kuct9n-4 fPZiIk efarBD"><p>Многие студенты еще во время прохождения первой части программы находят или меняют работу, а к концу обучения могут претендовать на повышение в должности.</p></div><div class="sc-1x9oq14-0 sc-pyhrzd-0 doSDez dJQBfL sc-1kuct9n-5 hXsBII"><ul>
<li><strong>Получите помощь с оформлением резюме</strong>, портфолио и сопроводительного письма</li>
<li><strong>Разместите свое резюме в базе OTUS</strong> и сможете получать приглашения на собеседования от партнеров</li>
</ul></div></div><div class="sc-xgmw75-1 fqgPAJ"><div class="sc-xgmw75-3 jzczJK"><div class="sc-xgmw75-2 cGRACb"><div class="sc-xgmw75-9 jeGQMA"></div><h2 class="sc-1x9oq14-0 bTMeHF">Flutter-разработчик</h2></div><div class="sc-1x9oq14-0 sc-xgmw75-0 gGtEnS kWSJKL">Перспективы направления</div><div class="sc-1x9oq14-0 sc-xgmw75-4 hQBzUY fSmctL">Средний уровень зарплат:</div><div class="sc-xgmw75-5 fHxdGa"><div class="sc-1f5byvo-0 hlgWda"><span class="sc-1x9oq14-0 sc-1f5byvo-1 jmLQpp jyvyoR">60 000<!-- --> ₽</span><span class="sc-1x9oq14-0 sc-1f5byvo-2 gGtEnS lhTbHf">Junior+
специалист</span></div><div class="sc-1f5byvo-0 hlgWda"><span class="sc-1x9oq14-0 sc-1f5byvo-1 jmLQpp jyvyoR">180 000<!-- --> ₽</span><span class="sc-1x9oq14-0 sc-1f5byvo-2 gGtEnS lhTbHf">Middle+
специалист</span></div><div class="sc-1f5byvo-0 hlgWda"><span class="sc-1x9oq14-0 sc-1f5byvo-1 jmLQpp jyvyoR">300 000<!-- --> ₽</span><span class="sc-1x9oq14-0 sc-1f5byvo-2 gGtEnS lhTbHf">Senior
специалист</span></div></div></div><div class="sc-xgmw75-6 hNPHLe"><div class="sc-1x9oq14-0 sc-xgmw75-7 kswXpy hBXFys">500<div class="sc-1x9oq14-0 sc-xgmw75-8 gGtEnS rdBYv">актуальных вакансий</div></div><div class="sc-i28ik1-0 kOdeIv"><div class="sc-i28ik1-1 gNVXtU"><svg xmlns="http://www.w3.org/2000/svg" fill="none" width="48" height="48" viewBox="0 0 58 58"><g filter="url(#filter0_d)"><path stroke="#fff" stroke-width="4" d="M49.627 23.745c.693 11.392-7.98 21.189-19.372 21.882-11.392.693-21.189-7.98-21.882-19.372-.693-11.392 7.98-21.189 19.372-21.882 11.392-.693 21.189 7.98 21.882 19.372z"></path></g><path fill="#D6001C" d="M30.27 45.882c11.534-.702 20.314-10.62 19.613-22.154-.702-11.534-10.62-20.315-22.154-19.613-11.534.702-20.314 10.62-19.613 22.154.702 11.534 10.62 20.314 22.154 19.613z"></path><path fill="#FEFEFE" d="M19.421 16.123l.432 7.104c1.003-1.356 2.26-2.084 3.764-2.175.774-.047 1.477.058 2.117.314.642.253 1.13.6 1.473 1.034.345.44.59.928.739 1.475.148.544.258 1.397.329 2.56l.462 7.595-3.36.205-.417-6.841c-.082-1.358-.196-2.214-.346-2.571a1.672 1.672 0 0 0-.727-.83c-.337-.198-.747-.282-1.233-.252a2.726 2.726 0 0 0-1.465.507c-.427.305-.72.74-.888 1.309-.172.569-.224 1.398-.155 2.486l.392 6.486-3.357.204-1.12-18.406 3.361-.204zm13.232-.805l.433 7.104c1.003-1.356 2.26-2.084 3.762-2.175.772-.047 1.48.058 2.12.314.64.253 1.129.599 1.47 1.034.343.436.595.938.738 1.475.15.544.26 1.397.33 2.56l.462 7.595-3.357.204-.416-6.84c-.083-1.358-.199-2.214-.349-2.572a1.665 1.665 0 0 0-.729-.829c-.333-.198-.746-.282-1.233-.252a2.729 2.729 0 0 0-1.465.507c-.42.305-.715.74-.886 1.308-.168.57-.22 1.398-.154 2.487l.394 6.486-3.356.204-1.12-18.406 3.356-.204z"></path><defs><filter id="filter0_d" width="58" height="58" x="0" y="0" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"></feFlood><feColorMatrix in="SourceAlpha" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"></feColorMatrix><feOffset dy="4"></feOffset><feGaussianBlur stdDeviation="2.5"></feGaussianBlur><feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.13 0"></feColorMatrix><feBlend in2="BackgroundImageFix" result="effect1_dropShadow"></feBlend><feBlend in="SourceGraphic" in2="effect1_dropShadow" result="shape"></feBlend></filter></defs></svg></div></div></div></div><div class="sc-2pu6he-0 cawBGv"><h3 class="sc-1x9oq14-0 sc-2pu6he-1 jmLQpp hBsuCb">Работодатели курса</h3><div class="sc-2pu6he-2 kgryUb"><div class="swiper-slide sc-x5ajzb-0 kbHGLB"><div src="https://cdn.otus.ru/media/public/99/aa/99aa2f590377475c88cdd3651ec12c92.png" class="sc-x5ajzb-1 hluHAA"></div></div><div class="swiper-slide sc-x5ajzb-0 iiXtAN"><div src="https://cdn.otus.ru/media/public/e4/eb/e4ebe942cc124ec68ae502b2c282bed3.png" class="sc-x5ajzb-1 fHImYw"></div></div></div></div></div></div><div class="sc-x072mc-0 sc-ze365z-0 hOtCic jpiMVl"><div class="sc-1x9oq14-0 sc-ze365z-1 bTMeHF RPhWg"><h5>Формат обучения</h5></div><div class="sc-11l8wec-0 eOXZIV"><div class="sc-16yt4q5-0 iHYLll"><div class="sc-16yt4q5-1 jyGyOw"><div src="/_next/static/images/img/oneImg-d53504a93142009806d3cc77cd059dcb.svg" class="sc-16yt4q5-2 yjETG"></div></div><div class="sc-1x9oq14-0 sc-16yt4q5-3 doSDez kgZxtV"><h3>Интерактивные вебинары</h3>
<br>
<p>2 онлайн-трансляции по 2 ак.часа в неделю. Доступ к записям и материалам остается навсегда</p></div></div><div class="sc-16yt4q5-0 iHYLll"><div class="sc-16yt4q5-1 jyGyOw"><div src="/_next/static/images/img/twoImg-bf3134a7f0a1f9684257b13b37cd07b5.svg" class="sc-16yt4q5-2 iGfrzu"></div></div><div class="sc-1x9oq14-0 sc-16yt4q5-3 doSDez kgZxtV"><h3>Практика</h3>
<div> </div>
<p>Усильте своё портфолио и компетенции с помощью домашних заданий, проектной работы и интерактивных тренажёров с автопроверкой</p></div></div><div class="sc-16yt4q5-0 iHYLll"><div class="sc-16yt4q5-1 jyGyOw"><div src="/_next/static/images/img/threeImg-a81ea3b3db08e9c236bce2eb8f407ab7.svg" class="sc-16yt4q5-2 eJXsCF"></div></div><div class="sc-1x9oq14-0 sc-16yt4q5-3 doSDez kgZxtV"><h3>Активное комьюнити</h3>
<br>
<p>Общайтесь с преподавателями голосом на вебинарах, в закрытом чате Telegram и при проверке домашних заданий</p></div></div></div></div><div class="sc-x072mc-0 sc-1am6qh7-0 hOtCic cmpQoV"><div class="sc-1am6qh7-1 bmcDgO"><h2 class="sc-1x9oq14-0 sc-1am6qh7-2 kswXpy jZdzTX">Программа</h2><div class="sc-12j3cf5-0 kOagS"><div class="sc-li015i-2 lfKxpm sc-yxq6ju-1 bTvRzO" color="#575757"><div class="sc-li015i-0 hdRZtB"><h5 class="sc-1x9oq14-0 sc-li015i-1 fPZiIk bqYpKB">Введение в Dart</h5><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="sc-aobi4b-0 hzdVAl sc-li015i-3 dbNuvG"><path fill-rule="evenodd" clip-rule="evenodd" d="M12.0001 22C6.48012 22 2.00012 17.51 2.00012 12C2.00012 6.48 6.48012 2 12.0001 2C17.5101 2 22.0001 6.48 22.0001 12C22.0001 17.51 17.5101 22 12.0001 22ZM16.0001 10.02C15.7001 9.73 15.2301 9.73 14.9401 10.03L12.0001 12.98L9.06012 10.03C8.77012 9.73 8.29012 9.73 8.00012 10.02C7.70012 10.32 7.70012 10.79 8.00012 11.08L11.4701 14.57C11.6101 14.71 11.8001 14.79 12.0001 14.79C12.2001 14.79 12.3901 14.71 12.5301 14.57L16.0001 11.08C16.1501 10.94 16.2201 10.75 16.2201 10.56C16.2201 10.36 16.1501 10.17 16.0001 10.02Z" fill="currentColor"></path></svg></div><div style="height:0" class="sc-ptxdl6-1 kyVtIH"><div class="sc-ptxdl6-2 kVdrfk"><div class="sc-1x9oq14-0 sc-ptxdl6-0 doSDez ciEuHS"><p class="sc-1x9oq14-0 sc-12j3cf5-1 doSDez jTjgBj">В модуле рассматривается синтаксис языка Dart (с учетом Null Safety и новых конструкций последней версии Dart) и инструментальные средства компиляции и анализа приложений, создания и установки пакетов.</p><p class="sc-1x9oq14-0 sc-1dvzzbq-0 hQBzUY kGaApg">Тема 1: Введение в язык программирования Dart</p><p class="sc-1x9oq14-0 sc-1dvzzbq-0 hQBzUY kGaApg">Тема 2: Алгоритмы на языке Dart</p><p class="sc-1x9oq14-0 sc-1dvzzbq-0 hQBzUY kGaApg">Тема 3: Объектно-ориентированное программирование на Dart</p><p class="sc-1x9oq14-0 sc-1dvzzbq-0 hQBzUY kGaApg">Тема 4: Инструментальная поддержка Dart</p></div></div></div></div><div class="sc-li015i-2 lfKxpm sc-yxq6ju-1 bTvRzO" color="#575757"><div class="sc-li015i-0 hdRZtB"><h5 class="sc-1x9oq14-0 sc-li015i-1 fPZiIk bqYpKB">Flutter Framework</h5><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="sc-aobi4b-0 hzdVAl sc-li015i-3 dbNuvG"><path fill-rule="evenodd" clip-rule="evenodd" d="M12.0001 22C6.48012 22 2.00012 17.51 2.00012 12C2.00012 6.48 6.48012 2 12.0001 2C17.5101 2 22.0001 6.48 22.0001 12C22.0001 17.51 17.5101 22 12.0001 22ZM16.0001 10.02C15.7001 9.73 15.2301 9.73 14.9401 10.03L12.0001 12.98L9.06012 10.03C8.77012 9.73 8.29012 9.73 8.00012 10.02C7.70012 10.32 7.70012 10.79 8.00012 11.08L11.4701 14.57C11.6101 14.71 11.8001 14.79 12.0001 14.79C12.2001 14.79 12.3901 14.71 12.5301 14.57L16.0001 11.08C16.1501 10.94 16.2201 10.75 16.2201 10.56C16.2201 10.36 16.1501 10.17 16.0001 10.02Z" fill="currentColor"></path></svg></div><div style="height:0" class="sc-ptxdl6-1 kyVtIH"><div class="sc-ptxdl6-2 kVdrfk"><div class="sc-1x9oq14-0 sc-ptxdl6-0 doSDez ciEuHS"><p class="sc-1x9oq14-0 sc-12j3cf5-1 doSDez jTjgBj">В модуле подробно изучаются виджеты разметки, ввода информации и отображения содержания в Flutter, архитектурные подходы к декомпозиции виджетов и выделению бизнес-логики, разбираются алгоритмы определения и обработки жестов, особенности разработки Desktop (для Windows, Linux и MacOS) и Web-приложений.</p><p class="sc-1x9oq14-0 sc-1dvzzbq-0 hQBzUY kGaApg">Тема 1: Концепция реактивного пользовательского интерфейса, основные графические примитивы ui.Window</p><p class="sc-1x9oq14-0 sc-1dvzzbq-0 hQBzUY kGaApg">Тема 2: Анатомия отрисовки виджетов</p><p class="sc-1x9oq14-0 sc-1dvzzbq-0 hQBzUY kGaApg">Тема 3: Понятие и жизненный цикл виджета</p><p class="sc-1x9oq14-0 sc-1dvzzbq-0 hQBzUY kGaApg">Тема 4: Консультация: что внутри Flutter Framework и почему он устроен так</p><p class="sc-1x9oq14-0 sc-1dvzzbq-0 hQBzUY kGaApg">Тема 5: Базовые виджеты содержания (текст, изображения, пиктограммы). Составные виджеты. Виджеты разметки</p><p class="sc-1x9oq14-0 sc-1dvzzbq-0 hQBzUY kGaApg">Тема 6: Виджеты разметки. Создание прокручиваемых виджетов.</p><p class="sc-1x9oq14-0 sc-1dvzzbq-0 hQBzUY kGaApg">Тема 7: Виджеты ввода информации, работа с формами. Часть 1</p><p class="sc-1x9oq14-0 sc-1dvzzbq-0 hQBzUY kGaApg">Тема 8: Виджеты ввода информации, работа с формами. Часть 2</p><p class="sc-1x9oq14-0 sc-1dvzzbq-0 hQBzUY kGaApg">Тема 9: Визуальное оформление (расширение темы), шрифты, градиенты и шейдеры, использование возможностей Impeller</p><p class="sc-1x9oq14-0 sc-1dvzzbq-0 hQBzUY kGaApg">Тема 10: Практика по реализации сложной верстки. Навигация и уведомления</p><p class="sc-1x9oq14-0 sc-1dvzzbq-0 hQBzUY kGaApg">Тема 11: Лучшие архитектурные практики для создания приложений</p><p class="sc-1x9oq14-0 sc-1dvzzbq-0 hQBzUY kGaApg">Тема 12: Выбор темы и организация проектной работы</p><p class="sc-1x9oq14-0 sc-1dvzzbq-0 hQBzUY kGaApg">Тема 13: Кроссплатформенная разработка для Web</p><p class="sc-1x9oq14-0 sc-1dvzzbq-0 hQBzUY kGaApg">Тема 14: Кроссплатформенная разработка для Desktop</p><p class="sc-1x9oq14-0 sc-1dvzzbq-0 hQBzUY kGaApg">Тема 15: Низкоуровневое рисование с использованием сцены и возможностей Canvas.</p><p class="sc-1x9oq14-0 sc-1dvzzbq-0 hQBzUY kGaApg">Тема 16: Консультация по ДЗ + практика </p></div></div></div></div><div class="sc-li015i-2 lfKxpm sc-yxq6ju-1 bTvRzO" color="#575757"><div class="sc-li015i-0 hdRZtB"><h5 class="sc-1x9oq14-0 sc-li015i-1 fPZiIk bqYpKB">Асинхронность и сетевое взаимодействие</h5><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="sc-aobi4b-0 hzdVAl sc-li015i-3 dbNuvG"><path fill-rule="evenodd" clip-rule="evenodd" d="M12.0001 22C6.48012 22 2.00012 17.51 2.00012 12C2.00012 6.48 6.48012 2 12.0001 2C17.5101 2 22.0001 6.48 22.0001 12C22.0001 17.51 17.5101 22 12.0001 22ZM16.0001 10.02C15.7001 9.73 15.2301 9.73 14.9401 10.03L12.0001 12.98L9.06012 10.03C8.77012 9.73 8.29012 9.73 8.00012 10.02C7.70012 10.32 7.70012 10.79 8.00012 11.08L11.4701 14.57C11.6101 14.71 11.8001 14.79 12.0001 14.79C12.2001 14.79 12.3901 14.71 12.5301 14.57L16.0001 11.08C16.1501 10.94 16.2201 10.75 16.2201 10.56C16.2201 10.36 16.1501 10.17 16.0001 10.02Z" fill="currentColor"></path></svg></div><div style="height:0" class="sc-ptxdl6-1 kyVtIH"><div class="sc-ptxdl6-2 kVdrfk"><div class="sc-1x9oq14-0 sc-ptxdl6-0 doSDez ciEuHS"><p class="sc-1x9oq14-0 sc-12j3cf5-1 doSDez jTjgBj">В модуле разбираются способы генерации исходных текстов по описанию модели данных или сетевого API, библиотеки для локального хранения данных и обмена информацией по сети, а также архитектура приложений для Firebase, Auth0 и сервисов Google.</p><p class="sc-1x9oq14-0 sc-1dvzzbq-0 hQBzUY kGaApg">Тема 1: Асинхронность в Dart, потоки и Future</p><p class="sc-1x9oq14-0 sc-1dvzzbq-0 hQBzUY kGaApg">Тема 2: Сетевое взаимодействие, хранение данных на устройстве</p><p class="sc-1x9oq14-0 sc-1dvzzbq-0 hQBzUY kGaApg">Тема 3: Использование кодогенерации во Flutter. Сериализация данных в JSON. Создание неизменяемых классов.</p><p class="sc-1x9oq14-0 sc-1dvzzbq-0 hQBzUY kGaApg">Тема 4: Интеграция с внешними API и бессерверные приложения</p><p class="sc-1x9oq14-0 sc-1dvzzbq-0 hQBzUY kGaApg">Тема 5: Консультация по ДЗ + практика </p></div></div></div></div><div class="sc-li015i-2 lfKxpm sc-yxq6ju-1 bTvRzO" color="#575757"><div class="sc-li015i-0 hdRZtB"><h5 class="sc-1x9oq14-0 sc-li015i-1 fPZiIk bqYpKB">Анимация и мультимедиа в Flutter </h5><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="sc-aobi4b-0 hzdVAl sc-li015i-3 dbNuvG"><path fill-rule="evenodd" clip-rule="evenodd" d="M12.0001 22C6.48012 22 2.00012 17.51 2.00012 12C2.00012 6.48 6.48012 2 12.0001 2C17.5101 2 22.0001 6.48 22.0001 12C22.0001 17.51 17.5101 22 12.0001 22ZM16.0001 10.02C15.7001 9.73 15.2301 9.73 14.9401 10.03L12.0001 12.98L9.06012 10.03C8.77012 9.73 8.29012 9.73 8.00012 10.02C7.70012 10.32 7.70012 10.79 8.00012 11.08L11.4701 14.57C11.6101 14.71 11.8001 14.79 12.0001 14.79C12.2001 14.79 12.3901 14.71 12.5301 14.57L16.0001 11.08C16.1501 10.94 16.2201 10.75 16.2201 10.56C16.2201 10.36 16.1501 10.17 16.0001 10.02Z" fill="currentColor"></path></svg></div><div style="height:0" class="sc-ptxdl6-1 kyVtIH"><div class="sc-ptxdl6-2 kVdrfk"><div class="sc-1x9oq14-0 sc-ptxdl6-0 doSDez ciEuHS"><p class="sc-1x9oq14-0 sc-12j3cf5-1 doSDez jTjgBj">В модуле рассматриваются вопросы создания визуальной привлекательности приложений (через программные и внешние анимации, игровые элементы) и работы с мультимедиа (камерой, звуком, видео).</p><p class="sc-1x9oq14-0 sc-1dvzzbq-0 hQBzUY kGaApg">Тема 1: Неявные анимации во Flutter, Hero-анимации</p><p class="sc-1x9oq14-0 sc-1dvzzbq-0 hQBzUY kGaApg">Тема 2: Явные анимации во Flutter, переходы между страницами. Управление анимацией. Кривые.</p><p class="sc-1x9oq14-0 sc-1dvzzbq-0 hQBzUY kGaApg">Тема 3: Игровые движки во Flutter. Создание 3D-анимации.</p><p class="sc-1x9oq14-0 sc-1dvzzbq-0 hQBzUY kGaApg">Тема 4: Интеграция сторонних анимаций во Flutter-приложение.</p><p class="sc-1x9oq14-0 sc-1dvzzbq-0 hQBzUY kGaApg">Тема 5: Поддержка мультимедиа и камеры во Flutter. Обработка изображений, распознавание и классификация.</p><p class="sc-1x9oq14-0 sc-1dvzzbq-0 hQBzUY kGaApg">Тема 6: Интернационализация и доступность</p><p class="sc-1x9oq14-0 sc-1dvzzbq-0 hQBzUY kGaApg">Тема 7: Консультация по ДЗ + практика </p></div></div></div></div><div class="sc-li015i-2 lfKxpm sc-yxq6ju-1 bTvRzO" color="#575757"><div class="sc-li015i-0 hdRZtB"><h5 class="sc-1x9oq14-0 sc-li015i-1 fPZiIk bqYpKB">Архитектура приложений, управление состоянием и навигация</h5><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="sc-aobi4b-0 hzdVAl sc-li015i-3 dbNuvG"><path fill-rule="evenodd" clip-rule="evenodd" d="M12.0001 22C6.48012 22 2.00012 17.51 2.00012 12C2.00012 6.48 6.48012 2 12.0001 2C17.5101 2 22.0001 6.48 22.0001 12C22.0001 17.51 17.5101 22 12.0001 22ZM16.0001 10.02C15.7001 9.73 15.2301 9.73 14.9401 10.03L12.0001 12.98L9.06012 10.03C8.77012 9.73 8.29012 9.73 8.00012 10.02C7.70012 10.32 7.70012 10.79 8.00012 11.08L11.4701 14.57C11.6101 14.71 11.8001 14.79 12.0001 14.79C12.2001 14.79 12.3901 14.71 12.5301 14.57L16.0001 11.08C16.1501 10.94 16.2201 10.75 16.2201 10.56C16.2201 10.36 16.1501 10.17 16.0001 10.02Z" fill="currentColor"></path></svg></div><div style="height:0" class="sc-ptxdl6-1 kyVtIH"><div class="sc-ptxdl6-2 kVdrfk"><div class="sc-1x9oq14-0 sc-ptxdl6-0 doSDez ciEuHS"><p class="sc-1x9oq14-0 sc-12j3cf5-1 doSDez jTjgBj">Модуль полностью посвящен рассмотрению архитектурных подходов к управлению состоянием приложений и реализации навигации между страницами (подходы Navigator и Router).</p><p class="sc-1x9oq14-0 sc-1dvzzbq-0 hQBzUY kGaApg">Тема 1: Inherited-виджеты. Библиотеки Provider и Riverpod.</p><p class="sc-1x9oq14-0 sc-1dvzzbq-0 hQBzUY kGaApg">Тема 2: Clean-архитектура. Реализация инъекции зависимостей (getit, Provider/Riverpod)</p><p class="sc-1x9oq14-0 sc-1dvzzbq-0 hQBzUY kGaApg">Тема 3: Redux для управления состоянием, hook</p><p class="sc-1x9oq14-0 sc-1dvzzbq-0 hQBzUY kGaApg">Тема 4: Архитектура MobX</p><p class="sc-1x9oq14-0 sc-1dvzzbq-0 hQBzUY kGaApg">Тема 5: Архитектура MWWM и Bloc</p><p class="sc-1x9oq14-0 sc-1dvzzbq-0 hQBzUY kGaApg">Тема 6: Модель навигации как управление состоянием. Navigator 2.0</p></div></div></div></div><div class="sc-li015i-2 lfKxpm sc-yxq6ju-1 bTvRzO" color="#575757"><div class="sc-li015i-0 hdRZtB"><h5 class="sc-1x9oq14-0 sc-li015i-1 fPZiIk bqYpKB">Flutter Engine и взаимодействие с платформой.</h5><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="sc-aobi4b-0 hzdVAl sc-li015i-3 dbNuvG"><path fill-rule="evenodd" clip-rule="evenodd" d="M12.0001 22C6.48012 22 2.00012 17.51 2.00012 12C2.00012 6.48 6.48012 2 12.0001 2C17.5101 2 22.0001 6.48 22.0001 12C22.0001 17.51 17.5101 22 12.0001 22ZM16.0001 10.02C15.7001 9.73 15.2301 9.73 14.9401 10.03L12.0001 12.98L9.06012 10.03C8.77012 9.73 8.29012 9.73 8.00012 10.02C7.70012 10.32 7.70012 10.79 8.00012 11.08L11.4701 14.57C11.6101 14.71 11.8001 14.79 12.0001 14.79C12.2001 14.79 12.3901 14.71 12.5301 14.57L16.0001 11.08C16.1501 10.94 16.2201 10.75 16.2201 10.56C16.2201 10.36 16.1501 10.17 16.0001 10.02Z" fill="currentColor"></path></svg></div><div style="height:0" class="sc-ptxdl6-1 kyVtIH"><div class="sc-ptxdl6-2 kVdrfk"><div class="sc-1x9oq14-0 sc-ptxdl6-0 doSDez ciEuHS"><p class="sc-1x9oq14-0 sc-12j3cf5-1 doSDez jTjgBj">В модуле рассматривается архитектура движка Flutter, способы вызова методов и обмена сообщениями с нативным кодом, а также общие подходы к доработке движка и сборке под разные аппаратные платформы.</p><p class="sc-1x9oq14-0 sc-1dvzzbq-0 hQBzUY kGaApg">Тема 1: Взаимодействие с платформенным кодом (platform channels, Pigeon, native assets)</p><p class="sc-1x9oq14-0 sc-1dvzzbq-0 hQBzUY kGaApg">Тема 2: Использование нативных Views из Android / iOS, обработка системных событий</p><p class="sc-1x9oq14-0 sc-1dvzzbq-0 hQBzUY kGaApg">Тема 3: Устройство Flutter Engine, Add-to-App</p><p class="sc-1x9oq14-0 sc-1dvzzbq-0 hQBzUY kGaApg">Тема 4: Flutter Embedder, запуск приложения на произвольном оборудовании</p><p class="sc-1x9oq14-0 sc-1dvzzbq-0 hQBzUY kGaApg">Тема 5: Консультация по ДЗ + практика </p></div></div></div></div><div class="sc-li015i-2 lfKxpm sc-yxq6ju-1 bTvRzO" color="#575757"><div class="sc-li015i-0 hdRZtB"><h5 class="sc-1x9oq14-0 sc-li015i-1 fPZiIk bqYpKB">Оптимизация производительности</h5><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="sc-aobi4b-0 hzdVAl sc-li015i-3 dbNuvG"><path fill-rule="evenodd" clip-rule="evenodd" d="M12.0001 22C6.48012 22 2.00012 17.51 2.00012 12C2.00012 6.48 6.48012 2 12.0001 2C17.5101 2 22.0001 6.48 22.0001 12C22.0001 17.51 17.5101 22 12.0001 22ZM16.0001 10.02C15.7001 9.73 15.2301 9.73 14.9401 10.03L12.0001 12.98L9.06012 10.03C8.77012 9.73 8.29012 9.73 8.00012 10.02C7.70012 10.32 7.70012 10.79 8.00012 11.08L11.4701 14.57C11.6101 14.71 11.8001 14.79 12.0001 14.79C12.2001 14.79 12.3901 14.71 12.5301 14.57L16.0001 11.08C16.1501 10.94 16.2201 10.75 16.2201 10.56C16.2201 10.36 16.1501 10.17 16.0001 10.02Z" fill="currentColor"></path></svg></div><div style="height:0" class="sc-ptxdl6-1 kyVtIH"><div class="sc-ptxdl6-2 kVdrfk"><div class="sc-1x9oq14-0 sc-ptxdl6-0 doSDez ciEuHS"><p class="sc-1x9oq14-0 sc-12j3cf5-1 doSDez jTjgBj">В модуле рассматриваются вопросы анализа производительности, лучшие практики по оптимизации виджетов и алгоритмов приложения, выделению сложной логики в отдельный поток выполнения.</p><p class="sc-1x9oq14-0 sc-1dvzzbq-0 hQBzUY kGaApg">Тема 1: Профилирование потоков приложения</p><p class="sc-1x9oq14-0 sc-1dvzzbq-0 hQBzUY kGaApg">Тема 2: Изоляты для вычислительных задач</p></div></div></div></div><div class="sc-li015i-2 lfKxpm sc-yxq6ju-1 bTvRzO" color="#575757"><div class="sc-li015i-0 hdRZtB"><h5 class="sc-1x9oq14-0 sc-li015i-1 fPZiIk bqYpKB">Тестирование и публикация</h5><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="sc-aobi4b-0 hzdVAl sc-li015i-3 dbNuvG"><path fill-rule="evenodd" clip-rule="evenodd" d="M12.0001 22C6.48012 22 2.00012 17.51 2.00012 12C2.00012 6.48 6.48012 2 12.0001 2C17.5101 2 22.0001 6.48 22.0001 12C22.0001 17.51 17.5101 22 12.0001 22ZM16.0001 10.02C15.7001 9.73 15.2301 9.73 14.9401 10.03L12.0001 12.98L9.06012 10.03C8.77012 9.73 8.29012 9.73 8.00012 10.02C7.70012 10.32 7.70012 10.79 8.00012 11.08L11.4701 14.57C11.6101 14.71 11.8001 14.79 12.0001 14.79C12.2001 14.79 12.3901 14.71 12.5301 14.57L16.0001 11.08C16.1501 10.94 16.2201 10.75 16.2201 10.56C16.2201 10.36 16.1501 10.17 16.0001 10.02Z" fill="currentColor"></path></svg></div><div style="height:0" class="sc-ptxdl6-1 kyVtIH"><div class="sc-ptxdl6-2 kVdrfk"><div class="sc-1x9oq14-0 sc-ptxdl6-0 doSDez ciEuHS"><p class="sc-1x9oq14-0 sc-12j3cf5-1 doSDez jTjgBj">В модуле будут рассмотрены вопросы создания автоматических тестов для алгоритмов, виджетов и приложения в целом, подготовки библиотек и приложений к публикации на pub.dev и в магазинах приложений Google Play Store и Apple Store, особенности публикации для Huawei.</p><p class="sc-1x9oq14-0 sc-1dvzzbq-0 hQBzUY kGaApg">Тема 1: Unit-тестирование и виджет-тесты</p><p class="sc-1x9oq14-0 sc-1dvzzbq-0 hQBzUY kGaApg">Тема 2: Интеграционные тесты</p><p class="sc-1x9oq14-0 sc-1dvzzbq-0 hQBzUY kGaApg">Тема 3: Создание собственных компонентов, публикация на pub.dev</p><p class="sc-1x9oq14-0 sc-1dvzzbq-0 hQBzUY kGaApg">Тема 4: Сбор информации о функционировании приложения, публикация в магазины</p></div></div></div></div><div class="sc-li015i-2 lfKxpm sc-yxq6ju-1 bTvRzO" color="#575757"><div class="sc-li015i-0 hdRZtB"><h5 class="sc-1x9oq14-0 sc-li015i-1 fPZiIk bqYpKB">Курсовой проект</h5><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="sc-aobi4b-0 hzdVAl sc-li015i-3 dbNuvG"><path fill-rule="evenodd" clip-rule="evenodd" d="M12.0001 22C6.48012 22 2.00012 17.51 2.00012 12C2.00012 6.48 6.48012 2 12.0001 2C17.5101 2 22.0001 6.48 22.0001 12C22.0001 17.51 17.5101 22 12.0001 22ZM16.0001 10.02C15.7001 9.73 15.2301 9.73 14.9401 10.03L12.0001 12.98L9.06012 10.03C8.77012 9.73 8.29012 9.73 8.00012 10.02C7.70012 10.32 7.70012 10.79 8.00012 11.08L11.4701 14.57C11.6101 14.71 11.8001 14.79 12.0001 14.79C12.2001 14.79 12.3901 14.71 12.5301 14.57L16.0001 11.08C16.1501 10.94 16.2201 10.75 16.2201 10.56C16.2201 10.36 16.1501 10.17 16.0001 10.02Z" fill="currentColor"></path></svg></div><div style="height:0" class="sc-ptxdl6-1 kyVtIH"><div class="sc-ptxdl6-2 kVdrfk"><div class="sc-1x9oq14-0 sc-ptxdl6-0 doSDez ciEuHS"><p class="sc-1x9oq14-0 sc-12j3cf5-1 doSDez jTjgBj">Завершающий модуль с самостоятельной разработкой функционального приложения с поддержкой сетевого взаимодействия, изолятов, платформенного кода, разметки страниц с использованием анимации и навигации.</p><p class="sc-1x9oq14-0 sc-1dvzzbq-0 hQBzUY kGaApg">Тема 1: Консультация по проектам и домашним заданиям</p><p class="sc-1x9oq14-0 sc-1dvzzbq-0 hQBzUY kGaApg">Тема 2: Защита проектных работ</p><p class="sc-1x9oq14-0 sc-1dvzzbq-0 hQBzUY kGaApg">Тема 3: Подведение итогов курса</p></div></div></div></div></div></div><div class="sc-hqry8z-0 jFkdvO"><h5 class="sc-1x9oq14-0 sc-hqry8z-1 fPZiIk byqrft">Также вы можете получить полную программу,
чтобы убедиться, что обучение вам подходит</h5><button class="sc-1qig7zt-0 bYRRHi sc-hqry8z-2 ipIyzP">Получить</button></div></div><div class="sc-x072mc-0 sc-130tum6-0 hOtCic jjMVIs"><div class="sc-1x9oq14-0 sc-130tum6-1 fPZiIk leLsGR"><h2>Выпускной проект</h2>
<br>
<p>На протяжении всего курса вы будете работать над собственным проектом. Его разработка нужна для окончательного закрепления знаний, которые были получены в рамках пройденных занятий. При успешном выполнении он станет образцом кода, который Flutter-разработчик сможет показывать будущим работодателям.</p></div><svg viewBox="0 0 512 460" fill="none" xmlns="http://www.w3.org/2000/svg" class="sc-wqbts8-0 coDgWq"><path d="M245.655 442C367.71 442 466.655 343.055 466.655 221C466.655 98.9451 367.71 0 245.655 0C123.6 0 24.6548 98.9451 24.6548 221C24.6548 343.055 123.6 442 245.655 442Z" fill="url(#GraduationProjects0)"></path><path d="M339.351 330.984C408.966 330.984 465.399 274.623 465.399 205.097C465.399 135.571 408.966 79.2095 339.351 79.2095C269.737 79.2095 213.304 135.571 213.304 205.097C213.304 274.623 269.737 330.984 339.351 330.984Z" fill="url(#GraduationProjects1)"></path><path d="M190.363 320.725C201.556 273.813 172.551 226.722 125.58 215.544C78.6085 204.366 31.4575 233.333 20.2651 280.245C9.07273 327.157 38.0773 374.248 85.0486 385.426C132.02 396.604 179.171 367.636 190.363 320.725Z" fill="url(#GraduationProjects1)"></path><path d="M396.694 335.224V363.622C396.694 377.186 385.671 388.63 371.68 388.63H115.172C101.604 388.63 90.1567 377.61 90.1567 363.622V335.224H396.694Z" fill="white"></path><path d="M396.694 335.224V363.622C396.694 377.186 385.671 388.63 371.68 388.63H115.172C101.604 388.63 90.1567 377.61 90.1567 363.622V335.224H396.694Z" fill="url(#GraduationProjects2)"></path><path d="M371.679 391.595H115.171C99.4834 391.595 87.188 378.879 87.188 363.62V335.221C87.188 333.526 88.4599 331.83 90.5798 331.83H396.693C398.389 331.83 400.085 333.102 400.085 335.221V363.62C399.661 378.879 387.366 391.595 371.679 391.595ZM93.5477 338.612V363.62C93.5477 375.488 103.299 385.237 115.171 385.237H371.679C383.55 385.237 393.302 375.488 393.302 363.62V338.612H93.5477Z" fill="url(#GraduationProjects1)"></path><path d="M397.456 188.138V335.218H90.583V188.138C90.583 174.574 101.619 163.13 115.625 163.13H372.414C385.996 163.13 397.456 174.574 397.456 188.138Z" fill="white"></path><path d="M397.842 338.612H90.5835C88.3095 338.612 87.188 337.34 87.188 335.221V188.14C87.188 172.457 99.9213 160.165 115.201 160.165H371.99C387.694 160.165 400.003 172.881 400.003 188.14L400.085 336.348C400.085 337.468 398.964 338.612 397.842 338.612ZM93.9791 332.254H394.061V188.14C394.061 176.272 384.298 166.523 372.414 166.523H115.626C103.741 166.523 93.9791 176.272 93.9791 188.14V332.254Z" fill="url(#GraduationProjects1)"></path><path d="M57.122 177.118C53.7268 177.118 50.756 174.575 50.756 171.184C50.756 169.065 49.0584 167.369 46.9364 167.369C44.8144 167.369 43.1167 169.065 43.1167 171.184C43.1167 174.575 40.5703 177.118 37.1751 177.118C35.0531 177.118 33.3555 178.814 33.3555 180.933C33.3555 183.052 35.0531 184.748 37.1751 184.748C40.5703 184.748 43.1167 187.291 43.1167 190.682C43.1167 192.801 44.8144 194.497 46.9364 194.497C49.0584 194.497 50.756 192.801 50.756 190.682C50.756 187.291 53.3024 184.748 56.6976 184.748C58.8197 184.748 60.5173 183.052 60.5173 180.933C60.9417 178.814 59.2441 177.118 57.122 177.118Z" fill="url(#GraduationProjects1)"></path><path d="M494.257 351.754C490.862 351.754 487.891 349.211 487.891 345.82C487.891 343.7 486.194 342.005 484.072 342.005C481.95 342.005 480.252 343.7 480.252 345.82C480.252 349.211 477.706 351.754 474.31 351.754C472.188 351.754 470.491 353.449 470.491 355.569C470.491 357.688 472.188 359.383 474.31 359.383C477.706 359.383 480.252 361.926 480.252 365.317C480.252 367.437 481.95 369.132 484.072 369.132C486.194 369.132 487.891 367.437 487.891 365.317C487.891 361.926 490.438 359.383 493.833 359.383C495.955 359.383 497.653 357.688 497.653 355.569C497.653 353.449 495.955 351.754 494.257 351.754Z" fill="url(#GraduationProjects1)"></path><path d="M79.6176 149.566C83.3679 149.566 86.4081 146.53 86.4081 142.784C86.4081 139.039 83.3679 136.002 79.6176 136.002C75.8673 136.002 72.8271 139.039 72.8271 142.784C72.8271 146.53 75.8673 149.566 79.6176 149.566Z" fill="url(#GraduationProjects1)"></path><path d="M71.5515 92.7706C65.6098 92.7706 60.9414 88.1081 60.9414 82.174C60.9414 76.2399 65.6098 71.5774 71.5515 71.5774C77.4931 71.5774 82.1616 76.2399 82.1616 82.174C82.1616 88.1081 77.4931 92.7706 71.5515 92.7706ZM71.5515 78.3592C69.4295 78.3592 67.3075 80.0547 67.3075 82.5978C67.3075 85.141 69.0051 86.8365 71.5515 86.8365C73.6735 86.8365 75.7955 85.141 75.7955 82.5978C75.7955 80.0547 73.6735 78.3592 71.5515 78.3592Z" fill="url(#GraduationProjects1)"></path><path d="M431.446 391.597C435.196 391.597 438.237 388.561 438.237 384.815C438.237 381.07 435.196 378.033 431.446 378.033C427.696 378.033 424.656 381.07 424.656 384.815C424.656 388.561 427.696 391.597 431.446 391.597Z" fill="url(#GraduationProjects1)"></path><path d="M463.278 317.841C457.336 317.841 452.668 313.178 452.668 307.244C452.668 301.31 457.336 296.648 463.278 296.648C469.22 296.648 473.888 301.31 473.888 307.244C473.888 313.178 469.22 317.841 463.278 317.841ZM463.278 303.43C461.156 303.43 459.034 305.125 459.034 307.668C459.034 310.211 460.732 311.907 463.278 311.907C465.4 311.907 467.522 310.211 467.522 307.668C467.522 305.125 465.824 303.43 463.278 303.43Z" fill="url(#GraduationProjects1)"></path><path d="M305.398 426.355L299.881 423.812C285.875 417.454 279.085 403.89 279.085 388.207H212.454C212.454 403.466 206.088 417.454 191.658 423.812L186.141 426.355H305.398Z" fill="url(#GraduationProjects1)"></path><path d="M305.399 429.319H186.142C184.444 429.319 183.171 428.472 183.171 426.776C182.747 425.505 183.595 423.809 184.869 423.385L190.386 420.842C202.269 415.756 209.06 403.888 209.06 388.205C209.06 386.509 210.333 384.814 212.455 384.814H279.51C281.208 384.814 282.906 386.085 282.906 388.205C282.906 403.464 289.696 415.332 301.579 420.842L307.097 423.385C308.37 423.809 309.219 425.505 308.794 426.776C308.37 428.472 307.097 429.319 305.399 429.319ZM199.723 422.961H292.243C282.906 416.18 276.964 405.159 276.54 391.596H215.426C215.001 405.159 209.06 416.18 199.723 422.961Z" fill="url(#GraduationProjects1)"></path><path d="M85.1337 445.001H36.3274C34.6297 445.001 32.9321 443.73 32.9321 441.61C32.9321 439.915 34.2053 438.219 36.3274 438.219H85.1337C86.8313 438.219 88.5289 439.491 88.5289 441.61C88.5289 443.73 86.8313 445.001 85.1337 445.001Z" fill="url(#GraduationProjects1)"></path><path d="M450.121 445.001H431.872C430.174 445.001 428.477 443.73 428.477 441.61C428.477 439.915 429.75 438.219 431.872 438.219H450.121C451.819 438.219 453.516 439.491 453.516 441.61C453.092 443.73 451.819 445.001 450.121 445.001Z" fill="url(#GraduationProjects1)"></path><path d="M332.986 321.657H139.458C127.999 321.657 118.662 312.332 118.662 300.888V198.313C118.662 186.868 127.999 177.543 139.458 177.543H333.41C344.869 177.543 354.206 186.868 354.206 198.313V300.888C353.781 312.332 344.445 321.657 332.986 321.657ZM139.458 183.901C131.394 183.901 125.028 190.259 125.028 198.313V300.888C125.028 308.941 131.394 315.299 139.458 315.299H333.41C341.474 315.299 347.84 308.941 347.84 300.888V198.313C347.84 190.259 341.474 183.901 333.41 183.901H139.458Z" fill="url(#GraduationProjects1)"></path><path d="M139.458 183.901C131.394 183.901 125.028 190.259 125.028 198.313V300.888C125.028 308.941 131.394 315.299 139.458 315.299H333.41C341.474 315.299 347.84 308.941 347.84 300.888V198.313C347.84 190.259 341.474 183.901 333.41 183.901H139.458Z" fill="url(#GraduationProjects1)"></path><path d="M314.284 292.413H239.688C231.933 292.413 225.655 285.208 225.655 276.306V239.43C225.655 230.529 231.933 223.323 239.688 223.323H314.284C322.039 223.323 328.317 230.529 328.317 239.43V276.306C328.317 285.208 322.039 292.413 314.284 292.413ZM239.688 229.681C234.887 229.681 231.194 233.92 231.194 239.43V276.306C231.194 281.817 234.887 286.055 239.688 286.055H314.284C319.084 286.055 322.777 281.817 322.777 276.306V239.43C322.777 233.92 319.084 229.681 314.284 229.681H239.688Z" fill="white"></path><path d="M239.688 229.681C234.887 229.681 231.194 233.92 231.194 239.43V276.306C231.194 281.817 234.887 286.055 239.688 286.055H314.284C319.084 286.055 322.777 281.817 322.777 276.306V239.43C322.777 233.92 319.084 229.681 314.284 229.681H239.688Z" fill="white"></path><mask id="mask0" maskType="alpha" maskUnits="userSpaceOnUse" x="144" y="222" width="77" height="70"><rect x="144.655" y="222.999" width="76" height="69" rx="16" fill="#C4C4C4"></rect></mask><g mask="url(#mask0)"><rect x="144.655" y="222.813" width="76" height="70.3704" fill="white"></rect><path fill-rule="evenodd" clip-rule="evenodd" d="M154.589 291.24L148.034 296.924C148.034 296.924 150.758 273.834 170.151 253.646L167.852 255.265C167.699 254.186 167.58 252.702 167.58 251.2C167.58 247.726 168.533 244.505 170.185 241.789C170.185 241.789 171.513 242.228 172.994 242.076C172.994 242.076 171.155 241.907 170.1 241.267C168.193 240.086 167.818 236.73 167.818 236.73C169.044 238.686 172.262 237.978 174.05 237.387C176.774 235.144 180.196 233.829 183.908 233.829C187.398 233.829 191.11 234.959 194.106 237.337C195.877 237.927 199.163 238.686 200.389 236.696C200.389 236.696 199.981 240.12 198.108 241.317C196.729 242.211 195.435 242.245 195.435 242.245C196.66 242.346 197.937 241.874 197.937 241.874C199.964 245.584 200.815 250.627 199.521 257.12C199.282 258.301 198.295 261.033 197.324 263.327L199.317 259.616C200.866 264.339 202.586 281.947 183.448 293.399L183.355 293.454L183.239 293.523C181.858 294.342 180.448 295.179 179.362 296.367C179.311 296.426 179.26 296.481 179.209 296.536C179.157 296.59 179.106 296.645 179.055 296.704C178.204 297.682 178.408 299.116 179.379 299.858C179.532 299.976 179.719 300.094 179.924 300.162C183.193 301.46 187.994 304.378 183.005 309.286C183.005 309.286 184.776 304.901 181.626 304.193C181.626 304.193 182.478 306.992 180.179 308.898C180.179 308.898 180.741 305.896 178.766 303.957C178.119 303.323 177.176 303.287 176.134 303.247C174.872 303.198 173.465 303.144 172.262 302.017C171.428 301.224 170.713 299.926 170.202 297.733C170.1 297.311 169.248 293.871 169.248 293.871L169.401 296.654C166.541 296.789 163.034 296.671 159.628 296.333L160.871 293.213L151.967 307.33L154.589 291.24ZM187.313 247.827C187.313 250.268 189.463 252.246 192.114 252.246C194.766 252.246 196.916 250.268 196.916 247.827C196.916 245.387 194.766 243.409 192.114 243.409C189.463 243.409 187.313 245.387 187.313 247.827ZM189.407 247.827C189.407 249.197 190.619 250.307 192.114 250.307C193.61 250.307 194.822 249.197 194.822 247.827C194.822 247.276 194.625 246.766 194.292 246.355C194.267 246.79 193.873 247.136 193.391 247.136C192.893 247.136 192.489 246.766 192.489 246.309C192.489 245.942 192.752 245.63 193.114 245.523C192.805 245.41 192.468 245.348 192.114 245.348C190.619 245.348 189.407 246.458 189.407 247.827ZM176.587 252.246C173.935 252.246 171.785 250.268 171.785 247.827C171.785 245.387 173.935 243.409 176.587 243.409C179.238 243.409 181.388 245.387 181.388 247.827C181.388 250.268 179.238 252.246 176.587 252.246ZM176.587 250.307C175.091 250.307 173.879 249.197 173.879 247.827C173.879 246.458 175.091 245.348 176.587 245.348C176.94 245.348 177.278 245.41 177.588 245.523C177.232 245.631 176.978 245.943 176.978 246.309C176.978 246.765 177.387 247.136 177.881 247.136C178.358 247.136 178.741 246.804 178.765 246.355C179.097 246.767 179.294 247.276 179.294 247.827C179.294 249.197 178.082 250.307 176.587 250.307ZM184.368 250.205C188.403 250.172 184.35 257.002 184.35 257.002C184.35 257.002 180.298 250.189 184.333 250.205H184.368ZM180.537 260.46C180.128 260.494 179.907 260.527 179.907 260.527C179.907 260.527 180.111 260.477 180.537 260.308C180.628 260.293 180.731 260.278 180.843 260.261C180.981 260.241 181.134 260.218 181.303 260.19C181.353 260.187 181.405 260.184 181.458 260.181C181.728 260.164 182.031 260.145 182.358 260.173C183.159 260.224 184.129 260.426 185.134 260.898C185.193 260.932 185.257 260.962 185.321 260.991C185.385 261.021 185.449 261.05 185.508 261.084C185.568 261.118 185.632 261.156 185.696 261.193C185.759 261.231 185.823 261.269 185.883 261.303C185.934 261.354 186.002 261.387 186.07 261.421C186.104 261.446 186.134 261.468 186.164 261.489C186.194 261.51 186.223 261.531 186.257 261.556C186.317 261.598 186.381 261.645 186.445 261.691C186.509 261.737 186.572 261.784 186.632 261.826L186.99 262.13C187.018 262.154 187.047 262.178 187.077 262.202C187.172 262.28 187.269 262.36 187.347 262.45C187.568 262.669 187.807 262.905 187.994 263.175C188.42 263.698 188.743 264.305 189.033 264.946L189.051 264.994L189.078 265.068C189.185 265.351 189.297 265.648 189.356 265.958C189.373 266.051 189.394 266.139 189.416 266.228C189.437 266.316 189.458 266.405 189.475 266.498C189.483 266.576 189.495 266.657 189.507 266.741C189.52 266.838 189.534 266.938 189.543 267.037C189.561 267.122 189.578 267.206 189.578 267.307V267.594V268.167C189.546 268.339 189.529 268.524 189.513 268.698L189.509 268.741L189.475 269.028C189.475 269.093 189.461 269.151 189.447 269.211C189.439 269.244 189.43 269.278 189.424 269.314C189.407 269.407 189.386 269.504 189.365 269.601C189.343 269.698 189.322 269.795 189.305 269.888C189.284 270.014 189.243 270.134 189.202 270.252C189.178 270.322 189.154 270.392 189.135 270.461C189.084 270.664 189.016 270.849 188.948 271.035C188.879 271.22 188.794 271.406 188.709 271.591C188.045 273.059 187.041 274.442 185.849 275.673C184.657 276.904 183.295 278.017 181.865 279.029L180.758 279.754C180.588 279.872 180.4 279.99 180.213 280.108L179.651 280.446C179.277 280.665 178.902 280.884 178.51 281.103L177.387 281.711L176.263 282.318C176.027 282.43 175.797 282.548 175.57 282.664C175.42 282.741 175.271 282.818 175.122 282.891C174.583 283.171 174.034 283.432 173.496 283.689C173.287 283.789 173.08 283.888 172.875 283.988C171.444 284.672 170.028 285.278 168.691 285.85L168.55 285.91C168.136 286.081 167.727 286.245 167.324 286.407C167.049 286.518 166.777 286.627 166.507 286.737C166.207 286.851 165.91 286.962 165.618 287.071L165.617 287.072C165.264 287.204 164.918 287.333 164.583 287.462C164.308 287.557 164.04 287.656 163.779 287.753C163.44 287.877 163.112 287.998 162.795 288.103C162.51 288.197 162.228 288.291 161.954 288.383L161.949 288.385L161.948 288.385L161.947 288.386C161.684 288.474 161.427 288.56 161.178 288.642C160.278 288.94 159.483 289.172 158.794 289.372C158.702 289.399 158.611 289.426 158.522 289.452C157.826 289.656 157.263 289.801 156.873 289.902L156.872 289.902L156.871 289.902L156.785 289.924C156.393 290.025 156.172 290.076 156.172 290.076C156.172 290.076 156.972 289.739 158.369 289.132C158.686 288.993 159.032 288.838 159.406 288.67L159.407 288.669L159.408 288.669C159.855 288.467 160.343 288.248 160.871 288.018C161.633 287.682 162.481 287.291 163.39 286.873C163.619 286.767 163.853 286.66 164.089 286.551C164.668 286.281 165.281 285.995 165.911 285.691C166.23 285.537 166.554 285.379 166.882 285.219L166.882 285.219L166.884 285.218C167.202 285.062 167.525 284.904 167.852 284.746C169.18 284.089 170.576 283.38 172.006 282.638L172.126 282.576C172.209 282.533 172.292 282.49 172.376 282.447C172.972 282.139 173.576 281.827 174.169 281.491C174.413 281.356 174.657 281.223 174.901 281.09L174.901 281.09C175.389 280.824 175.877 280.558 176.365 280.277C176.471 280.217 176.578 280.156 176.686 280.094L176.688 280.093L176.689 280.093L176.69 280.092C176.946 279.945 177.209 279.795 177.472 279.653C177.651 279.543 177.829 279.438 178.008 279.333C178.187 279.227 178.366 279.122 178.545 279.012L179.089 278.692C179.277 278.59 179.447 278.472 179.617 278.354L180.656 277.663C182.001 276.702 183.278 275.673 184.402 274.56C184.963 274.003 185.474 273.413 185.934 272.822C186.377 272.215 186.785 271.608 187.109 270.967C187.151 270.891 187.19 270.811 187.228 270.731C187.266 270.651 187.305 270.571 187.347 270.495C187.376 270.423 187.402 270.352 187.427 270.282C187.462 270.186 187.495 270.093 187.534 270.006C187.556 269.936 187.582 269.869 187.609 269.803C187.647 269.709 187.685 269.616 187.705 269.517C187.73 269.432 187.751 269.352 187.773 269.272C187.794 269.192 187.815 269.112 187.841 269.028C187.848 269 187.857 268.97 187.868 268.938C187.883 268.892 187.899 268.842 187.909 268.791L187.943 268.555C187.959 268.477 187.971 268.399 187.983 268.322C187.997 268.234 188.01 268.148 188.028 268.066C188.037 267.99 188.041 267.91 188.045 267.83C188.049 267.75 188.054 267.67 188.062 267.594L188.079 267.358C188.09 267.302 188.087 267.254 188.083 267.204C188.081 267.177 188.079 267.151 188.079 267.122C188.079 267.035 188.075 266.953 188.07 266.873C188.066 266.797 188.062 266.723 188.062 266.65C188.054 266.574 188.041 266.498 188.028 266.422C188.015 266.346 188.003 266.27 187.994 266.194C187.971 265.987 187.916 265.788 187.862 265.592C187.837 265.5 187.811 265.409 187.79 265.317C187.585 264.744 187.364 264.204 187.041 263.732C186.428 262.77 185.593 262.028 184.742 261.505C183.891 260.999 183.022 260.696 182.29 260.561C182.034 260.503 181.793 260.485 181.574 260.468C181.473 260.461 181.377 260.454 181.286 260.443C180.996 260.443 180.741 260.443 180.537 260.46Z" fill="url(#GraduationProjects1)"></path></g><path d="M217.122 212.722H147.095C145.398 212.722 143.7 211.45 143.7 209.331C143.7 207.635 144.973 205.94 147.095 205.94H217.122C218.82 205.94 220.517 207.211 220.517 209.331C220.093 211.026 218.82 212.722 217.122 212.722Z" fill="white"></path><path d="M263.384 212.722H229.008C227.31 212.722 225.612 211.45 225.612 209.331C225.612 207.635 226.886 205.94 229.008 205.94H263.384C265.082 205.94 266.779 207.211 266.779 209.331C266.355 211.026 265.082 212.722 263.384 212.722Z" fill="white"></path><path d="M285.026 212.722H274.416C272.719 212.722 271.021 211.45 271.021 209.331C271.021 207.635 272.294 205.94 274.416 205.94H285.026C286.724 205.94 288.422 207.211 288.422 209.331C287.997 211.026 286.724 212.722 285.026 212.722Z" fill="white"></path><path d="M325.346 212.722H296.063C294.365 212.722 292.667 211.45 292.667 209.331C292.667 207.635 293.941 205.94 296.063 205.94H325.346C327.044 205.94 328.742 207.211 328.742 209.331C328.317 211.026 327.044 212.722 325.346 212.722Z" fill="white"></path><path d="M319.829 436.522V442.032H167.469V436.522C167.469 431.011 172.137 426.349 177.654 426.349H310.068C315.585 426.349 319.829 430.588 319.829 436.522Z" fill="white"></path><path d="M319.83 445.001H167.469C165.772 445.001 164.074 443.73 164.074 441.61V436.524C164.074 429.318 170.016 423.384 177.231 423.384H309.645C316.859 423.384 322.801 429.318 322.801 436.524V442.034C323.225 443.73 321.528 445.001 319.83 445.001ZM170.44 438.643H316.435V436.524C316.435 432.709 313.464 429.742 309.645 429.742H177.655C173.835 429.742 170.865 432.709 170.865 436.524V438.643H170.44Z" fill="url(#GraduationProjects1)"></path><path d="M421.686 445.001H105.081C103.384 445.001 101.686 443.73 101.686 441.61C101.686 439.915 102.959 438.219 105.081 438.219H421.262C422.959 438.219 424.657 439.491 424.657 441.61C424.657 443.73 423.384 445.001 421.686 445.001Z" fill="url(#GraduationProjects1)"></path><defs><linearGradient id="GraduationProjects0" x1="228.598" y1="252.519" x2="264.261" y2="62.8264" gradientUnits="userSpaceOnUse"><stop stop-color="#EFEFEF"></stop><stop offset="1" stop-color="white" stop-opacity="0.56"></stop></linearGradient><linearGradient id="GraduationProjects1" x1="233.752" y1="160.296" x2="449.892" y2="197.12" gradientUnits="userSpaceOnUse"><stop stop-color="#373737"></stop><stop offset="1" stop-color="#111111"></stop></linearGradient><linearGradient id="GraduationProjects2" x1="347.655" y1="388.999" x2="213.549" y2="470.528" gradientUnits="userSpaceOnUse"><stop stop-color="#EFEFEF"></stop><stop offset="1" stop-color="white" stop-opacity="0.56"></stop></linearGradient></defs></svg></div><!--$!--><template data-dgst="BAILOUT_TO_CLIENT_SIDE_RENDERING"></template><!--/$--><div class="sc-1ddwpfq-1 hnlXxp sc-7bqyxh-1 eTWzoY"><i class="sc-1ddwpfq-0 euiDRT"></i><!--$!--><template data-dgst="BAILOUT_TO_CLIENT_SIDE_RENDERING"></template><!--/$--><section class="sc-7bqyxh-0 iJNhSn sc-x072mc-0 hOtCic"><div class="sc-7bqyxh-2 imGcoX"><h2 class="sc-1x9oq14-0 sc-7bqyxh-3 kswXpy gvtgmJ">Преподаватели</h2><div></div><div class="sc-1bkbgbz-0 cInatB swiper-ui sc-7bqyxh-5 gCZLLN"><div class="sc-1bkbgbz-1 cPJghB"><div class="swiper"><div class="swiper-wrapper"><div class="swiper-slide sc-1s527z5-0 fxMjmR"><div class="sc-jotj87-1 fjUCpx"><div class="sc-1x9oq14-0 sc-jotj87-5 wJZyp hhSKfU">Руководитель курса</div><div src="https://cdn.otus.ru/media/public/36/df/36df01a954304f0cbeee554225ff1680.jpeg" class="sc-jotj87-0 gqeIyk"></div></div><p class="sc-1x9oq14-0 sc-1s527z5-1 gGtEnS iiYkXk">Дмитрий Золотов</p><p class="sc-1x9oq14-0 sc-1s527z5-2 dvqddq jSHKpX">Flutter+Kotlin Developer</p><p class="sc-1x9oq14-0 sc-1s527z5-3 eMZyoN kLSaHO">Yandex</p></div><div class="swiper-slide sc-1s527z5-0 fxMjmR"><div class="sc-jotj87-1 fjUCpx"><div src="https://cdn.otus.ru/media/public/18/ce/18ce8d7dafaf40cb99eda2d5b03e1a39.png" class="sc-jotj87-0 jdiWqV"></div></div><p class="sc-1x9oq14-0 sc-1s527z5-1 gGtEnS iiYkXk">Руслан Цицер</p></div><div class="swiper-slide sc-1s527z5-0 fxMjmR"><div class="sc-jotj87-1 fjUCpx"><div src="https://cdn.otus.ru/media/public/4f/f3/4ff3ca0cc9c94e2696ddaa0bf848001b.png" class="sc-jotj87-0 egYrFK"></div></div><p class="sc-1x9oq14-0 sc-1s527z5-1 gGtEnS iiYkXk">Владислав Беленьков</p><p class="sc-1x9oq14-0 sc-1s527z5-2 dvqddq jSHKpX">Flutter developer</p></div><div class="swiper-slide sc-1s527z5-0 fxMjmR"><div class="sc-jotj87-1 fjUCpx"><div src="https://cdn.otus.ru/media/public/dd/06/dd061f7346b646138111c998e6f4cdd5.jpg" class="sc-jotj87-0 jhcsCS"></div></div><p class="sc-1x9oq14-0 sc-1s527z5-1 gGtEnS iiYkXk">Николай Бакланов</p><p class="sc-1x9oq14-0 sc-1s527z5-2 dvqddq jSHKpX">Инженер-разработчик</p><p class="sc-1x9oq14-0 sc-1s527z5-3 eMZyoN kLSaHO">VK</p></div><div class="swiper-slide sc-1s527z5-0 fxMjmR"><div class="sc-jotj87-1 fjUCpx"><div src="https://cdn.otus.ru/media/public/bd/aa/bdaa49508c154b63957666911f8d9431.jpg" class="sc-jotj87-0 fKFigb"></div></div><p class="sc-1x9oq14-0 sc-1s527z5-1 gGtEnS iiYkXk">Алексей Адрианов</p></div></div></div></div><div color="#fff" class="sc-1bkbgbz-6 hcbJSK"><button color="#fff" class="sc-1bkbgbz-2 sc-1bkbgbz-4 dQlnjC biZjNh"><div class="sc-1bqzqc9-0"><div size="28" class="sc-i28ik1-0 cvcsLz"><div class="sc-i28ik1-1 gNVXtU"><svg width="28" height="28" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M3.57771 12.2111C2.10361 12.9482 2.10361 15.0518 3.57771 15.7889L25.1056 26.5528C26.4354 27.2177 28 26.2507 28 24.7639L28 3.23607C28 1.7493 26.4354 0.782312 25.1056 1.44721L3.57771 12.2111Z" fill="currentColor"></path></svg></div></div></div></button><div class="sc-1bkbgbz-5 hGKrlu"></div><button color="#fff" class="sc-1bkbgbz-2 sc-1bkbgbz-3 dQlnjC iPzpLW"><div class="sc-1bqzqc9-0 dzJeEt"><div size="28" class="sc-i28ik1-0 cvcsLz"><div class="sc-i28ik1-1 gNVXtU"><svg width="28" height="28" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M3.57771 12.2111C2.10361 12.9482 2.10361 15.0518 3.57771 15.7889L25.1056 26.5528C26.4354 27.2177 28 26.2507 28 24.7639L28 3.23607C28 1.7493 26.4354 0.782312 25.1056 1.44721L3.57771 12.2111Z" fill="currentColor"></path></svg></div></div></div></button></div></div><p class="sc-1x9oq14-0 sc-7bqyxh-4 fPZiIk hgzLIf">Эксперты-практики делятся опытом, разбирают кейсы студентов и дают развернутый фидбэк на домашние задания</p></div></section></div><div id="broadcast" class="sc-x072mc-0 sc-1n8zn8-0 hOtCic kTlAtn"><div class="sc-1n8zn8-3 bNPdJC"><div class="sc-1x9oq14-0 sc-1n8zn8-1 bTMeHF eVtlSO"><h2>Ближайшие мероприятия</h2></div><div class="sc-1x9oq14-0 sc-1n8zn8-2 fPZiIk djvzct"><p>Открытый вебинар — это настоящее занятие в режиме он-лайн с преподавателем курса, которое позволяет посмотреть, как проходит процесс обучения. В ходе занятия слушатели имеют возможность задать вопросы и получить знания по реальным практическим кейсам.</p></div></div><div class="sc-1n8zn8-4 eruVPL"><div class="sc-fgesu2-0 gCLUsB"><div class="sc-yfz19-0 keMPbH"><div size="128" src="https://cdn.otus.ru/media/public/18/ce/18ce8d7dafaf40cb99eda2d5b03e1a39.png" class="sc-yfz19-1 kEHfjT"></div></div><div id="event-7009" class="sc-fgesu2-1 fNTfNW"><div class="sc-fgesu2-2 fxDzQc"><div class="sc-fgesu2-3 eyMrGT"><div class="sc-fgesu2-4 fGVXtz"><div class="sc-1x9oq14-0 sc-fgesu2-5 gGtEnS gLvmdB">Как писать Flutter-код так, чтобы ИИ правильно его дописывал</div><div class="sc-1x9oq14-0 sc-fgesu2-6 iFeEEh keqBcC">Руслан Цицер</div></div></div><div class="sc-1x9oq14-0 sc-2yxsal-0 doSDez jaQEyp"><span><span></span><span><span>Что будет на вебинаре?
</span><br/><span>- Почему AI-ассистенты ошибаются при генерации кода
</span><br/><span>- Как структура Flutter-проекта влияет на качество подсказок
</span><br/><span>- Принципы “AI-дружелюбного” кода: архитектура, нейминг, комментарии
</span><br/><span>- Сравнение плохого и правильного подхода на практике
</span><br/><span>
</span><br/><span>Для кого этот вебинар?
</span><br/><span>- Новичкам во Flutter
</span><br/><span>- Разработчикам, использующим AI-ассистентов
</span><br/><span>- Программистам, переходящим в мобильную разработку
</span><br/><span>
</span><br/><span>Что узнают участники?
</span><br/><span>- Как ИИ анализирует код и контекст проекта
</span><br/><span>- Какие практики улучшают качество автодополнения
</span><br/><span>- Как писать код, который легче масштабировать
</span><br/><span>- Приёмы ускорения разработки с помощью AI</span></span><span style="position:fixed;visibility:hidden;top:0;left:0">...<!-- --> <button class="sc-2yxsal-1 gjkZBp">Читать дальше</button></span></span></div></div><div class="sc-fgesu2-7 eaisXT"><div class="sc-fgesu2-8 cAsFre"><div class="sc-1x9oq14-0 sc-fgesu2-9 fPZiIk cLaaQZ">25 марта в 17:00</div><div class="sc-1x9oq14-0 enpOeQ">Открытый вебинар</div></div><div class="sc-fgesu2-10 hIqDgT"><button class="sc-1qig7zt-0 bYRRHi sc-fgesu2-11 fPQjfN"><div style="color:#fff" class="sc-10qj18o-1 bLNTdk"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid" class="sc-10qj18o-0 iJGzvz"><circle cx="50" cy="50" fill="none" r="45" stroke-width="10" stroke="currentColor" stroke-dasharray="73.82742735936014 73.82742735936014"></circle></svg></div></button><button class="sc-1qig7zt-0 jBZCRO"><div class="sc-1pd1pn6-0 kpFjsV"><svg class="sc-1pd1pn6-1 jpjsGB" width="6" height="6" viewBox="0 0 6 6" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M5.10103 2.08786H3.89795V0.911617C3.89795 0.409446 3.49521 0 2.99897 0C2.50377 0 2.1 0.409446 2.1 0.911617V2.08786H0.898973C0.40274 2.08786 0 2.49731 0 2.99948C0 3.50165 0.40274 3.9111 0.898973 3.9111H2.1V5.08838C2.1 5.59055 2.50377 6 2.99897 6C3.49521 6 3.89795 5.59055 3.89795 5.08838V3.9111H5.10103C5.59623 3.9111 6 3.50165 6 2.99948C6 2.49731 5.59623 2.08786 5.10103 2.08786Z" fill="currentColor"></path></svg><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="sc-aobi4b-0 hzdVAl"><path fill-rule="evenodd" clip-rule="evenodd" d="M16.4109 2.76862L16.4119 3.51824C19.1665 3.73414 20.9862 5.6112 20.9891 8.48975L21 16.9155C21.0039 20.054 19.0322 21.985 15.8718 21.99L8.15189 22C5.0112 22.004 3.01482 20.027 3.01087 16.8796L3.00001 8.55272C2.99606 5.65517 4.75153 3.78311 7.50618 3.53024L7.50519 2.78061C7.5042 2.34083 7.83002 2.01 8.26445 2.01C8.69887 2.009 9.02469 2.33883 9.02568 2.77861L9.02666 3.47826L14.8914 3.47027L14.8904 2.77062C14.8894 2.33084 15.2152 2.001 15.6497 2C16.0742 1.99901 16.4099 2.32884 16.4109 2.76862ZM4.52149 8.86157L19.4696 8.84158V8.49175C19.4272 6.34283 18.349 5.21539 16.4139 5.04748L16.4148 5.81709C16.4148 6.24688 16.0801 6.58771 15.6556 6.58771C15.2212 6.58871 14.8944 6.24888 14.8944 5.81909L14.8934 5.0095L9.02864 5.01749L9.02962 5.82609C9.02962 6.25687 8.70479 6.5967 8.27037 6.5967C7.83595 6.5977 7.50914 6.25887 7.50914 5.82809L7.50815 5.05847C5.58286 5.25138 4.51754 6.38281 4.5205 8.55072L4.52149 8.86157ZM15.2399 13.4043V13.4153C15.2498 13.8751 15.625 14.2239 16.0801 14.2139C16.5244 14.2029 16.8789 13.8221 16.869 13.3623C16.8483 12.9225 16.4918 12.5637 16.0485 12.5647C15.5944 12.5747 15.2389 12.9445 15.2399 13.4043ZM16.0554 17.892C15.6013 17.882 15.235 17.5032 15.234 17.0435C15.2241 16.5837 15.5884 16.2029 16.0426 16.1919H16.0525C16.5165 16.1919 16.8927 16.5707 16.8927 17.0405C16.8937 17.5102 16.5185 17.891 16.0554 17.892ZM11.1721 13.4203C11.1919 13.8801 11.568 14.2389 12.0222 14.2189C12.4665 14.1979 12.821 13.8181 12.8012 13.3583C12.7904 12.9085 12.425 12.5587 11.9807 12.5597C11.5266 12.5797 11.1711 12.9605 11.1721 13.4203ZM12.0262 17.8471C11.572 17.8671 11.1968 17.5082 11.1761 17.0485C11.1761 16.5887 11.5305 16.2089 11.9847 16.1879C12.429 16.1869 12.7953 16.5367 12.8052 16.9855C12.8259 17.4463 12.4705 17.8261 12.0262 17.8471ZM7.10434 13.4553C7.12408 13.915 7.50025 14.2749 7.95442 14.2539C8.39872 14.2339 8.75317 13.8531 8.73244 13.3933C8.72257 12.9435 8.35725 12.5937 7.91197 12.5947C7.4578 12.6147 7.10335 12.9955 7.10434 13.4553ZM7.95837 17.8521C7.5042 17.8731 7.12902 17.5132 7.10828 17.0535C7.1073 16.5937 7.46274 16.2129 7.91691 16.1929C8.3612 16.1919 8.7275 16.5417 8.73738 16.9915C8.75811 17.4513 8.40366 17.8321 7.95837 17.8521Z" fill="currentColor"></path></svg></div></button></div></div></div></div><div class="sc-fgesu2-0 gCLUsB"><div class="sc-yfz19-0 keMPbH"><div size="128" src="https://cdn.otus.ru/media/public/36/df/36df01a954304f0cbeee554225ff1680.jpeg" class="sc-yfz19-1 dEWWHa"></div></div><div id="event-7011" class="sc-fgesu2-1 fNTfNW"><div class="sc-fgesu2-2 fxDzQc"><div class="sc-fgesu2-3 eyMrGT"><div class="sc-fgesu2-4 fGVXtz"><div class="sc-1x9oq14-0 sc-fgesu2-5 gGtEnS gLvmdB">Flutter GenUI: когда AI-агент собирает ваш интерфейс</div><div class="sc-1x9oq14-0 sc-fgesu2-6 iFeEEh keqBcC">Дмитрий Золотов</div></div></div><div class="sc-1x9oq14-0 sc-2yxsal-0 doSDez jaQEyp"><span><span></span><span><span>В 2026 году Flutter получил GenUI SDK – инструмент, позволяющий AI-агентам генерировать интерактивный UI в рантайме из каталога ваших виджетов. Разберём архитектуру A2UI-протокола, построим рабочее демо и обсудим, где это меняет правила игры.
</span><br/><span>
</span><br/><span>Что будет рассмотрено:
</span><br/><span>- Архитектура GenUI SDK и A2UI-протокол: как LLM компонует интерфейс без генерации кода, оставаясь в рамках доверенного каталога виджетов
</span><br/><span>- Практика: собираем приложение, в котором AI-агент создаёт формы, карточки и навигацию на лету – от схемы CatalogItem до streaming-рендеринга
</span><br/><span>- Границы применимости: security model, latency, стоимость токенов и честный разговор о том, когда GenUI - оверинжиниринг
</span><br/><span>
</span><br/><span>Кому будет интересно:
</span><br/><span>- Flutter-разработчикам, которые хотят понять следующий эволюционный шаг фреймворка из официального роадмапа 2026
</span><br/><span>- Мобильным и фронтенд-инженерам, изучающим интеграцию LLM-агентов в пользовательские интерфейсы
</span><br/><span>- Тимлидам и архитекторам, оценивающим server-driven UI нового поколения для своих продуктов
</span><br/><span>
</span><br/><span>UI больше не пишут – его генерируют. Разберёмся, как именно</span></span><span style="position:fixed;visibility:hidden;top:0;left:0">...<!-- --> <button class="sc-2yxsal-1 gjkZBp">Читать дальше</button></span></span></div></div><div class="sc-fgesu2-7 eaisXT"><div class="sc-fgesu2-8 cAsFre"><div class="sc-1x9oq14-0 sc-fgesu2-9 fPZiIk cLaaQZ">13 апреля в 17:00</div><div class="sc-1x9oq14-0 enpOeQ">Открытый вебинар</div></div><div class="sc-fgesu2-10 hIqDgT"><button class="sc-1qig7zt-0 bYRRHi sc-fgesu2-11 fPQjfN"><div style="color:#fff" class="sc-10qj18o-1 bLNTdk"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid" class="sc-10qj18o-0 iJGzvz"><circle cx="50" cy="50" fill="none" r="45" stroke-width="10" stroke="currentColor" stroke-dasharray="73.82742735936014 73.82742735936014"></circle></svg></div></button><button class="sc-1qig7zt-0 jBZCRO"><div class="sc-1pd1pn6-0 kpFjsV"><svg class="sc-1pd1pn6-1 jpjsGB" width="6" height="6" viewBox="0 0 6 6" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M5.10103 2.08786H3.89795V0.911617C3.89795 0.409446 3.49521 0 2.99897 0C2.50377 0 2.1 0.409446 2.1 0.911617V2.08786H0.898973C0.40274 2.08786 0 2.49731 0 2.99948C0 3.50165 0.40274 3.9111 0.898973 3.9111H2.1V5.08838C2.1 5.59055 2.50377 6 2.99897 6C3.49521 6 3.89795 5.59055 3.89795 5.08838V3.9111H5.10103C5.59623 3.9111 6 3.50165 6 2.99948C6 2.49731 5.59623 2.08786 5.10103 2.08786Z" fill="currentColor"></path></svg><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="sc-aobi4b-0 hzdVAl"><path fill-rule="evenodd" clip-rule="evenodd" d="M16.4109 2.76862L16.4119 3.51824C19.1665 3.73414 20.9862 5.6112 20.9891 8.48975L21 16.9155C21.0039 20.054 19.0322 21.985 15.8718 21.99L8.15189 22C5.0112 22.004 3.01482 20.027 3.01087 16.8796L3.00001 8.55272C2.99606 5.65517 4.75153 3.78311 7.50618 3.53024L7.50519 2.78061C7.5042 2.34083 7.83002 2.01 8.26445 2.01C8.69887 2.009 9.02469 2.33883 9.02568 2.77861L9.02666 3.47826L14.8914 3.47027L14.8904 2.77062C14.8894 2.33084 15.2152 2.001 15.6497 2C16.0742 1.99901 16.4099 2.32884 16.4109 2.76862ZM4.52149 8.86157L19.4696 8.84158V8.49175C19.4272 6.34283 18.349 5.21539 16.4139 5.04748L16.4148 5.81709C16.4148 6.24688 16.0801 6.58771 15.6556 6.58771C15.2212 6.58871 14.8944 6.24888 14.8944 5.81909L14.8934 5.0095L9.02864 5.01749L9.02962 5.82609C9.02962 6.25687 8.70479 6.5967 8.27037 6.5967C7.83595 6.5977 7.50914 6.25887 7.50914 5.82809L7.50815 5.05847C5.58286 5.25138 4.51754 6.38281 4.5205 8.55072L4.52149 8.86157ZM15.2399 13.4043V13.4153C15.2498 13.8751 15.625 14.2239 16.0801 14.2139C16.5244 14.2029 16.8789 13.8221 16.869 13.3623C16.8483 12.9225 16.4918 12.5637 16.0485 12.5647C15.5944 12.5747 15.2389 12.9445 15.2399 13.4043ZM16.0554 17.892C15.6013 17.882 15.235 17.5032 15.234 17.0435C15.2241 16.5837 15.5884 16.2029 16.0426 16.1919H16.0525C16.5165 16.1919 16.8927 16.5707 16.8927 17.0405C16.8937 17.5102 16.5185 17.891 16.0554 17.892ZM11.1721 13.4203C11.1919 13.8801 11.568 14.2389 12.0222 14.2189C12.4665 14.1979 12.821 13.8181 12.8012 13.3583C12.7904 12.9085 12.425 12.5587 11.9807 12.5597C11.5266 12.5797 11.1711 12.9605 11.1721 13.4203ZM12.0262 17.8471C11.572 17.8671 11.1968 17.5082 11.1761 17.0485C11.1761 16.5887 11.5305 16.2089 11.9847 16.1879C12.429 16.1869 12.7953 16.5367 12.8052 16.9855C12.8259 17.4463 12.4705 17.8261 12.0262 17.8471ZM7.10434 13.4553C7.12408 13.915 7.50025 14.2749 7.95442 14.2539C8.39872 14.2339 8.75317 13.8531 8.73244 13.3933C8.72257 12.9435 8.35725 12.5937 7.91197 12.5947C7.4578 12.6147 7.10335 12.9955 7.10434 13.4553ZM7.95837 17.8521C7.5042 17.8731 7.12902 17.5132 7.10828 17.0535C7.1073 16.5937 7.46274 16.2129 7.91691 16.1929C8.3612 16.1919 8.7275 16.5417 8.73738 16.9915C8.75811 17.4513 8.40366 17.8321 7.95837 17.8521Z" fill="currentColor"></path></svg></div></button></div></div></div></div></div></div><div id="pastevents" class="sc-x072mc-0 sc-g9zqla-0 hOtCic frFtzw"><h2 class="sc-1x9oq14-0 sc-g9zqla-1 bTMeHF jqTCqB">Прошедшие <br class="sc-g9zqla-2 nExnN"/>мероприятия</h2><div class="sc-g9zqla-3 cmzqGo"><div id="video-6543" class="sc-1l3meww-0 gAbnmq"><div src="https://sun9-35.userapi.com/impg/YTFTued77RBtiw3wrJjBEaZ3EokMgwRhdcEw_A/zI5fq6JRpLE.jpg?size=320x240&quality=95&keep_aspect_ratio=1&background=000000&sign=15c5664087ce76e4770dbc2cb3ca5a5b&c_uniq_tag=plMopAoT5koKLTdqx0MylV9Tez8HMWlb4M6qwKuYjdI&type=video_thumb" class="sc-1l3meww-1 hEneaN"><svg width="48" height="48" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="sc-aobi4b-0 hzdVAl sc-1l3meww-7 hkpcCk"><path fill-rule="evenodd" clip-rule="evenodd" d="M2 12.0058C2 6.48625 6.48842 2 12 2C17.5116 2 22 6.48625 22 12.0058C22 17.5137 17.5116 22 12 22C6.48842 22 2 17.5137 2 12.0058ZM15.668 13.0178C15.7741 12.9117 15.9093 12.7477 15.9382 12.7091C16.0927 12.5065 16.1699 12.2557 16.1699 12.0058C16.1699 11.725 16.083 11.4645 15.9189 11.2523C15.9055 11.2388 15.8791 11.2102 15.8448 11.1728C15.7806 11.103 15.6885 11.0026 15.6004 10.9146C14.8089 10.0656 12.7432 8.67631 11.6622 8.25181C11.4981 8.18524 11.083 8.03956 10.861 8.02991C10.6486 8.02991 10.4459 8.07815 10.2529 8.17463C10.0116 8.3097 9.81853 8.52195 9.71236 8.77279C9.64479 8.94645 9.53861 9.46744 9.53861 9.47709C9.43243 10.0463 9.37452 10.9725 9.37452 11.9952C9.37452 12.9706 9.43243 13.8572 9.51931 14.4361C9.52169 14.4385 9.53 14.4799 9.5429 14.5442C9.58211 14.7397 9.6638 15.1471 9.75097 15.314C9.96332 15.7192 10.3784 15.9701 10.8224 15.9701H10.861C11.1506 15.9604 11.7587 15.7096 11.7587 15.7C12.7819 15.2754 14.7992 13.9537 15.61 13.0757L15.668 13.0178Z" fill="currentColor"></path></svg></div><div class="sc-1l3meww-2 cHxJxf"><div class="sc-1x9oq14-0 sc-1l3meww-3 dvqddq blhXzJ">Дмитрий Золотов</div><div class="sc-1x9oq14-0 sc-1l3meww-4 iFeEEh dePnfm">Открытый вебинар</div><div class="sc-1x9oq14-0 sc-1l3meww-5 doSDez gnNvLT">Flutter Twin — живые интерфейсы, отражающие и изменяющие реальность</div></div></div><div id="video-6523" class="sc-1l3meww-0 gAbnmq"><div src="https://i.mycdn.me/videoPreview?ct=-30&id=9472530320004&idx=0&od=1&type=32&tkn=6T4OhjaN_Tpds4u17qflyO9Y5z0&fn=vid_l" class="sc-1l3meww-1 bpHLik"><svg width="48" height="48" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="sc-aobi4b-0 hzdVAl sc-1l3meww-7 hkpcCk"><path fill-rule="evenodd" clip-rule="evenodd" d="M2 12.0058C2 6.48625 6.48842 2 12 2C17.5116 2 22 6.48625 22 12.0058C22 17.5137 17.5116 22 12 22C6.48842 22 2 17.5137 2 12.0058ZM15.668 13.0178C15.7741 12.9117 15.9093 12.7477 15.9382 12.7091C16.0927 12.5065 16.1699 12.2557 16.1699 12.0058C16.1699 11.725 16.083 11.4645 15.9189 11.2523C15.9055 11.2388 15.8791 11.2102 15.8448 11.1728C15.7806 11.103 15.6885 11.0026 15.6004 10.9146C14.8089 10.0656 12.7432 8.67631 11.6622 8.25181C11.4981 8.18524 11.083 8.03956 10.861 8.02991C10.6486 8.02991 10.4459 8.07815 10.2529 8.17463C10.0116 8.3097 9.81853 8.52195 9.71236 8.77279C9.64479 8.94645 9.53861 9.46744 9.53861 9.47709C9.43243 10.0463 9.37452 10.9725 9.37452 11.9952C9.37452 12.9706 9.43243 13.8572 9.51931 14.4361C9.52169 14.4385 9.53 14.4799 9.5429 14.5442C9.58211 14.7397 9.6638 15.1471 9.75097 15.314C9.96332 15.7192 10.3784 15.9701 10.8224 15.9701H10.861C11.1506 15.9604 11.7587 15.7096 11.7587 15.7C12.7819 15.2754 14.7992 13.9537 15.61 13.0757L15.668 13.0178Z" fill="currentColor"></path></svg></div><div class="sc-1l3meww-2 cHxJxf"><div class="sc-1x9oq14-0 sc-1l3meww-3 dvqddq blhXzJ">Руслан Цицер</div><div class="sc-1x9oq14-0 sc-1l3meww-4 iFeEEh dePnfm">Открытый вебинар</div><div class="sc-1x9oq14-0 sc-1l3meww-5 doSDez gnNvLT">Telegram + Flutter Web — создаём современное веб-приложение с ботом и интерфейсом</div></div></div></div><div class="sc-1x9oq14-0 sc-n3p609-1 doSDez caypgj">Для доступа ко всем прошедшим мероприятиям необходимо пройти<!-- --> <b>входное тестирование</b><br/>Возможность пройти вступительное тестирование повторно появится только через <b>3 дня</b><br/>Результаты тестирования будут отправлены вам <b>на email</b>, указанный при регистрации.<br/>Тест рассчитан на <b>30</b> минут, после начала тестирования отложить тестирование не получится!</div><div class="sc-1lrh8w5-0 ftkQLi sc-n3p609-0 fYPwsY"><button class="sc-1qig7zt-0 czpnNJ sc-1lrh8w5-3 JTsAm"><span class="sc-1lrh8w5-4 jTrfLJ">Вступительное тестирование</span><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="sc-aobi4b-0 hzdVAl sc-1lrh8w5-5 kfzfcV"><path fill-rule="evenodd" clip-rule="evenodd" d="M15.164 6.08252C15.4791 6.08684 15.7949 6.09117 16.1119 6.09441C19.5172 6.09441 22 8.52216 22 11.8748V16.1811C22 19.5337 19.5172 21.9615 16.1119 21.9615C14.7478 21.9904 13.3837 22 12.0098 22C10.6359 22 9.25221 21.9904 7.88813 21.9615C4.48283 21.9615 2 19.5337 2 16.1811V11.8748C2 8.52216 4.48283 6.09441 7.89794 6.09441C9.18351 6.07514 10.4985 6.05588 11.8332 6.05588V5.8921C11.8332 5.22736 11.2738 4.68786 10.6065 4.68786H9.63494C8.52601 4.68786 7.62316 3.80154 7.62316 2.72254C7.62316 2.32755 7.95682 2 8.35918 2C8.77134 2 9.09519 2.32755 9.09519 2.72254C9.09519 3.01156 9.34053 3.24277 9.63494 3.24277H10.6065C12.0883 3.25241 13.2954 4.43738 13.3052 5.88247V6.06551C13.9239 6.06551 14.5425 6.074 15.164 6.08252ZM10.8518 14.7457H9.82139V15.7669C9.82139 16.1618 9.48773 16.4894 9.08538 16.4894C8.67321 16.4894 8.34936 16.1618 8.34936 15.7669V14.7457H7.30913C6.90677 14.7457 6.57311 14.4277 6.57311 14.0231C6.57311 13.6281 6.90677 13.3006 7.30913 13.3006H8.34936V12.289C8.34936 11.894 8.67321 11.5665 9.08538 11.5665C9.48773 11.5665 9.82139 11.894 9.82139 12.289V13.3006H10.8518C11.2542 13.3006 11.5878 13.6281 11.5878 14.0231C11.5878 14.4277 11.2542 14.7457 10.8518 14.7457ZM15.0226 13.1175H15.1207C15.5231 13.1175 15.8567 12.7996 15.8567 12.395C15.8567 12 15.5231 11.6724 15.1207 11.6724H15.0226C14.6104 11.6724 14.2866 12 14.2866 12.395C14.2866 12.7996 14.6104 13.1175 15.0226 13.1175ZM16.7007 16.4316H16.7988C17.2012 16.4316 17.5348 16.1137 17.5348 15.7091C17.5348 15.3141 17.2012 14.9865 16.7988 14.9865H16.7007C16.2875 14.9865 15.9647 15.3141 15.9647 15.7091C15.9647 16.1137 16.2875 16.4316 16.7007 16.4316Z" fill="currentColor"></path></svg></button></div></div><div class="sc-1ddwpfq-1 hnlXxp sc-1xm68ya-2 isRQVJ"><i class="sc-1ddwpfq-0 hAbnAH"></i><!--$!--><template data-dgst="BAILOUT_TO_CLIENT_SIDE_RENDERING"></template><!--/$--><div class="sc-x072mc-0 sc-1xm68ya-1 hOtCic hqEzLD sc-x072mc-0 hOtCic"><h2 class="sc-1x9oq14-0 sc-1xm68ya-3 kswXpy cXcqyt">Этот курс может оплатить ваш работодатель</h2><div class="sc-1xm68ya-4 kscGdX"><div class="sc-1x9oq14-0 sc-1xm68ya-5 fPZiIk">Обучайтесь за счёт работодателя или разделите оплату 50/50</div><ul class="sc-1xm68ya-6 jEIquP"><li class="sc-1xm68ya-0 eNgslB">Подробно расскажем об интересующем вас курсе</li><li class="sc-1xm68ya-0 eNgslB">Объясним, как договориться с работодателем</li><li class="sc-1xm68ya-0 eNgslB">Сообщим стоимость обучения и варианты оплаты</li><li class="sc-1xm68ya-0 eNgslB">Ответим на вопросы</li><li class="sc-1xm68ya-0 eNgslB">Предоставим шаблон договора и счёт на оплату</li></ul><div><a class="sc-1xm68ya-7 eOihnY" target="_blank" rel="noopener noreferrer" href="/b2b">Подробнее о корпоративном обучении</a></div></div><div class="sc-32ejay-1 bnqryM"><button class="sc-1qig7zt-0 czpnNJ">Оставить заявку</button></div></div></div><div class="sc-x072mc-0 sc-h0c1ca-0 hOtCic dXezGA"><!--$!--><template data-dgst="BAILOUT_TO_CLIENT_SIDE_RENDERING"></template><!--/$--><h2 class="sc-1x9oq14-0 sc-h0c1ca-4 kswXpy dygiGU">Отзывы</h2><div class="sc-h0c1ca-1 gaiDWC"><div class="sc-1bkbgbz-0 haeyZv swiper-ui sc-h0c1ca-5 vuxta"><div class="sc-1bkbgbz-1 jssxGI"><div class="swiper"><div class="swiper-wrapper"><div class="swiper-slide sc-h3yero-0 gQNEkq"><div class="sc-h3yero-2 dOvyBf"><div class="sc-h3yero-3 keJcdl"><div size="88" class="sc-i28ik1-0 gsweRb"><div class="sc-i28ik1-1 gNVXtU"><svg width="88" height="88" viewBox="0 0 88 88" fill="none" xmlns="http://www.w3.org/2000/svg"><rect y="0.405762" width="88" height="87.5945" rx="43.7972" fill="url(#LessonSlugReviewsDefaultAvatar)"></rect><path fill-rule="evenodd" clip-rule="evenodd" d="M57.3454 32.1294C57.3454 39.5331 51.4091 45.4697 44.0002 45.4697C36.5937 45.4697 30.6549 39.5331 30.6549 32.1294C30.6549 24.7256 36.5937 18.7915 44.0002 18.7915C51.4091 18.7915 57.3454 24.7256 57.3454 32.1294ZM44.0002 69.2082C33.0657 69.2082 23.8335 67.431 23.8335 60.5742C23.8335 53.715 33.1237 52.0008 44.0002 52.0008C54.9371 52.0008 64.1668 53.778 64.1668 60.6347C64.1668 67.494 54.8766 69.2082 44.0002 69.2082Z" fill="white"></path><defs><linearGradient id="LessonSlugReviewsDefaultAvatar" x1="7.1381" y1="28.6163" x2="82.5726" y2="41.5112" gradientUnits="userSpaceOnUse"><stop stop-color="#373737"></stop><stop offset="1" stop-color="#111111"></stop></linearGradient></defs></svg></div></div></div><div class="sc-h3yero-5 dYfXnT"><p class="sc-1x9oq14-0 sc-h3yero-1 enpOeQ kaQYTv">Дмитрий Квасов</p><div class="sc-1x9oq14-0 sc-uyf7sm-0 iwrrOS hejpaX">11.02.2026</div></div><div class="sc-h3yero-6 bXBhOa"><a target="_blank" rel="noopener noreferrer" href="https://telegram.me/telegram" class="sc-e8trbg-0 ervbDS"><svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M31.9995 16.001C31.9995 24.8375 24.836 32.001 15.9995 32.001C7.16298 32.001 -0.000488281 24.8375 -0.000488281 16.001C-0.000488281 7.16444 7.16298 0.000976562 15.9995 0.000976562C24.836 0.000976562 31.9995 7.16444 31.9995 16.001ZM10.7138 14.5353C9.11105 15.2351 7.46425 15.9542 5.95835 16.7836C5.17203 17.3594 6.2171 17.7666 7.19758 18.1486C7.35345 18.2094 7.50765 18.2694 7.65265 18.3294C7.77331 18.3666 7.89598 18.4056 8.02031 18.4452C9.11078 18.7926 10.3266 19.18 11.3853 18.5973C13.1244 17.5983 14.7655 16.4434 16.4054 15.2893C16.9427 14.9112 17.4798 14.5332 18.0202 14.1608C18.0456 14.1446 18.0741 14.126 18.1054 14.1058C18.5657 13.8074 19.6011 13.1362 19.2181 14.061C18.3125 15.0514 17.3424 15.9281 16.3672 16.8096C15.7098 17.4037 15.0501 18 14.4061 18.6346C13.8452 19.0904 13.2628 20.0068 13.8908 20.645C15.3374 21.6577 16.8066 22.6458 18.275 23.6334C18.7528 23.9548 19.2306 24.2761 19.7074 24.5982C20.5155 25.2434 21.7785 24.7215 21.9562 23.7133C22.0352 23.2495 22.1145 22.7858 22.1938 22.322C22.6322 19.7588 23.0708 17.1948 23.4582 14.6233C23.5108 14.2199 23.5705 13.8166 23.6302 13.413C23.775 12.435 23.9199 11.4557 23.9652 10.4724C23.8485 9.49104 22.6586 9.70684 21.9965 9.92751C18.593 11.2226 15.2236 12.6136 11.8674 14.0292C11.4872 14.1976 11.1018 14.3659 10.7138 14.5353Z" fill="url(#PromoReviewSocialTg)"></path><defs><linearGradient id="PromoReviewSocialTg" x1="2.59519" y1="10.3069" x2="30.0331" y2="14.9755" gradientUnits="userSpaceOnUse"><stop stop-color="#373737"></stop><stop offset="1" stop-color="#111111"></stop></linearGradient></defs></svg></a></div></div><div class="sc-1x9oq14-0 sc-h3yero-8 doSDez fwXQYP">Курс понравился. Материал подаётся структурировано и понятно — от базовых принципов работы с фреймворком до более сложных тем, таких как управление состоянием, работа с API и оптимизация производительности приложения.
Особенно понравилось большое количество практических заданий, благодаря которым теория сразу закрепляется на практике. Преподаватели подробно разбирает сложные моменты и объясняет не только «как сделать», но и «почему именно так». Это помогает лучше понимать архитектуру приложений и писать более качественный код. Отдельное спасибо Николаю Мичурину за его подход к проверке ДЗ.</div></div><div class="swiper-slide sc-h3yero-0 gQNEkq"><div class="sc-h3yero-2 dOvyBf"><div class="sc-h3yero-3 keJcdl"><div size="88" class="sc-i28ik1-0 gsweRb"><div class="sc-i28ik1-1 gNVXtU"><svg width="88" height="88" viewBox="0 0 88 88" fill="none" xmlns="http://www.w3.org/2000/svg"><rect y="0.405762" width="88" height="87.5945" rx="43.7972" fill="url(#LessonSlugReviewsDefaultAvatar)"></rect><path fill-rule="evenodd" clip-rule="evenodd" d="M57.3454 32.1294C57.3454 39.5331 51.4091 45.4697 44.0002 45.4697C36.5937 45.4697 30.6549 39.5331 30.6549 32.1294C30.6549 24.7256 36.5937 18.7915 44.0002 18.7915C51.4091 18.7915 57.3454 24.7256 57.3454 32.1294ZM44.0002 69.2082C33.0657 69.2082 23.8335 67.431 23.8335 60.5742C23.8335 53.715 33.1237 52.0008 44.0002 52.0008C54.9371 52.0008 64.1668 53.778 64.1668 60.6347C64.1668 67.494 54.8766 69.2082 44.0002 69.2082Z" fill="white"></path><defs><linearGradient id="LessonSlugReviewsDefaultAvatar" x1="7.1381" y1="28.6163" x2="82.5726" y2="41.5112" gradientUnits="userSpaceOnUse"><stop stop-color="#373737"></stop><stop offset="1" stop-color="#111111"></stop></linearGradient></defs></svg></div></div></div><div class="sc-h3yero-5 dYfXnT"><p class="sc-1x9oq14-0 sc-h3yero-1 enpOeQ kaQYTv">Николай Нестеренко</p><div class="sc-1x9oq14-0 sc-uyf7sm-0 iwrrOS hejpaX">03.02.2026</div></div><div class="sc-h3yero-6 bXBhOa"><a target="_blank" rel="noopener noreferrer" href="https://telegram.me/telegram" class="sc-e8trbg-0 ervbDS"><svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M31.9995 16.001C31.9995 24.8375 24.836 32.001 15.9995 32.001C7.16298 32.001 -0.000488281 24.8375 -0.000488281 16.001C-0.000488281 7.16444 7.16298 0.000976562 15.9995 0.000976562C24.836 0.000976562 31.9995 7.16444 31.9995 16.001ZM10.7138 14.5353C9.11105 15.2351 7.46425 15.9542 5.95835 16.7836C5.17203 17.3594 6.2171 17.7666 7.19758 18.1486C7.35345 18.2094 7.50765 18.2694 7.65265 18.3294C7.77331 18.3666 7.89598 18.4056 8.02031 18.4452C9.11078 18.7926 10.3266 19.18 11.3853 18.5973C13.1244 17.5983 14.7655 16.4434 16.4054 15.2893C16.9427 14.9112 17.4798 14.5332 18.0202 14.1608C18.0456 14.1446 18.0741 14.126 18.1054 14.1058C18.5657 13.8074 19.6011 13.1362 19.2181 14.061C18.3125 15.0514 17.3424 15.9281 16.3672 16.8096C15.7098 17.4037 15.0501 18 14.4061 18.6346C13.8452 19.0904 13.2628 20.0068 13.8908 20.645C15.3374 21.6577 16.8066 22.6458 18.275 23.6334C18.7528 23.9548 19.2306 24.2761 19.7074 24.5982C20.5155 25.2434 21.7785 24.7215 21.9562 23.7133C22.0352 23.2495 22.1145 22.7858 22.1938 22.322C22.6322 19.7588 23.0708 17.1948 23.4582 14.6233C23.5108 14.2199 23.5705 13.8166 23.6302 13.413C23.775 12.435 23.9199 11.4557 23.9652 10.4724C23.8485 9.49104 22.6586 9.70684 21.9965 9.92751C18.593 11.2226 15.2236 12.6136 11.8674 14.0292C11.4872 14.1976 11.1018 14.3659 10.7138 14.5353Z" fill="url(#PromoReviewSocialTg)"></path><defs><linearGradient id="PromoReviewSocialTg" x1="2.59519" y1="10.3069" x2="30.0331" y2="14.9755" gradientUnits="userSpaceOnUse"><stop stop-color="#373737"></stop><stop offset="1" stop-color="#111111"></stop></linearGradient></defs></svg></a></div></div><div class="sc-1x9oq14-0 sc-h3yero-8 doSDez fwXQYP">До обучения, во время и после я работал в ЦТиП, работа связана с автоматизацией производства. Выбрал курс, потому что сейчас для меня актуально внедрение мобильных приложений. Понравилось, что на курсе достаточно высокая компетенция. Планирую использовать полученные знания в своей текущей работе.
Что было не удобно - достаточно позднее проведение занятий из-за разницы в часовых поясах, вследствие чего основную часть пришлось просматривать в записи, а хотелось как и обычно в живом формате</div></div><div class="swiper-slide sc-h3yero-0 gQNEkq"><div class="sc-h3yero-2 dOvyBf"><div class="sc-h3yero-3 keJcdl"><div size="88" class="sc-i28ik1-0 gsweRb"><div class="sc-i28ik1-1 gNVXtU"><svg width="88" height="88" viewBox="0 0 88 88" fill="none" xmlns="http://www.w3.org/2000/svg"><rect y="0.405762" width="88" height="87.5945" rx="43.7972" fill="url(#LessonSlugReviewsDefaultAvatar)"></rect><path fill-rule="evenodd" clip-rule="evenodd" d="M57.3454 32.1294C57.3454 39.5331 51.4091 45.4697 44.0002 45.4697C36.5937 45.4697 30.6549 39.5331 30.6549 32.1294C30.6549 24.7256 36.5937 18.7915 44.0002 18.7915C51.4091 18.7915 57.3454 24.7256 57.3454 32.1294ZM44.0002 69.2082C33.0657 69.2082 23.8335 67.431 23.8335 60.5742C23.8335 53.715 33.1237 52.0008 44.0002 52.0008C54.9371 52.0008 64.1668 53.778 64.1668 60.6347C64.1668 67.494 54.8766 69.2082 44.0002 69.2082Z" fill="white"></path><defs><linearGradient id="LessonSlugReviewsDefaultAvatar" x1="7.1381" y1="28.6163" x2="82.5726" y2="41.5112" gradientUnits="userSpaceOnUse"><stop stop-color="#373737"></stop><stop offset="1" stop-color="#111111"></stop></linearGradient></defs></svg></div></div></div><div class="sc-h3yero-5 dYfXnT"><p class="sc-1x9oq14-0 sc-h3yero-1 enpOeQ kaQYTv">Максим Казанцев</p><div class="sc-1x9oq14-0 sc-uyf7sm-0 iwrrOS hejpaX">21.10.2025</div></div></div><div class="sc-1x9oq14-0 sc-h3yero-8 doSDez fwXQYP">Всем привет, меня зовут Максим Казанцев, я ведущий разработчик кроссплатформенных мобильных приложений в тульской компании EvApps.
Обратил внимание на развивающееся направление Flutter разработки и решил пройти обучение. В OTUS были самые оптимальные варианты по цене и длительности обучению, поэтому выбор был очевиден.
На курсе мне понравилось то, что занятия комбинированы - есть лекции, есть домашние задания, есть общение с преподавателями через телеграм-канал и даже есть сдача курсовой работы.
За время обучения я смог на работе получить в разработку три проекта, в том числе переписывание на Flutter старого проекта реализованного на React Native.
Обучение позволило мне ответить на вопросы, которые ранее казались мне сложными - анимация, тестирование, чистая архитектура.
Надеюсь в будущем появится градация на senior flutter developer и я смогу подчеркнуть для себя еще много нового.</div></div><div class="swiper-slide sc-h3yero-0 gQNEkq"><div class="sc-h3yero-2 dOvyBf"><div class="sc-h3yero-3 keJcdl"><div size="88" class="sc-i28ik1-0 gsweRb"><div class="sc-i28ik1-1 gNVXtU"><svg width="88" height="88" viewBox="0 0 88 88" fill="none" xmlns="http://www.w3.org/2000/svg"><rect y="0.405762" width="88" height="87.5945" rx="43.7972" fill="url(#LessonSlugReviewsDefaultAvatar)"></rect><path fill-rule="evenodd" clip-rule="evenodd" d="M57.3454 32.1294C57.3454 39.5331 51.4091 45.4697 44.0002 45.4697C36.5937 45.4697 30.6549 39.5331 30.6549 32.1294C30.6549 24.7256 36.5937 18.7915 44.0002 18.7915C51.4091 18.7915 57.3454 24.7256 57.3454 32.1294ZM44.0002 69.2082C33.0657 69.2082 23.8335 67.431 23.8335 60.5742C23.8335 53.715 33.1237 52.0008 44.0002 52.0008C54.9371 52.0008 64.1668 53.778 64.1668 60.6347C64.1668 67.494 54.8766 69.2082 44.0002 69.2082Z" fill="white"></path><defs><linearGradient id="LessonSlugReviewsDefaultAvatar" x1="7.1381" y1="28.6163" x2="82.5726" y2="41.5112" gradientUnits="userSpaceOnUse"><stop stop-color="#373737"></stop><stop offset="1" stop-color="#111111"></stop></linearGradient></defs></svg></div></div></div><div class="sc-h3yero-5 dYfXnT"><p class="sc-1x9oq14-0 sc-h3yero-1 enpOeQ kaQYTv">Максим Волостнов</p><div class="sc-1x9oq14-0 sc-uyf7sm-0 iwrrOS hejpaX">28.07.2025</div></div></div><div class="sc-1x9oq14-0 sc-h3yero-8 doSDez fwXQYP">Я работаю инженером-программистом. Моя основная деятельность связана с автоматизацией процессов. Разрабатывал десктопные и мобильные приложения для управления медицинским оборудованием и обработки данных. Занимался интеграцией ПО с медицинскими оборудованиями и диагностическими системами.
При анализе курсов по обучению Flutter я рассматривал несколько вариантов, но остановился на Otus по нескольким причинам:
1) Глубина программы: курс охватывает не только основы, но и продвинутые темы (например, State Management, работу с API, интеграцию с бэкендом).
2) Преподаватели-практики: лекции ведут разработчики с опытом в крупных компаниях, что дает актуальные знания.
3) Гибкость формата: возможность смотреть записи, участвовать в вебинарах и получать фидбек от менторов.
Понравилось на курсе:
1) Сильный преподавательский состав – эксперты дают не только теорию, но и делятся реальными кейсами.
2) Структурированная программа – материал подается от простого к сложному, с постепенным углублением в тему.
3) Практические задания – они помогают сразу применять знания в работе.
4) Дополнительные материалы – доступ к записям, шаблонам кода и полезным статьям.
Что можно улучшить:
1) Больше живых разборов сложных тем – иногда хочется более детальных объяснений по архитектуре приложений.
2) Дополнительные проекты для портфолио – было бы здорово, если бы в курсе было больше реальных задач из коммерческой разработки.
Благодаря курсу я начал изучать Flutter на профессиональном уровне – теперь могу разрабатывать кроссплатформенные приложения под iOS и Android.
Получил доступ к новым проектам – уже пробую внедрять Flutter в текущей работе.</div></div><div class="swiper-slide sc-h3yero-0 gQNEkq"><div class="sc-h3yero-2 dOvyBf"><div class="sc-h3yero-3 keJcdl"><div src="https://cdn.otus.ru/media/public/56/1e/avatar-478853-561e3c.png" class="sc-h3yero-4 kdyqKM"></div></div><div class="sc-h3yero-5 dYfXnT"><p class="sc-1x9oq14-0 sc-h3yero-1 enpOeQ kaQYTv">Олег Пак</p><div class="sc-1x9oq14-0 sc-uyf7sm-0 iwrrOS hejpaX">17.07.2025</div></div><div class="sc-h3yero-6 bXBhOa"><a target="_blank" rel="noopener noreferrer" href="https://telegram.me/telegram" class="sc-e8trbg-0 ervbDS"><svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M31.9995 16.001C31.9995 24.8375 24.836 32.001 15.9995 32.001C7.16298 32.001 -0.000488281 24.8375 -0.000488281 16.001C-0.000488281 7.16444 7.16298 0.000976562 15.9995 0.000976562C24.836 0.000976562 31.9995 7.16444 31.9995 16.001ZM10.7138 14.5353C9.11105 15.2351 7.46425 15.9542 5.95835 16.7836C5.17203 17.3594 6.2171 17.7666 7.19758 18.1486C7.35345 18.2094 7.50765 18.2694 7.65265 18.3294C7.77331 18.3666 7.89598 18.4056 8.02031 18.4452C9.11078 18.7926 10.3266 19.18 11.3853 18.5973C13.1244 17.5983 14.7655 16.4434 16.4054 15.2893C16.9427 14.9112 17.4798 14.5332 18.0202 14.1608C18.0456 14.1446 18.0741 14.126 18.1054 14.1058C18.5657 13.8074 19.6011 13.1362 19.2181 14.061C18.3125 15.0514 17.3424 15.9281 16.3672 16.8096C15.7098 17.4037 15.0501 18 14.4061 18.6346C13.8452 19.0904 13.2628 20.0068 13.8908 20.645C15.3374 21.6577 16.8066 22.6458 18.275 23.6334C18.7528 23.9548 19.2306 24.2761 19.7074 24.5982C20.5155 25.2434 21.7785 24.7215 21.9562 23.7133C22.0352 23.2495 22.1145 22.7858 22.1938 22.322C22.6322 19.7588 23.0708 17.1948 23.4582 14.6233C23.5108 14.2199 23.5705 13.8166 23.6302 13.413C23.775 12.435 23.9199 11.4557 23.9652 10.4724C23.8485 9.49104 22.6586 9.70684 21.9965 9.92751C18.593 11.2226 15.2236 12.6136 11.8674 14.0292C11.4872 14.1976 11.1018 14.3659 10.7138 14.5353Z" fill="url(#PromoReviewSocialTg)"></path><defs><linearGradient id="PromoReviewSocialTg" x1="2.59519" y1="10.3069" x2="30.0331" y2="14.9755" gradientUnits="userSpaceOnUse"><stop stop-color="#373737"></stop><stop offset="1" stop-color="#111111"></stop></linearGradient></defs></svg></a></div></div><div class="sc-1x9oq14-0 sc-h3yero-8 doSDez fwXQYP">Очень понравилось. До этого был опыт с Flutter по бесплатным ютуб роликам, на курсе более подробно рассмотрел темы с которыми не мог разобраться самостоятельно. Много нового для себя узнал. Педагогический состав супер, очень сильные разработчики, показали бэст практис!</div></div><div class="swiper-slide sc-h3yero-0 gQNEkq"><div class="sc-h3yero-2 dOvyBf"><div class="sc-h3yero-3 keJcdl"><div src="https://cdn.otus.ru/media/public/b1/1f/avatar-476563-b11f8e.png" class="sc-h3yero-4 dnuDNF"></div></div><div class="sc-h3yero-5 dYfXnT"><p class="sc-1x9oq14-0 sc-h3yero-1 enpOeQ kaQYTv">Михаил Колински</p><div class="sc-1x9oq14-0 sc-uyf7sm-0 iwrrOS hejpaX">18.12.2024</div></div><div class="sc-h3yero-6 bXBhOa"><a target="_blank" rel="noopener noreferrer" href="https://telegram.me/telegram" class="sc-e8trbg-0 ervbDS"><svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M31.9995 16.001C31.9995 24.8375 24.836 32.001 15.9995 32.001C7.16298 32.001 -0.000488281 24.8375 -0.000488281 16.001C-0.000488281 7.16444 7.16298 0.000976562 15.9995 0.000976562C24.836 0.000976562 31.9995 7.16444 31.9995 16.001ZM10.7138 14.5353C9.11105 15.2351 7.46425 15.9542 5.95835 16.7836C5.17203 17.3594 6.2171 17.7666 7.19758 18.1486C7.35345 18.2094 7.50765 18.2694 7.65265 18.3294C7.77331 18.3666 7.89598 18.4056 8.02031 18.4452C9.11078 18.7926 10.3266 19.18 11.3853 18.5973C13.1244 17.5983 14.7655 16.4434 16.4054 15.2893C16.9427 14.9112 17.4798 14.5332 18.0202 14.1608C18.0456 14.1446 18.0741 14.126 18.1054 14.1058C18.5657 13.8074 19.6011 13.1362 19.2181 14.061C18.3125 15.0514 17.3424 15.9281 16.3672 16.8096C15.7098 17.4037 15.0501 18 14.4061 18.6346C13.8452 19.0904 13.2628 20.0068 13.8908 20.645C15.3374 21.6577 16.8066 22.6458 18.275 23.6334C18.7528 23.9548 19.2306 24.2761 19.7074 24.5982C20.5155 25.2434 21.7785 24.7215 21.9562 23.7133C22.0352 23.2495 22.1145 22.7858 22.1938 22.322C22.6322 19.7588 23.0708 17.1948 23.4582 14.6233C23.5108 14.2199 23.5705 13.8166 23.6302 13.413C23.775 12.435 23.9199 11.4557 23.9652 10.4724C23.8485 9.49104 22.6586 9.70684 21.9965 9.92751C18.593 11.2226 15.2236 12.6136 11.8674 14.0292C11.4872 14.1976 11.1018 14.3659 10.7138 14.5353Z" fill="url(#PromoReviewSocialTg)"></path><defs><linearGradient id="PromoReviewSocialTg" x1="2.59519" y1="10.3069" x2="30.0331" y2="14.9755" gradientUnits="userSpaceOnUse"><stop stop-color="#373737"></stop><stop offset="1" stop-color="#111111"></stop></linearGradient></defs></svg></a></div></div><div class="sc-1x9oq14-0 sc-h3yero-8 doSDez fwXQYP">Обучение мне понравилось. Кто-то говорил, что в курсе есть недочеты и несостыковки, но я ничего критичного ни разу не заметил. В реальной "боевой" деятельности зачастую всё куда менее прозрачно, гораздо запутаннее и т.д. Обучение дало много знаний, опыта и основу приложения, которое я развиваю. В планах довести знания до мастерства
Хотелось бы покрупнее интерфейс у плеера видеоуроков в кабинете.</div></div><div class="swiper-slide sc-h3yero-0 gQNEkq"><div class="sc-h3yero-2 dOvyBf"><div class="sc-h3yero-3 keJcdl"><div size="88" class="sc-i28ik1-0 gsweRb"><div class="sc-i28ik1-1 gNVXtU"><svg width="88" height="88" viewBox="0 0 88 88" fill="none" xmlns="http://www.w3.org/2000/svg"><rect y="0.405762" width="88" height="87.5945" rx="43.7972" fill="url(#LessonSlugReviewsDefaultAvatar)"></rect><path fill-rule="evenodd" clip-rule="evenodd" d="M57.3454 32.1294C57.3454 39.5331 51.4091 45.4697 44.0002 45.4697C36.5937 45.4697 30.6549 39.5331 30.6549 32.1294C30.6549 24.7256 36.5937 18.7915 44.0002 18.7915C51.4091 18.7915 57.3454 24.7256 57.3454 32.1294ZM44.0002 69.2082C33.0657 69.2082 23.8335 67.431 23.8335 60.5742C23.8335 53.715 33.1237 52.0008 44.0002 52.0008C54.9371 52.0008 64.1668 53.778 64.1668 60.6347C64.1668 67.494 54.8766 69.2082 44.0002 69.2082Z" fill="white"></path><defs><linearGradient id="LessonSlugReviewsDefaultAvatar" x1="7.1381" y1="28.6163" x2="82.5726" y2="41.5112" gradientUnits="userSpaceOnUse"><stop stop-color="#373737"></stop><stop offset="1" stop-color="#111111"></stop></linearGradient></defs></svg></div></div></div><div class="sc-h3yero-5 dYfXnT"><p class="sc-1x9oq14-0 sc-h3yero-1 enpOeQ kaQYTv">Юрий Акульков</p><div class="sc-1x9oq14-0 sc-uyf7sm-0 iwrrOS hejpaX">04.11.2024</div></div><div class="sc-h3yero-6 bXBhOa"><a target="_blank" rel="noopener noreferrer" href="https://telegram.me/telegram" class="sc-e8trbg-0 ervbDS"><svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M31.9995 16.001C31.9995 24.8375 24.836 32.001 15.9995 32.001C7.16298 32.001 -0.000488281 24.8375 -0.000488281 16.001C-0.000488281 7.16444 7.16298 0.000976562 15.9995 0.000976562C24.836 0.000976562 31.9995 7.16444 31.9995 16.001ZM10.7138 14.5353C9.11105 15.2351 7.46425 15.9542 5.95835 16.7836C5.17203 17.3594 6.2171 17.7666 7.19758 18.1486C7.35345 18.2094 7.50765 18.2694 7.65265 18.3294C7.77331 18.3666 7.89598 18.4056 8.02031 18.4452C9.11078 18.7926 10.3266 19.18 11.3853 18.5973C13.1244 17.5983 14.7655 16.4434 16.4054 15.2893C16.9427 14.9112 17.4798 14.5332 18.0202 14.1608C18.0456 14.1446 18.0741 14.126 18.1054 14.1058C18.5657 13.8074 19.6011 13.1362 19.2181 14.061C18.3125 15.0514 17.3424 15.9281 16.3672 16.8096C15.7098 17.4037 15.0501 18 14.4061 18.6346C13.8452 19.0904 13.2628 20.0068 13.8908 20.645C15.3374 21.6577 16.8066 22.6458 18.275 23.6334C18.7528 23.9548 19.2306 24.2761 19.7074 24.5982C20.5155 25.2434 21.7785 24.7215 21.9562 23.7133C22.0352 23.2495 22.1145 22.7858 22.1938 22.322C22.6322 19.7588 23.0708 17.1948 23.4582 14.6233C23.5108 14.2199 23.5705 13.8166 23.6302 13.413C23.775 12.435 23.9199 11.4557 23.9652 10.4724C23.8485 9.49104 22.6586 9.70684 21.9965 9.92751C18.593 11.2226 15.2236 12.6136 11.8674 14.0292C11.4872 14.1976 11.1018 14.3659 10.7138 14.5353Z" fill="url(#PromoReviewSocialTg)"></path><defs><linearGradient id="PromoReviewSocialTg" x1="2.59519" y1="10.3069" x2="30.0331" y2="14.9755" gradientUnits="userSpaceOnUse"><stop stop-color="#373737"></stop><stop offset="1" stop-color="#111111"></stop></linearGradient></defs></svg></a></div></div><div class="sc-1x9oq14-0 sc-h3yero-8 doSDez fwXQYP">До обучения имел небольшой опыт программирования на Python. Курс нашел мой начальник и предложил пройти его мне, так как такие навыки могут пригодиться в дальнейшей работе. Курс очень интересный. Все преподаватели на протяжении всего курсы были на связи и помогали в случае каких-то вопросов. Хотелось бы увеличить курс с 6 до 12 месяцев, так как некоторые темы очень обширные и часто просто не укладывались в 1.5-2 часа. Для желающих поступить на курс хочу сказать что нужно иметь хоть какой-то прошлый опыт в мобильной разработке, так как курс не расчитан на совсем новичков в этом направлении и будет довольно сложно. Обучение дало мне большой опыт в этом направлении, новые знакомства и направления для роста. В перспективе хотелось бы продолжить развиваться в этом направлении и этот курс стал первым шагом к цели</div></div><div class="swiper-slide sc-h3yero-0 gQNEkq"><div class="sc-h3yero-2 dOvyBf"><div class="sc-h3yero-3 keJcdl"><div size="88" class="sc-i28ik1-0 gsweRb"><div class="sc-i28ik1-1 gNVXtU"><svg width="88" height="88" viewBox="0 0 88 88" fill="none" xmlns="http://www.w3.org/2000/svg"><rect y="0.405762" width="88" height="87.5945" rx="43.7972" fill="url(#LessonSlugReviewsDefaultAvatar)"></rect><path fill-rule="evenodd" clip-rule="evenodd" d="M57.3454 32.1294C57.3454 39.5331 51.4091 45.4697 44.0002 45.4697C36.5937 45.4697 30.6549 39.5331 30.6549 32.1294C30.6549 24.7256 36.5937 18.7915 44.0002 18.7915C51.4091 18.7915 57.3454 24.7256 57.3454 32.1294ZM44.0002 69.2082C33.0657 69.2082 23.8335 67.431 23.8335 60.5742C23.8335 53.715 33.1237 52.0008 44.0002 52.0008C54.9371 52.0008 64.1668 53.778 64.1668 60.6347C64.1668 67.494 54.8766 69.2082 44.0002 69.2082Z" fill="white"></path><defs><linearGradient id="LessonSlugReviewsDefaultAvatar" x1="7.1381" y1="28.6163" x2="82.5726" y2="41.5112" gradientUnits="userSpaceOnUse"><stop stop-color="#373737"></stop><stop offset="1" stop-color="#111111"></stop></linearGradient></defs></svg></div></div></div><div class="sc-h3yero-5 dYfXnT"><p class="sc-1x9oq14-0 sc-h3yero-1 enpOeQ kaQYTv">Иван Бачарников</p><div class="sc-1x9oq14-0 sc-uyf7sm-0 iwrrOS hejpaX">28.06.2022</div></div></div><div class="sc-1x9oq14-0 sc-h3yero-8 doSDez fwXQYP">Очень подробный и развёрнутый курс для начинающих Flutter-разработчиков. Отзывчивые преподаватели, хорошо подготовленный материал для лекций, кроме того, сам материал обновляется по мере обновления фреймворка. Домашние задания нацелены на закрепление полученных знаний и навыков. В целом курс понравился и смело могу его рекомендовать.</div></div><div class="swiper-slide sc-h3yero-0 gQNEkq"><div class="sc-h3yero-2 dOvyBf"><div class="sc-h3yero-3 keJcdl"><div size="88" class="sc-i28ik1-0 gsweRb"><div class="sc-i28ik1-1 gNVXtU"><svg width="88" height="88" viewBox="0 0 88 88" fill="none" xmlns="http://www.w3.org/2000/svg"><rect y="0.405762" width="88" height="87.5945" rx="43.7972" fill="url(#LessonSlugReviewsDefaultAvatar)"></rect><path fill-rule="evenodd" clip-rule="evenodd" d="M57.3454 32.1294C57.3454 39.5331 51.4091 45.4697 44.0002 45.4697C36.5937 45.4697 30.6549 39.5331 30.6549 32.1294C30.6549 24.7256 36.5937 18.7915 44.0002 18.7915C51.4091 18.7915 57.3454 24.7256 57.3454 32.1294ZM44.0002 69.2082C33.0657 69.2082 23.8335 67.431 23.8335 60.5742C23.8335 53.715 33.1237 52.0008 44.0002 52.0008C54.9371 52.0008 64.1668 53.778 64.1668 60.6347C64.1668 67.494 54.8766 69.2082 44.0002 69.2082Z" fill="white"></path><defs><linearGradient id="LessonSlugReviewsDefaultAvatar" x1="7.1381" y1="28.6163" x2="82.5726" y2="41.5112" gradientUnits="userSpaceOnUse"><stop stop-color="#373737"></stop><stop offset="1" stop-color="#111111"></stop></linearGradient></defs></svg></div></div></div><div class="sc-h3yero-5 dYfXnT"><p class="sc-1x9oq14-0 sc-h3yero-1 enpOeQ kaQYTv">Ирина Ефремова</p><div class="sc-1x9oq14-0 sc-uyf7sm-0 iwrrOS hejpaX">27.07.2021</div></div></div><div class="sc-1x9oq14-0 sc-h3yero-8 doSDez fwXQYP">Хороший курс для тех, кто имеет базовые знания в мобильной разработке. Структура курса построена так, чтобы охватить основные темы языка от простого к сложному, а формат домашних заданий позволяет посмотреть на код готового приложения изнутри и постепенно реализовать его возможности. Очень удобно, что все занятия можно посмотреть в записи и пересмотреть их когда нужно.
Преподаватели всегда на связи, всегда поддерживают, быстро отвечают и дают подробные комментарии по выполненным домашним заданиям. Отдельное спасибо Андрею Смирнову за создание дружеской атмосферы и моральную поддержку!
Закончив курс, я уверена, что смогу написать простое мобильное приложение на языке flutter и буду использовать полученные знания в дальнейшем.
Большое спасибо за хороший курс!</div></div><div class="swiper-slide sc-h3yero-0 gQNEkq"><div class="sc-h3yero-2 dOvyBf"><div class="sc-h3yero-3 keJcdl"><div size="88" class="sc-i28ik1-0 gsweRb"><div class="sc-i28ik1-1 gNVXtU"><svg width="88" height="88" viewBox="0 0 88 88" fill="none" xmlns="http://www.w3.org/2000/svg"><rect y="0.405762" width="88" height="87.5945" rx="43.7972" fill="url(#LessonSlugReviewsDefaultAvatar)"></rect><path fill-rule="evenodd" clip-rule="evenodd" d="M57.3454 32.1294C57.3454 39.5331 51.4091 45.4697 44.0002 45.4697C36.5937 45.4697 30.6549 39.5331 30.6549 32.1294C30.6549 24.7256 36.5937 18.7915 44.0002 18.7915C51.4091 18.7915 57.3454 24.7256 57.3454 32.1294ZM44.0002 69.2082C33.0657 69.2082 23.8335 67.431 23.8335 60.5742C23.8335 53.715 33.1237 52.0008 44.0002 52.0008C54.9371 52.0008 64.1668 53.778 64.1668 60.6347C64.1668 67.494 54.8766 69.2082 44.0002 69.2082Z" fill="white"></path><defs><linearGradient id="LessonSlugReviewsDefaultAvatar" x1="7.1381" y1="28.6163" x2="82.5726" y2="41.5112" gradientUnits="userSpaceOnUse"><stop stop-color="#373737"></stop><stop offset="1" stop-color="#111111"></stop></linearGradient></defs></svg></div></div></div><div class="sc-h3yero-5 dYfXnT"><p class="sc-1x9oq14-0 sc-h3yero-1 enpOeQ kaQYTv">Katerina Filatova</p><div class="sc-1x9oq14-0 sc-uyf7sm-0 iwrrOS hejpaX">27.07.2021</div></div></div><div class="sc-1x9oq14-0 sc-h3yero-8 doSDez fwXQYP">Добрый день. недавно окончила курс по Flutter. Хотелось бы поделиться впечатлениями) Я андроид-разработчик с более чем 3 -летним опытом работы. Кроссплатформой интересовалась давно. как-то в проф телеграмм канале увидела предложение для нативщиков по поводу курсов этих. Заинтересовалась. сразу же прошла тест вступительный и записалась на обучение. Так вышло, что училась я 2 раза вместо одного, по личным причинам) За более чем 9 месяцев обучения имела честь познакомиться с большим числом профессионалов, преподавателей Otus. Т к я стала свидетелем запуска первого, дебютного потока. а также студенткой второго потока, то могу с уверенностью говорить о том, что материал ко второму потоку стал более структурирован, процессы были выстроены отлично, вебинары не хотелось пропускать, всегда было, о чём поговорить. это стало уже как традицией - 2 раза в неделю, по вечерам говорить на интересные проф темы) Время прошло быстро, практически на границе окончания второго потока курса я получила предложение о работе. Решила попробовать свои силы и посмотреть, что вынесла с курса. И меня пригласили на работу, как flutter инженера)
Что могу сказать по итогам своей учёбы) Оно того стоит. времени, сил, стоит. Кроме новых знаний потрясающих, те, кто захочет прийти дальше, получат богатый опыт, общение с наиинтереснейшими людьми и много положительных эмоций. Отдельное спасибо организаторам курса за то, что дали мне возможность остаться на "второй год" )) т к первый поток прошёл мимо меня, хотя я и должна была закончить курс давно. От себя лично хочу пожелать всей команде OTUS развития, процветания и новых и суперских идей)</div></div><div class="swiper-slide sc-h3yero-0 gQNEkq"><div class="sc-h3yero-2 dOvyBf"><div class="sc-h3yero-3 keJcdl"><div src="https://cdn.otus.ru/media/public/a7/03/avatar-64883-a70365.png" class="sc-h3yero-4 cbmZrn"></div></div><div class="sc-h3yero-5 dYfXnT"><p class="sc-1x9oq14-0 sc-h3yero-1 enpOeQ kaQYTv">Николай Бакланов</p><div class="sc-1x9oq14-0 sc-uyf7sm-0 iwrrOS hejpaX">09.04.2021</div></div><div class="sc-h3yero-6 bXBhOa"></div></div><div class="sc-1x9oq14-0 sc-h3yero-8 doSDez fwXQYP">Отличный курс.
Сейчас, с выходом Flutter 2.0 он, скорее всего, будет сильно изменен и доработан и станет уже совсем другим, уверен, что в лучшую сторону. А на момент перед прохождения курса (мы закончили курс как раз к выходу Flutter 2.0) он содержал все необходимые темы для того, чтобы изучить технологию Flutter и язык Dart.
Асинхронное программирование, хранение данных, изоляты, управление состоянием и нативные функции, построение дерева виджетов и навигация. Все основное и важное было рассмотрено.
Проверка домашних заданий осуществлялась вовремя. Плюс для каждого ДЗ были сделаны заготовки и можно было выполнять задание сосредоточившись именно на нужном материале, а не писать каждый раз boilerplate код.
Ведущий курса Андрей и преподаватели, которые вели отдельные лекции - отличные специалисты, практикующие программирование на Flutter. Всегда помогали в слэке с вопросами и старались внести коррективы в процессе занятий, если была необходимость.</div></div><div class="swiper-slide sc-h3yero-0 gQNEkq"><div class="sc-h3yero-2 dOvyBf"><div class="sc-h3yero-3 keJcdl"><div src="https://cdn.otus.ru/media/public/a1/68/avatar-1801-a168dd.png" class="sc-h3yero-4 cByCBV"></div></div><div class="sc-h3yero-5 dYfXnT"><p class="sc-1x9oq14-0 sc-h3yero-1 enpOeQ kaQYTv">Андрей Глащенко</p><div class="sc-1x9oq14-0 sc-uyf7sm-0 iwrrOS hejpaX">25.02.2021</div></div></div><div class="sc-1x9oq14-0 sc-h3yero-8 doSDez fwXQYP">Понравилось: очень грамотные преподаватели и что важнее, реальные практики. Я прямо даже удивлен, что вам удалось собрать такой состав. В целом неплохо структурированная программа курса.
Не понравилось: в начале курса - постоянные выбивания из тайминга, некоторые лекции занимали в два раза дольше. Позже это стабилизировалось. Проверка некоторых ДЗ занимала ОЧЕНЬ долго (несколько недель). За это время уже полностью забываешь контекст того что делал.
Разное: Вначале показалось странным, что совсем не проходятся основы Dart, но по факту оказалось не страшно: достаточно было потратить несколько часов на доку по синтаксису.
В целом 4 из 5. Есть что улучшить, но фундаментально - все хорошо.</div></div><div class="swiper-slide sc-h3yero-0 gQNEkq"><div class="sc-h3yero-2 dOvyBf"><div class="sc-h3yero-3 keJcdl"><div src="https://cdn.otus.ru/media/public/70/8c/avatar-1801-708cf0.png" class="sc-h3yero-4 cvSwCn"></div></div><div class="sc-h3yero-5 dYfXnT"><p class="sc-1x9oq14-0 sc-h3yero-1 enpOeQ kaQYTv">Константин Кузьминов</p><div class="sc-1x9oq14-0 sc-uyf7sm-0 iwrrOS hejpaX">15.02.2021</div></div><div class="sc-h3yero-6 bXBhOa"><a target="_blank" rel="noopener noreferrer" href="https://telegram.me/telegram" class="sc-e8trbg-0 ervbDS"><svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M31.9995 16.001C31.9995 24.8375 24.836 32.001 15.9995 32.001C7.16298 32.001 -0.000488281 24.8375 -0.000488281 16.001C-0.000488281 7.16444 7.16298 0.000976562 15.9995 0.000976562C24.836 0.000976562 31.9995 7.16444 31.9995 16.001ZM10.7138 14.5353C9.11105 15.2351 7.46425 15.9542 5.95835 16.7836C5.17203 17.3594 6.2171 17.7666 7.19758 18.1486C7.35345 18.2094 7.50765 18.2694 7.65265 18.3294C7.77331 18.3666 7.89598 18.4056 8.02031 18.4452C9.11078 18.7926 10.3266 19.18 11.3853 18.5973C13.1244 17.5983 14.7655 16.4434 16.4054 15.2893C16.9427 14.9112 17.4798 14.5332 18.0202 14.1608C18.0456 14.1446 18.0741 14.126 18.1054 14.1058C18.5657 13.8074 19.6011 13.1362 19.2181 14.061C18.3125 15.0514 17.3424 15.9281 16.3672 16.8096C15.7098 17.4037 15.0501 18 14.4061 18.6346C13.8452 19.0904 13.2628 20.0068 13.8908 20.645C15.3374 21.6577 16.8066 22.6458 18.275 23.6334C18.7528 23.9548 19.2306 24.2761 19.7074 24.5982C20.5155 25.2434 21.7785 24.7215 21.9562 23.7133C22.0352 23.2495 22.1145 22.7858 22.1938 22.322C22.6322 19.7588 23.0708 17.1948 23.4582 14.6233C23.5108 14.2199 23.5705 13.8166 23.6302 13.413C23.775 12.435 23.9199 11.4557 23.9652 10.4724C23.8485 9.49104 22.6586 9.70684 21.9965 9.92751C18.593 11.2226 15.2236 12.6136 11.8674 14.0292C11.4872 14.1976 11.1018 14.3659 10.7138 14.5353Z" fill="url(#PromoReviewSocialTg)"></path><defs><linearGradient id="PromoReviewSocialTg" x1="2.59519" y1="10.3069" x2="30.0331" y2="14.9755" gradientUnits="userSpaceOnUse"><stop stop-color="#373737"></stop><stop offset="1" stop-color="#111111"></stop></linearGradient></defs></svg></a></div></div><div class="sc-1x9oq14-0 sc-h3yero-8 doSDez fwXQYP">Курс очень хорошо систематизирует знания, углубленно даёт важные темы и обучает промышленной разработке на флаттере. Для полных новичков не подойдёт - нужно понимать хотя бы основы программирования, желательно в мобильной разработке или во фронтэнде, и знать основы git и github. Материал весьма объемный и сложный, но подается вполне понятно и доступно. Преподаватели очень доброжелательны, готовы помочь. Я всегда мог обсудить непонятные вопросы в слаке курса и получал всю возможную помощь. Понравились код ревью и проверка ДЗ - все замечания четко и по делу. Понравился очень основательный подход в сложных темах - анимации, state management, тестирование.
Не понравилось нерегулярная выдача ДЗ. Хотелось бы получать задание на каждую неделю.
В целом курсом доволен, всё, что хотел и на что рассчитывал - получил. И спасибо преподавателям за работу! )</div></div><div class="swiper-slide sc-h3yero-0 gQNEkq"><div class="sc-h3yero-2 dOvyBf"><div class="sc-h3yero-3 keJcdl"><div src="https://cdn.otus.ru/media/public/14/94/avatar-1801-149497.png" class="sc-h3yero-4 jdYMLb"></div></div><div class="sc-h3yero-5 dYfXnT"><p class="sc-1x9oq14-0 sc-h3yero-1 enpOeQ kaQYTv">Элина Сафарьянова</p><div class="sc-1x9oq14-0 sc-uyf7sm-0 iwrrOS hejpaX">02.02.2021</div></div><div class="sc-h3yero-6 bXBhOa"><a target="_blank" rel="noopener noreferrer" href="https://telegram.me/telegram" class="sc-e8trbg-0 ervbDS"><svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M31.9995 16.001C31.9995 24.8375 24.836 32.001 15.9995 32.001C7.16298 32.001 -0.000488281 24.8375 -0.000488281 16.001C-0.000488281 7.16444 7.16298 0.000976562 15.9995 0.000976562C24.836 0.000976562 31.9995 7.16444 31.9995 16.001ZM10.7138 14.5353C9.11105 15.2351 7.46425 15.9542 5.95835 16.7836C5.17203 17.3594 6.2171 17.7666 7.19758 18.1486C7.35345 18.2094 7.50765 18.2694 7.65265 18.3294C7.77331 18.3666 7.89598 18.4056 8.02031 18.4452C9.11078 18.7926 10.3266 19.18 11.3853 18.5973C13.1244 17.5983 14.7655 16.4434 16.4054 15.2893C16.9427 14.9112 17.4798 14.5332 18.0202 14.1608C18.0456 14.1446 18.0741 14.126 18.1054 14.1058C18.5657 13.8074 19.6011 13.1362 19.2181 14.061C18.3125 15.0514 17.3424 15.9281 16.3672 16.8096C15.7098 17.4037 15.0501 18 14.4061 18.6346C13.8452 19.0904 13.2628 20.0068 13.8908 20.645C15.3374 21.6577 16.8066 22.6458 18.275 23.6334C18.7528 23.9548 19.2306 24.2761 19.7074 24.5982C20.5155 25.2434 21.7785 24.7215 21.9562 23.7133C22.0352 23.2495 22.1145 22.7858 22.1938 22.322C22.6322 19.7588 23.0708 17.1948 23.4582 14.6233C23.5108 14.2199 23.5705 13.8166 23.6302 13.413C23.775 12.435 23.9199 11.4557 23.9652 10.4724C23.8485 9.49104 22.6586 9.70684 21.9965 9.92751C18.593 11.2226 15.2236 12.6136 11.8674 14.0292C11.4872 14.1976 11.1018 14.3659 10.7138 14.5353Z" fill="url(#PromoReviewSocialTg)"></path><defs><linearGradient id="PromoReviewSocialTg" x1="2.59519" y1="10.3069" x2="30.0331" y2="14.9755" gradientUnits="userSpaceOnUse"><stop stop-color="#373737"></stop><stop offset="1" stop-color="#111111"></stop></linearGradient></defs></svg></a></div></div><div class="sc-1x9oq14-0 sc-h3yero-8 doSDez fwXQYP">Очень довольна, что пошла именно на этот курс. Особенно радует проверка ДЗ и ревью кода преподавателями, это именно то, чего не хватает при самостоятельном обучении. Материалы курса хорошо структурированы и в них легко ориентироваться, думаю, что еще не раз буду пересматривать лекции с курса.
После сдачи выпускной работы и отдыха обязательно выберу себе еще какой-нибудь курс)</div></div></div></div></div><div color="#575757" class="sc-1bkbgbz-6 kFvGjx"><button color="#575757" class="sc-1bkbgbz-2 sc-1bkbgbz-4 gQuSfy biZjNh"><div class="sc-1bqzqc9-0"><div size="28" class="sc-i28ik1-0 cvcsLz"><div class="sc-i28ik1-1 gNVXtU"><svg width="28" height="28" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M3.57771 12.2111C2.10361 12.9482 2.10361 15.0518 3.57771 15.7889L25.1056 26.5528C26.4354 27.2177 28 26.2507 28 24.7639L28 3.23607C28 1.7493 26.4354 0.782312 25.1056 1.44721L3.57771 12.2111Z" fill="currentColor"></path></svg></div></div></div></button><div class="sc-1bkbgbz-5 hGKrlu"></div><button color="#575757" class="sc-1bkbgbz-2 sc-1bkbgbz-3 gQuSfy iPzpLW"><div class="sc-1bqzqc9-0 dzJeEt"><div size="28" class="sc-i28ik1-0 cvcsLz"><div class="sc-i28ik1-1 gNVXtU"><svg width="28" height="28" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M3.57771 12.2111C2.10361 12.9482 2.10361 15.0518 3.57771 15.7889L25.1056 26.5528C26.4354 27.2177 28 26.2507 28 24.7639L28 3.23607C28 1.7493 26.4354 0.782312 25.1056 1.44721L3.57771 12.2111Z" fill="currentColor"></path></svg></div></div></div></button></div></div></div></div><div class="sc-x072mc-0 sc-1r62a6q-0 hOtCic lliDuJ"><h2 class="sc-1x9oq14-0 sc-1r62a6q-1 bTMeHF llFwsA">Подтверждение знаний и навыков</h2><div class="sc-1x9oq14-0 sc-1r62a6q-2 fPZiIk dtnelf"><p>OTUS осуществляет лицензированную образовательную деятельность. В конце обучения вы получите сертификат OTUS о прохождении курса</p></div><div class="sc-1r62a6q-3 eNyjzK"><div class="sc-1oz275d-0 ddfkAs"><div class="sc-1bkbgbz-0 giOpNO swiper-ui sc-1oz275d-3 hXVWHD"><div class="sc-1oz275d-2 cmjKRy sc-1bkbgbz-1 ehnata"><div class="swiper"><div class="swiper-wrapper"><div class="swiper-slide"><img src="/_next/static/images/img/otus-certificate-832bf0e82aba1cde68e7417b12683728.png" class="sc-1oz275d-1 dCggDS"/></div><div class="swiper-slide"><img src="/_next/static/images/img/upk-diploma-d6bca6c33b9795bec7d04fb91a431230.png" class="sc-1oz275d-1 dCggDS"/></div></div></div></div><div color="#575757" class="sc-1bkbgbz-6 kFvGjx"><button color="#575757" class="sc-1bkbgbz-2 sc-1bkbgbz-4 gQuSfy biZjNh"><div class="sc-1bqzqc9-0"><div size="28" class="sc-i28ik1-0 cvcsLz"><div class="sc-i28ik1-1 gNVXtU"><svg width="28" height="28" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M3.57771 12.2111C2.10361 12.9482 2.10361 15.0518 3.57771 15.7889L25.1056 26.5528C26.4354 27.2177 28 26.2507 28 24.7639L28 3.23607C28 1.7493 26.4354 0.782312 25.1056 1.44721L3.57771 12.2111Z" fill="currentColor"></path></svg></div></div></div></button><div class="sc-1bkbgbz-5 hGKrlu"></div><button color="#575757" class="sc-1bkbgbz-2 sc-1bkbgbz-3 gQuSfy iPzpLW"><div class="sc-1bqzqc9-0 dzJeEt"><div size="28" class="sc-i28ik1-0 cvcsLz"><div class="sc-i28ik1-1 gNVXtU"><svg width="28" height="28" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M3.57771 12.2111C2.10361 12.9482 2.10361 15.0518 3.57771 15.7889L25.1056 26.5528C26.4354 27.2177 28 26.2507 28 24.7639L28 3.23607C28 1.7493 26.4354 0.782312 25.1056 1.44721L3.57771 12.2111Z" fill="currentColor"></path></svg></div></div></div></button></div></div></div><div class="sc-1r62a6q-4 hpEid"><h3>После обучения вы:</h3>
<br>
<ul>
<li>заберете с собой полный комплект обучающих материалов: видеозаписи всех вебинаров, презентации к занятиям, а также решение задач и проектов в виде кода на github и другие дополнительные материалы</li>
<li>получите сертификат о прохождении курса</li>
<li>приобретете опыт Flutter-разработки</li>
</ul></div></div></div><!--$!--><template data-dgst="BAILOUT_TO_CLIENT_SIDE_RENDERING"></template><!--/$--><div id="payment-link" class="sc-1ddwpfq-1 hnlXxp sc-mgf5g0-1 cGuqjL"><i class="sc-1ddwpfq-0 euiDRT"></i><!--$!--><template data-dgst="BAILOUT_TO_CLIENT_SIDE_RENDERING"></template><!--/$--><div class="sc-mgf5g0-0 VNvrk sc-x072mc-0 hOtCic"><div class="sc-mgf5g0-3 iMmpz"><div class="sc-mgf5g0-2 dBpQzV"></div><h2 class="sc-1x9oq14-0 sc-mgf5g0-5 jmLQpp cHLoOP">Flutter Mobile Developer</h2></div><div class="sc-mgf5g0-4 cIkHKG"><div class="sc-10kui61-0 hgTHTJ"><div class="sc-10kui61-1 gEGbfQ"><div class="sc-t8narm-0 gPfNRv sc-1peufw-0 gosVbC"><div class="sc-zkx93-0 yFPt"><div>В рассрочку</div></div><div class="sc-zkx93-0 hubLMz"><div>Полная</div></div><div class="sc-zkx93-0 hubLMz"><div>Компаниям</div></div></div><p class="sc-1x9oq14-0 hQBzUY">Стоимость в рассрочку</p><div class="sc-1peufw-1 lYQex"><div class="sc-1x9oq14-0 sc-1peufw-2 ioOegJ iKtgdB">от<!-- --> <!-- -->7 750<!-- --> <!-- -->₽<span class="sc-1peufw-4 iLnntQ">/мес</span></div></div><div class="sc-1gixy6u-0 SAbyR"></div></div><div class="sc-1r0uxxj-1 bPBPRV sc-10kui61-2 bpPrAe"><div class="sc-1r0uxxj-0 ewmmcs"></div><div class="sc-147fm2r-0 dAAQHW"><div class="sc-147fm2r-1 cnspAU"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="sc-aobi4b-0 hzdVAl"><path fill-rule="evenodd" clip-rule="evenodd" d="M17.7689 8.3818H22C22 4.98459 19.9644 3 16.5156 3H7.48444C4.03556 3 2 4.98459 2 8.33847V15.6615C2 19.0154 4.03556 21 7.48444 21H16.5156C19.9644 21 22 19.0154 22 15.6615V15.3495H17.7689C15.8052 15.3495 14.2133 13.7975 14.2133 11.883C14.2133 9.96849 15.8052 8.41647 17.7689 8.41647V8.3818ZM17.7689 9.87241H21.2533C21.6657 9.87241 22 10.1983 22 10.6004V13.131C21.9952 13.5311 21.6637 13.8543 21.2533 13.8589H17.8489C16.8548 13.872 15.9855 13.2084 15.76 12.2643C15.6471 11.6783 15.8056 11.0736 16.1931 10.6122C16.5805 10.1509 17.1573 9.88007 17.7689 9.87241ZM17.92 12.533H18.2489C18.6711 12.533 19.0133 12.1993 19.0133 11.7877C19.0133 11.3761 18.6711 11.0424 18.2489 11.0424H17.92C17.7181 11.0401 17.5236 11.1166 17.38 11.255C17.2364 11.3934 17.1555 11.5821 17.1556 11.779C17.1555 12.1921 17.4964 12.5282 17.92 12.533ZM6.73778 8.3818H12.3822C12.8044 8.3818 13.1467 8.04812 13.1467 7.63649C13.1467 7.22487 12.8044 6.89119 12.3822 6.89119H6.73778C6.31903 6.89116 5.9782 7.2196 5.97333 7.62783C5.97331 8.04087 6.31415 8.37705 6.73778 8.3818Z" fill="currentColor"></path></svg></div><div class="sc-1x9oq14-0 doSDez"><span class="sc-1r0uxxj-3 kMVdSV">Доступные способы оплаты.</span> <br class="sc-1r0uxxj-2 eewVHU"/>Стоимость указана для оплаты физическими лицами</div></div><div class="sc-147fm2r-0 dAAQHW"><div class="sc-147fm2r-1 cnspAU"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="sc-aobi4b-0 hzdVAl"><path fill-rule="evenodd" clip-rule="evenodd" d="M20.3991 9.14611L21.1193 9.86611C21.6895 10.4261 21.9996 11.1861 21.9996 11.9861C22.0096 12.7861 21.6995 13.5471 21.1393 14.1161C21.1327 14.1234 21.126 14.1299 21.1193 14.1363C21.116 14.1396 21.1127 14.1428 21.1093 14.1461L20.3991 14.8561C20.119 15.1361 19.9589 15.5161 19.9589 15.9171V16.9461C19.9589 18.6061 18.6084 19.9571 16.9478 19.9571H15.9174C15.5173 19.9571 15.1372 20.1161 14.8571 20.3961L14.1368 21.1161C13.5466 21.7071 12.7763 21.9961 12.006 21.9961C11.2357 21.9961 10.4655 21.7071 9.87525 21.1271L9.14498 20.3961C8.86488 20.1161 8.48474 19.9571 8.0846 19.9571H7.05423C5.39362 19.9571 4.04313 18.6061 4.04313 16.9461V15.9171C4.04313 15.5161 3.88308 15.1361 3.60298 14.8461L2.88271 14.1361C1.71229 12.9671 1.70229 11.0561 2.87271 9.87711L3.60298 9.14611C3.88308 8.86611 4.04313 8.48611 4.04313 8.07611V7.05611C4.04313 5.39611 5.39362 4.04711 7.05423 4.04711H8.0846C8.48474 4.04711 8.86488 3.88611 9.14498 3.60611L9.86524 2.88611C11.0357 1.70711 12.9464 1.70711 14.1268 2.87711L14.8571 3.60611C15.1372 3.88611 15.5173 4.04711 15.9174 4.04711H16.9478C18.6084 4.04711 19.9589 5.39611 19.9589 7.05611V8.08711C19.9589 8.48611 20.119 8.86611 20.3991 9.14611ZM9.42509 15.4461C9.66517 15.4461 9.88525 15.3561 10.0453 15.1861L15.1872 10.0471C15.5273 9.70711 15.5273 9.14611 15.1872 8.80611C14.8471 8.46711 14.2969 8.46711 13.9567 8.80611L8.81486 13.9461C8.47474 14.2861 8.47474 14.8461 8.81486 15.1861C8.97492 15.3561 9.195 15.4461 9.42509 15.4461ZM13.6966 14.5661C13.6966 15.0561 14.0868 15.4461 14.577 15.4461C15.0571 15.4461 15.4473 15.0561 15.4473 14.5661C15.4473 14.0871 15.0571 13.6961 14.577 13.6961C14.0868 13.6961 13.6966 14.0871 13.6966 14.5661ZM9.43509 8.55611C9.91526 8.55611 10.3054 8.94611 10.3054 9.42611C10.3054 9.91711 9.91526 10.3061 9.43509 10.3061C8.95492 10.3061 8.55477 9.91711 8.55477 9.42611C8.55477 8.94611 8.95492 8.55611 9.43509 8.55611Z" fill="currentColor"></path></svg></div><div class="sc-1x9oq14-0 doSDez">Верните с помощью налогового <br class="sc-1r0uxxj-2 eewVHU"/>вычета до 13% стоимости обучения.<!-- --> <!-- -->Пройдите тестирование и менеджер вас проконсультирует</div></div><div class="sc-147fm2r-0 dAAQHW"><div class="sc-147fm2r-1 cnspAU"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="sc-aobi4b-0 hzdVAl"><g><path d="M14.4183 5.49C13.9422 5.40206 13.505 5.70586 13.4144 6.17054C13.3238 6.63522 13.6285 7.08891 14.0916 7.17984C15.4859 7.45166 16.5624 8.53092 16.8353 9.92995V9.93095C16.913 10.3337 17.2675 10.6265 17.6759 10.6265C17.7306 10.6265 17.7854 10.6215 17.8412 10.6115C18.3043 10.5186 18.609 10.0659 18.5184 9.60018C18.1111 7.51062 16.5027 5.89672 14.4183 5.49Z" fill="currentColor"></path><path d="M14.356 2.00793C14.1329 1.97595 13.9088 2.04191 13.7305 2.18381C13.5473 2.32771 13.4328 2.53557 13.4079 2.76841C13.3551 3.23908 13.6947 3.66479 14.1648 3.71776C17.4064 4.07951 19.926 6.60477 20.2905 9.85654C20.3393 10.2922 20.7048 10.621 21.141 10.621C21.1739 10.621 21.2058 10.619 21.2386 10.615C21.4667 10.59 21.6699 10.4771 21.8133 10.2972C21.9557 10.1174 22.0204 9.89351 21.9945 9.66467C21.5404 5.60746 18.4003 2.45862 14.356 2.00793Z" fill="currentColor"></path></g><g><path fill-rule="evenodd" clip-rule="evenodd" d="M11.0317 12.9724C15.0208 16.9604 15.9258 12.3467 18.4656 14.8848C20.9143 17.3328 22.3216 17.8232 19.2192 20.9247C18.8306 21.237 16.3616 24.9943 7.6846 16.3197C-0.993478 7.644 2.76158 5.17244 3.07397 4.78395C6.18387 1.67385 6.66586 3.08938 9.11449 5.53733C11.6544 8.0765 7.04266 8.98441 11.0317 12.9724Z" fill="currentColor"></path></g></svg></div><div class="sc-1x9oq14-0 doSDez">Есть вопросы? Позвоните!<br/><a href="tel:+7 499 938-92-02"><span class="sc-1r0uxxj-3 kMVdSV">+7 499 938-92-02</span></a> <!-- -->бесплатно</div></div></div></div><div class="sc-7ugo7y-0 bTFiyu"><div class="sc-7ugo7y-1 iOYphy"><div class="sc-1x9oq14-0 sc-1u84tez-2 gGtEnS kgGhBx">Пройдите тестирование</div><div class="sc-1x9oq14-0 sc-1u84tez-3 eMZyoN lcNwWc">Старт занятий 30 апреля</div><div class="sc-1lrh8w5-0 ftkQLi"><button class="sc-1qig7zt-0 czpnNJ sc-1lrh8w5-3 JTsAm"><span class="sc-1lrh8w5-4 jTrfLJ">Вступительное тестирование</span><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="sc-aobi4b-0 hzdVAl sc-1lrh8w5-5 kfzfcV"><path fill-rule="evenodd" clip-rule="evenodd" d="M15.164 6.08252C15.4791 6.08684 15.7949 6.09117 16.1119 6.09441C19.5172 6.09441 22 8.52216 22 11.8748V16.1811C22 19.5337 19.5172 21.9615 16.1119 21.9615C14.7478 21.9904 13.3837 22 12.0098 22C10.6359 22 9.25221 21.9904 7.88813 21.9615C4.48283 21.9615 2 19.5337 2 16.1811V11.8748C2 8.52216 4.48283 6.09441 7.89794 6.09441C9.18351 6.07514 10.4985 6.05588 11.8332 6.05588V5.8921C11.8332 5.22736 11.2738 4.68786 10.6065 4.68786H9.63494C8.52601 4.68786 7.62316 3.80154 7.62316 2.72254C7.62316 2.32755 7.95682 2 8.35918 2C8.77134 2 9.09519 2.32755 9.09519 2.72254C9.09519 3.01156 9.34053 3.24277 9.63494 3.24277H10.6065C12.0883 3.25241 13.2954 4.43738 13.3052 5.88247V6.06551C13.9239 6.06551 14.5425 6.074 15.164 6.08252ZM10.8518 14.7457H9.82139V15.7669C9.82139 16.1618 9.48773 16.4894 9.08538 16.4894C8.67321 16.4894 8.34936 16.1618 8.34936 15.7669V14.7457H7.30913C6.90677 14.7457 6.57311 14.4277 6.57311 14.0231C6.57311 13.6281 6.90677 13.3006 7.30913 13.3006H8.34936V12.289C8.34936 11.894 8.67321 11.5665 9.08538 11.5665C9.48773 11.5665 9.82139 11.894 9.82139 12.289V13.3006H10.8518C11.2542 13.3006 11.5878 13.6281 11.5878 14.0231C11.5878 14.4277 11.2542 14.7457 10.8518 14.7457ZM15.0226 13.1175H15.1207C15.5231 13.1175 15.8567 12.7996 15.8567 12.395C15.8567 12 15.5231 11.6724 15.1207 11.6724H15.0226C14.6104 11.6724 14.2866 12 14.2866 12.395C14.2866 12.7996 14.6104 13.1175 15.0226 13.1175ZM16.7007 16.4316H16.7988C17.2012 16.4316 17.5348 16.1137 17.5348 15.7091C17.5348 15.3141 17.2012 14.9865 16.7988 14.9865H16.7007C16.2875 14.9865 15.9647 15.3141 15.9647 15.7091C15.9647 16.1137 16.2875 16.4316 16.7007 16.4316Z" fill="currentColor"></path></svg></button></div><div class="sc-ne2nun-0 jFFNWn"><button class="sc-1x9oq14-0 sc-ne2nun-2 doSDez cWqojy">Оставить заявку на оплату<!-- --> <!-- -->курса<!-- --> работодателем</button></div></div></div><div class="sc-1r0uxxj-1 bPBPRV sc-mgf5g0-6 kiGnqS"><div class="sc-1r0uxxj-0 ewmmcs"></div><div class="sc-147fm2r-0 dAAQHW"><div class="sc-147fm2r-1 cnspAU"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="sc-aobi4b-0 hzdVAl"><path fill-rule="evenodd" clip-rule="evenodd" d="M17.7689 8.3818H22C22 4.98459 19.9644 3 16.5156 3H7.48444C4.03556 3 2 4.98459 2 8.33847V15.6615C2 19.0154 4.03556 21 7.48444 21H16.5156C19.9644 21 22 19.0154 22 15.6615V15.3495H17.7689C15.8052 15.3495 14.2133 13.7975 14.2133 11.883C14.2133 9.96849 15.8052 8.41647 17.7689 8.41647V8.3818ZM17.7689 9.87241H21.2533C21.6657 9.87241 22 10.1983 22 10.6004V13.131C21.9952 13.5311 21.6637 13.8543 21.2533 13.8589H17.8489C16.8548 13.872 15.9855 13.2084 15.76 12.2643C15.6471 11.6783 15.8056 11.0736 16.1931 10.6122C16.5805 10.1509 17.1573 9.88007 17.7689 9.87241ZM17.92 12.533H18.2489C18.6711 12.533 19.0133 12.1993 19.0133 11.7877C19.0133 11.3761 18.6711 11.0424 18.2489 11.0424H17.92C17.7181 11.0401 17.5236 11.1166 17.38 11.255C17.2364 11.3934 17.1555 11.5821 17.1556 11.779C17.1555 12.1921 17.4964 12.5282 17.92 12.533ZM6.73778 8.3818H12.3822C12.8044 8.3818 13.1467 8.04812 13.1467 7.63649C13.1467 7.22487 12.8044 6.89119 12.3822 6.89119H6.73778C6.31903 6.89116 5.9782 7.2196 5.97333 7.62783C5.97331 8.04087 6.31415 8.37705 6.73778 8.3818Z" fill="currentColor"></path></svg></div><div class="sc-1x9oq14-0 doSDez"><span class="sc-1r0uxxj-3 kMVdSV">Доступные способы оплаты.</span> <br class="sc-1r0uxxj-2 eewVHU"/>Стоимость указана для оплаты физическими лицами</div></div><div class="sc-147fm2r-0 dAAQHW"><div class="sc-147fm2r-1 cnspAU"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="sc-aobi4b-0 hzdVAl"><path fill-rule="evenodd" clip-rule="evenodd" d="M20.3991 9.14611L21.1193 9.86611C21.6895 10.4261 21.9996 11.1861 21.9996 11.9861C22.0096 12.7861 21.6995 13.5471 21.1393 14.1161C21.1327 14.1234 21.126 14.1299 21.1193 14.1363C21.116 14.1396 21.1127 14.1428 21.1093 14.1461L20.3991 14.8561C20.119 15.1361 19.9589 15.5161 19.9589 15.9171V16.9461C19.9589 18.6061 18.6084 19.9571 16.9478 19.9571H15.9174C15.5173 19.9571 15.1372 20.1161 14.8571 20.3961L14.1368 21.1161C13.5466 21.7071 12.7763 21.9961 12.006 21.9961C11.2357 21.9961 10.4655 21.7071 9.87525 21.1271L9.14498 20.3961C8.86488 20.1161 8.48474 19.9571 8.0846 19.9571H7.05423C5.39362 19.9571 4.04313 18.6061 4.04313 16.9461V15.9171C4.04313 15.5161 3.88308 15.1361 3.60298 14.8461L2.88271 14.1361C1.71229 12.9671 1.70229 11.0561 2.87271 9.87711L3.60298 9.14611C3.88308 8.86611 4.04313 8.48611 4.04313 8.07611V7.05611C4.04313 5.39611 5.39362 4.04711 7.05423 4.04711H8.0846C8.48474 4.04711 8.86488 3.88611 9.14498 3.60611L9.86524 2.88611C11.0357 1.70711 12.9464 1.70711 14.1268 2.87711L14.8571 3.60611C15.1372 3.88611 15.5173 4.04711 15.9174 4.04711H16.9478C18.6084 4.04711 19.9589 5.39611 19.9589 7.05611V8.08711C19.9589 8.48611 20.119 8.86611 20.3991 9.14611ZM9.42509 15.4461C9.66517 15.4461 9.88525 15.3561 10.0453 15.1861L15.1872 10.0471C15.5273 9.70711 15.5273 9.14611 15.1872 8.80611C14.8471 8.46711 14.2969 8.46711 13.9567 8.80611L8.81486 13.9461C8.47474 14.2861 8.47474 14.8461 8.81486 15.1861C8.97492 15.3561 9.195 15.4461 9.42509 15.4461ZM13.6966 14.5661C13.6966 15.0561 14.0868 15.4461 14.577 15.4461C15.0571 15.4461 15.4473 15.0561 15.4473 14.5661C15.4473 14.0871 15.0571 13.6961 14.577 13.6961C14.0868 13.6961 13.6966 14.0871 13.6966 14.5661ZM9.43509 8.55611C9.91526 8.55611 10.3054 8.94611 10.3054 9.42611C10.3054 9.91711 9.91526 10.3061 9.43509 10.3061C8.95492 10.3061 8.55477 9.91711 8.55477 9.42611C8.55477 8.94611 8.95492 8.55611 9.43509 8.55611Z" fill="currentColor"></path></svg></div><div class="sc-1x9oq14-0 doSDez">Верните с помощью налогового <br class="sc-1r0uxxj-2 eewVHU"/>вычета до 13% стоимости обучения.<!-- --> <!-- -->Пройдите тестирование и менеджер вас проконсультирует</div></div><div class="sc-147fm2r-0 dAAQHW"><div class="sc-147fm2r-1 cnspAU"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="sc-aobi4b-0 hzdVAl"><g><path d="M14.4183 5.49C13.9422 5.40206 13.505 5.70586 13.4144 6.17054C13.3238 6.63522 13.6285 7.08891 14.0916 7.17984C15.4859 7.45166 16.5624 8.53092 16.8353 9.92995V9.93095C16.913 10.3337 17.2675 10.6265 17.6759 10.6265C17.7306 10.6265 17.7854 10.6215 17.8412 10.6115C18.3043 10.5186 18.609 10.0659 18.5184 9.60018C18.1111 7.51062 16.5027 5.89672 14.4183 5.49Z" fill="currentColor"></path><path d="M14.356 2.00793C14.1329 1.97595 13.9088 2.04191 13.7305 2.18381C13.5473 2.32771 13.4328 2.53557 13.4079 2.76841C13.3551 3.23908 13.6947 3.66479 14.1648 3.71776C17.4064 4.07951 19.926 6.60477 20.2905 9.85654C20.3393 10.2922 20.7048 10.621 21.141 10.621C21.1739 10.621 21.2058 10.619 21.2386 10.615C21.4667 10.59 21.6699 10.4771 21.8133 10.2972C21.9557 10.1174 22.0204 9.89351 21.9945 9.66467C21.5404 5.60746 18.4003 2.45862 14.356 2.00793Z" fill="currentColor"></path></g><g><path fill-rule="evenodd" clip-rule="evenodd" d="M11.0317 12.9724C15.0208 16.9604 15.9258 12.3467 18.4656 14.8848C20.9143 17.3328 22.3216 17.8232 19.2192 20.9247C18.8306 21.237 16.3616 24.9943 7.6846 16.3197C-0.993478 7.644 2.76158 5.17244 3.07397 4.78395C6.18387 1.67385 6.66586 3.08938 9.11449 5.53733C11.6544 8.0765 7.04266 8.98441 11.0317 12.9724Z" fill="currentColor"></path></g></svg></div><div class="sc-1x9oq14-0 doSDez">Есть вопросы? Позвоните!<br/><a href="tel:+7 499 938-92-02"><span class="sc-1r0uxxj-3 kMVdSV">+7 499 938-92-02</span></a> <!-- -->бесплатно</div></div></div></div></div></div><div class="sc-x072mc-0 sc-1mszhjn-0 hOtCic irTCnx"><h2 class="sc-1x9oq14-0 sc-1mszhjn-1 kswXpy kPNZqQ">Частые вопросы</h2><div class="sc-tqrjzo-0 doKOqQ"><div class="sc-li015i-2 lfKxpm sc-tqrjzo-1 htYSLI" color="#575757"><div class="sc-li015i-0 hdRZtB"><h5 class="sc-1x9oq14-0 sc-li015i-1 fPZiIk bqYpKB">Что, если в середине курса я не смогу продолжать обучение?</h5><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="sc-aobi4b-0 hzdVAl sc-li015i-3 dbNuvG"><path fill-rule="evenodd" clip-rule="evenodd" d="M12.0001 22C6.48012 22 2.00012 17.51 2.00012 12C2.00012 6.48 6.48012 2 12.0001 2C17.5101 2 22.0001 6.48 22.0001 12C22.0001 17.51 17.5101 22 12.0001 22ZM16.0001 10.02C15.7001 9.73 15.2301 9.73 14.9401 10.03L12.0001 12.98L9.06012 10.03C8.77012 9.73 8.29012 9.73 8.00012 10.02C7.70012 10.32 7.70012 10.79 8.00012 11.08L11.4701 14.57C11.6101 14.71 11.8001 14.79 12.0001 14.79C12.2001 14.79 12.3901 14.71 12.5301 14.57L16.0001 11.08C16.1501 10.94 16.2201 10.75 16.2201 10.56C16.2201 10.36 16.1501 10.17 16.0001 10.02Z" fill="currentColor"></path></svg></div><div style="height:0" class="sc-ptxdl6-1 kyVtIH"><div class="sc-ptxdl6-2 kVdrfk"><div class="sc-1x9oq14-0 sc-ptxdl6-0 doSDez ciEuHS">У вас есть право одного бесплатного трансфера в другую группу</div></div></div></div><div class="sc-li015i-2 lfKxpm sc-tqrjzo-1 htYSLI" color="#575757"><div class="sc-li015i-0 hdRZtB"><h5 class="sc-1x9oq14-0 sc-li015i-1 fPZiIk bqYpKB">Обязательно ли защищать выпускной проект?</h5><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="sc-aobi4b-0 hzdVAl sc-li015i-3 dbNuvG"><path fill-rule="evenodd" clip-rule="evenodd" d="M12.0001 22C6.48012 22 2.00012 17.51 2.00012 12C2.00012 6.48 6.48012 2 12.0001 2C17.5101 2 22.0001 6.48 22.0001 12C22.0001 17.51 17.5101 22 12.0001 22ZM16.0001 10.02C15.7001 9.73 15.2301 9.73 14.9401 10.03L12.0001 12.98L9.06012 10.03C8.77012 9.73 8.29012 9.73 8.00012 10.02C7.70012 10.32 7.70012 10.79 8.00012 11.08L11.4701 14.57C11.6101 14.71 11.8001 14.79 12.0001 14.79C12.2001 14.79 12.3901 14.71 12.5301 14.57L16.0001 11.08C16.1501 10.94 16.2201 10.75 16.2201 10.56C16.2201 10.36 16.1501 10.17 16.0001 10.02Z" fill="currentColor"></path></svg></div><div style="height:0" class="sc-ptxdl6-1 kyVtIH"><div class="sc-ptxdl6-2 kVdrfk"><div class="sc-1x9oq14-0 sc-ptxdl6-0 doSDez ciEuHS">Для получения сертификата OTUS необходимо сдать проект. Кроме того, проект необязательно защищать перед аудиторией, а можно сдать в чате с преподавателем.</div></div></div></div><div class="sc-li015i-2 lfKxpm sc-tqrjzo-1 htYSLI" color="#575757"><div class="sc-li015i-0 hdRZtB"><h5 class="sc-1x9oq14-0 sc-li015i-1 fPZiIk bqYpKB">Я могу вернуть деньги?</h5><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="sc-aobi4b-0 hzdVAl sc-li015i-3 dbNuvG"><path fill-rule="evenodd" clip-rule="evenodd" d="M12.0001 22C6.48012 22 2.00012 17.51 2.00012 12C2.00012 6.48 6.48012 2 12.0001 2C17.5101 2 22.0001 6.48 22.0001 12C22.0001 17.51 17.5101 22 12.0001 22ZM16.0001 10.02C15.7001 9.73 15.2301 9.73 14.9401 10.03L12.0001 12.98L9.06012 10.03C8.77012 9.73 8.29012 9.73 8.00012 10.02C7.70012 10.32 7.70012 10.79 8.00012 11.08L11.4701 14.57C11.6101 14.71 11.8001 14.79 12.0001 14.79C12.2001 14.79 12.3901 14.71 12.5301 14.57L16.0001 11.08C16.1501 10.94 16.2201 10.75 16.2201 10.56C16.2201 10.36 16.1501 10.17 16.0001 10.02Z" fill="currentColor"></path></svg></div><div style="height:0" class="sc-ptxdl6-1 kyVtIH"><div class="sc-ptxdl6-2 kVdrfk"><div class="sc-1x9oq14-0 sc-ptxdl6-0 doSDez ciEuHS">Да, вы можете сделать возврат средств пропорционально оставшимся месяцам обучения.</div></div></div></div></div></div></div></main><!--$--><footer class="sc-oy98rf-0 jliiMx"><div class="sc-oy98rf-2 bLWaqJ sc-1ddwpfq-1 hnlXxp sc-oy98rf-3 fMEenG"><div class="sc-oy98rf-1 dSAeRs sc-1ddwpfq-0 bIQUAQ"></div><!--$!--><template data-dgst="BAILOUT_TO_CLIENT_SIDE_RENDERING"></template><!--/$--><div class="sc-x072mc-0 hOtCic"><!--$--><div class="sc-176eli6-0 kVOlcO"><div class="sc-176eli6-1 bIqTVy"><div class="sc-s8yol2-0 dmOCHb"><div class="sc-s8yol2-1 sc-s8yol2-2 fSkxQH jinSfn"><a class="sc-1x9oq14-0-Component sc-s8yol2-4 eibrwt dopIUT" href="/about">О нас</a><a class="sc-1x9oq14-0-Component sc-s8yol2-4 eibrwt dopIUT" href="/smi">СМИ о нас</a><a class="sc-1x9oq14-0-Component sc-s8yol2-4 eibrwt dopIUT" href="/reviews">Отзывы</a><a class="sc-1x9oq14-0-Component sc-s8yol2-4 eibrwt dopIUT" href="/contacts">Контакты</a><a class="sc-1x9oq14-0-Component sc-s8yol2-4 eibrwt dopIUT" href="/journal">Блог</a><a class="sc-1x9oq14-0-Component sc-s8yol2-4 eibrwt dopIUT" href="/faq">FAQ</a></div><div class="sc-s8yol2-1 sc-s8yol2-3 fSkxQH nSSml"><a class="sc-1x9oq14-0-Component sc-s8yol2-4 eibrwt dopIUT" href="/b2b">Корпоративное обучение</a><a class="sc-1x9oq14-0-Component sc-s8yol2-4 eibrwt dopIUT" href="/lessons">Каталог курсов</a><a class="sc-1x9oq14-0-Component sc-s8yol2-4 eibrwt dopIUT" href="/about/loyalty">Программы лояльности</a><a class="sc-1x9oq14-0-Component sc-s8yol2-4 eibrwt dopIUT" href="/professions">Каталог профессий</a><a class="sc-1x9oq14-0-Component sc-s8yol2-4 eibrwt dopIUT" href="/employers/all">Наши партнеры</a><a class="sc-1x9oq14-0-Component sc-s8yol2-4 eibrwt dopIUT" href="/teach">Стать преподавателем</a></div></div><div class="sc-15qczmr-0 MecOH"><div class="sc-15qczmr-1 dpoRMu"><a target="_blank" rel="nofollow noopener" href="https://vk.com/club145052891" src="/_next/static/images/img/footerUivk-1a499178c819de0f4161a07172b27f6b.svg" class="sc-15qczmr-2 jKMwie"></a><a target="_blank" rel="nofollow noopener" href="https://www.youtube.com/channel/UCetgtvy93o3i3CvyGXKFU3g" src="/_next/static/images/img/footerUiyt-84e5fa7c2e582191762486a7be2c2652.svg" class="sc-15qczmr-2 eFVTJV"></a><a target="_blank" rel="nofollow noopener" href="https://zen.yandex.ru/id/5bbcbc1ba5bd5400a990e7d9" src="/_next/static/images/img/footerUidzen-cfe01a671b9064c8e5d54b2ac5895a0c.png" class="sc-15qczmr-2 hUuIIY"></a></div><div class="sc-15qczmr-3 foluGF"><a target="_blank" rel="nofollow noopener" href="https://t.me/Otusjava" class="sc-15qczmr-4 hMqYlN"><div src="/_next/static/images/img/footerUitg-326baa373419d1a193621a597320c652.svg" class="sc-15qczmr-5 kmPvgJ"></div><div class="sc-1x9oq14-0 sc-15qczmr-6 CWfAH driyCh">Канал в Telegram</div></a><a target="_blank" rel="nofollow noopener" href="https://t.me/joinchat/JMakp0NXc-L8nNneHCtx7A" class="sc-15qczmr-4 hMqYlN"><div src="/_next/static/images/img/footerUitg-326baa373419d1a193621a597320c652.svg" class="sc-15qczmr-5 kmPvgJ"></div><div class="sc-1x9oq14-0 sc-15qczmr-6 CWfAH driyCh">Группа в Telegram</div></a></div></div><div class="sc-176eli6-2 hRGcmY"><section class="sc-des2oc-0 fYuJAI"><div class="sc-1x9oq14-0 sc-des2oc-1 bDRAny hbxrvB">Подписка на новости IT, анонсы открытых уроков, спец. предложения</div><div class="sc-des2oc-2 iHEhCu"><div class="sc-7tecya-1 igoKuA sc-des2oc-3 heMBup"><div class="sc-1uo0fn1-0 chwycb sc-7tecya-2 dUXfnG"><label class="sc-7tecya-3 ewcVbw">Введите Email</label><input placeholder="" class="sc-7tecya-4 bkPfUD" type="text" value=""/></div></div><button class="sc-1qig7zt-0 bYRRHi sc-des2oc-4 dqoHct">OK</button><div class="sc-1x9oq14-0 sc-dusc05-0 doSDez fyzNNQ sc-1x9oq14-0-Component sc-des2oc-5 fvUGfA kSlCOl"><div class="sc-1fry39v-0 eAOVcR" value="true"><div class="sc-12fwr4-0 eZuRED"><input id="c54b9ab4dec855a1d6f559b1" type="checkbox" class="sc-j40lj7-0 ceClWZ" checked=""/><svg class="sc-hd7keq-0 dWxMps sc-12fwr4-1 exsZZC" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M7.26022 12.5541C7.60716 12.2072 8.16964 12.2072 8.51658 12.5541L10.3433 14.3808L15.4311 8.31742C15.7465 7.94157 16.3068 7.89254 16.6827 8.20792C17.0585 8.52329 17.1075 9.08364 16.7921 9.45949L11.1045 16.2377C11.0816 16.2674 11.0565 16.2959 11.0293 16.3232C10.6824 16.6701 10.1199 16.6701 9.77293 16.3232L7.26022 13.8104C6.91329 13.4635 6.91329 12.901 7.26022 12.5541Z" fill="currentColor"></path></svg></div><label for="c54b9ab4dec855a1d6f559b1" class="sc-1fry39v-1 kMJHVN">Я принимаю условия<!-- --> <a class="sc-1vdp0yy-0 ldwIhb sc-dusc05-1 fgICvQ" href="/legal/privacy" target="_blank">Политики обработки персональных данных</a> <!-- -->и<!-- --> <a class="sc-1vdp0yy-0 ldwIhb sc-dusc05-1 fgICvQ" href="/legal/terms" target="_blank">Пользовательского соглашения</a> <!-- -->и даю свое<!-- --> <a class="sc-1vdp0yy-0 ldwIhb sc-dusc05-1 fgICvQ" href="/legal/lead_privacy_agree" target="_blank">согласие на обработку персональных данных</a></label></div></div></div></section><div class="sc-b223p8-0 jbfvPl"><span class="sc-b223p8-1 kexDMw"><span class="sc-1x9oq14-0 sc-b223p8-2 CWfAH cpJPIb">По всем вопросам<!-- --> <!-- -->пишите на</span> <a class="sc-1x9oq14-0-Component sc-b223p8-3 eibrwt kqoeNm" href="mailto:help@otus.ru"> <!-- -->help@otus.ru</a></span><a class="sc-1x9oq14-0-Component sc-b223p8-3 eibrwt kqoeNm" href="/legal/common">Сведения об образовательной организации</a><a class="sc-1x9oq14-0-Component sc-b223p8-3 eibrwt kqoeNm" href="/legal/it_company_accreditation">OTUS является аккредитованной IT-компанией</a><a class="sc-1x9oq14-0-Component sc-b223p8-3 eibrwt kqoeNm" href="https://reestr.digital.gov.ru/reestr/2704482/" target="_blank">В реестре отечественного ПО №24216</a><a class="sc-1x9oq14-0-Component sc-b223p8-3 eibrwt kqoeNm" href="/legal/terms">Условия использования сервиса</a><a class="sc-1x9oq14-0-Component sc-b223p8-3 eibrwt kqoeNm" href="/legal/recommendations">Сведения о рекомендательных технологиях</a></div></div></div><div class="sc-19c5cbt-0 kXtOIJ"><div class="sc-1x9oq14-0 eMZyoN">© 2015-2026 OTUS</div><!--$--><div class="sc-19c5cbt-1 fvpIrL"><div class="sc-1jb0vz0-0 fEJhZn"></div><a target="_blank" rel="noopener noreferrer" href="http://sk.ru/?utm_source=otus" class="sc-1jb0vz0-1 bQKtqJ"></a><a target="_blank" href="https://ktsstudio.com/?utm_source=otus" class="sc-1urziip-1 cPEbNj"><img src="/_next/static/images/img/light-3dd56d782c43dc1e78b7e0da7bb3fb50.svg" alt="KTS Logo" class="sc-ed2fvu-0 sc-1urziip-0 kmquqg fCchjz"/></a></div><!--/$--></div></div><!--/$--></div></div></footer><!--/$--><!--$!--><template data-dgst="BAILOUT_TO_CLIENT_SIDE_RENDERING"></template><!--/$--></div><div class="smart-captcha"></div><!--$!--><template data-dgst="BAILOUT_TO_CLIENT_SIDE_RENDERING"></template><!--/$--></div><div id="__PORTAL__"></div><noscript><div><img src="https://mc.yandex.ru/watch/44973232" style="position:absolute;left:-9999px;top:0" alt=""/></div></noscript><noscript><img src="https://vk.com/rtrg?p=VK-RTRG-410987-bLXUv" style="position:fixed;left:-999px" alt=""/></noscript><noscript><div><img src="https://top-fwz1.mail.ru/counter?id=3316675;js=na" style="position:absolute;left:-9999px" alt="Top.Mail.Ru"/></div></noscript><script src="/_next/static/chunks/webpack-84c612d5581a179f.js" async=""></script><style data-styled="" data-styled-version="5.3.10"></style><script>(self.__next_f=self.__next_f||[]).push([0]);self.__next_f.push([2,null])</script><script>self.__next_f.push([1,"1:HL[\"/_next/static/css/8cc264f7ea39f5c5.css\",\"style\"]\n2:HL[\"/_next/static/css/369ab862ca923128.css\",\"style\"]\n3:HL[\"/_next/static/css/1eb8edb263c0b31d.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"4:I[69521,[],\"\"]\n6:I[38895,[],\"\"]\n8:I[35725,[],\"\"]\nc:I[63988,[],\"NotFoundBoundary\"]\n17:I[27927,[],\"\"]\n7:[\"slug\",\"dart-flutter\",\"d\"]\nf:{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/8cc264f7ea39f5c5.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}\ne:[\"$\",\"link\",\"0\",\"$f\"]\n11:{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/369ab862ca923128.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}\n10:[\"$\",\"link\",\"1\",\"$11\"]\n13:{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/1eb8edb263c0b31d.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}\n12:[\"$\",\"link\",\"2\",\"$13\"]\nd:[\"$e\",\"$10\",\"$12\"]\n18:[]\n"])</script><script>self.__next_f.push([1,"0:[\"$\",\"$L4\",null,{\"buildId\":\"PhmzOnCKvz9SgutMtT86U\",\"assetPrefix\":\"\",\"urlParts\":[\"\",\"lessons\",\"dart-flutter\"],\"initialTree\":[\"\",{\"structuredData\":[\"children\",{\"children\":[\"lessons\",{\"children\":[[\"slug\",\"dart-flutter\",\"d\"],{\"children\":[\"__PAGE__\",{}]}]}]}],\"children\":[\"lessons\",{\"children\":[[\"slug\",\"dart-flutter\",\"d\"],{\"children\":[\"__PAGE__\",{}]}]}]},\"$undefined\",\"$undefined\",true],\"initialSeedData\":[\"\",{\"structuredData\":[\"children\",{\"children\":[\"lessons\",{\"children\":[[\"slug\",\"dart-flutter\",\"d\"],{\"children\":[\"__PAGE__\",{},[[\"$undefined\",\"$L5\",null],null],null]},[null,[\"$\",\"$L6\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"structuredData\",\"children\",\"children\",\"lessons\",\"children\",\"$7\",\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L8\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"notFoundStyles\":\"$undefined\"}]],null]},[null,[\"$\",\"$L6\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"structuredData\",\"children\",\"children\",\"lessons\",\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L8\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"notFoundStyles\":\"$undefined\"}]],null]},[null,[\"$\",\"$L6\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"structuredData\",\"children\",\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L8\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"notFoundStyles\":\"$undefined\"}]],null],\"children\":[\"lessons\",{\"children\":[[\"slug\",\"dart-flutter\",\"d\"],{\"children\":[\"__PAGE__\",{},[[\"$L9\",\"$La\",null],null],null]},[[null,\"$Lb\"],null],null]},[null,[\"$\",\"$L6\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\",\"lessons\",\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L8\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"notFoundStyles\":\"$undefined\"}]],null]},[[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/8cc264f7ea39f5c5.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/369ab862ca923128.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}],[\"$\",\"link\",\"2\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/1eb8edb263c0b31d.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}]],[\"$\",\"$Lc\",null,{\"notFound\":[\"$d\",\"$L14\"],\"children\":\"$L15\"}]],null],null],\"couldBeIntercepted\":false,\"initialHead\":[null,\"$L16\"],\"globalErrorComponent\":\"$17\",\"missingSlots\":\"$W18\"}]\n"])</script><script>self.__next_f.push([1,"19:[\"slug\",\"dart-flutter\",\"d\"]\nb:[\"$\",\"$L6\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\",\"lessons\",\"children\",\"$19\",\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L8\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"notFoundStyles\":\"$undefined\"}]\n"])</script><script>self.__next_f.push([1,"1a:I[58890,[\"8330\",\"static/chunks/b57a0ff0-f64b6c8491bc987c.js\",\"7761\",\"static/chunks/7761-f25228226f9fd7b1.js\",\"3260\",\"static/chunks/3260-e663d3aeeb454c53.js\",\"7844\",\"static/chunks/7844-5a1706e76e0167fe.js\",\"7985\",\"static/chunks/7985-5aa503ef1e488f37.js\",\"8012\",\"static/chunks/8012-ba13e2afafa1b32c.js\",\"4944\",\"static/chunks/4944-c0f1c1dc3dd5ddc8.js\",\"4888\",\"static/chunks/4888-09a084700e30f3b2.js\",\"2633\",\"static/chunks/2633-d7e691d1179a550f.js\",\"3242\",\"static/chunks/3242-4559e666a92af915.js\",\"8308\",\"static/chunks/8308-a718381dbc33cfb4.js\",\"3185\",\"static/chunks/app/layout-37aaf27e992c5aeb.js\"],\"default\"]\n1b:I[49866,[\"8330\",\"static/chunks/b57a0ff0-f64b6c8491bc987c.js\",\"7761\",\"static/chunks/7761-f25228226f9fd7b1.js\",\"3260\",\"static/chunks/3260-e663d3aeeb454c53.js\",\"7844\",\"static/chunks/7844-5a1706e76e0167fe.js\",\"7985\",\"static/chunks/7985-5aa503ef1e488f37.js\",\"8012\",\"static/chunks/8012-ba13e2afafa1b32c.js\",\"4944\",\"static/chunks/4944-c0f1c1dc3dd5ddc8.js\",\"4888\",\"static/chunks/4888-09a084700e30f3b2.js\",\"2633\",\"static/chunks/2633-d7e691d1179a550f.js\",\"3242\",\"static/chunks/3242-4559e666a92af915.js\",\"8308\",\"static/chunks/8308-a718381dbc33cfb4.js\",\"3185\",\"static/chunks/app/layout-37aaf27e992c5aeb.js\"],\"Providers\"]\n1c:I[17776,[\"8330\",\"static/chunks/b57a0ff0-f64b6c8491bc987c.js\",\"7761\",\"static/chunks/7761-f25228226f9fd7b1.js\",\"3260\",\"static/chunks/3260-e663d3aeeb454c53.js\",\"4419\",\"static/chunks/4419-cfc7a5f44d08cc1b.js\",\"7844\",\"static/chunks/7844-5a1706e76e0167fe.js\",\"5632\",\"static/chunks/5632-5ae1d5cde11086be.js\",\"3118\",\"static/chunks/3118-3c71903ee058260c.js\",\"7670\",\"static/chunks/7670-88498cb7f740ea45.js\",\"5873\",\"static/chunks/5873-a84150cef512c203.js\",\"7985\",\"static/chunks/7985-5aa503ef1e488f37.js\",\"8012\",\"static/chunks/8012-ba13e2afafa1b32c.js\",\"4944\",\"static/chunks/4944-c0f1c1dc3dd5ddc8.js\",\"8212\",\"static/chunks/8212-ad195a1ac639b812.js\",\"428\",\"static/chunks/428-b85ac0b1d8ebbe87.js\",\"4888\",\"static/chunks/4888-09a084700e30f3b2.js\",\"2633\",\"static/chunks/2633-d7e691d1179a550f.js\",\"9374\",\"static/chunks/9374-dedf9cc8b15c395b."])</script><script>self.__next_f.push([1,"js\",\"4485\",\"static/chunks/4485-9ab23cf29f3d4493.js\",\"4089\",\"static/chunks/4089-38c618b1e8038db2.js\",\"8308\",\"static/chunks/8308-a718381dbc33cfb4.js\",\"1598\",\"static/chunks/1598-4e9e0a333affae09.js\",\"7234\",\"static/chunks/7234-0a01e49f09a75afe.js\",\"1701\",\"static/chunks/1701-caea77cd580b46da.js\",\"1589\",\"static/chunks/1589-5e9d65a97827bc49.js\",\"8817\",\"static/chunks/8817-f756b1c7094aa889.js\",\"3742\",\"static/chunks/3742-cf316c1014abe42c.js\",\"7624\",\"static/chunks/7624-a0236e3eec1f6b3c.js\",\"5588\",\"static/chunks/5588-acf8559ddd553204.js\",\"1613\",\"static/chunks/1613-56d7f10ce9045e21.js\",\"9160\",\"static/chunks/app/not-found-6846642e53dd56ba.js\"],\"default\"]\n1d:I[27869,[\"8330\",\"static/chunks/b57a0ff0-f64b6c8491bc987c.js\",\"7761\",\"static/chunks/7761-f25228226f9fd7b1.js\",\"3260\",\"static/chunks/3260-e663d3aeeb454c53.js\",\"7844\",\"static/chunks/7844-5a1706e76e0167fe.js\",\"7985\",\"static/chunks/7985-5aa503ef1e488f37.js\",\"8012\",\"static/chunks/8012-ba13e2afafa1b32c.js\",\"4944\",\"static/chunks/4944-c0f1c1dc3dd5ddc8.js\",\"4888\",\"static/chunks/4888-09a084700e30f3b2.js\",\"2633\",\"static/chunks/2633-d7e691d1179a550f.js\",\"3242\",\"static/chunks/3242-4559e666a92af915.js\",\"8308\",\"static/chunks/8308-a718381dbc33cfb4.js\",\"3185\",\"static/chunks/app/layout-37aaf27e992c5aeb.js\"],\"default\"]\n"])</script><script>self.__next_f.push([1,"14:[\"$\",\"html\",null,{\"lang\":\"ru\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"meta\",null,{\"charSet\":\"UTF-8\"}],[\"$\",\"meta\",null,{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1, shrink-to-fit=no, user-scalable=no, viewport-fit=cover\"}],[\"$\",\"link\",null,{\"rel\":\"image_src\",\"href\":\"/__new_static__/img/meta-image.png\"}],[\"$\",\"link\",null,{\"rel\":\"shortcut icon\",\"type\":\"image/x-icon\",\"href\":\"/favicon.ico\"}],[\"$\",\"link\",null,{\"rel\":\"preload\",\"href\":\"/_next/static/images/img/owl-flight-5d7d1106ce62f5dd4057eb334384e529.gif\",\"as\":\"image\"}],[\"$\",\"link\",null,{\"rel\":\"icon\",\"type\":\"image/png\",\"sizes\":\"16x16\",\"href\":\"/_next/static/images/img/favicon-16x16-3dc5220f18624c2a6fd3aa3b081da00a.png\"}],[\"$\",\"link\",null,{\"rel\":\"icon\",\"type\":\"image/png\",\"sizes\":\"32x32\",\"href\":\"/_next/static/images/img/favicon-32x32-dd124835ecce421e1bb2c8f849e49a3f.png\"}],[\"$\",\"link\",null,{\"rel\":\"apple-touch-icon\",\"href\":\"/_next/static/images/img/apple-touch-icon-a4721dddcfb741a7e41d52e619f3820d.png\"}],[\"$\",\"link\",null,{\"rel\":\"apple-touch-icon\",\"sizes\":\"57x57\",\"href\":\"/_next/static/images/img/apple-touch-icon-57x57-92769d5e197783e63f3bb3c8519c8912.png\"}],[\"$\",\"link\",null,{\"rel\":\"apple-touch-icon\",\"sizes\":\"60x60\",\"href\":\"/_next/static/images/img/apple-touch-icon-60x60-dfaaf3934bc7ed111c8c306b967afeeb.png\"}],[\"$\",\"link\",null,{\"rel\":\"apple-touch-icon\",\"sizes\":\"72x72\",\"href\":\"/_next/static/images/img/apple-touch-icon-72x72-693f0d64a225d5f0fe26ba5d088c8f14.png\"}],[\"$\",\"link\",null,{\"rel\":\"apple-touch-icon\",\"sizes\":\"76x76\",\"href\":\"/_next/static/images/img/apple-touch-icon-76x76-f3487d673c3e7ae975cf190fb758ab10.png\"}],[\"$\",\"link\",null,{\"rel\":\"apple-touch-icon\",\"sizes\":\"114x114\",\"href\":\"/_next/static/images/img/apple-touch-icon-114x114-98609536fdaa492edede039bdd03cff2.png\"}],[\"$\",\"link\",null,{\"rel\":\"apple-touch-icon\",\"sizes\":\"120x120\",\"href\":\"/_next/static/images/img/apple-touch-icon-120x120-169d5a3cf2a78fa8e7dfa780f15abcb7.png\"}],[\"$\",\"link\",null,{\"rel\":\"apple-touch-icon\",\"sizes\":\"144x144\",\"href\":\"/_next/static/images/img/apple-touch-icon-144x144-9b1aa25d8b37e9b97af4717495fd71bf.png\"}],[\"$\",\"link\",null,{\"rel\":\"apple-touch-icon\",\"sizes\":\"152x152\",\"href\":\"/_next/static/images/img/apple-touch-icon-152x152-e04100124be68d4151efe4eb96227866.png\"}],[\"$\",\"link\",null,{\"rel\":\"apple-touch-icon\",\"sizes\":\"180x180\",\"href\":\"/_next/static/images/img/apple-touch-icon-180x180-a4721dddcfb741a7e41d52e619f3820d.png\"}],[\"$\",\"link\",null,{\"rel\":\"mask-icon\",\"href\":\"/_next/static/images/img/safari-pinned-tab-9b975a1bbe6e965061daed04a88d48e8.svg\",\"color\":\"#000000\"}],[\"$\",\"meta\",null,{\"name\":\"msapplication-TileColor\",\"content\":\"#ffffff\"}],[\"$\",\"meta\",null,{\"name\":\"msapplication-TileImage\",\"content\":\"/_next/static/images/img/mstile-144x144-c363ac4f42a2d7656bae44c971f5deab.png\"}],[\"$\",\"script\",null,{\"src\":\"https://vk.com/js/api/openapi.js?162\",\"type\":\"text/javascript\"}],[\"$\",\"$L1a\",null,{}]]}],[\"$\",\"body\",null,{\"children\":[[\"$\",\"div\",null,{\"id\":\"__next\",\"children\":[\"$\",\"$L1b\",null,{\"data\":{\"headerStoreInitialData\":{\"categories\":[{\"objectType\":\"category\",\"coursesCount\":117,\"id\":1,\"imageUrl\":\"https://cdn.otus.ru/media/public/df/68/df68cab51573450db618e44501ae4c57.jpg\",\"slug\":\"programming\",\"title\":\"Программирование\",\"isShowOnMainPage\":true},{\"objectType\":\"category\",\"coursesCount\":17,\"id\":12,\"imageUrl\":\"https://cdn.otus.ru/media/public/69/0b/690b6d40c17c484d9130d57eb344260e.png\",\"slug\":\"architecture\",\"title\":\"Архитектура\",\"isShowOnMainPage\":true},{\"objectType\":\"category\",\"coursesCount\":27,\"id\":2,\"imageUrl\":\"https://cdn.otus.ru/media/public/4a/72/4a72106d85b8465c9d744cc0efe28a47.jpg\",\"slug\":\"data-science\",\"title\":\"Data Science\",\"isShowOnMainPage\":true},{\"objectType\":\"category\",\"coursesCount\":58,\"id\":3,\"imageUrl\":\"https://cdn.otus.ru/media/public/5d/74/5d74d97874e84236a8094f3e0246e6a8.jpg\",\"slug\":\"operations\",\"title\":\"Инфраструктура\",\"isShowOnMainPage\":true},{\"objectType\":\"category\",\"coursesCount\":10,\"id\":8,\"imageUrl\":\"https://cdn.otus.ru/media/public/35/df/35dfb4a92fe140f6a1a3839fb8717f97.jpeg\",\"slug\":\"gamedev\",\"title\":\"GameDev\",\"isShowOnMainPage\":true},{\"objectType\":\"category\",\"coursesCount\":15,\"id\":11,\"imageUrl\":\"https://cdn.otus.ru/media/public/c7/7e/c77e523bd935455ab0e0bd0c92c760b6.png\",\"slug\":\"information-security-courses\",\"title\":\"Безопасность\",\"isShowOnMainPage\":true},{\"objectType\":\"category\",\"coursesCount\":46,\"id\":5,\"imageUrl\":\"https://cdn.otus.ru/media/public/84/43/8443c0d256c04ca698665c673afc866c.jpg\",\"slug\":\"marketing-business\",\"title\":\"Управление\",\"isShowOnMainPage\":true},{\"objectType\":\"category\",\"coursesCount\":25,\"id\":9,\"imageUrl\":\"https://cdn.otus.ru/media/public/75/ae/75ae55064f7345e3aab0301a7f42c66e.png\",\"slug\":\"analytics\",\"title\":\"Аналитика и анализ\",\"isShowOnMainPage\":true},{\"objectType\":\"category\",\"coursesCount\":26,\"id\":15,\"imageUrl\":null,\"slug\":\"business-product\",\"title\":\"Бизнес и продукт в IT\",\"isShowOnMainPage\":true},{\"objectType\":\"category\",\"coursesCount\":15,\"id\":16,\"imageUrl\":null,\"slug\":\"import-substitution\",\"title\":\"Импортозамещение\",\"isShowOnMainPage\":true},{\"objectType\":\"category\",\"coursesCount\":12,\"id\":6,\"imageUrl\":\"https://cdn.otus.ru/media/public/f2/fa/f2fa758623834ad1b320efd6cd5166b5.png\",\"slug\":\"testing\",\"title\":\"Тестирование\",\"isShowOnMainPage\":true},{\"objectType\":\"category\",\"coursesCount\":9,\"id\":17,\"imageUrl\":null,\"slug\":\"neural_networks\",\"title\":\"Нейросети\",\"isShowOnMainPage\":true},{\"objectType\":\"category\",\"coursesCount\":19,\"id\":13,\"imageUrl\":null,\"slug\":\"it-bez-programmirovanija\",\"title\":\"IT без программирования\",\"isShowOnMainPage\":true},{\"objectType\":\"category\",\"coursesCount\":27,\"id\":4,\"imageUrl\":\"https://cdn.otus.ru/media/public/2f/ac/2fac7d21d6534f50b383405656782275.jpg\",\"slug\":\"corporate\",\"title\":\"Корпоративные курсы\",\"isShowOnMainPage\":true},{\"objectType\":\"specialization\",\"coursesCount\":13,\"slug\":\"spec\",\"title\":\"Специализации\",\"isShowOnMainPage\":\"$undefined\"},{\"objectType\":\"online\",\"coursesCount\":14,\"slug\":\"online\",\"title\":\"Подготовительные курсы\",\"isShowOnMainPage\":true}]},\"headChunkStoreInitialData\":{\"type\":1,\"data\":{\"html\":\"\u003cdiv class=\\\"before-header-ui\\\"\u003e\\r\\n \u003cdiv class=\\\"before-header-ui__ellipse1\\\"\u003e\u003c/div\u003e\\r\\n \u003cdiv class=\\\"before-header-ui__ellipse2\\\"\u003e\u003c/div\u003e\\r\\n \u003cdiv class=\\\"before-header-ui__container\\\"\u003e\\r\\n \u003cdiv class=\\\"before-header-ui__img before-header-ui__img_sales\\\"\u003e\u003c/div\u003e\\r\\n \u003cdiv class=\\\"before-header-ui__content\\\"\u003e\\r\\n \u003cdiv class=\\\"before-header-ui__title hide-phone\\\"\u003eКурсы по нейросетям со скидкой до 30%\u003c/div\u003e\\r\\n \u003cdiv class=\\\"before-header-ui__title show-phone\\\"\u003eКурсы по нейросетям со скидкой до 30%\u003c/div\u003e\\r\\n \u003c/div\u003e\\r\\n \u003ca href=\\\"https://otus.ru/catalog/courses?categories=neural_networks\u0026utm_source=internal\u0026utm_medium=free\u0026utm_campaign=otus\u0026utm_term=chank\u0026utm_content=sla_sale_20-02-2026-10-04-2026\\\" rel=\\\"nofollow noreferrer noopener\\\" target=\\\"_blank\\\" class=\\\"before-header-ui__button\\\"\u003eВыбрать курс\u003c/a\u003e\\r\\n \u003c/div\u003e\\r\\n\u003c/div\u003e\",\"id\":425,\"namespace\":null,\"key\":\"before-header-ui\",\"title\":\"Скидки на курсы по нейросетям\",\"include_paths\":null,\"exclude_paths\":null}}},\"children\":[\"$undefined\",[[],[\"$\",\"$L1c\",null,{}]],[\"$\",\"$L1d\",null,{}]]}]}],[\"$\",\"div\",null,{\"id\":\"__PORTAL__\"}],[\"$\",\"noscript\",null,{\"children\":[\"$\",\"div\",null,{\"children\":[\"$\",\"img\",null,{\"src\":\"https://mc.yandex.ru/watch/44973232\",\"style\":{\"position\":\"absolute\",\"left\":\"-9999px\",\"top\":\"0\"},\"alt\":\"\"}]}]}],[\"$\",\"noscript\",null,{\"children\":[\"$\",\"img\",null,{\"src\":\"https://vk.com/rtrg?p=VK-RTRG-410987-bLXUv\",\"style\":{\"position\":\"fixed\",\"left\":\"-999px\"},\"alt\":\"\"}]}],[\"$\",\"noscript\",null,{\"children\":[\"$\",\"div\",null,{\"children\":[\"$\",\"img\",null,{\"src\":\"https://top-fwz1.mail.ru/counter?id=3316675;js=na\",\"style\":{\"position\":\"absolute\",\"left\":\"-9999px\"},\"alt\":\"Top.Mail.Ru\"}]}]}]]}]]}]\n"])</script><style data-styled="" data-styled-version="5.3.10"></style><script>self.__next_f.push([1,"16:[[\"$\",\"meta\",\"0\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}],[\"$\",\"meta\",\"1\",{\"charSet\":\"utf-8\"}],[\"$\",\"title\",\"2\",{\"children\":\"Курс «Мобильный разработчик на Flutter»: обучение кроссплатформенной мобильной разработке - ОТУС\"}],[\"$\",\"meta\",\"3\",{\"name\":\"description\",\"content\":\"Онлайн-курс по разработке кроссплатформенных мобильных приложений на Flutter: изучите язык Dart, создание интерфейсов, работу с API, состояние приложений. Для мобильных разработчиков под iOS и Android с одной кодовой базой. Записаться на курс «Мобильный разработчик на Flutter» на сайте ОТУС\"}],[\"$\",\"link\",\"4\",{\"rel\":\"manifest\",\"href\":\"/site.webmanifest\",\"crossOrigin\":\"use-credentials\"}],[\"$\",\"meta\",\"5\",{\"name\":\"is_app_seo_default\",\"content\":\"false\"}],[\"$\",\"meta\",\"6\",{\"name\":\"vk:image\",\"content\":\"/__new_static__/img/meta-image.png\"}],[\"$\",\"meta\",\"7\",{\"name\":\"fb:app_id\",\"content\":\"486413851704844\"}],[\"$\",\"link\",\"8\",{\"rel\":\"canonical\",\"href\":\"https://otus.ru/lessons/dart-flutter/\"}],[\"$\",\"meta\",\"9\",{\"name\":\"yandex-verification\",\"content\":\"3019a35aeda6b45d\"}],[\"$\",\"meta\",\"10\",{\"property\":\"og:title\",\"content\":\"Курс «Мобильный разработчик на Flutter»: обучение кроссплатформенной мобильной разработке - ОТУС\"}],[\"$\",\"meta\",\"11\",{\"property\":\"og:description\",\"content\":\"Онлайн-курс по разработке кроссплатформенных мобильных приложений на Flutter: изучите язык Dart, создание интерфейсов, работу с API, состояние приложений. Для мобильных разработчиков под iOS и Android с одной кодовой базой. Записаться на курс «Мобильный разработчик на Flutter» на сайте ОТУС\"}],[\"$\",\"meta\",\"12\",{\"property\":\"og:url\",\"content\":\"https://otus.ru/lessons/dart-flutter/\"}],[\"$\",\"meta\",\"13\",{\"name\":\"twitter:card\",\"content\":\"summary\"}],[\"$\",\"meta\",\"14\",{\"name\":\"twitter:title\",\"content\":\"Курс «Мобильный разработчик на Flutter»: обучение кроссплатформенной мобильной разработке - ОТУС\"}],[\"$\",\"meta\",\"15\",{\"name\":\"twitter:description\",\"content\":\"Онлайн-курс по разработке кроссплатформенных мобильных приложений на Flutter: изучите язык Dart, создание интерфейсов, работу с API, состояние приложений. Для мобильных разработчиков под iOS и Android с одной кодовой базой. Записаться на курс «Мобильный разработчик на Flutter» на сайте ОТУС\"}]]\n"])</script><script>self.__next_f.push([1,"9:null\n"])</script><script>self.__next_f.push([1,"1e:I[78444,[\"8330\",\"static/chunks/b57a0ff0-f64b6c8491bc987c.js\",\"7761\",\"static/chunks/7761-f25228226f9fd7b1.js\",\"3260\",\"static/chunks/3260-e663d3aeeb454c53.js\",\"4419\",\"static/chunks/4419-cfc7a5f44d08cc1b.js\",\"7844\",\"static/chunks/7844-5a1706e76e0167fe.js\",\"5632\",\"static/chunks/5632-5ae1d5cde11086be.js\",\"3118\",\"static/chunks/3118-3c71903ee058260c.js\",\"7670\",\"static/chunks/7670-88498cb7f740ea45.js\",\"5873\",\"static/chunks/5873-a84150cef512c203.js\",\"7985\",\"static/chunks/7985-5aa503ef1e488f37.js\",\"8012\",\"static/chunks/8012-ba13e2afafa1b32c.js\",\"4944\",\"static/chunks/4944-c0f1c1dc3dd5ddc8.js\",\"8212\",\"static/chunks/8212-ad195a1ac639b812.js\",\"428\",\"static/chunks/428-b85ac0b1d8ebbe87.js\",\"4888\",\"static/chunks/4888-09a084700e30f3b2.js\",\"2633\",\"static/chunks/2633-d7e691d1179a550f.js\",\"9374\",\"static/chunks/9374-dedf9cc8b15c395b.js\",\"4485\",\"static/chunks/4485-9ab23cf29f3d4493.js\",\"4089\",\"static/chunks/4089-38c618b1e8038db2.js\",\"8308\",\"static/chunks/8308-a718381dbc33cfb4.js\",\"1598\",\"static/chunks/1598-4e9e0a333affae09.js\",\"7234\",\"static/chunks/7234-0a01e49f09a75afe.js\",\"1701\",\"static/chunks/1701-caea77cd580b46da.js\",\"1589\",\"static/chunks/1589-5e9d65a97827bc49.js\",\"8817\",\"static/chunks/8817-f756b1c7094aa889.js\",\"3742\",\"static/chunks/3742-cf316c1014abe42c.js\",\"7624\",\"static/chunks/7624-a0236e3eec1f6b3c.js\",\"5588\",\"static/chunks/5588-acf8559ddd553204.js\",\"1613\",\"static/chunks/1613-56d7f10ce9045e21.js\",\"7601\",\"static/chunks/app/error-37bbf3f7388748a0.js\"],\"default\"]\n1f:[]\n20:[]\n21:[]\n"])</script><script>self.__next_f.push([1,"15:[\"$\",\"html\",null,{\"lang\":\"ru\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"meta\",null,{\"charSet\":\"UTF-8\"}],[\"$\",\"meta\",null,{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1, shrink-to-fit=no, user-scalable=no, viewport-fit=cover\"}],[\"$\",\"link\",null,{\"rel\":\"image_src\",\"href\":\"/__new_static__/img/meta-image.png\"}],[\"$\",\"link\",null,{\"rel\":\"shortcut icon\",\"type\":\"image/x-icon\",\"href\":\"/favicon.ico\"}],[\"$\",\"link\",null,{\"rel\":\"preload\",\"href\":\"/_next/static/images/img/owl-flight-5d7d1106ce62f5dd4057eb334384e529.gif\",\"as\":\"image\"}],[\"$\",\"link\",null,{\"rel\":\"icon\",\"type\":\"image/png\",\"sizes\":\"16x16\",\"href\":\"/_next/static/images/img/favicon-16x16-3dc5220f18624c2a6fd3aa3b081da00a.png\"}],[\"$\",\"link\",null,{\"rel\":\"icon\",\"type\":\"image/png\",\"sizes\":\"32x32\",\"href\":\"/_next/static/images/img/favicon-32x32-dd124835ecce421e1bb2c8f849e49a3f.png\"}],[\"$\",\"link\",null,{\"rel\":\"apple-touch-icon\",\"href\":\"/_next/static/images/img/apple-touch-icon-a4721dddcfb741a7e41d52e619f3820d.png\"}],[\"$\",\"link\",null,{\"rel\":\"apple-touch-icon\",\"sizes\":\"57x57\",\"href\":\"/_next/static/images/img/apple-touch-icon-57x57-92769d5e197783e63f3bb3c8519c8912.png\"}],[\"$\",\"link\",null,{\"rel\":\"apple-touch-icon\",\"sizes\":\"60x60\",\"href\":\"/_next/static/images/img/apple-touch-icon-60x60-dfaaf3934bc7ed111c8c306b967afeeb.png\"}],[\"$\",\"link\",null,{\"rel\":\"apple-touch-icon\",\"sizes\":\"72x72\",\"href\":\"/_next/static/images/img/apple-touch-icon-72x72-693f0d64a225d5f0fe26ba5d088c8f14.png\"}],[\"$\",\"link\",null,{\"rel\":\"apple-touch-icon\",\"sizes\":\"76x76\",\"href\":\"/_next/static/images/img/apple-touch-icon-76x76-f3487d673c3e7ae975cf190fb758ab10.png\"}],[\"$\",\"link\",null,{\"rel\":\"apple-touch-icon\",\"sizes\":\"114x114\",\"href\":\"/_next/static/images/img/apple-touch-icon-114x114-98609536fdaa492edede039bdd03cff2.png\"}],[\"$\",\"link\",null,{\"rel\":\"apple-touch-icon\",\"sizes\":\"120x120\",\"href\":\"/_next/static/images/img/apple-touch-icon-120x120-169d5a3cf2a78fa8e7dfa780f15abcb7.png\"}],[\"$\",\"link\",null,{\"rel\":\"apple-touch-icon\",\"sizes\":\"144x144\",\"href\":\"/_next/static/images/img/apple-touch-icon-144x144-9b1aa25d8b37e9b97af4717495fd71bf.png\"}],[\"$\",\"link\",null,{\"rel\":\"apple-touch-icon\",\"sizes\":\"152x152\",\"href\":\"/_next/static/images/img/apple-touch-icon-152x152-e04100124be68d4151efe4eb96227866.png\"}],[\"$\",\"link\",null,{\"rel\":\"apple-touch-icon\",\"sizes\":\"180x180\",\"href\":\"/_next/static/images/img/apple-touch-icon-180x180-a4721dddcfb741a7e41d52e619f3820d.png\"}],[\"$\",\"link\",null,{\"rel\":\"mask-icon\",\"href\":\"/_next/static/images/img/safari-pinned-tab-9b975a1bbe6e965061daed04a88d48e8.svg\",\"color\":\"#000000\"}],[\"$\",\"meta\",null,{\"name\":\"msapplication-TileColor\",\"content\":\"#ffffff\"}],[\"$\",\"meta\",null,{\"name\":\"msapplication-TileImage\",\"content\":\"/_next/static/images/img/mstile-144x144-c363ac4f42a2d7656bae44c971f5deab.png\"}],[\"$\",\"script\",null,{\"src\":\"https://vk.com/js/api/openapi.js?162\",\"type\":\"text/javascript\"}],[\"$\",\"$L1a\",null,{}]]}],[\"$\",\"body\",null,{\"children\":[[\"$\",\"div\",null,{\"id\":\"__next\",\"children\":[\"$\",\"$L1b\",null,{\"data\":{\"headerStoreInitialData\":{\"categories\":[{\"objectType\":\"category\",\"coursesCount\":117,\"id\":1,\"imageUrl\":\"https://cdn.otus.ru/media/public/df/68/df68cab51573450db618e44501ae4c57.jpg\",\"slug\":\"programming\",\"title\":\"Программирование\",\"isShowOnMainPage\":true},{\"objectType\":\"category\",\"coursesCount\":17,\"id\":12,\"imageUrl\":\"https://cdn.otus.ru/media/public/69/0b/690b6d40c17c484d9130d57eb344260e.png\",\"slug\":\"architecture\",\"title\":\"Архитектура\",\"isShowOnMainPage\":true},{\"objectType\":\"category\",\"coursesCount\":27,\"id\":2,\"imageUrl\":\"https://cdn.otus.ru/media/public/4a/72/4a72106d85b8465c9d744cc0efe28a47.jpg\",\"slug\":\"data-science\",\"title\":\"Data Science\",\"isShowOnMainPage\":true},{\"objectType\":\"category\",\"coursesCount\":58,\"id\":3,\"imageUrl\":\"https://cdn.otus.ru/media/public/5d/74/5d74d97874e84236a8094f3e0246e6a8.jpg\",\"slug\":\"operations\",\"title\":\"Инфраструктура\",\"isShowOnMainPage\":true},{\"objectType\":\"category\",\"coursesCount\":10,\"id\":8,\"imageUrl\":\"https://cdn.otus.ru/media/public/35/df/35dfb4a92fe140f6a1a3839fb8717f97.jpeg\",\"slug\":\"gamedev\",\"title\":\"GameDev\",\"isShowOnMainPage\":true},{\"objectType\":\"category\",\"coursesCount\":15,\"id\":11,\"imageUrl\":\"https://cdn.otus.ru/media/public/c7/7e/c77e523bd935455ab0e0bd0c92c760b6.png\",\"slug\":\"information-security-courses\",\"title\":\"Безопасность\",\"isShowOnMainPage\":true},{\"objectType\":\"category\",\"coursesCount\":46,\"id\":5,\"imageUrl\":\"https://cdn.otus.ru/media/public/84/43/8443c0d256c04ca698665c673afc866c.jpg\",\"slug\":\"marketing-business\",\"title\":\"Управление\",\"isShowOnMainPage\":true},{\"objectType\":\"category\",\"coursesCount\":25,\"id\":9,\"imageUrl\":\"https://cdn.otus.ru/media/public/75/ae/75ae55064f7345e3aab0301a7f42c66e.png\",\"slug\":\"analytics\",\"title\":\"Аналитика и анализ\",\"isShowOnMainPage\":true},{\"objectType\":\"category\",\"coursesCount\":26,\"id\":15,\"imageUrl\":null,\"slug\":\"business-product\",\"title\":\"Бизнес и продукт в IT\",\"isShowOnMainPage\":true},{\"objectType\":\"category\",\"coursesCount\":15,\"id\":16,\"imageUrl\":null,\"slug\":\"import-substitution\",\"title\":\"Импортозамещение\",\"isShowOnMainPage\":true},{\"objectType\":\"category\",\"coursesCount\":12,\"id\":6,\"imageUrl\":\"https://cdn.otus.ru/media/public/f2/fa/f2fa758623834ad1b320efd6cd5166b5.png\",\"slug\":\"testing\",\"title\":\"Тестирование\",\"isShowOnMainPage\":true},{\"objectType\":\"category\",\"coursesCount\":9,\"id\":17,\"imageUrl\":null,\"slug\":\"neural_networks\",\"title\":\"Нейросети\",\"isShowOnMainPage\":true},{\"objectType\":\"category\",\"coursesCount\":19,\"id\":13,\"imageUrl\":null,\"slug\":\"it-bez-programmirovanija\",\"title\":\"IT без программирования\",\"isShowOnMainPage\":true},{\"objectType\":\"category\",\"coursesCount\":27,\"id\":4,\"imageUrl\":\"https://cdn.otus.ru/media/public/2f/ac/2fac7d21d6534f50b383405656782275.jpg\",\"slug\":\"corporate\",\"title\":\"Корпоративные курсы\",\"isShowOnMainPage\":true},{\"objectType\":\"specialization\",\"coursesCount\":13,\"slug\":\"spec\",\"title\":\"Специализации\",\"isShowOnMainPage\":\"$undefined\"},{\"objectType\":\"online\",\"coursesCount\":14,\"slug\":\"online\",\"title\":\"Подготовительные курсы\",\"isShowOnMainPage\":true}]},\"headChunkStoreInitialData\":{\"type\":1,\"data\":{\"html\":\"\u003cdiv class=\\\"before-header-ui\\\"\u003e\\r\\n \u003cdiv class=\\\"before-header-ui__ellipse1\\\"\u003e\u003c/div\u003e\\r\\n \u003cdiv class=\\\"before-header-ui__ellipse2\\\"\u003e\u003c/div\u003e\\r\\n \u003cdiv class=\\\"before-header-ui__container\\\"\u003e\\r\\n \u003cdiv class=\\\"before-header-ui__img before-header-ui__img_sales\\\"\u003e\u003c/div\u003e\\r\\n \u003cdiv class=\\\"before-header-ui__content\\\"\u003e\\r\\n \u003cdiv class=\\\"before-header-ui__title hide-phone\\\"\u003eКурсы по нейросетям со скидкой до 30%\u003c/div\u003e\\r\\n \u003cdiv class=\\\"before-header-ui__title show-phone\\\"\u003eКурсы по нейросетям со скидкой до 30%\u003c/div\u003e\\r\\n \u003c/div\u003e\\r\\n \u003ca href=\\\"https://otus.ru/catalog/courses?categories=neural_networks\u0026utm_source=internal\u0026utm_medium=free\u0026utm_campaign=otus\u0026utm_term=chank\u0026utm_content=sla_sale_20-02-2026-10-04-2026\\\" rel=\\\"nofollow noreferrer noopener\\\" target=\\\"_blank\\\" class=\\\"before-header-ui__button\\\"\u003eВыбрать курс\u003c/a\u003e\\r\\n \u003c/div\u003e\\r\\n\u003c/div\u003e\",\"id\":425,\"namespace\":null,\"key\":\"before-header-ui\",\"title\":\"Скидки на курсы по нейросетям\",\"include_paths\":null,\"exclude_paths\":null}}},\"children\":[[\"$\",\"$L6\",null,{\"parallelRouterKey\":\"structuredData\",\"segmentPath\":[\"structuredData\"],\"error\":\"$1e\",\"errorStyles\":[],\"errorScripts\":[],\"template\":[\"$\",\"$L8\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"notFoundStyles\":\"$1f\"}],[\"$\",\"$L6\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\"],\"error\":\"$1e\",\"errorStyles\":\"$20\",\"errorScripts\":\"$21\",\"template\":[\"$\",\"$L8\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[\"$\",\"$L1c\",null,{}],\"notFoundStyles\":\"$1f\"}],[\"$\",\"$L1d\",null,{}]]}]}],[\"$\",\"div\",null,{\"id\":\"__PORTAL__\"}],[\"$\",\"noscript\",null,{\"children\":[\"$\",\"div\",null,{\"children\":[\"$\",\"img\",null,{\"src\":\"https://mc.yandex.ru/watch/44973232\",\"style\":{\"position\":\"absolute\",\"left\":\"-9999px\",\"top\":\"0\"},\"alt\":\"\"}]}]}],[\"$\",\"noscript\",null,{\"children\":[\"$\",\"img\",null,{\"src\":\"https://vk.com/rtrg?p=VK-RTRG-410987-bLXUv\",\"style\":{\"position\":\"fixed\",\"left\":\"-999px\"},\"alt\":\"\"}]}],[\"$\",\"noscript\",null,{\"children\":[\"$\",\"div\",null,{\"children\":[\"$\",\"img\",null,{\"src\":\"https://top-fwz1.mail.ru/counter?id=3316675;js=na\",\"style\":{\"position\":\"absolute\",\"left\":\"-9999px\"},\"alt\":\"Top.Mail.Ru\"}]}]}]]}]]}]\n"])</script><script>self.__next_f.push([1,"22:T533,{\n \"@context\": \"http://schema.org\",\n \"@type\": \"Course\",\n \"name\": \"Flutter Mobile Developer\",\n \"url\": \"https://otus.ru\",\n \"logo\": \"https://otus.ru/__new_static__/img/meta-image.png\",\n \"sameAs\": [\n \"https://vk.com/otusru\",\n \"https://t.me/Otusjava\"\n ],\n \"description\": \"\\nНаучитесь использовать инструменты необходимые для Flutter-разработчика: Dart, Platform-Specific Code, Skia, MWWM, Bloc, Redux, MobX и др.\\nСоздадите свой аналог WhatsApp и Telegram, CoinMarketCap, Todoist в рамках разработки индивидуально…\",\n \"provider\": {\n \"@type\": \"Organization\",\n \"name\": \"OTUS\",\n \"sameAs\": \"https://otus.ru\"\n },\n \"image\": \"https://otus.ru/__new_static__/img/meta-image.png\",\n \"aggregateRating\": {\n \"@type\": \"AggregateRating\",\n \"ratingValue\": \"4.7\",\n \"ratingCount\": \"150\"\n },\n \"offers\": {\n \"@type\": \"Offer\",\n \"priceCurrency\": \"RUB\",\n \"price\": 93000,\n \"availability\": \"https://schema.org/InStock\",\n \"url\": \"https://otus.ru/lessons/dart-flutter\"\n },\n \"hasCourseInstance\": {\n \"@type\": \"CourseInstance\",\n \"name\": \"Flutter Mobile Developer (Онлайн)\",\n \"courseMode\": \"Online\",\n \"startDate\": \"2026-04-30\",\n \"endDate\": \"2027-01-13\",\n \"duration\": \"P6M\"\n }\n}5:[\"$\",\"script\",null,{\"type\":\"application/ld+json\",\"dangerouslySetInnerHTML\":{\"__html\":\"$22\"}}]\n"])</script><style data-styled="" data-styled-version="5.3.10"></style><script>self.__next_f.push([1,"23:I[20056,[\"8330\",\"static/chunks/b57a0ff0-f64b6c8491bc987c.js\",\"7761\",\"static/chunks/7761-f25228226f9fd7b1.js\",\"3260\",\"static/chunks/3260-e663d3aeeb454c53.js\",\"4419\",\"static/chunks/4419-cfc7a5f44d08cc1b.js\",\"7844\",\"static/chunks/7844-5a1706e76e0167fe.js\",\"5632\",\"static/chunks/5632-5ae1d5cde11086be.js\",\"3118\",\"static/chunks/3118-3c71903ee058260c.js\",\"7670\",\"static/chunks/7670-88498cb7f740ea45.js\",\"5873\",\"static/chunks/5873-a84150cef512c203.js\",\"7985\",\"static/chunks/7985-5aa503ef1e488f37.js\",\"8012\",\"static/chunks/8012-ba13e2afafa1b32c.js\",\"4944\",\"static/chunks/4944-c0f1c1dc3dd5ddc8.js\",\"8212\",\"static/chunks/8212-ad195a1ac639b812.js\",\"428\",\"static/chunks/428-b85ac0b1d8ebbe87.js\",\"4888\",\"static/chunks/4888-09a084700e30f3b2.js\",\"2633\",\"static/chunks/2633-d7e691d1179a550f.js\",\"9374\",\"static/chunks/9374-dedf9cc8b15c395b.js\",\"5408\",\"static/chunks/5408-7304a011593a4e7b.js\",\"4485\",\"static/chunks/4485-9ab23cf29f3d4493.js\",\"4089\",\"static/chunks/4089-38c618b1e8038db2.js\",\"8308\",\"static/chunks/8308-a718381dbc33cfb4.js\",\"1598\",\"static/chunks/1598-4e9e0a333affae09.js\",\"7234\",\"static/chunks/7234-0a01e49f09a75afe.js\",\"1589\",\"static/chunks/1589-5e9d65a97827bc49.js\",\"8817\",\"static/chunks/8817-f756b1c7094aa889.js\",\"3742\",\"static/chunks/3742-cf316c1014abe42c.js\",\"7624\",\"static/chunks/7624-a0236e3eec1f6b3c.js\",\"5588\",\"static/chunks/5588-acf8559ddd553204.js\",\"1613\",\"static/chunks/1613-56d7f10ce9045e21.js\",\"4514\",\"static/chunks/4514-28d343fc6e2d14e0.js\",\"9697\",\"static/chunks/app/lessons/%5Bslug%5D/page-56f47397b9d2307e.js\"],\"Page\"]\n24:I[18927,[\"8330\",\"static/chunks/b57a0ff0-f64b6c8491bc987c.js\",\"7761\",\"static/chunks/7761-f25228226f9fd7b1.js\",\"3260\",\"static/chunks/3260-e663d3aeeb454c53.js\",\"4419\",\"static/chunks/4419-cfc7a5f44d08cc1b.js\",\"7844\",\"static/chunks/7844-5a1706e76e0167fe.js\",\"5632\",\"static/chunks/5632-5ae1d5cde11086be.js\",\"3118\",\"static/chunks/3118-3c71903ee058260c.js\",\"7670\",\"static/chunks/7670-88498cb7f740ea45.js\",\"5873\",\"static/chunks/5873-a84150cef512c203.js\",\"7985\",\"static/chunks/7985-5aa503ef1e488f37.js\",\"8012\",\"static/chu"])</script><script>self.__next_f.push([1,"nks/8012-ba13e2afafa1b32c.js\",\"4944\",\"static/chunks/4944-c0f1c1dc3dd5ddc8.js\",\"8212\",\"static/chunks/8212-ad195a1ac639b812.js\",\"428\",\"static/chunks/428-b85ac0b1d8ebbe87.js\",\"4888\",\"static/chunks/4888-09a084700e30f3b2.js\",\"2633\",\"static/chunks/2633-d7e691d1179a550f.js\",\"9374\",\"static/chunks/9374-dedf9cc8b15c395b.js\",\"5408\",\"static/chunks/5408-7304a011593a4e7b.js\",\"4485\",\"static/chunks/4485-9ab23cf29f3d4493.js\",\"4089\",\"static/chunks/4089-38c618b1e8038db2.js\",\"8308\",\"static/chunks/8308-a718381dbc33cfb4.js\",\"1598\",\"static/chunks/1598-4e9e0a333affae09.js\",\"7234\",\"static/chunks/7234-0a01e49f09a75afe.js\",\"1589\",\"static/chunks/1589-5e9d65a97827bc49.js\",\"8817\",\"static/chunks/8817-f756b1c7094aa889.js\",\"3742\",\"static/chunks/3742-cf316c1014abe42c.js\",\"7624\",\"static/chunks/7624-a0236e3eec1f6b3c.js\",\"5588\",\"static/chunks/5588-acf8559ddd553204.js\",\"1613\",\"static/chunks/1613-56d7f10ce9045e21.js\",\"4514\",\"static/chunks/4514-28d343fc6e2d14e0.js\",\"9697\",\"static/chunks/app/lessons/%5Bslug%5D/page-56f47397b9d2307e.js\"],\"default\"]\n25:T643, \u003ch2\u003eДля кого этот курс?\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eЭтот курс подходит вам\u003c/strong\u003e, если\u003cstrong\u003e \u003c/strong\u003eу вас уже есть опыт в программировании \u003cspan id=\"docs-internal-guid-f13f8eb7-7fff-5fe6-5bbd-d3cf18cfc0fa\"\u003eи\u003c/span\u003e\u003cspan id=\"docs-internal-guid-f13f8eb7-7fff-5fe6-5bbd-d3cf18cfc0fa\"\u003e \u003c/span\u003eиспользовании концепций ООП, и вы хотите научиться писать мультиплатформенные мобильные приложения, использующие одну и ту же кодовую базу для iOS и Android, \u003cspan id=\"docs-internal-guid-43901324-7fff-ac2e-ff91-2903c38264b6\"\u003eDesktop и Web\u003c/span\u003e.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eЦель курса\u003c/strong\u003e \u0026mdash; научиться создавать современные кроссплатформенные приложения с помощью Flutter.\u003c/p\u003e\n\u003ch2\u003eНеобходимые знания\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eопыт программиров"])</script><script>self.__next_f.push([1,"ания на любом языке программирования\u003c/li\u003e\n\u003cli\u003e\u003cspan id=\"docs-internal-guid-db1b3f60-7fff-6e8c-f896-cdcf725c2fa8\"\u003eпонимание принципов объектно-ориентированного программирования\u003c/span\u003e\u003c/li\u003e\n\u003cli\u003eнавыки использования git\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eБудет плюсом\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eзнакомство с мобильной разработкой\u003c/li\u003e\n\u003cli\u003eопыт работы в Android Studio или VS Code\u003c/li\u003e\n\u003cli\u003eзнание шаблонов проектирования\u003c/li\u003e\n\u003c/ul\u003e26:Td04,"])</script><script>self.__next_f.push([1,"\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eНаучитесь использовать инструменты необходимые для Flutter-разработчика\u003c/strong\u003e: Dart, BLoC, Redux, MobX и др.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eСоздадите свой аналог Telegram, CoinMarketCap, Todoist\u003c/strong\u003e в рамках разработки индивидуальной проектной работы, которая пополнит ваше портфолио\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eСможете общаться напрямую с преподавателями\u003c/strong\u003e на лекциях и в Telegram-чате, обсуждать кейсы и задачи, которые стоят перед вами\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eОсвойте необходимые навыки для Flutter-разработчика\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eОсновы языка Dart\u003c/strong\u003e. Этот язык очень гибок и легок в использовании. Именно поэтому разработчики Flutter выбрали его. Освоив Dart, вы сможете писать Android-, iOS-, Web- и даже Desktop-приложения;\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eПоймете, как работает Flutter изнутри\u003c/strong\u003e. Flutter достаточно прост, чтобы начать решать с помощью него задачи в первый же день обучения. Но очень важно разобраться, как он работает, чтобы использовать возможности Flutter наиболее эффективно;\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eНаучитесь использовать platform-specific code для интеграции с нативной частью мобильного приложения\u003c/strong\u003e. Если вам нужен доступ к hardware или какому-либо сложному модулю, который требователен к производительности, то Flutter может взаимодействовать с нативным кодом и решать даже эти задачи;\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eПоймете как создавать свои собственные анимации\u003c/strong\u003e. Во Flutter очень хорошо развита возможность создавать анимации. Так что мы разберемся, как создать практически любую анимацию с помощью Flutter без какой-либо потери в производительности;\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eНачнете использовать современные библиотеки и фреймворки\u003c/strong\u003e. Мы разберем самые популярные фреймвоки для работы с состоянием приложения: BLoC, Redux, MobX. Посмотрим, как организовать DI во Flutter на примере inject.dart и фреймворка get_it.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eПрактические домашние задания\u003c/strong\u003e на курсе подготовлены таким образом, чтобы помочь вам не только применить знания на практике, но и помочь в реализации проектной работы.\u003c/p\u003e"])</script><script>self.__next_f.push([1,"27:Tb2a,"])</script><script>self.__next_f.push([1,"План работы:\n1. Разработать алгоритм разбора строки с учетом приоритета операций (при необходимости можно вносить изменения в строку)\n2. Реализовать функцию (итеративную или рекурсивную) для выполнения последовательности операций\n3. Создать класс для вычисления значения произвольной функции с заданными значениями переменных\n4. Написать тесты с проверкой результата на выражениях, содержащих операции и их сочетания (например, 2+3*4)\n5. Опционально сделать поддержку унарного минуса (например, в выражении -3+5)\n\nПреобразователь должен быть оформлен как класс (конструктор принимает строку с математической функцией) с методом преобразования, принимающим Map с переменными (ключ - название переменной, значение - числовое значение, которое подставляется вместо переменной) и возвращающей значение типа double. \n\nПри вычислении значения выражения необходимо учитывать приоритет математических операций. За основу можно взять любой алгоритм (например, https://dev.to/brunooliveira/writing-a-mathematical-expression-evaluator-in-java-1ka6), либо разработать собственный. Для тестирования корректности можно использовать минимум три выражения (x=10).\n1) 10*5+4/2-1 (результат 51)\n2) (x*3-5)/5 (результат 5)\n3) 3*x+15/(3+2) (результат 33)\n\nДолжно быть создано не менее 5 тестов (обязательно должны быть тесты на сочетание операций и на использование скобок). Если поддерживается унарный минус, то тесты должны быть сделаны и на эти выражения.\n\nОпционально можно сделать поддержку отрицательных констант с унарным минусом.\n\n\u003cbr/\u003e \n\n### Рекоменуем для начала проверить решение в тренажере, далее по готовности прислать ссылку на github в чат по ДЗ. "])</script><script>self.__next_f.push([1,"28:T6b4,Дизайн приложения: [****тут****](https://www.figma.com/file/alUTMeT3w9XlbNf3orwyFA/Otus-Food-App?node-id=135%3A691) (эскизы с возможностью получить цвета, размеры и отступы) \u003cbr/\u003e и [**тут** ](https://www.figma.com/proto/alUTMeT3w9XlbNf3orwyFA/Otus-Food-App?node-id=102%3A3\u0026scaling=scale-down\u0026page-id=0%3A1\u0026starting-point-node-id=135%3A691) (навигация по приложению)\n\nПлан работы:\n1. Использовать StatelessWidget с получением в качестве аргумента конструктора списка объектов с описанием блюд\n2. Список блюд создать в соответствии со схемой данных с сервера (https://app.swaggerhub.com/apis/dzolotov/foodapi/0.2.0), для доступа к списку нужно реализовать класс менеджера, который в дальнейшем будет изменен для использования данных с сервера (сейчас метод менеджера getRecipes будет возвращать список List\u003cRecipe\u003e и использовать константный список, размещенный внутри менеджера). \n3. Выполнить верстку страницы списка рецептов и связать ее с менеджером \n4. Сделать эту страницу точкой входа в приложение в обертке MaterialApp - Scaffold (в runApp), изменить цвета темы оформления в MaterialApp для соответствия дизайну\n29:Tab9,"])</script><script>self.__next_f.push([1,"Дизайн приложения: [****тут****]( https://www.figma.com/file/alUTMeT3w9XlbNf3orwyFA/Otus-Food-App?node-id=135%3A691) (эскизы с возможностью получить цвета, размеры и отступы) \u003cbr/\u003e и [**тут** ](https://www.figma.com/proto/alUTMeT3w9XlbNf3orwyFA/Otus-Food-App?node-id=102%3A3\u0026scaling=scale-down\u0026page-id=0%3A1\u0026starting-point-node-id=135%3A691) (навигация по приложению)\n\nПлан работы:\n1. Использовать StatefulWidget для верстки формы заполнения данных о новом рецепте\n2. Добавить в менеджер возможность получения списка ингредиентов и единиц измерения (схема аналогично API из документации https://app.swaggerhub.com/apis/dzolotov/foodapi/0.2.0), которые будут использовать для добавления шагов и ингредиентов\n3. Расширить модель описания рецепта (добавить список ингридиентов и шаги приготовления)\n4. Реализовать дополнительные формы для ввода информации о новом ингредиенте и новом шаге (с использованием модального диалога)\n5. Сейчас не нужно реализовывать загрузку фотографии, но вместо нее разместить виджет Placeholder\n6. Дополнить менеджер списка рецептов из предыдущего домашнего задания методом для сохранения нового рецепта (в дальнейшем реализация будет заменена на работу с сетевым API)\n7. Выполнить верстку страницы добавления рецепта и связать ее с менеджером, при наличии ошибок валидации отображать их в соответствующих текстовых полях (стандартными методами TextField)\n8. Сделать обновление списка рецептов после завершения добавления (нужно использовать внешний StatefulWidget вокруг списка рецептов и обновлять его после выполнения добавления)\n9. Сделать переход в страницу добавления рецепта по кнопке из списка рецентов (с использованием Navigator.push)"])</script><style data-styled="" data-styled-version="5.3.10"></style><script>self.__next_f.push([1,"2a:T87e,"])</script><script>self.__next_f.push([1,"Закончил Российский Государственный Педагогический Университет в 2002-ом году - учитель физики. Руководил межфакультетской лабораторией перспективных информационных технологий в РГПУ им. А. И. Герцена. \r\n\r\nУчаствовал в создании и масштабировании ресурсов для электронного обучения (в т.ч. проект \"Российская электронная школа\"). Проектировал и разрабатывал высоконагруженные веб-приложения и системы автоматизации. Контрибьютор в проект ReOpenLdap. \r\n\r\nРазрабатывал архитектуру отказоустойчивых конфигураций гибридного облака на основе Consul и Kubernetes, сервисных сетей, интеграционных платформ с использованием AMQP. Также являюсь преподавателем по компьютерным сетям, DevOps, операционным системам, мультимедиа-технологиям. \r\n\r\nРуководил отделом автоматизации процессов в финансовой организации, в которой был консультантом и DevOps по миграции систем с использованием облачных технологий, а также разработчиком для Android/iOS.\r\n\r\nАвтор серии вебинаров по Kubernetes и кроссплатформенной разработке: https://www.youtube.com/channel/UCs_AMB-HbhHzMhE0VdBZByg\r\n\r\n- Опыт работы 23 года\r\n- FullStack разработчик (Flutter/Python/Kotlin/GoLang/C++)\r\n- DevOps, Системный администратор\r\n- Приглашенный преподаватель в ИТМО \r\n- Исследователь технологий электронного обучения"])</script><script>self.__next_f.push([1,"2b:T727,В 2026 году Flutter получил GenUI SDK – инструмент, позволяющий AI-агентам генерировать интерактивный UI в рантайме из каталога ваших виджетов. Разберём архитектуру A2UI-протокола, построим рабочее демо и обсудим, где это меняет правила игры.\r\n\r\nЧто будет рассмотрено:\r\n- Архитектура GenUI SDK и A2UI-протокол: как LLM компонует интерфейс без генерации кода, оставаясь в рамках доверенного каталога виджетов\r\n- Практика: собираем приложение, в котором AI-агент создаёт формы, карточки и навигацию на лету – от схемы CatalogItem до streaming-рендеринга\r\n- Границы применимости: security model, latency, стоимость токенов и честный разговор о том, когда GenUI - оверинжиниринг\r\n\r\nКому будет интересно:\r\n- Flutter-разработчикам, которые хотят понять следующий эволюционный шаг фреймворка из официального роадмапа 2026\r\n- Мобильным и фронтенд-инженерам, изучающим интеграцию LLM-агентов в пользовательские интерфейсы\r\n- Тимлидам и архитекторам, оценивающим server-driven UI нового поколения для своих продуктов\r\n\r\nUI больше не пишут – его генерируют. Разберёмся, как именно2c:Tba9,"])</script><script>self.__next_f.push([1,"Я работаю инженером-программистом. Моя основная деятельность связана с автоматизацией процессов. Разрабатывал десктопные и мобильные приложения для управления медицинским оборудованием и обработки данных. Занимался интеграцией ПО с медицинскими оборудованиями и диагностическими системами.\r\n\r\nПри анализе курсов по обучению Flutter я рассматривал несколько вариантов, но остановился на Otus по нескольким причинам:\r\n1) Глубина программы: курс охватывает не только основы, но и продвинутые темы (например, State Management, работу с API, интеграцию с бэкендом).\r\n2) Преподаватели-практики: лекции ведут разработчики с опытом в крупных компаниях, что дает актуальные знания.\r\n3) Гибкость формата: возможность смотреть записи, участвовать в вебинарах и получать фидбек от менторов.\r\n\r\n\r\nПонравилось на курсе:\r\n1) Сильный преподавательский состав – эксперты дают не только теорию, но и делятся реальными кейсами.\r\n2) Структурированная программа – материал подается от простого к сложному, с постепенным углублением в тему.\r\n3) Практические задания – они помогают сразу применять знания в работе.\r\n4) Дополнительные материалы – доступ к записям, шаблонам кода и полезным статьям.\r\n\r\nЧто можно улучшить:\r\n1) Больше живых разборов сложных тем – иногда хочется более детальных объяснений по архитектуре приложений.\r\n2) Дополнительные проекты для портфолио – было бы здорово, если бы в курсе было больше реальных задач из коммерческой разработки.\r\n\r\nБлагодаря курсу я начал изучать Flutter на профессиональном уровне – теперь могу разрабатывать кроссплатформенные приложения под iOS и Android.\r\nПолучил доступ к новым проектам – уже пробую внедрять Flutter в текущей работе."])</script><script>self.__next_f.push([1,"2d:Tb7a,"])</script><script>self.__next_f.push([1,"Добрый день. недавно окончила курс по Flutter. Хотелось бы поделиться впечатлениями) Я андроид-разработчик с более чем 3 -летним опытом работы. Кроссплатформой интересовалась давно. как-то в проф телеграмм канале увидела предложение для нативщиков по поводу курсов этих. Заинтересовалась. сразу же прошла тест вступительный и записалась на обучение. Так вышло, что училась я 2 раза вместо одного, по личным причинам) За более чем 9 месяцев обучения имела честь познакомиться с большим числом профессионалов, преподавателей Otus. Т к я стала свидетелем запуска первого, дебютного потока. а также студенткой второго потока, то могу с уверенностью говорить о том, что материал ко второму потоку стал более структурирован, процессы были выстроены отлично, вебинары не хотелось пропускать, всегда было, о чём поговорить. это стало уже как традицией - 2 раза в неделю, по вечерам говорить на интересные проф темы) Время прошло быстро, практически на границе окончания второго потока курса я получила предложение о работе. Решила попробовать свои силы и посмотреть, что вынесла с курса. И меня пригласили на работу, как flutter инженера) \r\n\r\nЧто могу сказать по итогам своей учёбы) Оно того стоит. времени, сил, стоит. Кроме новых знаний потрясающих, те, кто захочет прийти дальше, получат богатый опыт, общение с наиинтереснейшими людьми и много положительных эмоций. Отдельное спасибо организаторам курса за то, что дали мне возможность остаться на \"второй год\" )) т к первый поток прошёл мимо меня, хотя я и должна была закончить курс давно. От себя лично хочу пожелать всей команде OTUS развития, процветания и новых и суперских идей)"])</script><script>self.__next_f.push([1,"2f:{\"start\":\"#373737\",\"stop\":\"#111111\"}\n2e:{\"gradient\":\"$2f\",\"secondColor\":\"#575757\",\"textIsBlack\":false}\n"])</script><script>self.__next_f.push([1,"a:[\"$\",\"$L23\",null,{\"hideOverlayBanner\":true,\"withTopPadding\":false,\"theme\":{\"gradient\":{\"start\":\"#373737\",\"stop\":\"#111111\"},\"secondColor\":\"#575757\",\"textIsBlack\":false},\"children\":[\"$\",\"$L24\",null,{\"initialData\":{\"course\":{\"id\":178,\"slug\":\"dart-flutter\",\"title\":\"Flutter Mobile Developer\",\"isSpecialization\":false,\"difficultyLevel\":null,\"partnerLink\":null,\"partnerText\":\"Партнер курса\",\"partnerImageUrl\":null,\"partnerHeaderText\":null,\"partnerImageAlt\":\"логотип партнера\",\"category\":{\"title\":\"Программирование\",\"slug\":\"programming\"},\"scheduleGroup\":{\"id\":4018,\"title\":\"Flutter-2026-04\",\"startDate\":\"2026-04-30\",\"isShowFullDate\":true,\"isShowDays\":false,\"timeFullDays\":null,\"timeFullMonth\":6,\"weekdaysStr\":\"Пн/Чт 20:00 Мск\",\"finishDate\":\"2027-01-13\",\"priceFull\":{\"fullPrice\":93000,\"discount\":0,\"discountCapped\":false},\"priceFullB2b\":{\"fullPrice\":121000,\"discount\":0,\"discountCapped\":false},\"discountValidDate\":null,\"isAssessmentEnabled\":true,\"isEnableRequest\":false,\"status\":\"ready\"},\"headerIconUrl\":\"https://cdn.otus.ru/media/public/52/cc/52ccd635521642d4ba7d251cc45e15d8.svg\",\"headerIconInvtUrl\":\"https://cdn.otus.ru/media/public/69/8a/698a3124be534997b17752cfe56d9fdb.svg\",\"employers\":[{\"id\":139,\"title\":\"FriFlex\",\"logoUrl\":\"https://cdn.otus.ru/media/public/99/aa/99aa2f590377475c88cdd3651ec12c92.png\"},{\"id\":241,\"title\":\"ООО \\\"Айти Грейд\\\"\",\"logoUrl\":\"https://cdn.otus.ru/media/public/e4/eb/e4ebe942cc124ec68ae502b2c282bed3.png\"}],\"gaGoalDodWithoutAssessment\":\"flutter_claim_event_ok\",\"yaGoalDodWithoutAssessment\":\"flutter_claim_event_ok\",\"isForChildren\":false,\"linkTg\":null,\"linkVk\":null},\"blocks\":[{\"desc\":\"\u003cp\u003eКроссплатформенная мобильная и веб-разработка\u003c/p\u003e\",\"isSpecialPriceShow\":false,\"isCourseUpdateShow\":true,\"specialPriceText\":\"Рассрочка\",\"specialPriceHelpText\":\"\",\"courseUpdateText\":\"Актуальная программа\",\"courseUpdateHelpText\":\"Программа курса обновлена и соответствует последней версии Flutter\",\"id\":5881,\"type\":\"specialization_header\"},{\"desc\":\"$25\",\"visitCardLink\":null,\"visitCardPreviewUrl\":null,\"verticalBanner\":null,\"horizontalBanner\":null,\"id\":5882,\"type\":\"SPECIALIZATION_COURSE_PRESENTATION\"},{\"title\":\"Что даст вам этот курс\",\"text\":\"$26\",\"sideText\":\"\u003ch2\u003eПочему Flutter?\u003c/h2\u003e\\n\u003cp\u003eFlutter позволит вам создавать красивые, быстрые и кроссплатформенные приложения для iOS и Android, используя один и тот же код.\u003c/p\u003e\",\"id\":5883,\"type\":\"SPECIALIZATION_COURSE_GOAL\"},{\"iconUrl\":null,\"title\":\"Процесс обучения\",\"text\":\"Занятия в OTUS \u0026mdash; это не заранее отснятый материал. Вебинары проходят в режиме реального времени, где преподаватели-практики рассказывают об актуальных кейсах и инструментах, которые нужны им в работе сейчас. Вы сможете активно участвовать голосом, практиковаться, задавать вопросы и получать обратную связь. Такой формат дает реальный результат.\u003cbr /\u003e\u003cbr /\u003eА если вы не смогли посетить занятие в реальном времени, то сможете посмотреть его в записи и задать вопрос преподавателю в закрытом Telegram-чате.\",\"id\":5884,\"type\":\"SPECIALIZATION_TEACHING_PROCESS\"},{\"columns\":[{\"imageUrl\":null,\"text\":\"\u003ch3\u003eПортфолио\u003c/h3\u003e\\n\u003cbr /\u003eПодготовка проекта для портфолио в течение всего курса\"},{\"imageUrl\":null,\"text\":\"\u003ch3\u003eЭксперты\u003c/h3\u003e\\n\u003cbr /\u003eМного практики и живого общения с преподавателями\"},{\"imageUrl\":null,\"text\":\"\u003ch3\u003eОптимальная нагрузка\u003c/h3\u003e\\n\u003cbr /\u003eВозможность совмещать учебу с работой\"}],\"id\":5885,\"type\":\"textcolumns\"},{\"title\":\"Партнеры\",\"sliderTitle\":\"Работодатели курса\",\"desc\":\"\u003cp\u003eМногие студенты еще во время прохождения первой части программы находят или меняют работу, а к концу обучения могут претендовать на повышение в должности.\u003c/p\u003e\",\"advantages\":\"\u003cul\u003e\\n\u003cli\u003e\u003cstrong\u003eПолучите помощь с оформлением резюме\u003c/strong\u003e, портфолио и сопроводительного письма\u003c/li\u003e\\n\u003cli\u003e\u003cstrong\u003eРазместите свое резюме в базе OTUS\u003c/strong\u003e и сможете получать приглашения на собеседования от партнеров\u003c/li\u003e\\n\u003c/ul\u003e\",\"vacancyDesc\":{\"title\":\"Flutter-разработчик\",\"count\":500,\"salaryJunior\":60000,\"salaryMiddle\":180000,\"salarySenior\":300000},\"id\":5886,\"type\":\"SPECIALIZATION_EMPLOYMENT\"},{\"header\":\"\u003ch5\u003eФормат обучения\u003c/h5\u003e\",\"columns\":[{\"text\":\"\u003ch3\u003eИнтерактивные вебинары\u003c/h3\u003e\\n\u003cbr /\u003e\\n\u003cp\u003e2 онлайн-трансляции по 2 ак.часа в неделю. Доступ к записям и материалам остается навсегда\u003c/p\u003e\",\"imageUrl\":null},{\"text\":\"\u003ch3\u003eПрактика\u003c/h3\u003e\\n\u003cdiv\u003e\u0026nbsp;\u003c/div\u003e\\n\u003cp\u003eУсильте своё портфолио и компетенции с помощью домашних заданий, проектной работы и интерактивных тренажёров с автопроверкой\u003c/p\u003e\",\"imageUrl\":null},{\"text\":\"\u003ch3\u003eАктивное комьюнити\u003c/h3\u003e\\n\u003cbr /\u003e\\n\u003cp\u003eОбщайтесь с преподавателями голосом на вебинарах, в закрытом чате Telegram и при проверке домашних заданий\u003c/p\u003e\",\"imageUrl\":null}],\"id\":5887,\"type\":\"SPECIALIZATION_EDUCATION_FORMAT\"},{\"id\":5888,\"type\":\"program\",\"program\":{\"data\":{\"id\":3540,\"title\":\"Flutter-2026-04\",\"duration\":182,\"modules\":[{\"id\":21378,\"number\":1,\"likeDown\":0,\"likeUp\":0,\"likeUser\":null,\"title\":\"Введение в Dart\",\"description\":\"В модуле рассматривается синтаксис языка Dart (с учетом Null Safety и новых конструкций последней версии Dart) и инструментальные средства компиляции и анализа приложений, создания и установки пакетов.\",\"type\":\"common\",\"lessons\":[{\"id\":124781,\"likeDown\":0,\"likeUp\":0,\"description\":\"писать корректный код на dart, используя базовые конструкции и систему типов;\\nпроектировать и объявлять функции (позиционные/именованные параметры, значения по умолчанию);\\nприменять null-safety в сигнатурах и реализациях;\\nиспользовать стандартную библиотеку для работы со строками, числами и коллекциями.\",\"title\":\"Введение в язык программирования Dart\",\"summary\":\"обзор синтаксиса и модели типов dart (non-nullable by default);\\nфункции: позиционные/именованные параметры, значения по умолчанию, функции высшего порядка, typedef;\\nколлекции: list/set/map, базовые операции преобразования (map/where/reduce);\\nстроки и числа: парсинг, форматирование, dart:convert (utf-8, json);\\nпрактика в dartpad: мини-задачи на трансформацию данных и чистые функции.\",\"likeUser\":null,\"homeworks\":[]},{\"id\":124784,\"likeDown\":0,\"likeUp\":0,\"description\":\"подбирать и применять структуры данных (list/set/map, очереди/кучи, деревья, графы) под задачу;\\nоценивать асимптотику по времени и памяти и принимать решения с учётом ограничений;\\nреализовывать и тестировать типовые алгоритмы (поиск, сортировки, обходы деревьев/графов) в идиомах dart;\\nиспользовать алгоритмические приёмы и простые паттерны для расширяемых решений.\",\"title\":\"Алгоритмы на языке Dart\",\"summary\":\"выбор структур: list/set/map vs queue/priorityqueue; модели деревьев и графов;\\nбазовые алгоритмы: сортировки (merge/quick), поиск (линейный/бинарный), обходы bfs/dfs; кратчайшие пути (по желанию);\\nсложность: big-o времени/памяти; компромиссы изменяемость/иммутабельность, аллокации;\\nидиомы dart: iterable, генераторы, map/where/fold, ленивые преобразования;\\nпаттерны применения: strategy для смены алгоритма, adapter для унификации интерфейсов.\",\"likeUser\":null,\"homeworks\":[]},{\"id\":124782,\"likeDown\":0,\"likeUp\":0,\"description\":\"моделировать предметную область через классы, интерфейсы и композицию;\\nиспользовать миксины и расширения для повторного использования поведения;\\nпроектировать устойчивые api классов (именованные и factory-конструкторы, инкапсуляция);\\nописывать конечные состояния через sealed-иерархии и pattern matching.\",\"title\":\"Объектно-ориентированное программирование на Dart\",\"summary\":\"классы, абстракции и интерфейсы (abstract, implements), композиция vs наследование;\\nмиксины и extension для расширения поведения без усложнения иерархий;\\nконструкторы: именованные и factory (делегирование/кэширование);\\nvalue-объекты: корректное ==/hashcode, уместная перегрузка операторов;\\nsealed-классы и pattern matching для безопасного описания состояний ui/домена;\\nпример подключения внешней библиотеки для демонстрации паттерна (без акцента на управление зависимостями).\",\"likeUser\":null,\"homeworks\":[]},{\"id\":124783,\"likeDown\":0,\"likeUp\":0,\"description\":\"настраивать статический анализ и правила качества кода;\\nуправлять зависимостями и версиями, обеспечивать воспроизводимость сборок;\\nпонимать различия jit/aot и собирать артефакты под mobile/web/desktop;\\nдиагностировать ошибки и эффективно работать с ide/cli.\",\"title\":\"Инструментальная поддержка Dart\",\"summary\":\"analyzer и lints: analysis_options.yaml, работа с предупреждениями;\\npub и semver: pubspec.yaml, lock-файл, транзитивные зависимости;\\nсборки и снапшоты: jit/aot, режимы debug/profile/release, таргеты mobile/web/desktop;\\nдиагностика: логирование, чтение стек-трейсов, символикация релизных сборок;\\nконфигурация vs code/android studio, hot reload/hot restart.\",\"likeUser\":null,\"homeworks\":[{\"id\":47510,\"title\":\"Создание интерпретатора математических выражений с поддержкой переменных\",\"likeUp\":0,\"likeDown\":0,\"goal\":\"разработать алгоритм на Dart для интерпретации математических выражений (действия сложения, вычитания, умножения, деления, должны поддерживаться числовые константы и именованные переменные, а также скобки). \",\"likeUser\":null,\"description\":\"$27\"}]}]},{\"id\":21379,\"number\":2,\"likeDown\":0,\"likeUp\":0,\"likeUser\":null,\"title\":\"Flutter Framework\",\"description\":\"В модуле подробно изучаются виджеты разметки, ввода информации и отображения содержания в Flutter, архитектурные подходы к декомпозиции виджетов и выделению бизнес-логики, разбираются алгоритмы определения и обработки жестов, особенности разработки Desktop (для Windows, Linux и MacOS) и Web-приложений.\",\"type\":\"common\",\"lessons\":[{\"id\":124785,\"likeDown\":0,\"likeUp\":0,\"description\":\"понимать принципы реактивной модели: ui = f(состояние), однонаправленный поток данных;\\nдекомпозировать интерфейс на состояние, представление и источники событий;\\nпостроить простой реактивный интерфейс без flutter framework, используя dart:ui/ui.window;\\nучитывать кадровый бюджет (60/120 гц) и избегать блокировки главного потока.\",\"title\":\"Концепция реактивного пользовательского интерфейса, основные графические примитивы ui.Window\",\"summary\":\"сравнение императивного и реактивного подходов; место flutter среди нативных/reactnative/xamarin;\\nформула ui = f(state): единый источник истины, чистые функции рендера, предсказуемые обновления;\\nмини-архитектура: цикл событий → обновление state → перерисовка кадра;\\nнизкоуровневые примитивы dart:ui/ui.window: основы вывода кадра и получения событий;\\nпрактика: мини-пример «список + фильтр» на ui.window с ручным обновлением состояния и экрана.\",\"likeUser\":null,\"homeworks\":[]},{\"id\":124787,\"likeDown\":0,\"likeUp\":0,\"description\":\"понимать архитектуру триады widget–element–renderobject и этапы пайплайна (build → layout → paint → composite);\\nдиагностировать и сокращать лишние перестроения и перерисовки с помощью devtools;\\nкорректно работать с buildcontext и зависимостями (inheritedwidget, theme, mediaquery);\\nприменять ключи (key) для сохранения идентичности элементов и устойчивой работы списков.\",\"title\":\"Анатомия отрисовки виджетов\",\"summary\":\"buildcontext: область видимости, получение зависимостей; локальный контекст через builder;\\nключи: key/valuekey/objectkey/globalkey, реюз элементов, типичные ошибки;\\ndevtools: инспекция деревьев, анализ перестроений; локализация обновлений через repaintboundary;\\nпрактика: фиксация «скачущего» состояния в списке и снижение числа перестроений.\",\"likeUser\":null,\"homeworks\":[{\"id\":47511,\"title\":\"Размещение объектов по вертикали \",\"likeUp\":0,\"likeDown\":0,\"goal\":\"реализовать с использованием dart:ui простой код для размещения объектов по вертикали. \",\"likeUser\":null,\"description\":\"План работы:\\n1. Создать простой менеджер размещения, который будет использовать информацию о размере, полученную от объектов (с учетом родительских ограничений) для размещения вертикально на экране (левый край объектов должен быть расположен по одной линии)\\n2. Написать функцию main с привязкой к ui.window (или WidgetsBinding.instance.platformDispatcher.views.first) для расположения не менее 3-х объектов. В качестве объектов можно использовать как простые примитивы (например, цветной прямоугольник), так и растровые изображения\\n3. Внешними ограничениями для менеджера размещения должны быть (0,0) в качестве минимального размера и размер экрана (WidgetsBinding.instance.platformDispatcher.views.first.physicalSize) как максимальный размер\\n\"}]},{\"id\":124786,\"likeDown\":0,\"likeUp\":0,\"description\":\"различать stateless и stateful и выбирать уместный тип по задаче;\\nприменять методы жизненного цикла state (initstate, didchangedependencies, didupdatewidget, dispose) корректно;\\nуправлять ресурсами и подписками (контроллеры, таймеры, streamsubscription, тикеры) в рамках жизненного цикла;\\nдиагностировать причины лишних перестроений и перерисовок.\",\"title\":\"Понятие и жизненный цикл виджета\",\"summary\":\"конфигурация vs состояние, причины rebuild;\\nправила применения setstate и взаимодействия с асинхронным кодом;\\nпоследовательность методов жизненного цикла и освобождение ресурсов;\\nдиагностика: debug-флаги, performance overlay, repaint rainbow, метки dart:developer.\\nпрактика: поиск утечки/лишних перестроений и исправление.\",\"likeUser\":null,\"homeworks\":[]},{\"id\":124800,\"likeDown\":0,\"likeUp\":0,\"description\":\"уточнить ментальную модель flutter: роли слоёв (widget/element/renderobject) и их взаимодействие;\\nразобрать типичные причины лишних перестроений/перерисовок и способы их предотвращения;\\nотработать диагностику в devtools на реальных кейсах (кадровый бюджет, rebuild/render hotspots);\\nсверить практики работы с buildcontext, ключами и жизненным циклом с best practices.\",\"title\":\"Консультация: что внутри Flutter Framework и почему он устроен так\",\"summary\":\"q\u0026a по прошедшим темам: реактивность, триада деревьев, жизненный цикл;\\nразбор «живых» анти-паттернов: неверный контекст, злоупотребление globalkey, широкая область setstate;\\nдиагностика: performance overlay, repaint rainbow, инспектор деревьев, локализация узких мест;\\nкарта кадра: событие → изменение state → build → layout → paint → composite; чек-лист решений и компромиссов.\",\"likeUser\":null,\"homeworks\":[]},{\"id\":124788,\"likeDown\":0,\"likeUp\":0,\"description\":\"использовать базовые и составные виджеты для отображения содержания (text, image, icon, card, listtile);\\nпроектировать разметку экрана с помощью flex/row/column/stack/flow и понимать boxconstraints;\\nделать адаптивную верстку с layoutbuilder и корректной иерархией отступов/декораций;\\nминимизировать лишние перестроения и перерисовки при построении ui.\",\"title\":\"Базовые виджеты содержания (текст, изображения, пиктограммы). Составные виджеты. Виджеты разметки\",\"summary\":\"обзор виджетов содержания: text (стили), image (fit/кэш), icon; составные: card, listtile;\\nразметка: flex/row/column/stack/flow, sizedbox, align, padding, container/boxdecoration;\\nограничения и однопроходное построение: boxconstraints, ответственность родителя/потомка;\\nадаптивность: layoutbuilder, mediaquery как источник размеров/ориентации;\\nпреобразования изображения: imagefilter (блюр и т.п.);\\nпрактика: сборка экрана по макету с акцентом на читаемую иерархию.\",\"likeUser\":null,\"homeworks\":[]},{\"id\":124789,\"likeDown\":0,\"likeUp\":0,\"description\":\"проектировать прокручиваемые интерфейсы на базе scrollview и семейства sliver-*;\\nправильно выбирать контейнеры прокрутки (singlechildscrollview, customscrollview, nestedscrollview) под задачу;\\nуправлять поведением прокрутки: контроллеры, физика, сохранение положения;\\nснижать jank и лишние перерисовки в длинных списках и сложных лейаутах.\",\"title\":\"Виджеты разметки. Создание прокручиваемых виджетов.\",\"summary\":\"обзор подходов к прокрутке: когда singlechildscrollview, когда listview/builder, когда customscrollview + slivers;\\nсемейство sliver-: sliverappbar, sliverlist/grid, slivertoboxadapter, sliverpersistentheader;\\nвложенная прокрутка: nestedscrollview, координация scrollbar/контента;\\nуправление прокруткой: scrollcontroller, scrollphysics, сохранение позиции (pagestoragekey);\\nоптимизация: lazy-построение, itemextent/prototypeitem, cacheextent, keep-alive, repaintboundary;\\nдиагностика производительности скролла через devtools/performance overlay.\",\"likeUser\":null,\"homeworks\":[{\"id\":47512,\"title\":\"Создание страницы списка рецептов\",\"likeUp\":0,\"likeDown\":0,\"goal\":\"cоздать прокручиваемый виджет со списком рецептов а в соответствии с дизайном в Figma.\",\"likeUser\":null,\"description\":\"$28\"}]},{\"id\":124790,\"likeDown\":0,\"likeUp\":0,\"description\":\"обрабатывать пользовательский ввод и жесты (pointer → gesture, gesture arena);\\nсоздавать формы и поля ввода с базовой валидацией;\\nуправлять фокусом и клавиатурой (переключение полей, скрытие/показ);\\nнастраивать визуальную обратную связь полей (состояния, ошибки, подсказки).\",\"title\":\"Виджеты ввода информации, работа с формами. Часть 1\",\"summary\":\"ввод и жесты: listener, gesturedetector, модель pointer→gesture, конкуренция жестов (gesture arena);\\nполя ввода: textfield / textformfield, контроллеры, форматтеры;\\nформы: form + globalkey, синхронные валидаторы, отображение ошибок (inputdecoration);\\nфокус и клавиатура: focusnode, focusscope, переход по полям, управление клавиатурой;\\nстили и контекст: theme.of, mediaquery для плотности/размеров.\",\"likeUser\":null,\"homeworks\":[]},{\"id\":124791,\"likeDown\":0,\"likeUp\":0,\"description\":\"реализовывать сложные формы: маски ввода, форматтеры, зависимые поля, отправка и сброс;\\nорганизовывать валидацию (в т.ч. отложенную/асинхронную) и отображение ошибок без «дребезга»;\\nуправлять фокусом в сценариях многошагового ввода и навигации по полям;\\nповышать стабильность и отзывчивость форм в реальных сценариях (длинные списки, частые апдейты).\",\"title\":\"Виджеты ввода информации, работа с формами. Часть 2\",\"summary\":\"кастомные formfield и inputformatter, маски/нормализация ввода;\\nзависимые поля и отложенная/асинхронная валидация (debounce, отмена запросов);\\nповедение фокуса и клавиатуры в сложных формах, сценарии отправки/сброса;\\nстабильность ui: отсутствие «дребезга» ошибок, контроль частоты перестроений;\\nпрактика: форма регистрации/оплаты с зависимыми полями и асинхронной проверкой.\",\"likeUser\":null,\"homeworks\":[]},{\"id\":124796,\"likeDown\":0,\"likeUp\":0,\"description\":\"настраивать дизайн-систему через тему и расширения темы;\\nподключать и использовать шрифты, управлять типографикой и масштабированием текста;\\nсоздавать визуальные эффекты: градиенты, тени/свечения, маски и шейдеры;\\nучитывать производительность рендеринга (Impeller/Skia) и избегать shader-jank.\",\"title\":\"Визуальное оформление (расширение темы), шрифты, градиенты и шейдеры, использование возможностей Impeller\",\"summary\":\"тема и дизайн-система: themedata, themeextension, токены (цвет, размеры, радиусы), переопределение в иерархии;\\nтипографика: подключение шрифтов, texttheme, контраст/скейлинг (mediaquery.textscalefactor);\\nэффекты: градиенты, boxdecoration, physicalmodel, imagefilter, shadermask; основы impeller vs skia;\\nпрактика: карточка/экран в корпоративном стиле; проверка читаемости и перерисовок; приём «прогрева» шейдеров/ресурсов.\",\"likeUser\":null,\"homeworks\":[]},{\"id\":124797,\"likeDown\":0,\"likeUp\":0,\"description\":\"сверстать сложный экран/набор экранов по макету с адаптацией под разные устройства;\\nнастроить навигацию со стеком, вложенными маршрутами и модальными диалогами;\\nорганизовать ненавязчивые in-app уведомления (snackbar/banner/dialog) в сценариях ux;\\nпрофилировать сцену и снизить jank на длинных списках и анимированных переходах.\",\"title\":\"Практика по реализации сложной верстки. Навигация и уведомления\",\"summary\":\"практическая сборка экрана(ов) по дизайн-эскизам: иерархия, отступы, типографика, цветовые токены;\\nнавигация: стек экранов, передача аргументов, возврат результата, вложенные навигаторы, модальные окна;\\nуведомления в ui: snackbar, material banner, dialog; правила показа и очередности;\\nоптимизация: слои разметки, slivers для лент/сеток, repaintboundary; проверка кадрового бюджета в devtools.\",\"likeUser\":null,\"homeworks\":[{\"id\":47515,\"title\":\"Создание страницы для добавления нового рецепта\",\"likeUp\":0,\"likeDown\":0,\"goal\":\"cоздать виджет страницы для добавления нового рецепта в соответствии с дизайном в Figma.\\n\",\"likeUser\":null,\"description\":\"$29\"}]},{\"id\":124795,\"likeDown\":0,\"likeUp\":0,\"description\":\"строить слоистую архитектуру (ui / domain / data) с чётким разделением ответственности;\\nсвязывать реактивный ui с источниками данных и событиями без «протечек» зависимостей;\\nвыбирать и применять уместный менеджмент состояния (provider/riverpod/bloc) на уровне фич;\\nзакладывать наблюдаемость, тестируемость и правила качества в архитектурные решения.\",\"title\":\"Лучшие архитектурные практики для создания приложений\",\"summary\":\"слоистая структура: границы модулей, зависимости «вниз», контракты между слоями;\\nсвязка ui↔состояние↔данные: единый источник истины, проброс событий, анти-паттерны (широкий setstate, «божественный» сервис);\\nменеджмент состояния по фичам: критерии выбора (простота, масштаб, тестируемость);\\nнавигация как часть состояния: стек, вложенные графы, модальные сценарии;\\nкачество и поддерживаемость: lints, диагностируемость, точки логирования/метрик.\",\"likeUser\":null,\"homeworks\":[]},{\"id\":124798,\"likeDown\":0,\"likeUp\":0,\"description\":\"сформулировать тему и ключевые пользовательские сценарии проекта;\\nспроектировать базовую архитектуру (слои, навигация, состояние) и критерии готовности;\\nопределить правила качества (линты, диагностика, метрики) и рабочее окружение;\\nразбить работу на инкременты и запланировать вехи (mvp → расширения).\",\"title\":\"Выбор темы и организация проектной работы\",\"summary\":\"выбор темы и целевой аудитории; флоу по макетам/черновым прототипам;\\nархитектурный скелет: ui/domain/data, менеджмент состояния на уровне фич, схема навигации;\\nправила качества: анализатор/линты, точки логирования и метрик, базовый перф-чеклист;\\nорганизация репозитория и сборок; план релизных инкрементов и критерии «готово»;\\nриски и зависимости: что мокируем, какие интеграции переносим на позже.\",\"likeUser\":null,\"homeworks\":[{\"id\":47516,\"title\":\"Курсовой проект\",\"likeUp\":0,\"likeDown\":0,\"goal\":\"Результатом проекта является мобильное приложение с минимально необходимой функциональностью с тестами. \\nСоздание курсового проекта поможет вам в развитии навыка самостоятельной разработки проекта как со стороны визуального представления, так и реализации бизнес-логики, управления состоянием, автоматических тестов и подготовки к публикации\",\"likeUser\":null,\"description\":\"1. Выбрать тему для курсового проекта\\n2. Указать тему через кнопку \\\"Предложить тему\\\"\\n3. Продумать и описать функциональность приложения (должно быть не менее 3 экранов, подключение к сетевому API, можно использовать публичный, локальное хранение, анимации переходов). Также в приложении должно быть предусмотрено взаимодействие с платформенным кодом (например, для определения режима энергосбережения)\\n4. Разработать необходимые виджеты (с использованием тестовых данных)\\n5. Реализовать бизнес-логику (контроллеры, объекты хранения состояния или иные, связанные с выбранным подходом к управлению состоянием)\\n6. Создать тесты для бизнес-логики и виджетов\\n7. Выполнить сборку aab-артефакта и отправить его в проект (в личном кабинете, в чате этого домашнего задания), а также отправить ссылку на github\"}]},{\"id\":124792,\"likeDown\":0,\"likeUp\":0,\"description\":\"собрать и запустить приложение под web, понимать ограничения и отличия от мобильных таргетов;\\nкорректно обрабатывать ввод и жесты в браузере, применять pointerinterceptor в сложных сценах;\\nвыполнять базовую интероперабельность с javascript через dart:js;\\nучитывать требования к производительности и размеру бандла при поставке web-версии.\",\"title\":\"Кроссплатформенная разработка для Web\",\"summary\":\"отличия web-платформы: модель ввода/фокуса, хост-окружение, ограничения пакетов;\\nпрокрутка и жесты в браузере, перекрытия (карты/веб-вью) и pointerinterceptor;\\nинтероп: вызовы js из dart и обратные колбеки (dart:js, структура api);\\nсборка и поставка: flutter build web, базовые настройки роутинга/url-стратегии, размер бандла и ассеты.\",\"likeUser\":null,\"homeworks\":[{\"id\":47513,\"title\":\"Адаптация для браузера \",\"likeUp\":0,\"likeDown\":0,\"goal\":\"адаптировать созданные ранее страницы для работы в браузере.\",\"likeUser\":null,\"description\":\"План работы:\\n1. Использовать OrientationBuilder и при использовании горизонтальной ориентации в формах использовать ограничение ширины в 50%\\n2. Если в коде были использованы методы dart:io, сделать доработки для возможности использования в веб (можно использовать универсальный плагин universal_io)\\n3. Скомпилировать приложение в Web и добавить архив из build/web в github-репозиторий в виде архива\\n\"}]},{\"id\":124793,\"likeDown\":0,\"likeUp\":0,\"description\":\"собрать и запустить приложение под windows/linux/macos, понимать отличия от мобильных таргетов;\\nучитывать оконность: ресайз, многоэкранность, клавиатура/мышь, системные шорткаты и фокус;\\nинтегрироваться с нативной средой: доступ к файловой системе, диалогам, системным сервисам (через ffi/каналы);\\nподготовить артефакты поставки (release-сборка) и проверить производительность/стабильность.\",\"title\":\"Кроссплатформенная разработка для Desktop\",\"summary\":\"особенности desktop-платформ: модель окна, dpi/скейлинг, курсор/клавиатура, фокус;\\nадаптация ui под ресайз и большие экраны; поведение списков/scroll на десктопе;\\nдоступ к ос: файловые диалоги, путь к данным/кэшу, трэи/уведомления (где уместно);\\nинтеграция с нативом: ffi/платформенные каналы, шим-интерфейсы для единого api;\\nсборка и поставка: flutter build \u003cplatform\u003e, проверка производительности/стабильности в devtools.\",\"likeUser\":null,\"homeworks\":[]},{\"id\":124794,\"likeDown\":0,\"likeUp\":0,\"description\":\"понимать модель слоёв и сцены: layout/paint/composite, scene/layer;\\nвыполнять кастомную отрисовку через canvas/custompainter и управлять областью перерисовки;\\nделать оффскрин-рендеринг и кеширование (например, через picturerecorder/toimage);\\nпрофилировать графику и избегать jank (учёт impeller/skia, осторожное savelayer/клиппинг).\",\"title\":\"Низкоуровневое рисование с использованием сцены и возможностей Canvas.\",\"summary\":\"пайплайн рендеринга: build → layout → paint → composite; слои (transform/clip/opacity, platform views), scenebuilder;\\ncanvas basics: система координат, paint, path, draw*; custompainter: paint, shouldrepaint, hittest;\\nлокализация перерисовок: repaintboundary, «дорогие» операции (savelayer, тени, сложный clip);\\nоффскрин и кеш: picturerecorder, toimage, повторное использование растров;\\nдиагностика: performance overlay, repaint rainbow, devtools (frame chart), замеры до/после.\",\"likeUser\":null,\"homeworks\":[{\"id\":47514,\"title\":\"Создание страницы описания рецепта с возможностью переключения отметки избранного и шагов приготовления\",\"likeUp\":0,\"likeDown\":0,\"goal\":\"создать страницу описания кулинарного рецепта с возможностью добавления комментария (разработанный виджет должен запускаться как на мобильном устройстве, так и в web).\",\"likeUser\":null,\"description\":\"Дизайн приложения: [**тут** ](https://www.figma.com/file/alUTMeT3w9XlbNf3orwyFA/Otus-Food-App?node-id=135%3A691) (эскизы с возможностью получить цвета, размеры и отступы) и [**тут**](https://www.figma.com/proto/alUTMeT3w9XlbNf3orwyFA/Otus-Food-App?node-id=102%3A3\u0026scaling=scale-down\u0026page-id=0%3A1\u0026starting-point-node-id=135%3A691) (навигация по приложению)\\n\\nПлан работы:\\n1. Сделать верстку страницы (StatefulWidget) с описанием рецепта\\n2. Реализовать переключение кнопки \\\"\\\"Избранное\\\"\\\" (для создания кнопки использовать возможности canvas с Path и кривыми)\\n3. Расширить менеджер возможностью сохранения комментариев и отметки \\\"\\\"Избранное\\\"\\\"\\n4. Реализовать переключение отметки шагов приготовления (checkbox)\\n5. Возможность добавить комментарий к рецепту (текстовое поле + кнопка + изменение состояния для отображения нового комментария после добавления)\"}]},{\"id\":124799,\"likeDown\":0,\"likeUp\":0,\"description\":\"ответить на вопросы по темам модуля и по дз/проекту;\\nзакрепить разметку, прокрутку, ввод/формы и навигацию на практических задачах;\\nотработать диагностику производительности и устранение лишних перестроений/перерисовок;\\nсформировать индивидуальный план улучшений для проектной работы.\",\"title\":\"Консультация по ДЗ + практика \",\"summary\":\"q\u0026a по реактивной модели, триаде деревьев и жизненному циклу;\\nпрактика: сложная верстка по макету → прокрутка (slivers) → форма с валидацией/фокусом → навигация и модальные;\\nпрофилирование: devtools, performance overlay, repaintboundary, ключи и локализация обновлений;\\nитог: чек-лист качества экрана/фичи и рекомендации по доработкам проекта.\",\"likeUser\":null,\"homeworks\":[]}]},{\"id\":21380,\"number\":3,\"likeDown\":0,\"likeUp\":0,\"likeUser\":null,\"title\":\"Асинхронность и сетевое взаимодействие\",\"description\":\"В модуле разбираются способы генерации исходных текстов по описанию модели данных или сетевого API, библиотеки для локального хранения данных и обмена информацией по сети, а также архитектура приложений для Firebase, Auth0 и сервисов Google.\",\"type\":\"common\",\"lessons\":[{\"id\":124801,\"likeDown\":0,\"likeUp\":0,\"description\":\"понимать модель event loop и различия future/stream, уместно применять async/await;\\nпроектировать асинхронные api с корректной обработкой ошибок, таймаутов и отмены;\\nуправлять подписками (streamsubscription) и жизненным циклом асинхронных операций;\\nсвязывать асинхронные данные с ui через futurebuilder/streambuilder без лишних перестроений.\",\"title\":\"Асинхронность в Dart, потоки и Future\",\"summary\":\"event loop: микрозадачи/кадры; когда future, когда stream; синхронные/асинхронные генераторы;\\nпаттерны async/await: ошибки, try/catch, timeout, повторные попытки (общее);\\nподписки и отмена: streamsubscription.cancel, управление жизненным циклом;\\nбазовые реактивные операторы (rxdart): map, debounce, switchmap — без углубления в архитектуры;\\nui-связка: futurebuilder/streambuilder, корректная работа со snapshot, минимизация rebuild;\\nдиагностика: devtools timeline для поиска блокировок главного потока.\",\"likeUser\":null,\"homeworks\":[]},{\"id\":124802,\"likeDown\":0,\"likeUp\":0,\"description\":\"собрать слой api на основе http-клиента с централизованной обработкой ошибок и ретраев;\\nвыбрать и применить локальное хранилище (kv/объектное/реляционное), настроить кэш;\\nреализовать авторизацию: хранение и обновление токена, безопасное взаимодействие с сессией;\\nсвязать сеть и хранилище с ui асинхронно, избегая блокировок главного потока.\",\"title\":\"Сетевое взаимодействие, хранение данных на устройстве\",\"summary\":\"http-клиенты: dio/http, интерцепторы, логирование, ретраи/backoff, таймауты;\\nдекларативные api: retrofit/chopper, генерация клиентов по моделям из codegen;\\nавторизация: заголовки, refresh-флоу, хранение токена (secure storage);\\nхранилища: sharedpreferences (kv), objectbox (объектное), sqlite/drift (реляционное); миграции, индексы;\\nкэш-стратегии: memory/disk, stale-while-revalidate, offline-first;\\nпрактика: список данных с оффлайн-кэшем и синхронизацией при онлайне.\",\"likeUser\":null,\"homeworks\":[]},{\"id\":124803,\"likeDown\":0,\"likeUp\":0,\"description\":\"проектировать модели данных и контракты api (dto ↔ entity) для устойчивой сериализации;\\nнастраивать кодогенерацию (build_runner) и применять json_serializable/freezed;\\nсоздавать неизменяемые модели с copywith/сравнением по значению и union-типами для ui-состояний;\\nпокрывать модели тестами сериализации и совместимости полей.\",\"title\":\"Использование кодогенерации во Flutter. Сериализация данных в JSON. Создание неизменяемых классов.\",\"summary\":\"контракты данных: dto vs entity, поля/типы, эволюция схем (необязательные поля, дефолты);\\nинструменты: зависимости в pubspec.yaml, build_runner (build/watch), структура part/*.g.dart;\\njson_serializable: аннотации, fromjson/tojson, вложенные объекты, списки/карты, даты/enum;\\nfreezed: неизменяемые классы, copywith, ==/hashcode, union-типы для состояний (loading/success/error);\\nинтеграция наперёд: подготовка моделей под сетевой слой (retrofit/chopper/dio);\\nтесты: round-trip сериализация, миграции полей, регресс на обязательных/необязательных значениях.\",\"likeUser\":null,\"homeworks\":[{\"id\":47517,\"title\":\"Получение информации о рецептах от сервера через http, локальное хранение данных\",\"likeUp\":0,\"likeDown\":0,\"goal\":\"реализовать поддержку получения списка и описания рецептов с сервера;\\nсоздать модель данных и методы для доступа к API системы, сохранить данные для локального использования (с hive).\",\"likeUser\":null,\"description\":\"План работы:\\n\\n1. Подготовить модель данных для локального хранения информации о рецептах для Hive (список рецептов извлекается из коллекции, отдельный объект коллекции - рецепт, внутри него сохраняется информация об ингридиентах/шагах приготовления)\\n2. Реализовать API-запросы для получения списка рецептов, информации о рецепте, изображения (можно использовать Dio или кодогенерацию), добавления нового рецепта и связывания шагов/ингредиентов в соответствии с API (https://app.swaggerhub.com/apis/dzolotov/foodapi/0.2.0)\\n3. При отсутствии Интернета использовать локальные данные вместо API (можно использовать flutter_network_connectivity или аналог)\\n4. Изменить менеджер доступа к информации о рецептах и создания новых рецептов на поддержку сетевых запросов или локального хранилища\\n5. В любом случае сохранить полученные данные в локальную базу данных через Hive и отправить в API (если интернет доступен)\\n\\nАпи для получения рецептов доступно по ссылке - https://foodapi.dzolotov.tech\"}]},{\"id\":124804,\"likeDown\":0,\"likeUp\":0,\"description\":\"подключать облачные сервисы (firebase/auth0) и внешние sdk (maps/webview) с учётом безопасности и производительности;\\nреализовать аутентификацию и push-уведомления, фиче-флаги/remote config и аналитику;\\nизолировать сторонние sdk через адаптеры/интерфейсы для тестируемости и независимости ui;\\nнастроить разрешения и платформенные настройки (android/ios/web) без блокировки ui.\",\"title\":\"Интеграция с внешними API и бессерверные приложения\",\"summary\":\"firebase: auth, firestore/rtdb (в чтение), cloud messaging (push), remote config (фиче-флаги);\\nauth0 / oidc: авторизация, безопасное хранение/обновление токенов;\\nплатформенные виджеты: google maps, webview; ограничения и поведение на android/ios/web;\\nконфигурация платформ: разрешения, манифесты, схемы url/deeplink;\\nадаптеры поверх sdk (интерфейсы, di) → изоляция от ui и возможность моков;\\nпрактика: вход → получение профиля → отображение карты → приём пуша с навигацией по deeplink.\",\"likeUser\":null,\"homeworks\":[]},{\"id\":124805,\"likeDown\":0,\"likeUp\":0,\"description\":\"ответить на вопросы по асинхронности, моделям/кодгену, сети/хранилищу и интеграциям;\\nзакрепить паттерны: future/stream, freezed/json_serializable, dio+retrofit, кэш offline-first;\\nотладить аутентификацию, пуши, remote config, карты/webview; проверить разрешения и deeplink;\\nзафиксировать метрики производительности и стабильности (до/после) по практическому сценарию.\",\"title\":\"Консультация по ДЗ + практика \",\"summary\":\"q\u0026a по темам 3-го модуля; разбор типовых анти-паттернов (блокировка ui, ручной парсинг, «магический» sdk в ui);\\nпрактика: флоу «логин → список из api с кэшем → детали на карте → пуш по deeplink» с профилированием;\\nтестирование: фейки для api/sdk через адаптеры, unit на сериализацию, интеграционный happy-path;\\nитог: чек-лист качества и план доработок.\",\"likeUser\":null,\"homeworks\":[]}]},{\"id\":21381,\"number\":4,\"likeDown\":0,\"likeUp\":0,\"likeUser\":null,\"title\":\"Анимация и мультимедиа в Flutter \",\"description\":\"В модуле рассматриваются вопросы создания визуальной привлекательности приложений (через программные и внешние анимации, игровые элементы) и работы с мультимедиа (камерой, звуком, видео).\",\"type\":\"common\",\"lessons\":[{\"id\":124806,\"likeDown\":0,\"likeUp\":0,\"description\":\"применять неявные анимации (animated* и tweenanimationbuilder) для плавных изменений состояния без контроллеров;\\nиспользовать hero для межэкранных переходов: корректные теги, placeholder/flight-настройки, отсутствие «телепорта»;\\nснижать лишние перестроения при анимациях за счёт грамотной области обновлений и repaintboundary;\\nпрофилировать анимации, удерживая кадровый бюджет, и фиксить jank с помощью devtools.\",\"title\":\"Неявные анимации во Flutter, Hero-анимации\",\"summary\":\"неявные анимации: animatedcontainer/opacity/positioned, animatedswitcher, tweenanimationbuilder — когда уместны;\\nhero: теги, placeholderbuilder, flightshuttlebuilder, transitiononusergestures, типовые ошибки и фиксы;\\nархитектура движения: «анимация как функция состояния», ключи, минимальная область setstate;\\nдиагностика: performance overlay, devtools (ui/raster, rebuild counts), приёмы прогрева шейдеров/ресурсов;\\nпрактика: карточка → экран деталей с animatedswitcher + hero, проверка плавности.\",\"likeUser\":null,\"homeworks\":[]},{\"id\":124807,\"likeDown\":0,\"likeUp\":0,\"description\":\"создавать явные анимации с использованием animationcontroller, tickerprovider, curvedanimation, tween/sequence/staggered;\\nреализовывать переходы между экранами через кастомные pageroute/pagetransitionsbuilder;\\nуправлять ресурсами анимаций (инициализация, dispose, предотвращение утечек тикеров);\\nпрофилировать анимации и удерживать кадровый бюджет без лишних перестроений.\",\"title\":\"Явные анимации во Flutter, переходы между страницами. Управление анимацией. Кривые.\",\"summary\":\"архитектура явных анимаций: animationcontroller, vsync, curvedanimation, tween/sequence/staggered, animatedbuilder;\\nпереходы между экранами: кастомные pageroute, pagetransitionstheme, координация нескольких анимаций;\\nжизненный цикл и безопасность: tickerproviderstatemixin, корректный dispose, обработка прерываний;\\nпроизводительность: минимальная область обновления, repaintboundary, devtools (частота кадров, rebuild/paint);\\nпрактика: экран с координированными анимациями элементов и кастомным переходом.\",\"likeUser\":null,\"homeworks\":[{\"id\":47518,\"title\":\"Создание анимаций перехода между страницами, анимаций для переключения шагов рецепта\",\"likeUp\":0,\"likeDown\":0,\"goal\":\"добавить переход (transition) между страницами по умолчанию, реализовать анимацию при отметке шага рецепта выполненным (использовать Explicit Animation).\",\"likeUser\":null,\"description\":\"План работы:\\n1. добавить переход между страницами по умолчанию FadeTransition\\n2. реализовать анимацию изменения состояния чекбокса и сделать ее программно управляемой (через Explicit Animation), можно использовать два виджета и AnimatedCrossFade\\n3. присоединить запуск анимации в прямом и обратном направлении на событие перехода чекбокса (включение, выключение)\"}]},{\"id\":124808,\"likeDown\":0,\"likeUp\":0,\"description\":\"реализовать простой игровой цикл на базе игрового движка (например, flame): сцена, спрайты, анимации, ввод;\\nнастроить управление ресурсами: загрузка ассетов, аудио, столкновения/физика на уровне фич;\\nинтегрировать 3d/высокопроизводительную графику: подключение webgl-контекста в web и специализированных плагинов;\\nпрофилировать производительность рендеринга и удерживать кадровый бюджет в игровых сценариях.\",\"title\":\"Игровые движки во Flutter. Создание 3D-анимации.\",\"summary\":\"обзор игровых движков для flutter: структура сцены/компонентов, игровой цикл, таймеры, ввод/жесты;\\nспрайты и анимации: атласы, кадры, слои; базовые столкновения и триггеры;\\n3d/ускоренная графика: подходы к интеграции (webgl в web через плагин/htmlelementview; плагины/ffi для нативных платформ);\\nресурсы и ассеты: загрузка/кэширование, аудио, управление жизненным циклом;\\nпроизводительность: фиксированный/адаптивный шаг, оффскрин-рендер, уменьшение перерисовок; devtools/performance overlay.\",\"likeUser\":null,\"homeworks\":[]},{\"id\":124809,\"likeDown\":0,\"likeUp\":0,\"description\":\"подключать и воспроизводить анимации rive/lottie/svg; управлять состояниями и таймлайном;\\nсвязывать анимации с состоянием ui (idle/loading/success/error) и пользовательскими событиями;\\nоптимизировать размер и производительность ассетов (сложность векторной сцены, кэширование, фреймрейт);\\nдиагностировать и устранять jank при воспроизведении анимаций.\",\"title\":\"Интеграция сторонних анимаций во Flutter-приложение.\",\"summary\":\"форматы и выбор: rive (state machine), lottie (json-таймлайн), svg (векторные иконки/иллюстрации);\\nинтеграция: пакеты rive, lottie, flutter_svg; управление воспроизведением, state inputs, циклы/триггеры;\\nсвязка с состоянием: переключение анимаций по состояниям фичи, слушатели событий, debounce для частых апдейтов;\\nоптимизация: упрощение векторных слоёв, спрайты/пререндер, кэширование, repaintboundary;\\nпроизводительность: кадры/cpu/memory в devtools, прогрев шейдеров/ресурсов, контроль размера бандла;\\nпрактика: экран загрузки (lottie) + состояние успех/ошибка (rive) + svg-иконки; проверка плавности.\",\"likeUser\":null,\"homeworks\":[]},{\"id\":124810,\"likeDown\":0,\"likeUp\":0,\"description\":\"получать разрешения и доступ к камере/микрофону; выполнять захват фото/видео и предпросмотр;\\nинтегрировать библиотеки машинного зрения (например, tensorflow lite) для распознавания/классификации на устройстве;\\nреализовывать синтез речи (tts) и обработку медиапотоков в ui;\\nобеспечивать производительность и стабильность медиапайплайна (память, кадры, задержки).\",\"title\":\"Поддержка мультимедиа и камеры во Flutter. Обработка изображений, распознавание и классификация.\",\"summary\":\"разрешения и платформенные настройки (android/ios): запрос, обработка отказов, сценарии фоновой работы;\\nкамера и мультимедиа: захват фото/видео, стрим предпросмотра, базовая обработка кадров, оверлеи;\\nмашинное зрение: загрузка модели, препроцессинг/постпроцессинг, инференс в фоновом потоке, выдача результатов в ui;\\nсинтез речи: инициализация, выбор голоса/языка, события воспроизведения;\\nпроизводительность: управление буферами/памятью, профилирование в devtools.\",\"likeUser\":null,\"homeworks\":[{\"id\":47519,\"title\":\"Добавление снимков с камеры и идентификация объектов на сцене\",\"likeUp\":0,\"likeDown\":0,\"goal\":\"добавить в приложение возможность создать снимок и добавить его к рецепту (в локальную базу данных);\\nдля созданного снимака выполнить идентификацию основного объекта с использованием TensorFlow Lite и MobileNet v1 (или аналогичной модели);\\nдобавить анимации переходов между страницами, стороннюю анимацию пульсации пиктограммы сердца\",\"likeUser\":null,\"description\":\"План работы:\\n1. Подключить внешнюю анимацию для пиктограммы избранного (несколько пульсаций, необходимо реализовать в Rive)\\n2. Реализовать получение изображения с камеры (действие \\\"\\\"добавить изображение в рецепт\\\"\\\"), сохранить его в локальную базу данных и отобразить на странице рецепта галерею (с возможностью полноэкранного просмотра)\\n3. Изображение с камеры/галереи использовать как источник для детектирования объектов. После выбора изображения (создания фотографии или выбора изображения через плагин image_picker) применить модель SSD MobileNet v1 с помощью Tensorflow Lite (плагин tflite_v2 или tflite_flutter) и обнаружить top5 наиболее вероятных объектов (по аналогии с https://www.tensorflow.org/lite/examples/object_detection/overview), названия и вероятности объектов сохранить в изображении (нарисовать поверх)\\n\"}]},{\"id\":124811,\"likeDown\":0,\"likeUp\":0,\"description\":\"локализовать приложение с использованием intl/arb: организация ресурсов, plural/gender, форматирование дат/чисел/валют;\\nобеспечивать доступность: семантическая разметка виджетов, корректная работа экранных дикторов, порядок фокуса и навигации;\\nподдерживать rtl-направление, учитывать textscalefactor и особенности шрифтов/языков;\\nдиагностировать и тестировать доступность с помощью платформенных средств и semantics-инструментов.\",\"title\":\"Интернационализация и доступность\",\"summary\":\"ресурсы локализации: arb, генерация классов intl, plural/gender, выбор и переключение локали;\\nформатирование: даты/числа/валюты, локалезависимые строки и правила;\\nrtl и типографика: поддержка направлений, выбор гарнитур, масштабы текста (mediaquery.textscalefactor);\\nдоступность: semantics (roles/labels/hints/actions), размер hit-таргетов, контраст, порядок фокуса (focustraversalgroup/order);\\nдиагностика и проверка: talkback/voiceover, semantics debugger, проверка с разными локалями и масштабом текста, базовые тесты на семантику.\",\"likeUser\":null,\"homeworks\":[]},{\"id\":124812,\"likeDown\":0,\"likeUp\":0,\"description\":\"разобрать вопросы по анимациям, i18n/a11y, мультимедиа и игровым сценам;\\nзакрепить паттерны: неявные/явные анимации, hero и кастомные переходы;\\nотработать интеграцию rive/lottie/svg и проверку доступности/локализации;\\nпрофилировать и оптимизировать сцену: устранить jank, сократить лишние перерисовки.\",\"title\":\"Консультация по ДЗ + практика \",\"summary\":\"q\u0026a по темам модуля; разбор анти-паттернов (лишние rebuild/paint, тяжёлые шейдеры);\\nпрактика: animated* + hero на реальном макете; кастомный pageroute;\\nинтеграция rive/lottie/svg: управление состояниями, контроль размера ассетов;\\ni18n/a11y: arb/intl, plural/gender, semantics-проверки (talkback/voiceover);\\nмультимедиа: камера/tts, разрешения и стабильность пайплайна;\\nпрофилирование в devtools: кадры ui/raster, repaintboundary, фикс shader-jank.\",\"likeUser\":null,\"homeworks\":[]}]},{\"id\":21382,\"number\":5,\"likeDown\":0,\"likeUp\":0,\"likeUser\":null,\"title\":\"Архитектура приложений, управление состоянием и навигация\",\"description\":\"Модуль полностью посвящен рассмотрению архитектурных подходов к управлению состоянием приложений и реализации навигации между страницами (подходы Navigator и Router).\",\"type\":\"common\",\"lessons\":[{\"id\":124813,\"likeDown\":0,\"likeUp\":0,\"description\":\"понимать модель контекста и распространения состояния через inheritedwidget; \\nприменять provider/riverpod для хранения и чтения состояния на уровне фич; \\nснижать лишние перестроения с помощью consumer/selector и точечного watch/read;\\nтестировать состояние через переопределения провайдеров и фейковые реализации.\",\"title\":\"Inherited-виджеты. Библиотеки Provider и Riverpod.\",\"summary\":\"inheritedwidget: контракт, область видимости, updateshouldnotify, типичные ошибки с buildcontext;\\nprovider: changenotifier/valuenotifier, паттерны context.read/watch/select, consumer/selector, разделение деревьев;\\nriverpod: provider/stateprovider/statenotifierprovider и asyncvalue; providerscope, overrides для тестов и конфигов;\\nпроизводительность: локализация перестроений, разбиение по поддеревьям, инспекция в devtools;\\nтестирование: переопределение провайдеров, фейки репозиториев/сервисов, unit/widget-тесты.\",\"likeUser\":null,\"homeworks\":[]},{\"id\":124814,\"likeDown\":0,\"likeUp\":0,\"description\":\"строить слоистую архитектуру (ui / domain / data) с чёткими границами и направлением зависимостей;\\nвнедрять зависимости через контейнер (get_it) и/или провайдеры (provider/riverpod), управлять жизненным циклом (singleton/lazy/factory);\\nизолировать платформенный и внешние sdk через интерфейсы/адаптеры для тестируемости и замены реализаций;\\nорганизовывать «проводку» приложения: точка входа, окружения (dev/stage/prod), конфигурация на старте;\",\"title\":\"Clean-архитектура. Реализация инъекции зависимостей (getit, Provider/Riverpod)\",\"summary\":\"лои и контракты: use case ↔ repository, зависимости «вниз», интерфейсы «вверх»;\\ndi: регистрация в get_it (singleton/lazy/factory), scopes; провайдеры как di на уровне ui;\\nкомпозиция: инициализация зависимостей в main(), передача в фичи/роуты, конфиг по окружениям;\\nизоляция sdk/платформы: адаптеры/интерфейсы, подмена в тестах;\\nпрактика: сборка мини-проекта с одним use case, репозиторием и подменяемым api/кэшем.\",\"likeUser\":null,\"homeworks\":[{\"id\":47520,\"title\":\"Многоязычный интерфейс и принципы чистой архитектуры \",\"likeUp\":0,\"likeDown\":0,\"goal\":\"обеспечить возможность многоязычного интерфейса, организовать исходные тексты в соответствии с принципами чистой архитектуры. \",\"likeUser\":null,\"description\":\"План работы: \\n\\n1. Добавить библиотеку (любую из доступных на pub.dev) для поддержки переключения языков и перенести все строковые константы в нее. \\n2. Предусмотрить возможность переключения языка в приложении (строки на другом языке создавать не требуется)\\n3. Подготовить структуру проекта в соответствии с разделением на логические слои чистой архитектуры (это будет необходимо для следующего домашнего задания). \"}]},{\"id\":124815,\"likeDown\":0,\"likeUp\":0,\"description\":\"реализовывать управление состоянием по паттерну redux: store, state, action, reducer;\\nорганизовывать побочные эффекты через middleware (thunk/epics) с обработкой ошибок и ретраев;\\nинтегрировать redux в ui (storeprovider/storeconnector) и минимизировать перестроения;\\nприменять hooks (flutter_hooks, базовые use*) для локального состояния и работы с жизненным циклом виджета;\",\"title\":\"Redux для управления состоянием, hook\",\"summary\":\"ядро redux: неизменяемость, редьюсеры как чистые функции, actions, селекторы/мемоизация;\\nmiddleware: логирование, асинхронщина (thunk/epics на rxdart), обработка ошибок;\\nинтеграция с flutter: storeprovider/storeconnector, distinct, shouldrebuild;\\nhooks: usestate/useeffect/usememo/usestream/useanimationcontroller, паттерны и типичные ошибки;\\nтестирование: юнит-тесты редьюсеров и middleware, фейки api.\",\"likeUser\":null,\"homeworks\":[]},{\"id\":124817,\"likeDown\":0,\"likeUp\":0,\"description\":\"управлять состоянием через MobX: observable, action, computed, сторы как единицы логики;\\nиспользовать реакции (autorun, reaction, when) и контролировать их жизненный цикл;\\nинтегрировать MobX в UI через Observer, добиваясь точечных перестроений;\\nорганизовывать кодогенерацию (build_runner) и тестирование сторов.\\n\",\"title\":\"Архитектура MobX\",\"summary\":\"концепции MobX: наблюдаемые поля, экшены, вычисляемые значения; гранулярность реактивности;\\nинтеграция: flutter_mobx и Observer, разделение сторов по фичам, DI;\\nреакции: autorun/reaction/when, управление подписками и очисткой;\\nасинхронные экшены, обработка ошибок, согласование с навигацией/эффектами;\\nкодогенерация: аннотации и build_runner; тестирование сторов и computed-полей.\\n\",\"likeUser\":null,\"homeworks\":[{\"id\":47521,\"title\":\"Flutter. State management. Внедряем один из ранее рассмотренных механизмов управления состоянием приложения\",\"likeUp\":0,\"likeDown\":0,\"goal\":\"заменить управление состоянием виджетов (StatefulWidget, Provider, ChangeNotifier/ValueListenable) в приложении Otus Food на один из рассмотренных ранее state management-подходов (Redux, BLoC, MobX)\",\"likeUser\":null,\"description\":\"План работы:\\n\\n1. Выбрать понравившийся state management подход из списка https://docs.flutter.dev/development/data-and-backend/state-mgmt/options и обосновать свой выбор комментарием к ДЗ (не используем GetX ни в кое случае)\\n2. Внести изменения в код приложения, выделив логику для получения состояния, используя один из ранее рассмотренных подходов к state management, заменить им StatefulWidget.\\n3. Внести изменения в экран рецепта для управления состоянием isFavourite текущей модели рецепта. \\n4. Отметку избранного рецепта необходимо показывать и на экране списка рецептов.\\n5. Добавить сохранение получаемых данных с сервера или локального хранилища (Hive) в выбранный state менеджер.\"}]},{\"id\":124816,\"likeDown\":0,\"likeUp\":0,\"description\":\"реализовывать бизнес-логику во bloc/cubit с однонаправленным потоком данных и предсказуемыми состояниями;\\nинтегрировать состояние в ui через blocprovider/blocbuilder/bloclistener/blocselector с минимальными перестроениями;\\nобрабатывать побочные эффекты, ошибки и конкуренцию событий (debounce/switchmap, transformeevents, bloc_concurrency);\\nорганизовывать тестирование блоков/кубитов и наблюдаемость (логирование переходов, blocobserver).\",\"title\":\"Архитектура MWWM и Bloc\",\"summary\":\"модель: bloc (event→state) vs cubit (методы→state), границы ответственности, место в слоях (ui/domain/data);\\nинтеграция: repositoryprovider/blocprovider, композиция multi*, blocbuilder/listener/consumer, blocselector для точечных обновлений;\\nпобочные эффекты: bloclistener для навигации/уведомлений; обработка ошибок; конкуренция (droppable/restartable) и transformeevents (debounce/throttle/switchmap);\\nсохранение/восстановление: hydrated_bloc (опционально).\",\"likeUser\":null,\"homeworks\":[]},{\"id\":124818,\"likeDown\":0,\"likeUp\":0,\"description\":\"проектировать навигацию как часть состояния приложения (единый источник истины, восстановление стека);\\nреализовывать вложенные графы: табы с собственными стеками, модальные экраны и диалоги;\\nнастраивать deeplink/url-навигацию (в т.ч. для web), обрабатывать системную «назад»;\\nсинхронизировать навигацию с менеджментом состояния (provider/riverpod/bloc) и правилами доступа (route-guards);\",\"title\":\"Модель навигации как управление состоянием. Navigator 2.0\",\"summary\":\"модель навигации: стек, модальные, возврат результата; отличие navigator 1.0 и 2.0;\\nnavigator 2.0: routeinformationparser, routerdelegate, backbuttondispatcher; обзор вспомогательных роутеров (go_router, auto_route);\\nвложенная навигация: независимые стеки для табов, вложенные навигаторы, координация с состоянием фич;\\ndeeplink и web-url: схема/host/путь, генерация ссылок, восстановление состояния, обработка системной «назад»/willpopscope;\\nсинхронизация с состоянием: route-guards, редиректы, реакция на auth/feature-flags.\",\"likeUser\":null,\"homeworks\":[{\"id\":47522,\"title\":\"Реализация навигации в приложении на основе состояния\",\"likeUp\":0,\"likeDown\":0,\"goal\":\"создать страницу профиля;\\nдобавить регистрацию/авторизацию и переходы между экранами с использованием любого архитектурного подхода;\\nреализовать список избранных рецептов с применением состояния приложения\",\"likeUser\":null,\"description\":\"План работы:\\n\\n1. Перевести навигацию приложения на использование Navigator 2.0 (Router), можно использовать кодогенерацию (autoroute)\\n2. Добавить виджет регистрации-аутентификации и соответствующие обращения к API (работает только при наличии сети Интернет, при отсутствии подключения нужно выдавать ошибку)\\n3. Реализовать вкладку избранных рецептов и присоединить управление состоянием через кнопку \\\"\\\"избранное\\\"\\\"\\n4. Сделать верстку страницы профиля (по информации из логина)\\n5. Проверить корректность обновления адреса в браузере при использовании Web-версии приложения\\n \"}]}]},{\"id\":21383,\"number\":6,\"likeDown\":0,\"likeUp\":0,\"likeUser\":null,\"title\":\"Flutter Engine и взаимодействие с платформой.\",\"description\":\"В модуле рассматривается архитектура движка Flutter, способы вызова методов и обмена сообщениями с нативным кодом, а также общие подходы к доработке движка и сборке под разные аппаратные платформы.\",\"type\":\"common\",\"lessons\":[{\"id\":124821,\"likeDown\":0,\"likeUp\":0,\"description\":\"проектировать контракты обмена между flutter и нативной платформой (hostapi/flutterapi) и генерировать код через pigeon;\\nиспользовать methodchannel/eventchannel/basicmessagechannel и выбирать подходящий канал под задачу;\\nинтегрировать нативные зависимости и ресурсы (native assets), учитывать потоки/жизненный цикл и не блокировать ui;\\nобрабатывать ошибки/исключения и типобезопасно сериализовать данные между платформами;\",\"title\":\"Взаимодействие с платформенным кодом (platform channels, Pigeon, native assets)\",\"summary\":\"каналы сообщений: модели method/event/basicmessagechannel, кодеки, двунаправленный обмен, platformexception;\\npigeon: описание интерфейсов (hostapi/flutterapi), типы/nullable, генерация swift/kotlin/dart, версия интерфейса;\\nпотоки и жизненный цикл: где исполняется код на android/ios, учёт main/background, отмена и повторные вызовы;\\nnative assets: подключение нативных библиотек/ресурсов, упаковка и доступ из dart;\\nразрешения/манифесты и конфиг платформы (android/ios), логирование и трассировка вызовов;\\nпрактика: адаптер над платформенным sdk (через pigeon), обработка ошибок, простые тесты/моки.\",\"likeUser\":null,\"homeworks\":[]},{\"id\":124820,\"likeDown\":0,\"likeUp\":0,\"description\":\"встраивать нативные компоненты в flutter-дерево (androidview/uikitview/htmlelementview) и управлять их жизненным циклом;\\nобрабатывать системные события: applifecyclestate, системная «назад», разрешения, deeplink/url;\\nсогласовывать ввод/фокус/клавиатуру и доступность между нативным view и flutter-ui;\\nобеспечивать производительность: правильная композиция слоёв, отсутствие лишних перерисовок и блокировок ui-потока.\",\"title\":\"Использование нативных Views из Android / iOS, обработка системных событий\",\"summary\":\"platform views: androidview, uikitview, platformviewlink/htmlelementview; размещение, ограничения, z-order/прозрачность, клиппинг/тени;\\nкомпозиция: виртуальная/гибридная (android), особенности производительности; repaintboundary, минимизация overdraw;\\nввод и доступность: фокус/клавиатура, жесты и конкуренция, мост semantics;\\nсистемные события: widgetsbindingobserver и applifecyclestate, системная кнопка «назад», разрешения, ориентация/ротация, deeplink/url-схемы;\\nсвязь и ресурсы: каналы событий, освобождение/повторное создание нативных view, диагностика (devtools, платформенные логи).\",\"likeUser\":null,\"homeworks\":[]},{\"id\":124819,\"likeDown\":0,\"likeUp\":0,\"description\":\"понимать слои Flutter (Framework ↔ Engine ↔ Platform) и жизненный цикл приложения;\\nразобрать Binding’и (Widgets/Rendering/Services) и роль изолятов, кадра и vsync;\\nпонять модели встраивания (Add-to-App): когда и как подключать Flutter к нативному приложению;\\nучитывать производительность и память при запуске/подогреве движка, многодвижковых сценариях.\\n\",\"title\":\"Устройство Flutter Engine, Add-to-App\",\"summary\":\"карта слоёв: Framework (Dart) → Engine (rasterizer, текст/шрифты, изоляты) → Platform (Android/iOS);\\nжизненный цикл: запуск изолята, Binding’и, pump кадра, обработка событий. Debug/profile/release; JIT/AOT;\\nAdd-to-App: варианты встраивания (Android: FlutterActivity/Fragment/View, iOS: FlutterViewController), «подогрев» и повторное использование Engine;\\nобмен данными и маршрутизация между нативной частью и Flutter (высокоуровневый обзор; детали каналов — в след. занятии);\\nпрактика: минимальный модуль Flutter, интеграция в нативный проект, проверка старта/возврата и профилика первых кадров.\\n\",\"likeUser\":null,\"homeworks\":[{\"id\":47523,\"title\":\"Взаимодействие с нативной платформой. Получение информации от внешнего устройства через bluetooth\",\"likeUp\":0,\"likeDown\":0,\"goal\":\"создать плагин и добавить возможность сканирования доступных Bluetooth LE устройств\",\"likeUser\":null,\"description\":\"План работы:\\n1. Запросить информацию о доступных Bluetooth Low Energy через плагин (для разработки можно использовать материалы статьи https://punchthrough.com/android-ble-guide/)\\n2. Отобразить список доступных устройств на странице профиля\\n\"}]},{\"id\":124822,\"likeDown\":0,\"likeUp\":0,\"description\":\"понимать роль embedder и минимальный контракт платформы (окно/поверхность, ввод, таймеры, изоляты);\\nнастраивать рендер-бэкенд (opengl/metal/vulkan) и пайплайн запуска на нестандартной платформе;\\nинтегрировать системные сервисы (ввод, окно, файлы/ассеты, шрифты) и обмен данными с приложением;\\nдиагностировать производительность/стабильность и управлять ресурсами на уровне платформы.\",\"title\":\"Flutter Embedder, запуск приложения на произвольном оборудовании\",\"summary\":\"архитектура embedder: shell, движок, изолят, event loop; минимальный api платформы (create surface, present, input);\\nрендеринг: impeller/skia; выбор и инициализация бэкенда (opengl/metal/vulkan), форматы поверхностей, vsync;\\nсистемные интеграции: окно/вью, ввод (pointer/keyboard), таймеры, файловая система и assets, менеджер шрифтов;\\nжизненный цикл: запуск/остановка изолята, фон/foreground, обработка ошибок;\\nпрактика: черновой embedder для desktop/embedded linux (glfw/wayland) и проверка кадра/ввода;\\nдиагностика: логирование на стороне embedder, трейс фреймов, измерение времени рендера и jank.\",\"likeUser\":null,\"homeworks\":[]},{\"id\":124823,\"likeDown\":0,\"likeUp\":0,\"description\":\"разобрать вопросы по add-to-app, каналам (pigeon), platform views и embedder;\\nотработать проектирование контрактов обмена (hostapi/flutterapi) и обработку системных событий;\\nулучшить производительность: снизить блокировки ui-потока и лишние перерисовки;\\nзафиксировать чек-лист качества интеграций и план доработок по проекту.\",\"title\":\"Консультация по ДЗ + практика \",\"summary\":\"q\u0026a по темам модуля: жизненный цикл engine, binding’и, изоляты, кадр/vsync;\\nпрактика: небольшой мост через pigeon (ошибки, таймауты), обработка applifecyclestate и deeplink;\\nplatform views: размещение androidview/uikitview, ввод/фокус, освобождение ресурсов;\\nперфоманс: devtools (timeline/ui/raster), локализация перерисовок (repaintboundary), неблокирующие вызовы;\\nитог: чек-лист интеграций (разрешения, манифесты, трассировка, логирование) и действия по проекту.\",\"likeUser\":null,\"homeworks\":[]}]},{\"id\":21384,\"number\":7,\"likeDown\":0,\"likeUp\":0,\"likeUser\":null,\"title\":\"Оптимизация производительности\",\"description\":\"В модуле рассматриваются вопросы анализа производительности, лучшие практики по оптимизации виджетов и алгоритмов приложения, выделению сложной логики в отдельный поток выполнения.\",\"type\":\"common\",\"lessons\":[{\"id\":124824,\"likeDown\":0,\"likeUp\":0,\"description\":\"читать devtools (timeline/cpu profile/frame chart) и находить узкие места ui/raster/io;\\nинтерпретировать кадр: build/layout/paint/compostite и p50/p95 времени кадра;\\nснижать jank: локализовать перерисовки, уменьшать аллокации, избегать блокировок ui-потока;\\nдокументировать находки и фиксировать регрессии метриками.\",\"title\":\"Профилирование потоков приложения\",\"summary\":\"модель потоков: ui vs raster, где возникают «пробки»;\\ndevtools: timeline, rebuild/render counts, shader warmup, cpu/memory;\\nтиповые причины jank: тяжёлые build/paint, ненужные setstate, большие изображения, синхронный io;\\nприёмы: repaintboundary, lazy-списки, кэш/resize изображений, дебаунс событий, прогрев шейдеров;\\nпрактика: до/после с метриками (скриншоты/числа).\",\"likeUser\":null,\"homeworks\":[]},{\"id\":124825,\"likeDown\":0,\"likeUp\":0,\"description\":\"выносить тяжёлые вычисления из главного изолята: isolate.spawn, compute;\\nпередавать данные без лишних копий (transferabletypeddata), проектировать протокол обмена;\\nкоординировать результаты с ui, учитывая жизненный цикл и отмену;\\nпрофилировать влияние изолятов на cpu/память и подтверждать эффект метриками.\",\"title\":\"Изоляты для вычислительных задач\",\"summary\":\"изоляты: модель памяти/сообщений, когда compute, когда явный isolate;\\nобмен данными: сериализация, sendport/receiveport, transferabletypeddata;\\nшаблоны задач: парсинг json, компрессия, обработка изображений, крипто/хэш, агрегации;\\nсинхронизация с ui: отмена, обработка ошибок, сохранение порядка результатов;\\nпрактика: перенос тяжёлой операции в изолят, сравнение времени кадра и cpu до/после.\",\"likeUser\":null,\"homeworks\":[{\"id\":47524,\"title\":\"Перенос сложной вычислительной задачи (классификация объекта на изображении) в отдельный изолят\",\"likeUp\":0,\"likeDown\":0,\"goal\":\"перенести в отдельный поток задачу распознавания образов изображений. \",\"likeUser\":null,\"description\":\"План работы:\\n1. Перенести код распознавания групп объектов в отдельный изолят\\n2. Обеспечить передачу данных между основным потоком и изолятом (изображение и модель в виде набора байтов через порт, результат распознавания сериализуется как json)\\n3. В коде распознавания объектов на изображении (при создании снимка) перейти на использование изолята\"}]}]},{\"id\":21385,\"number\":8,\"likeDown\":0,\"likeUp\":0,\"likeUser\":null,\"title\":\"Тестирование и публикация\",\"description\":\"В модуле будут рассмотрены вопросы создания автоматических тестов для алгоритмов, виджетов и приложения в целом, подготовки библиотек и приложений к публикации на pub.dev и в магазинах приложений Google Play Store и Apple Store, особенности публикации для Huawei.\",\"type\":\"common\",\"lessons\":[{\"id\":124826,\"likeDown\":0,\"likeUp\":0,\"description\":\"писать модульные тесты для бизнес-логики и утилит;\\nразрабатывать виджет-тесты с изоляцией зависимостей и контролем buildcontext;\\nнастраивать golden-тесты для визуальной регрессии и стабильных снапшотов;\\nорганизовывать тестовые двойники (mocks/fakes) и фикстуры данных.\",\"title\":\"Unit-тестирование и виджет-тесты\",\"summary\":\"инструменты: flutter_test, test, mockito/fake_async, золотые эталоны;\\nпаттерны виджет-тестов: widgettester, pump/pumpandsettle, управление временем/анимациями;\\ngolden: генерация эталонов, допуски различий, устойчивость к шрифтам/платформе;\\nизоляция зависимостей: провайдеры/di-override, фейковые репозитории;\\nотчётность: покрытие, структура каталогов, быстрый локальный прогон.\",\"likeUser\":null,\"homeworks\":[]},{\"id\":124827,\"likeDown\":0,\"likeUp\":0,\"description\":\"писать интеграционные тесты end-to-end на integration_test;\\nзапускать тесты на эмуляторах/реальных устройствах и собирать артефакты прогона;\\nнастраивать ci/cd для сборки, анализа, тестов и публикации артефактов;\\nуправлять нестабильными тестами (flaky), параллелизацией и временем выполнения;\",\"title\":\"Интеграционные тесты\",\"summary\":\"integration_test: структура, сценарии, взаимодействие с приложением;\\nокружения: конфиги, мок-бэкенд/стаб, тестовые данные;\\nci/cd: github actions/gitlab ci (кэш, matrix, таймауты, отчёты junit), хранение скриншотов/видео;\\nпокрытие/качество: flutter analyze, форматирование, сбор метрик;\\nстратегии борьбы с flaky: ожидания, ретраи, таймауты, изоляция зависимостей.\",\"likeUser\":null,\"homeworks\":[{\"id\":47525,\"title\":\"Разработка автоматических тестов для приложения (тестирование логики и виджетов)\",\"likeUp\":0,\"likeDown\":0,\"goal\":\"разработать автоматические тесты для приложения. \",\"likeUser\":null,\"description\":\"План работы:\\n1. Подготовить юнит-тест для менеджера управления списком рецептов (проверить добавление/получение рецепта), использовать mockito/mocktail для подмены слоя доступа к данным\\n2. Создать тестирование виджетов для страницы информации о рецепте (переключение \\\"\\\"избранное\\\"\\\", шагов приготовления рецепта, отображение всех виджетов)\\n3. Сделать golden-тест для карточки рецепта (виджет, который используется в списке рецептов)\\n4. Сделать интеграционный тест (просмотр списка рецептов, переход в рецепт, проверить что открывается страница с информацией о рецепте, а также возможность использование кнопки \\\"\\\"избранное\\\"\\\")\"}]},{\"id\":124828,\"likeDown\":0,\"likeUp\":0,\"description\":\"структурировать пакет: lib/src, публичный api, примеры, документация (dartdoc);\\nобеспечить качество пакета: линты, тесты, совместимость версий, score и поддержка;\\nприменять семантическое версионирование и управлять зависимостями;\\nпубликовать пакет на pub.dev и настраивать выпуск/поддержку в ci.\",\"title\":\"Создание собственных компонентов, публикация на pub.dev\",\"summary\":\"структура пакета и публичный api, примеры (example/), readme/changelog/license;\\nкачество: analysis_options.yaml, тесты (unit/widget/golden при необходимости), совместимость;\\nsemver и зависимости: диапазоны версий, dependency_override, минимальные sdk-ограничения;\\nпубликация: токены, проверка score (documentation, popularity, health), приватные реестры;\\nci для пакета: анализ/тесты/паблиш (dry-run), авто-релизы по тэгам.\",\"likeUser\":null,\"homeworks\":[]},{\"id\":124829,\"likeDown\":0,\"likeUp\":0,\"description\":\"интегрировать сбор ошибок и крашей (crashlytics/sentry) и настраивать алёрты;\\nвыполнять символикацию релизных сборок (--split-debug-info, obfuscation) и связывать краши с версиями;\\nготовить релиз: подпись, версии/билд-номера, приватность/разрешения, staged-rollout;\\nпубликовать в app store/google play и мониторить качество после релиза.\",\"title\":\"Сбор информации о функционировании приложения, публикация в магазины\",\"summary\":\"телеметрия: crashlytics/sentry, breadcrumbs, пользовательские метрики/трейсы;\\nсимволикация: маппинги символьных таблиц, workflow хранения артефактов;\\nрелизная инженерия: flutter build (release), подпись, версии, конфиг магазинов;\\nмагазины: app store connect/play console, треки/роллауты, политики приватности;\\nмониторинг пост-релиза: каналы обратной связи, алёрты, регресс-чек.\",\"likeUser\":null,\"homeworks\":[{\"id\":47526,\"title\":\"Подготовка приложения к публикации в магазине\",\"likeUp\":0,\"likeDown\":0,\"goal\":\"подготовить aab-файл для публикации приложения в магазин Google Play Store.\",\"likeUser\":null,\"description\":\"План работы:\\n1. Определить необходимые метаданные в pubspec.yaml (название приложения, версия)\\n2. Установить ключи публикации (можно использовать отладочные ключи при отсутствии учетной записи разработчика) в build.gradle\\n3. Выполнить сборку артефакта aab и добавить его к проекту\"}]}]},{\"id\":21386,\"number\":9,\"likeDown\":0,\"likeUp\":0,\"likeUser\":null,\"title\":\"Курсовой проект\",\"description\":\"Завершающий модуль с самостоятельной разработкой функционального приложения с поддержкой сетевого взаимодействия, изолятов, платформенного кода, разметки страниц с использованием анимации и навигации.\",\"type\":\"project\",\"lessons\":[{\"id\":124830,\"likeDown\":0,\"likeUp\":0,\"description\":\"разобрать вопросы по архитектуре, состоянию, интеграциям и перформансу;\\nуточнить объём проекта, приоритеты фич и критерии готовности (mvp → релиз);\\nпровести ревью кода/макетов и составить чек-лист качества и рисков;\\nзафиксировать план доработок и метрики, по которым будем измерять прогресс.\",\"title\":\"Консультация по проектам и домашним заданиям\",\"summary\":\"q\u0026a по проектам; ревью слоёв ui/domain/data и связей;\\nразбор интеграций (api/sdk), навигации, форм и хранения;\\nперфоманс-чек: devtools, кадры ui/raster, локализация перерисовок;\\nплан: инкременты, метрики (краши/время кадра), распределение задач.\",\"likeUser\":null,\"homeworks\":[]},{\"id\":124831,\"likeDown\":0,\"likeUp\":0,\"description\":\"представить решение: сценарии, архитектуру, ключевые технические решения;\\nпродемонстрировать стабильность и производительность (метрики/трейсы/тесты);\\nответить на вопросы комиссии и получить рекомендации по улучшениям;\\nзафиксировать следующую итерацию развития проекта.\",\"title\":\"Защита проектных работ\",\"summary\":\"питч: цель, пользователи, флоу; демо основных сценариев;\\nтехнический разбор: архитектура, состояние, навигация, интеграции, данные;\\nкачество: unit/widget/golden/integration-тесты, ci/cd, метрики производительности и стабильности;\\nq\u0026a и рекомендации; список улучшений.\",\"likeUser\":null,\"homeworks\":[]},{\"id\":124832,\"likeDown\":0,\"likeUp\":0,\"description\":\"подвести итоги по компетенциям и определить зоны роста для следующего уровня;\\nразобрать пути трудоустройства/развития (позиции, требования, портфолио);\\nзафиксировать план дальнейшей практики: задачи, open source, публикации/релизы;\\nобсудить процедуры получения сертификата и взаимодействие после курса.\",\"title\":\"Подведение итогов курса\",\"summary\":\"сверка чек-листа компетенций и самооценка по проекту;\\nкарта развития: какие фичи/технологии усилить (архитектура, тесты, перфоманс, интеграции);\\nпортфолио: репозиторий, демо, метрики качества; публикации (магазины, pub.dev) по необходимости;\\nорганизационные вопросы: сертификат, каналы общения, вакансии/рынок.\",\"likeUser\":null,\"homeworks\":[]}]}]},\"error\":null}},{\"text\":\"\u003ch2\u003eВыпускной проект\u003c/h2\u003e\\n\u003cbr /\u003e\\n\u003cp\u003eНа протяжении всего курса вы будете работать над собственным проектом. Его разработка нужна для окончательного закрепления знаний, которые были получены в рамках пройденных занятий. При успешном выполнении он станет образцом кода, который Flutter-разработчик сможет показывать будущим работодателям.\u003c/p\u003e\",\"imageUrl\":null,\"id\":5890,\"type\":\"SPECIALIZATION_PROJECT_WORK\"},{\"id\":5891,\"type\":\"teachers\",\"teachers\":[{\"id\":2231,\"fullName\":\"Дмитрий Золотов\",\"company\":\"Yandex\",\"companyRole\":\"Flutter+Kotlin Developer\",\"photoUrl\":\"https://cdn.otus.ru/media/public/36/df/36df01a954304f0cbeee554225ff1680.jpeg\",\"description\":\"$2a\",\"years\":6,\"lessonsCount\":845,\"studentsCount\":5229,\"courses\":[\"Highload Architect\",\"DevOps практики и инструменты\",\"Инфраструктурная платформа на основе Kubernetes\",\"QA Engineer. Basic\",\"Python QA Engineer\",\"Kotlin QA Engineer\",\"Администрирование PostgreSQL. Продвинутый уровень\",\"Flutter Mobile Developer\",\"DevOps Advanced\",\"Безопасность в Kubernetes\",\"GA-Highload Architect\",\"Системный дизайн для разработчиков - Авиасейлс\"],\"shortDescription\":\"$undefined\",\"directions\":\"$undefined\",\"yearDevelopment\":\"$undefined\",\"scheduleGroupRole\":\"superteacher\"},{\"id\":9848,\"fullName\":\"Руслан Цицер\",\"company\":null,\"companyRole\":null,\"photoUrl\":\"https://cdn.otus.ru/media/public/18/ce/18ce8d7dafaf40cb99eda2d5b03e1a39.png\",\"description\":\"Занимаюсь разработкой на\\r\\nFlutter с 2020 года\\r\\n\\r\\nЗа это время успел поработать как в больших командах, так и в стартапах, где был единственным разработчиком\\r\\n\\r\\nОдно из самых успешных приложений, написанных полностью мною с нуля имеет более 20 млн скачиваний и DAU \u003e 100 тыс\\r\\n\\r\\nС недавнего времени веду свой ютуб канал, на котором разбираю углубленные вопросы, связанные с разработкой Flutter приложений:\\r\\n- Профилирование и оптимизация\\r\\n- Архитектура приложения\\r\\n- Подходы к решению распространенных задач и тд\\r\\n\\r\\nhttps://youtube.com/@ruslan_tsitser\\r\\n\\r\\nТакже занимаюсь менторством\\r\\nПомогаю ребятам закрыть пробелы в знаниях, подготовиться к техническому интервью и, в конечном итоге, найти первую работу или получить более высокий грейд\\r\\n\\r\\nЧасто провожу технические интервью для разработчиков разного уровня от junior до senior, хорошо знаком с текущими реалиями рынка\",\"years\":3,\"lessonsCount\":139,\"studentsCount\":256,\"courses\":[\"Flutter Mobile Developer\"],\"shortDescription\":\"$undefined\",\"directions\":\"$undefined\",\"yearDevelopment\":\"$undefined\",\"scheduleGroupRole\":null},{\"id\":9969,\"fullName\":\"Владислав Беленьков\",\"company\":null,\"companyRole\":\"Flutter developer\",\"photoUrl\":\"https://cdn.otus.ru/media/public/4f/f3/4ff3ca0cc9c94e2696ddaa0bf848001b.png\",\"description\":\"\u003cb\u003eДолжность:\u003c/b\u003e Flutter developer\\r\\n\u003cb\u003eСуммарный опыт работы:\u003c/b\u003e Опыт разработки на Flutter 4 года. Создавал e-commerce, banking, multimedia приложения\\r\\n\u003cb\u003eПрофильное образование:\u003c/b\u003e ЕЭТК - программная инженерия в экономике\\r\\n\u003cb\u003eРеализованные проекты:\u003c/b\u003e Rosbank, Rigla, Flustr\\r\\n\u003cb\u003eОпыт преподавания:\u003c/b\u003e 2 года преподавал Android разработку в It Samsung school\\r\\n\u003cb\u003eСтэк:\u003c/b\u003e Flutter, Dart\\r\\n\u003cb\u003eУвлечения:\u003c/b\u003e Люблю путешествовать, кататься на сноуборде\",\"years\":2,\"lessonsCount\":2,\"studentsCount\":110,\"courses\":[],\"shortDescription\":\"$undefined\",\"directions\":\"$undefined\",\"yearDevelopment\":\"$undefined\",\"scheduleGroupRole\":null},{\"id\":2295,\"fullName\":\"Николай Бакланов\",\"company\":\"VK\",\"companyRole\":\"Инженер-разработчик\",\"photoUrl\":\"https://cdn.otus.ru/media/public/dd/06/dd061f7346b646138111c998e6f4cdd5.jpg\",\"description\":\"Образование\\r\\nВыпускник ОмГТУ. Специализация: «Вычислительные машины, комплексы системы и сети»\\r\\n\\r\\nОпыт\\r\\n12 лет программирует на Action Script 3.0, C#, Java, Kotlin, Swift, Objective-C. \\r\\nБыл и разработчиком, и тимлидом. Участвовал в проектах разной сложности, разрабатывал приложения с использованием OpenCV, писал unit-тесты, настраивал CI- и CD-процессы.\\r\\n\\r\\nДостижения\\r\\nРазработал и запустил мобильные проекты: «MyFingerprints», «Calm and confident», «Sleep Restore»\\r\\n\\r\\nНавыки\\r\\niOS: Swift, Objective-C\\r\\nAndroid: Kotlin, Java \\r\\nFlutter\\r\\nKotlin-Mulitplatform\",\"years\":6,\"lessonsCount\":350,\"studentsCount\":2384,\"courses\":[\"Software Architect\",\"IT-Recruiter\",\"iOS Developer\",\"iOS Developer. Professional\",\"iOS Developer. Basic\"],\"shortDescription\":\"$undefined\",\"directions\":\"$undefined\",\"yearDevelopment\":\"$undefined\",\"scheduleGroupRole\":null},{\"id\":2701,\"fullName\":\"Алексей Адрианов\",\"company\":null,\"companyRole\":null,\"photoUrl\":\"https://cdn.otus.ru/media/public/bd/aa/bdaa49508c154b63957666911f8d9431.jpg\",\"description\":\"Обожаю Flutter, люблю рассказывать про него и делиться своим опытом. \\r\\nПишу на фреймворке с его выхода в первую релизную версию (декабрь 2018г.), до этого писал на нативном андроиде и немного веб.\\r\\nУчусь в магистратуре по направлению фундаментальной информатики.\\r\\nЛюблю путешествия и инвестиции.\",\"years\":5,\"lessonsCount\":30,\"studentsCount\":189,\"courses\":[],\"shortDescription\":\"$undefined\",\"directions\":\"$undefined\",\"yearDevelopment\":\"$undefined\",\"scheduleGroupRole\":null}]},{\"desc\":\"\u003cp\u003eОткрытый вебинар — это настоящее занятие в режиме он-лайн с преподавателем курса, которое позволяет посмотреть, как проходит процесс обучения. В ходе занятия слушатели имеют возможность задать вопросы и получить знания по реальным практическим кейсам.\u003c/p\u003e\",\"header\":\"\u003ch2\u003eБлижайшие мероприятия\u003c/h2\u003e\",\"id\":5893,\"type\":\"SPECIALIZATION_FUTURE_WEBINARS\",\"events\":[{\"date\":\"2026-03-25T17:00:00+00:00\",\"eventCourseId\":178,\"eventDesc\":\"Что будет на вебинаре?\\r\\n- Почему AI-ассистенты ошибаются при генерации кода\\r\\n- Как структура Flutter-проекта влияет на качество подсказок\\r\\n- Принципы “AI-дружелюбного” кода: архитектура, нейминг, комментарии\\r\\n- Сравнение плохого и правильного подхода на практике\\r\\n\\r\\nДля кого этот вебинар?\\r\\n- Новичкам во Flutter\\r\\n- Разработчикам, использующим AI-ассистентов\\r\\n- Программистам, переходящим в мобильную разработку\\r\\n\\r\\nЧто узнают участники?\\r\\n- Как ИИ анализирует код и контекст проекта\\r\\n- Какие практики улучшают качество автодополнения\\r\\n- Как писать код, который легче масштабировать\\r\\n- Приёмы ускорения разработки с помощью AI\",\"eventId\":6933,\"eventSlug\":\"flutter-lesson-25-03-2026\",\"eventTitle\":\"Как писать Flutter-код так, чтобы ИИ правильно его дописывал\",\"eventType\":\"open_lesson\",\"id\":7009,\"isRequireAssessment\":false,\"registrationEnded\":false,\"teacher\":{\"fullName\":\"Руслан Цицер\",\"id\":9848,\"photoUrl\":\"https://cdn.otus.ru/media/public/18/ce/18ce8d7dafaf40cb99eda2d5b03e1a39.png\",\"work\":null}},{\"date\":\"2026-04-13T17:00:00+00:00\",\"eventCourseId\":178,\"eventDesc\":\"$2b\",\"eventId\":6935,\"eventSlug\":\"flutter-lesson-13-04-2026\",\"eventTitle\":\"Flutter GenUI: когда AI-агент собирает ваш интерфейс\",\"eventType\":\"open_lesson\",\"id\":7011,\"isRequireAssessment\":false,\"registrationEnded\":false,\"teacher\":{\"fullName\":\"Дмитрий Золотов\",\"id\":2231,\"photoUrl\":\"https://cdn.otus.ru/media/public/36/df/36df01a954304f0cbeee554225ff1680.jpeg\",\"work\":null}}]},{\"desc\":null,\"header\":\"\u003ch2\u003eПрошедшие мероприятия\u003c/h2\u003e\",\"id\":5894,\"type\":\"SPECIALIZATION_PAST_WEBINARS\",\"events\":[{\"id\":6543,\"eventType\":\"open_lesson\",\"previewLink\":\"https://sun9-35.userapi.com/impg/YTFTued77RBtiw3wrJjBEaZ3EokMgwRhdcEw_A/zI5fq6JRpLE.jpg?size=320x240\u0026quality=95\u0026keep_aspect_ratio=1\u0026background=000000\u0026sign=15c5664087ce76e4770dbc2cb3ca5a5b\u0026c_uniq_tag=plMopAoT5koKLTdqx0MylV9Tez8HMWlb4M6qwKuYjdI\u0026type=video_thumb\",\"eventTitle\":\"Flutter Twin — живые интерфейсы, отражающие и изменяющие реальность\",\"recordLink\":\"https://vk.com/video_ext.php?oid=-145052891\u0026id=456250155\",\"teacher\":{\"fullName\":\"Дмитрий Золотов\",\"photoUrl\":\"https://cdn.otus.ru/media/public/36/df/36df01a954304f0cbeee554225ff1680.jpeg\"}},{\"id\":6523,\"eventType\":\"open_lesson\",\"previewLink\":\"https://i.mycdn.me/videoPreview?ct=-30\u0026id=9472530320004\u0026idx=0\u0026od=1\u0026type=32\u0026tkn=6T4OhjaN_Tpds4u17qflyO9Y5z0\u0026fn=vid_l\",\"eventTitle\":\"Telegram + Flutter Web — создаём современное веб-приложение с ботом и интерфейсом\",\"recordLink\":\"https://vk.com/video_ext.php?oid=-145052891\u0026id=456250091\",\"teacher\":{\"fullName\":\"Руслан Цицер\",\"photoUrl\":\"https://cdn.otus.ru/media/public/18/ce/18ce8d7dafaf40cb99eda2d5b03e1a39.png\"}},{\"id\":6522,\"eventType\":\"open_lesson\",\"previewLink\":\"https://sun9-16.userapi.com/impg/zXZR82XnxVM80ps6zhqD-N7B1YHmt-FsuC3JUg/pt3eaUOR6G0.jpg?size=320x240\u0026quality=95\u0026keep_aspect_ratio=1\u0026background=000000\u0026sign=d8957e4d5572d381e3c91c7295577ef9\u0026c_uniq_tag=FQHjB07_QmvSBywt8momkmxDhgQlVsczi9GuZ7XPGw8\u0026type=video_thumb\",\"eventTitle\":\"Flutter Mesh — синхронизация данных между устройствами без интернета и серверов\",\"recordLink\":\"https://vk.com/video_ext.php?oid=-145052891\u0026id=456249967\",\"teacher\":{\"fullName\":\"Дмитрий Золотов\",\"photoUrl\":\"https://cdn.otus.ru/media/public/36/df/36df01a954304f0cbeee554225ff1680.jpeg\"}},{\"id\":5985,\"eventType\":\"open_lesson\",\"previewLink\":\"https://i.mycdn.me/getVideoPreview?id=8934126651986\u0026idx=8\u0026type=39\u0026tkn=Wllb09s9s5eepCxzE63dj70JB7c\u0026fn=vid_l\",\"eventTitle\":\"Flutter в Automotive \u0026 Embedded: создаём приложение для автомобиля (и не только)\",\"recordLink\":\"https://vk.com/video_ext.php?oid=-145052891\u0026id=456248953\",\"teacher\":{\"fullName\":\"Дмитрий Золотов\",\"photoUrl\":\"https://cdn.otus.ru/media/public/36/df/36df01a954304f0cbeee554225ff1680.jpeg\"}},{\"id\":5987,\"eventType\":\"open_lesson\",\"previewLink\":\"https://sun9-70.userapi.com/impg/yA-MrOKLja_PnMKxlSTvAYLA0A30ssM6p1zw9g/j_YEo0JmsfY.jpg?size=320x240\u0026quality=95\u0026keep_aspect_ratio=1\u0026background=000000\u0026sign=09cc03dfdbffa8fe46de4a65ffda4f0f\u0026c_uniq_tag=pAxWcpc1CiImV7P-aumUYalR-aHs4-Fy9mtR8sv9lHE\u0026type=video_thumb\",\"eventTitle\":\"Запускаем код C, Rust или GO через FFI\",\"recordLink\":\"https://vk.com/video_ext.php?oid=-145052891\u0026id=456248917\",\"teacher\":{\"fullName\":\"Руслан Цицер\",\"photoUrl\":\"https://cdn.otus.ru/media/public/18/ce/18ce8d7dafaf40cb99eda2d5b03e1a39.png\"}},{\"id\":5986,\"eventType\":\"open_lesson\",\"previewLink\":\"https://sun9-83.userapi.com/impg/oDG5ywT1WNxwiiTdFr6KwtIdapvpxg-H69RpJg/nJjn0_6rXYs.jpg?size=320x240\u0026quality=95\u0026keep_aspect_ratio=1\u0026background=000000\u0026sign=72bc7ad0f03ce774a34de531af1744b3\u0026c_uniq_tag=7mrXCnIKTd5cPfd1D_2dXVbLW2Vc3jfaX805S0gT3kI\u0026type=video_thumb\",\"eventTitle\":\"Flutter Deep Linking \u0026 State Restoration: возвращаем пользователей туда, где они были\",\"recordLink\":\"https://vk.com/video_ext.php?oid=-145052891\u0026id=456248822\",\"teacher\":{\"fullName\":\"Дмитрий Золотов\",\"photoUrl\":\"https://cdn.otus.ru/media/public/36/df/36df01a954304f0cbeee554225ff1680.jpeg\"}},{\"id\":5731,\"eventType\":\"open_lesson\",\"previewLink\":\"https://sun9-19.userapi.com/impg/m6YWBghxFgyG0W9olhZ-VDCElp4l40o3QLHNQA/cA5ZEmO9vJU.jpg?size=320x240\u0026quality=95\u0026keep_aspect_ratio=1\u0026background=000000\u0026sign=91885859f72afed84b1b150085a135c2\u0026c_uniq_tag=7l2QZzUv6nsdsJUb4FE0gcV7FXrXF2TlooY4zQkblio\u0026type=video_thumb\",\"eventTitle\":\"Интеллект внутри: делаем умные Flutter-приложения с ML и AI\",\"recordLink\":\"https://vk.com/video_ext.php?oid=-145052891\u0026id=456248455\",\"teacher\":{\"fullName\":\"Дмитрий Золотов\",\"photoUrl\":\"https://cdn.otus.ru/media/public/36/df/36df01a954304f0cbeee554225ff1680.jpeg\"}},{\"id\":5730,\"eventType\":\"open_lesson\",\"previewLink\":\"https://sun9-65.userapi.com/impg/20UzToPAeu1oFED3miT5lj47KG2cThjbx6ChRg/9qTFmdRKLOo.jpg?size=320x240\u0026quality=95\u0026keep_aspect_ratio=1\u0026background=000000\u0026sign=e7b9d9e7d84c392a0eb333aa11e404d1\u0026c_uniq_tag=Iz1oeQAy_eSrEkQRvWEF32jsXeBhSBsZwC-nN0ddXEc\u0026type=video_thumb\",\"eventTitle\":\"Архитектура Flutter-приложения: Управление зависимостями и жизненным циклом с помощью yx_scope\",\"recordLink\":\"https://vk.com/video_ext.php?oid=-145052891\u0026id=456248411\",\"teacher\":{\"fullName\":\"Дмитрий Золотов\",\"photoUrl\":\"https://cdn.otus.ru/media/public/36/df/36df01a954304f0cbeee554225ff1680.jpeg\"}},{\"id\":5320,\"eventType\":\"open_lesson\",\"previewLink\":\"https://sun9-12.userapi.com/impg/GPt5dK_clxIYlyQdexNcAfgs86NIzHQ_gd1A0Q/Kk9ErHrDK1Q.jpg?size=320x240\u0026quality=95\u0026keep_aspect_ratio=1\u0026background=000000\u0026sign=b25ef3d49252aed79f28ee596e4ea699\u0026c_uniq_tag=joCfKlHAHUPVJcXIwpvKSjXakbS6nR9BEAbYFWcrD_k\u0026type=video_thumb\",\"eventTitle\":\"Дополненная реальность во Flutter: создание интерактивных приложений с использованием ARKit, ARCore и Flutter\",\"recordLink\":\"https://vk.com/video_ext.php?oid=-145052891\u0026id=456247838\",\"teacher\":{\"fullName\":\"Дмитрий Золотов\",\"photoUrl\":\"https://cdn.otus.ru/media/public/36/df/36df01a954304f0cbeee554225ff1680.jpeg\"}},{\"id\":5258,\"eventType\":\"open_lesson\",\"previewLink\":\"https://sun9-58.userapi.com/impg/9oBOo0RS4ZijJssbHsLwtfIKeTDBwMDFaEilnQ/9cbdFKIJFj8.jpg?size=320x240\u0026quality=95\u0026keep_aspect_ratio=1\u0026background=000000\u0026sign=f32996aebead2212f101c60a424b410c\u0026c_uniq_tag=ZhoTDvOrXkT8WjxY36TZlgkqGWAn8i_lSvugf5_Hhj8\u0026type=video_thumb\",\"eventTitle\":\"Flutter и Firebase: создание серверлесс-приложения\",\"recordLink\":\"https://vk.com/video_ext.php?oid=-145052891\u0026id=456247761\",\"teacher\":{\"fullName\":\"Вячеслав Жидков\",\"photoUrl\":null}},{\"id\":5257,\"eventType\":\"open_lesson\",\"previewLink\":\"https://sun9-6.userapi.com/impg/RkZ0TJ2HFtrDNoWmxQm7PR1weoGeiBgq8Frn8A/rW-WOcXAzJE.jpg?size=320x240\u0026quality=95\u0026keep_aspect_ratio=1\u0026background=000000\u0026sign=e6067a9109067fd79a48f085ca1672c0\u0026c_uniq_tag=enQjcrvmVlFKNJo7PX30buCH0TGuNkRqS-IV16ZvQRM\u0026type=video_thumb\",\"eventTitle\":\"Хитрости тестирования приложений на Flutter\",\"recordLink\":\"https://vk.com/video_ext.php?oid=-145052891\u0026id=456247703\",\"teacher\":{\"fullName\":\"Дмитрий Золотов\",\"photoUrl\":\"https://cdn.otus.ru/media/public/36/df/36df01a954304f0cbeee554225ff1680.jpeg\"}},{\"id\":4995,\"eventType\":\"open_lesson\",\"previewLink\":\"https://sun9-39.userapi.com/impg/V4dZBlvcH8vCrH7bL8NOK_VVvwySI0iYeGFjRQ/_p0_2zMKNSk.jpg?size=320x240\u0026quality=95\u0026keep_aspect_ratio=1\u0026background=000000\u0026sign=214d320dc39e307e3b3c7f375d58dfe9\u0026c_uniq_tag=KWv4jCCU6xPmLY4Z4WstRyd-U1H2WZHtMyFMvQ7kWOA\u0026type=video_thumb\",\"eventTitle\":\"Макросы и другие помощники Dart/Flutter\",\"recordLink\":\"https://vk.com/video_ext.php?oid=-145052891\u0026id=456247424\",\"teacher\":{\"fullName\":\"Дмитрий Золотов\",\"photoUrl\":\"https://cdn.otus.ru/media/public/36/df/36df01a954304f0cbeee554225ff1680.jpeg\"}},{\"id\":4968,\"eventType\":\"open_lesson\",\"previewLink\":\"https://sun9-77.userapi.com/impg/4IBw2-RHKnPzkB7tiI7_UxTQJ_ooBUP0EApJGw/alSUXOcNqKk.jpg?size=320x240\u0026quality=95\u0026keep_aspect_ratio=1\u0026background=000000\u0026sign=f4c5b2077c5d59d6d284377fd61b0395\u0026c_uniq_tag=zBNGo8LVuROSU2yzPL2VUg5EvZwU4OuEJRdfnCpkijI\u0026type=video_thumb\",\"eventTitle\":\"Используем GPU для создания настоящего 3D-движка в Flutter\",\"recordLink\":\"https://vk.com/video_ext.php?oid=-145052891\u0026id=456247307\",\"teacher\":{\"fullName\":\"Дмитрий Золотов\",\"photoUrl\":\"https://cdn.otus.ru/media/public/36/df/36df01a954304f0cbeee554225ff1680.jpeg\"}},{\"id\":4459,\"eventType\":\"open_lesson\",\"previewLink\":\"https://img.youtube.com/vi/ed8gUsatKKA/0.jpg\",\"eventTitle\":\"Делаем Flutter-приложения плавным и отзывчивым\",\"recordLink\":\"https://www.youtube.com/embed/ed8gUsatKKA\",\"teacher\":{\"fullName\":\"Дмитрий Золотов\",\"photoUrl\":\"https://cdn.otus.ru/media/public/36/df/36df01a954304f0cbeee554225ff1680.jpeg\"}},{\"id\":4458,\"eventType\":\"open_lesson\",\"previewLink\":\"https://img.youtube.com/vi/dHw5fkcinkM/0.jpg\",\"eventTitle\":\"Веб-приложения на Flutter с WebAssembly\",\"recordLink\":\"https://www.youtube.com/embed/dHw5fkcinkM\",\"teacher\":{\"fullName\":\"Дмитрий Золотов\",\"photoUrl\":\"https://cdn.otus.ru/media/public/36/df/36df01a954304f0cbeee554225ff1680.jpeg\"}},{\"id\":4096,\"eventType\":\"open_lesson\",\"previewLink\":\"https://img.youtube.com/vi/DkglPk2ztTc/0.jpg\",\"eventTitle\":\"Приближаясь к платформе - новые возможности взаимодействия с JS и Native Assets в Flutter\",\"recordLink\":\"https://www.youtube.com/embed/DkglPk2ztTc\",\"teacher\":{\"fullName\":\"Дмитрий Золотов\",\"photoUrl\":\"https://cdn.otus.ru/media/public/36/df/36df01a954304f0cbeee554225ff1680.jpeg\"}},{\"id\":4097,\"eventType\":\"open_lesson\",\"previewLink\":\"https://img.youtube.com/vi/S-B1kFwhWEE/0.jpg\",\"eventTitle\":\"Создаем многопользовательскую игру наподобии \\\"Имаджинариум\\\" с искусственным интеллектом на Flutter\",\"recordLink\":\"https://www.youtube.com/embed/S-B1kFwhWEE\",\"teacher\":{\"fullName\":\"Дмитрий Золотов\",\"photoUrl\":\"https://cdn.otus.ru/media/public/36/df/36df01a954304f0cbeee554225ff1680.jpeg\"}},{\"id\":3400,\"eventType\":\"open_lesson\",\"previewLink\":\"https://img.youtube.com/vi/N0Lecfaarl4/0.jpg\",\"eventTitle\":\"Разработка кастомных анимаций во Flutter\",\"recordLink\":\"https://www.youtube.com/embed/N0Lecfaarl4\",\"teacher\":{\"fullName\":\"Денис Гладкий\",\"photoUrl\":\"https://cdn.otus.ru/media/public/47/66/47664a81098b451caa5c7c69d22194a3.png\"}},{\"id\":3399,\"eventType\":\"open_lesson\",\"previewLink\":\"https://img.youtube.com/vi/GGb4_Mflsi8/0.jpg\",\"eventTitle\":\"Адаптивная верстка сложных интерфейсов\",\"recordLink\":\"https://www.youtube.com/embed/GGb4_Mflsi8\",\"teacher\":{\"fullName\":\"Дмитрий Золотов\",\"photoUrl\":\"https://cdn.otus.ru/media/public/36/df/36df01a954304f0cbeee554225ff1680.jpeg\"}},{\"id\":3398,\"eventType\":\"open_lesson\",\"previewLink\":\"https://img.youtube.com/vi/tCcmexwjhb0/0.jpg\",\"eventTitle\":\"Создаем умный будильник с интеграцией с Google Fit\",\"recordLink\":\"https://www.youtube.com/embed/tCcmexwjhb0\",\"teacher\":{\"fullName\":\"Дмитрий Золотов\",\"photoUrl\":\"https://cdn.otus.ru/media/public/36/df/36df01a954304f0cbeee554225ff1680.jpeg\"}},{\"id\":3059,\"eventType\":\"open_lesson\",\"previewLink\":\"https://img.youtube.com/vi/D532JYju1ZU/0.jpg\",\"eventTitle\":\"Введение в разработку 3D-игр на Flutter для iOS/Android и Web с использованием Impeller и WebGL\",\"recordLink\":\"https://www.youtube.com/embed/D532JYju1ZU\",\"teacher\":{\"fullName\":\"Дмитрий Золотов\",\"photoUrl\":\"https://cdn.otus.ru/media/public/36/df/36df01a954304f0cbeee554225ff1680.jpeg\"}},{\"id\":2145,\"eventType\":\"open_lesson\",\"previewLink\":\"https://img.youtube.com/vi/waY9qgSvV_w/0.jpg\",\"eventTitle\":\"Создаем умный будильник с интеграцией с Google Fit\",\"recordLink\":\"https://www.youtube.com/embed/waY9qgSvV_w\",\"teacher\":{\"fullName\":\"Дмитрий Золотов\",\"photoUrl\":\"https://cdn.otus.ru/media/public/36/df/36df01a954304f0cbeee554225ff1680.jpeg\"}},{\"id\":1946,\"eventType\":\"open_lesson\",\"previewLink\":\"https://img.youtube.com/vi/35B_iCUp_mA/0.jpg\",\"eventTitle\":\"Открытый урок \\\"Создаем приложение с управлением сложными жестами (как в Opera)\\\"\",\"recordLink\":\"https://www.youtube.com/embed/35B_iCUp_mA\",\"teacher\":{\"fullName\":\"Дмитрий Золотов\",\"photoUrl\":\"https://cdn.otus.ru/media/public/36/df/36df01a954304f0cbeee554225ff1680.jpeg\"}},{\"id\":1945,\"eventType\":\"open_lesson\",\"previewLink\":\"https://img.youtube.com/vi/9G20heJiWlc/0.jpg\",\"eventTitle\":\"Открытый урок \\\"Как протестировать приложение с информацией из сети\\\"\",\"recordLink\":\"https://www.youtube.com/embed/9G20heJiWlc\",\"teacher\":{\"fullName\":\"Дмитрий Золотов\",\"photoUrl\":\"https://cdn.otus.ru/media/public/36/df/36df01a954304f0cbeee554225ff1680.jpeg\"}},{\"id\":1783,\"eventType\":\"open_lesson\",\"previewLink\":\"https://img.youtube.com/vi/aTWW1QkN59Q/0.jpg\",\"eventTitle\":\"Интенсив «Flutter engine, анимация и ее оптимизация». День 2\",\"recordLink\":\"https://www.youtube.com/embed/aTWW1QkN59Q\",\"teacher\":{\"fullName\":\"Дмитрий Золотов\",\"photoUrl\":\"https://cdn.otus.ru/media/public/36/df/36df01a954304f0cbeee554225ff1680.jpeg\"}},{\"id\":1782,\"eventType\":\"open_lesson\",\"previewLink\":\"https://img.youtube.com/vi/DrihsJThSSE/0.jpg\",\"eventTitle\":\"Интенсив «Flutter engine, анимация и ее оптимизация». День 1\",\"recordLink\":\"https://www.youtube.com/embed/DrihsJThSSE\",\"teacher\":{\"fullName\":\"Дмитрий Золотов\",\"photoUrl\":\"https://cdn.otus.ru/media/public/36/df/36df01a954304f0cbeee554225ff1680.jpeg\"}},{\"id\":1595,\"eventType\":\"open_lesson\",\"previewLink\":\"https://img.youtube.com/vi/8YOd8k_I3i4/0.jpg\",\"eventTitle\":\"Explicit анимации и 3D-графика в Flutter\",\"recordLink\":\"https://www.youtube.com/embed/8YOd8k_I3i4\",\"teacher\":{\"fullName\":\"Дмитрий Золотов\",\"photoUrl\":\"https://cdn.otus.ru/media/public/36/df/36df01a954304f0cbeee554225ff1680.jpeg\"}},{\"id\":1193,\"eventType\":\"open_lesson\",\"previewLink\":\"https://img.youtube.com/vi/JW61z6pLyZg/0.jpg\",\"eventTitle\":\"Онлайн-интенсив «Создаем приложение на Flutter для Web, iOS и Android». День 2\",\"recordLink\":\"https://www.youtube.com/embed/JW61z6pLyZg\",\"teacher\":{\"fullName\":\"Михаил Альфа\",\"photoUrl\":\"https://cdn.otus.ru/media/public/2b/66/2b6652e00567476593522daa8bde0d78.jpg\"}},{\"id\":1192,\"eventType\":\"open_lesson\",\"previewLink\":\"https://img.youtube.com/vi/F0JU50vP-og/0.jpg\",\"eventTitle\":\"Онлайн-интенсив «Создаем приложение на Flutter для Web, iOS и Android». День 1\",\"recordLink\":\"https://www.youtube.com/embed/F0JU50vP-og\",\"teacher\":{\"fullName\":\"Михаил Альфа\",\"photoUrl\":\"https://cdn.otus.ru/media/public/2b/66/2b6652e00567476593522daa8bde0d78.jpg\"}},{\"id\":1194,\"eventType\":\"dod\",\"previewLink\":\"https://img.youtube.com/vi/AXNX25Kgs0U/0.jpg\",\"eventTitle\":\"Demo Day курса «Flutter Mobile Developer»\",\"recordLink\":\"https://www.youtube.com/embed/AXNX25Kgs0U\",\"teacher\":{\"fullName\":\"Андрей Смирнов\",\"photoUrl\":\"https://cdn.otus.ru/media/public/db/e5/dbe53d3e284f428db631e68102e8a282.jpg\"}},{\"id\":984,\"eventType\":\"open_lesson\",\"previewLink\":\"https://img.youtube.com/vi/4c5NPm-Eejk/0.jpg\",\"eventTitle\":\"Пишем Flutter-приложение с использованием Redux\",\"recordLink\":\"https://www.youtube.com/embed/4c5NPm-Eejk\",\"teacher\":{\"fullName\":\"Илья Вирник\",\"photoUrl\":\"https://cdn.otus.ru/media/public/09/1b/091b1f1616144f838a16459b285c1386.JPG\"}},{\"id\":983,\"eventType\":\"open_lesson\",\"previewLink\":\"https://img.youtube.com/vi/sm8Ld9d22XQ/0.jpg\",\"eventTitle\":\"Графика во Flutter\",\"recordLink\":\"https://www.youtube.com/embed/sm8Ld9d22XQ\",\"teacher\":{\"fullName\":\"Всеволод Краснов\",\"photoUrl\":\"https://cdn.otus.ru/media/public/a7/cb/a7cb9e5699704f4eaef07a3249443dcc.jpg\"}},{\"id\":979,\"eventType\":\"dod\",\"previewLink\":\"https://img.youtube.com/vi/zmQl3Ni5k4Y/0.jpg\",\"eventTitle\":\"Demo Day курса «Flutter Mobile Developer»\",\"recordLink\":\"https://www.youtube.com/embed/zmQl3Ni5k4Y\",\"teacher\":{\"fullName\":\"Андрей Смирнов\",\"photoUrl\":\"https://cdn.otus.ru/media/public/db/e5/dbe53d3e284f428db631e68102e8a282.jpg\"}},{\"id\":759,\"eventType\":\"open_lesson\",\"previewLink\":\"https://img.youtube.com/vi/KeW1spFd35w/0.jpg\",\"eventTitle\":\"Bloc архитектура во Flutter\",\"recordLink\":\"https://www.youtube.com/embed/KeW1spFd35w\",\"teacher\":{\"fullName\":\"Никита Спирьянов\",\"photoUrl\":\"https://cdn.otus.ru/media/public/2a/f3/2af377062021492792f34ea3b9c1e406.jpg\"}},{\"id\":717,\"eventType\":\"dod\",\"previewLink\":\"https://img.youtube.com/vi/XMV82HjNy3I/0.jpg\",\"eventTitle\":\"Всё о курсе «Мобильная разработка на Flutter»\",\"recordLink\":\"https://www.youtube.com/embed/XMV82HjNy3I\",\"teacher\":null}]},{\"id\":13015,\"type\":\"EMPLOYEE_REQUEST\"},{\"title\":\"Отзывы\",\"id\":5896,\"type\":\"SPECIALIZATION_REVIEW\",\"reviews\":[{\"id\":3614,\"dateCreated\":\"2026-02-11T14:08:45+00:00\",\"text\":\"Курс понравился. Материал подаётся структурировано и понятно — от базовых принципов работы с фреймворком до более сложных тем, таких как управление состоянием, работа с API и оптимизация производительности приложения.\\r\\n\\r\\nОсобенно понравилось большое количество практических заданий, благодаря которым теория сразу закрепляется на практике. Преподаватели подробно разбирает сложные моменты и объясняет не только «как сделать», но и «почему именно так». Это помогает лучше понимать архитектуру приложений и писать более качественный код. Отдельное спасибо Николаю Мичурину за его подход к проверке ДЗ.\",\"shortText\":null,\"user\":{\"avatarUrl\":null,\"fullName\":\"Дмитрий Квасов\",\"socials\":[{\"id\":370430,\"service\":\"telegram\",\"value\":\"telegram\"}]},\"name\":\"Дмитрий\"},{\"id\":3605,\"dateCreated\":\"2026-02-03T11:46:37+00:00\",\"text\":\"До обучения, во время и после я работал в ЦТиП, работа связана с автоматизацией производства. Выбрал курс, потому что сейчас для меня актуально внедрение мобильных приложений. Понравилось, что на курсе достаточно высокая компетенция. Планирую использовать полученные знания в своей текущей работе.\\r\\n\\r\\nЧто было не удобно - достаточно позднее проведение занятий из-за разницы в часовых поясах, вследствие чего основную часть пришлось просматривать в записи, а хотелось как и обычно в живом формате\",\"shortText\":null,\"user\":{\"avatarUrl\":null,\"fullName\":\"Николай Нестеренко\",\"socials\":[{\"id\":372672,\"service\":\"telegram\",\"value\":\"telegram\"}]},\"name\":\"Николай Нестеренко\"},{\"id\":3409,\"dateCreated\":\"2025-10-21T14:19:52+00:00\",\"text\":\"Всем привет, меня зовут Максим Казанцев, я ведущий разработчик кроссплатформенных мобильных приложений в тульской компании EvApps.\\r\\n\\r\\nОбратил внимание на развивающееся направление Flutter разработки и решил пройти обучение. В OTUS были самые оптимальные варианты по цене и длительности обучению, поэтому выбор был очевиден.\\r\\n\\r\\nНа курсе мне понравилось то, что занятия комбинированы - есть лекции, есть домашние задания, есть общение с преподавателями через телеграм-канал и даже есть сдача курсовой работы.\\r\\n\\r\\nЗа время обучения я смог на работе получить в разработку три проекта, в том числе переписывание на Flutter старого проекта реализованного на React Native.\\r\\n\\r\\nОбучение позволило мне ответить на вопросы, которые ранее казались мне сложными - анимация, тестирование, чистая архитектура.\\r\\n\\r\\nНадеюсь в будущем появится градация на senior flutter developer и я смогу подчеркнуть для себя еще много нового.\",\"shortText\":null,\"user\":{\"avatarUrl\":null,\"fullName\":\"Максим Казанцев\",\"socials\":[]},\"name\":\"Максим Казанцев\"},{\"id\":3232,\"dateCreated\":\"2025-07-28T14:11:18+00:00\",\"text\":\"$2c\",\"shortText\":null,\"user\":{\"avatarUrl\":null,\"fullName\":\"Максим Волостнов\",\"socials\":[]},\"name\":\"Марк Воздухов\"},{\"id\":3210,\"dateCreated\":\"2025-07-17T14:16:18+00:00\",\"text\":\"Очень понравилось. До этого был опыт с Flutter по бесплатным ютуб роликам, на курсе более подробно рассмотрел темы с которыми не мог разобраться самостоятельно. Много нового для себя узнал. Педагогический состав супер, очень сильные разработчики, показали бэст практис!\",\"shortText\":null,\"user\":{\"avatarUrl\":\"https://cdn.otus.ru/media/public/56/1e/avatar-478853-561e3c.png\",\"fullName\":\"Олег Пак\",\"socials\":[{\"id\":330626,\"service\":\"telegram\",\"value\":\"telegram\"}]},\"name\":\"Олег\"},{\"id\":2781,\"dateCreated\":\"2024-12-18T11:29:14+00:00\",\"text\":\"Обучение мне понравилось. Кто-то говорил, что в курсе есть недочеты и несостыковки, но я ничего критичного ни разу не заметил. В реальной \\\"боевой\\\" деятельности зачастую всё куда менее прозрачно, гораздо запутаннее и т.д. Обучение дало много знаний, опыта и основу приложения, которое я развиваю. В планах довести знания до мастерства \\r\\n\\r\\nХотелось бы покрупнее интерфейс у плеера видеоуроков в кабинете.\",\"shortText\":null,\"user\":{\"avatarUrl\":\"https://cdn.otus.ru/media/public/b1/1f/avatar-476563-b11f8e.png\",\"fullName\":\"Михаил Колински\",\"socials\":[{\"id\":257602,\"service\":\"telegram\",\"value\":\"telegram\"}]},\"name\":\"Михаил\"},{\"id\":2653,\"dateCreated\":\"2024-11-04T07:17:17+00:00\",\"text\":\"До обучения имел небольшой опыт программирования на Python. Курс нашел мой начальник и предложил пройти его мне, так как такие навыки могут пригодиться в дальнейшей работе. Курс очень интересный. Все преподаватели на протяжении всего курсы были на связи и помогали в случае каких-то вопросов. Хотелось бы увеличить курс с 6 до 12 месяцев, так как некоторые темы очень обширные и часто просто не укладывались в 1.5-2 часа. Для желающих поступить на курс хочу сказать что нужно иметь хоть какой-то прошлый опыт в мобильной разработке, так как курс не расчитан на совсем новичков в этом направлении и будет довольно сложно. Обучение дало мне большой опыт в этом направлении, новые знакомства и направления для роста. В перспективе хотелось бы продолжить развиваться в этом направлении и этот курс стал первым шагом к цели\",\"shortText\":null,\"user\":{\"avatarUrl\":null,\"fullName\":\"Юрий Акульков\",\"socials\":[{\"id\":298473,\"service\":\"telegram\",\"value\":\"telegram\"}]},\"name\":\"Юрий\"},{\"id\":1401,\"dateCreated\":\"2022-06-28T07:17:57.329803+00:00\",\"text\":\"Очень подробный и развёрнутый курс для начинающих Flutter-разработчиков. Отзывчивые преподаватели, хорошо подготовленный материал для лекций, кроме того, сам материал обновляется по мере обновления фреймворка. Домашние задания нацелены на закрепление полученных знаний и навыков. В целом курс понравился и смело могу его рекомендовать.\",\"shortText\":null,\"user\":{\"avatarUrl\":null,\"fullName\":\"Иван Бачарников\",\"socials\":[]},\"name\":\"Иван\"},{\"id\":1056,\"dateCreated\":\"2021-07-27T17:16:18.600629+00:00\",\"text\":\"Хороший курс для тех, кто имеет базовые знания в мобильной разработке. Структура курса построена так, чтобы охватить основные темы языка от простого к сложному, а формат домашних заданий позволяет посмотреть на код готового приложения изнутри и постепенно реализовать его возможности. Очень удобно, что все занятия можно посмотреть в записи и пересмотреть их когда нужно.\\r\\nПреподаватели всегда на связи, всегда поддерживают, быстро отвечают и дают подробные комментарии по выполненным домашним заданиям. Отдельное спасибо Андрею Смирнову за создание дружеской атмосферы и моральную поддержку! \\r\\nЗакончив курс, я уверена, что смогу написать простое мобильное приложение на языке flutter и буду использовать полученные знания в дальнейшем.\\r\\nБольшое спасибо за хороший курс!\",\"shortText\":null,\"user\":{\"avatarUrl\":null,\"fullName\":\"Ирина Ефремова\",\"socials\":[]},\"name\":\"Ирина Ефремова\"},{\"id\":1055,\"dateCreated\":\"2021-07-27T11:56:42.544400+00:00\",\"text\":\"$2d\",\"shortText\":null,\"user\":{\"avatarUrl\":null,\"fullName\":\"Katerina Filatova\",\"socials\":[]},\"name\":\"Katerina Filatova\"},{\"id\":924,\"dateCreated\":\"2021-04-09T03:16:38.333301+00:00\",\"text\":\"Отличный курс.\\r\\nСейчас, с выходом Flutter 2.0 он, скорее всего, будет сильно изменен и доработан и станет уже совсем другим, уверен, что в лучшую сторону. А на момент перед прохождения курса (мы закончили курс как раз к выходу Flutter 2.0) он содержал все необходимые темы для того, чтобы изучить технологию Flutter и язык Dart. \\r\\n\\r\\nАсинхронное программирование, хранение данных, изоляты, управление состоянием и нативные функции, построение дерева виджетов и навигация. Все основное и важное было рассмотрено.\\r\\n\\r\\nПроверка домашних заданий осуществлялась вовремя. Плюс для каждого ДЗ были сделаны заготовки и можно было выполнять задание сосредоточившись именно на нужном материале, а не писать каждый раз boilerplate код.\\r\\n\\r\\nВедущий курса Андрей и преподаватели, которые вели отдельные лекции - отличные специалисты, практикующие программирование на Flutter. Всегда помогали в слэке с вопросами и старались внести коррективы в процессе занятий, если была необходимость.\",\"shortText\":null,\"user\":{\"avatarUrl\":\"https://cdn.otus.ru/media/public/a7/03/avatar-64883-a70365.png\",\"fullName\":\"Николай Бакланов\",\"socials\":[{\"id\":12258,\"service\":\"skype\",\"value\":\"skype\"}]},\"name\":\"Николай Бакланов\"},{\"id\":849,\"dateCreated\":\"2021-02-25T07:40:51.003675+00:00\",\"text\":\"Понравилось: очень грамотные преподаватели и что важнее, реальные практики. Я прямо даже удивлен, что вам удалось собрать такой состав. В целом неплохо структурированная программа курса. \\r\\n\\r\\nНе понравилось: в начале курса - постоянные выбивания из тайминга, некоторые лекции занимали в два раза дольше. Позже это стабилизировалось. Проверка некоторых ДЗ занимала ОЧЕНЬ долго (несколько недель). За это время уже полностью забываешь контекст того что делал.\\r\\n\\r\\nРазное: Вначале показалось странным, что совсем не проходятся основы Dart, но по факту оказалось не страшно: достаточно было потратить несколько часов на доку по синтаксису. \\r\\n\\r\\nВ целом 4 из 5. Есть что улучшить, но фундаментально - все хорошо.\",\"shortText\":null,\"user\":{\"avatarUrl\":\"https://cdn.otus.ru/media/public/a1/68/avatar-1801-a168dd.png\",\"fullName\":\"Андрей Глащенко\",\"socials\":[]},\"name\":\"Андрей Глащенко\"},{\"id\":834,\"dateCreated\":\"2021-02-15T19:28:07.488700+00:00\",\"text\":\"Курс очень хорошо систематизирует знания, углубленно даёт важные темы и обучает промышленной разработке на флаттере. Для полных новичков не подойдёт - нужно понимать хотя бы основы программирования, желательно в мобильной разработке или во фронтэнде, и знать основы git и github. Материал весьма объемный и сложный, но подается вполне понятно и доступно. Преподаватели очень доброжелательны, готовы помочь. Я всегда мог обсудить непонятные вопросы в слаке курса и получал всю возможную помощь. Понравились код ревью и проверка ДЗ - все замечания четко и по делу. Понравился очень основательный подход в сложных темах - анимации, state management, тестирование.\\r\\nНе понравилось нерегулярная выдача ДЗ. Хотелось бы получать задание на каждую неделю.\\r\\nВ целом курсом доволен, всё, что хотел и на что рассчитывал - получил. И спасибо преподавателям за работу! )\",\"shortText\":null,\"user\":{\"avatarUrl\":\"https://cdn.otus.ru/media/public/70/8c/avatar-1801-708cf0.png\",\"fullName\":\"Константин Кузьминов\",\"socials\":[{\"id\":62932,\"service\":\"telegram\",\"value\":\"telegram\"},{\"id\":62933,\"service\":\"viber\",\"value\":\"viber\"},{\"id\":62934,\"service\":\"vk\",\"value\":\"vk\"}]},\"name\":\"Константин Кузьминов\"},{\"id\":817,\"dateCreated\":\"2021-02-02T21:02:44.154982+00:00\",\"text\":\"Очень довольна, что пошла именно на этот курс. Особенно радует проверка ДЗ и ревью кода преподавателями, это именно то, чего не хватает при самостоятельном обучении. Материалы курса хорошо структурированы и в них легко ориентироваться, думаю, что еще не раз буду пересматривать лекции с курса. \\r\\nПосле сдачи выпускной работы и отдыха обязательно выберу себе еще какой-нибудь курс)\",\"shortText\":null,\"user\":{\"avatarUrl\":\"https://cdn.otus.ru/media/public/14/94/avatar-1801-149497.png\",\"fullName\":\"Элина Сафарьянова\",\"socials\":[{\"id\":55525,\"service\":\"telegram\",\"value\":\"telegram\"}]},\"name\":\"Элина Сафарьянова\"}]},{\"header\":\"\u003ch2\u003eДиплом о профессиональной переподготовке\u003c/h2\u003e\",\"desc\":\"\u003cp\u003eOTUS осуществляет лицензированную образовательную деятельность. В конце обучения вы получите сертификат OTUS о прохождении курса\u003c/p\u003e\",\"sideDesc\":\"\u003ch3\u003eПосле обучения вы:\u003c/h3\u003e\\n\u003cbr /\u003e\\n\u003cul\u003e\\n\u003cli\u003eзаберете с собой полный комплект обучающих материалов: видеозаписи всех вебинаров, презентации к занятиям, а также решение задач и проектов в виде кода на github и другие дополнительные материалы\u003c/li\u003e\\n\u003cli\u003eполучите сертификат о прохождении курса\u003c/li\u003e\\n\u003cli\u003eприобретете опыт Flutter-разработки\u003c/li\u003e\\n\u003c/ul\u003e\",\"id\":9303,\"type\":\"SPECIALIZATION_CERTIFICATE\"},{\"id\":13847,\"type\":\"PRICE_INFORMATION\",\"isEnableInstallmentPercentageFeature\":true,\"installmentInfo\":{\"full\":7750,\"discount\":0,\"isMaxDiscount\":false,\"discountPercent\":0}},{\"id\":9305,\"type\":\"SPECIALIZATION_FAQ\",\"items\":[{\"name\":0,\"title\":\"Что, если в середине курса я не смогу продолжать обучение?\",\"description\":\"У вас есть право одного бесплатного трансфера в другую группу\"},{\"name\":1,\"title\":\"Обязательно ли защищать выпускной проект?\",\"description\":\"Для получения сертификата OTUS необходимо сдать проект. Кроме того, проект необязательно защищать перед аудиторией, а можно сдать в чате с преподавателем.\"},{\"name\":2,\"title\":\"Я могу вернуть деньги?\",\"description\":\"Да, вы можете сделать возврат средств пропорционально оставшимся месяцам обучения.\"}]}],\"theme\":\"$2e\",\"button\":{\"nextAttempt\":null,\"assessmentId\":null,\"state\":\"course_assessment_required\",\"userCourseId\":null,\"courseTitle\":\"Flutter Mobile Developer\",\"courseSlug\":\"dart-flutter\",\"groupId\":null,\"showFastbuyButton\":false},\"structuredData\":{\"@context\":\"http://schema.org\",\"@type\":\"Course\",\"name\":\"Flutter Mobile Developer\",\"url\":\"https://otus.ru\",\"logo\":\"https://otus.ru/__new_static__/img/meta-image.png\",\"sameAs\":[\"https://vk.com/otusru\",\"https://t.me/Otusjava\"],\"description\":\"\\nНаучитесь использовать инструменты необходимые для Flutter-разработчика: Dart, Platform-Specific Code, Skia, MWWM, Bloc, Redux, MobX и др.\\nСоздадите свой аналог WhatsApp и Telegram, CoinMarketCap, Todoist в рамках разработки индивидуально…\",\"provider\":{\"@type\":\"Organization\",\"name\":\"OTUS\",\"sameAs\":\"https://otus.ru\"},\"image\":\"https://otus.ru/__new_static__/img/meta-image.png\",\"aggregateRating\":{\"@type\":\"AggregateRating\",\"ratingValue\":\"4.7\",\"ratingCount\":\"150\"},\"offers\":{\"@type\":\"Offer\",\"priceCurrency\":\"RUB\",\"price\":93000,\"availability\":\"https://schema.org/InStock\",\"url\":\"https://otus.ru/lessons/dart-flutter\"},\"hasCourseInstance\":{\"@type\":\"CourseInstance\",\"name\":\"Flutter Mobile Developer (Онлайн)\",\"courseMode\":\"Online\",\"startDate\":\"2026-04-30\",\"endDate\":\"2027-01-13\",\"duration\":\"P6M\"}}}}]}]\n"])</script><style data-styled="" data-styled-version="5.3.10"></style></body></html><style data-styled="" data-styled-version="5.3.10"></style>