Калькулятор энергии конденсатора
Быстрый и точный расчёт энергии заряженного конденсатора по его ёмкости, напряжению и заряду — онлайн и бесплатно.
—
Энергия конденсатора
Дж
Как пользоваться калькулятором
1
Выберите способ расчёта: по ёмкости и напряжению, по заряду и ёмкости или по заряду и напряжению. Например, для конденсатора 100 мкФ при 12 В — первый способ.
2
Введите известные значения в соответствующие поля. Укажите единицы измерения (мкФ, нФ, кВ и др.).
3
Нажмите «Рассчитать». Результат появится справа в джоулях, миллиджоулях и микроджоулях.
4
Используйте кнопку «Сбросить» для очистки полей и начала нового расчёта.
Примеры расчёта
Пример 1: фильтрующий конденсатор блока питания
Ёмкость C = 2200 мкФ, напряжение U = 25 В. Энергия E = (2200·10⁻⁶ · 25²) / 2 ≈ 0,688 Дж (688 мДж, 688 000 мкДж). Заряд Q = 0,055 Кл (55 мКл).
Пример 2: конденсатор фотовспышки
Ёмкость C = 470 мкФ, напряжение U = 300 В. Энергия E = (470·10⁻⁶ · 300²) / 2 ≈ 21,15 Дж. Этого хватает на яркую вспышку длительностью ~1 мс.
Пример 3: расчёт через заряд
Заряд Q = 2 мКл (0,002 Кл), ёмкость C = 10 мкФ. Энергия E = (0,002²) / (2 · 10·10⁻⁶) = 0,2 Дж (200 мДж). Напряжение U = 200 В.
Формулы расчёта
Основная формула энергии конденсатора связывает три ключевых параметра: ёмкость (C), напряжение (U) и заряд (Q). Ниже приведены все используемые формулы.
E = C · U² / 2 — энергия конденсатора через ёмкость и напряжение (основная формула)
E = Q² / (2 · C) — энергия заряженного конденсатора через заряд и ёмкость
E = Q · U / 2 — энергия через заряд и напряжение
Q = C · U — формула заряд конденсатора (связь заряда, ёмкости и напряжения)
Единицы измерения в СИ: энергия E — джоуль (Дж), ёмкость C — фарад (Ф), напряжение U — вольт (В), заряд Q — кулон (Кл).
Пошаговое объяснение
Расчёт энергии конденсатора выполняется в несколько этапов. Сначала все значения переводятся в базовые единицы СИ (фарады, вольты, кулоны) с учётом выбранных приставок. Затем в зависимости от способа расчёта применяется одна из трёх формул. Результат выводится в джоулях и дублируется в миллиджоулях (1 Дж = 1000 мДж) и микроджоулях (1 Дж = 1 000 000 мкДж). Дополнительно вычисляется недостающий параметр — заряд, напряжение или ёмкость. Все промежуточные значения округляются до двух знаков после запятой для удобства чтения.
Где применяется
- Импульсные блоки питания: расчёт энергии, запасаемой в фильтрующих конденсаторах для сглаживания пульсаций.
- Фотовспышки: определение необходимой ёмкости и напряжения для получения нужной световой энергии.
- Дефибрилляторы: точный расчёт энергии разряда конденсатора для медицинских процедур — типичные значения 150–360 Дж.
- Силовая электроника: проектирование DC-link звеньев в преобразователях частоты и инверторах.
- Системы зажигания: расчёт энергии искры в конденсаторных системах зажигания двигателей внутреннего сгорания.
- Лазерная техника: выбор конденсаторов для накачки импульсных лазеров, где требуется высокая энергия в коротком импульсе.
Важные нюансы
- Калькулятор предполагает идеальный конденсатор без учёта токов утечки, эквивалентного последовательного сопротивления (ESR) и паразитной индуктивности.
- Реальная доступная энергия может быть ниже расчётной на 5–20% из-за потерь в диэлектрике и проводниках.
- Округление до двух знаков после запятой достаточно для практических целей, но не для прецизионных метрологических расчётов.
- При расчёте через заряд и напряжение необходимо, чтобы напряжение было отлично от нуля — иначе ёмкость математически не определена.
- Единицы измерения с приставками (мкФ, мДж) выбраны для удобства, но внутренний расчёт всегда в СИ.
- Максимальное рабочее напряжение реального конденсатора должно быть минимум на 20% выше рабочего — это запас прочности, который калькулятор не учитывает.
Частые ошибки
- Путаница с приставками: ввод 100 мкФ как 100 Ф даёт ошибку в миллион раз. Всегда проверяйте единицы измерения. Используйте выпадающие списки.
- Забывают перевести милли- и микро- в базовые: калькулятор делает это автоматически, но при ручных расчётах ошибка типична.
- Деление на ноль при Q и U: если напряжение равно нулю, невозможно вычислить ёмкость. Калькулятор выдаст предупреждение.
- Отрицательные значения: физически энергия и ёмкость всегда положительны. Ввод отрицательных чисел блокируется.
- Использование пиковых значений вместо эффективных: для цепей переменного тока энергия считается по мгновенному напряжению, а не по RMS.
- Пренебрежение ESR: в импульсных применениях эквивалентное сопротивление снижает реальную энергию в нагрузке.
Ответы на частые вопросы
В чём измеряется энергия конденсатора? В джоулях (Дж). На практике также используют миллиджоули (мДж) и микроджоули (мкДж).
Можно ли рассчитать ёмкость, зная энергию и напряжение? Да, из формулы E = C·U²/2 следует C = 2E / U². Калькулятор позволяет найти ёмкость при выборе способа «по заряду и напряжению».
Почему энергия конденсатора пропорциональна квадрату напряжения? Потому что и заряд, и напряжение на обкладках растут линейно при зарядке, а работа по переносу заряда равна интегралу U dQ, что даёт квадратичную зависимость.
Как перевести энергию из джоулей в ватт-часы? 1 Дж = 1/3600 Вт·ч ≈ 0,000278 Вт·ч. Для конденсаторов типичны значения в джоулях или миллиджоулях, перевод в Вт·ч применяется редко.
Влияет ли температура на энергию конденсатора? Да, ёмкость большинства диэлектриков зависит от температуры. При экстремальных отклонениях расчётная энергия будет отличаться от реальной.
Зачем нужен расчёт энергии конденсатора? Для выбора компонентов в силовой электронике, расчёта времени разряда, проектирования накопителей энергии и систем импульсного питания.
Источники и справочные данные
Расчёт основан на фундаментальных уравнениях электродинамики и теории электрических цепей. Формула энергии конденсатора E = CU²/2 выводится из работы по перемещению заряда в электрическом поле и подтверждена экспериментально. Используются стандартные определения единиц СИ и соглашения о десятичных приставках ГОСТ 8.417-2002. Дополнительные сведения взяты из учебников по физике (раздел «Электростатика») и технической документации производителей конденсаторов (KEMET, Murata, TDK).
CiAgICAgICAgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICBjb25zdCBtZXRob2RTZWxlY3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2FsYy1tZXRob2QnKTsKICAgICAgICAgICAgY29uc3QgY2FwYWNpdGFuY2VJbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjYXBhY2l0YW5jZScpOwogICAgICAgICAgICBjb25zdCBjYXBhY2l0YW5jZVVuaXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2FwYWNpdGFuY2UtdW5pdCcpOwogICAgICAgICAgICBjb25zdCB2b2x0YWdlSW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndm9sdGFnZScpOwogICAgICAgICAgICBjb25zdCB2b2x0YWdlVW5pdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd2b2x0YWdlLXVuaXQnKTsKICAgICAgICAgICAgY29uc3QgY2hhcmdlSW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2hhcmdlJyk7CiAgICAgICAgICAgIGNvbnN0IGNoYXJnZVVuaXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2hhcmdlLXVuaXQnKTsKCiAgICAgICAgICAgIGNvbnN0IGdyb3VwQ2FwYWNpdGFuY2UgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZ3JvdXAtY2FwYWNpdGFuY2UnKTsKICAgICAgICAgICAgY29uc3QgZ3JvdXBWb2x0YWdlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2dyb3VwLXZvbHRhZ2UnKTsKICAgICAgICAgICAgY29uc3QgZ3JvdXBDaGFyZ2UgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZ3JvdXAtY2hhcmdlJyk7CgogICAgICAgICAgICBjb25zdCBlcnJvckNhcGFjaXRhbmNlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Vycm9yLWNhcGFjaXRhbmNlJyk7CiAgICAgICAgICAgIGNvbnN0IGVycm9yVm9sdGFnZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlcnJvci12b2x0YWdlJyk7CiAgICAgICAgICAgIGNvbnN0IGVycm9yQ2hhcmdlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Vycm9yLWNoYXJnZScpOwoKICAgICAgICAgICAgY29uc3QgcmVzdWx0RW5lcmd5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdC1lbmVyZ3knKTsKICAgICAgICAgICAgY29uc3QgcmVzdWx0RW5lcmd5VW5pdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQtZW5lcmd5LXVuaXQnKTsKICAgICAgICAgICAgY29uc3QgcmVzdWx0RW5lcmd5TWogPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0LWVuZXJneS1taicpOwogICAgICAgICAgICBjb25zdCByZXN1bHRFbmVyZ3lVaiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQtZW5lcmd5LXVqJyk7CiAgICAgICAgICAgIGNvbnN0IHJlc3VsdFNlY29uZGFyeSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQtc2Vjb25kYXJ5Jyk7CiAgICAgICAgICAgIGNvbnN0IHJlc3VsdFNlY29uZGFyeUxhYmVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdC1zZWNvbmRhcnktbGFiZWwnKTsKICAgICAgICAgICAgY29uc3QgcmVzdWx0U2Vjb25kYXJ5VW5pdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQtc2Vjb25kYXJ5LXVuaXQnKTsKICAgICAgICAgICAgY29uc3QgcmVzdWx0U2Vjb25kYXJ5SXRlbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQtc2Vjb25kYXJ5LWl0ZW0nKTsKCiAgICAgICAgICAgIGNvbnN0IGNhbGN1bGF0ZUJ0biA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjYWxjdWxhdGUtYnRuJyk7CiAgICAgICAgICAgIGNvbnN0IHJlc2V0QnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc2V0LWJ0bicpOwoKICAgICAgICAgICAgZnVuY3Rpb24gdXBkYXRlRmllbGRWaXNpYmlsaXR5KCkgewogICAgICAgICAgICAgICAgY29uc3QgbWV0aG9kID0gbWV0aG9kU2VsZWN0LnZhbHVlOwogICAgICAgICAgICAgICAgY29uc3QgYWxsR3JvdXBzID0gW2dyb3VwQ2FwYWNpdGFuY2UsIGdyb3VwVm9sdGFnZSwgZ3JvdXBDaGFyZ2VdOwogICAgICAgICAgICAgICAgYWxsR3JvdXBzLmZvckVhY2goZnVuY3Rpb24oZ3JvdXApIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBhbGxvd2VkTWV0aG9kcyA9IChncm91cC5nZXRBdHRyaWJ1dGUoJ2RhdGEtbWV0aG9kJykgfHwgJycpLnNwbGl0KCcgJyk7CiAgICAgICAgICAgICAgICAgICAgaWYgKGFsbG93ZWRNZXRob2RzLmluZGV4T2YobWV0aG9kKSAhPT0gLTEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXAucmVtb3ZlQXR0cmlidXRlKCdkYXRhLWhpZGRlbicpOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwLnNldEF0dHJpYnV0ZSgnZGF0YS1oaWRkZW4nLCAndHJ1ZScpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBjbGVhckVycm9ycygpIHsKICAgICAgICAgICAgICAgIGVycm9yQ2FwYWNpdGFuY2UudGV4dENvbnRlbnQgPSAnJzsKICAgICAgICAgICAgICAgIGVycm9yVm9sdGFnZS50ZXh0Q29udGVudCA9ICcnOwogICAgICAgICAgICAgICAgZXJyb3JDaGFyZ2UudGV4dENvbnRlbnQgPSAnJzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gc2hvd0Vycm9yKGVsZW1lbnQsIG1lc3NhZ2UpIHsKICAgICAgICAgICAgICAgIGVsZW1lbnQudGV4dENvbnRlbnQgPSBtZXNzYWdlOwogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBnZXROdW1lcmljVmFsdWUoaW5wdXRFbCkgewogICAgICAgICAgICAgICAgY29uc3QgdmFsID0gaW5wdXRFbC52YWx1ZS50cmltKCk7CiAgICAgICAgICAgICAgICBpZiAodmFsID09PSAnJykgcmV0dXJuIHsgdmFsdWU6IG51bGwsIGVycm9yOiAn0J/QvtC70LUg0L3QtSDQvNC+0LbQtdGCINCx0YvRgtGMINC/0YPRgdGC0YvQvCcgfTsKICAgICAgICAgICAgICAgIGNvbnN0IG51bSA9IHBhcnNlRmxvYXQodmFsKTsKICAgICAgICAgICAgICAgIGlmIChpc05hTihudW0pKSByZXR1cm4geyB2YWx1ZTogbnVsbCwgZXJyb3I6ICfQktCy0LXQtNC40YLQtSDQutC+0YDRgNC10LrRgtC90L7QtSDRh9C40YHQu9C+JyB9OwogICAgICAgICAgICAgICAgaWYgKG51bSA8IDApIHJldHVybiB7IHZhbHVlOiBudWxsLCBlcnJvcjogJ9CX0L3QsNGH0LXQvdC40LUg0L3QtSDQvNC+0LbQtdGCINCx0YvRgtGMINC+0YLRgNC40YbQsNGC0LXQu9GM0L3Ri9C8JyB9OwogICAgICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IG51bSwgZXJyb3I6IG51bGwgfTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gZm9ybWF0TnVtYmVyKG51bSkgewogICAgICAgICAgICAgICAgaWYgKG51bSA9PT0gbnVsbCB8fCBudW0gPT09IHVuZGVmaW5lZCB8fCBpc05hTihudW0pIHx8ICFpc0Zpbml0ZShudW0pKSByZXR1cm4gJ+KAlCc7CiAgICAgICAgICAgICAgICBpZiAoTWF0aC5hYnMobnVtKSA8IDFlLTEwICYmIG51bSAhPT0gMCkgcmV0dXJuICcwLjAwJzsKICAgICAgICAgICAgICAgIHJldHVybiBudW0udG9GaXhlZCgyKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gZm9ybWF0U21hbGxOdW1iZXIobnVtKSB7CiAgICAgICAgICAgICAgICBpZiAobnVtID09PSBudWxsIHx8IG51bSA9PT0gdW5kZWZpbmVkIHx8IGlzTmFOKG51bSkgfHwgIWlzRmluaXRlKG51bSkpIHJldHVybiAn4oCUJzsKICAgICAgICAgICAgICAgIGlmIChNYXRoLmFicyhudW0pIDwgMWUtMTAgJiYgbnVtICE9PSAwKSByZXR1cm4gJzAuMDAnOwogICAgICAgICAgICAgICAgaWYgKE1hdGguYWJzKG51bSkgPj0gMC4wMSkgcmV0dXJuIG51bS50b0ZpeGVkKDIpOwogICAgICAgICAgICAgICAgaWYgKE1hdGguYWJzKG51bSkgPj0gMWUtNSkgcmV0dXJuIG51bS50b0ZpeGVkKDUpOwogICAgICAgICAgICAgICAgcmV0dXJuIG51bS50b0V4cG9uZW50aWFsKDIpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBjYWxjdWxhdGUoKSB7CiAgICAgICAgICAgICAgICBjbGVhckVycm9ycygpOwogICAgICAgICAgICAgICAgY29uc3QgbWV0aG9kID0gbWV0aG9kU2VsZWN0LnZhbHVlOwoKICAgICAgICAgICAgICAgIGxldCBDX1NJID0gbnVsbDsKICAgICAgICAgICAgICAgIGxldCBVX1NJID0gbnVsbDsKICAgICAgICAgICAgICAgIGxldCBRX1NJID0gbnVsbDsKICAgICAgICAgICAgICAgIGxldCBoYXNFcnJvciA9IGZhbHNlOwoKICAgICAgICAgICAgICAgIGlmIChtZXRob2QgPT09ICdjdScgfHwgbWV0aG9kID09PSAncWMnKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2FwUmVzdWx0ID0gZ2V0TnVtZXJpY1ZhbHVlKGNhcGFjaXRhbmNlSW5wdXQpOwogICAgICAgICAgICAgICAgICAgIGlmIChjYXBSZXN1bHQuZXJyb3IpIHsKICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0Vycm9yKGVycm9yQ2FwYWNpdGFuY2UsIGNhcFJlc3VsdC5lcnJvcik7CiAgICAgICAgICAgICAgICAgICAgICAgIGhhc0Vycm9yID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNhcFJlc3VsdC52YWx1ZSA9PT0gMCAmJiBtZXRob2QgPT09ICdxYycpIHsKICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0Vycm9yKGVycm9yQ2FwYWNpdGFuY2UsICfQgdC80LrQvtGB0YLRjCDQvdC1INC80L7QttC10YIg0LHRi9GC0Ywg0YDQsNCy0L3QsCDQvdGD0LvRjiDQv9GA0Lgg0YDQsNGB0YfRkdGC0LUg0YfQtdGA0LXQtyDQt9Cw0YDRj9C0Jyk7CiAgICAgICAgICAgICAgICAgICAgICAgIGhhc0Vycm9yID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNhcFJlc3VsdC52YWx1ZSAhPT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICBDX1NJID0gY2FwUmVzdWx0LnZhbHVlICogcGFyc2VGbG9hdChjYXBhY2l0YW5jZVVuaXQudmFsdWUpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAobWV0aG9kID09PSAnY3UnIHx8IG1ldGhvZCA9PT0gJ3F1JykgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvbHRSZXN1bHQgPSBnZXROdW1lcmljVmFsdWUodm9sdGFnZUlucHV0KTsKICAgICAgICAgICAgICAgICAgICBpZiAodm9sdFJlc3VsdC5lcnJvcikgewogICAgICAgICAgICAgICAgICAgICAgICBzaG93RXJyb3IoZXJyb3JWb2x0YWdlLCB2b2x0UmVzdWx0LmVycm9yKTsKICAgICAgICAgICAgICAgICAgICAgICAgaGFzRXJyb3IgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodm9sdFJlc3VsdC52YWx1ZSA9PT0gMCAmJiBtZXRob2QgPT09ICdxdScpIHsKICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0Vycm9yKGVycm9yVm9sdGFnZSwgJ9Cd0LDQv9GA0Y/QttC10L3QuNC1INC90LUg0LzQvtC20LXRgiDQsdGL0YLRjCDRgNCw0LLQvdC+INC90YPQu9GOINC/0YDQuCDRgNCw0YHRh9GR0YLQtSDRh9C10YDQtdC3INC30LDRgNGP0LQnKTsKICAgICAgICAgICAgICAgICAgICAgICAgaGFzRXJyb3IgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodm9sdFJlc3VsdC52YWx1ZSAhPT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICBVX1NJID0gdm9sdFJlc3VsdC52YWx1ZSAqIHBhcnNlRmxvYXQodm9sdGFnZVVuaXQudmFsdWUpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAobWV0aG9kID09PSAncWMnIHx8IG1ldGhvZCA9PT0gJ3F1JykgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoUmVzdWx0ID0gZ2V0TnVtZXJpY1ZhbHVlKGNoYXJnZUlucHV0KTsKICAgICAgICAgICAgICAgICAgICBpZiAoY2hSZXN1bHQuZXJyb3IpIHsKICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0Vycm9yKGVycm9yQ2hhcmdlLCBjaFJlc3VsdC5lcnJvcik7CiAgICAgICAgICAgICAgICAgICAgICAgIGhhc0Vycm9yID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNoUmVzdWx0LnZhbHVlICE9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIFFfU0kgPSBjaFJlc3VsdC52YWx1ZSAqIHBhcnNlRmxvYXQoY2hhcmdlVW5pdC52YWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmIChoYXNFcnJvcikgewogICAgICAgICAgICAgICAgICAgIHJlc3VsdEVuZXJneS50ZXh0Q29udGVudCA9ICfigJQnOwogICAgICAgICAgICAgICAgICAgIHJlc3VsdEVuZXJneU1qLnRleHRDb250ZW50ID0gJ+KAlCc7CiAgICAgICAgICAgICAgICAgICAgcmVzdWx0RW5lcmd5VWoudGV4dENvbnRlbnQgPSAn4oCUJzsKICAgICAgICAgICAgICAgICAgICByZXN1bHRTZWNvbmRhcnkudGV4dENvbnRlbnQgPSAn4oCUJzsKICAgICAgICAgICAgICAgICAgICByZXN1bHRTZWNvbmRhcnlJdGVtLnN0eWxlLmRpc3BsYXkgPSAnJzsKICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgbGV0IEVfU0kgPSBudWxsOwogICAgICAgICAgICAgICAgbGV0IHNlY29uZGFyeVZhbF9TSSA9IG51bGw7CiAgICAgICAgICAgICAgICBsZXQgc2Vjb25kYXJ5TGFiZWxUZXh0ID0gJyc7CiAgICAgICAgICAgICAgICBsZXQgc2Vjb25kYXJ5VW5pdFRleHQgPSAnJzsKCiAgICAgICAgICAgICAgICBpZiAobWV0aG9kID09PSAnY3UnKSB7CiAgICAgICAgICAgICAgICAgICAgRV9TSSA9IDAuNSAqIENfU0kgKiBVX1NJICogVV9TSTsKICAgICAgICAgICAgICAgICAgICBzZWNvbmRhcnlWYWxfU0kgPSBDX1NJICogVV9TSTsKICAgICAgICAgICAgICAgICAgICBzZWNvbmRhcnlMYWJlbFRleHQgPSAn0JfQsNGA0Y/QtCAoUSknOwogICAgICAgICAgICAgICAgICAgIHNlY29uZGFyeVVuaXRUZXh0ID0gJ9Ca0LsnOwogICAgICAgICAgICAgICAgfSBlbHNlIGlmIChtZXRob2QgPT09ICdxYycpIHsKICAgICAgICAgICAgICAgICAgICBFX1NJID0gKFFfU0kgKiBRX1NJKSAvICgyICogQ19TSSk7CiAgICAgICAgICAgICAgICAgICAgc2Vjb25kYXJ5VmFsX1NJID0gUV9TSSAvIENfU0k7CiAgICAgICAgICAgICAgICAgICAgc2Vjb25kYXJ5TGFiZWxUZXh0ID0gJ9Cd0LDQv9GA0Y/QttC10L3QuNC1IChVKSc7CiAgICAgICAgICAgICAgICAgICAgc2Vjb25kYXJ5VW5pdFRleHQgPSAn0JInOwogICAgICAgICAgICAgICAgfSBlbHNlIGlmIChtZXRob2QgPT09ICdxdScpIHsKICAgICAgICAgICAgICAgICAgICBFX1NJID0gMC41ICogUV9TSSAqIFVfU0k7CiAgICAgICAgICAgICAgICAgICAgc2Vjb25kYXJ5VmFsX1NJID0gUV9TSSAvIFVfU0k7CiAgICAgICAgICAgICAgICAgICAgc2Vjb25kYXJ5TGFiZWxUZXh0ID0gJ9CB0LzQutC+0YHRgtGMIChDKSc7CiAgICAgICAgICAgICAgICAgICAgc2Vjb25kYXJ5VW5pdFRleHQgPSAn0KQnOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmIChFX1NJID09PSBudWxsIHx8ICFpc0Zpbml0ZShFX1NJKSB8fCBpc05hTihFX1NJKSkgewogICAgICAgICAgICAgICAgICAgIHJlc3VsdEVuZXJneS50ZXh0Q29udGVudCA9ICfigJQnOwogICAgICAgICAgICAgICAgICAgIHJlc3VsdEVuZXJneU1qLnRleHRDb250ZW50ID0gJ+KAlCc7CiAgICAgICAgICAgICAgICAgICAgcmVzdWx0RW5lcmd5VWoudGV4dENvbnRlbnQgPSAn4oCUJzsKICAgICAgICAgICAgICAgICAgICByZXN1bHRTZWNvbmRhcnkudGV4dENvbnRlbnQgPSAn0J7RiNC40LHQutCwINCy0YvRh9C40YHQu9C10L3QuNGPJzsKICAgICAgICAgICAgICAgICAgICByZXN1bHRTZWNvbmRhcnlJdGVtLnN0eWxlLmRpc3BsYXkgPSAnJzsKICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcmVzdWx0RW5lcmd5LnRleHRDb250ZW50ID0gZm9ybWF0TnVtYmVyKEVfU0kpOwogICAgICAgICAgICAgICAgcmVzdWx0RW5lcmd5VW5pdC50ZXh0Q29udGVudCA9ICfQlNC2JzsKICAgICAgICAgICAgICAgIHJlc3VsdEVuZXJneU1qLnRleHRDb250ZW50ID0gZm9ybWF0TnVtYmVyKEVfU0kgKiAxMDAwKTsKICAgICAgICAgICAgICAgIHJlc3VsdEVuZXJneVVqLnRleHRDb250ZW50ID0gZm9ybWF0TnVtYmVyKEVfU0kgKiAxMDAwMDAwKTsKCiAgICAgICAgICAgICAgICBpZiAoc2Vjb25kYXJ5VmFsX1NJICE9PSBudWxsICYmIGlzRmluaXRlKHNlY29uZGFyeVZhbF9TSSkgJiYgIWlzTmFOKHNlY29uZGFyeVZhbF9TSSkpIHsKICAgICAgICAgICAgICAgICAgICByZXN1bHRTZWNvbmRhcnkudGV4dENvbnRlbnQgPSBmb3JtYXRTbWFsbE51bWJlcihzZWNvbmRhcnlWYWxfU0kpOwogICAgICAgICAgICAgICAgICAgIHJlc3VsdFNlY29uZGFyeUxhYmVsLnRleHRDb250ZW50ID0gc2Vjb25kYXJ5TGFiZWxUZXh0OwogICAgICAgICAgICAgICAgICAgIHJlc3VsdFNlY29uZGFyeVVuaXQudGV4dENvbnRlbnQgPSBzZWNvbmRhcnlVbml0VGV4dDsKICAgICAgICAgICAgICAgICAgICByZXN1bHRTZWNvbmRhcnlJdGVtLnN0eWxlLmRpc3BsYXkgPSAnJzsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgcmVzdWx0U2Vjb25kYXJ5LnRleHRDb250ZW50ID0gJ+KAlCc7CiAgICAgICAgICAgICAgICAgICAgcmVzdWx0U2Vjb25kYXJ5SXRlbS5zdHlsZS5kaXNwbGF5ID0gJyc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIHJlc2V0Rm9ybSgpIHsKICAgICAgICAgICAgICAgIGNhcGFjaXRhbmNlSW5wdXQudmFsdWUgPSAnJzsKICAgICAgICAgICAgICAgIHZvbHRhZ2VJbnB1dC52YWx1ZSA9ICcnOwogICAgICAgICAgICAgICAgY2hhcmdlSW5wdXQudmFsdWUgPSAnJzsKICAgICAgICAgICAgICAgIGNhcGFjaXRhbmNlVW5pdC52YWx1ZSA9ICcxZS02JzsKICAgICAgICAgICAgICAgIHZvbHRhZ2VVbml0LnZhbHVlID0gJzEnOwogICAgICAgICAgICAgICAgY2hhcmdlVW5pdC52YWx1ZSA9ICcxJzsKICAgICAgICAgICAgICAgIG1ldGhvZFNlbGVjdC52YWx1ZSA9ICdjdSc7CiAgICAgICAgICAgICAgICB1cGRhdGVGaWVsZFZpc2liaWxpdHkoKTsKICAgICAgICAgICAgICAgIGNsZWFyRXJyb3JzKCk7CiAgICAgICAgICAgICAgICByZXN1bHRFbmVyZ3kudGV4dENvbnRlbnQgPSAn4oCUJzsKICAgICAgICAgICAgICAgIHJlc3VsdEVuZXJneVVuaXQudGV4dENvbnRlbnQgPSAn0JTQtic7CiAgICAgICAgICAgICAgICByZXN1bHRFbmVyZ3lNai50ZXh0Q29udGVudCA9ICfigJQnOwogICAgICAgICAgICAgICAgcmVzdWx0RW5lcmd5VWoudGV4dENvbnRlbnQgPSAn4oCUJzsKICAgICAgICAgICAgICAgIHJlc3VsdFNlY29uZGFyeS50ZXh0Q29udGVudCA9ICfigJQnOwogICAgICAgICAgICAgICAgcmVzdWx0U2Vjb25kYXJ5TGFiZWwudGV4dENvbnRlbnQgPSAn0JfQsNGA0Y/QtCAoUSknOwogICAgICAgICAgICAgICAgcmVzdWx0U2Vjb25kYXJ5VW5pdC50ZXh0Q29udGVudCA9ICfQmtC7JzsKICAgICAgICAgICAgICAgIHJlc3VsdFNlY29uZGFyeUl0ZW0uc3R5bGUuZGlzcGxheSA9ICcnOwogICAgICAgICAgICB9CgogICAgICAgICAgICBtZXRob2RTZWxlY3QuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB1cGRhdGVGaWVsZFZpc2liaWxpdHkoKTsKICAgICAgICAgICAgICAgIGNsZWFyRXJyb3JzKCk7CiAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgY2FsY3VsYXRlQnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgY2FsY3VsYXRlKTsKICAgICAgICAgICAgcmVzZXRCdG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCByZXNldEZvcm0pOwoKICAgICAgICAgICAgY2FwYWNpdGFuY2VJbnB1dC5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgaWYgKGVycm9yQ2FwYWNpdGFuY2UudGV4dENvbnRlbnQpIGVycm9yQ2FwYWNpdGFuY2UudGV4dENvbnRlbnQgPSAnJzsKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIHZvbHRhZ2VJbnB1dC5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgaWYgKGVycm9yVm9sdGFnZS50ZXh0Q29udGVudCkgZXJyb3JWb2x0YWdlLnRleHRDb250ZW50ID0gJyc7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICBjaGFyZ2VJbnB1dC5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgaWYgKGVycm9yQ2hhcmdlLnRleHRDb250ZW50KSBlcnJvckNoYXJnZS50ZXh0Q29udGVudCA9ICcnOwogICAgICAgICAgICB9KTsKCiAgICAgICAgICAgIHVwZGF0ZUZpZWxkVmlzaWJpbGl0eSgpOwogICAgICAgICAgICByZXNldEZvcm0oKTsKICAgICAgICB9KSgpOwogICAg