Калькулятор дозировки реагента для воды
Расчёт точной массы реагента для обработки заданного объёма воды с учётом концентрации активного вещества и приготовления рабочих растворов.
Результаты расчёта
—
Масса чистого реагента
г / кг
—
Масса товарного продукта
г / кг
—
Объём рабочего раствора
л / м³
⚠️ Техника безопасности: При работе с химическими реагентами используйте средства индивидуальной защиты (перчатки, очки, респиратор). Храните реагенты в маркированной таре вдали от источников тепла и прямых солнечных лучей. Не смешивайте реагенты без точного знания химической совместимости. При приготовлении растворов всегда добавляйте реагент в воду, а не наоборот.
Как пользоваться
1
Укажите объём воды, который необходимо обработать, и выберите единицу измерения (м³ или литры). Например: 500 м³ для водоочистной станции или 50 л для лабораторной партии.
2
Выберите тип реагента из выпадающего списка. Если нужного реагента нет — выберите «Другое» и введите название вручную. Типовые дозы приведены в примерах ниже.
3
Введите дозу реагента в мг/л (миллиграмм на литр), что численно равно г/м³ (грамм на кубометр). Например: для коагуляции сульфатом алюминия типичная доза составляет 20–60 мг/л.
4
При необходимости укажите содержание активного вещества в товарном продукте (если оно меньше 100%) и концентрацию рабочего раствора (если реагент предварительно разбавляется). Нажмите «Рассчитать» для получения результата.
Примеры использования
Очистка питьевой воды на водоочистной станции
Объём воды: 5 000 м³/сут. Реагент: сульфат алюминия. Доза: 40 мг/л. Чистота товарного продукта: 95%.
→ Масса чистого реагента: 200 кг. Масса товарного продукта: ≈210,5 кг.
Обеззараживание воды в плавательном бассейне
Объём воды: 50 м³. Реагент: гипохлорит натрия (активный хлор 150 г/л в товарной форме, что эквивалентно ≈15% активного вещества). Доза активного хлора: 5 мг/л.
→ Масса чистого активного хлора: 250 г. Объём товарного гипохлорита: ≈1,67 л (при дозировании непосредственно товарного раствора).
Подщелачивание воды перед коагуляцией
Объём воды: 200 м³. Реагент: известь гашёная Ca(OH)₂. Доза: 15 мг/л. Приготовление 5%-го известкового молока.
→ Масса чистого реагента: 3 000 г (3 кг). Объём 5%-го рабочего раствора: ≈60 л.
Важные нюансы
- Доза реагента всегда подбирается на основании технологических изысканий или пробного тестирования (jar-test для коагулянтов). Калькулятор выполняет арифметический расчёт и не заменяет лабораторное определение оптимальной дозы.
- Содержание активного вещества в товарном продукте указывается в паспорте качества производителя. Для жидких реагентов (например, гипохлорит натрия) концентрация может указываться в г/л активного вещества — пересчитайте в массовые проценты через плотность раствора.
- При приготовлении рабочих растворов с концентрацией менее 1% учитывайте, что плотность разбавленных растворов близка к плотности воды (1 кг/л). Для концентрированных растворов (>10%) погрешность может быть заметной.
- Единицы измерения дозы мг/л и г/м³ численно равны: 1 мг/л = 1 г/м³. Это упрощает расчёт при работе с кубометрами воды.
- При дозировании нескольких реагентов последовательно (например, коагулянт + флокулянт) рассчитывайте каждый реагент отдельно и соблюдайте очерёдность ввода согласно технологическому регламенту.
Источники данных
- IUPAC Gold Book — Международный союз теоретической и прикладной химии, справочник химической терминологии и стандартных величин. goldbook.iupac.org
- NIST Chemistry WebBook — База данных Национального института стандартов и технологий США по химическим соединениям, молекулярным массам и физико-химическим константам. webbook.nist.gov/chemistry
- ГОСТ Р 51232-98 «Вода питьевая» — Общие требования к организации и методам контроля качества питьевой воды, включая нормативные дозы реагентов.
- Справочник по водоподготовке (Кожинов В.Ф., 2009) — Массовые дозы коагулянтов, флокулянтов и дезинфектантов для различных типов природных вод.
Калькулятор дозировки реагента для воды позволяет точно определить необходимое количество химического реагента для обработки заданного объёма воды. Инструмент учитывает тип реагента, требуемую дозу в мг/л, содержание активного вещества в товарном продукте и концентрацию приготавливаемого рабочего раствора. Расчёт основан на стандартных химических формулах, справочных данных IUPAC и методиках водоподготовки. Калькулятор будет полезен инженерам водоочистных станций, операторам бассейнов, лаборантам и специалистам по промышленной водоподготовке.
CiAgICAoZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIHZvbHVtZUlucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25uLWdlbi1jYWwtd2F0ZXItdm9sdW1lJyk7CiAgICAgICAgdmFyIHZvbHVtZVVuaXRTZWxlY3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbm4tZ2VuLWNhbC12b2x1bWUtdW5pdCcpOwogICAgICAgIHZhciByZWFnZW50VHlwZVNlbGVjdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdubi1nZW4tY2FsLXJlYWdlbnQtdHlwZScpOwogICAgICAgIHZhciBjdXN0b21SZWFnZW50R3JvdXAgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbm4tZ2VuLWNhbC1jdXN0b20tcmVhZ2VudC1ncm91cCcpOwogICAgICAgIHZhciBjdXN0b21SZWFnZW50SW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbm4tZ2VuLWNhbC1jdXN0b20tcmVhZ2VudCcpOwogICAgICAgIHZhciBkb3NlSW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbm4tZ2VuLWNhbC1kb3NlJyk7CiAgICAgICAgdmFyIHB1cml0eUlucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25uLWdlbi1jYWwtcHVyaXR5Jyk7CiAgICAgICAgdmFyIHNvbHV0aW9uQ29uY0lucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25uLWdlbi1jYWwtc29sdXRpb24tY29uYycpOwogICAgICAgIHZhciBjYWxjdWxhdGVCdG4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbm4tZ2VuLWNhbC1jYWxjdWxhdGUtYnRuJyk7CiAgICAgICAgdmFyIHJlc2V0QnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25uLWdlbi1jYWwtcmVzZXQtYnRuJyk7CiAgICAgICAgdmFyIGVycm9yTXNnID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25uLWdlbi1jYWwtZXJyb3InKTsKCiAgICAgICAgdmFyIHJlc1B1cmVNYXNzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25uLWdlbi1jYWwtcmVzLXB1cmUtbWFzcycpOwogICAgICAgIHZhciByZXNQdXJlVW5pdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdubi1nZW4tY2FsLXJlcy1wdXJlLXVuaXQnKTsKICAgICAgICB2YXIgcmVzUHJvZHVjdE1hc3MgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbm4tZ2VuLWNhbC1yZXMtcHJvZHVjdC1tYXNzJyk7CiAgICAgICAgdmFyIHJlc1Byb2R1Y3RVbml0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25uLWdlbi1jYWwtcmVzLXByb2R1Y3QtdW5pdCcpOwogICAgICAgIHZhciByZXN1bHRTb2x1dGlvbkl0ZW0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbm4tZ2VuLWNhbC1yZXN1bHQtc29sdXRpb24taXRlbScpOwogICAgICAgIHZhciByZXNTb2x1dGlvblZvbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdubi1nZW4tY2FsLXJlcy1zb2x1dGlvbi12b2wnKTsKICAgICAgICB2YXIgcmVzU29sdXRpb25Vbml0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25uLWdlbi1jYWwtcmVzLXNvbHV0aW9uLXVuaXQnKTsKICAgICAgICB2YXIgcmVzdWx0RGV0YWlsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25uLWdlbi1jYWwtcmVzdWx0LWRldGFpbCcpOwogICAgICAgIHZhciBkZXRhaWxUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25uLWdlbi1jYWwtZGV0YWlsLXRleHQnKTsKCiAgICAgICAgZnVuY3Rpb24gc2hvd0Vycm9yKG1lc3NhZ2UpIHsKICAgICAgICAgICAgZXJyb3JNc2cudGV4dENvbnRlbnQgPSBtZXNzYWdlOwogICAgICAgICAgICBlcnJvck1zZy5jbGFzc0xpc3QuYWRkKCdubi1nZW4tY2FsLWVycm9yLW1zZy0tdmlzaWJsZScpOwogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gaGlkZUVycm9yKCkgewogICAgICAgICAgICBlcnJvck1zZy50ZXh0Q29udGVudCA9ICcnOwogICAgICAgICAgICBlcnJvck1zZy5jbGFzc0xpc3QucmVtb3ZlKCdubi1nZW4tY2FsLWVycm9yLW1zZy0tdmlzaWJsZScpOwogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gZm9ybWF0TWFzcyhncmFtcykgewogICAgICAgICAgICBpZiAoZ3JhbXMgPj0gMTAwMDAwMCkgewogICAgICAgICAgICAgICAgdmFyIHRvbnMgPSBncmFtcyAvIDEwMDAwMDA7CiAgICAgICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogdG9ucy50b0ZpeGVkKHRvbnMgPCAxMCA/IDIgOiAxKSwgdW5pdDogJ9GCJyB9OwogICAgICAgICAgICB9IGVsc2UgaWYgKGdyYW1zID49IDEwMDApIHsKICAgICAgICAgICAgICAgIHZhciBrZyA9IGdyYW1zIC8gMTAwMDsKICAgICAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBrZy50b0ZpeGVkKGtnIDwgMTAgPyAyIDogMSksIHVuaXQ6ICfQutCzJyB9OwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IGdyYW1zLnRvRml4ZWQoZ3JhbXMgPCAxMCA/IDIgOiAwKSwgdW5pdDogJ9CzJyB9OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBmb3JtYXRWb2x1bWUobGl0ZXJzKSB7CiAgICAgICAgICAgIGlmIChsaXRlcnMgPj0gMTAwMCkgewogICAgICAgICAgICAgICAgdmFyIG0zID0gbGl0ZXJzIC8gMTAwMDsKICAgICAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBtMy50b0ZpeGVkKG0zIDwgMTAgPyAyIDogMSksIHVuaXQ6ICfQvMKzJyB9OwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IGxpdGVycy50b0ZpeGVkKGxpdGVycyA8IDEwID8gMiA6IDApLCB1bml0OiAn0LsnIH07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGNhbGN1bGF0ZSgpIHsKICAgICAgICAgICAgaGlkZUVycm9yKCk7CgogICAgICAgICAgICB2YXIgdm9sdW1lUmF3ID0gdm9sdW1lSW5wdXQudmFsdWUudHJpbSgpOwogICAgICAgICAgICB2YXIgZG9zZVJhdyA9IGRvc2VJbnB1dC52YWx1ZS50cmltKCk7CiAgICAgICAgICAgIHZhciBwdXJpdHlSYXcgPSBwdXJpdHlJbnB1dC52YWx1ZS50cmltKCk7CiAgICAgICAgICAgIHZhciBzb2x1dGlvbkNvbmNSYXcgPSBzb2x1dGlvbkNvbmNJbnB1dC52YWx1ZS50cmltKCk7CgogICAgICAgICAgICBpZiAodm9sdW1lUmF3ID09PSAnJykgewogICAgICAgICAgICAgICAgc2hvd0Vycm9yKCfQn9C+0LbQsNC70YPQudGB0YLQsCwg0LLQstC10LTQuNGC0LUg0L7QsdGK0ZHQvCDQstC+0LTRiy4nKTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgICAgICB2YXIgdm9sdW1lID0gcGFyc2VGbG9hdCh2b2x1bWVSYXcpOwogICAgICAgICAgICBpZiAoaXNOYU4odm9sdW1lKSB8fCB2b2x1bWUgPD0gMCkgewogICAgICAgICAgICAgICAgc2hvd0Vycm9yKCfQntCx0YrRkdC8INCy0L7QtNGLINC00L7Qu9C20LXQvSDQsdGL0YLRjCDQv9C+0LvQvtC20LjRgtC10LvRjNC90YvQvCDRh9C40YHQu9C+0LwuJyk7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmIChkb3NlUmF3ID09PSAnJykgewogICAgICAgICAgICAgICAgc2hvd0Vycm9yKCfQn9C+0LbQsNC70YPQudGB0YLQsCwg0LLQstC10LTQuNGC0LUg0LTQvtC30YMg0YDQtdCw0LPQtdC90YLQsC4nKTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgICAgICB2YXIgZG9zZSA9IHBhcnNlRmxvYXQoZG9zZVJhdyk7CiAgICAgICAgICAgIGlmIChpc05hTihkb3NlKSB8fCBkb3NlIDw9IDApIHsKICAgICAgICAgICAgICAgIHNob3dFcnJvcign0JTQvtC30LAg0YDQtdCw0LPQtdC90YLQsCDQtNC+0LvQttC90LAg0LHRi9GC0Ywg0L/QvtC70L7QttC40YLQtdC70YzQvdGL0Lwg0YfQuNGB0LvQvtC8LicpOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAgICAgICAgICB2YXIgcHVyaXR5ID0gMTAwOwogICAgICAgICAgICBpZiAocHVyaXR5UmF3ICE9PSAnJykgewogICAgICAgICAgICAgICAgcHVyaXR5ID0gcGFyc2VGbG9hdChwdXJpdHlSYXcpOwogICAgICAgICAgICAgICAgaWYgKGlzTmFOKHB1cml0eSkgfHwgcHVyaXR5IDw9IDAgfHwgcHVyaXR5ID4gMTAwKSB7CiAgICAgICAgICAgICAgICAgICAgc2hvd0Vycm9yKCfQodC+0LTQtdGA0LbQsNC90LjQtSDQsNC60YLQuNCy0L3QvtCz0L4g0LLQtdGJ0LXRgdGC0LLQsCDQtNC+0LvQttC90L4g0LHRi9GC0Ywg0YfQuNGB0LvQvtC8INC+0YIgMC4xINC00L4gMTAwJS4nKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHZhciBzb2x1dGlvbkNvbmMgPSBudWxsOwogICAgICAgICAgICBpZiAoc29sdXRpb25Db25jUmF3ICE9PSAnJykgewogICAgICAgICAgICAgICAgc29sdXRpb25Db25jID0gcGFyc2VGbG9hdChzb2x1dGlvbkNvbmNSYXcpOwogICAgICAgICAgICAgICAgaWYgKGlzTmFOKHNvbHV0aW9uQ29uYykgfHwgc29sdXRpb25Db25jIDw9IDAgfHwgc29sdXRpb25Db25jID4gMTAwKSB7CiAgICAgICAgICAgICAgICAgICAgc2hvd0Vycm9yKCfQmtC+0L3RhtC10L3RgtGA0LDRhtC40Y8g0YDQsNCx0L7Rh9C10LPQviDRgNCw0YHRgtCy0L7RgNCwINC00L7Qu9C20L3QsCDQsdGL0YLRjCDRh9C40YHQu9C+0Lwg0L7RgiAwLjAxINC00L4gMTAwJS4nKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHZhciB2b2x1bWVJbk0zOwogICAgICAgICAgICBpZiAodm9sdW1lVW5pdFNlbGVjdC52YWx1ZSA9PT0gJ20zJykgewogICAgICAgICAgICAgICAgdm9sdW1lSW5NMyA9IHZvbHVtZTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHZvbHVtZUluTTMgPSB2b2x1bWUgLyAxMDAwOwogICAgICAgICAgICB9CgogICAgICAgICAgICB2YXIgcHVyZU1hc3NHcmFtcyA9IHZvbHVtZUluTTMgKiBkb3NlOwoKICAgICAgICAgICAgdmFyIHByb2R1Y3RNYXNzR3JhbXMgPSBwdXJlTWFzc0dyYW1zIC8gKHB1cml0eSAvIDEwMCk7CgogICAgICAgICAgICB2YXIgcHVyZUZvcm1hdHRlZCA9IGZvcm1hdE1hc3MocHVyZU1hc3NHcmFtcyk7CiAgICAgICAgICAgIHJlc1B1cmVNYXNzLnRleHRDb250ZW50ID0gcHVyZUZvcm1hdHRlZC52YWx1ZTsKICAgICAgICAgICAgcmVzUHVyZVVuaXQudGV4dENvbnRlbnQgPSBwdXJlRm9ybWF0dGVkLnVuaXQ7CgogICAgICAgICAgICB2YXIgcHJvZHVjdEZvcm1hdHRlZCA9IGZvcm1hdE1hc3MocHJvZHVjdE1hc3NHcmFtcyk7CiAgICAgICAgICAgIHJlc1Byb2R1Y3RNYXNzLnRleHRDb250ZW50ID0gcHJvZHVjdEZvcm1hdHRlZC52YWx1ZTsKICAgICAgICAgICAgcmVzUHJvZHVjdFVuaXQudGV4dENvbnRlbnQgPSBwcm9kdWN0Rm9ybWF0dGVkLnVuaXQ7CgogICAgICAgICAgICBpZiAoc29sdXRpb25Db25jICE9PSBudWxsICYmIHNvbHV0aW9uQ29uYyA+IDApIHsKICAgICAgICAgICAgICAgIHZhciBzb2x1dGlvblZvbHVtZUxpdGVycyA9IHB1cmVNYXNzR3JhbXMgLyAoc29sdXRpb25Db25jICogMTApOwogICAgICAgICAgICAgICAgdmFyIHNvbHV0aW9uRm9ybWF0dGVkID0gZm9ybWF0Vm9sdW1lKHNvbHV0aW9uVm9sdW1lTGl0ZXJzKTsKICAgICAgICAgICAgICAgIHJlc1NvbHV0aW9uVm9sLnRleHRDb250ZW50ID0gc29sdXRpb25Gb3JtYXR0ZWQudmFsdWU7CiAgICAgICAgICAgICAgICByZXNTb2x1dGlvblVuaXQudGV4dENvbnRlbnQgPSBzb2x1dGlvbkZvcm1hdHRlZC51bml0OwogICAgICAgICAgICAgICAgcmVzdWx0U29sdXRpb25JdGVtLnN0eWxlLmRpc3BsYXkgPSAnJzsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHJlc3VsdFNvbHV0aW9uSXRlbS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgICAgICAgICB9CgogICAgICAgICAgICB2YXIgcmVhZ2VudE5hbWUgPSAnJzsKICAgICAgICAgICAgaWYgKHJlYWdlbnRUeXBlU2VsZWN0LnZhbHVlID09PSAnb3RoZXInKSB7CiAgICAgICAgICAgICAgICByZWFnZW50TmFtZSA9IGN1c3RvbVJlYWdlbnRJbnB1dC52YWx1ZS50cmltKCkgfHwgJ9C90LUg0YPQutCw0LfQsNC9JzsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHZhciBzZWxlY3RlZE9wdGlvbiA9IHJlYWdlbnRUeXBlU2VsZWN0Lm9wdGlvbnNbcmVhZ2VudFR5cGVTZWxlY3Quc2VsZWN0ZWRJbmRleF07CiAgICAgICAgICAgICAgICByZWFnZW50TmFtZSA9IHNlbGVjdGVkT3B0aW9uID8gc2VsZWN0ZWRPcHRpb24udGV4dENvbnRlbnQgOiAn0L3QtSDQstGL0LHRgNCw0L0nOwogICAgICAgICAgICB9CgogICAgICAgICAgICB2YXIgZGV0YWlsUGFydHMgPSBbXTsKICAgICAgICAgICAgZGV0YWlsUGFydHMucHVzaCgn0KDQtdCw0LPQtdC90YI6IDxzdHJvbmc+JyArIHJlYWdlbnROYW1lICsgJzwvc3Ryb25nPicpOwogICAgICAgICAgICBkZXRhaWxQYXJ0cy5wdXNoKCfQntCx0YrRkdC8INCy0L7QtNGLOiA8c3Ryb25nPicgKyB2b2x1bWUgKyAnICcgKyAodm9sdW1lVW5pdFNlbGVjdC52YWx1ZSA9PT0gJ20zJyA/ICfQvMKzJyA6ICfQuycpICsgJzwvc3Ryb25nPicpOwogICAgICAgICAgICBkZXRhaWxQYXJ0cy5wdXNoKCfQlNC+0LfQsDogPHN0cm9uZz4nICsgZG9zZSArICcg0LzQsy/Quzwvc3Ryb25nPicpOwogICAgICAgICAgICBpZiAocHVyaXR5IDwgMTAwKSB7CiAgICAgICAgICAgICAgICBkZXRhaWxQYXJ0cy5wdXNoKCfQp9C40YHRgtC+0YLQsCDRgtC+0LLQsNGA0L3QvtCz0L4g0L/RgNC+0LTRg9C60YLQsDogPHN0cm9uZz4nICsgcHVyaXR5ICsgJyU8L3N0cm9uZz4nKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoc29sdXRpb25Db25jICE9PSBudWxsKSB7CiAgICAgICAgICAgICAgICBkZXRhaWxQYXJ0cy5wdXNoKCfQmtC+0L3RhtC10L3RgtGA0LDRhtC40Y8g0YDQsNCx0L7Rh9C10LPQviDRgNCw0YHRgtCy0L7RgNCwOiA8c3Ryb25nPicgKyBzb2x1dGlvbkNvbmMgKyAnJTwvc3Ryb25nPicpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGRldGFpbFRleHQuaW5uZXJIVE1MID0gZGV0YWlsUGFydHMuam9pbignICZuYnNwO3wmbmJzcDsgJyk7CiAgICAgICAgICAgIHJlc3VsdERldGFpbC5zdHlsZS5kaXNwbGF5ID0gJyc7CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiByZXNldCgpIHsKICAgICAgICAgICAgdm9sdW1lSW5wdXQudmFsdWUgPSAnMTAwJzsKICAgICAgICAgICAgdm9sdW1lVW5pdFNlbGVjdC52YWx1ZSA9ICdtMyc7CiAgICAgICAgICAgIHJlYWdlbnRUeXBlU2VsZWN0LnZhbHVlID0gJ2FsdW0nOwogICAgICAgICAgICBjdXN0b21SZWFnZW50R3JvdXAuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgICAgICAgICAgY3VzdG9tUmVhZ2VudElucHV0LnZhbHVlID0gJyc7CiAgICAgICAgICAgIGRvc2VJbnB1dC52YWx1ZSA9ICcyMCc7CiAgICAgICAgICAgIHB1cml0eUlucHV0LnZhbHVlID0gJzEwMCc7CiAgICAgICAgICAgIHNvbHV0aW9uQ29uY0lucHV0LnZhbHVlID0gJyc7CiAgICAgICAgICAgIGhpZGVFcnJvcigpOwogICAgICAgICAgICByZXNQdXJlTWFzcy50ZXh0Q29udGVudCA9ICfigJQnOwogICAgICAgICAgICByZXNQdXJlVW5pdC50ZXh0Q29udGVudCA9ICfQsyAvINC60LMnOwogICAgICAgICAgICByZXNQcm9kdWN0TWFzcy50ZXh0Q29udGVudCA9ICfigJQnOwogICAgICAgICAgICByZXNQcm9kdWN0VW5pdC50ZXh0Q29udGVudCA9ICfQsyAvINC60LMnOwogICAgICAgICAgICByZXN1bHRTb2x1dGlvbkl0ZW0uc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgICAgICAgICAgcmVzU29sdXRpb25Wb2wudGV4dENvbnRlbnQgPSAn4oCUJzsKICAgICAgICAgICAgcmVzU29sdXRpb25Vbml0LnRleHRDb250ZW50ID0gJ9C7IC8g0LzCsyc7CiAgICAgICAgICAgIHJlc3VsdERldGFpbC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgICAgICAgICBkZXRhaWxUZXh0LmlubmVySFRNTCA9ICcnOwogICAgICAgIH0KCiAgICAgICAgcmVhZ2VudFR5cGVTZWxlY3QuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGlmIChyZWFnZW50VHlwZVNlbGVjdC52YWx1ZSA9PT0gJ290aGVyJykgewogICAgICAgICAgICAgICAgY3VzdG9tUmVhZ2VudEdyb3VwLnN0eWxlLmRpc3BsYXkgPSAnJzsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGN1c3RvbVJlYWdlbnRHcm91cC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgICAgICAgICAgICAgY3VzdG9tUmVhZ2VudElucHV0LnZhbHVlID0gJyc7CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKCiAgICAgICAgY2FsY3VsYXRlQnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgY2FsY3VsYXRlKTsKICAgICAgICByZXNldEJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHJlc2V0KTsKCiAgICAgICAgaGlkZUVycm9yKCk7CiAgICAgICAgcmVzdWx0RGV0YWlsLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAgICAgcmVzdWx0U29sdXRpb25JdGVtLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICB9KSgpOwo=