Калькулятор стратификации семян
Рассчитайте оптимальную дату начала стратификации семян, чтобы получить крепкую рассаду точно к сезону посадки.
—
Начать стратификацию
дата
—
Начать замачивание
дата
0
Длительность стратификации
дней
+1…+5°C
Рекомендуемая температура
режим
влажный песок
Рекомендуемый субстрат
среда
🔁 Детализация комбинированной стратификации:
Тёплая фаза: —
Холодная фаза: —
Начало холодной фазы: —
Как пользоваться калькулятором
1
Выберите культуру из списка. Срок стратификации подставится автоматически. Для нестандартных растений выберите «Свой вариант» и укажите срок в днях (обычно от 14 до 120).
2
Укажите тип стратификации: холодную (в холодильнике при +1…+5°C), тёплую (комнатная температура) или комбинированную (сначала тепло, потом холод). Для комбинированной задайте длительность тёплой фазы.
3
Введите количество дней замачивания семян перед стратификацией (обычно 1–3 дня) и желаемую дату посева или высадки рассады в грунт.
4
Нажмите «Рассчитать даты». Калькулятор покажет, когда нужно начинать замачивание и стратификацию, общую длительность подготовки и рекомендованные условия.
Примеры расчёта
🌿 Лаванда к майской высадке
Срок стратификации — 35 дней, замачивание — 1 день. Желаемая дата высадки — 20 мая. Калькулятор покажет: начать замачивание 14 апреля, начать стратификацию 15 апреля. Общая подготовка — 36 дней.
🍓 Земляника на рассаду в феврале
Срок стратификации — 25 дней, без замачивания. Желаемая дата посева — 15 февраля. Начать стратификацию нужно 21 января. Семена проведут в холодильнике почти месяц и дадут дружные всходы.
🍑 Персик с комбинированной стратификацией
Общий срок — 105 дней, тёплая фаза — 21 день, холодная — 84 дня. Замачивание — 2 дня. Цель — посев 1 апреля. Начать замачивание нужно 24 ноября предыдущего года. Начинайте подготовку заранее!
Формулы расчёта
Дата начала замачивания = Желаемая дата посева − (Дни стратификации + Дни замачивания)
Дата начала стратификации = Желаемая дата посева − Дни стратификации
Общая длительность подготовки = Дни замачивания + Дни стратификации
Холодная фаза (комбинир.) = Общий срок стратификации − Тёплая фаза
Все расчёты ведутся в календарных днях. Рекомендуется закладывать запас 5–7 дней на случай, если семена не прорастут сразу после стратификации.
Нормы и ориентиры по срокам стратификации
Сроки зависят от вида растения. Ниже — проверенные на практике диапазоны для популярных культур (ориентировочные значения, возможны колебания в зависимости от сорта и качества семян):
| Культура | Срок (дней) | Тип стратификации |
| Лаванда узколистная | 30–40 | Холодная |
| Земляника садовая | 20–30 | Холодная |
| Яблоня, груша (семена) | 60–90 | Холодная |
| Вишня, слива, алыча | 90–120 | Холодная / комбинированная |
| Абрикос, персик | 60–120 | Холодная / комбинированная |
| Аквилегия, дельфиниум | 14–40 | Холодная |
| Примула, горечавка | 21–90 | Холодная |
| Аконит, клематис | 60–120 | Холодная / комбинированная |
Данные — ориентировочные. Точные сроки зависят от свежести семян, сорта и условий хранения. Всегда проверяйте рекомендации для конкретного сорта.
Что влияет на результат
- Свежесть семян. Свежесобранные семена всходят легче и могут требовать меньше времени стратификации. Лежалые семена — дольше.
- Температурный режим. Даже в холодильнике температура может колебаться от +2 до +6°C. Слишком низкая (ниже 0°C) останавливает процесс, слишком высокая (выше +7°C) — снижает эффективность.
- Влажность субстрата. Пересушенный субстрат останавливает стратификацию. Переувлажнённый — провоцирует плесень и гниль.
- Вид растения. У некоторых культур (боярышник, шиповник, некоторые виды орехов) срок стратификации может достигать 6–8 месяцев. Уточняйте для конкретного вида.
- Предварительная обработка. Скарификация (механическое повреждение оболочки) перед стратификацией сокращает срок для твердосемянных культур (косточковые, некоторые бобовые).
- Сорт и гибрид. Сортовые особенности могут менять потребность в стратификации. Гибриды F1 иногда не требуют стратификации вовсе — уточняйте на упаковке.
Важные нюансы
- ❄️ Температура холодильника. Идеальная температура для холодной стратификации — +1…+5°C. Положите пакет с семенами на нижнюю полку, подальше от морозильной камеры, чтобы избежать подмораживания.
- 💧 Субстрат должен быть влажным, не мокрым. Смешайте семена с влажным песком, перлитом или вермикулитом в пропорции 1:3. Субстрат должен быть таким, чтобы при сжатии в кулаке не сочилась вода.
- 🔄 Регулярно проверяйте семена. Раз в 7–10 дней открывайте контейнер для проветривания, проверяйте влажность и удаляйте заплесневевшие семена.
- 📦 Используйте дышащую упаковку. Полиэтиленовые пакеты с застёжкой — хороший вариант. Не закрывайте герметично. Можно использовать контейнеры с отверстиями в крышке.
- ⏰ Не затягивайте с посевом после стратификации. Как только семена начнут наклёвываться — сразу высевайте. Проклюнувшиеся семена нельзя пересушивать.
- 📋 Этикетки обязательны. Подпишите каждый пакет: название культуры, сорт, дата начала и ожидаемая дата окончания стратификации.
Частые ошибки
- Слишком короткий срок стратификации. Новички часто сокращают срок «на всякий случай». Результат: семена не просыпаются, всхожесть — 0–15%.
- Пропуск замачивания. Многие семена перед холодной стратификацией нужно замочить на 12–48 часов. Без замачивания оболочка остаётся твёрдой, и стратификация идёт неэффективно.
- Переувлажнение субстрата. Семена задыхаются, покрываются плесенью и сгнивают за первые 2–3 недели. Субстрат должен быть именно влажным.
- Хранение в морозилке. Отрицательные температуры убивают зародыш. Стратификация — это не промораживание, а охлаждение в плюсовом диапазоне.
- Игнорирование комбинированной стратификации. Косточковые (вишня, слива, абрикос) часто требуют 2–4 недели тепла перед холодом. Пропуск тёплой фазы снижает всхожесть в 2–3 раза.
- Расчёт дат «на глаз» без календаря. Легко ошибиться на 2–3 недели. Используйте калькулятор выше — он считает точно.
Ответы на частые вопросы
❓ Можно ли сократить срок стратификации?
Можно, но всхожесть упадёт. Для некоторых культур сокращение срока на 25% уменьшает всхожесть вдвое. Лучше придерживаться рекомендованных диапазонов.
❓ Что делать, если семена заплесневели?
Удалите плесневелые семена, остальные промойте в слабом растворе марганцовки или перекиси водорода (1 ч.л. на стакан воды), подсушите и заложите заново со свежим субстратом.
❓ Обязательно ли использовать песок?
Нет. Подойдут перлит, вермикулит, кокосовое волокно, торф. Главное — влагоёмкость и воздухопроницаемость. Песок удобен тем, что он не плесневеет.
❓ Можно ли стратифицировать семена в открытом грунте под зиму?
Да, это называется естественной стратификацией. Посейте семена осенью в грунт, и они пройдут стратификацию в естественных условиях. Минус — непредсказуемость погоды и риск вымерзания.
❓ Как понять, что стратификация прошла успешно?
К концу срока семена могут начать наклёвываться прямо в контейнере. Если нет — проведите тест на всхожесть: 10 семян на влажной салфетке в тепле. Если через 7–14 дней 6+ штук дали корешки — всё отлично.
❓ Нужно ли стратифицировать покупные семена?
Читайте упаковку. Если написано «требует стратификации» — да. Если производитель указал, что семена уже стратифицированы — нет, их можно сеять сразу.
Источники и справочные данные
Расчёт основан на агрономических справочных нормах по предпосевной подготовке семян плодовых, ягодных и декоративных культур. Использованы рекомендации по выращиванию растений из семян, инструкции производителей посадочного материала и практические нормы длительности стратификации для средней полосы России. Для косточковых культур учтены данные по комбинированной стратификации из научно-практических руководств по плодоводству.
Что такое стратификация и зачем она нужна
Стратификация — это имитация зимы для семян. В природе семена многих растений опадают осенью, лежат под снегом всю зиму, а весной, когда почва прогревается, дружно прорастают. Если посеять такие семена сразу в тёплую землю без периода охлаждения, они могут не взойти вовсе или дать единичные всходы.
Процесс запускает биохимические изменения внутри семени: разрушаются ингибиторы роста (вещества, блокирующие прорастание), активизируются ферменты, зародыш «просыпается» и готовится к росту. Без этого этапа семя остаётся в глубоком покое.
Какие семена требуют стратификации
Далеко не все. Однолетние цветы (бархатцы, циннии), томаты, перцы, баклажаны и большинство овощных культур в стратификации не нуждаются — их сеют сразу в грунт или на рассаду. Стратификация требуется в основном трём группам растений:
🌳 Плодовые деревья
Яблоня, груша, вишня, слива, абрикос, персик, алыча. Семена косточковых и семечковых культур имеют твёрдую оболочку и глубокий физиологический покой.
🌸 Многолетние цветы
Лаванда, примула, аквилегия, дельфиниум, горечавка, аконит, клематис, колокольчики, флоксы многолетние.
🍓 Ягодные культуры
Земляника садовая, княженика, морошка, голубика, брусника, клюква. Особенно важно для сортовой земляники из семян.
Виды стратификации: холодная, тёплая и комбинированная
Выбор типа стратификации зависит от биологии конкретного растения. Неправильный выбор — и семена либо не проснутся, либо прорастут с опозданием на год.
❄️ Холодная стратификация (+1…+5°C)
Самый распространённый тип. Семена выдерживают во влажном субстрате при низких плюсовых температурах. Подходит для лаванды, земляники, примулы, аквилегии, яблони, груши. Длительность — от 14 до 120 дней в зависимости от культуры.
☀️ Тёплая стратификация (+18…+22°C)
Применяется реже. Семена выдерживают при комнатной температуре во влажной среде. Используется для некоторых видов лилий, мускари, прострела. Часто является первой фазой комбинированной стратификации.
🔄 Комбинированная стратификация
Сначала тёплая фаза (2–6 недель при +18…+22°C), затем холодная (1–3 месяца при +1…+5°C). Обязательна для большинства косточковых: вишни, сливы, абрикоса, персика. Тёплая фаза позволяет зародышу доразвиться, холодная — запускает прорастание. Пропуск тёплой фазы — основная причина неудач с косточковыми.
Как проводить стратификацию в домашних условиях: пошаговая инструкция
Шаг 1. Замачивание (1–3 дня). Залейте семена водой комнатной температуры. Объём воды — в 3–5 раз больше объёма семян. Меняйте воду раз в 12 часов. Для туговсхожих семян можно добавить стимулятор (Эпин, Циркон) по инструкции. Всплывшие пустые семена удалите.
Шаг 2. Подготовка субстрата. Смешайте семена с влажным субстратом в пропорции 1:3 (1 часть семян, 3 части субстрата). Идеальный субстрат — крупнозернистый речной песок, перлит или смесь торфа с песком. Субстрат должен быть влажным, но не мокрым: при сжатии в кулаке вода не капает.
Шаг 3. Упаковка и маркировка. Поместите смесь в полиэтиленовый пакет с застёжкой или пластиковый контейнер. Сделайте 2–3 отверстия для воздухообмена. Обязательно прикрепите этикетку с названием, сортом и датой начала.
Шаг 4. Размещение. Для холодной стратификации — в холодильник (нижняя полка, +2…+5°C). Не ставьте к задней стенке, где температура может опускаться ниже нуля. Для тёплой — на подоконник или в кухонный шкаф.
Шаг 5. Контроль. Раз в 7–10 дней проверяйте влажность и проветривайте. При появлении плесени — удалите поражённые семена, остальные обработайте слабым раствором марганцовки и замените субстрат. При наклёвывании семян раньше срока — сразу высевайте.
Типичные ошибки при стратификации
- 🚫 Переувлажнение. Семена гниют за 2–3 недели. Субстрат должен быть именно влажным, а не мокрым.
- 🚫 Герметичная упаковка. Без доступа воздуха семена задыхаются. Всегда оставляйте отверстия для вентиляции.
- 🚫 Пропуск тёплой фазы. Для косточковых это критично. Без тепла зародыш не доразвивается, и холодная фаза не даёт результата.
- 🚫 Слишком низкая температура. При 0°C и ниже стратификация останавливается. Проверьте термометром реальную температуру на полке холодильника.
- 🚫 Посев пересохших семян после стратификации. Наклюнувшиеся семена нельзя подсушивать — ростки погибнут за несколько часов.
- 🚫 Отсутствие этикеток. Через 3 месяца легко забыть, где какой сорт. Подписывайте всё сразу.
Практические советы для высокой всхожести
- Скарификация для твердосемянных. Косточки абрикоса, персика, сливы можно аккуратно надпилить напильником или потереть наждачной бумагой до появления светлого слоя. Это ускоряет проникновение влаги и сокращает срок стратификации на 20–30%.
- Стимуляторы роста. Замачивание в растворе Эпина (2 капли на 100 мл, 12–24 часа) или Циркона повышает всхожесть на 25–40% для туговсхожих культур.
- Двойная проверка даты. Всегда перепроверяйте расчёты. Лучше начать стратификацию на 5–7 дней раньше, чем опоздать к посевному сезону.
- Ведите дневник. Записывайте даты закладки, проверок, наклёвывания. Через год эти данные бесценны для планирования.
- Пробная партия. Если семян много, заложите пробную партию на 2 недели раньше основной. Если что-то пойдёт не так — успеете скорректировать.
Естественная стратификация: посев под зиму
Самый простой способ — довериться природе. В октябре-ноябре, до устойчивых заморозков, высейте семена в подготовленные грядки или контейнеры. Прикопайте контейнеры в саду и замульчируйте слоем листвы 5–10 см. Зимой снег обеспечит стабильную температуру и влажность. Весной, когда сойдёт снег, перенесите контейнеры в парник или на подоконник.
Плюсы: не нужно занимать холодильник, процесс идёт естественным образом. Минусы: погода непредсказуема, возможны оттепели с последующими заморозками, семена могут съесть мыши. Для ценных и редких сортов лучше использовать контролируемую стратификацию в холодильнике.
Используйте калькулятор в начале этой страницы, чтобы точно рассчитать дату начала стратификации для ваших культур. Удачных вам всходов! 🌱
CihmdW5jdGlvbigpewogICd1c2Ugc3RyaWN0JzsKCiAgLy8g0JTQsNC90L3Ri9C1INC60YPQu9GM0YLRg9GAOiDQuNC90LTQtdC60YEsINC90LDQt9Cy0LDQvdC40LUsINGB0YDQvtC60LggKNC00L3QtdC5KSwg0YLQuNC/INC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOLCDRgtC10LzQv9C10YDQsNGC0YPRgNCwLCDRgdGD0LHRgdGC0YDQsNGCCiAgdmFyIGN1bHR1cmVzID0gWwogICAgeyBuYW1lOiAnJywgZGF5czogMCwgdHlwZTogJ2NvbGQnLCB0ZW1wOiAnJywgc3Vic3RyYXRlOiAnJyB9LAogICAgeyBuYW1lOiAn0JvQsNCy0LDQvdC00LAg0YPQt9C60L7Qu9C40YHRgtC90LDRjycsIGRheXM6IDM1LCB0eXBlOiAnY29sZCcsIHRlbXA6ICcrMeKApis1wrBDJywgc3Vic3RyYXRlOiAn0LLQu9Cw0LbQvdGL0Lkg0L/QtdGB0L7QuiDQuNC70Lgg0L/QtdGA0LvQuNGCJyB9LAogICAgeyBuYW1lOiAn0JfQtdC80LvRj9C90LjQutCwINGB0LDQtNC+0LLQsNGPJywgZGF5czogMjUsIHR5cGU6ICdjb2xkJywgdGVtcDogJysx4oCmKzXCsEMnLCBzdWJzdHJhdGU6ICfQstC70LDQttC90YvQuSDQv9C10YHQvtC6JyB9LAogICAgeyBuYW1lOiAn0K/QsdC70L7QvdGPICjRgdC10LzQtdC90LApJywgZGF5czogNzUsIHR5cGU6ICdjb2xkJywgdGVtcDogJysx4oCmKzXCsEMnLCBzdWJzdHJhdGU6ICfQstC70LDQttC90YvQuSDQv9C10YHQvtC6INC40LvQuCDRgtC+0YDRhCcgfSwKICAgIHsgbmFtZTogJ9CT0YDRg9GI0LAnLCBkYXlzOiA3NSwgdHlwZTogJ2NvbGQnLCB0ZW1wOiAnKzHigKYrNcKwQycsIHN1YnN0cmF0ZTogJ9Cy0LvQsNC20L3Ri9C5INC/0LXRgdC+0LonIH0sCiAgICB7IG5hbWU6ICfQktC40YjQvdGPJywgZGF5czogMTA1LCB0eXBlOiAnY29tYmluZWQnLCB0ZW1wOiAnKzHigKYrNcKwQyAo0YXQvtC70L7QtCksICsxOOKApisyMsKwQyAo0YLQtdC/0LvQviknLCBzdWJzdHJhdGU6ICfQstC70LDQttC90YvQuSDQv9C10YHQvtC6JyB9LAogICAgeyBuYW1lOiAn0KHQu9C40LLQsCcsIGRheXM6IDEwNSwgdHlwZTogJ2NvbWJpbmVkJywgdGVtcDogJysx4oCmKzXCsEMgKNGF0L7Qu9C+0LQpLCArMTjigKYrMjLCsEMgKNGC0LXQv9C70L4pJywgc3Vic3RyYXRlOiAn0LLQu9Cw0LbQvdGL0Lkg0L/QtdGB0L7QuicgfSwKICAgIHsgbmFtZTogJ9CQ0LHRgNC40LrQvtGBJywgZGF5czogNzUsIHR5cGU6ICdjb21iaW5lZCcsIHRlbXA6ICcrMeKApis1wrBDICjRhdC+0LvQvtC0KSwgKzE44oCmKzIywrBDICjRgtC10L/Qu9C+KScsIHN1YnN0cmF0ZTogJ9Cy0LvQsNC20L3Ri9C5INC/0LXRgdC+0LonIH0sCiAgICB7IG5hbWU6ICfQn9C10YDRgdC40LonLCBkYXlzOiAxMDUsIHR5cGU6ICdjb21iaW5lZCcsIHRlbXA6ICcrMeKApis1wrBDICjRhdC+0LvQvtC0KSwgKzE44oCmKzIywrBDICjRgtC10L/Qu9C+KScsIHN1YnN0cmF0ZTogJ9Cy0LvQsNC20L3Ri9C5INC/0LXRgdC+0LonIH0sCiAgICB7IG5hbWU6ICfQkNC60LLQuNC70LXQs9C40Y8gKNCy0L7QtNC+0YHQsdC+0YApJywgZGF5czogMzUsIHR5cGU6ICdjb2xkJywgdGVtcDogJysx4oCmKzXCsEMnLCBzdWJzdHJhdGU6ICfQstC70LDQttC90YvQuSDQv9C10YHQvtC6JyB9LAogICAgeyBuYW1lOiAn0JTQtdC70YzRhNC40L3QuNGD0LwnLCBkYXlzOiAxOCwgdHlwZTogJ2NvbGQnLCB0ZW1wOiAnKzHigKYrNcKwQycsIHN1YnN0cmF0ZTogJ9Cy0LvQsNC20L3Ri9C5INC/0LXRgNC70LjRgicgfSwKICAgIHsgbmFtZTogJ9Cf0YDQuNC80YPQu9CwJywgZGF5czogMjUsIHR5cGU6ICdjb2xkJywgdGVtcDogJysx4oCmKzXCsEMnLCBzdWJzdHJhdGU6ICfQstC70LDQttC90YvQuSDQv9C10YHQvtC6JyB9LAogICAgeyBuYW1lOiAn0JPQvtGA0LXRh9Cw0LLQutCwJywgZGF5czogNzUsIHR5cGU6ICdjb2xkJywgdGVtcDogJysx4oCmKzXCsEMnLCBzdWJzdHJhdGU6ICfQstC70LDQttC90YvQuSDQv9C10YHQvtC6JyB9LAogICAgeyBuYW1lOiAn0JDQutC+0L3QuNGCJywgZGF5czogMTA1LCB0eXBlOiAnY29sZCcsIHRlbXA6ICcrMeKApis1wrBDJywgc3Vic3RyYXRlOiAn0LLQu9Cw0LbQvdGL0Lkg0L/QtdGB0L7QuicgfSwKICAgIHsgbmFtZTogJ9Ca0LvQtdC80LDRgtC40YEnLCBkYXlzOiA3NSwgdHlwZTogJ2NvbGQnLCB0ZW1wOiAnKzHigKYrNcKwQycsIHN1YnN0cmF0ZTogJ9Cy0LvQsNC20L3Ri9C5INC/0LXRgdC+0LonIH0sCiAgICB7IG5hbWU6ICfQodCy0L7QuSDQstCw0YDQuNCw0L3RgicsIGRheXM6IDMwLCB0eXBlOiAnY29sZCcsIHRlbXA6ICcrMeKApis1wrBDJywgc3Vic3RyYXRlOiAn0LLQu9Cw0LbQvdGL0Lkg0L/QtdGB0L7QuiDQuNC70Lgg0L/QtdGA0LvQuNGCJywgY3VzdG9tOiB0cnVlIH0KICBdOwoKICB2YXIgY3VsdHVyZVNlbGVjdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdubi1jdWx0dXJlJyk7CiAgdmFyIGN1c3RvbURheXNHcm91cCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdubi1jdXN0b20tZGF5cy1ncm91cCcpOwogIHZhciBjdXN0b21EYXlzSW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbm4tY3VzdG9tLWRheXMnKTsKICB2YXIgc3RyYXRUeXBlU2VsZWN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25uLXN0cmF0LXR5cGUnKTsKICB2YXIgd2FybVBoYXNlR3JvdXAgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbm4td2FybS1waGFzZS1ncm91cCcpOwogIHZhciB3YXJtUGhhc2VJbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdubi13YXJtLXBoYXNlLWRheXMnKTsKICB2YXIgc29ha2luZ0lucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25uLXNvYWtpbmctZGF5cycpOwogIHZhciB0YXJnZXREYXRlSW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbm4tdGFyZ2V0LWRhdGUnKTsKICB2YXIgY2FsY0J0biA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdubi1jYWxjLWJ0bicpOwogIHZhciByZXNldEJ0biA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdubi1yZXNldC1idG4nKTsKICB2YXIgY29tYmluZWREZXRhaWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbm4tY29tYmluZWQtZGV0YWlsJyk7CgogIC8vINCj0YHRgtCw0L3QvtCy0LjRgtGMINGB0LXQs9C+0LTQvdGP0YjQvdGO0Y4g0LTQsNGC0YMgKyA2MCDQtNC90LXQuSDQv9C+INGD0LzQvtC70YfQsNC90LjRjiDQtNC70Y8g0YbQtdC70LXQstC+0Lkg0LTQsNGC0YsKICB2YXIgZGVmYXVsdFRhcmdldCA9IG5ldyBEYXRlKCk7CiAgZGVmYXVsdFRhcmdldC5zZXREYXRlKGRlZmF1bHRUYXJnZXQuZ2V0RGF0ZSgpICsgNjApOwogIHRhcmdldERhdGVJbnB1dC52YWx1ZSA9IGZvcm1hdERhdGVJU08oZGVmYXVsdFRhcmdldCk7CgogIGZ1bmN0aW9uIGZvcm1hdERhdGVJU08oZCkgewogICAgdmFyIHkgPSBkLmdldEZ1bGxZZWFyKCk7CiAgICB2YXIgbSA9IFN0cmluZyhkLmdldE1vbnRoKCkgKyAxKS5wYWRTdGFydCgyLCAnMCcpOwogICAgdmFyIGRheSA9IFN0cmluZyhkLmdldERhdGUoKSkucGFkU3RhcnQoMiwgJzAnKTsKICAgIHJldHVybiB5ICsgJy0nICsgbSArICctJyArIGRheTsKICB9CgogIGZ1bmN0aW9uIGZvcm1hdERhdGVSdShpc29TdHIpIHsKICAgIGlmICghaXNvU3RyKSByZXR1cm4gJ+KAlCc7CiAgICB2YXIgcGFydHMgPSBpc29TdHIuc3BsaXQoJy0nKTsKICAgIGlmIChwYXJ0cy5sZW5ndGggIT09IDMpIHJldHVybiBpc29TdHI7CiAgICByZXR1cm4gcGFydHNbMl0gKyAnLicgKyBwYXJ0c1sxXSArICcuJyArIHBhcnRzWzBdOwogIH0KCiAgZnVuY3Rpb24gY2xlYXJFcnJvcnMoKSB7CiAgICB2YXIgZXJyb3JzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLm5uLWdlbi1jYWwtZXJyb3ItbXNnJyk7CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVycm9ycy5sZW5ndGg7IGkrKykgewogICAgICBlcnJvcnNbaV0udGV4dENvbnRlbnQgPSAnJzsKICAgIH0KICB9CgogIGZ1bmN0aW9uIHNob3dFcnJvcihpZCwgbXNnKSB7CiAgICB2YXIgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7CiAgICBpZiAoZWwpIGVsLnRleHRDb250ZW50ID0gbXNnOwogIH0KCiAgZnVuY3Rpb24gZ2V0Q3VsdHVyZURhdGEoKSB7CiAgICB2YXIgaWR4ID0gcGFyc2VJbnQoY3VsdHVyZVNlbGVjdC52YWx1ZSwgMTApIHx8IDA7CiAgICBpZiAoaWR4ID4gMCAmJiBpZHggPCBjdWx0dXJlcy5sZW5ndGgpIHsKICAgICAgcmV0dXJuIGN1bHR1cmVzW2lkeF07CiAgICB9CiAgICByZXR1cm4gbnVsbDsKICB9CgogIC8vINCe0LHRgNCw0LHQvtGC0YfQuNC6INCy0YvQsdC+0YDQsCDQutGD0LvRjNGC0YPRgNGLCiAgY3VsdHVyZVNlbGVjdC5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBmdW5jdGlvbigpIHsKICAgIHZhciBjZCA9IGdldEN1bHR1cmVEYXRhKCk7CiAgICBpZiAoY2QgJiYgY2QuY3VzdG9tKSB7CiAgICAgIGN1c3RvbURheXNHcm91cC5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsKICAgICAgY3VzdG9tRGF5c0lucHV0LnZhbHVlID0gY3VzdG9tRGF5c0lucHV0LnZhbHVlIHx8ICczMCc7CiAgICB9IGVsc2UgewogICAgICBjdXN0b21EYXlzR3JvdXAuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgICAgaWYgKGNkKSB7CiAgICAgICAgY3VzdG9tRGF5c0lucHV0LnZhbHVlID0gY2QuZGF5czsKICAgICAgfQogICAgfQogICAgLy8g0JDQstGC0L7Rg9GB0YLQsNC90L7QstC60LAg0YLQuNC/0LAg0YHRgtGA0LDRgtC40YTQuNC60LDRhtC40LgKICAgIGlmIChjZCkgewogICAgICBzdHJhdFR5cGVTZWxlY3QudmFsdWUgPSBjZC50eXBlOwogICAgICB0b2dnbGVXYXJtUGhhc2UoKTsKICAgIH0KICAgIGNsZWFyRXJyb3JzKCk7CiAgfSk7CgogIC8vINCe0LHRgNCw0LHQvtGC0YfQuNC6INC40LfQvNC10L3QtdC90LjRjyDRgtC40L/QsCDRgdGC0YDQsNGC0LjRhNC40LrQsNGG0LjQuAogIHN0cmF0VHlwZVNlbGVjdC5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBmdW5jdGlvbigpIHsKICAgIHRvZ2dsZVdhcm1QaGFzZSgpOwogICAgY2xlYXJFcnJvcnMoKTsKICB9KTsKCiAgZnVuY3Rpb24gdG9nZ2xlV2FybVBoYXNlKCkgewogICAgaWYgKHN0cmF0VHlwZVNlbGVjdC52YWx1ZSA9PT0gJ2NvbWJpbmVkJykgewogICAgICB3YXJtUGhhc2VHcm91cC5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsKICAgICAgLy8g0KPRgdGC0LDQvdC+0LLQuNGC0Ywg0YDQsNC30YPQvNC90L7QtSDQt9C90LDRh9C10L3QuNC1INC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOCiAgICAgIHZhciBjZCA9IGdldEN1bHR1cmVEYXRhKCk7CiAgICAgIHZhciB0b3RhbERheXMgPSBnZXRUb3RhbFN0cmF0RGF5cygpOwogICAgICBpZiAoIXdhcm1QaGFzZUlucHV0LnZhbHVlIHx8IHBhcnNlSW50KHdhcm1QaGFzZUlucHV0LnZhbHVlKSA8PSAwKSB7CiAgICAgICAgd2FybVBoYXNlSW5wdXQudmFsdWUgPSBNYXRoLm1heCg3LCBNYXRoLnJvdW5kKHRvdGFsRGF5cyAqIDAuMjUpKTsKICAgICAgfQogICAgfSBlbHNlIHsKICAgICAgd2FybVBoYXNlR3JvdXAuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgIH0KICB9CgogIGZ1bmN0aW9uIGdldFRvdGFsU3RyYXREYXlzKCkgewogICAgdmFyIGNkID0gZ2V0Q3VsdHVyZURhdGEoKTsKICAgIGlmIChjZCAmJiBjZC5jdXN0b20pIHsKICAgICAgcmV0dXJuIHBhcnNlSW50KGN1c3RvbURheXNJbnB1dC52YWx1ZSkgfHwgMDsKICAgIH0KICAgIGlmIChjZCkgcmV0dXJuIGNkLmRheXM7CiAgICByZXR1cm4gMDsKICB9CgogIC8vINCf0YDQuCDQuNC30LzQtdC90LXQvdC40LggY3VzdG9tIGRheXMg0LjQu9C4IHdhcm0gcGhhc2Ug0L/RgNC4INC60L7QvNCx0LjQvdC40YDQvtCy0LDQvdC90L7QuSDigJQg0L/RgNC+0LLQtdGA0Y/RgtGMLCDRh9GC0L4g0YLRkdC/0LvQsNGPINGE0LDQt9CwINC90LUg0L/RgNC10LLRi9GI0LDQtdGCINC+0LHRidC40Lkg0YHRgNC+0LoKICBjdXN0b21EYXlzSW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCBmdW5jdGlvbigpIHsKICAgIGlmIChzdHJhdFR5cGVTZWxlY3QudmFsdWUgPT09ICdjb21iaW5lZCcpIHsKICAgICAgdmFsaWRhdGVXYXJtUGhhc2VWc1RvdGFsKCk7CiAgICB9CiAgICBjbGVhckVycm9ycygpOwogIH0pOwoKICB3YXJtUGhhc2VJbnB1dC5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsIGZ1bmN0aW9uKCkgewogICAgdmFsaWRhdGVXYXJtUGhhc2VWc1RvdGFsKCk7CiAgICBjbGVhckVycm9ycygpOwogIH0pOwoKICBmdW5jdGlvbiB2YWxpZGF0ZVdhcm1QaGFzZVZzVG90YWwoKSB7CiAgICB2YXIgdG90YWwgPSBnZXRUb3RhbFN0cmF0RGF5cygpOwogICAgdmFyIHdhcm0gPSBwYXJzZUludCh3YXJtUGhhc2VJbnB1dC52YWx1ZSkgfHwgMDsKICAgIGlmICh3YXJtID49IHRvdGFsICYmIHRvdGFsID4gMCkgewogICAgICBzaG93RXJyb3IoJ25uLXdhcm0tcGhhc2UtZXJyb3InLCAn0KLRkdC/0LvQsNGPINGE0LDQt9CwINC00L7Qu9C20L3QsCDQsdGL0YLRjCDQvNC10L3RjNGI0LUg0L7QsdGJ0LXQs9C+INGB0YDQvtC60LAg0YHRgtGA0LDRgtC40YTQuNC60LDRhtC40LggKCcgKyB0b3RhbCArICcg0LTQvS4pJyk7CiAgICB9IGVsc2UgewogICAgICBzaG93RXJyb3IoJ25uLXdhcm0tcGhhc2UtZXJyb3InLCAnJyk7CiAgICB9CiAgfQoKICAvLyDQmtC90L7Qv9C60LAgItCg0LDRgdGB0YfQuNGC0LDRgtGMIgogIGNhbGNCdG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpIHsKICAgIGNsZWFyRXJyb3JzKCk7CiAgICB2YXIgdmFsaWQgPSB0cnVlOwoKICAgIC8vINCf0YDQvtCy0LXRgNC60LAg0LrRg9C70YzRgtGD0YDRiwogICAgdmFyIGNkID0gZ2V0Q3VsdHVyZURhdGEoKTsKICAgIGlmICghY2QpIHsKICAgICAgc2hvd0Vycm9yKCdubi1jdWx0dXJlLWVycm9yJywgJ9CS0YvQsdC10YDQuNGC0LUg0LrRg9C70YzRgtGD0YDRgyDQuNC3INGB0L/QuNGB0LrQsC4nKTsKICAgICAgdmFsaWQgPSBmYWxzZTsKICAgIH0KCiAgICAvLyDQn9GA0L7QstC10YDQutCwIGN1c3RvbSBkYXlzCiAgICB2YXIgdG90YWxTdHJhdERheXMgPSBnZXRUb3RhbFN0cmF0RGF5cygpOwogICAgaWYgKGNkICYmIGNkLmN1c3RvbSkgewogICAgICBpZiAoIXRvdGFsU3RyYXREYXlzIHx8IHRvdGFsU3RyYXREYXlzIDwgMSB8fCB0b3RhbFN0cmF0RGF5cyA+IDE4MCkgewogICAgICAgIHNob3dFcnJvcignbm4tY3VzdG9tLWRheXMtZXJyb3InLCAn0JLQstC10LTQuNGC0LUg0YHRgNC+0Log0L7RgiAxINC00L4gMTgwINC00L3QtdC5LicpOwogICAgICAgIHZhbGlkID0gZmFsc2U7CiAgICAgIH0KICAgIH0gZWxzZSBpZiAoY2QgJiYgdG90YWxTdHJhdERheXMgPD0gMCkgewogICAgICB2YWxpZCA9IGZhbHNlOwogICAgfQoKICAgIC8vINCf0YDQvtCy0LXRgNC60LAg0YLRkdC/0LvQvtC5INGE0LDQt9GLINC00LvRjyDQutC+0LzQsdC40L3QuNGA0L7QstCw0L3QvdC+0LkKICAgIHZhciBzdHJhdFR5cGUgPSBzdHJhdFR5cGVTZWxlY3QudmFsdWU7CiAgICB2YXIgd2FybURheXMgPSAwOwogICAgaWYgKHN0cmF0VHlwZSA9PT0gJ2NvbWJpbmVkJykgewogICAgICB3YXJtRGF5cyA9IHBhcnNlSW50KHdhcm1QaGFzZUlucHV0LnZhbHVlKSB8fCAwOwogICAgICBpZiAod2FybURheXMgPCAxIHx8IHdhcm1EYXlzID49IHRvdGFsU3RyYXREYXlzKSB7CiAgICAgICAgc2hvd0Vycm9yKCdubi13YXJtLXBoYXNlLWVycm9yJywgJ9CS0LLQtdC00LjRgtC1INC00LvQuNGC0LXQu9GM0L3QvtGB0YLRjCDRgtGR0L/Qu9C+0Lkg0YTQsNC30YsgKNC+0YIgMSDQtNC+ICcgKyAodG90YWxTdHJhdERheXMgLSAxKSArICcg0LTQvdC10LkpLicpOwogICAgICAgIHZhbGlkID0gZmFsc2U7CiAgICAgIH0KICAgIH0KCiAgICAvLyDQn9GA0L7QstC10YDQutCwINC30LDQvNCw0YfQuNCy0LDQvdC40Y8KICAgIHZhciBzb2FraW5nRGF5cyA9IHBhcnNlSW50KHNvYWtpbmdJbnB1dC52YWx1ZSk7CiAgICBpZiAoaXNOYU4oc29ha2luZ0RheXMpIHx8IHNvYWtpbmdEYXlzIDwgMCB8fCBzb2FraW5nRGF5cyA+IDE0KSB7CiAgICAgIHNob3dFcnJvcignbm4tc29ha2luZy1lcnJvcicsICfQktCy0LXQtNC40YLQtSDRh9C40YHQu9C+INC+0YIgMCDQtNC+IDE0INC00L3QtdC5LicpOwogICAgICB2YWxpZCA9IGZhbHNlOwogICAgfQoKICAgIC8vINCf0YDQvtCy0LXRgNC60LAg0LTQsNGC0YsKICAgIHZhciB0YXJnZXREYXRlU3RyID0gdGFyZ2V0RGF0ZUlucHV0LnZhbHVlOwogICAgaWYgKCF0YXJnZXREYXRlU3RyKSB7CiAgICAgIHNob3dFcnJvcignbm4tdGFyZ2V0LWRhdGUtZXJyb3InLCAn0JLRi9Cx0LXRgNC40YLQtSDQttC10LvQsNC10LzRg9GOINC00LDRgtGDINC/0L7RgdC10LLQsC4nKTsKICAgICAgdmFsaWQgPSBmYWxzZTsKICAgIH0KCiAgICBpZiAoIXZhbGlkKSByZXR1cm47CgogICAgdmFyIHRhcmdldERhdGUgPSBuZXcgRGF0ZSh0YXJnZXREYXRlU3RyICsgJ1QwMDowMDowMCcpOwogICAgaWYgKGlzTmFOKHRhcmdldERhdGUuZ2V0VGltZSgpKSkgewogICAgICBzaG93RXJyb3IoJ25uLXRhcmdldC1kYXRlLWVycm9yJywgJ9Cd0LXQutC+0YDRgNC10LrRgtC90LDRjyDQtNCw0YLQsC4nKTsKICAgICAgcmV0dXJuOwogICAgfQoKICAgIC8vINCg0LDRgdGH0ZHRggogICAgdmFyIHRvdGFsUHJlcERheXMgPSB0b3RhbFN0cmF0RGF5cyArIHNvYWtpbmdEYXlzOwogICAgdmFyIHN0cmF0U3RhcnREYXRlID0gbmV3IERhdGUodGFyZ2V0RGF0ZS5nZXRUaW1lKCkgLSB0b3RhbFN0cmF0RGF5cyAqIDg2NDAwMDAwKTsKICAgIHZhciBzb2FrU3RhcnREYXRlID0gbmV3IERhdGUodGFyZ2V0RGF0ZS5nZXRUaW1lKCkgLSB0b3RhbFByZXBEYXlzICogODY0MDAwMDApOwoKICAgIC8vINCe0LHQvdC+0LLQu9C10L3QuNC1INGA0LXQt9GD0LvRjNGC0LDRgtC+0LIKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdubi1yZXN1bHQtc3RhcnQtc3RyYXQnKS50ZXh0Q29udGVudCA9IGZvcm1hdERhdGVSdShmb3JtYXREYXRlSVNPKHN0cmF0U3RhcnREYXRlKSk7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbm4tcmVzdWx0LXN0YXJ0LXNvYWsnKS50ZXh0Q29udGVudCA9IGZvcm1hdERhdGVSdShmb3JtYXREYXRlSVNPKHNvYWtTdGFydERhdGUpKTsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdubi1yZXN1bHQtdG90YWwtZGF5cycpLnRleHRDb250ZW50ID0gdG90YWxQcmVwRGF5czsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdubi1yZXN1bHQtc3RyYXQtZGF5cycpLnRleHRDb250ZW50ID0gdG90YWxTdHJhdERheXM7CgogICAgLy8g0KLQtdC80L/QtdGA0LDRgtGD0YDQsCDQuCDRgdGD0LHRgdGC0YDQsNGCCiAgICBpZiAoc3RyYXRUeXBlID09PSAnY29sZCcpIHsKICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25uLXJlc3VsdC10ZW1wJykudGV4dENvbnRlbnQgPSAnKzHigKYrNcKwQyc7CiAgICB9IGVsc2UgaWYgKHN0cmF0VHlwZSA9PT0gJ3dhcm0nKSB7CiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdubi1yZXN1bHQtdGVtcCcpLnRleHRDb250ZW50ID0gJysxOOKApisyMsKwQyc7CiAgICB9IGVsc2UgewogICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbm4tcmVzdWx0LXRlbXAnKS50ZXh0Q29udGVudCA9ICfQotGR0L/Qu9Cw0Y8gKzE44oCmKzIywrBDIOKGkiDQpdC+0LvQvtC00L3QsNGPICsx4oCmKzXCsEMnOwogICAgfQogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25uLXJlc3VsdC1zdWJzdHJhdGUnKS50ZXh0Q29udGVudCA9IGNkID8gY2Quc3Vic3RyYXRlIDogJ9Cy0LvQsNC20L3Ri9C5INC/0LXRgdC+0LonOwoKICAgIC8vINCa0L7QvNCx0LjQvdC40YDQvtCy0LDQvdC90LDRjyDQtNC10YLQsNC70LjQt9Cw0YbQuNGPCiAgICBpZiAoc3RyYXRUeXBlID09PSAnY29tYmluZWQnKSB7CiAgICAgIHZhciBjb2xkRGF5cyA9IHRvdGFsU3RyYXREYXlzIC0gd2FybURheXM7CiAgICAgIHZhciBjb2xkU3RhcnREYXRlID0gbmV3IERhdGUoc3RyYXRTdGFydERhdGUuZ2V0VGltZSgpICsgd2FybURheXMgKiA4NjQwMDAwMCk7CiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdubi13YXJtLXBoYXNlLWluZm8nKS50ZXh0Q29udGVudCA9IHdhcm1EYXlzICsgJyDQtNC90LXQuSc7CiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdubi1jb2xkLXBoYXNlLWluZm8nKS50ZXh0Q29udGVudCA9IGNvbGREYXlzICsgJyDQtNC90LXQuSc7CiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdubi1jb2xkLXN0YXJ0LWluZm8nKS50ZXh0Q29udGVudCA9IGZvcm1hdERhdGVSdShmb3JtYXREYXRlSVNPKGNvbGRTdGFydERhdGUpKTsKICAgICAgY29tYmluZWREZXRhaWwuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7CiAgICB9IGVsc2UgewogICAgICBjb21iaW5lZERldGFpbC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgfQogIH0pOwoKICAvLyDQmtC90L7Qv9C60LAg0YHQsdGA0L7RgdCwCiAgcmVzZXRCdG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpIHsKICAgIGN1bHR1cmVTZWxlY3QudmFsdWUgPSAnMCc7CiAgICBjdXN0b21EYXlzR3JvdXAuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgIGN1c3RvbURheXNJbnB1dC52YWx1ZSA9ICczMCc7CiAgICBzdHJhdFR5cGVTZWxlY3QudmFsdWUgPSAnY29sZCc7CiAgICB3YXJtUGhhc2VHcm91cC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgd2FybVBoYXNlSW5wdXQudmFsdWUgPSAnMTQnOwogICAgc29ha2luZ0lucHV0LnZhbHVlID0gJzEnOwogICAgdmFyIGR0ID0gbmV3IERhdGUoKTsKICAgIGR0LnNldERhdGUoZHQuZ2V0RGF0ZSgpICsgNjApOwogICAgdGFyZ2V0RGF0ZUlucHV0LnZhbHVlID0gZm9ybWF0RGF0ZUlTTyhkdCk7CiAgICBjbGVhckVycm9ycygpOwogICAgLy8g0KHQsdGA0L7RgSDRgNC10LfRg9C70YzRgtCw0YLQvtCyCiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbm4tcmVzdWx0LXN0YXJ0LXN0cmF0JykudGV4dENvbnRlbnQgPSAn4oCUJzsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdubi1yZXN1bHQtc3RhcnQtc29haycpLnRleHRDb250ZW50ID0gJ+KAlCc7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbm4tcmVzdWx0LXRvdGFsLWRheXMnKS50ZXh0Q29udGVudCA9ICcwJzsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdubi1yZXN1bHQtc3RyYXQtZGF5cycpLnRleHRDb250ZW50ID0gJzAnOwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25uLXJlc3VsdC10ZW1wJykudGV4dENvbnRlbnQgPSAnKzHigKYrNcKwQyc7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbm4tcmVzdWx0LXN1YnN0cmF0ZScpLnRleHRDb250ZW50ID0gJ9Cy0LvQsNC20L3Ri9C5INC/0LXRgdC+0LonOwogICAgY29tYmluZWREZXRhaWwuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICB9KTsKCiAgLy8g0JjQvdC40YbQuNCw0LvQuNC30LDRhtC40Y8KICB0b2dnbGVXYXJtUGhhc2UoKTsKCn0pKCk7Cg==