Калькулятор периметра грядки
Точно рассчитайте периметр, площадь, объём грунта и количество материала для бортиков вашей грядки любой формы за 10 секунд.
0
Периметр с запасом 10%
м
Как пользоваться калькулятором
1
Выберите форму грядки: прямоугольную, квадратную, круглую или треугольную. Большинство грядок на даче — прямоугольные, но круглая клумба или треугольный угол тоже встречаются часто.
2
Введите размеры в метрах. Например, для прямоугольной грядки укажите длину 6 м и ширину 1,2 м. Для круглой задайте радиус 1,5 м. Для треугольной — сторону 3 м.
3
Укажите глубину грядки в сантиметрах (например, 30 см) и стандартную длину доски или бордюрного блока, который планируете использовать (обычно 2 м или 3 м). Если бортик не нужен — оставьте значение по умолчанию.
4
Нажмите «Рассчитать». Вы получите периметр, площадь, объём грунта, количество досок или блоков для бортика и эти же значения с запасом 10% — чтобы не пришлось бежать в магазин за одной недостающей доской в разгар сезона.
Примеры расчёта
Стандартная прямоугольная грядка 6 × 1,2 м
Длина 6 м, ширина 1,2 м, глубина 30 см, доска 2 м.
Периметр: 14,4 м. Площадь: 7,2 м². Объём грунта: 2,16 м³.
Досок нужно: 8 шт (14,4 / 2 = 7,2 → округляем вверх до 8). С запасом 10%: 9 шт.
Круглая клумба радиусом 1,5 м
Радиус 1,5 м, глубина 25 см, бордюрный блок 1 м.
Периметр: 9,42 м. Площадь: 7,07 м². Объём грунта: 1,77 м³.
Блоков нужно: 10 шт (9,42 / 1 = 9,42 → 10). С запасом: 11 шт.
Треугольная угловая грядка со стороной 3 м
Сторона 3 м, глубина 20 см, доска 2 м.
Периметр: 9 м. Площадь: 3,9 м². Объём грунта: 0,78 м³.
Досок нужно: 5 шт (9 / 2 = 4,5 → 5). С запасом: 5 шт (9,9 / 2 = 4,95 → 5).
Формулы расчёта
Калькулятор использует следующие базовые геометрические формулы:
Прямоугольник и квадрат
Периметр = 2 × (длина + ширина)
Площадь = длина × ширина
Для квадрата длина и ширина равны, формула упрощается: Периметр = 4 × сторона, Площадь = сторона².
Круг
Периметр (длина окружности) = 2 × π × радиус
Площадь = π × радиус²
где π ≈ 3,1416.
Равносторонний треугольник
Периметр = 3 × сторона
Площадь = (√3 / 4) × сторона²
где √3 ≈ 1,732.
Объём грунта и количество материала
Объём грунта (м³) = Площадь (м²) × Глубина (см) / 100
Количество досок/блоков = Периметр / Длина одной доски (округляется вверх до целого)
Запас 10% = значение × 1,1
Нормы и ориентиры
- Стандартная длина доски — 2, 3 или 6 метров. Для грядок чаще всего используют доску 2 м, так как её проще перевозить и монтировать. Толщина доски для грядки — от 25 до 40 мм.
- Глубина грядки — от 15 до 40 см для большинства овощных культур. Для корнеплодов (морковь, свёкла, картофель) рекомендуется глубина не менее 30–35 см. Для зелени и салата достаточно 15–20 см.
- Высота бортика над землёй — обычно 15–25 см. Более высокие грядки (40–60 см) делают для удобства ухода без наклона, но они требуют больше грунта.
- Объём плодородного грунта — для заполнения 1 м² грядки глубиной 30 см потребуется 0,3 м³ почвосмеси. Стандартный мешок готового грунта — 40–50 литров (0,04–0,05 м³).
- Бордюрные блоки — обычно длиной 0,5–1 м и высотой 15–20 см. Рассчитывайте количество блоков по периметру с округлением вверх.
- Запас материала — всегда закладывайте 10–15% на обрезки, подгонку углов и возможный брак. Для сложных форм запас лучше увеличить до 15–20%.
- Все нормы и ориентиры являются усреднёнными. Конкретные размеры и материалы подбирайте под свои задачи и тип почвы.
Что влияет на результат
- Форма грядки. При одинаковой площади периметр у круга минимален, у вытянутого прямоугольника — значительно больше. Это напрямую влияет на расход материала для бортиков.
- Точность измерения. Измеряйте длину и ширину с точностью до сантиметра. Ошибка в 5–10 см на большой грядке может привести к нехватке или перерасходу доски.
- Глубина грядки. Чем глубже — тем больше грунта нужно закупить. Для высоких грядок объём грунта может оказаться неожиданно большим, планируйте доставку заранее.
- Стандартная длина доски. Если вы используете доску 3 м вместо 2 м, количество стыков уменьшится, но может увеличиться количество обрезков. Подбирайте длину так, чтобы минимизировать отходы.
- Способ стыковки углов. При соединении досок внахлёст, встык или с запилом под 45° расход материала немного меняется. Калькулятор даёт базовый расчёт для стыковки встык, фактический расход может отличаться на 5–7%.
- Тип бордюра. Гибкая пластиковая лента считается по метражу и не требует запаса на стыки, а жёсткие блоки или доски требуют округления до целого числа.
Важные нюансы
- Результат калькулятора — ориентировочный. Он не учитывает толщину доски, способ крепления углов, неровности рельефа и необходимость в дополнительных опорных столбиках. Для точной сметы сделайте чертёж грядки на бумаге.
- Покупайте доску с запасом. Даже при точном расчёте одна-две доски могут оказаться с сучками, трещинами или поводкой. Лучше иметь 1–2 лишние, чем ехать в магазин второй раз.
- Для деревянных грядок используйте пропитку. Доска, контактирующая с влажной землёй, быстро гниёт. Обработайте древесину антисептиком или льняным маслом. Не используйте отработку машинного масла и токсичные составы — они попадают в почву и в урожай.
- При расчёте грунта учитывайте усадку. Свеженасыпанный рыхлый грунт через 2–3 недели после поливов осядет на 5–10 см. Заказывайте грунт с запасом 10–15% по объёму или досыпайте позже.
- Грунт для грядок — это смесь. Обычно используют смесь садовой земли, компоста, торфа и песка в пропорции 2:1:1:1. Не засыпайте грядку одним торфом или чернозёмом — растениям нужна сбалансированная структура почвы.
- Для круглых и треугольных грядок бортик из гибкой пластиковой ленты или металлической полосы часто удобнее, чем из досок. Лента продаётся в рулонах по 10–25 м, что упрощает расчёт.
Частые ошибки
- Считать периметр «на глаз». Даже на небольшой грядке ошибка в 20–30 см по периметру может означать, что последней доски не хватит и придётся докупать или стыковать обрезки.
- Забывать про запас. Без запаса 10% на обрезки и брак вы рискуете остаться без материала в воскресенье, когда все магазины закрыты. Закладывайте запас всегда.
- Игнорировать глубину грядки при расчёте грунта. Многие считают только площадь, а потом удивляются, что грунта не хватило. Объём — это площадь × глубина в метрах.
- Покупать доску без проверки качества. Влажная, кривая или потрескавшаяся доска испортит и внешний вид, и геометрию грядки. Выбирайте сухую строганую доску хвойных пород.
- Делать слишком широкую грядку. Оптимальная ширина — 1–1,2 м, чтобы удобно дотягиваться до середины с двух сторон. Грядка шириной 1,5 м и более превращает прополку в мучение.
- Не учитывать проходы между грядками. При планировке участка оставляйте минимум 40–50 см между грядками для прохода с лейкой, тачкой или газонокосилкой.
Ответы на частые вопросы
Какой периметр у грядки 6 метров на 1 метр?
Периметр прямоугольной грядки 6 × 1 м составляет 14 м (2 × (6 + 1)). При использовании досок длиной 2 м потребуется 7 штук, с запасом — 8.
Сколько досок нужно на грядку 4 на 2 метра?
Периметр — 12 м. Досок по 2 м — 6 штук, с запасом 10% — 7 штук. Если бортик будет двойной по высоте (две доски друг на друга), умножайте результат на 2.
Обязательно ли делать бортик у грядки?
Нет, не обязательно. Бортик нужен для высоких и приподнятых грядок, для удержания грунта, защиты от сорняков с дорожек и придания аккуратного вида. Грядки вровень с землёй можно делать без бортиков.
Как рассчитать грунт в литрах, а не в кубометрах?
1 м³ = 1000 литров. Умножьте объём в м³ на 1000. Например, 0,3 м³ = 300 литров. Мешок 50 л — это 0,05 м³. Для грядки 6 × 1,2 × 0,3 м нужно 2,16 м³ = 2160 л, или примерно 44 мешка по 50 л.
Какая форма грядки самая экономичная по материалам?
При одинаковой площади самой экономичной по периметру будет круглая грядка — у неё минимальное отношение периметра к площади. На втором месте квадрат, затем прямоугольник. Самая неэкономичная — узкая и длинная грядка.
Можно ли использовать этот калькулятор для клумб и цветников?
Да, принцип расчёта такой же. Для цветников с криволинейной формой можно приближённо заменить её на круг или овал. Для точного расчёта сложного контура измерьте периметр рулеткой по внешнему краю.
Источники и справочные данные
- Расчёты основаны на базовых геометрических формулах периметра и площади для прямоугольника, квадрата, круга и равностороннего треугольника.
- Нормы глубины грядок для различных овощных культур взяты из агрономических справочных рекомендаций по выращиванию овощных и декоративных культур в открытом грунте.
- Ориентировочные размеры досок и бордюрных блоков основаны на стандартных типоразмерах строительных материалов, доступных в розничной продаже на территории России.
- Практические нормы расхода грунта, мульчи и посадочного материала основаны на многолетнем опыте садоводов и огородников, а также на рекомендациях производителей готовых почвосмесей.
- Все результаты являются ориентировочными. Для точной сметы материалов рекомендуется составить чертёж грядки и проконсультироваться с поставщиком пиломатериалов или бордюрных изделий.
Калькулятор периметра грядки — удобный онлайн-инструмент для быстрого расчёта длины ограждения, площади посадки, объёма плодородного грунта и количества строительного материала для бортиков. Достаточно выбрать форму грядки, ввести размеры в метрах и указать глубину — и вы получите точные цифры с учётом запаса 10% на обрезки и подгонку. Инструмент подходит для расчёта прямоугольных, квадратных, круглых и треугольных грядок, клумб и цветников и будет полезен как начинающим дачникам, так и опытным садоводам при планировании огорода и закупке материалов.
CiAgICAoZnVuY3Rpb24oKSB7CiAgICAgICAgJ3VzZSBzdHJpY3QnOwoKICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciBjb250YWluZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcubm4tZ2VuLWNhbC1jb250YWluZXInKTsKICAgICAgICAgICAgaWYgKCFjb250YWluZXIpIHJldHVybjsKCiAgICAgICAgICAgIHZhciBmb3JtID0gY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJy5ubi1nZW4tY2FsLWNhcmQnKTsKICAgICAgICAgICAgaWYgKCFmb3JtKSByZXR1cm47CgogICAgICAgICAgICB2YXIgY2FsY3VsYXRlQnRuID0gZm9ybS5xdWVyeVNlbGVjdG9yKCcubm4tZ2VuLWNhbC1idG4nKTsKICAgICAgICAgICAgdmFyIHJlc2V0QnRuID0gZm9ybS5xdWVyeVNlbGVjdG9yKCcubm4tZ2VuLWNhbC1idG4tb3V0bGluZScpOwogICAgICAgICAgICB2YXIgc2hhcGVTZWxlY3QgPSBmb3JtLnF1ZXJ5U2VsZWN0b3IoJyNnYXJkZW4tc2hhcGUnKTsKICAgICAgICAgICAgdmFyIGZpZWxkR3JvdXBzID0gewogICAgICAgICAgICAgICAgJ3JlY3RhbmdsZSc6IGZvcm0ucXVlcnlTZWxlY3RvcignLmZpZWxkLXJlY3RhbmdsZScpLAogICAgICAgICAgICAgICAgJ3NxdWFyZSc6IGZvcm0ucXVlcnlTZWxlY3RvcignLmZpZWxkLXNxdWFyZScpLAogICAgICAgICAgICAgICAgJ2NpcmNsZSc6IGZvcm0ucXVlcnlTZWxlY3RvcignLmZpZWxkLWNpcmNsZScpLAogICAgICAgICAgICAgICAgJ3RyaWFuZ2xlJzogZm9ybS5xdWVyeVNlbGVjdG9yKCcuZmllbGQtdHJpYW5nbGUnKQogICAgICAgICAgICB9OwoKICAgICAgICAgICAgZnVuY3Rpb24gY2xlYXJFcnJvcnMoKSB7CiAgICAgICAgICAgICAgICB2YXIgZXJyb3JzID0gZm9ybS5xdWVyeVNlbGVjdG9yQWxsKCcubm4tZ2VuLWNhbC1lcnJvci1tc2cnKTsKICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZXJyb3JzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgZXJyb3JzW2ldLnRleHRDb250ZW50ID0gJyc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIHNob3dFcnJvcihmaWVsZFNlbGVjdG9yLCBtZXNzYWdlKSB7CiAgICAgICAgICAgICAgICB2YXIgaW5wdXQgPSBmb3JtLnF1ZXJ5U2VsZWN0b3IoZmllbGRTZWxlY3Rvcik7CiAgICAgICAgICAgICAgICBpZiAoIWlucHV0KSByZXR1cm47CiAgICAgICAgICAgICAgICB2YXIgcGFyZW50ID0gaW5wdXQuY2xvc2VzdCgnLm5uLWdlbi1jYWwtZmllbGQtZ3JvdXAnKTsKICAgICAgICAgICAgICAgIGlmICghcGFyZW50KSByZXR1cm47CiAgICAgICAgICAgICAgICB2YXIgZXJyb3JFbCA9IHBhcmVudC5xdWVyeVNlbGVjdG9yKCcubm4tZ2VuLWNhbC1lcnJvci1tc2cnKTsKICAgICAgICAgICAgICAgIGlmIChlcnJvckVsKSB7CiAgICAgICAgICAgICAgICAgICAgZXJyb3JFbC50ZXh0Q29udGVudCA9IG1lc3NhZ2U7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIGdldFBvc2l0aXZlTnVtYmVyKHNlbGVjdG9yKSB7CiAgICAgICAgICAgICAgICB2YXIgaW5wdXQgPSBmb3JtLnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpOwogICAgICAgICAgICAgICAgaWYgKCFpbnB1dCkgcmV0dXJuIE5hTjsKICAgICAgICAgICAgICAgIHZhciB2YWwgPSBwYXJzZUZsb2F0KGlucHV0LnZhbHVlKTsKICAgICAgICAgICAgICAgIGlmIChpc05hTih2YWwpIHx8IHZhbCA8PSAwKSByZXR1cm4gTmFOOwogICAgICAgICAgICAgICAgcmV0dXJuIHZhbDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gdXBkYXRlUmVzdWx0cyhwZXJpbWV0ZXIsIGFyZWEsIHZvbHVtZSwgYm9hcmRzLCBwZXJpbWV0ZXJSZXNlcnZlLCBib2FyZHNSZXNlcnZlKSB7CiAgICAgICAgICAgICAgICB2YXIgcmVzdWx0R3JpZCA9IGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCcubm4tZ2VuLWNhbC1yZXN1bHQtZ3JpZCcpOwogICAgICAgICAgICAgICAgaWYgKCFyZXN1bHRHcmlkKSByZXR1cm47CiAgICAgICAgICAgICAgICB2YXIgaXRlbXMgPSByZXN1bHRHcmlkLnF1ZXJ5U2VsZWN0b3JBbGwoJy5ubi1nZW4tY2FsLXJlc3VsdC1pdGVtJyk7CgogICAgICAgICAgICAgICAgdmFyIGRhdGEgPSBbCiAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogcGVyaW1ldGVyLnRvRml4ZWQoMiksIGxhYmVsOiAn0J/QtdGA0LjQvNC10YLRgCcsIHVuaXQ6ICfQvCcgfSwKICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiBhcmVhLnRvRml4ZWQoMiksIGxhYmVsOiAn0J/Qu9C+0YnQsNC00YwnLCB1bml0OiAn0LzCsicgfSwKICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiB2b2x1bWUudG9GaXhlZCgyKSwgbGFiZWw6ICfQntCx0YrRkdC8INCz0YDRg9C90YLQsCcsIHVuaXQ6ICfQvMKzJyB9LAogICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6IGJvYXJkcywgbGFiZWw6ICfQlNC+0YHQvtC6L9Cx0LvQvtC60L7QsicsIHVuaXQ6ICfRiNGCJyB9LAogICAgICAgICAgICAgICAgICAgIHsgdmFsdWU6IHBlcmltZXRlclJlc2VydmUudG9GaXhlZCgyKSwgbGFiZWw6ICfQn9C10YDQuNC80LXRgtGAINGBINC30LDQv9Cw0YHQvtC8IDEwJScsIHVuaXQ6ICfQvCcgfSwKICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiBib2FyZHNSZXNlcnZlLCBsYWJlbDogJ9Cc0LDRgtC10YDQuNCw0Lsg0YEg0LfQsNC/0LDRgdC+0LwnLCB1bml0OiAn0YjRgicgfQogICAgICAgICAgICAgICAgXTsKCiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aCAmJiBpIDwgZGF0YS5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgICAgIHZhciBpdGVtID0gaXRlbXNbaV07CiAgICAgICAgICAgICAgICAgICAgdmFyIHZhbHVlRWwgPSBpdGVtLnF1ZXJ5U2VsZWN0b3IoJy5ubi1nZW4tY2FsLXJlc3VsdC12YWx1ZScpOwogICAgICAgICAgICAgICAgICAgIHZhciBsYWJlbEVsID0gaXRlbS5xdWVyeVNlbGVjdG9yKCcubm4tZ2VuLWNhbC1yZXN1bHQtbGFiZWwnKTsKICAgICAgICAgICAgICAgICAgICB2YXIgdW5pdEVsID0gaXRlbS5xdWVyeVNlbGVjdG9yKCcubm4tZ2VuLWNhbC1yZXN1bHQtdW5pdCcpOwogICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZUVsKSB2YWx1ZUVsLnRleHRDb250ZW50ID0gZGF0YVtpXS52YWx1ZTsKICAgICAgICAgICAgICAgICAgICBpZiAobGFiZWxFbCkgbGFiZWxFbC50ZXh0Q29udGVudCA9IGRhdGFbaV0ubGFiZWw7CiAgICAgICAgICAgICAgICAgICAgaWYgKHVuaXRFbCkgdW5pdEVsLnRleHRDb250ZW50ID0gZGF0YVtpXS51bml0OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiByZXNldFJlc3VsdHMoKSB7CiAgICAgICAgICAgICAgICB2YXIgdmFsdWVzID0gY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3JBbGwoJy5ubi1nZW4tY2FsLXJlc3VsdC12YWx1ZScpOwogICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2YWx1ZXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICB2YWx1ZXNbaV0udGV4dENvbnRlbnQgPSAnMCc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIHVwZGF0ZUZpZWxkVmlzaWJpbGl0eSgpIHsKICAgICAgICAgICAgICAgIHZhciBzZWxlY3RlZFNoYXBlID0gc2hhcGVTZWxlY3QudmFsdWU7CiAgICAgICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gZmllbGRHcm91cHMpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoZmllbGRHcm91cHNba2V5XSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoa2V5ID09PSBzZWxlY3RlZFNoYXBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZEdyb3Vwc1trZXldLmNsYXNzTGlzdC5yZW1vdmUoJ2hpZGRlbicpOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRHcm91cHNba2V5XS5jbGFzc0xpc3QuYWRkKCdoaWRkZW4nKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgc2hhcGVTZWxlY3QuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBjbGVhckVycm9ycygpOwogICAgICAgICAgICAgICAgdXBkYXRlRmllbGRWaXNpYmlsaXR5KCk7CiAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgdXBkYXRlRmllbGRWaXNpYmlsaXR5KCk7CgogICAgICAgICAgICBjYWxjdWxhdGVCdG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGNsZWFyRXJyb3JzKCk7CgogICAgICAgICAgICAgICAgdmFyIHNoYXBlID0gc2hhcGVTZWxlY3QudmFsdWU7CiAgICAgICAgICAgICAgICB2YXIgcGVyaW1ldGVyID0gMDsKICAgICAgICAgICAgICAgIHZhciBhcmVhID0gMDsKICAgICAgICAgICAgICAgIHZhciB2YWxpZCA9IHRydWU7CgogICAgICAgICAgICAgICAgaWYgKHNoYXBlID09PSAncmVjdGFuZ2xlJykgewogICAgICAgICAgICAgICAgICAgIHZhciBsZW5ndGggPSBnZXRQb3NpdGl2ZU51bWJlcignI3JlY3QtbGVuZ3RoJyk7CiAgICAgICAgICAgICAgICAgICAgdmFyIHdpZHRoID0gZ2V0UG9zaXRpdmVOdW1iZXIoJyNyZWN0LXdpZHRoJyk7CiAgICAgICAgICAgICAgICAgICAgaWYgKGlzTmFOKGxlbmd0aCkgfHwgaXNOYU4od2lkdGgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc05hTihsZW5ndGgpKSBzaG93RXJyb3IoJyNyZWN0LWxlbmd0aCcsICfQktCy0LXQtNC40YLQtSDQtNC70LjQvdGDINCx0L7Qu9GM0YjQtSAwJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc05hTih3aWR0aCkpIHNob3dFcnJvcignI3JlY3Qtd2lkdGgnLCAn0JLQstC10LTQuNGC0LUg0YjQuNGA0LjQvdGDINCx0L7Qu9GM0YjQtSAwJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgcGVyaW1ldGVyID0gMiAqIChsZW5ndGggKyB3aWR0aCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGFyZWEgPSBsZW5ndGggKiB3aWR0aDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHNoYXBlID09PSAnc3F1YXJlJykgewogICAgICAgICAgICAgICAgICAgIHZhciBzaWRlID0gZ2V0UG9zaXRpdmVOdW1iZXIoJyNzcS1zaWRlJyk7CiAgICAgICAgICAgICAgICAgICAgaWYgKGlzTmFOKHNpZGUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dFcnJvcignI3NxLXNpZGUnLCAn0JLQstC10LTQuNGC0LUg0YHRgtC+0YDQvtC90YMg0LHQvtC70YzRiNC1IDAnKTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWQgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBwZXJpbWV0ZXIgPSA0ICogc2lkZTsKICAgICAgICAgICAgICAgICAgICAgICAgYXJlYSA9IHNpZGUgKiBzaWRlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoc2hhcGUgPT09ICdjaXJjbGUnKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHJhZGl1cyA9IGdldFBvc2l0aXZlTnVtYmVyKCcjY2lyY2xlLXJhZGl1cycpOwogICAgICAgICAgICAgICAgICAgIGlmIChpc05hTihyYWRpdXMpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dFcnJvcignI2NpcmNsZS1yYWRpdXMnLCAn0JLQstC10LTQuNGC0LUg0YDQsNC00LjRg9GBINCx0L7Qu9GM0YjQtSAwJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgcGVyaW1ldGVyID0gMiAqIE1hdGguUEkgKiByYWRpdXM7CiAgICAgICAgICAgICAgICAgICAgICAgIGFyZWEgPSBNYXRoLlBJICogcmFkaXVzICogcmFkaXVzOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoc2hhcGUgPT09ICd0cmlhbmdsZScpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdHJpU2lkZSA9IGdldFBvc2l0aXZlTnVtYmVyKCcjdHJpLXNpZGUnKTsKICAgICAgICAgICAgICAgICAgICBpZiAoaXNOYU4odHJpU2lkZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0Vycm9yKCcjdHJpLXNpZGUnLCAn0JLQstC10LTQuNGC0LUg0YHRgtC+0YDQvtC90YMg0LHQvtC70YzRiNC1IDAnKTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWQgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBwZXJpbWV0ZXIgPSAzICogdHJpU2lkZTsKICAgICAgICAgICAgICAgICAgICAgICAgYXJlYSA9IChNYXRoLnNxcnQoMykgLyA0KSAqIHRyaVNpZGUgKiB0cmlTaWRlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoIXZhbGlkKSB7CiAgICAgICAgICAgICAgICAgICAgcmVzZXRSZXN1bHRzKCk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHZhciBkZXB0aCA9IGdldFBvc2l0aXZlTnVtYmVyKCcjZ2FyZGVuLWRlcHRoJyk7CiAgICAgICAgICAgICAgICBpZiAoaXNOYU4oZGVwdGgpKSBkZXB0aCA9IDA7CgogICAgICAgICAgICAgICAgdmFyIGJvYXJkTGVuZ3RoID0gZ2V0UG9zaXRpdmVOdW1iZXIoJyNib2FyZC1sZW5ndGgnKTsKICAgICAgICAgICAgICAgIGlmIChpc05hTihib2FyZExlbmd0aCkpIGJvYXJkTGVuZ3RoID0gMjsKCiAgICAgICAgICAgICAgICB2YXIgdm9sdW1lID0gYXJlYSAqIChkZXB0aCAvIDEwMCk7CiAgICAgICAgICAgICAgICB2YXIgYm9hcmRzTmVlZGVkID0gTWF0aC5jZWlsKHBlcmltZXRlciAvIGJvYXJkTGVuZ3RoKTsKICAgICAgICAgICAgICAgIHZhciBwZXJpbWV0ZXJSZXNlcnZlID0gcGVyaW1ldGVyICogMS4xOwogICAgICAgICAgICAgICAgdmFyIGJvYXJkc1Jlc2VydmUgPSBNYXRoLmNlaWwocGVyaW1ldGVyUmVzZXJ2ZSAvIGJvYXJkTGVuZ3RoKTsKCiAgICAgICAgICAgICAgICB1cGRhdGVSZXN1bHRzKHBlcmltZXRlciwgYXJlYSwgdm9sdW1lLCBib2FyZHNOZWVkZWQsIHBlcmltZXRlclJlc2VydmUsIGJvYXJkc1Jlc2VydmUpOwogICAgICAgICAgICB9KTsKCiAgICAgICAgICAgIHJlc2V0QnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBjbGVhckVycm9ycygpOwogICAgICAgICAgICAgICAgdmFyIG51bWJlcklucHV0cyA9IGZvcm0ucXVlcnlTZWxlY3RvckFsbCgnaW5wdXRbdHlwZT0ibnVtYmVyIl0nKTsKICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtYmVySW5wdXRzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgbnVtYmVySW5wdXRzW2ldLnZhbHVlID0gJyc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB2YXIgYm9hcmRMZW5ndGhJbnB1dCA9IGZvcm0ucXVlcnlTZWxlY3RvcignI2JvYXJkLWxlbmd0aCcpOwogICAgICAgICAgICAgICAgaWYgKGJvYXJkTGVuZ3RoSW5wdXQpIGJvYXJkTGVuZ3RoSW5wdXQudmFsdWUgPSAnMic7CiAgICAgICAgICAgICAgICBzaGFwZVNlbGVjdC52YWx1ZSA9ICdyZWN0YW5nbGUnOwogICAgICAgICAgICAgICAgdXBkYXRlRmllbGRWaXNpYmlsaXR5KCk7CiAgICAgICAgICAgICAgICByZXNldFJlc3VsdHMoKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfSk7CiAgICB9KSgpOwo=