Калькулятор гипсокартона
Рассчитайте точное количество листов ГКЛ, профилей, крепежа и расходных материалов для обшивки стен или потолка.
—
Направляющий профиль UD/ПН
шт. (3 м)
—
Стоечный профиль CD/ПП
шт. (3 м)
Заполните форму и нажмите «Рассчитать»
Как пользоваться калькулятором
1
Введите общую площадь обшивки в квадратных метрах. Например, для комнаты 4×5 м с высотой потолка 2,5 м площадь стен составит (4+5)×2×2,5 = 45 м².
2
Укажите периметр помещения. Если не знаете — оставьте пустым, калькулятор оценит его по площади (как для квадратного помещения).
3
Выберите параметры: размер листа (стандарт 2500×1200 мм), количество слоёв, шаг профилей и запас на обрезку. Нажмите «Рассчитать».
4
В правой панели появятся результаты: точное количество листов, профилей, саморезов, дюбелей, шпаклёвки и армирующей ленты. Все значения округлены в большую сторону до целых единиц.
Примеры расчёта
Сценарий 1: Обшивка стен комнаты 20 м²
Площадь: 20 м², периметр: 18 м, высота: 2,5 м, лист 2500×1200 мм, 1 слой, запас 10%, шаг 600 мм.
Результат: 8 листов ГКЛ, 12 направляющих UD, 11 стоечных CD, 240 саморезов, 36 дюбель-гвоздей, 6,6 кг шпаклёвки, 15 м ленты.
Сценарий 2: Двухслойная обшивка потолка 30 м²
Площадь: 30 м², периметр: 22 м, лист 2500×1200 мм, 2 слоя, запас 15%, шаг 400 мм.
Результат: 23 листа ГКЛ, 15 направляющих UD, 28 стоечных CD, 690 саморезов, 45 дюбель-гвоздей, 19,8 кг шпаклёвки, 22,5 м ленты.
Сценарий 3: Перегородка 12 м²
Площадь: 12 м², периметр: 14 м, высота: 2,5 м, лист 2500×1200 мм, 1 слой, запас 10%, шаг 600 мм.
Результат: 5 листов ГКЛ, 10 направляющих UD, 7 стоечных CD, 150 саморезов, 28 дюбель-гвоздей, 3,9 кг шпаклёвки, 9 м ленты.
Формулы расчёта
Площадь листа (м²) = Длина (мм) × Ширина (мм) / 1 000 000
Кол-во листов = ceil( Площадь обшивки / Площадь листа × (1 + Запас / 100) ) × Слои
Направляющие UD = ceil( Периметр × 2 / 3 )
Удвоенный периметр (верх + низ), длина профиля 3 м
Стоечные CD = ceil( Периметр / Шаг ) × ceil( Высота / 3 )
Количество стоек по горизонтали × количество ярусов по вертикали
Саморезы = Кол-во листов × 30
~30 саморезов на 1 лист при однослойной обшивке
Шпаклёвка (кг) = Площадь обшивки × 0,33 × Слои
Расход ~0,33 кг/м² на один слой шпаклевания
Лента (м) = Площадь обшивки × 0,75 × Слои
~0,75 м ленты на 1 м² обшивки для заделки стыков
Пошаговое объяснение
Калькулятор сначала определяет полезную площадь одного листа гипсокартона с учётом заданных размеров. Затем делит общую площадь обшивки на площадь листа и добавляет процент запаса на подрезку и отходы — так получается базовое количество листов на один слой. Это число умножается на выбранное количество слоёв и округляется вверх до целого.
Для профилей UD (направляющих) берётся удвоенный периметр помещения — профиль устанавливается по полу и потолку (или по всем сторонам для потолка). Полученная длина делится на стандартную длину профиля 3 метра и округляется вверх.
Стоечные профили CD рассчитываются исходя из выбранного шага (400 или 600 мм): периметр делится на шаг, получается количество вертикальных стоек. Каждая стойка может стыковаться по высоте — высота помещения делится на 3 метра, результат умножается на количество стоек и округляется вверх. Крепёж считается по усреднённым нормам расхода на единицу площади.
Где применяется
- Обшивка стен гипсокартоном в жилых комнатах, офисах, коридорах.
- Монтаж подвесных потолков из ГКЛ в квартирах и частных домах.
- Возведение межкомнатных перегородок на металлическом каркасе.
- Создание ниш, коробов, арок и декоративных конструкций.
- Выравнивание кривых стен перед финишной отделкой.
- Утепление и звукоизоляция стен с закладкой минваты в каркас.
Важные нюансы
- Стандартный лист ГКЛ — 2500×1200×12,5 мм (3 м²). Существуют также листы 2000×1200, 3000×1200 и влагостойкие варианты.
- Профили выпускаются длиной 3 метра. При высоте потолка более 3 м стойки наращивают, что увеличивает расход.
- Шаг 600 мм подходит для стандартных нагрузок. Для тяжёлой плитки или двухслойной обшивки выбирайте шаг 400 мм.
- При расчёте шпаклёвки учитывайте, что стартовая и финишная смеси имеют разный расход. Калькулятор даёт усреднённое значение для универсальной гипсовой шпаклёвки.
- Дюбель-гвозди считаются для крепления направляющих к полу и потолку с шагом ~500 мм по периметру.
- Реальный расход материалов может отличаться на 5–7% в зависимости от кривизны стен и квалификации мастера.
Частые ошибки
- Забывают про запас. Всегда добавляйте минимум 10% на обрезку. Для сложных помещений с нишами — до 20%.
- Путают профили. Направляющий UD (ПН) крепится по периметру, стоечный CD (ПП) — внутри каркаса вертикально.
- Не учитывают дверные и оконные проёмы. Если проёмы большие, площадь можно уменьшить, но каркас вокруг них всё равно нужен — экономия на листах не всегда даёт экономию на профилях.
- Экономят на саморезах. Шаг крепления листа к профилю — не более 150–200 мм. Недостаток крепежа приводит к трещинам.
- Покупают шпаклёвку «впритык». Лучше взять с запасом 5–10%, остатки пригодятся для подкраски сколов при дальнейшем ремонте.
- Игнорируют акклиматизацию. Листы ГКЛ должны отлежаться в помещении не менее 24 часов перед монтажом, иначе возможна деформация.
Ответы на частые вопросы
Какой размер листа выбрать? Стандарт 2500×1200 мм подходит для большинства помещений с высотой потолка до 2,7 м. Для высоких потолков (3 м и выше) удобнее листы 3000×1200 мм — меньше стыков.
Сколько слоёв гипсокартона нужно? Для стен обычно хватает одного слоя 12,5 мм. Два слоя применяют для улучшенной звукоизоляции, огнестойкости или под тяжёлую отделку (керамогранит).
Какой шаг профилей выбрать — 400 или 600 мм? 600 мм — стандарт для стен и потолков без нагрузки. 400 мм — если планируется плитка, двухслойная обшивка или помещение с высокой влажностью.
Можно ли использовать калькулятор для влажных помещений? Да, но выбирайте влагостойкий гипсокартон (ГКЛВ). Размеры и расход крепежа такие же, формулы не меняются.
Что делать, если периметр неизвестен? Калькулятор автоматически оценит периметр по формуле 4 × √площадь, что соответствует квадратному помещению. Для вытянутых комнат лучше измерить периметр вручную.
Насколько точен расчёт? Точность составляет ±5–7% при стандартных условиях. На реальный расход влияют кривизна основания, количество углов, ниш и проёмов. Всегда округляйте вверх и добавляйте небольшой резерв.
Источники и справочные данные
Расчёт основан на нормативах расхода материалов по СНиП 3.04.01-87 и ГОСТ 6266-97 (листы гипсокартонные), а также на практических данных производителей: KNAUF, Gyproc, «Волма». Усреднённые нормы расхода шпаклёвки — 0,3–0,35 кг/м² на слой, саморезов — 25–35 шт. на лист, ленты — 0,7–0,8 м на 1 м² обшивки. Цены и точные нормы уточняйте у поставщика материалов.
Гипсокартон: полное руководство по расчёту и монтажу
Что такое гипсокартон и почему он так популярен
Гипсокартонный лист (ГКЛ) — это строительный материал, состоящий из гипсового сердечника, оклеенного с двух сторон прочным картоном. Изобретённый в США в конце XIX века, сегодня гипсокартон — основа современного ремонта. В России ежегодно продаётся более 300 миллионов квадратных метров ГКЛ. Популярность объясняется простотой монтажа, доступной ценой (от 250 ₽ за лист) и универсальностью применения.
Гипсокартон позволяет выровнять стены без мокрой штукатурки, создать идеально ровный потолок, возвести перегородку за один день. Материал экологичен, не горит и хорошо удерживает тепло. При этом он достаточно лёгкий: стандартный лист 2500×1200×12,5 мм весит около 25 кг — с ним справится один человек.
Виды гипсокартона: какой выбрать
Существует четыре основных типа ГКЛ, и выбор неправильного может привести к проблемам:
- ГКЛ (стандартный, серый) — для жилых комнат, офисов, коридоров с нормальной влажностью (до 60%). Самый дешёвый и распространённый.
- ГКЛВ (влагостойкий, зелёный) — для ванных, кухонь, балконов. Содержит гидрофобные добавки и противогрибковую пропитку. Цена выше на 30–40%.
- ГКЛО (огнестойкий, красный/розовый) — для котельных, гаражей, вокруг печей. Армирован стекловолокном, выдерживает прямой огонь до 45 минут.
- ГКЛВО (влагоогнестойкий) — комбинированный, для помещений с высокой влажностью и требованиями пожаробезопасности.
Толщина листа варьируется от 6,5 мм (арочный, гнущийся) до 25 мм (для особо прочных конструкций). Стандарт для стен и потолка — 12,5 мм. Для перегородок с дверным проёмом лучше взять листы потолще — 15–18 мм, либо делать двухслойную обшивку.
Металлический каркас: основа надёжной конструкции
Каркас из оцинкованной стали — скелет всей конструкции. Направляющий профиль UD (ПН) крепится дюбель-гвоздями к полу, потолку и стенам по периметру. В него вставляется стоечный профиль CD (ПП), который идёт с шагом 400 или 600 мм. Для двухслойной обшивки или перегородок с дверью шаг лучше уменьшить до 400 мм — это придаст жёсткость.
Стандартная длина профиля — 3 метра. Если высота стены больше 3 метров, стойки стыкуют с помощью соединителей-удлинителей, что увеличивает расход профилей примерно на 10–12% на каждый стык. Для потолка дополнительно используют подвесы — они крепятся к черновому перекрытию и удерживают каркас.
Крепёж и расходные материалы
Саморезы TN25 (чёрные, с частым шагом резьбы) — основной крепёж для фиксации ГКЛ к металлическому профилю. Расход на стандартный лист 2500×1200 мм при шаге крепления 150–200 мм составляет примерно 25–35 штук. На двухслойную обшивку первый слой крепят саморезами TN25 длиной 25 мм, второй — TN35 или TN45 (35–45 мм).
Дюбель-гвозди 6×40 мм используются для крепления направляющих к бетону или кирпичу. Средний расход — 2–3 штуки на погонный метр направляющей. Армирующая лента (серпянка) наклеивается на все стыки листов перед шпаклеванием. Универсальная гипсовая шпаклёвка наносится в 1–2 слоя общим расходом около 0,3–0,5 кг/м².
Практические советы по расчёту материалов
Опыт показывает: лучше купить на 1–2 листа больше, чем бежать в магазин посреди монтажа. Остатки уйдут на подшивку откосов, коробов или мелкий ремонт. Профили считайте с запасом 5–7% — при резке неизбежны короткие обрезки. Саморезы берите сразу упаковками по 200–500 штук: так выходит дешевле, чем поштучно, и всегда есть резерв.
Пример из практики: на комнату 20 м² (стены) уходит около 8–9 листов, 12–14 направляющих, 10–12 стоек, 250–300 саморезов и 7–8 кг шпаклёвки. При средней цене листа 350 ₽, профиля 200 ₽ за 3 метра и саморезов 1,5 ₽/шт общая стоимость материалов составит примерно 8000–10000 ₽. Это в 2–3 раза дешевле выравнивания штукатуркой той же площади.
CiAgICAoZnVuY3Rpb24oKXsKICAgICAgICB2YXIgYXJlYUlucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25uLWdlbi1jYWwtYXJlYScpOwogICAgICAgIHZhciBwZXJpbWV0ZXJJbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdubi1nZW4tY2FsLXBlcmltZXRlcicpOwogICAgICAgIHZhciBoZWlnaHRJbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdubi1nZW4tY2FsLWhlaWdodCcpOwogICAgICAgIHZhciBzaGVldExlbmd0aElucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25uLWdlbi1jYWwtc2hlZXQtbGVuZ3RoJyk7CiAgICAgICAgdmFyIHNoZWV0V2lkdGhJbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdubi1nZW4tY2FsLXNoZWV0LXdpZHRoJyk7CiAgICAgICAgdmFyIGxheWVyc1NlbGVjdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdubi1nZW4tY2FsLWxheWVycycpOwogICAgICAgIHZhciByZXNlcnZlSW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbm4tZ2VuLWNhbC1yZXNlcnZlJyk7CiAgICAgICAgdmFyIHN0ZXBTZWxlY3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbm4tZ2VuLWNhbC1zdGVwJyk7CiAgICAgICAgdmFyIGNhbGNCdG4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbm4tZ2VuLWNhbC1jYWxjLWJ0bicpOwogICAgICAgIHZhciByZXNldEJ0biA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdubi1nZW4tY2FsLXJlc2V0LWJ0bicpOwogICAgICAgIHZhciByZXN1bHRDb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbm4tZ2VuLWNhbC1yZXN1bHQtY29udGFpbmVyJyk7CiAgICAgICAgdmFyIG5vUmVzdWx0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25uLWdlbi1jYWwtbm8tcmVzdWx0Jyk7CgogICAgICAgIGZ1bmN0aW9uIGdldEVycm9yRWwoaWQpIHsKICAgICAgICAgICAgcmV0dXJuIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkICsgJy1lcnJvcicpOwogICAgICAgIH0KICAgICAgICBmdW5jdGlvbiBzaG93RXJyb3IoaWQsIG1zZykgewogICAgICAgICAgICB2YXIgZWwgPSBnZXRFcnJvckVsKGlkKTsKICAgICAgICAgICAgaWYgKGVsKSB7CiAgICAgICAgICAgICAgICBlbC50ZXh0Q29udGVudCA9IG1zZzsKICAgICAgICAgICAgICAgIGVsLmNsYXNzTGlzdC5hZGQoJ3Zpc2libGUnKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBmdW5jdGlvbiBjbGVhckVycm9yKGlkKSB7CiAgICAgICAgICAgIHZhciBlbCA9IGdldEVycm9yRWwoaWQpOwogICAgICAgICAgICBpZiAoZWwpIHsKICAgICAgICAgICAgICAgIGVsLnRleHRDb250ZW50ID0gJyc7CiAgICAgICAgICAgICAgICBlbC5jbGFzc0xpc3QucmVtb3ZlKCd2aXNpYmxlJyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZnVuY3Rpb24gY2xlYXJBbGxFcnJvcnMoKSB7CiAgICAgICAgICAgIHZhciBpZHMgPSBbJ25uLWdlbi1jYWwtYXJlYScsICdubi1nZW4tY2FsLXBlcmltZXRlcicsICdubi1nZW4tY2FsLWhlaWdodCcsICdubi1nZW4tY2FsLXNoZWV0LWxlbmd0aCcsICdubi1nZW4tY2FsLXNoZWV0LXdpZHRoJywgJ25uLWdlbi1jYWwtbGF5ZXJzJywgJ25uLWdlbi1jYWwtcmVzZXJ2ZScsICdubi1nZW4tY2FsLXN0ZXAnXTsKICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpZHMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgIGNsZWFyRXJyb3IoaWRzW2ldKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gdmFsaWRhdGUoKSB7CiAgICAgICAgICAgIGNsZWFyQWxsRXJyb3JzKCk7CiAgICAgICAgICAgIHZhciB2YWxpZCA9IHRydWU7CiAgICAgICAgICAgIHZhciBhcmVhID0gcGFyc2VGbG9hdChhcmVhSW5wdXQudmFsdWUpOwogICAgICAgICAgICBpZiAoaXNOYU4oYXJlYSkgfHwgYXJlYSA8PSAwKSB7CiAgICAgICAgICAgICAgICBzaG93RXJyb3IoJ25uLWdlbi1jYWwtYXJlYScsICfQktCy0LXQtNC40YLQtSDQv9C+0LvQvtC20LjRgtC10LvRjNC90L7QtSDRh9C40YHQu9C+LicpOwogICAgICAgICAgICAgICAgdmFsaWQgPSBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgICAgICB2YXIgcGVyaW1ldGVyVmFsID0gcGVyaW1ldGVySW5wdXQudmFsdWUudHJpbSgpOwogICAgICAgICAgICB2YXIgcGVyaW1ldGVyID0gbnVsbDsKICAgICAgICAgICAgaWYgKHBlcmltZXRlclZhbCAhPT0gJycpIHsKICAgICAgICAgICAgICAgIHBlcmltZXRlciA9IHBhcnNlRmxvYXQocGVyaW1ldGVyVmFsKTsKICAgICAgICAgICAgICAgIGlmIChpc05hTihwZXJpbWV0ZXIpIHx8IHBlcmltZXRlciA8IDApIHsKICAgICAgICAgICAgICAgICAgICBzaG93RXJyb3IoJ25uLWdlbi1jYWwtcGVyaW1ldGVyJywgJ9Cf0LXRgNC40LzQtdGC0YAg0L3QtSDQvNC+0LbQtdGCINCx0YvRgtGMINC+0YLRgNC40YbQsNGC0LXQu9GM0L3Ri9C8LicpOwogICAgICAgICAgICAgICAgICAgIHZhbGlkID0gZmFsc2U7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdmFyIGhlaWdodCA9IHBhcnNlRmxvYXQoaGVpZ2h0SW5wdXQudmFsdWUpOwogICAgICAgICAgICBpZiAoaXNOYU4oaGVpZ2h0KSB8fCBoZWlnaHQgPD0gMCkgewogICAgICAgICAgICAgICAgc2hvd0Vycm9yKCdubi1nZW4tY2FsLWhlaWdodCcsICfQktCy0LXQtNC40YLQtSDQv9C+0LvQvtC20LjRgtC10LvRjNC90YPRjiDQstGL0YHQvtGC0YMuJyk7CiAgICAgICAgICAgICAgICB2YWxpZCA9IGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHZhciBzaGVldExlbiA9IHBhcnNlRmxvYXQoc2hlZXRMZW5ndGhJbnB1dC52YWx1ZSk7CiAgICAgICAgICAgIGlmIChpc05hTihzaGVldExlbikgfHwgc2hlZXRMZW4gPCA1MDApIHsKICAgICAgICAgICAgICAgIHNob3dFcnJvcignbm4tZ2VuLWNhbC1zaGVldC1sZW5ndGgnLCAn0JzQuNC90LjQvNCw0LvRjNC90LDRjyDQtNC70LjQvdCwIOKAlCA1MDAg0LzQvC4nKTsKICAgICAgICAgICAgICAgIHZhbGlkID0gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdmFyIHNoZWV0V2lkID0gcGFyc2VGbG9hdChzaGVldFdpZHRoSW5wdXQudmFsdWUpOwogICAgICAgICAgICBpZiAoaXNOYU4oc2hlZXRXaWQpIHx8IHNoZWV0V2lkIDwgMzAwKSB7CiAgICAgICAgICAgICAgICBzaG93RXJyb3IoJ25uLWdlbi1jYWwtc2hlZXQtd2lkdGgnLCAn0JzQuNC90LjQvNCw0LvRjNC90LDRjyDRiNC40YDQuNC90LAg4oCUIDMwMCDQvNC8LicpOwogICAgICAgICAgICAgICAgdmFsaWQgPSBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgICAgICB2YXIgbGF5ZXJzID0gcGFyc2VJbnQobGF5ZXJzU2VsZWN0LnZhbHVlLCAxMCk7CiAgICAgICAgICAgIGlmIChpc05hTihsYXllcnMpIHx8IGxheWVycyA8IDEpIHsKICAgICAgICAgICAgICAgIHNob3dFcnJvcignbm4tZ2VuLWNhbC1sYXllcnMnLCAn0JLRi9Cx0LXRgNC40YLQtSDQutC+0LvQuNGH0LXRgdGC0LLQviDRgdC70L7RkdCyLicpOwogICAgICAgICAgICAgICAgdmFsaWQgPSBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgICAgICB2YXIgcmVzZXJ2ZSA9IHBhcnNlRmxvYXQocmVzZXJ2ZUlucHV0LnZhbHVlKTsKICAgICAgICAgICAgaWYgKGlzTmFOKHJlc2VydmUpIHx8IHJlc2VydmUgPCAwIHx8IHJlc2VydmUgPiA1MCkgewogICAgICAgICAgICAgICAgc2hvd0Vycm9yKCdubi1nZW4tY2FsLXJlc2VydmUnLCAn0JfQsNC/0LDRgSDQtNC+0LvQttC10L0g0LHRi9GC0Ywg0L7RgiAwINC00L4gNTAlLicpOwogICAgICAgICAgICAgICAgdmFsaWQgPSBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gdmFsaWQ7CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBjYWxjdWxhdGUoKSB7CiAgICAgICAgICAgIGlmICghdmFsaWRhdGUoKSkgewogICAgICAgICAgICAgICAgcmVzdWx0Q29udGFpbmVyLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAgICAgICAgICAgICBub1Jlc3VsdC5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgICAgICB2YXIgYXJlYSA9IHBhcnNlRmxvYXQoYXJlYUlucHV0LnZhbHVlKTsKICAgICAgICAgICAgdmFyIHBlcmltZXRlclZhbCA9IHBlcmltZXRlcklucHV0LnZhbHVlLnRyaW0oKTsKICAgICAgICAgICAgdmFyIHBlcmltZXRlcjsKICAgICAgICAgICAgaWYgKHBlcmltZXRlclZhbCAhPT0gJycpIHsKICAgICAgICAgICAgICAgIHBlcmltZXRlciA9IHBhcnNlRmxvYXQocGVyaW1ldGVyVmFsKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHBlcmltZXRlciA9IDQgKiBNYXRoLnNxcnQoYXJlYSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdmFyIGhlaWdodCA9IHBhcnNlRmxvYXQoaGVpZ2h0SW5wdXQudmFsdWUpOwogICAgICAgICAgICB2YXIgc2hlZXRMZW4gPSBwYXJzZUZsb2F0KHNoZWV0TGVuZ3RoSW5wdXQudmFsdWUpOwogICAgICAgICAgICB2YXIgc2hlZXRXaWQgPSBwYXJzZUZsb2F0KHNoZWV0V2lkdGhJbnB1dC52YWx1ZSk7CiAgICAgICAgICAgIHZhciBsYXllcnMgPSBwYXJzZUludChsYXllcnNTZWxlY3QudmFsdWUsIDEwKTsKICAgICAgICAgICAgdmFyIHJlc2VydmUgPSBwYXJzZUZsb2F0KHJlc2VydmVJbnB1dC52YWx1ZSk7CiAgICAgICAgICAgIHZhciBzdGVwID0gcGFyc2VJbnQoc3RlcFNlbGVjdC52YWx1ZSwgMTApOwoKICAgICAgICAgICAgdmFyIHNoZWV0QXJlYVNxbSA9IChzaGVldExlbiAqIHNoZWV0V2lkKSAvIDEwMDAwMDA7CiAgICAgICAgICAgIGlmIChzaGVldEFyZWFTcW0gPD0gMCkgewogICAgICAgICAgICAgICAgcmVzdWx0Q29udGFpbmVyLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAgICAgICAgICAgICBub1Jlc3VsdC5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgICAgICB2YXIgc2hlZXRzUGVyTGF5ZXIgPSBNYXRoLmNlaWwoYXJlYSAvIHNoZWV0QXJlYVNxbSAqICgxICsgcmVzZXJ2ZSAvIDEwMCkpOwogICAgICAgICAgICB2YXIgdG90YWxTaGVldHMgPSBzaGVldHNQZXJMYXllciAqIGxheWVyczsKCiAgICAgICAgICAgIHZhciB1ZENvdW50ID0gTWF0aC5jZWlsKChwZXJpbWV0ZXIgKiAyKSAvIDMpOwogICAgICAgICAgICB2YXIgY2RIb3Jpem9udGFsQ291bnQgPSBNYXRoLmNlaWwocGVyaW1ldGVyIC8gKHN0ZXAgLyAxMDAwKSk7CiAgICAgICAgICAgIHZhciBjZFZlcnRpY2FsQ291bnQgPSBNYXRoLmNlaWwoaGVpZ2h0IC8gMyk7CiAgICAgICAgICAgIHZhciBjZENvdW50ID0gY2RIb3Jpem9udGFsQ291bnQgKiBjZFZlcnRpY2FsQ291bnQ7CiAgICAgICAgICAgIGNkQ291bnQgPSBNYXRoLm1heChjZENvdW50LCBNYXRoLmNlaWwocGVyaW1ldGVyIC8gKHN0ZXAgLyAxMDAwKSkpOwoKICAgICAgICAgICAgdmFyIHNjcmV3c1BlclNoZWV0ID0gMzA7CiAgICAgICAgICAgIHZhciB0b3RhbFNjcmV3cyA9IHRvdGFsU2hlZXRzICogc2NyZXdzUGVyU2hlZXQ7CiAgICAgICAgICAgIHZhciBkb3dlbHNDb3VudCA9IE1hdGguY2VpbChwZXJpbWV0ZXIgKiAyIC8gMC41KTsKICAgICAgICAgICAgdmFyIHB1dHR5S2cgPSBNYXRoLnJvdW5kKChhcmVhICogMC4zMyAqIGxheWVycykgKiAxMCkgLyAxMDsKICAgICAgICAgICAgdmFyIHRhcGVNID0gTWF0aC5yb3VuZCgoYXJlYSAqIDAuNzUgKiBsYXllcnMpICogMTApIC8gMTA7CgogICAgICAgICAgICBpZiAoaXNOYU4odG90YWxTaGVldHMpIHx8ICFpc0Zpbml0ZSh0b3RhbFNoZWV0cykpIHRvdGFsU2hlZXRzID0gMDsKICAgICAgICAgICAgaWYgKGlzTmFOKHVkQ291bnQpIHx8ICFpc0Zpbml0ZSh1ZENvdW50KSkgdWRDb3VudCA9IDA7CiAgICAgICAgICAgIGlmIChpc05hTihjZENvdW50KSB8fCAhaXNGaW5pdGUoY2RDb3VudCkpIGNkQ291bnQgPSAwOwogICAgICAgICAgICBpZiAoaXNOYU4odG90YWxTY3Jld3MpIHx8ICFpc0Zpbml0ZSh0b3RhbFNjcmV3cykpIHRvdGFsU2NyZXdzID0gMDsKICAgICAgICAgICAgaWYgKGlzTmFOKGRvd2Vsc0NvdW50KSB8fCAhaXNGaW5pdGUoZG93ZWxzQ291bnQpKSBkb3dlbHNDb3VudCA9IDA7CiAgICAgICAgICAgIGlmIChpc05hTihwdXR0eUtnKSB8fCAhaXNGaW5pdGUocHV0dHlLZykpIHB1dHR5S2cgPSAwOwogICAgICAgICAgICBpZiAoaXNOYU4odGFwZU0pIHx8ICFpc0Zpbml0ZSh0YXBlTSkpIHRhcGVNID0gMDsKCiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdubi1nZW4tY2FsLXJlc3VsdC1zaGVldHMnKS50ZXh0Q29udGVudCA9IHRvdGFsU2hlZXRzOwogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbm4tZ2VuLWNhbC1yZXN1bHQtdWQnKS50ZXh0Q29udGVudCA9IHVkQ291bnQ7CiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdubi1nZW4tY2FsLXJlc3VsdC1jZCcpLnRleHRDb250ZW50ID0gY2RDb3VudDsKICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25uLWdlbi1jYWwtcmVzdWx0LXNjcmV3cycpLnRleHRDb250ZW50ID0gdG90YWxTY3Jld3M7CiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdubi1nZW4tY2FsLXJlc3VsdC1kb3dlbHMnKS50ZXh0Q29udGVudCA9IGRvd2Vsc0NvdW50OwogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbm4tZ2VuLWNhbC1yZXN1bHQtcHV0dHknKS50ZXh0Q29udGVudCA9IHB1dHR5S2c7CiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdubi1nZW4tY2FsLXJlc3VsdC10YXBlJykudGV4dENvbnRlbnQgPSB0YXBlTTsKCiAgICAgICAgICAgIHZhciBzdW1tYXJ5RWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbm4tZ2VuLWNhbC1yZXN1bHQtc3VtbWFyeScpOwogICAgICAgICAgICB2YXIgc2hlZXRJbmZvID0gJ9Cb0LjRgdGC0YsgJyArIHNoZWV0TGVuICsgJ8OXJyArIHNoZWV0V2lkICsgJyDQvNC8ICgnICsgKE1hdGgucm91bmQoc2hlZXRBcmVhU3FtICogMTAwKSAvIDEwMCkgKyAnINC8wrIpLCAnOwogICAgICAgICAgICB2YXIgbGF5ZXJJbmZvID0gbGF5ZXJzICsgJyDRgdC70L7QuSjQtdCyKSwg0LfQsNC/0LDRgSAnICsgcmVzZXJ2ZSArICclLCDRiNCw0LMgJyArIHN0ZXAgKyAnINC80LwuJzsKICAgICAgICAgICAgdmFyIHBlcmltZXRlckluZm8gPSAnINCf0LXRgNC40LzQtdGC0YA6ICcgKyAoTWF0aC5yb3VuZChwZXJpbWV0ZXIgKiAxMDApIC8gMTAwKSArICcg0LwuJzsKICAgICAgICAgICAgc3VtbWFyeUVsLnRleHRDb250ZW50ID0gc2hlZXRJbmZvICsgbGF5ZXJJbmZvICsgcGVyaW1ldGVySW5mbzsKCiAgICAgICAgICAgIHJlc3VsdENvbnRhaW5lci5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsKICAgICAgICAgICAgbm9SZXN1bHQuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHJlc2V0Rm9ybSgpIHsKICAgICAgICAgICAgYXJlYUlucHV0LnZhbHVlID0gJyc7CiAgICAgICAgICAgIHBlcmltZXRlcklucHV0LnZhbHVlID0gJyc7CiAgICAgICAgICAgIGhlaWdodElucHV0LnZhbHVlID0gJzIuNSc7CiAgICAgICAgICAgIHNoZWV0TGVuZ3RoSW5wdXQudmFsdWUgPSAnMjUwMCc7CiAgICAgICAgICAgIHNoZWV0V2lkdGhJbnB1dC52YWx1ZSA9ICcxMjAwJzsKICAgICAgICAgICAgbGF5ZXJzU2VsZWN0LnZhbHVlID0gJzEnOwogICAgICAgICAgICByZXNlcnZlSW5wdXQudmFsdWUgPSAnMTAnOwogICAgICAgICAgICBzdGVwU2VsZWN0LnZhbHVlID0gJzYwMCc7CiAgICAgICAgICAgIGNsZWFyQWxsRXJyb3JzKCk7CiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdubi1nZW4tY2FsLXJlc3VsdC1zaGVldHMnKS50ZXh0Q29udGVudCA9ICfigJQnOwogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbm4tZ2VuLWNhbC1yZXN1bHQtdWQnKS50ZXh0Q29udGVudCA9ICfigJQnOwogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbm4tZ2VuLWNhbC1yZXN1bHQtY2QnKS50ZXh0Q29udGVudCA9ICfigJQnOwogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbm4tZ2VuLWNhbC1yZXN1bHQtc2NyZXdzJykudGV4dENvbnRlbnQgPSAn4oCUJzsKICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25uLWdlbi1jYWwtcmVzdWx0LWRvd2VscycpLnRleHRDb250ZW50ID0gJ+KAlCc7CiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdubi1nZW4tY2FsLXJlc3VsdC1wdXR0eScpLnRleHRDb250ZW50ID0gJ+KAlCc7CiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdubi1nZW4tY2FsLXJlc3VsdC10YXBlJykudGV4dENvbnRlbnQgPSAn4oCUJzsKICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25uLWdlbi1jYWwtcmVzdWx0LXN1bW1hcnknKS50ZXh0Q29udGVudCA9ICcnOwogICAgICAgICAgICByZXN1bHRDb250YWluZXIuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgICAgICAgICAgbm9SZXN1bHQuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7CiAgICAgICAgfQoKICAgICAgICBjYWxjQnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgY2FsY3VsYXRlKTsKICAgICAgICByZXNldEJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHJlc2V0Rm9ybSk7CgogICAgICAgIHJlc3VsdENvbnRhaW5lci5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgICAgIG5vUmVzdWx0LnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snOwogICAgfSkoKTsK