Калькулятор равновесия слабого электролита
Расчёт степени диссоциации, концентраций ионов и pH/pOH для слабых кислот и оснований по закону разбавления Оствальда при температуре 25 °C.
0
Степень диссоциации α
%
0
Недиссоциированных молекул
моль/л
Как пользоваться калькулятором
1
Выберите тип электролита — слабая кислота или слабое основание. От этого зависит, какие ионы образуются при диссоциации и как рассчитывается pH.
2
Выберите конкретный электролит из выпадающего списка (уксусная кислота, аммиак, анилин и др.) — константа диссоциации K подставится автоматически из справочных данных при 25 °C. Или выберите «Свой вариант» и введите известное вам значение K вручную (допускается экспоненциальная запись, например 1.74e-5).
3
Укажите молярную концентрацию C электролита в моль/л. Для учебных расчётов обычно используют значения от 0,001 до 1 моль/л. Например: 0.1 для децимолярного раствора.
4
Нажмите «Рассчитать». Результаты отобразятся в правой панели: степень диссоциации α (в %), равновесная концентрация ионов, значение pH (или pOH), а также концентрация недиссоциированных молекул.
Примеры использования
Пример 1: Уксусная кислота, 0,1 М раствор
Для CH₃COOH с концентрацией C = 0,1 моль/л и Ka = 1,74·10⁻⁵ расчёт даёт: степень диссоциации α ≈ 1,32%, концентрация ионов [H⁺] ≈ 1,32·10⁻³ моль/л, pH ≈ 2,88, недиссоциированных молекул [CH₃COOH] ≈ 0,0987 моль/л. Приближение α ≪ 1 выполняется, упрощённая формула даёт близкий результат.
Пример 2: Гидроксид аммония, 0,05 М раствор
Для NH₃·H₂O с концентрацией C = 0,05 моль/л и Kb = 1,76·10⁻⁵ расчёт даёт: α ≈ 1,87%, [OH⁻] ≈ 9,35·10⁻⁴ моль/л, pOH ≈ 3,03, pH = 14 − pOH ≈ 10,97. Раствор имеет слабощелочную реакцию.
Пример 3: Муравьиная кислота, 0,01 М раствор
Для HCOOH с концентрацией C = 0,01 моль/л и Ka = 1,77·10⁻⁴ расчёт даёт: α ≈ 12,6%, [H⁺] ≈ 1,26·10⁻³ моль/л, pH ≈ 2,90. Здесь степень диссоциации превышает 5%, поэтому упрощённая формула α ≈ √(K/C) дала бы заметную погрешность — используется точное решение квадратного уравнения по закону Оствальда.
Важные нюансы
- Закон разбавления Оствальда строго применим только к слабым электролитам (K ≪ 1). Для сильных кислот и оснований степень диссоциации близка к 100% при любых концентрациях, и расчёт ведётся иначе.
- При степени диссоциации α < 5% (0,05) допустимо использовать упрощённую формулу α ≈ √(K/C). Калькулятор всегда использует точное решение квадратного уравнения, поэтому работает корректно при любых α вплоть до значений, близких к 1.
- Константа диссоциации K зависит от температуры. Все справочные значения, заложенные в калькулятор, приведены для стандартной температуры 25 °C (298 K). При иной температуре необходимо использовать соответствующее значение K.
- Расчёт не учитывает ионную силу раствора и коэффициенты активности. Для точных термодинамических расчётов при высоких концентрациях (>0,1 М) следует использовать активности вместо концентраций.
- Для многоосновных кислот (например, H₂CO₃) калькулятор учитывает только первую ступень диссоциации (Ka₁). Вклад второй и последующих ступеней обычно пренебрежимо мал, если константы различаются на 3–4 порядка.
- Техника безопасности: Даже слабые кислоты и основания могут быть опасны при высоких концентрациях. При приготовлении растворов всегда используйте защитные очки и перчатки, работайте в проветриваемом помещении. Концентрированная уксусная кислота и растворы аммиака требуют осторожного обращения.
Источники данных
- IUPAC Gold Book — Международный союз теоретической и прикладной химии: определения констант диссоциации, закон разбавления Оствальда. doi:10.1351/goldbook
- NIST Chemistry WebBook — Национальный институт стандартов и технологий США: справочные значения констант диссоциации для уксусной, муравьиной, бензойной, угольной кислот и оснований. webbook.nist.gov/chemistry
- CRC Handbook of Chemistry and Physics (101-е издание, 2020) — таблицы констант диссоциации слабых электролитов при 25 °C. Значения Ka и Kb для анилина, метиламина, гидроксида аммония.
- PubChem (NIH) — база данных Национального центра биотехнологической информации США: верифицированные значения pKa и pKb органических кислот и оснований. pubchem.ncbi.nlm.nih.gov
Калькулятор равновесия слабого электролита позволяет быстро вычислить степень диссоциации, концентрацию ионов водорода или гидроксид-ионов, а также pH или pOH раствора по закону разбавления Оствальда. Инструмент использует точное решение квадратного уравнения и подходит для учебных, лабораторных и аналитических расчётов в рамках общей и физической химии. Встроенная база констант диссоциации содержит проверенные справочные данные IUPAC и NIST для наиболее распространённых слабых кислот и оснований при стандартной температуре 25 °C. Расчёт выполняется мгновенно на стороне браузера, без передачи данных на сервер.
CihmdW5jdGlvbigpewogIHZhciB0eXBlU2VsZWN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VsZWN0cm9seXRlLXR5cGUnKTsKICB2YXIgcHJlc2V0U2VsZWN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3ByZXNldC1lbGVjdHJvbHl0ZScpOwogIHZhciBjb25jZW50cmF0aW9uSW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uY2VudHJhdGlvbi1jJyk7CiAgdmFyIGNvbnN0YW50SW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGlzc29jaWF0aW9uLWNvbnN0YW50Jyk7CiAgdmFyIGVycm9yQ29uY2VudHJhdGlvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlcnJvci1jb25jZW50cmF0aW9uJyk7CiAgdmFyIGVycm9yQ29uc3RhbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXJyb3ItY29uc3RhbnQnKTsKICB2YXIgY2FsY3VsYXRlQnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NhbGN1bGF0ZS1idG4nKTsKICB2YXIgcmVzZXRCdG4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzZXQtYnRuJyk7CgogIHZhciByZXN1bHRBbHBoYVBlcmNlbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0LWFscGhhLXBlcmNlbnQnKTsKICB2YXIgcmVzdWx0SW9uQ29uY2VudHJhdGlvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQtaW9uLWNvbmNlbnRyYXRpb24nKTsKICB2YXIgcmVzdWx0SW9uTGFiZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0LWlvbi1sYWJlbCcpOwogIHZhciByZXN1bHRQaCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQtcGgnKTsKICB2YXIgcmVzdWx0UGhMYWJlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQtcGgtbGFiZWwnKTsKICB2YXIgcmVzdWx0VW5kaXNzb2NpYXRlZCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQtdW5kaXNzb2NpYXRlZCcpOwogIHZhciByZXN1bHROb3RlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdC1ub3RlJyk7CgogIHZhciBwcmVzZXREYXRhID0gewogICAgJ2NoM2Nvb2gnOiB7IGs6IDEuNzRlLTUsIGthOiB0cnVlLCBuYW1lOiAn0KPQutGB0YPRgdC90LDRjyDQutC40YHQu9C+0YLQsCBDSOKCg0NPT0gnIH0sCiAgICAnaGNvb2gnOiB7IGs6IDEuNzdlLTQsIGthOiB0cnVlLCBuYW1lOiAn0JzRg9GA0LDQstGM0LjQvdCw0Y8g0LrQuNGB0LvQvtGC0LAgSENPT0gnIH0sCiAgICAnYzZoNWNvb2gnOiB7IGs6IDYuM2UtNSwga2E6IHRydWUsIG5hbWU6ICfQkdC10L3Qt9C+0LnQvdCw0Y8g0LrQuNGB0LvQvtGC0LAgQ+KChkjigoVDT09IJyB9LAogICAgJ2gyY28zJzogeyBrOiA0LjNlLTcsIGthOiB0cnVlLCBuYW1lOiAn0KPQs9C+0LvRjNC90LDRjyDQutC40YHQu9C+0YLQsCBI4oKCQ0/igoMnIH0sCiAgICAnbmgzaDJvJzogeyBrOiAxLjc2ZS01LCBrYTogZmFsc2UsIG5hbWU6ICfQk9C40LTRgNC+0LrRgdC40LQg0LDQvNC80L7QvdC40Y8gTkjigoPCt0jigoJPJyB9LAogICAgJ2M2aDVuaDInOiB7IGs6IDQuM2UtMTAsIGthOiBmYWxzZSwgbmFtZTogJ9CQ0L3QuNC70LjQvSBD4oKGSOKChU5I4oKCJyB9LAogICAgJ2NoM25oMic6IHsgazogNC40ZS00LCBrYTogZmFsc2UsIG5hbWU6ICfQnNC10YLQuNC70LDQvNC40L0gQ0jigoNOSOKCgicgfSwKICAgICdjdXN0b20nOiB7IGs6IG51bGwsIGthOiBudWxsLCBuYW1lOiAn0KHQstC+0Lkg0LLQsNGA0LjQsNC90YInIH0KICB9OwoKICBmdW5jdGlvbiBoaWRlQWxsRXJyb3JzKCkgewogICAgZXJyb3JDb25jZW50cmF0aW9uLmNsYXNzTGlzdC5yZW1vdmUoJ3Zpc2libGUnKTsKICAgIGVycm9yQ29uY2VudHJhdGlvbi50ZXh0Q29udGVudCA9ICcnOwogICAgZXJyb3JDb25zdGFudC5jbGFzc0xpc3QucmVtb3ZlKCd2aXNpYmxlJyk7CiAgICBlcnJvckNvbnN0YW50LnRleHRDb250ZW50ID0gJyc7CiAgfQoKICBmdW5jdGlvbiBzaG93RXJyb3IoZWxlbWVudCwgbWVzc2FnZSkgewogICAgZWxlbWVudC50ZXh0Q29udGVudCA9IG1lc3NhZ2U7CiAgICBlbGVtZW50LmNsYXNzTGlzdC5hZGQoJ3Zpc2libGUnKTsKICB9CgogIGZ1bmN0aW9uIHVwZGF0ZVByZXNldENvbnN0YW50KCkgewogICAgdmFyIHByZXNldEtleSA9IHByZXNldFNlbGVjdC52YWx1ZTsKICAgIHZhciBkYXRhID0gcHJlc2V0RGF0YVtwcmVzZXRLZXldOwogICAgaWYgKHByZXNldEtleSA9PT0gJ2N1c3RvbScpIHsKICAgICAgY29uc3RhbnRJbnB1dC52YWx1ZSA9ICcnOwogICAgICBjb25zdGFudElucHV0LnJlYWRPbmx5ID0gZmFsc2U7CiAgICAgIGNvbnN0YW50SW5wdXQucGxhY2Vob2xkZXIgPSAnMS43NGUtNSc7CiAgICAgIHJldHVybjsKICAgIH0KICAgIGNvbnN0YW50SW5wdXQudmFsdWUgPSBkYXRhLms7CiAgICBjb25zdGFudElucHV0LnJlYWRPbmx5ID0gdHJ1ZTsKICAgIGNvbnN0YW50SW5wdXQucGxhY2Vob2xkZXIgPSAnJzsKICB9CgogIGZ1bmN0aW9uIHVwZGF0ZVJlc3VsdExhYmVscygpIHsKICAgIHZhciBpc0FjaWQgPSB0eXBlU2VsZWN0LnZhbHVlID09PSAnYWNpZCc7CiAgICBpZiAoaXNBY2lkKSB7CiAgICAgIHJlc3VsdElvbkxhYmVsLnRleHRDb250ZW50ID0gJ1tI4oG6XSc7CiAgICAgIHJlc3VsdFBoTGFiZWwudGV4dENvbnRlbnQgPSAncEgnOwogICAgfSBlbHNlIHsKICAgICAgcmVzdWx0SW9uTGFiZWwudGV4dENvbnRlbnQgPSAnW09I4oG7XSc7CiAgICAgIHJlc3VsdFBoTGFiZWwudGV4dENvbnRlbnQgPSAncE9IJzsKICAgIH0KICB9CgogIGZ1bmN0aW9uIHJlc2V0UmVzdWx0cygpIHsKICAgIHJlc3VsdEFscGhhUGVyY2VudC50ZXh0Q29udGVudCA9ICcwJzsKICAgIHJlc3VsdElvbkNvbmNlbnRyYXRpb24udGV4dENvbnRlbnQgPSAnMCc7CiAgICByZXN1bHRQaC50ZXh0Q29udGVudCA9ICcwJzsKICAgIHJlc3VsdFVuZGlzc29jaWF0ZWQudGV4dENvbnRlbnQgPSAnMCc7CiAgICByZXN1bHROb3RlLmNsYXNzTGlzdC5yZW1vdmUoJ3Zpc2libGUnKTsKICAgIHJlc3VsdE5vdGUudGV4dENvbnRlbnQgPSAnJzsKICB9CgogIGZ1bmN0aW9uIHZhbGlkYXRlSW5wdXRzKCkgewogICAgaGlkZUFsbEVycm9ycygpOwogICAgdmFyIHZhbGlkID0gdHJ1ZTsKICAgIHZhciBjID0gcGFyc2VGbG9hdChjb25jZW50cmF0aW9uSW5wdXQudmFsdWUpOwogICAgdmFyIGsgPSBwYXJzZUZsb2F0KGNvbnN0YW50SW5wdXQudmFsdWUpOwoKICAgIGlmIChpc05hTihjKSB8fCBjIDw9IDAgfHwgYyA+IDIwKSB7CiAgICAgIHNob3dFcnJvcihlcnJvckNvbmNlbnRyYXRpb24sICfQktCy0LXQtNC40YLQtSDQutC+0L3RhtC10L3RgtGA0LDRhtC40Y4g0LIg0LTQuNCw0L/QsNC30L7QvdC1INC+0YIgMcK3MTDigbvCueKBsCDQtNC+IDIwINC80L7Qu9GML9C7LicpOwogICAgICB2YWxpZCA9IGZhbHNlOwogICAgfQogICAgaWYgKGlzTmFOKGspIHx8IGsgPD0gMCB8fCBrID4gMSkgewogICAgICBzaG93RXJyb3IoZXJyb3JDb25zdGFudCwgJ9CS0LLQtdC00LjRgtC1INC60L7QvdGB0YLQsNC90YLRgyDQtNC40YHRgdC+0YbQuNCw0YbQuNC4INCyINC00LjQsNC/0LDQt9C+0L3QtSDQvtGCIDHCtzEw4oG7wrnigbUg0LTQviAxLicpOwogICAgICB2YWxpZCA9IGZhbHNlOwogICAgfQogICAgaWYgKHZhbGlkICYmIGMgPCAxZS0xMCkgewogICAgICBzaG93RXJyb3IoZXJyb3JDb25jZW50cmF0aW9uLCAn0JrQvtC90YbQtdC90YLRgNCw0YbQuNGPINGB0LvQuNGI0LrQvtC8INC80LDQu9CwINC00LvRjyDQutC+0YDRgNC10LrRgtC90L7Qs9C+INGA0LDRgdGH0ZHRgtCwLicpOwogICAgICB2YWxpZCA9IGZhbHNlOwogICAgfQogICAgaWYgKHZhbGlkICYmIGsgPCAxZS0xNSkgewogICAgICBzaG93RXJyb3IoZXJyb3JDb25zdGFudCwgJ9Ca0L7QvdGB0YLQsNC90YLQsCDQtNC40YHRgdC+0YbQuNCw0YbQuNC4INGB0LvQuNGI0LrQvtC8INC80LDQu9CwINC00LvRjyDQutC+0YDRgNC10LrRgtC90L7Qs9C+INGA0LDRgdGH0ZHRgtCwLicpOwogICAgICB2YWxpZCA9IGZhbHNlOwogICAgfQogICAgcmV0dXJuIHZhbGlkID8geyBjOiBjLCBrOiBrIH0gOiBudWxsOwogIH0KCiAgZnVuY3Rpb24gY2FsY3VsYXRlKCkgewogICAgcmVzZXRSZXN1bHRzKCk7CiAgICBoaWRlQWxsRXJyb3JzKCk7CgogICAgdmFyIHZhbGlkYXRpb25SZXN1bHQgPSB2YWxpZGF0ZUlucHV0cygpOwogICAgaWYgKCF2YWxpZGF0aW9uUmVzdWx0KSB7CiAgICAgIHJldHVybjsKICAgIH0KCiAgICB2YXIgYyA9IHZhbGlkYXRpb25SZXN1bHQuYzsKICAgIHZhciBrID0gdmFsaWRhdGlvblJlc3VsdC5rOwogICAgdmFyIGlzQWNpZCA9IHR5cGVTZWxlY3QudmFsdWUgPT09ICdhY2lkJzsKCiAgICB2YXIgZGlzY3JpbWluYW50ID0gayAqIGsgKyA0ICogayAqIGM7CiAgICBpZiAoZGlzY3JpbWluYW50IDwgMCkgewogICAgICBzaG93RXJyb3IoZXJyb3JDb25zdGFudCwgJ9Cd0LXQutC+0YDRgNC10LrRgtC90YvQtSDQtNCw0L3QvdGL0LU6INC+0YLRgNC40YbQsNGC0LXQu9GM0L3Ri9C5INC00LjRgdC60YDQuNC80LjQvdCw0L3Rgi4g0J/RgNC+0LLQtdGA0YzRgtC1INC30L3QsNGH0LXQvdC40Y8gSyDQuCBDLicpOwogICAgICByZXR1cm47CiAgICB9CgogICAgdmFyIHNxcnREID0gTWF0aC5zcXJ0KGRpc2NyaW1pbmFudCk7CiAgICB2YXIgYWxwaGEgPSAoLWsgKyBzcXJ0RCkgLyAoMiAqIGMpOwoKICAgIGlmIChhbHBoYSA8PSAwIHx8IGFscGhhID4gMS4wMDAwMDAxKSB7CiAgICAgIHNob3dFcnJvcihlcnJvckNvbnN0YW50LCAn0KDQsNGB0YfRkdGC0L3QsNGPINGB0YLQtdC/0LXQvdGMINC00LjRgdGB0L7RhtC40LDRhtC40Lgg0LLQvdC1INC00L7Qv9GD0YHRgtC40LzQvtCz0L4g0LTQuNCw0L/QsNC30L7QvdCwLiDQn9GA0L7QstC10YDRjNGC0LUg0LjRgdGF0L7QtNC90YvQtSDQtNCw0L3QvdGL0LUuJyk7CiAgICAgIHJldHVybjsKICAgIH0KICAgIGlmIChhbHBoYSA+IDEpIHsKICAgICAgYWxwaGEgPSAxOwogICAgfQoKICAgIHZhciBpb25Db25jZW50cmF0aW9uID0gYWxwaGEgKiBjOwogICAgdmFyIHBoT3JQb2ggPSAtTWF0aC5sb2cxMChpb25Db25jZW50cmF0aW9uKTsKICAgIGlmICghaXNGaW5pdGUocGhPclBvaCkpIHsKICAgICAgcGhPclBvaCA9IDE0OwogICAgfQogICAgdmFyIHVuZGlzc29jaWF0ZWQgPSBjIC0gaW9uQ29uY2VudHJhdGlvbjsKICAgIGlmICh1bmRpc3NvY2lhdGVkIDwgMCkgewogICAgICB1bmRpc3NvY2lhdGVkID0gMDsKICAgIH0KCiAgICB2YXIgYWxwaGFQZXJjZW50ID0gYWxwaGEgKiAxMDA7CiAgICB2YXIgZGlzcGxheVBoOwogICAgaWYgKGlzQWNpZCkgewogICAgICBkaXNwbGF5UGggPSBwaE9yUG9oOwogICAgfSBlbHNlIHsKICAgICAgZGlzcGxheVBoID0gMTQgLSBwaE9yUG9oOwogICAgICBpZiAoZGlzcGxheVBoIDwgMCkgZGlzcGxheVBoID0gMDsKICAgICAgaWYgKGRpc3BsYXlQaCA+IDE0KSBkaXNwbGF5UGggPSAxNDsKICAgIH0KCiAgICByZXN1bHRBbHBoYVBlcmNlbnQudGV4dENvbnRlbnQgPSBhbHBoYVBlcmNlbnQudG9GaXhlZCgzKTsKICAgIHJlc3VsdElvbkNvbmNlbnRyYXRpb24udGV4dENvbnRlbnQgPSBpb25Db25jZW50cmF0aW9uLnRvRXhwb25lbnRpYWwoNCk7CiAgICBpZiAoaXNBY2lkKSB7CiAgICAgIHJlc3VsdFBoLnRleHRDb250ZW50ID0gZGlzcGxheVBoLnRvRml4ZWQoMik7CiAgICB9IGVsc2UgewogICAgICByZXN1bHRQaC50ZXh0Q29udGVudCA9IHBoT3JQb2gudG9GaXhlZCgyKTsKICAgIH0KICAgIHJlc3VsdFVuZGlzc29jaWF0ZWQudGV4dENvbnRlbnQgPSB1bmRpc3NvY2lhdGVkLnRvRXhwb25lbnRpYWwoNCk7CgogICAgdmFyIGFwcHJveEFscGhhID0gTWF0aC5zcXJ0KGsgLyBjKTsKICAgIGlmIChhbHBoYSA8IDAuMDUgJiYgTWF0aC5hYnMoYWxwaGEgLSBhcHByb3hBbHBoYSkgLyBhbHBoYSA8IDAuMDEpIHsKICAgICAgcmVzdWx0Tm90ZS50ZXh0Q29udGVudCA9ICfQn9GA0LjQvNC10YfQsNC90LjQtTogzrEgPCA1JSDigJQg0YPQv9GA0L7RidGR0L3QvdCw0Y8g0YTQvtGA0LzRg9C70LAgzrEg4omIIOKImihLL0MpID0gJyArIChhcHByb3hBbHBoYSoxMDApLnRvRml4ZWQoMykgKyAnJSDQtNCw0ZHRgiDQv9GA0LDQutGC0LjRh9C10YHQutC4INGC0L7RgiDQttC1INGA0LXQt9GD0LvRjNGC0LDRgiAo0L/QvtCz0YDQtdGI0L3QvtGB0YLRjCA8IDElKS4nOwogICAgICByZXN1bHROb3RlLmNsYXNzTGlzdC5hZGQoJ3Zpc2libGUnKTsKICAgIH0gZWxzZSBpZiAoYWxwaGEgPj0gMC4wNSAmJiBhbHBoYSA8IDAuMSkgewogICAgICByZXN1bHROb3RlLnRleHRDb250ZW50ID0gJ9Cf0YDQuNC80LXRh9Cw0L3QuNC1OiDOsSDiiYggJyArIGFscGhhUGVyY2VudC50b0ZpeGVkKDEpICsgJyUg4oCUINGB0YLQtdC/0LXQvdGMINC00LjRgdGB0L7RhtC40LDRhtC40Lgg0L3QsNGF0L7QtNC40YLRgdGPINCyINC/0L7Qs9GA0LDQvdC40YfQvdC+0Lkg0L7QsdC70LDRgdGC0LguINCU0LvRjyDRgtC+0YfQvdGL0YUg0YDQsNGB0YfRkdGC0L7QsiDQuNGB0L/QvtC70YzQt9C+0LLQsNC90L4g0L/QvtC70L3QvtC1INC60LLQsNC00YDQsNGC0L3QvtC1INGD0YDQsNCy0L3QtdC90LjQtSDQt9Cw0LrQvtC90LAg0J7RgdGC0LLQsNC70YzQtNCwLic7CiAgICAgIHJlc3VsdE5vdGUuY2xhc3NMaXN0LmFkZCgndmlzaWJsZScpOwogICAgfSBlbHNlIGlmIChhbHBoYSA+PSAwLjEpIHsKICAgICAgcmVzdWx0Tm90ZS50ZXh0Q29udGVudCA9ICfQn9GA0LjQvNC10YfQsNC90LjQtTogzrEgPiAxMCUg4oCUINC30L3QsNGH0LjRgtC10LvRjNC90LDRjyDRgdGC0LXQv9C10L3RjCDQtNC40YHRgdC+0YbQuNCw0YbQuNC4LiDQmNGB0L/QvtC70YzQt9C+0LLQsNC90L4g0YLQvtGH0L3QvtC1INGA0LXRiNC10L3QuNC1INGD0YDQsNCy0L3QtdC90LjRjyDQntGB0YLQstCw0LvRjNC00LA7INGD0L/RgNC+0YnRkdC90L3QsNGPINGE0L7RgNC80YPQu9CwINC30LTQtdGB0Ywg0L3QtdC/0YDQuNC80LXQvdC40LzQsC4nOwogICAgICByZXN1bHROb3RlLmNsYXNzTGlzdC5hZGQoJ3Zpc2libGUnKTsKICAgIH0gZWxzZSB7CiAgICAgIHJlc3VsdE5vdGUuY2xhc3NMaXN0LnJlbW92ZSgndmlzaWJsZScpOwogICAgICByZXN1bHROb3RlLnRleHRDb250ZW50ID0gJyc7CiAgICB9CgogICAgaWYgKCFpc0FjaWQpIHsKICAgICAgdmFyIGRpc3BsYXlQaEZvckJhc2UgPSAxNCAtIHBoT3JQb2g7CiAgICAgIGlmIChkaXNwbGF5UGhGb3JCYXNlIDwgMCkgZGlzcGxheVBoRm9yQmFzZSA9IDA7CiAgICAgIGlmIChkaXNwbGF5UGhGb3JCYXNlID4gMTQpIGRpc3BsYXlQaEZvckJhc2UgPSAxNDsKICAgICAgcmVzdWx0Tm90ZS50ZXh0Q29udGVudCA9IHJlc3VsdE5vdGUudGV4dENvbnRlbnQgKyAnIHBIID0gMTQg4oiSIHBPSCA9ICcgKyBkaXNwbGF5UGhGb3JCYXNlLnRvRml4ZWQoMikgKyAnLic7CiAgICAgIHJlc3VsdE5vdGUuY2xhc3NMaXN0LmFkZCgndmlzaWJsZScpOwogICAgfQogIH0KCiAgZnVuY3Rpb24gcmVzZXRBbGwoKSB7CiAgICBoaWRlQWxsRXJyb3JzKCk7CiAgICByZXNldFJlc3VsdHMoKTsKICAgIGNvbmNlbnRyYXRpb25JbnB1dC52YWx1ZSA9ICcnOwogICAgcHJlc2V0U2VsZWN0LnZhbHVlID0gJ2NoM2Nvb2gnOwogICAgdHlwZVNlbGVjdC52YWx1ZSA9ICdhY2lkJzsKICAgIHVwZGF0ZVByZXNldENvbnN0YW50KCk7CiAgICB1cGRhdGVSZXN1bHRMYWJlbHMoKTsKICAgIHJlc3VsdE5vdGUuY2xhc3NMaXN0LnJlbW92ZSgndmlzaWJsZScpOwogICAgcmVzdWx0Tm90ZS50ZXh0Q29udGVudCA9ICcnOwogIH0KCiAgcHJlc2V0U2VsZWN0LmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGZ1bmN0aW9uKCkgewogICAgaGlkZUFsbEVycm9ycygpOwogICAgdXBkYXRlUHJlc2V0Q29uc3RhbnQoKTsKICAgIHZhciBwcmVzZXRLZXkgPSBwcmVzZXRTZWxlY3QudmFsdWU7CiAgICB2YXIgZGF0YSA9IHByZXNldERhdGFbcHJlc2V0S2V5XTsKICAgIGlmIChkYXRhLmthICE9PSBudWxsICYmIHByZXNldEtleSAhPT0gJ2N1c3RvbScpIHsKICAgICAgaWYgKGRhdGEua2EpIHsKICAgICAgICB0eXBlU2VsZWN0LnZhbHVlID0gJ2FjaWQnOwogICAgICB9IGVsc2UgewogICAgICAgIHR5cGVTZWxlY3QudmFsdWUgPSAnYmFzZSc7CiAgICAgIH0KICAgICAgdXBkYXRlUmVzdWx0TGFiZWxzKCk7CiAgICB9CiAgfSk7CgogIHR5cGVTZWxlY3QuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgZnVuY3Rpb24oKSB7CiAgICBoaWRlQWxsRXJyb3JzKCk7CiAgICB1cGRhdGVSZXN1bHRMYWJlbHMoKTsKICAgIHJlc2V0UmVzdWx0cygpOwogIH0pOwoKICBjb25jZW50cmF0aW9uSW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCBmdW5jdGlvbigpIHsKICAgIGhpZGVBbGxFcnJvcnMoKTsKICB9KTsKCiAgY29uc3RhbnRJbnB1dC5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsIGZ1bmN0aW9uKCkgewogICAgaGlkZUFsbEVycm9ycygpOwogIH0pOwoKICBjYWxjdWxhdGVCdG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBjYWxjdWxhdGUpOwoKICByZXNldEJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHJlc2V0QWxsKTsKCiAgdXBkYXRlUHJlc2V0Q29uc3RhbnQoKTsKICB1cGRhdGVSZXN1bHRMYWJlbHMoKTsKfSkoKTsK